Показать сообщение отдельно
Старый 05.12.2007, 00:39   #90
Рыцарь
 
Аватар для NLObP
 
Регистрация: 25.02.2008
Адрес: г.Волгоград
Сообщений: 2,009
Сказал Спасибо: 1,285
Имеет 1,458 спасибок в 793 сообщенях
NLObP пока неопределено
По умолчанию Re:

Цитата:
Сообщение от Rubec
Ну что никто так и не посмотрит скрипт на БД ??
Он у тебя рабочий. Ищи ошибку в другом месте. Вот он же с небольшими изменениями в логике включения бафов.
Код:
//Скрипт на БД чтобы танцевал каждые 2 минуты и бегал за командиром
const //Dance
    d1='2F 11 01 00 00 00 00 00 00 00';    // Dance of Mystic
    d2='2F 15 01 00 00 00 00 00 00 00';    // Dance of Light
    d4='2F 10 01 00 00 00 00 00 00 00';    // Inspirations
    d3='2F 12 01 00 00 00 00 00 00 00';    // Dance of Fire
    d5='';    // Dance of Concentration

    var
    IDPartyMember, IDAssistTarget: String; //ИД командира и ИД его таргета и Собственный ИД
    CoordBDX, CoordBDY, CoordBDZ :String; //координаты бота
    NameBD, NameKomandos : String; // Имена
    x: integer;
    timerBD: TTimer;
    timerBD1: TTimer;

procedure OnTimerBD(Sender: TObject);
    begin
    Case x of
    1:  begin
        buf:=hstr(d1);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    2:  begin
        buf:=hstr(d2);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    3:  begin
        buf:=hstr(d3);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    4:  begin
        buf:=hstr(d4);
        SendToServerEx(NameBD);
        x:=x+1;
        end;
    5: begin
       bRun;
       x:=0;
       timerBD1.enabled:=true;
       timerBD.enabled:=false;
       end;
    end;
    end;

procedure OnTimerBD1(Sender: TObject);
    begin
         timerBD.enabled:=true;
         x:=1;
    end;

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

procedure Init; //Вызывается при включении скрипта
begin
     NameBD:='BladeDancer';
     NameKomandos:='Kommander';
     timerBD:=TTimer.Create(nil);
     timerBD.OnTimer:=@OnTimerBD;
     timerBD.enabled:=false;
     timerBD.interval:=2000;
     x:=0;
     timerBD1:=TTimer.Create(nil);
     timerBD1.OnTimer:=@OnTimerBD1;
     timerBD1.enabled:=false;
     timerBD1.interval:=120000;
end;

procedure Free; //Вызывается при выключении скрипта
begin
     timerBD.Free;
     timerBD1.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=NameBD) and (pck[1]=#$48) then
       begin
            //запоминаем координаты
            CoordBDX:= pck[6] + pck[7] + pck[8] + pck[9];
            CoordBDY:= pck[10] + pck[11] + pck[12] + pck[13];
            CoordBDZ:= pck[14] + pck[15] + pck[16] + pck[17];
       end;


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

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

               //выйти из рабочей части скрипта чтобы другие услови не проверяли убитый пакет нулевой длинны
               exit;
          end;
// запускаем танцы
    if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
           if (pck[2]=#$38) and (pck[3]=#$00) then
           begin
                //убиваем этот пакет, чтоб сервер его не получил
                pck:='';

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

// остановить танцы
     if FromClient and (ConnectName=NameKomandos)and (pck[1]=#$38) then
           if (pck[2]=#$39) and (pck[3]=#$00) then
               begin
                //убиваем этот пакет, чтоб сервер его не получил
                pck:='';

                timerBD1.enabled:=false;
                timerBD.enabled:=false;
                exit;
                end;
end.
__________________
| Для самых ленивый | Телепаты в отпуске |Мы работаем над этим |
Не умеешь - учись, не хочешь учиться - плати © Суровый Закон Жизни


NLObP вне форума   Ответить с цитированием