Просмотр полной версии : Скрипт по обнаружению хайда L2
В общем, не знаю, как это назвать, но суть вот в чем. Никогда на деле не видел, но знаю, что существуют радары, при помощи которых можно видеть ножа в хайде, но т. к. я их никогда не юзал, и искать не собираюсь, решил для начала проверить, а действительно ли это возможно. Загрузил 2 окна, ножом ушел в хайд, и обнаружил, что судя по пакетам, клиенту передаются все данные о персонаже в хайде: позиция, действия и т. п. Соответственно можно написать скрипт, который будет просто немного изменять пакеты, посылаемые клиенту, чтобы он отображал ножа как будто он не в хайде. Но так как я в этом деле полный нуб, и скрипты писать не умею вовсе, хочу обратиться за помощью: мб уже где-то есть готовый скрипт? Гугл не помог. Ну или подкиньте какие-нибудь идеи.
supernewbie
14.06.2012, 18:50
atlas28, очевидно же - если персонаж юзает хайд, а потом для него приходит DeleteObject - убиваешь DeleteObject
Если я сделаю скрипт, блокирующий DeleteObject, то получается объекты никакие вообще исчезать не будут) А надо как-то сделать так, чтобы блокировался этот пакет только после юза хайда... И желательно, чтобы персонаж после этого выглядел как-нибудь по-особому, ну например как под шд.
alexteam
14.06.2012, 19:32
supernewbie, разве deleteobject ?
случаем не aeStealth из AbnormalEffects ?
supernewbie, разве deleteobject ?
случаем не aeStealth из AbnormalEffects ?
Ну на птс сборке HF после юза хайда (от лица другого персонажа) я вижу 3 пакета: сначала идет пакет о том, какой скил юзается, потом о том, какой скилл заюзался, а потом уже идет DeleteObject, где указывается ID удаляемого объекта.
supernewbie, разве deleteobject ?
случаем не aeStealth из AbnormalEffects ?
и это тоже. персонаж становитса полупрозрачным
затем делете обжект
Добавлено через 42 секунды
а вообще не хотелось бы светить эту тему)
Ну в общем простенький скрипт, который не пропускает пакет DeleteObject то я написал, и все работает, как надо, но как сделать так, чтобы он не пропускал только тот DeleteObject, который идет после хайда? Ведь насколько я понял данный пакет не только для этого используется.
Грубо говоря хочу написать, но не знаю как, т. к. никогда не писал скрипты для l2phx. Смысл такой: если от сервера приходит пакет с типом 54 (MagicSkillLaunched) и SkillID там 922 (SkillID: Unknown Skill ID:922(039A)), то не пропускать следующий после этого пакет DeleteObject (тип 08), но только 1 раз.
Не пропускание DeleteObject:
begin
if FromServer and (pck[1]=#$08) then pck:=''
end.
Далее попытался заставить работать этот скрипт только после получения пакета типа 54, но ни вариант:
begin
if FromServer and (pck[1]=#$54) and (pck[6]=#$9A) and (pck[7]=#$03) and (pck[8]=#$00) and (pck[9]=#$00) then
begin
if FromServer and (pck[1]=#$08) then pck:=''
end;
end.
ни:
begin
if FromServer and (pck[1]=#$54) then
begin
if FromServer and (pck[1]=#$08) then pck:=''
end;
end.
работать не хотят. Что я не так пишу?))
Специально для проверки сделал:
begin
if FromServer and (pck[1]=#$54) and (pck[6]=#$9A) and (pck[7]=#$03) and (pck[8]=#$00) and (pck[9]=#$00) then
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS('Hello!!!');
SendToClient;
end;
end.
пашет, как надо, но если вместо "написать Hello!!!" ставлю условие, то нифига не пашет... В чем дело?
supernewbie
15.06.2012, 06:19
atlas28, учи механику пх епта
вкратце:
begin
if FromServer and (pck[1]=#$54) and (pck[6]=#$9A) and (pck[7]=#$03) and (pck[8]=#$00) and (pck[9]=#$00) then
begin
if FromServer and (pck[1]=#$08) then pck:=''
end;
end.
при такой проверке ты проверяешь один и тот же pck[1] сначала на #$54 а потом на #$08 - ну и ты сам понимаешь что надо делать в этой ситуации.
vBulletin® v3.6.11, Copyright ©2000-2024, Jelsoft Enterprises Ltd. Перевод: zCarot