Просмотр полной версии : Подскажите как написать скрипт
semiromid
22.09.2011, 15:48
Если пришел пакет от сервера  39
отправляем пакет на сервер  пакет 42
begin
if FromServer and
 buf:=#$39;
 then begin
    buf:=#$42;
SendToServer
end;
end.
begin
  if FromServer and (pck[1]=#$39) then //От серва
    begin                    //Если первая "пара циферок" - 39, то:
      buf:=#$42;
      SendToServer;  //Посылаем "42" Серверу
    end;
end.
semiromid
24.09.2011, 04:31
Буду пытаться прикрутить тамер
goodvin1709
24.09.2011, 04:41
VAR
Timer:TTimer;
Procedure Init;
begin
               Timer := TTimer.Create(nil) ;
               Timer.Interval := 1000;//Интервал.
               Timer.Enabled := False ;//Его включеность при старте.
               Timer.Ontimer := @OnTimer ; //Вызов Процедуры.
End;
Procedure Free;
begin
timer.free;
end;
Procedure OnTimer(Sender : TObject) ;
begin
Timer.enabled:=false;
buf:=#$42;
      SendToServer;//Отправили Пакет.
end;
begin
  if FromServer and (pck[1]=#$39) then Timer.enabled:=true;
   end.
//Включили таймер.
semiromid
25.09.2011, 23:49
Подскажи что тут не правильно ?
 begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Пиротехник' then            //проверяем от кого
       buf:=hstr('43 01 00 00 00');            //Создаем пакет "принять пати"
    else
      buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;                              //Отправляем его на сервер
  end;  
end.
 на против        else    выдает ошибку (крастная строчка) при компиляции
Подскажи что тут не правильно ?
 begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Пиротехник' then            //проверяем от кого
       buf:=hstr('43 01 00 00 00');            //Создаем пакет "принять пати"
    else
      buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;                              //Отправляем его на сервер
  end;  
end.
 на против        else    выдает ошибку (крастная строчка) при компиляции
 (крастная строчка)
semiromid
26.09.2011, 02:13
const
name = 'Санар;  
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Пиротехник' then            //проверяем от кого
       buf:=hstr('43 01 00 00 00');            //Создаем пакет "принять пати"
    else
      buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;                              //Отправляем его на сервер
  end;  
end.
вот полный скрипт .
И не компилируеться(
бегин во второй иф то добавь - тебе же подсказали :) сидишь ворон считаешь.
на против        else    выдает ошибку (крастная строчка) при компиляции
В строке перед else не ставят ;
semiromid
26.09.2011, 03:44
Вот так работает .Сделал как сказал NLObP 
const
name = 'Кортик';  
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Перотехник' then            //проверяем от кого
       buf:=hstr('43 01 00 00 00')
    else
      buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;                              //Отправляем его на сервер
  end;  
end.
Но теперь другая проблемка. Я хочу что бы отправлялось 2-а пакета этот   buf:=hstr('43 01 00 00 00')  и еще другой   buf:=hstr('49 01 00 00 00').Не могу понять как сделать что бы это реализовать
И еще после прихода пакета  buf:=hstr('49 01 00 00 00'). возможно сделать метку ? или может функцию .Я хочу что бы после выполнения этого пакета , бафер бафа 1-н раз .
Если
//...
if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Перотехник' then            //проверяем от кого
      begin
         buf:=hstr('49 01 00 00 00');  //Формирование 1го пакета
         SendToServer;                   //Посылка 1го
         buf:=hstr('43 01 00 00 00')   //Формирование 2го пакета
      end;
    else
//...
Не сработает (Не успеет обработать 2 пакета подряд), то нужно будет реализовывать через таймер.
Добавлено через 4 минуты
(Или через делей, который не очень)
semiromid
26.09.2011, 20:34
вот написал с помощью delay()
const
name = 'AntBuf';  
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Пиротехник' then            //проверяем от кого
       buf:=hstr('43 01 00 00 00'); 
       delay(5000); 
       buf:=hstr('43 01 00 00 00') 
    else
      buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;                              //Отправляем его на сервер
  end;  
end.
Но чего то выдает ошибку на против "else"
Добавлено через 36 минут
VAR
Timer:TTimer;
Procedure Init;
begin
               Timer := TTimer.Create(nil) ;
               Timer.Interval := 1000;//Интервал.
               Timer.Enabled := False ;//Его включеность при старте.
               Timer.Ontimer := @OnTimer ; //Вызов Процедуры.
End;
Procedure Free;
begin
timer.free;
end;
Procedure OnTimer(Sender : TObject) ;
begin
Timer.enabled:=false;
buf:=#$42;
      SendToServer;//Отправили Пакет.
end;
begin
  if FromServer and (pck[1]=#$39) then Timer.enabled:=true;
   end.
//Включили таймер.
А как можно несколько пакетов отсылать с определенным промежутком времени , каждого пакета?
http://coderx.ru/showthread.php?t=8701
semiromid
26.09.2011, 22:25
http://coderx.ru/showthread.php?t=8701
Спасибо за ссылку Но я сам хочу понимать что я пишу
semiromid, ищи
нужно будет реализовывать через таймер
semiromid
27.09.2011, 02:16
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Пиротехник' then               //проверяем от кого 
    buf:=Hstr('43 01 00 00 00');
    timer.enabled:=true;
    TimerStep:=1  
    else     
      buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;                            //Отправляем его на сервер
  end;
Опять напротив    else  ошибку выдает(
const
name = 'AntBuf';  
var
    timer:TTimer;
    TimerStep:byte;
procedure Init; 
begin
    TimerStep:=1;
    timer:=TTimer.Create(nil);
    timer.OnTimer:=@OnTimer;
    timer.enabled:=false;
    timer.interval:=1000; //время задержки между отправкой пакетов.
end;
procedure Free;
begin
    timer.free;
end;
procedure OnTimer;
    begin
        case TimerStep of
        
                   
            1: 
                begin  
                    timer.interval:=1000;
                    buf:=Hstr('49 14 04 3E 04 31 04 40 04 3E 04 20 00 3F 04 3E 04 36 04 30 04 3B 04 3E 04 32 04 30 04 42 04 4C 04 20 00 3A 04 20 00 31 04 30 04 44 04 35 04 40 04 43 04 20 00 3A 04 3B 04 30 04 3D 04 30 04 20 00 22 00 1B 04 38 04 33 04 30 04 22 00 20 00 21 00 00 00 03 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;        
        
            2: 
                begin
                    timer.interval:=1000;
                    buf:=Hstr('39 93 03 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            3: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 10 01 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            4: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 36 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            5: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 0F 01 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            6: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 DD 03 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            7: 
                begin 
                    timer.interval:=1000;
                    buf:=Hstr('39 13 01 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            8: 
                begin 
                    timer.interval:=1000;
                    buf:=Hstr('39 12 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;                                               
            9: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('49 21 04 3F 04 30 04 41 04 38 04 31 04 3E 04 20 00 47 04 42 04 3E 04 20 00 32 04 3E 04 41 04 3F 04 3E 04 3B 04 4C 04 37 04 3E 04 32 04 30 04 3B 04 38 04 41 04 4C 04 20 00 48 04 42 04 30 04 42 04 3D 04 4B 04 3C 04 20 00 3A 04 3B 04 30 04 3D 04 20 00 31 04 30 04 44 04 35 04 40 04 3E 04 3C 04 21 00 1F 04 40 04 38 04 45 04 3E 04 34 04 38 04 42 04 35 04 20 00 35 04 49 04 35 04 20 00 3A 00 29 00 00 00 03 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);                       
                end;
            10: 
                begin 
                    buf:=Hstr('44');
                    SendToServerEx(name);              
                    timer.enabled:=false;     
                end;                            
        end;
    end;
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = 'Пиротехник' then               //проверяем от кого 
    buf:=Hstr('43 01 00 00 00');
    timer.enabled:=true;
    TimerStep:=1  
    else     
      buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;                            //Отправляем его на сервер
  end; 
end.
Не уверен, но мож после then надо открыть begin ?
semiromid
27.09.2011, 16:26
Вот сдела. Все работает . Но когда наприер "Сэрик" дает пати "Вива" то она почемута его берет , а "AntBuf'" начинает давать денсы (
const
name = 'AntBuf';  
var
 Paname: String;
    timer:TTimer;
    TimerStep:byte;
procedure Init; 
begin
    TimerStep:=1;
    timer:=TTimer.Create(nil);
    timer.OnTimer:=@OnTimer;
    timer.enabled:=false;
    timer.interval:=1000; //время задержки между отправкой пакетов.
end;
procedure Free;
begin
    timer.free;
end;
procedure OnTimer;
    begin
        case TimerStep of
        
                   
            1: 
                begin  
                    timer.interval:=1000;
                    buf:=Hstr('49 14 04 3E 04 31 04 40 04 3E 04 20 00 3F 04 3E 04 36 04 30 04 3B 04 3E 04 32 04 30 04 42 04 4C 04 20 00 3A 04 20 00 31 04 30 04 44 04 35 04 40 04 43 04 20 00 3A 04 3B 04 30 04 3D 04 30 04 20 00 22 00 1B 04 38 04 33 04 30 04 22 00 20 00 21 00 00 00 03 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;        
        
            2: 
                begin
                    timer.interval:=1000;
                    buf:=Hstr('39 10 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            3: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 12 01 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            4: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 35 06 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            5: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 37 06 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            6: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 39 06 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            7: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 0F 01 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            8: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 13 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end; 
            9: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 36 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;                     
                                                              
            10: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('49 21 04 3F 04 30 04 41 04 38 04 31 04 3E 04 20 00 47 04 42 04 3E 04 20 00 32 04 3E 04 41 04 3F 04 3E 04 3B 04 4C 04 37 04 3E 04 32 04 30 04 3B 04 38 04 41 04 4C 04 20 00 48 04 42 04 30 04 42 04 3D 04 4B 04 3C 04 20 00 3A 04 3B 04 30 04 3D 04 20 00 31 04 30 04 44 04 35 04 40 04 3E 04 3C 04 21 00 1F 04 40 04 38 04 45 04 3E 04 34 04 38 04 42 04 35 04 20 00 35 04 49 04 35 04 20 00 3A 00 29 00 00 00 03 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);                       
                end;
            11: 
                begin  
                    timer.interval:=1000;
                    buf:=Hstr('44');
                    SendToServerEx(name);
                    Inc(TimerStep);                  
                end;
            12: 
                begin 
                    timer.interval:=1000;
                    buf:=Hstr('19 F5 5E 30 10 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);                   
                end;
            13: 
                begin 
                    timer.interval:=1000;
                    buf:=Hstr('19 F5 5E 30 10 00 00 00 00');
                    SendToServerEx(name);              
                    timer.enabled:=false;     
                end;                                                
            14: 
                begin                                          
                    buf:=Hstr('1C 01 00 00 00');
                    SendToServerEx(name);                       
                    timer.enabled:=false;     
                end;                   
                
                
                
                
                
        end;
    end;
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39     
  
   PAname:= ReadS(2);
    if (PAName = 'Сэрик') or (PAName = 'еенн') or (PAName = 'тете') or (PAName = 'Огнн') or (PAName = 'бдбдбд') or (PAName = 'LIGAsword') or (PAName = 'Вива') or (PAName = 'wuiwiw')  then   begin
    
    buf:=Hstr('43 01 00 00 00');  
    timer.enabled:=true;
    TimerStep:=1; 
      
  end else 
     buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;        
                        
  end;
 
 
 
//даем мп 
begin
  if FromServer and (pck[1]=#$70) then begin   //от сервера получен пакет $39     
  
    
    buf:=Hstr('55 01 00 00 00');  
    timer.enabled:=true;
    timer.interval:=5000; 
    TimerStep:=14;                                   
    SendToServer;                            //Отправляем его на сервер
  end;
  end; 
  
  
  
  
  
end.
semiromid
27.09.2011, 16:31
Вот сдела. Все работает . Но когда наприер "Сэрик" дает пати "Вива" то она почемута его берет , а "AntBuf'" начинает давать денсы (
const
name = 'AntBuf';  
var
 Paname: String;
    timer:TTimer;
    TimerStep:byte;
procedure Init; 
begin
    TimerStep:=1;
    timer:=TTimer.Create(nil);
    timer.OnTimer:=@OnTimer;
    timer.enabled:=false;
    timer.interval:=1000; //время задержки между отправкой пакетов.
end;
procedure Free;
begin
    timer.free;
end;
procedure OnTimer;
    begin
        case TimerStep of
        
                   
            1: 
                begin  
                    timer.interval:=1000;
                    buf:=Hstr('49 14 04 3E 04 31 04 40 04 3E 04 20 00 3F 04 3E 04 36 04 30 04 3B 04 3E 04 32 04 30 04 42 04 4C 04 20 00 3A 04 20 00 31 04 30 04 44 04 35 04 40 04 43 04 20 00 3A 04 3B 04 30 04 3D 04 30 04 20 00 22 00 1B 04 38 04 33 04 30 04 22 00 20 00 21 00 00 00 03 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;        
        
            2: 
                begin
                    timer.interval:=1000;
                    buf:=Hstr('39 10 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            3: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 12 01 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            4: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 35 06 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            5: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 37 06 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            6: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 39 06 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;
            7: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 0F 01 00 00 00 00 00 00 00');
                    SendToServerEx(name); 
                    Inc(TimerStep);                
                end; 
            8: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 13 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end; 
            9: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('39 36 01 00 00 00 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);
                end;                     
                                                              
            10: 
                begin 
                    timer.interval:=2000;
                    buf:=Hstr('49 21 04 3F 04 30 04 41 04 38 04 31 04 3E 04 20 00 47 04 42 04 3E 04 20 00 32 04 3E 04 41 04 3F 04 3E 04 3B 04 4C 04 37 04 3E 04 32 04 30 04 3B 04 38 04 41 04 4C 04 20 00 48 04 42 04 30 04 42 04 3D 04 4B 04 3C 04 20 00 3A 04 3B 04 30 04 3D 04 20 00 31 04 30 04 44 04 35 04 40 04 3E 04 3C 04 21 00 1F 04 40 04 38 04 45 04 3E 04 34 04 38 04 42 04 35 04 20 00 35 04 49 04 35 04 20 00 3A 00 29 00 00 00 03 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);                       
                end;
            11: 
                begin  
                    timer.interval:=1000;
                    buf:=Hstr('44');
                    SendToServerEx(name);
                    Inc(TimerStep);                  
                end;
            12: 
                begin 
                    timer.interval:=1000;
                    buf:=Hstr('19 F5 5E 30 10 00 00 00 00');
                    SendToServerEx(name);
                    Inc(TimerStep);                   
                end;
            13: 
                begin 
                    timer.interval:=1000;
                    buf:=Hstr('19 F5 5E 30 10 00 00 00 00');
                    SendToServerEx(name);              
                    timer.enabled:=false;     
                end;                                                
            14: 
                begin                                          
                    buf:=Hstr('1C 01 00 00 00');
                    SendToServerEx(name);                       
                    timer.enabled:=false;     
                end;                   
                
                
                
                
                
        end;
    end;
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39     
  
   PAname:= ReadS(2);
    if (PAName = 'Сэрик') or (PAName = 'еенн') or (PAName = 'тете') or (PAName = 'Огнн') or (PAName = 'бдбдбд') or (PAName = 'LIGAsword') or (PAName = 'Вива') or (PAName = 'wuiwiw')  then   begin
    
    buf:=Hstr('43 01 00 00 00');  
    timer.enabled:=true;
    TimerStep:=1; 
      
  end else 
     buf:=hstr('43 00 00 00 00');             //Создаем пакет "Отказать в пати"
    pck :='';                                  //убиваем этот пакет
    SendToServer;        
                        
  end;
 
 
 
//даем мп 
begin
  if FromServer and (pck[1]=#$70) then begin   //от сервера получен пакет $39     
  
    
    buf:=Hstr('55 01 00 00 00');  
    timer.enabled:=true;
    timer.interval:=5000; 
    TimerStep:=14;                                   
    SendToServer;                            //Отправляем его на сервер
  end;
  end; 
  
  
  
  
  
end. 
Подскажите кк сделать примерно вот так 
const
name = 'AntBuf';  
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = ('Пиротехник') or ('Пиротyехник') then               //проверяем от кого       
       buf:=hstr('43 01 00 00 00');
                SendToServer;
                              //Отправляем его на сервер
  end; 
  
    
end.
const
name = 'AntBuf';  
begin
  if FromServer and (pck[1]=#$39) then begin   //от сервера получен пакет $39 
    if ReadS(2) = ('Пиротехник') or ('Пиротyехник') then   //проверяем от кого       
       buf:=hstr('43 01 00 00 00'); // принять пати
                SendToServerEx(name);//  от имени name = 'AntBuf';  
                              //Отправляем его на сервер
  end; 
  
    
end.
посмотри может пригодится
http://coderx.ru/showthread.php?t=2080
semiromid
28.09.2011, 01:57
Подскажите почему где ошибка ?
Я хочу что бы когда приходил пакет 39
 копирывалось с него вторая строчка , и заменяла в 49 пакете  4 строку 
const
 Name='Вива'; 
var  
Paname: String;
begin
  if FromClient and (pck[1] = #$39) then  //Отлавливаем от клиента пакет XX
begin
     Paname:=ReadS(2);
     buf:=#$49#$3E#$04#$3E#$04#$00#$00#$02#$00#$00#$00# $12#$04#$38#$04#$32#$04#$30#$04#$00#$00; 
    
    WriteS(Paname),4);
    SendToServerEx(name);
  
  end;  
  
 
end.
Так, секунду. Вопрос странный. Ты что сейчас пытаешься сделать? Как ты хочешь заменить там 4ю строчку оО
(49) (3E 04 3E 04) (00 00 02 00) (00 00 12 04) (38 04 32 04) (30 04 00 00);
WriteS(Paname),4); //Вряд ли так можно...
Добавлено через 10 минут
// Составление пакета:
begin
   buf:=#$45;
   WriteD(64);
   WriteC(1);
   buf:=buf+#$33#$32;
   SendToHell;
end;
Пакет, который мы отправили в АД:
45 40 00 00 00 01 00 33 32
http://coderx.ru/search.php?searchid=499805
Tип: 0x49 (Say2)
Pазмер: 21+2
Время прихода: 00:52:35:950
0002 s  Text: оо
0008 d  Type: 2 (0x00000002)
0012 s  Target: Вива
const
 Name='Вива'; 
var  
Paname: String;
begin
  if FromClient and (pck[1] = #$39) then  //Отлавливаем от клиента пакет XX
begin
   Paname:=ReadS(2);
   buf:=#$49;
  WriteS('оо');
  WriteD(2);
  WriteS(Paname);
  SendToServerEx(name);
  end;  
  end.
semiromid
29.09.2011, 02:38
if FromServer and (ConnectName=Name) and (pck[1]=#$39) then  begin        
   mana:= ReadS(2); 
   buf:=Hstr('49 21 04 3F 04 30 04 41 04 38 04 31 04 3E 04 20 00 37 04 30 04 20 00 3C 04 30 04 3D 04 43 04 20 00 3D 00 29 00 00 00 02 00 00 00');
    WriteS(mana);
    buf := buf + HStr('');
    SendToServer;                            
  end;
  end.
semiromid, Вопрос хотяб задайте, как вам помочь?))
Добавлено через 30 секунд
buf := buf + HStr('');
Не уверен, что это верно. То есть смысла не вижу.
Здравствуйте уважаемые читеры. чтобы не создавать новую тему, попрошу совета тут. В дельфи не секу, сейчас юзаю поиск.
Необходимо, чтобы клиент посылал серверу два строго определенных пакета с интервалом 0.5 сек. 
Выражаясь языком Asi надо сделать скрипт
Label (123) //начало цикла
послать пакет 1
delay 500
послать пакет 2
delay 500 
jmp(123) //вернуться в начало цикла.
Пожалуйста, помогите.
з.ы. я знаю что есть функция отправить пакет на сервер, но мне надо отправлять несколько пакетов с заданным интервалом, иначе часть из них просто не успеет обработаться.
Вот пример скрипта. (если от серва пакет 1, то отправить пакет 2.)
begin
if FromClient and  (pck=HStr('FE 58 00 01 00 00 00')) then                     begin
buf:=HStr('D0 26 00 C0 00 23 40');
SendToServer;
end;
end.
что не так? в 4ой строчке чего то не хватает. подскажите плиз. и как добавить второй пакет с делеем 500 в отправку
Санчес, 
 поиск на что ??
хотя бы
http://coderx.ru/showpost.php?p=149439&postcount=9
http://coderx.ru/showthread.php?t=8049&highlight=%EE%F2%EF%F0%E0%E2%EA%E0+%EF%E0%EA%E5%F2 %EE%E2
semiromid
01.10.2011, 08:06
const
 Name1='AntBuf'; 
var  
    mana1,mana2,mana3,info1,info2,info3,X1,y1,z1: integer;    
    Paname,mana: String;
    timer:TTimer;
    TimerStep:byte;
procedure Init; 
begin
    TimerStep:=1;
    timer:=TTimer.Create(nil);
    timer.OnTimer:=@OnTimer;
    timer.enabled:=false;
    timer.interval:=1000; //время задержки между отправкой пакетов.
end;
procedure Free;
begin
    timer.free;
end;
procedure OnTimer;
    begin
        case TimerStep of
        
        //////////////Таймер пока не используетсья в тест скрипте
            1: 
                begin  
                    timer.interval:=1000;          
                    buf:=Hstr('');
                    SendToServerEx(name1);
                    Inc(TimerStep);
                end;        
        
            2:                                      
                begin
                    timer.interval:=1000;         
                    buf:=Hstr('');
                    SendToServerEx(name1);
                    Inc(TimerStep);
                end;
            3: 
                begin 
                    timer.interval:=2000;
                    buf := HStr('');
                    SendToServerEx(name1);
                    Inc(TimerStep);               
                end;             
                
        end;
    end;
   
 begin  
   
 /////////////////////////////////////////Блок проверки количество сопартийцев PartySmallWindowAll
if FromServer and (pck[1] = #$4E) and (ConnectName=Name1) then   begin        //Пакет о информации о пати 
                
                mana1:= ReadD(14); //ОверОК
                mana2:= ReadD(88);
                mana3:= ReadD(166); 
if (ReadD(10)=3)  then         //Сколко человек в пати   
            buf:=Hstr('49 31 04 4B 04 3B 04 3E 04 20 00 32 00 2D 00 30 04 20 00 47 04 35 04 3B 04 3E 04 32 04 35 04 30 04 20 00 32 04 20 00 3F 04 30 04 42 04 38 04 20 00 20 00 2C 00 20 00 42 04 35 04 3F 04 35 04 40 04 4C 04 20 00 33 00 2D 00 38 04 20 00 3D 00 29 00 00 00 03 00 00 00');                                                            
            SendToServer;      
 end;
 
/////////////////////////////////////////////перехватываем пакет ЧарИнфо для каждого сопартийца отдельный   
    if FromServer and (pck[1] = #$31) and (ConnectName=Name1) then   begin              
 if    ReadD(18) = mana1  then        //Пакет от номера 1 СверяемПакет чар инфо с ObjectID от пакета  PartySmallWindowAll  
       buf:=hstr('49 4F 04 20 00 10 04 3D 04 42 04 11 04 30 04 44 04 00 00 03 00 00 00');                                                
       SendToServer;                              
     end;  
  
     if FromServer and (pck[1] = #$31) and (ConnectName=Name1) then   begin       
  if   ReadD(18) = mana2  then      //Пакет от номера 2 СверяемПакет чар инфо с ObjectID от пакета  PartySmallWindowAll       
       buf:=hstr('49 2F 04 20 00 21 04 4D 04 34 04 40 04 38 04 3A 04 00 00 03 00 00 00');            
       SendToServer;                      
     end; 
  
     if FromServer and (pck[1] = #$31) and (ConnectName=Name1) then   begin             
  if   ReadD(18) = mana3  then         //Пакет от номера 3 СверяемПакет чар инфо с ObjectID от пакета  PartySmallWindowAll    
       buf:=hstr('49 2F 04 20 00 1D 04 4D 04 3B 04 4F 04 00 00 03 00 00 00');                                                  
       SendToServer;                              
    end;   
end.Странно как то пакеты отсылаються ..Вот в таком порядке 
Пакет от номера 1  -- сразу 3-и шт 
Пакет от номера 2  -- сразу 2-е шт
Пакет от номера 3  -- 1-а шт
Подскажите в чем косяк?
Странно я если добовляю сюда условие else , то пакеты идут по порядку ..   1.2.3 Тойсть как и должны идти .Но хочеться узнать саму суть .
/////////////////////////////////////////////перехватываем пакет ЧарИнфо для каждого сопартийца отдельный   
    if FromServer and (pck[1] = #$31) and (ConnectName=Name1) then   begin 
              
 if    ReadD(18) = mana1  then        //Пакет от номера 1 СверяемПакет чат инфо с ObjectID от пакета  PartySmallWindowAll  
       buf:=hstr('49 4F 04 20 00 10 04 3D 04 42 04 11 04 30 04 44 04 00 00 03 00 00 00')
       else
       buf:=hstr('');                                         
       SendToServer;                              
     end;  
  
     if FromServer and (pck[1] = #$31) and (ConnectName=Name1) then   begin 
       
  if   ReadD(18) = mana2  then      //Пакет от номера 2 СверяемПакет чат инфо с ObjectID от пакета  PartySmallWindowAll       
       buf:=hstr('49 2F 04 20 00 21 04 4D 04 34 04 40 04 38 04 3A 04 00 00 03 00 00 00')
       else
       buf:=hstr('');           
       SendToServer;                      
     end; 
  
     if FromServer and (pck[1] = #$31) and (ConnectName=Name1) then   begin 
             
  if   ReadD(18) = mana3  then         //Пакет от номера 3 СверяемПакет чат инфо с ObjectID от пакета  PartySmallWindowAll    
       buf:=hstr('49 2F 04 20 00 1D 04 4D 04 3B 04 4F 04 00 00 03 00 00 00') 
       else
       buf:=hstr('');                                                 
       SendToServer;                              
    end;
if   ( ReadD(18) = mana1 ) then
semiromid, у тебя неправильно оформлен оператор IF.
Надо так:
if    (ReadD(18) = mana1)  then
begin
       buf:=hstr('49 4F 04 20 00 10 04 3D 04 42 04 11 04 30 04 44 04 00 00 03 00 00 00')
       SendToServer;                              
end;
или так
if    (ReadD(18) = mana1)  then
begin
       buf:=hstr('49 4F 04 20 00 10 04 3D 04 42 04 11 04 30 04 44 04 00 00 03 00 00 00')
       SendToServer;                              
end
else
begin
       buf:=hstr('');                                         
       SendToServer;                              
end;
моно так . пример
 if FromServer and (pck[1] = #$31) and (ConnectName=Name1) then  
      case pck[18] of
      mana1:begin      //Пакет от номера 1 СверяемПакет чат инфо c ObjectID от пакета  PartySmallWindowAll  
       buf:=hstr('49 4F 04 20 00 10 04 3D 04 42 04 11 04 30 04 44 04 00 00 03 00 00 00')
      SendToServer;                              
     end;  
  
    mana2:begin  //Пакет от номера 2 СверяемПакет чат инфо с ObjectID от пакета  PartySmallWindowAll       
       buf:=hstr('49 2F 04 20 00 21 04 4D 04 34 04 40 04 38 04 3A 04 00 00 03 00 00 00')       
       SendToServer;                      
     end; 
  
   mana3:begin //Пакет от номера 3 СверяемПакет чат инфо с ObjectID от пакета  PartySmallWindowAll    
       buf:=hstr('49 2F 04 20 00 1D 04 4D 04 3B 04 4F 04 00 00 03 00 00 00') 
      SendToServer;                              
    end;
semiromid
01.10.2011, 21:09
semiromid, Вопрос хотяб задайте, как вам помочь?))
Добавлено через 30 секунд
buf := buf + HStr('');
Не уверен, что это верно. То есть смысла не вижу.
Так нее.) Я написал решение )
semiromid
02.10.2011, 23:55
Проверьте пожалуйста , правильно ли я все сконфигурировал.
 begin 
////////////////////////////////////////Блок проверки количество человек в пати 
if FromServer and (pck[1] = #$4E) and (ConnectName=Name) then   begin
                             //Блок перебора количества в пати человек
           if (ReadD(10)=2)  then      // в пати 2-а человека
begin
              buf:=Hstr('49 3F 04 30 04 42 04 38 04 20 00 37 00 00 00 03 00 00 00');
              SendToServer; 
end
     else  if (ReadD(10)=3)  then       // в пати 3-а человека
begin
              buf:=Hstr('49 3F 04 30 04 42 04 38 04 20 00 37 00 00 00 03 00 00 00');
              SendToServer;                             
end
     else  if (ReadD(10)=4)  then       // в пати 4-а человека
begin
              buf:=Hstr('49 3F 04 30 04 42 04 38 04 20 00 37 00 00 00 03 00 00 00');
              SendToServer;                              
end
     else  if (ReadD(10)=5)  then       // в пати 5-а человека
begin
              buf:=Hstr('49 3F 04 30 04 42 04 38 04 20 00 37 00 00 00 03 00 00 00');
              SendToServer;                              
end
     else  if (ReadD(10)=6)  then       // в пати 6-а человека
begin
              buf:=Hstr('49 12 04 20 00 3F 04 30 04 42 04 38 04 20 00 37 00 2D 00 3C 04 4C 04 20 00 47 04 35 04 3B 04 3E 04 32 04 35 04 3A 04 00 00 03 00 00 00');
              SendToServer;
              timer.enabled:=true;
              TimerStep:=13;                             
end; 
end;
semiromid, такое лучше через CASE делать
  if (ConnectName=Name) and FromServer and (pck[1] = #$4E) then
  begin
    case pck[10] of
      #$2: begin
              // в пати 2-а человека
              ...
              end;
      #$3: begin
              // в пати 3-и человека
              ...
              end;
      #$4: begin
              // в пати 4 человека
              ...
              end;
      #$5: begin
              // в пати 5 человек
              ...
              end;
      #$6: begin
              // в пати 6 человек
              ...
              end;
    end; //case
  end;
semiromid
06.10.2011, 05:46
Подскажите 2-е вещи.
1. Как в переменную добавить пакет?
2. Как большой скрипт разделить на несколько частей?Возможно спомощью #include ?
Подскажите 2-е вещи.
1. Как в переменную добавить пакет?
2. Как большой скрипт разделить на несколько частей?Возможно спомощью #include ?
1 напиши пример куда и что добавить
2 зачем?
2 часть скрипта в плагин сделать
semiromid
07.10.2011, 04:49
1 напиши пример куда и что добавить
2 зачем?
2 часть скрипта в плагин сделать
Вот например вот этот пакет нужно привязать к переменной 
Код для примера .
var
  winn: byte;
procedure Init; 
 winn:='19 E0 D2 10 10 00 00 00 00';
2 зачем?
Была такая  задумка , из-за того что  ObjectID придмета при покупки меняеться  , и нужно было постоянно переделывать ряд одинаковых пакетов . Но теперь я решил сделать подругому .
Вызываю перед включением пакет "Tип: 0x3D (RequestShortCutReg)" ,  считываю информацию данного придмета и  записываю ее в отсылаемые пакеты .
2 часть скрипта в плагин сделать
Буду пробывать  ) Спасибо . 
Скрипт получился очень большой .Занято около 5-тыс строк (
vBulletin® v3.6.11, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot