PDA

Просмотр полной версии : Помогите, что не так...


BuuG
04.12.2007, 19:17
Задача такая:
1. пакету 01 к серверу нужно в конце дописать 4-е байта (01 00 00 00)
2. пакету 2F к серверу нужно поменять 6-й байт на 00
3. заблокировать пакет 81 к серверу.
Знающие люди подскажите, что нетак, л2пх выдает крита с моим скриптом?


const
ebalyavsehvrot='01 00 00 00';

begin
if FromClient and (pck[1]=HStr('01')) and (pck[26]<HStr('01')) then begin
buf:=pck + hstr(ebalyavsehvrot);
SendToServer;
pck:='';
end;

if FromClient and (pck[1]=HStr('2F')) and (pck[6]>HStr('01')) then begin
pck[6]:=HStr('00');
buf:=pck;
SendToServer;
pck:='';
end;

if FromClient and (pck=HStr('81')) then begin
buf:=HStr('3F');
SendToServer;
pck:='';
end;
end.

finomen
22.05.2008, 11:04
на каком месте ошибка? и что делает скрипт? (смысл действий) и если поменять именно на 00 то не (pck[6]>HStr('01')) а (pck[6]<>HStr('01')) или NOT(pck[6]=HStr('00'))

NLObP
22.05.2008, 13:51
Задача такая:
1. пакету 01 к серверу нужно в конце дописать 4-е байта (01 00 00 00)
2. пакету 2F к серверу нужно поменять 6-й байт на 00
3. заблокировать пакет 81 к серверу.

begin
if FromClient and (pck[1]=#$01) then begin
buf:=pck;
WriteD(01);
SendToServer;
pck:='';
exit;
end;

if FromClient and (pck[1]=#$2F) then begin
buf:=pck;
WriteC(00,6);
SendToServer;
pck:='';
exit;
end;

if FromClient and (pck[1]=#$81) then begin
pck:='';
exit;
end;
end.

ps: скрипт ставь самым последним в списке

QaK
22.05.2008, 14:27
Может не последним ставить, а первым запускать? Все равно список сортируется поименно, поставить имя zzz будет последним.По-моему важен порядок проставления галок на запуск ... хотя могу и ошибаться.

mks
22.05.2008, 16:35
begin
if FromClient then Case ord(pck[1]) of
$01: begin
buf:=pck;
WriteD(1);
pck:=buf;
end;
$2F: begin
buf:=pck;
WriteC(0,6);
pck:=buf;
end;
$81: pck:='';
end;
end.

а так слабо?)

ChiterEPT
23.05.2008, 21:31
ord(pck[1])

Мкс, а что за ord можно подробнее пожалуйста. И в чем выигрывает этот вариант у варианта

Case pck[1] of

#$01:begin
end;

Добавлено через 1 минуту
WriteC(0,6);

А вот за это спасибо :) не знал что так можно :)

Byrger
29.05.2008, 21:10
Попогите плиз изменить предпоследний байт пакета
40 00 00 00 3D 00 00 00 10 10 38 A2 B2 05

на байт B3
пробовал
buf:=pck;
WriteC(B3,13);
SendToServer;
pck:='';
exit;

он ругается чёт, типа ему нужна скобко около B3

APXAHGEJI
29.05.2008, 22:29
Попробуй
pck[13]=#$B3;
Причем вобщемто дальнейшее присвоение buf:= pck; и отправка не обязательны, так как он пройдет по скрипту и далее отправится не сервер.

QaK
30.05.2008, 10:35
он ругается чёт, типа ему нужна скобко около B3нужно ставить число в десятичной системе.

NLObP
30.05.2008, 20:09
нужно ставить число в десятичной системе.

Или дополнительно указать систему счисления. Для Hex - #$B3 Decimal - 179