⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gamepacket.pas

📁 千年2的脱机源代码
💻 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 + -