L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
Каким Действием можно заставить покупать у A нпц пухи,а у B точки ?! ...
Для этого самостоятельно ручками закупи у НПЦ пуху и точки, сохрани лог пакетов, а затем разберись в нем, какие пакеты были задействованы при этих операциях, отсей не нужные, заскриптуй полученное.
преамбула:
играю значит магом, и когда долбаешь моба или игрока - в попыхах при уже наведенном таргете можешь еще раз тыкнуть на него. то есть получается что чар начинает бежать к этому игроку или мобу, чтобы удариь его аркой. особенно если вплотную все происходит. этот удар аркой крадет пол секунды, из-за которых ты не успеешь запульнуть хуриканом или вортексом.
задача:
заблокировать повторное наведение таргета при уже наведенном.
код:
PHP код:
const
Name='SeregaZ';
var
idaction:string;
idtarget:string;
procedure Init; //Вызывается при включении скрипта
begin
useforconnectname := Name;
idaction := '';
idtarget := '';
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
if FromServer and (ConnectName=Name) and (pck[1]=#$A6) then begin //определение таргета
idtarget := pck[2]+pck[3]+pck[4]+pck[5];
end;
if FromClient and (ConnectName=Name) and (pck[1]=#$04) and (pck[2]+pck[3]+pck[4]+pck[5] = idtarget) then begin //блок дублирования наведения таргета
pck:='';
end;
if FromServer and (ConnectName=Name) and (pck[1]=#$2A) then begin //обнуление переменной таргета
idtarget:='';
end;
end.
проблема с кодом:
у тебя нет таргета - наводишь на кого либо, таргет замечательно береться. таргет наведен, тыркаешь еще раз таргет, все замечательно, второй таргет блоканулся и чар-маг не бежит к таргету, чтобы долбануть его аркой по файтерски. НО вместе с этим зависает вообще все чар перестает менять таргеты. то есть при живом таргете нельзя выбрать другой таргет. и чар не двигается. "разбудить" его можно сбросив таргет ескейпом, или навести таргет на себя. вот как бы решить эту самую проблему с зависанием?
так там же добавлено условие если в акшене указан ID тотже самый, что уже имеется в таргете, то блокировать. соответственно акшены со всеми прочими ID должен пропускать. а тут выходит что он как бы не проверяет четвертое условие и сразу все блокирует: (pck[2]+pck[3]+pck[4]+pck[5] = idtarget)
с шифтом думаю опять будет потеря полсекунды. по идее он должен будет послать пакет и вернуть акшионфейл.
По примеру NLObP у меня вроде получилось, но т.к., это быдлокод, вобщем попробуй
delphi Код:
const
name = '~VIP~Dunyaxa' ; //name var
ObjectIDtarget:integer;
procedure Action;
beginif(ReadD(2)=ObjectIDtarget)then pck[18]:=#$01;
ObjectIDtarget:=ReadD(2);
end;
procedure Attack;
beginif(ReadD(2)=ObjectIDtarget)then pck:='';
end;
beginif(connectname=name)and(fromclient)thencase pck[1] of
#$04: Action;
#$0A: Attack;
end;
end.
Добавлено через 10 минут
Короче, 2 екшена вызывают атаку, но если блочить екшены, брать он их больше не будет) т.е. походу, все таки надо как то убивать екшен если цель на таргете)
__________________
Последний раз редактировалось dyh9l, 12.04.2011 в 10:36.
Причина: Добавлено сообщение
i got a problem i cant make my script reads the SystemMessage packet and then send the result to party chat(its for skill reuse time )
2304=До повторного использования умения $s1 осталось $s2 мин $s3 сек.
62=SystemMessage:d(MsgID:Get.MsgID)d(typesCount:Lo op.01.0002)d(0=Str,1=Int,2=NpcID,3=ItmID,4=SklID,6 =Amnt)s(data)
delphi Код:
beginif FromServer thenbegincase pck[1] of
#$62 : if ReadD(2)=2304thenbegin
buf:=#$49;
WriteS(time left on skill to be ready);
WriteD(3);
SendToServer;
__________________
I Dont Understand Russian so well
говорит по Български