Что если реализовать для удобства подобные функции:
delphi Код:
unit L2Packets;
interface
type
RL2CharSelected = record
name,title:string;
charID,sessionID,clanID,sex,race,classID,x,y,z,sp,level,karma,int,str,con,men,dex,wit:longword;
currentHP,currentMP: Double;
end;
function GetL2CharSelected(const pck: string;var l2Obj: RL2CharSelected): boolean;
implementation
uses phxPlugins;
function GetL2CharSelected(const pck: string;var l2Obj: RL2CharSelected): boolean;
var
i: integer;
begin
Result:= false;
if pck[1] <> #$0B then exit;
i:= 2;
l2Obj.name:= ReadS(pck, i);
l2Obj.charID:= ReadD(pck, i);
l2Obj.title:= ReadS(pck, i);
l2Obj.sessionID:= ReadD(pck, i);
l2Obj.clanID:= ReadD(pck, i);
inc(i, 4);
l2Obj.sex:= ReadD(pck, i);
l2Obj.race:= ReadD(pck, i);
l2Obj.classID:= ReadD(pck, i);
inc(i, 4);
l2Obj.x:= ReadD(pck, i);
l2Obj.y:= ReadD(pck, i);
l2Obj.z:= ReadD(pck, i);
l2Obj.currentHP:= ReadF(pck, i);
l2Obj.currentMP:= ReadF(pck, i);
l2Obj.sp:= ReadD(pck, i);
inc(i, 8);
l2Obj.level:= ReadD(pck, i);
l2Obj.karma:= ReadD(pck, i);
inc(i, 4);
l2Obj.int:= ReadD(pck, i);
l2Obj.str:= ReadD(pck, i);
l2Obj.con:= ReadD(pck, i);
l2Obj.men:= ReadD(pck, i);
l2Obj.dex:= ReadD(pck, i);
l2Obj.wit:= ReadD(pck, i);
Result:= true;
end;
end.
зы: в функциях ReadS и.т.д. поправил что бы был инкремент передаваемого индекса на количество считанных байт.