Показать сообщение отдельно
Старый 30.07.2015, 13:27   #9
Новичок
 
Регистрация: 21.07.2015
Сообщений: 7
Сказал Спасибо: 1
Имеет 0 спасибок в 0 сообщенях
gh0sst пока неопределено
По умолчанию

В общем, решил не заморачиваться, нашел готовый скрипт, переделал под ПП, ШЕ отдельно. но не работает (
Код HTML:
//by vimin
//Скрипт для SE, чтобы бегал, лечил и бафал по команде от командира.

const //баффы
b1='2F 10 04 00 00 00 00 00 00 00';    // Shield
b2='2F 0B 04 00 00 00 00 00 00 00';    // Mental Shield
b3='2F 23 04 00 00 00 00 00 00 00';    // Empower
b4='2F B4 04 00 00 00 00 00 00 00';    // Wind Walk
b5='2F 36 04 00 00 00 00 00 00 00';    // Concentration

var
IDPartyMember, IDAssistTarget: String; //ИД командира и ИД его таргета и Собственный ИД
CoordBufX, CoordBufY, CoordBufZ :String; //координаты бота
NameBuffer, NameKomandos : String; // Имена
x: integer;
timer1: TTimer;

procedure OnTimer(Sender: TObject);
begin
 case x of
 1: begin
    //выделяем командира, эмулируя щелчек мыши
    buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');
    SendToServerEX(NameBuffer);

    buf:=hstr(b1);
    SendToServerEx(NameBuffer);
    x:=x+1;
    end;
 2: begin
    buf:=hstr(b2);
    SendToServerEx(NameBuffer);
    x:=x+1;
    end;
 3: begin
    buf:=hstr(b3);
    SendToServerEx(NameBuffer);
    x:=x+1;
    end;
 4: begin
    buf:=hstr(b4);
    SendToServerEx(NameBuffer);
    x:=x+1;
    end;
5: begin
    buf:=hstr(b5);
    SendToServerEx(NameBuffer);
    x:=0;
    timer1.enabled:=false;
    end;
 end;
end;

procedure bRun;
begin
     if (CoordBufX <> '') and (IDPartyMember <> '') then
     begin
          //выделяем командира, эмулируя щелчек мыши
          buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');
          SendToServerEX(NameBuffer);
          //бежим за командиром эмулируя повторный щелчек мыши по таргету
          buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');
          SendToServerEX(NameBuffer);
     end;
end;

procedure bHeal;
begin
     if (CoordBufX <> '') and (IDPartyMember <> '') then
     //if (IDPartyMember <> '') then
     begin
          //выделяем командира, эмулируя щелчек мыши
          buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');
          SendToServerEx(NameBuffer);

          // хил
          buf:=hstr('2F C1 04 00 00 00 00 00 00 00'); // Greater Heal

          //отправляем пакет серваку
          SendToServerEx(NameBuffer);
     end;
end;

procedure bRecharge;
begin
     // таргет командира
     buf:=hstr('04') + IDPartyMember + CoordBufX + CoordBufY + CoordBufZ + hstr('00');
     SendToServerEx(NameBuffer);

     // речарж
     buf:=hstr('2F F5 03 00 00 00 00 00 00 00'); // Recharge

     //отправляем пакет серваку
     SendToServerEx(NameBuffer);
     //Say('Make recharge');
end;

procedure Init; //Вызывается при включении скрипта
begin
     NameBuffer:='Buffer';
     NameKomandos:='Komandos';
     timer1:=TTimer.Create(nil);
     timer1.OnTimer:=@OnTimer;
     timer1.enabled:=false;
     timer1.interval:=5000;
     x:=0;
end;

procedure Free; //Вызывается при выключении скрипта
begin
    timer1.Free;
end;

//основная часть скрипта
//вызывается при приходе каждого пакета если скрипт включен
begin
     if pck='' then exit;

     //если от сервака принят пакет с ИД и Координатами членов пати то
     if FromServer and (pck[1]=#$a7) then
     begin
          //запоминаем ИД командира
          IDPartyMember:=pck[6] + pck[7] + pck[8] + pck[9];
     end;

   //если принят пакет от клиента с кординатами бафера то
   if FromClient and (ConnectName=NameBuffer) and (pck[1]=#$48) then
   begin
        //запоминаем координаты
        CoordBufX:= pck[6] + pck[7] + pck[8] + pck[9];
        CoordBufY:= pck[10] + pck[11] + pck[12] + pck[13];
        CoordBufZ:= pck[14] + pck[15] + pck[16] + pck[17];
   end;

   //далее идут управляющие команды

   //если КОМАНДИР пишет в любой чат цифру "1" (код "#$31 #$00" в юникоде (в юникоде под 1 символ используются 2 байта) я так понял) то
   if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
      if (pck[2]=#$31) and (pck[3]=#$00) then
      begin
           //убиваем этот пакет, чтоб сервер его не получил
           pck:='';
           //Бафер БЕЖИТ за КОМАНДИРОМ
           bRun;

           //выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
           exit;
      end;

   // если КОМАНДИР пишет в любой чат цифру "2"
   if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
       if (pck[2]=#$32) and (pck[3]=#$00) then
       begin
            //убиваем этот пакет, чтоб сервер его не получил
            pck:='';
            bHeal;
            exit;
       end;

   // если КОМАНДИР пишет в любой чат цифру "3" (речардж)
   if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
       if (pck[2]=#$33) and (pck[3]=#$00) then
       begin
            //убиваем этот пакет, чтоб сервер его не получил
            pck:='';
            bRecharge;
            exit;
       end;

   // если КОМАНДИР пишет в любой чат цифру "4" (ребаф)
   if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
       if (pck[2]=#$34) and (pck[3]=#$00) then
       begin
            //убиваем этот пакет, чтоб сервер его не получил
            pck:='';

            // бафы
            timer1.enabled:=true;
            x:=1;
            exit;
       end;

end.

Сообщения в чат идут, не перехватываются, там где ники - все изменения на свои. пакеты соответствуют, в чем может быть проблема?

В общем, как я понял, в данном скрипте стоит уже таймер.. 5000 - сколько по времени это хз. если я ошибаюсь, на крайняк, поставлю автокликер на основное окно, чтобы отправлял в чат клавишу 2 (т.е. Баф) каждые 20 минут.
Осталось понять, почему скрипт не пашет. может, этот скрипт только набросок?
gh0sst вне форума   Ответить с цитированием