Jump to content
Sign in to follow this  
nickerder

Убрать ограничения

Recommended Posts

Сборка: Lucera 1.7

Хроники: Interlude.

Как убрать ограничения адены и ресурсов, стандартно счетчик останавливается на 2,147.. как то так)

Edited by nickerder

Share this post


Link to post
Share on other sites

Сборка: Lucera 1.7

Хроники: Interlude.

Как убрать ограничения адены и ресурсов, стандартно счетчик останавливается на 2,147.. как то так)

никак, это в клиенте заложено. Если хочешь больше то сделай свою валюту которая хранится в sql и отображается в html.

Edited by Evolution

Share this post


Link to post
Share on other sites

Мне кажется вся инфа хронится в .dll
это я имею ввиду про макс значение адены и т.д
в ит клиенте максимальное значение стоит 2.147 и т.д

А если быть точнее ковыряйте Engine.dll

Edited by ioioioii
  • Upvote 1

Share this post


Link to post
Share on other sites

Мне кажется вся инфа хронится в .dll

это я имею ввиду про макс значение адены и т.д

в ит клиенте максимальное значение стоит 2.147 и т.д

 

А если быть точнее ковыряйте Engine.dll

Спасибо) Отпишу если докопаюсь)

 

Но на стороне сервера, тоже что-то за это отвечает.

Я пока что докопался до проверки Адены в инвентаре. там проверка на == int.MAX_VALUE

Edited by nickerder

Share this post


Link to post
Share on other sites

Спасибо) Отпишу если докопаюсь)

 

Но на стороне сервера, тоже что-то за это отвечает.

Я пока что докопался до проверки Адены в инвентаре. там проверка на == int.MAX_VALUE

Это вы со стороны клиента копаете сейчас или же со стороны сервера??

Просто скажу одно если поменять со стороны сервера, адена мб и будет, но в игре адена будет писаться что у вас в инвентаре 2.147......

Edited by ioioioii

Share this post


Link to post
Share on other sites

В клиенте ограничение на 2.147 ккк?)))) Не, не верю.

Share this post


Link to post
Share on other sites

Это вы со стороны клиента копаете сейчас или же со стороны сервера??

Просто скажу одно если поменять со стороны сервера, адена мб и будет, но в игре адена будет писаться что у вас в инвентаре 2.147......

Для начала мне нужно сделать это на стороне сервера. И это я копаю на стороне сервера.

Share this post


Link to post
Share on other sites

да нужно искать на стороне клиента и сервера. Я бы начинал с сервера, 2.147.... это ограничения самой переменной integer, попробовать заменить ее на лонг переменную. ну и так же в клиенте что то есть такое думаю. А чем вы engine.dll ковыряете?

Share this post


Link to post
Share on other sites

да нужно искать на стороне клиента и сервера. Я бы начинал с сервера, 2.147.... это ограничения самой переменной integer, попробовать заменить ее на лонг переменную. ну и так же в клиенте что то есть такое думаю. А чем вы engine.dll ковыряете?

Я еще не ковыряю Dll, буду ковырять как разберусь с серверной частью)

 

Мне вот интересно, что будет если отключить просто проверку эту)

Edited by nickerder

Share this post


Link to post
Share on other sites

Не надо клиент мучать, в PcInventory создать параметр long MAX_ADENA, вписать значение в клиент пакетах.

Share this post


Link to post
Share on other sites

В клиенте ограничение на 2.147 ккк?)))) Не, не верю.

вполне

просто все эти значения хранятся в клиенте в 32-битных переменных (со знаком) - это единственное логичное объяснение.

 

и если что, правкой пары байт в дллках тут фиг обойдешся - придется править все места, в которых производятся любые действия с количеством предметов.

Edited by Gaikotsu

Share this post


Link to post
Share on other sites

Не надо клиент мучать, в PcInventory создать параметр long MAX_ADENA, вписать значение в клиент пакетах.

вот мне так же кажется. проблема в том что испльзуется int переменная.

Share this post


Link to post
Share on other sites

вполне

просто все эти значения хранятся в клиенте в 32-битных переменных (со знаком) - это единственное логичное объяснение.

 

и если что, правкой пары байт в дллках тут фиг обойдешся - придется править все места, в которых производятся любые действия с количеством предметов.

Ты меня пугаешь :DD

Share this post


Link to post
Share on other sites

вот мне так же кажется. проблема в том что испльзуется int переменная.

Переменная в проверке, а если убрать эту проверку)))

Share this post


Link to post
Share on other sites

вот мне так же кажется. проблема в том что испльзуется int переменная.

это точно - не поможет.

 

в интерлюде, в самих серверных пакетах для передачи количества используется поле d типа, т.е. int 32bit signed

и взять и поменять на Q (long) не получится - это испортит структуру пакета и клиент его просто не поймет.

 

с каких хроник стал использоваться long я уже не помню - в ХФ уже он точно есть, в фреее вроде тоже был, а вот насчет грации и ниже уже не помню.

 

таким образом, если вобще ни в жисть но надо сделать, то кроме всех мест где производятся действия с количеством еще и придется в клиенте всю работу с пакетами, в которых задействовано количество вещей, переделывать - править их структуру.

 

оно вам надо, такой гемморой на свою задницу? результат просто не стоит тех усилий, какие придется на это затратить.

Edited by Gaikotsu

Share this post


Link to post
Share on other sites

это точно - не поможет.

 

в интерлюде, в самих серверных пакетах для передачи количества используется поле d типа, т.е. int 32bit signed

и взять и поменять на Q (long) не получится - это испортит структуру пакета и клиент его просто не поймет.

 

с каких хроник стал использоваться long я уже не помню - в ХФ уже он точно есть, в фреее вроде тоже был, а вот насчет грации и ниже уже не помню.

 

таким образом, если вобще ни в жисть но надо сделать, то кроме всех мест где производятся действия с количеством еще и придется в клиенте всю работу с пакетами, в которых задействовано количество вещей, переделывать - править их структуру.

 

оно вам надо, такой гемморой на свою задницу? результат просто не стоит тех усилий, какие придется на это затратить.

ну как бы я написал то же) только ты расписал)

Share this post


Link to post
Share on other sites

ну как бы я написал то же) только ты расписал)

 

это точно - не поможет.

 

в интерлюде, в самих серверных пакетах для передачи количества используется поле d типа, т.е. int 32bit signed

и взять и поменять на Q (long) не получится - это испортит структуру пакета и клиент его просто не поймет.

 

с каких хроник стал использоваться long я уже не помню - в ХФ уже он точно есть, в фреее вроде тоже был, а вот насчет грации и ниже уже не помню.

 

таким образом, если вобще ни в жисть но надо сделать, то кроме всех мест где производятся действия с количеством еще и придется в клиенте всю работу с пакетами, в которых задействовано количество вещей, переделывать - править их структуру.

 

оно вам надо, такой гемморой на свою задницу? результат просто не стоит тех усилий, какие придется на это затратить.

Прежде всего это интересно) + опыт, и часто бывает, пока ищешь одно найдешь и другое, случайно)

Share this post


Link to post
Share on other sites

Прежде всего это интересно) + опыт, и часто бывает, пока ищешь одно найдешь и другое, случайно)

это даа) всегда как что то учишь так бывает) искал как сделать одно а по пути нашел много другого не менее полезного)

Share this post


Link to post
Share on other sites

никак, это в клиенте заложено. Если хочешь больше то сделай свою валюту которая хранится в sql и отображается в html.

Ну это я сейчас адну прорываю, но мне не только адена, я за все ресурсы даже. у их всех одинаковое ограничение.

Share this post


Link to post
Share on other sites

Ну это я сейчас адну прорываю, но мне не только адена, я за все ресурсы даже. у их всех одинаковое ограничение.

могу ток поделать удачи тебе =)

  • Upvote 1

Share this post


Link to post
Share on other sites

Не надо клиент мучать, в PcInventory создать параметр long MAX_ADENA, вписать значение в клиент пакетах.

Ты оказался ближе всех, как выяснилось в следствии максимальное int32 = 2147483647.

В базе таблица Item там столб type его значение меняя на long или int64(что куда удобнее вроде бы). то навикат начинает принимать значение и поболее чем мы привыкли. Соответственно нужно поколдовать в ядре :D

Share this post


Link to post
Share on other sites

и чем тебе поможет "колдовство" в ядре, если ты в серверных пакетах не сможешь отослать клиенту long-значение по банальнейшей причине - в интерлюде поле с количеством в пакетах имеет тип int32

и нет, смена его типа на стороне сервера не поможет - в итоге у тебя клиенту придут искаженные данные, т.к. все поля в пакете, что идут после количества, изменят свою позицию.

Edited by Gaikotsu

Share this post


Link to post
Share on other sites

Некропост конечно, но тема интересная. Я думаю со стороны сервера вполне реально сделать long адену на интерлюде. Надо просто перед отправкой пакетов на апдейт адены делать проверку, если адены больше 2,147ккк, то форсом на клиент высылать интовое число 2,147ккк. Лишняя адена не будет отображаться на клиенте, но фактически на сервере она будет. Можно даже допилить костыли типа отображения реального количества в кб или по команде. Ну и в трейде больше 2 лярдов тоже не сбросишь, но в 2 и более заходов - вполне.

Share this post


Link to post
Share on other sites
В 14.03.2020 в 10:06, Rogue сказал:

Некропост конечно, но тема интересная. Я думаю со стороны сервера вполне реально сделать long адену на интерлюде. Надо просто перед отправкой пакетов на апдейт адены делать проверку, если адены больше 2,147ккк, то форсом на клиент высылать интовое число 2,147ккк. Лишняя адена не будет отображаться на клиенте, но фактически на сервере она будет. Можно даже допилить костыли типа отображения реального количества в кб или по команде. Ну и в трейде больше 2 лярдов тоже не сбросишь, но в 2 и более заходов - вполне.

откуда вы такие темы откапываете? :)

вы как будьто видите чем я занимаюсь..... ибо как раз с парт2 на финал адену сделали лонг.)
перевод инт в лонг на сервере - это очень просто, но заморочек довольно много. и лишний повод допустить критическую ошибку.
в интерлюде и т.п. хрониках, гораздо удобнее делать не так как вы написали. т.к. игрок не будет знать сколько у него адены.
просто при превышении порога можно делить на 1000 или даже на миллион и отсылать это значение клиенту. предварительно уведомив игроков разумеется =)
тогда можно делать любые суммы и игрок будет в курсе сколько у него адены.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...