Всем привет дорогие пользователи этого замечательного форума.
Я никак не могу довести до ума скрип для фейма очков репутации через осады Форты
Я лидер клана
Стоит возле Крепости НПС, у него надо регистрироваться на осаду, и через час она начнётся. А когда осада начинаеться, нужно стоять возле крепости чтобы капали очки
пару нюансов
-если я встану возле крепости, до того как она начнёться, то при старте осады меня портанёт в город
-при окончании осады, если я не выйду чуток раньше от крепости- портанёт в город
а мне не надо что бы меня портовало
я вообще хочу вот таким образов написать скрипт:
Begin
Регестрация у НПС
delay(60 минут)
бегу к крепости {там достаточно 1 раз мышкой нажать чтобы добежать}
delay(57 минут)
бегу к НПС
delay(3 мин)
End.
И так до бесконечности
вот как мне можно эти строки реализовать на l2phx.3.5.13
не получаться совсем...
Спасибо.
Последний раз редактировалось Tampler1, 13.09.2009 в 15:02.
const
myName = 'TAMBIK'; // Имя
var
Timer1: TTimer;
Timer2: TTimer;
npcID,npcX,npcY,npcZ:integer;
myXpos,myYpos,myZpos:integer;
xpos, ypos,zpos: integer;
krX, krY, krZ: integer;
function rastoyanie(xpos1, ypos1, xpos2, ypos2:extended):integer;
begin
result:= Round(Sqrt(((xpos1-xpos2)*(xpos1-xpos2))+((ypos1-ypos2)*(ypos1-ypos2))));
end;
function rastoyanieNPC(xpos1, ypos1, xpos2, ypos2:extended):integer;
begin
result:= Round(Sqrt(((xpos1-xpos2)*(xpos1-xpos2))+((ypos1-ypos2)*(ypos1-ypos2))));
end;
procedure SendMsg2(msg:string);
begin
buf:=#$4A;
WriteD(0);
WriteD(10);
WriteS('');
WriteS(msg);
SendToClientEx( myName);
end;
procedure Action;
begin
buf:=#$1F;
WriteD(npcID); // npcID наверно получаем из пакета разговора с нпс
WriteD(myXpos);
WriteD(myYpos);
WriteD(myzpos);
SendToServerEx(myName);
end;
procedure OnTimer1(Sender: TObject);
begin
buf:=#$0F;
WriteD(krX);
WriteD(krY);
WriteD(krZ);
WriteD(myxpos);
WriteD(myypos);
WriteD(myzpos);
WriteD(0);
SendToServerEx(myName);
end;
// бежим к НПС
procedure OnTimer2(Sender: TObject);
begin
buf:=#$0F;
WriteD(npcX);
WriteD(npcY);
WriteD(npcZ);
WriteD(myxpos);
WriteD(myypos);
WriteD(myzpos);
WriteD(0);
SendToServerEx(myName);
end;
procedure RequestSocialAction;
begin
CASE ReadD(2) OF
3:begin // соцдействие ----запоминаем место у НПС
npcX:=MyXpos;// запомним
npcY:=MyYpos;// кординаты
npcZ:=MyZpos;// у НПС
SendMsg2('npcX:='+IntToStr(npcX)+' npcY:='+IntToStr(npcY)+' npcZ:='+IntToStr(npcZ)+'');
pck:='';
exit;
end;
4:begin // соцдействие ----запоминаем место у крепости
krX:=MyXpos;// запомним
krY:=MyYpos;// кординаты
krZ:=MyZpos;// у крепости
SendMsg2('krX:='+IntToStr(krX)+' krY:='+IntToStr(krY)+' krZ:='+IntToStr(krZ)+'');
pck:='';
exit;
end;
5:begin // стоп
pck:='';
exit;
end;
6:begin // старт
pck:='';
exit;
end;
end;
end;
procedure startNPC;
begin
Action;
// пакет регистрации должен быть
timer1.enabled:=true;// бежим к крепости
end;
procedure startKR;
begin
timer2.enabled:=true;// бежим к НПС
end;
procedure stopGAME;
begin
end;
procedure ValidatePosition;
begin
myXpos:=ReadD(2);
myYpos:=ReadD(6);
myZpos:=ReadD(10);
//рядом c NPC
if (rastoyanieNPC(MyXpos, MyYpos,npcX,npcY)<=100) then startNPC;
//рядом c крепостью
if (rastoyanie(MyXpos, MyYpos,krX,krY)<=100) then startKR;
end;
procedure Init;
begin
timer1:=TTimer.Create(nil);
timer1.OnTimer:=@OnTimer1;
timer1.enabled:=false;
timer1.interval:=0;// 60 мин
timer2:=TTimer.Create(nil);
timer2.OnTimer:=@OnTimer2;
timer2.enabled:=false;
timer2.interval:=0;// 57 мин
end;
procedure Free;
begin
timer1.free;
Timer2.free;
end;
begin
if pck = '' then exit;
if FromClient then
CASE pck[1] OF
#$59:ValidatePosition;
#$34:RequestSocialAction;
end;
__________________
Тут не форум гадалок, если ты делаешь все правильно и по пунктам - то все должно работать