Тема: L2PacketHack 3.5.x
Показать сообщение отдельно
Старый 03.05.2009, 05:08   #760
Местный
 
Аватар для Yegor
 
Регистрация: 05.04.2009
Сообщений: 1,436
Сказал Спасибо: 306
Имеет 122 спасибок в 98 сообщенях
Yegor пока неопределено
По умолчанию

В предыдущих версиях быда опция: "Пропускать логин - программа начинает работать после соединения с Game-Сервером". Кто подскажет для чего это? Из кода ниже тоже непонятно что оно делает .

delphi Код:
//пропускать логин?     //если (пропускать логин и мы не в игре)     if isPassLogin and (not IsGamel) then     begin       //отсылаем данные, сначала длину, а потом сам пакет       send(CSockl,PacketB, 2, 0);       repeat       until send(CSockl, PacketB, recv(SSockl, PacketB, $FFFF, 0), 0)<=0;     end     else     begin//иначе (пропускать логин и мы в игре)       //прием пакетов       repeat         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;         //sendMSG('size: '+IntToStr(Packet.Size));       until False;     end;

Такое ощушение что изначально должна была быть возможность залогиниваться с помошью PH, но это так и не было реализовано.

Добавлено через 1 час 28 минут
И ещё просветите зачем функция:
delphi Код:
function GetSocketData(Socket: TSocket; var Data; const Size: Word): Boolean; var   Position: Word;   Len: Integer;   DataB: array[0..$5000] of Byte absolute Data; begin   Result:=False;   Position:=0;   while Position<Size do begin     Len:=recv(Socket,DataB[Position],1,0);     if Len<=0 then Exit;     Inc(Position, Len);   end;   Result:=True; end;

Я как понял она с помошью "recv" считывает нужное количество байт с сокета по 1 байту. Почему так сделали? Что случится если попытаться сразу считать необходимое кол-во байт одним махом.

зы: прошу прощения за обилие вопросов, приспичило разобраться с программой.

Последний раз редактировалось Yegor, 03.05.2009 в 05:10. Причина: Добавлено сообщение
Yegor вне форума   Ответить с цитированием