PDA

Просмотр полной версии : Подскажите как написать скрипт


semiromid
22.09.2011, 15:48
Если пришел пакет от сервера 39
отправляем пакет на сервер пакет 42

begin

if FromServer and
buf:=#$39;
then begin
buf:=#$42;
SendToServer


end;
end.

J-Fobos
22.09.2011, 18:33
buf - буфер
pck - пакет

Nickers
22.09.2011, 19:37
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 выдает ошибку (крастная строчка) при компиляции

Pinko
26.09.2011, 02:07
Подскажи что тут не правильно ?
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.

вот полный скрипт .
И не компилируеться(

SeregaZ
26.09.2011, 02:47
бегин во второй иф то добавь - тебе же подсказали :) сидишь ворон считаешь.

NLObP
26.09.2011, 03:13
на против 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-н раз .

Nickers
26.09.2011, 15:42
Если

//...
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.
//Включили таймер.
А как можно несколько пакетов отсылать с определенным промежутком времени , каждого пакета?

Pinko
26.09.2011, 21:22
http://coderx.ru/showthread.php?t=8701

semiromid
26.09.2011, 22:25
http://coderx.ru/showthread.php?t=8701

Спасибо за ссылку Но я сам хочу понимать что я пишу

NLObP
26.09.2011, 23:19
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.

dyh9l
27.09.2011, 07:16
Не уверен, но мож после 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.

Pinko
27.09.2011, 19:09
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.

Nickers
28.09.2011, 08:55
Так, секунду. Вопрос странный. Ты что сейчас пытаешься сделать? Как ты хочешь заменить там 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

Pinko
28.09.2011, 10:12
http://coderx.ru/search.php?searchid=499805

Nickers
28.09.2011, 17:53
Pinko, нет совпадений.

Pinko
29.09.2011, 02:38
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.

Nickers
29.09.2011, 08:17
semiromid, Вопрос хотяб задайте, как вам помочь?))

Добавлено через 30 секунд
buf := buf + HStr('');
Не уверен, что это верно. То есть смысла не вижу.

Санчес
29.09.2011, 16:08
Здравствуйте уважаемые читеры. чтобы не создавать новую тему, попрошу совета тут. В дельфи не секу, сейчас юзаю поиск.
Необходимо, чтобы клиент посылал серверу два строго определенных пакета с интервалом 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 в отправку

Pinko
29.09.2011, 21:58
Санчес,
поиск на что ??
хотя бы
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;

Pinko
01.10.2011, 14:46
if ( ReadD(18) = mana1 ) then

NLObP
01.10.2011, 19:33
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;

Pinko
01.10.2011, 20:21
моно так . пример
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;

NLObP
03.10.2011, 01:50
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 ?

Pinko
06.10.2011, 10:30
Подскажите 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-тыс строк (