Исходники версии 3.1.8 написаны в среде Borland Developer Studio 2006 с использованием следующих дополнительных библиотек компонентов:
- FastScript (http://fast-report.com/ru/products/fast-script.html)
- JCL (http://sourceforge.net/projects/jcl/)
- JVCL (http://sourceforge.net/projects/jvcl/)
Да я уж откомпилил теперь разбираюсь самой прогой
Вот допустим не пойму что такое
Код:
GetSocketData(SSockl,Packet,2); //я так понимаю считываются 2 первых байта
if Thread[id].IsGame then begin //Если уже в игре
Thread[id].AutoPing:=True; // устанавливаем автопинг (зачем хз :) )
end;
IsGamel:=Thread[id].IsGame;
Thread[id].NoUsed:=False; //Резервируем поток? а где это проверяется?
if L2PacketHackMain.CheckBox2.Checked and (not IsGamel) then begin //если не игровые можно пропустить
send(CSockl,PacketB,2,0); // это что? в пакет копируем первые 2 байта?
repeat until send(CSockl,PacketB,recv(SSockl,PacketB,$FFFF,0),0)<=0; //скачиваем весь пакет?
end else repeat
//иначе скачиваем пакет без 2х байт откуда берется Size? Или я не догоняю
if not GetSocketData(SSockl,Packet.DataB,Packet.Size-2) then Break;
// тут понятно в обработчик пакетов отправляем пакет и идентификатор типа пакета - в/из игровой/логин
if IsGamel then PacketProcesor(PacketB,CSockl,id,4)
else PacketProcesor(PacketB,CSockl,id,2);
if not GetSocketData(SSockl,Packet,2) then Break; // а это что?
until False; //тоже строчечка %)
Вкратце, дело происходит примерно так:
1 - считываем два байта, это как раз длина следующих за ними данных, т.е. длина пакета - 2
GetSocketData(SSockl,Packet,2);
2 - считываем сам пакет
if not GetSocketData(SSockl,Packet.DataB,Packet.Size-2) then Break;
3- отсылаем в обработчик пакетов
if IsGamel then PacketProcesor(PacketB,CSockl,id,4)
else PacketProcesor(PacketB,CSockl,id,2);