L2PacketHackФорум программы L2PacketHack, всё что с ней связано находится тут.
Правила раздела!
Категорически запрещено:
* Просить пакеты/скрипты на шмот/адену/другие вещи;
* Просить (помочь) взломать/сломать сервак/аккаунт или раздеть/наказать кого-то на любом серваке;
* Просить научить работать с программой, если не понимаете элементарных вещей в отношениях клиент-сервер (так как, если вы их понимаете, то вопросов по основным возможностям программы быть недолжно);
* Все посты не удовлетворяющие этим запретам, а так же не относящиеся к теме будут удаляться при первой возможности.
* Запрещается создавать темы с просьбой выполнить какую-то работу за автора темы.
* Форум является средством общения и общего поиска решения. Вашу работу за Вас никто выполнять не будет.
* Данные запреты неподлежат обсуждению.
//QaK:отдельная тема по подкючению пакетхака к серверу >>>>>>>>тут
любые вопросы по данной тематике в этом топе будут удаляться без предупреждения.
Код:
const
mp='8A 1B 15 01 10';
hp='8A 1A 15 01 10';
begin
if fromclient and (pck[1]=#$38#$F5#$00#$EF#$00#$00#$00#$03#$00#$00#$00) then
begin
buf:=hstr(hp);
SendToServer;
end;
if fromclient and (pck[2]=#$33#$F5#$00#$EF#$00#$40#$00#$03#$00#$00#$00) then
begin
buf:=hstr(mp);
SendToServer;
end;
end.
где я ошибся?
Последний раз редактировалось QaK, 30.08.2010 в 18:56.
Следуюший вопрос....
как мне сделать скрипт в котором будут отправлятся пакеты на сервер при условии что
1 ЦП менше чем...
2 МП менше чем...
3 ХП менше чем...
как условия написать я знаю
а вот как из пакета выделить количество ХП МП и ЦП я не знаю....
при отправки пакетов на учение скилов или покупку оружия сразу дисконект идет. почему? серв шок-ворлд
Просто надо внимательно прочитать правила форума и для чего предназначена данная программа и все станет ясно, а если не станет, то не надо пользоваться программой, забанят и здесь и на сервере. :twisted:
Следуюший вопрос....
как мне сделать скрипт в котором будут отправлятся пакеты на сервер при условии что
1 ЦП менше чем...
2 МП менше чем...
3 ХП менше чем...
как условия написать я знаю
а вот как из пакета выделить количество ХП МП и ЦП я не знаю....
Как выставить задержку побольше? а то я ставил и 9999 и 9999999, помоему эффект одинаковый, может она вобще не включается?
Как сделать так, чтобы victory повторился 10 раз(с задержкой между повторениями), перед тем как перейти к выполнению advance?
__________________ Продаю адену на l2.ru Cadmus BlackBird Athebaldt
ICQ: 329-867-244
Следуюший вопрос....
как мне сделать скрипт в котором будут отправлятся пакеты на сервер при условии что
1 ЦП менше чем...
2 МП менше чем...
3 ХП менше чем...
как условия написать я знаю
а вот как из пакета выделить количество ХП МП и ЦП я не знаю....
Если еще не разобрался, то примерно вот так (требуются незначительные доделки):
Воспользуемся мониторингом статов чара (хп, мп, цп и координаты) by Shura1oplot модифицировав его с помощью скрипта на автохилки.
Код:
Const
Name='NLObP'; //имя чара
heal=1218; //Greater Battle Heal
potion=1060; //Healing potion
var
CharObjID,MyCorX,MyCorY,MyCorZ: integer;
MaxHP,CurHP,MaxMP,CurMP,MaxCP,CurCP: integer;
CharName: string;
TimerHP, TimerCP, TimerMP: TTimer;
procedure Init; //Вызывается при включении скрипта
begin
timerHP:=TTimer.Create(nil);
timerHP.OnTimer:=@OnTimerHP;
timerHP.enabled:=False;
timerHP.interval:=6000;
timerCP:=TTimer.Create(nil);
timerCP.OnTimer:=@OnTimerCP;
timerCP.enabled:=False;
timerCP.interval:=6000;
timerMP:=TTimer.Create(nil);
timerMP.OnTimer:=@OnTimerMP;
timerMP.enabled:=False;
timerMP.interval:=6000;
end;
procedure OnTimerHP(Sender: TObject);
begin
//выбрать что нужно
//MagicSkillUse(heal);
//UseItem(potion);
end;
//по аналогии напиши для CP, MP
procedure OnTimerCP(Sender: TObject);
begin
end;
procedure OnTimerMP(Sender: TObject);
begin
end;
//используем магию
procedure MagicSkillUse(MagicID:integer);
begin
buf:=#$2F;
WriteD(MagicID);
WriteD(00);
WriteC(00);
SendToServerEx(Name);
end;
//используем предметы
procedure UseItem(ObjID:integer);
begin
buf:=#$14;
WriteD(ObjID);
WriteD(00);
SendToServerEx(Name);
end;
procedure InitStats;
var
i: integer;
begin
CharObjID:=ReadD(18);
MyCorX:=ReadD(2);
MyCorY:=ReadD(6);
MyCorZ:=ReadD(10);
i:=22;
CharName:=ReadS(i);
i:=i+44;
MaxHP:=ReadD(i);
CurHP:=ReadD(i);
MaxMP:=ReadD(i);
CurMP:=ReadD(i);
i:=i+363;
MaxCP:=ReadD(i);
CurCP:=ReadD(i);
//добавляем проверки по вкусу
if (CurHP<=MaxHP-500) then TimerHP.enabled:=true else TimerHP.enabled:=false;
if (CurCP<=MaxCP-500) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurMP<=MaxMP-500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;
procedure StatsUpdate;
var
i: integer;
begin
for i:=0 to ReadD(6)-1 do
case pck[i*8+10] of
#$09: CurHP:=ReadD(i*8+14);
#$0A: MaxHP:=ReadD(i*8+14);
#$0B: CurMP:=ReadD(i*8+14);
#$0C: MaxMP:=ReadD(i*8+14);
#$21: CurCP:=ReadD(i*8+14);
#$22: MaxCP:=ReadD(i*8+14);
end;
//добавляем проверки по вкусу
if (CurHP<=MaxHP-500) then TimerHP.enabled:=true else TimerHP.enabled:=false;
if (CurCP<=MaxCP-500) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurMP<=MaxMP-500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;
procedure CorsUpdate;
begin
MyCorX:=ReadD(2);
MyCorY:=ReadD(6);
MyCorZ:=ReadD(10);
end;
BEGIN
//--- STATS BEGIN ---//
if FromServer and (ConnectName=Name) and (pck[1]=#$04) then InitStats;
if FromServer and (ConnectName=Name) and (pck[1]=#$0E) and (CharObjID=ReadD(2)) then StatsUpdate;
if FromClient and (ConnectName=Name) and (pck[1]=#$48) then CorsUpdate;
//--- STATS END ---//
END.
var
tick: Integer;
procedure Init;
begin
end;
function Pause(Timewait: Integer):Boolean;
// сквозная проверка без остановки скрипта (c)dmitry501
var
t : integer;
begin
result := false;
t := Round(Time*86400);
if t > (tick + Timewait) then
begin
tick := t;
result := true;
end;
end;
const
greeting=('1b 04 00 00 00');
victory=('1b 03 00 00 00');
advance=('1b 04 00 00 00');
yes=('1b 06 00 00 00');
begin
buf:=HStr(greeting);
SendToServer;
end; //ТУТ ВЫДАЁТ ОШИБКУ<<<<<<<<<<<<<<<
begin
if pause(2) then;//+ 2 секунды ожидания
end;
begin
buf:=HStr(victory);
SendToServer;
end;
begin
if pause(2) then; //+ 2 секунды ожидания
end;
begin
buf:=HStr(advance);
SendToServer;
end;
begin
if pause(2) then; //+ 2 секунды ожидания
end;
begin
buf:=HStr(yes);
SendToServer;
end;
begin
if pause(2) then; //+ 2 секунды ожидания
end.
добавил задержку, но скрипт выдаёт ошибку на END(в скрипте указанно место), подскажите что неправильно или чего нехватает.
__________________ Продаю адену на l2.ru Cadmus BlackBird Athebaldt
ICQ: 329-867-244
Даже не знаю как тебе помочь. Ты в программировании понимаешь? Зачем у тебя куча ненужных begin end;?
Почитай книги какие нибудь.
Вот формат скрипта для пакетхака:
Код:
//описываешь константы
const
...
//описываешь переменные
var
...
//описываешь вспомогательные функции (возвращает результат)
function Pause(Timewait: Integer):Boolean;
begin
...
result:=true;
end;
//описываешь вспомогательные процедуры (не возвращает результат)
procedere Pause2;
begin
...
end;
procedure Init; //Вызывается при включении скрипта
begin
//заполняешь если надо
...
end;
procedure Free; //Вызывается при выключении скрипта
begin
//заполняешь если надо
...
end;
//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
//заполняешь если надо
...
end.
можете мне показать шаблон скрипта, для отправки пакетов поочереди с задержкой? Тоесть эффект тотже самый что и в окне отправки пакетов, только тут должна быть задержка между пакетами.
__________________ Продаю адену на l2.ru Cadmus BlackBird Athebaldt
ICQ: 329-867-244
Name='DeVolf'; //??? ????
mp='8A CC F3 00 10';
hp='8A AA B7 00 10';
cp='8A A8 B7 00 10';
var
CharObjID,MyCorX,MyCorY,MyCorZ: integer;
MaxHP,CurHP,MaxMP,CurMP,MaxCP,CurCP: integer;
CharName: string;
TimerHP, TimerCP, TimerMP: TTimer;
procedure Init; //?????????? ??? ????????? ???????
begin
timerHP:=TTimer.Create(nil);
timerHP.OnTimer:=@OnTimerHP;
timerHP.enabled:=False;
timerHP.interval:=100;
timerCP:=TTimer.Create(nil);
timerCP.OnTimer:=@OnTimerCP;
timerCP.enabled:=False;
timerCP.interval:=100;
timerMP:=TTimer.Create(nil);
timerMP.OnTimer:=@OnTimerMP;
timerMP.enabled:=False;
timerMP.interval:=100;
end;
procedure OnTimerHP(Sender: TObject);
begin
buf:=hstr(hp);
SendToServerEx(Name);
end;
procedure OnTimerCP(Sender: TObject);
begin
buf:=hstr(cp);
SendToServerEx(Name);
end;
procedure OnTimerMP(Sender: TObject);
begin
buf:=hstr(mp);
SendToServerEx(Name);
end;
procedure InitStats;
var
i: integer;
begin
CharObjID:=ReadD(18);
MyCorX:=ReadD(2);
MyCorY:=ReadD(6);
MyCorZ:=ReadD(10);
i:=22;
CharName:=ReadS(i);
i:=i+44;
MaxHP:=ReadD(i);
CurHP:=ReadD(i);
MaxMP:=ReadD(i);
CurMP:=ReadD(i);
i:=i+363;
MaxCP:=ReadD(i);
CurCP:=ReadD(i);
//????????? ???????? ?? ?????
if (CurHP<=MaxHP-500) then TimerHP.enabled:=true else TimerHP.enabled:=false;
if (CurCP<=MaxCP-500) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurMP<=MaxMP-500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;
procedure StatsUpdate;
var
i: integer;
begin
for i:=0 to ReadD(6)-1 do
case pck[i*8+10] of
#$09: CurHP:=ReadD(i*8+14);
#$0A: MaxHP:=ReadD(i*8+14);
#$0B: CurMP:=ReadD(i*8+14);
#$0C: MaxMP:=ReadD(i*8+14);
#$21: CurCP:=ReadD(i*8+14);
#$22: MaxCP:=ReadD(i*8+14);
end;
//????????? ???????? ?? ?????
if (CurHP<=MaxHP-500) then TimerHP.enabled:=true else TimerHP.enabled:=false;
if (CurCP<=MaxCP-500) then TimerCP.enabled:=true else TimerCP.enabled:=false;
if (CurMP<=MaxMP-500) then TimerMP.enabled:=true else TimerMP.enabled:=false;
end;
procedure CorsUpdate;
begin
MyCorX:=ReadD(2);
MyCorY:=ReadD(6);
MyCorZ:=ReadD(10);
end;
BEGIN
//--- STATS BEGIN ---//
if FromServer and (ConnectName=Name) and (pck[1]=#$04) then InitStats;
if FromServer and (ConnectName=Name) and (pck[1]=#$0E) and (CharObjID=ReadD(2)) then StatsUpdate;
if FromClient and (ConnectName=Name) and (pck[1]=#$48) then CorsUpdate;
//--- STATS END ---//
END.