PDA

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


slokky
03.07.2011, 19:57
Прошу помощи по написанию скрипта в этом я полный 0.
скрипт очень просной (я думаю).
нужно чтобы когда программа l2phx видела вот такой вот пакет "32 57 F1 7D 79 06 00 00 00 25 00 " сразуже отправляла на сервер вот такой "A1 57 5E 8F 00 00 00 01 00 01 00 7D 79 06 00 01 00 00 00 00 00 00 00 "
а в кратце мне нужно чтобы он выдерал id шмотки из пакета 32 "7D 79 06 00 " запихивал его в пакет А1 и отправлял на сервер.
Возможно ли его написать?

Deffol
03.07.2011, 21:57
блин ну считать можно вот так:

var
IDpck:integer;

begin
if fromclient and (pck[1]=#$32) then
IDpck:=ReadD(4);

а вот как вставить я не знаю)

Добавлено через 16 минут
вот так попробуй:

var
IDpck:integer;

begin
if fromclient and (pck[1]=#$32) then
IDpck:=ReadD(4);
begin
buf:=hstr('A1 57 5E 8F 00 00 00 01 00 01 00');
WriteD(IDpck);
buf:=buf+Hstr('01 00 00 00 00 00 00 00');
sendtoserver;
end;
end.


Добавлено через 1 минуту
я правда не уверен, но я пока не могу ниче придумать, писал в блокноте :) ничего от делфи нету

Добавлено через 28 минут
ну че, помогло? :)
а то я проверить сам не могу даже правилен ли синтаксис

Добавлено через 5 минут
slokky, блин ты куда пропал, давай пиши помогло или нет, а то меня щас за флуд забанят, мне жэ интересно ё моё :D

slokky
03.07.2011, 22:24
щас проверю. да кстати все авкеты от клиента! я как понял ты от сервера if поставил.

Deffol
03.07.2011, 22:25
ты посмотри как ты написал, так я и сделал, первый пакет от куда?

slokky
03.07.2011, 22:30
да кстати ты поставил фиксированый пакет "32 57 F1 7D 79 06 00 00 00 25 00" я имел ввиду каждый раз приходит новый пакет 32 с разными 4 парами. вот эти 4 пары "7D 79 06 00" каждый раз новые нужны для формированя пакета А1 понял?

Deffol
03.07.2011, 22:30
ну измени FromCient это не сложно)) я просто не заметил

slokky
03.07.2011, 22:31
извиняюсь еще раз и повторяю все и все пакеты от клиента! это покупка и продажа!

Deffol
03.07.2011, 22:33
блин, ну ты бы написал нормально сначала! исправил я

Добавлено через 30 секунд
ты меня запутал, они синие или красные? :D

slokky
03.07.2011, 22:43
друг мой все пакеты красные.

Deffol
03.07.2011, 22:45
в моем 2м посте, там я исправил, там итак красные

slokky
03.07.2011, 22:51
запустил скрипт он не посылает пакет А1 хз

Deffol
03.07.2011, 22:57
блин :) ну жди програмистов. я просто хотел помочь, я не вставлял еще рид ниразу

slokky
03.07.2011, 23:04
вот опишу еще подробнее.
клиент посылает пакет ----->32 57 F1 C4 A5 06 00 00 00 03 00 ----->скрипт вынимает id шмотки и вставляет ее в пакет А1----->A1 57 5E F3 00 00 00 01 00 01 00 C4 A5 06 00 01 00 00 00 00 00 00 00 ----> отсылает этот пакет на сервер.
пакет 32 постоянно меняется поэтом мне нужен скрипт который постояно будет подгонять правильный пакет А1. более понятно описать не могу.

Deffol
04.07.2011, 03:42
да мне это понятно...я не помню команду правильно как рид вставлять
там pck[номер байта куда вставлять]:=WriteD помоему, я не работал с таким, могу только предполагать, поищи на сайте, тут должно быть где-то

Diverclaim
04.07.2011, 05:05
begin
if FromClient and (ReadC(1) = $32) then
begin
buf := HStr('57 5E F3 00 00 00 01 00 01 00');
WriteD(ReadD(4));
buf := buf + HStr('01 00 00 00 00 00 00 00');
SendToServer;
end;
end.

Deffol
05.07.2011, 07:48
о ы, я не безнадежен :) мыслил в правильном направлении...

J-Fobos
06.07.2011, 10:44
Еще вариант реализации, мне кажется более оптимальный:

begin
if FromClient and (pck[1] = #$00) then
begin
buf:=#$A1#$57#$5E#$F3#$00#$00#$00#$01#$00#$01#$00# $C4#$A5#$06#$00#$01#$00#$00#$00#$00#$00#$00#$00;
WriteD(ReadD(4),12);
SendToServerEx(name);
end;
end.

4 байта из пакета pck будут вставлены в пакет buf.

Deffol
12.07.2011, 03:33
а как это? (pck[1]=$00) - что значит это :) я знаю если #$ то ловит именно первый байт обозначенный, а у тебя $ и нули

//J-Fobos: опечатался, исправил, спасибо