📄 gamepacket.pas
字号:
unit GamePacket;
interface
uses
Windows, Sysutils, Classes, Winsock2;
procedure MyRecvData(buf: Pchar; len: integer);
procedure MySendData(buf: Pchar; len: integer);
procedure GamePacketSend(buf: Pchar; len: integer);
procedure GamePacketRecv(buf: Pchar; len: integer);
procedure SendMsg(source: Pchar; size: integer );
var
GameSocket : Tsocket = 0;
implementation
uses DataManage, DllForm, GameCode, hook;
procedure MyRecvData(buf: Pchar; len: integer);
var
i, onelen : integer;
PacketH : Pchar;
begin
i := 0;
onelen := 0;
PacketH := buf;
while i < len do
begin
if buf[i] = '(' then
begin
onelen := 1;
PacketH := @buf[i];
end;
if buf[i] = ')' then
begin
GamePacketRecv(PacketH, onelen);
end;
inc(onelen);
inc(i);
end;
end;
procedure MySendData(buf: Pchar; len: integer);
var
i,onelen : integer;
PacketH : Pchar;
begin
i := 0;
onelen := 0;
PacketH := buf;
while i < len do
begin
if buf[i] = '(' then
begin
onelen := 1;
PacketH := @buf[i] ;
end;
if buf[i] = ')' then
begin
GamePacketSend(PacketH, onelen);
end;
inc(onelen);
inc(i);
end;
end;
procedure GamePacketSend(buf: pchar; len: integer);
//var
// OutChar, RecvBuf : array [0..4096] of char ;
begin
//CopyMemory(@RecvBuf[0], Buf, len);
//Decode(@RecvBuf[1], len-1, OutChar);
end;
procedure GamePacketRecv(buf: pchar; len: integer);
var
OutChar, RecvBuf : array [0..4096] of char ;
begin
CopyMemory(@RecvBuf[0], Buf, len);
Decode(@recvbuf[1], len-1, outchar);
case ord(OutChar[10]) of
$05 : begin //人物状态(年龄/元气/内.外.武.功.元气)
MyAttribute(OutChar);
end;
$06 : begin //往物品栏增加或减少物品
GainGoods(OutChar);
end;
$1C : begin //地图出现物品
if Dllform1.CheckBoxCollectGoods.checked then
begin
CollectGoods(OutChar); //拾取
end;
ShowDropGoods(OutChar); //显示掉落物品
end;
$1E : begin //地图物品消失
DropGoodsDisappear(OutChar);
end;
end;
end;
procedure SendMsg(source: Pchar; size: integer); //加密并调用发送封包
var
len : integer;
OutChar, SendBuf : array [0..1000] of char;
begin
len := Encode(source, size, @OutChar[1]);
CopyMemory(@sendbuf[0], @OutChar[0], len + 1);
SendBuf[0] := '(';
SendBuf[len + 1] := ')';
if GameSocket <> 0 then
mysend(GameSocket, sendbuf, len + 2, 0);
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -