Предыстория:
Недавно На NewAion-е поставили новую сборку. После чего появилась проблема, что с оригинальным скил.паком перестали работать часть скилов. Ответ админа был = Ставьте мол оригинальный скил.пак и будет у вас всё работать. А если не работает - то мол вы пользуетесь читерским скил.паком. Это заставило начать разбираться, почему же с родным скил.паком не работают некоторые скилы.
Нашёл очень интересную закономерность. Пакеты скилов и бафом немного отличаются между собой по структуре.
Но при этом есть часть бафов, которые имеют структуру пакета скила.
Самое интересное - что клиент всегда отправляет скилы, но вот сервер уже решает выполнить их или нет в зависимости от структуры пакета.
Таким образом необходимо решить задачу по замене структуры пакета скила на такую, чтобы сервер стал воспринимать его как валидный пакет.
Можно конечно брать и тупо пакет каждого неработающего скила заменять на такой-же только валидный, но это не совсем гибко и очень громоздко. Тем более что на разных учётках эти пакеты могут отличаться. И тогда каждому пользователю придётся самому выбирать эти пакеты и подбирать под себя. А нужно что-то более-менее гибкое для всех.
В этом ещё одна проблема. Что при одном и том же оригинальном скил.паке, пакеты от разных учёток отличаются немного в структуре. Одна учётка посылает валидный пакет, другая нет. И в чём причина - с этим я разобраться не смог.
Поэтому решено было просто обходить эту защиту, и переделывать пакеты не работающих скилов в такие, чтобы сервер принимал их за рабочие (валидные).
Что из этого вышло:
Получился такой небольшой скрипт:
Код:
//############################
//Script for Skill.PAK
//Script Created by miskalin
//version #1.0
//All rights reserved
//############################
var
skills:boolean;
begin
skills:=true;
if (FromClient) and (ReadC(1) = $D0) then
begin
buf:=pck;
if (ReadC(14) = $00) then skills:=false;
if (skills) then WriteC(3, 15);
pck:='';
SendToServer;
end;
end.
Он позволил обойти защиту на сервере и заставить оригинальный скил.пак выполнять скилы, которые сервер почему-то не хотел выполнять.
Но тут я задумался. Раз обход работает для оригинального скил.пака. То с таким же успехом будут выполняться скилы и у правленного скил.пака.
У него заработали и уменьшение анимации и полностью скил.пак с выключенной анимацией.
Сам я не тестил, поэтому просьба всех кто играет с подобной защитой от скил.пака = потестить на своих исправленных скил.паках и отписаться что работает, а что нет.
Возможно на разные учётки и по разному сделаные скил.паки нужен будет индивидуальный подход. Тогда пишем в приват = расскажу что переделать надо будет...
Как этим пользоваться:
Данный скрипт обходит структурную проверку пакета скила на сервере, подменяя один пакет на изменённый.
Запускать скрипт нужно ставя галочку как на картинке внизу, иначе не будет работать.
[Ссылки могут видеть только зарегистрированные пользователи. ]
После запуска скрипта, должны заработать все скилы в любом скил.паке. Будь он оригинальный или Правленный под уменьшение анимации.
---
P.S. Вопросы и предложения по улучшению скрипта или его доработки, лучше в приват, дабы тут не зафлудить всё
________________ Мне хорошо известно то, что всем известно давно – тот кому зло причинили, злом ответит на зло.
Последний раз редактировалось x-miskalin-x; 27.07.2012 в 10:36.
"Можно конечно брать и тупо пакет каждого неработающего скила заменять на такой-же только валидный, но это не совсем гибко и очень громоздко. Тем более что на разных учётках эти пакеты могут отличаться. И тогда каждому пользователю придётся самому выбирать эти пакеты и подбирать под себя. А нужно что-то более-менее гибкое для всех"
я именно так и делал, до твоей темы ,если не сложно опиши в пм как передаль под 3.0 и что происходит в этой части скрипта begin
buf:=pck;
if (ReadC(14) = $00) then skills:=false;
if (skills) then WriteC(3, 15);
pck:='';
SendToServer;
end;
ладно тут все понял, еще фишка в том что все равно быстро клацать скилы не получится на сервере все равно идет проверка и говорит что пока нельзя использовать умение ,так было и при замене каждого скила отдельно
Последний раз редактировалось Noobpro; 18.07.2012 в 22:34.
"Можно конечно брать и тупо пакет каждого неработающего скила заменять на такой-же только валидный, но это не совсем гибко и очень громоздко. Тем более что на разных учётках эти пакеты могут отличаться. И тогда каждому пользователю придётся самому выбирать эти пакеты и подбирать под себя. А нужно что-то более-менее гибкое для всех"
я именно так и делал, до твоей темы ,если не сложно опиши в пм как передаль под 3.0 и что происходит в этой части скрипта begin
buf:=pck;
if (ReadC(14) = $00) then skills:=false;
if (skills) then WriteC(3, 15);
pck:='';
SendToServer;
end;
ладно тут все понял, еще фишка в том что все равно быстро клацать скилы не получится на сервере все равно идет проверка и говорит что пока нельзя использовать умение ,так было и при замене каждого скила отдельно
А у меня просто нет 3.0 чтобы даже посмотреть в чём там пакеты отличаются.
Если не жалко, кинь в приват как ты каждый скил подменял. (Любопытно глянуть алгоритм)
Поидее не должно быть такой большой задержки. Максимум мне кажется один период пинга задержка будет, не более.
Если конечно ты таймауты внутри скрипта не наставил.
[Ссылки могут видеть только зарегистрированные пользователи. ]
И вот полезная инфа по скриптам, может пригодится.
Там расписаны многие команды...
________________ Мне хорошо известно то, что всем известно давно – тот кому зло причинили, злом ответит на зло.
Последний раз редактировалось x-miskalin-x; 19.07.2012 в 10:39.
хмм не знаю в чем дело но после установки и запуска скрипта скил у хила "молитва концентрации" как не работал так и не работает.. проверял на х75 няхой
хмм не знаю в чем дело но после установки и запуска скрипта скил у хила "молитва концентрации" как не работал так и не работает.. проверял на х75 няхой
Давай в ПМ попробуем разобраться.
Возможно этот скил не активен вообще на сервере...
________________ Мне хорошо известно то, что всем известно давно – тот кому зло причинили, злом ответит на зло.
Последний раз редактировалось x-miskalin-x; 19.07.2012 в 20:55.