Некорректно работает начисление опыта питомцу. Если аватар не набивает полную 1000 опыта, то его опыт не идёт в зачёт опыту питомца за бой.
В помощи ничего не написано по поводу округления вниз доли опыта хозяина.
Прошу исправить, либо, если всё работает верно, отредактировать описание.
https://chaosage.ru/log. php?id=17653362
Пет должен был получить 5 опыта, получил 4.
В математике, на сколько я помню, до 0,5 (500 опыта) округление всегда вниз, после (от 0,51/501 опыта) - округление вверх, вряд ли это хоть сколько нибудь ошибка.
Все правильно по опыту там,не пудри мозги людям.Читай описание внимательней
Окей, хорошо. Читаем описание.
Опыт питомца = Нанесенный питомцем урон / 1000 + Опыт полученный хозяином / 1000,
но не более 5 * уровень питомца.
Про округление до целых, десятых и т.д. ничего не написано, считаем как есть.
4470 урона, нанесенного питомцем, делим на 1000, получается 4,47.
Идём дальше. Персонаж получил 292 опыта. Делим на 1000, выходим 0,292.
Складываем с опытом от урона пета, выходит 4,762.
А теперь округлите. Что получается?
...Но даже если 4,47 и 0,292 округлить до десятых ВНИЗ и сложить (что вряд ли вероятно), всё равно получится 4,6. То есть 5 опыта пету.
тут смотря где стоит функция округления, если до сложения двух частей опыта, то так вот и получается, и никакого бага тут нету, и стоило ради единицы опыта тему на форуме создавать? серьёзно?
тут смотря где стоит функция округления, если до сложения двух частей опыта, то так вот и получается, и никакого бага тут нету, и стоило ради единицы опыта тему на форуме создавать? серьёзно?
Тут единица, там единица, а если взять в масштабе игры, получается и вовсе прилично так.
Надо либо исправить ошибку, либо подправить описание. Не думаю, что для Ревада это такая большая проблема.)
Опыт питомца на 1 меньше? Что? Первая реакция - закрыть эту тему.
Тем не менее. Формулы выглядят так:
$experience = round($petDamage / 1000);
$experience += round($masterExp / 1000);
и, согласно им, всё рассчитывается корректно.
И правило математического округления гласит, что десятые разряды от 0.5 (включительно) округляются к большему по модулю целому, т.е. 4.5 округляется до 5, так собственно и работает стандартная функция округления во всех языках программирования.