Здравствуйте, товарищи.
Помогите, пожалуйста написать скрипт на покупку вещей в обычном магазине.
я, к сожалению, почти ничего не понимаю в программировании=\
заранее благодарен.
П.С.,
хроники ц4
Код:
begin
buf:=hstr('04 BE 2C 10 48 09 43 01 00 58 44 02 00 74 F2 FF FF 00');
SendToServer;
Delay (100);
buf:=hstr('04 BE 2C 10 48 09 43 01 00 58 44 02 00 74 F2 FF FF 00');
SendToServer;
Delay (100);
buf:=hstr('20 74 00 65 00 73 00 74 00 5F 00 73 00 65 00 72 00 76 00 65 00 72 00 5F 00 68 00 65 00 6C 00 70 00 65 00 72 00 5F 00 67 00 6D 00 6F 00 2E 00 68 00 74 00 6D 00 00 00');
SendToServer;
Delay (100);
buf:=hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 31 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 31 00 32 00 00 00');
SendToServer;
Delay (100);
buf:=hstr('1F 44 78 2D D6 01 00 00 00 B1 19 00 00 01 00 00 00');
SendToServer;
Delay (100);
end.
проблема в том, что после последнего пакета не происходит покупка, а приходит пакет ActionFail, а до этого все работает как должно..
доходит до окна покупки, ну и дальше тот самый пакет экшн фэйл и все.
помогите разобраться=\
как я понял, проблема в том, что ListID в пакете BuyList, приходящем от сервера каждый раз разный, и нужно заменять это значение в последнем пакете RequestBuyItem, отправляемым мной на сервер.
Подскажите пожалуйста, как это сделать.
П.С.С.
я правильно думал, если отправляю пакеты руками, пошагово, то все покупается.
помогите написать замену этого значения,т.е. нужно поймать пакет BuyList, вытащить из него значение ListID, и вставить его в последний отправляемый пакет.
но, к сожалению, ума не приложу как написать это на дэльфи.
Добавлено через 15 часов 43 минуты
Пытался сделать вот так:
Код:
var
ListID:integer;
begin
begin
buf:=hstr('04 BE 2C 10 48 09 43 01 00 58 44 02 00 74 F2 FF FF 00');
SendToServer;
Delay (100);
buf:=hstr('04 BE 2C 10 48 09 43 01 00 58 44 02 00 74 F2 FF FF 00');
SendToServer;
Delay (100);
buf:=hstr('20 74 00 65 00 73 00 74 00 5F 00 73 00 65 00 72 00 76 00 65 00 72 00 5F 00 68 00 65 00 6C 00 70 00 65 00 72 00 5F 00 67 00 6D 00 6F 00 2E 00 68 00 74 00 6D 00 00 00');
SendToServer;
Delay (100);
buf:=hstr('21 6D 00 65 00 6E 00 75 00 5F 00 73 00 65 00 6C 00 65 00 63 00 74 00 3F 00 61 00 73 00 6B 00 3D 00 2D 00 31 00 26 00 72 00 65 00 70 00 6C 00 79 00 3D 00 31 00 32 00 00 00');
SendToServer;
Delay (100);
end;
If (ConnectName='DamageControl') and FromServer and (pck[1] = #$11) then begin
ListID:=ReadD(6);
buf:=hstr('1F' + 'IntToStr(ListID)' + '01 00 00 00 B1 19 00 00 01 00 00 00');
SendToServer;
end;
end.
Но выдает ошибку программы:
Access violation at address 132775B5 in module 'icq.exe'. Read of address 00000001.