• Страница 1 из 1
  • 1
Модератор форума: Dimitro  
Ограничение на урон
uruk
Скаут
Здравствуйте. Тут ещё сидит кто? Вообщем вопрос таков, как снять ограничение на урон(больше 2 млрд)?
P.S. Ядро тринити 3.3.5
Сообщение # 1 отредактировано uruk - Четверг, 12.10.2017, 17:16
Ranege
Чемпион
https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspx

Посмотреть типы данных, посмотреть диапазон допустимых значений этих типов, найти в коде эти типы, заменить на необходимые, посмотреть код, в случае необходимости где-то что-то корректировать
Сообщение # 2 написано 12.10.2017 в 23:58
p620
Маршал
Uruk, не нужно выяснять, сидит ли здесь кто еще, если Ваш вопрос уже сотню раз обговаривался, и достаточно воспользоваться поиском для нахождения соответствующего ответа. В очередной раз отмечу, что правок на серверной стороне может быть недостаточно, т.к. данные о нанесенном уроне получает, обрабатывает и отображает еще и клиент, исходники которого недоступны. Т.е. патчить, в случае чего, придется еще и его бинарник в дизассемблированном/декомпилированном виде (кому что нравится), либо мириться с возникшими в результате правок сервера разнообразными нежелательными эффектами на клиенте.
Сообщение # 3 отредактировано p620 - Пятница, 13.10.2017, 01:08
uruk
Скаут
Цитата Ranege ()
https://msdn.microsoft.com/ru-ru/library/s3f49ktz.aspxПосмотреть типы данных, посмотреть диапазон допустимых значений этих типов, найти в коде эти типы, заменить на необходимые, посмотреть код, в случае необходимости где-то что-то корректировать
Это я знаю, а в каких файлах править нужно?

Добавлено (13.10.2017, 17:13)
---------------------------------------------
p620, Если я задал вопрос тут значит я не смог найти достаточно информации по этому вопросу. Я знаю, что надо менять с int32 на int64, а вот в каких файлах я не нашёл нечего по форуму. И заметьте я не спрашивал будет ли клиент отображать правильно или нет урон.

Сообщение # 4 написано 13.10.2017 в 17:13
p620
Маршал
Цитата uruk ()
а вот в каких файлах я не нашёл нечего по форуму.

Этой фразой Вы демонстрируете свою абсолютную некомпетентность в вопросе, который пытаетесь решить. Если я Вам назову файлы, каким будет Ваш следующий вопрос? В каких методах?
Вам нужно последовательно выискивать все места, в которых обрабатывается урон (и здоровье, если на то пошло), и модифицировать их. Мест будет много, все они будут частью какого-то контекста, который Вам тоже придется просматривать. А если Вы просто планируете пройтись масс-реплейсером 'int32'->'int64' по названным Вам файлам, то рекомендую сразу обработать им все решение.
Сообщение # 5 написано 13.10.2017 в 21:07
Ranege
Чемпион
В юните происходит обработка дамага в основном, а по поводу бага с клиентом, так можно просто дамаг разбить на несколько пакетов и по очереди слать их в клиент
Сообщение # 6 написано 14.10.2017 в 01:28
uruk
Скаут
Ranege, спасибо буду пробовать тогда)
Сообщение # 7 написано 14.10.2017 в 06:11
p620
Маршал
Цитата Ranege ()
В юните происходит обработка дамага в основном, а по поводу бага с клиентом, так можно просто дамаг разбить на несколько пакетов и по очереди слать их в клиент

Зависит от того, насколько необходимо порог поднять. Там 32 степени двойки разницы так то. Может многовато пакетов выйти.
Сообщение # 8 написано 14.10.2017 в 07:00
Ranege
Чемпион
Не понял о какой разницы речь. А по поводу скорости, у меня 1000 пакетов, чуть больше, грубо говоря за 1000 мс отправлялись, т.е примерно 1 пакет в 1 мс, притом данные у меня были посложнее дамага я думаю.

В дамаге ж по идее 4 байта юзаются, значит 2147М передать можно, 4 пакета по 4 мс, даже меньше я полагаю, это уже 8 милиардов дамага можно передать, правда флудить будет, но например у меня на крейзи, флуд нереальный этих атак, так что разницы особой даже не будет. Ну а если много таких пакетов отправлять, не по 4, а больше и от каждого игрока в секунду(каждую), то на дифе конечно сыграет немного, просто нужно не усердствовать, поднять например до 4 пакетов, не более и хватит, я не думаю что сильно что-то поменяется в плане нагрузки
Сообщение # 9 написано 14.10.2017 в 12:52
p620
Маршал
Цитата Ranege ()
Не понял о какой разницы речь.

Как я полагаю, Вы хотите весь полученный урон, превышающий ::std::numeric_limits<int32>::max(), отправлять несколькими последовательными пакетами так, чтобы сумма отправленного в них урона соответствовала реально нанесенному? При замене int32 на int64 возможный диапазон значений увеличивается в 2 ** 32 раз. Это и будет максимально возможным количеством пакетов, которое необходимо будет передать.
Цитата Ranege ()
просто нужно не усердствовать

О таких вариантах, как я полагаю, речь не идет: как-никак, человеку ~2.2 млрд. не хватило.
Сообщение # 10 написано 14.10.2017 в 15:29
Ranege
Чемпион
Теперь понял) Ну можно преобразовать милиарды в единицы и отправлять вместо милиарда просто 1, 8 милиардов - 8 ед урона, но скорее такое тоже, к сожалению, не получится, потому что клиент думаю считает хп игрока как раз по отправленным данным, получается вариантов для простого человека нет smile

Добавлено (14.10.2017, 16:33)
---------------------------------------------
Но если нужно не на много поднять дамаг, то можно ограничиваться несколькими дополнительными отправками пакетов

Сообщение # 11 написано 14.10.2017 в 16:33
uruk
Скаут
Ranege, можно ваш скайп или вк, то попытался снять ограничение но получилось что то другое))
Сообщение # 12 написано 14.10.2017 в 19:39
Ranege
Чемпион
Сообщение # 13 написано 14.10.2017 в 19:44
uruk
Скаут
Ranege, да нет, не делать просто подсказать в чём накосячил, в скайпе удобнее писать))
Сообщение # 14 написано 14.10.2017 в 20:13
  • Страница 1 из 1
  • 1
Поиск: