|
|
Модератор форума: Dimitro |
Форум TrinityCore [TrinityCore] Help Ограничение на урон |
Ограничение на урон |
https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspx
Посмотреть типы данных, посмотреть диапазон допустимых значений этих типов, найти в коде эти типы, заменить на необходимые, посмотреть код, в случае необходимости где-то что-то корректировать
Сообщение # 2 написано 12.10.2017 в 23:58
|
Uruk, не нужно выяснять, сидит ли здесь кто еще, если Ваш вопрос уже сотню раз обговаривался, и достаточно воспользоваться поиском для нахождения соответствующего ответа. В очередной раз отмечу, что правок на серверной стороне может быть недостаточно, т.к. данные о нанесенном уроне получает, обрабатывает и отображает еще и клиент, исходники которого недоступны. Т.е. патчить, в случае чего, придется еще и его бинарник в дизассемблированном/декомпилированном виде (кому что нравится), либо мириться с возникшими в результате правок сервера разнообразными нежелательными эффектами на клиенте.
|
https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspxПосмотреть типы данных, посмотреть диапазон допустимых значений этих типов, найти в коде эти типы, заменить на необходимые, посмотреть код, в случае необходимости где-то что-то корректировать Добавлено (13.10.2017, 17:13)
Сообщение # 4 написано 13.10.2017 в 17:13
|
Этой фразой Вы демонстрируете свою абсолютную некомпетентность в вопросе, который пытаетесь решить. Если я Вам назову файлы, каким будет Ваш следующий вопрос? В каких методах? Вам нужно последовательно выискивать все места, в которых обрабатывается урон (и здоровье, если на то пошло), и модифицировать их. Мест будет много, все они будут частью какого-то контекста, который Вам тоже придется просматривать. А если Вы просто планируете пройтись масс-реплейсером 'int32'->'int64' по названным Вам файлам, то рекомендую сразу обработать им все решение.
Сообщение # 5 написано 13.10.2017 в 21:07
|
В юните происходит обработка дамага в основном, а по поводу бага с клиентом, так можно просто дамаг разбить на несколько пакетов и по очереди слать их в клиент
Сообщение # 6 написано 14.10.2017 в 01:28
|
Сообщение # 8 написано 14.10.2017 в 07:00
|
Не понял о какой разницы речь. А по поводу скорости, у меня 1000 пакетов, чуть больше, грубо говоря за 1000 мс отправлялись, т.е примерно 1 пакет в 1 мс, притом данные у меня были посложнее дамага я думаю.
В дамаге ж по идее 4 байта юзаются, значит 2147М передать можно, 4 пакета по 4 мс, даже меньше я полагаю, это уже 8 милиардов дамага можно передать, правда флудить будет, но например у меня на крейзи, флуд нереальный этих атак, так что разницы особой даже не будет. Ну а если много таких пакетов отправлять, не по 4, а больше и от каждого игрока в секунду(каждую), то на дифе конечно сыграет немного, просто нужно не усердствовать, поднять например до 4 пакетов, не более и хватит, я не думаю что сильно что-то поменяется в плане нагрузки
Сообщение # 9 написано 14.10.2017 в 12:52
|
Как я полагаю, Вы хотите весь полученный урон, превышающий ::std::numeric_limits<int32>::max(), отправлять несколькими последовательными пакетами так, чтобы сумма отправленного в них урона соответствовала реально нанесенному? При замене int32 на int64 возможный диапазон значений увеличивается в 2 ** 32 раз. Это и будет максимально возможным количеством пакетов, которое необходимо будет передать. О таких вариантах, как я полагаю, речь не идет: как-никак, человеку ~2.2 млрд. не хватило.
Сообщение # 10 написано 14.10.2017 в 15:29
|
Теперь понял) Ну можно преобразовать милиарды в единицы и отправлять вместо милиарда просто 1, 8 милиардов - 8 ед урона, но скорее такое тоже, к сожалению, не получится, потому что клиент думаю считает хп игрока как раз по отправленным данным, получается вариантов для простого человека нет
Добавлено (14.10.2017, 16:33)
Сообщение # 11 написано 14.10.2017 в 16:33
|
У меня нет свободного времени)
Сообщение # 13 написано 14.10.2017 в 19:44
|
| |||
| |||