Показать сообщение отдельно
Старый 06.10.2007, 00:34   #2
Admin!
 
Аватар для xkor
 
Регистрация: 04.08.2007
Сообщений: 2,360
Сказал Спасибо: 113
Имеет 1,566 спасибок в 651 сообщенях
xkor на пути к лучшему
По умолчанию

прошу:
Код:
procedure AddChecksum(var data:array of char; position: Word);
var
  i:Word;
begin
  for i := 0 to (position div 4)-1 do
    PCardinal(@data[position])^:=PCardinal(@data[position])^ xor PCardinal(@data[i*4])^;
end;
используем так:
Код:
pck:=HexToString('26 00 02 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00');
AddChecksum(pck[3],Length(pck)-8-2);
тут pck это полный пакет от клиента логин серваре дешифрованный отправляемый в качестве запроса на вход на игровой сервер а Length(pck)-8-2 это позиция чексуммы относительно ID пакета (тоесть pck[3])
в результате примера в pck будет - 26 00 02 00 00 00 00 00 00 00 00 01 00 00 00 00 00 00 02 01 00 00 00 00 00 00

Добавлено спустя 5 часов 50 минут 33 секунды:
кстати то что ты представила как С++ код скорее всего не с++ а ява так как на яве нельзя манипулировать с памятью как хочется, а на С++ и этот код был бы намного короче)
__________________
Я здесь практически не появляюсь!, Skype - ikskor
xkor вне форума   Ответить с цитированием