PDA

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


Desmo
03.04.2011, 16:26
Нужен скрипт для корректировки пакета WareHouseDepositList.
Вот что скрипт должен делать:
удалять два байта ItemType1 и добавлять 4 байта между блоками ObjectID и ItemID и так для каждого итэма находящегося в инвентаре, не имею ни малейшего представления как это должно выглядеть в скрипте.

supernewbie
03.04.2011, 16:44
если в пх есть функии Delete и Insert то легко, хотя можно и без них но это уже явно неочевидное решение будет)

Nickers
05.04.2011, 15:36
Desmo, Примерно представляю, но скажи лучше зачеем? И объясни поподробнее весь механизм, а то это бредом попахивает... Или я чего-то не догнал.

Desmo
05.04.2011, 22:50
Nickers, вот пример:
пакет 1
41 01 00 1B 87 31 01 00 00 00 00 01 00 04 00 34 FE B1 10 39 00 00 00 1B 87 31 01 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 34 FE B1 10 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00

пакет 2
41 01 00 1B 87 31 01 00 00 00 00 01 00 34 FE B1 10 39 00 00 00 00 00 00 00 1B 87 31 01 00 00 00 00 04 00 00 00 00 00 00 00 00 00 00 00 00 00 34 FE B1 10 00 00 00 00 00 00 00 00 FF FF 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
суть подгонки, удаляю два байта ItemType1(в 1ом пакете выделено красным) и впихиваю 4 байта между блоками ObjectID и ItemID(во 2ом пакете выделено красным), для примера использован один итем в иннвентаре.
Для чего это делать? для того чтоб в волкере отображалось то что лежит в инвентаре а не чёрт знает что

supernewbie
06.04.2011, 16:31
циклом бегаешь по пакету и удаляешь Delete'том, вставляешь Insert'ом

Nickers
06.04.2011, 19:51
Desmo, У кого-то уже были такие проблемы? оО Я чет не вгоняю у вас такая супер шифрация или это версии не сходятся?
И че, когда удаляешь все норм определяется? И как ты дошел, до такого чудесного алгоритма?

Desmo
06.04.2011, 20:11
Никакой супершифрации нет, вот он дал ответ на твой вопрос =>J-Fobos: Надо уточнить что имеется ввиду волкер от vpnbot, потому что такой кучи проблем у оригинального волкера не наблюдается (там они есть конечно, но не в таком количестве).
В set.ini ООГ волкера прописывается версия протокола, по которой бот должен был бы работать. Все бы хорошо, но vpnbot не обращает никакого внимания на этот параметр и работает в режиме 253 протокола (я так понял он получает этот параметр с серверов верификации). Ну а формат пакетов 253 протокола отличается от других протоколов, приходится переделывать кучу пакетов.

Добавлено через 1 минуту
supernewbie, а нельзя ли по конкретней о цикле, или пример какой нибудь

червь
06.04.2011, 23:50
Delete(string, 3, 4); удаляет 4 символа начиная 3
Insert('00', string, 3); вставляет 00 перед 3 символом

Nickers
07.04.2011, 14:09
червь, Единственный не поленился залезть в учебник))

Breadfan
07.04.2011, 16:32
кактотак:var
WhType,Adena,ListSize,Obj,obj2,ID,Count,IT2,CT1,BP ,EL,CT2,ObjID2,AID,AID2,AET,AEP,DAF,DAW,DAWd,DAE,D AH,DAU,Mana,Time0,i,j:integer;
procedure Init; //Вызывается при включении скрипта
begin
end;
procedure Free; //Вызывается при выключении скрипта
begin
end;
begin
if fromserver and (pck[1]=#$41) then begin
WhType:=ReadH(2);Adena:=ReadQ(4);ListSize:=ReadH(1 8);
buf:=#$41;WriteH(WhType);Writeq(Adena);WriteH(List Size);
j:=20;
for i:=1 to ListSize do begin
ReadH(j); //пропустили ненужное
Obj:=Readd(j); ID:=Readd(j); Count:=Readq(j); IT2:=Readh(j);
CT1:=Readh(j); BP:=Readd(j); EL:=Readh(j); ReadH(j); CT2:=Readh(j);
ObjID2:=ReadD(j); AID:=ReadD(j); AID2:=ReadD(j); AET:=ReadH(j);
AEP:=ReadH(j); DAF:=ReadH(j); DAW:=ReadH(j); DAWd:=ReadH(j);
DAE:=ReadH(j); DAH:=ReadH(j); DAU:=ReadH(j); Mana:=ReadD(j);Time0:=ReadD(j);
WriteD(obj);WriteD(0);WriteD(id);Writeq(count);Wri teH(it2);WriteH(ct1);WriteD(bp);
writeH(el);Writeh(0);Writeh(ct2);Writed(obj2);Writ eD(aid);Writed(aid2);
WriteH(aet);WriteH(aep);Writeh(daf);Writeh(daw);wr iteh(dawd);writeh(dae);
writeh(dah);writeh(dau);writed(mana);writed(time0) ;
end;
pck:=buf;
end;
end. - на коленке писал.

Desmo
08.04.2011, 01:43
почему ПХ ругаетьса на эту строчьку:
WhType:=ReadH(2);Adena:=ReadQ(4);ListSize:=ReadH(1 8);
вот что пишет: Ошибка Undeclared identifier:"WhType"

Дописал объявление переменных./Breadfan

Добавлено через 5 часов 23 минуты
Breadfan Большое спасибо за оказанную помощь