PDA

Просмотр полной версии : Скрипт на заточку эвентовых предметов


Kirson
20.10.2010, 02:34
помогите со скриптом

вообщем у нас на сервере эвент по заточке эвентовых пух
я сам начинаю только изучать L2PacketHack, так что надеюсь на вашу помощь
условия эвента:
эвент предмет только точится когда одет, вот и решил написать скрипт
эвент точек не меренно, если не удачная заточка - предмет снимается
я так думаю что если предмет снялся, покупаем новый и точим, если заточилась на +23 то снимаем
надеюсь на вашу помощь
const
zakup='23 30 00 30 00 00 00';// пакет на закупку эвентового предмета
zatocsh='19 4C 9D 2D 10 00 00 00 00';//пакет на заточку предмета
var
i:integer;
Timer01: TTimer;
UseItem: string;

procedure Init;
begin
Timer01:=TTimer.Create(nil);
Timer01.OnTimer:=@OnTimer01;
Timer01.enabled:=true;
Timer01.interval:=2000;
end;

procedure OnTimer01(Sender: TObject);
begin
buf:=HStr(zatocsh); //заточка
SendToServer;
end;
begin
if FromServer and (pck[1]+pck[2]=#$62#$28) then // если предмет снялся(сломался) покупаем новый
begin
buf:=HStr(zakup);
SendToServer;
i:=0;//обнуляем точку
end;
if FromServer and (pck[1]=#$21) and (pck[4]=#$01) then begin
UseItem:='19 '+pck[8]+' '+pck[9]+' '+pck[10]+' '+pck[11]+' 00 00 00 00';
buf:=HStr(UseItem);//это создаем пакет чтобы одеть эвент предмет
SendToServer;
end;
if FromServer and (pck[1]+pck[2]=#$62#$26) then i:=i+1;//если заточилась увеличиваем на +1
if i=23 then begin// если заточилась на +23 снимаем эвент предмет
buf:=HStr(UseItem);
SendToServer;
end;
pck:='';
Timer01.enabled:=not(Timer01.enabled);


end.

J-Fobos
20.10.2010, 14:43
Суть скриптописания вы поняли) Но от того скрипта что вы выложили отталкиваться не будем(ошибок многовато), лучше напишите скрипт с нуля по следующему алгориму:

1) Организуйте в таймере процесс точения: использование заточки > выбор итема для точения > нажатие на кнопку "заточить" > остановка таймера. Также рекомендую сделать изменение интервала таймера внутри самого таймера, чтоб интервал между юзом заточки и выбором итема был поменьше, а пока идет полосочка точения стандартным.

2) Организуйте поиск в инвентаре ObjectID итема для точения и заточек (рекомендую просмотреть скрипты на заточку NLObp, там перебор инвентаря просто идеален). Уровень заточки также лучше узнавать из инвентаря. После перебора инвентаря включать таймер.

3) Также добавьте снимание и одевание пушки, вы сделали правильно в своем скрипте, если приходит пакет о снятии пухи одевать ее.

Kirson
21.10.2010, 15:14
const
zakup='23 30 00 30 00 00 00';
zatocsh='19 4C 9D 2D 10 00 00 00 00';
var
i,m:integer;
Timer01: TTimer;
UseItem: string;

procedure Init;
begin
Timer01:=TTimer.Create(nil); //выделяем памать и т.п.
Timer01.OnTimer:=@OnTimer01; //привязываем процедуру к событию
Timer01.enabled:=true; //начальное положение включен(true)/выключен(false)
Timer01.interval:=800; //интервал(в милисекундах) как часто таймер срабатывает
end;

procedure OnTimer01(Sender: TObject);
begin
//buf:=HStr(zakup); //закупка
buf:=HStr(zatocsh); //заточка
SendToServer;
end;
begin
if FromServer and (pck[1]+pck[2]=#$62#$28) then
begin
buf:=HStr(zakup);
SendToServer;
i:=0;
end;

if FromServer and (pck[1]+pck[2]+pck[4]=#$21#$01#$01) then begin
UseItem:=pck[8]+pck[9]+pck[10]+pck[11];
buf:=#$19+UseItem+#$00#$00#$00#$00;
SendToServer;
end;

if FromServer and (pck[1]+pck[2]=#$62#$26) then i:=i+1;
if i=23 then begin
buf:=HStr(UseItem);
SendToServer;
end;

end.

Все работает ток теперь пуху не точит (таимер не работает)
разобраться не могу

Добавлено через 19 часов 5 минут
ну кто мне поможет с таимером разобраться?:)

mira
21.10.2010, 15:51
у газона проси скрипт он точит их пакетхаком )))
там кстати таймаут повторной точки не проверяетса походу. Боты точат раз в секунду это маловато для точки руками

Kirson
21.10.2010, 17:25
да там хоть задержку убирай совсем:)
я уже так особо накидал, работает паралельно с пилотом)))
и кстати, у газона просил, он грит я ручками точу:D
ну я ему конечно поверил:rofl:

supernewbie
21.10.2010, 21:06
вообще-то там 750 мс стоит задержка юза точки)

PS я такого не говорил

PSS советую не парится, эвент кончается 24 числа