Тема: TrapDetect
Показать сообщение отдельно
Старый 03.09.2010, 00:43   #1
Djo
Гость
Аватар для Djo
Сообщений: n/a
Благодарностей:
0 всего

TrapDetect


Так как у меня нету 150 сообщений, написать свой детектор.



Играю на Abyss - Reborn раса кора.
Для другой расы не проверял, но думаю работает.
Мина подсвечивается стрелочкой и на радаре.
Если вы уведите под зеленой стрелку мину, значит мина другой расы
Если под стрелкой нету мины значит вашей расы.

Код:
// TrapDetect 1.0 - показывает ловушки
// Включить              /trap on
// Отключить             /trap off

// Если вы уведите под зеленой стрелку мину, значит мина другой расы
// Если под стрелкой нету мины значит вашей расы.

var
 PID,CharID,ID,trapSID,trapID,startl,stopl,namel,le,i : integer;
 start,stop,name,trapCursor : string;
 sY,sZ,sX : word;
 trapCur : char;
 flag : boolean;

Procedure MsgInfo(msg : string);
begin
 gSys.EnSendC(FormatPck('%hcdacha',[$0A02,02,0,'[!]'+FStr(16),Length(msg) + 2,$203A,msg+#0]));
 gsys.sleep(15);
end;

procedure OnCreate;
begin
     le:=23;
     start:='on';
     startl:=length(start);
     stop:='off';
     stopl:=length(stop);
     name:='trap';
     namel:=length(name);
     flag:=false;
end;

BEGIN

 if length(_gBuff) < 4 then exit;
 PID := GInt(_gBuff,3,2);

 if _gFromServ then
 begin

  case PID of
    $0F01: CharID:=GInt(_gBuff,7,4);
    $660D: begin
            MsgInfo('Trap Detect 1.0');
            MsgInfo('(c) DjoSmer, 2010');
           end;
    $A804: begin
            if(flag) then
            begin
              trapSID:=GInt(_gBuff,5,4);
              trapID:=GInt(_gBuff,9,4);
              sX:=GInt(_gBuff,13,2);
              sY:=GInt(_gBuff,15,2);
              sZ:=GInt(_gBuff,17,2);
              trapCursor:=copy(_gBuff,23,4);
              trapCur:=#01;

              gSys.SendC(FormatPck('%hddhhhdc',[$D503,trapSID,trapID,sX,sY,sZ,CharID,trapCur]));
              if(trapCursor=HStr('00000101')) then
              begin
               gSys.SendC(FormatPck('%hd',[$E711,trapID]));
              end;

              gBlockPacket;
            end;
           end;
  end;
 end;

 if not (_gFromServ) then
 begin
   case PID of
    $0302: begin
            if strcmp(copy(_gBuff,5,namel),name) then
            begin
              if strcmp(copy(_gBuff,le,startl),start) then
              begin
                flag:=true;
                MsgInfo('Trap: ON');
              end;
              if strcmp(copy(_gBuff,le,stopl),stop) then
              begin
                flag:=false;
                MsgInfo('Trap: OFF');
              end;
              gBlockPacket;
            end;
           end;
   end;
 end;


END.

Последний раз редактировалось dark; 08.09.2010 в 11:05.
 
Ответить с цитированием
Сказали спасибо:
ConteX (19.02.2011), ТуЗеМеЦ (15.01.2011), user999 (08.09.2010), Stormraider (03.09.2010)