奇迹Mu分析 - NPC相关操作

来源:互联网 发布:我国网络发展现状 编辑:程序博客网 时间:2024/06/11 21:07

下面的功能都是NPC相关的,一如既往的封包实现:

一、打开银行

procedure TGameFunMgr.OpenBank(Id:Word);type  _Buffer = Packed record    _C1:Byte;    //C1    Len:Byte;    cmd:byte;    //30    funcid:word; //58cd  end;var  Buffer:_Buffer;begin  Buffer._C1:=$C1;  Buffer.Len:= 5;  Buffer.cmd:=$30;  Buffer.funcid:=Id;  pNtGameSend(Buffer,Buffer.Len,1,0);end;

二、关闭银行

procedure TGameFunMgr.CloseBank(PassClose:BOOL = True);type  _Buffer = Packed record    _C1:Byte;    //C1    Len:Byte;    cmd:byte;    //82  end;var  Buffer:_Buffer;begin  Buffer._C1:=$c1;  Buffer.Len:=3;  Buffer.cmd:=$82;  MyClose:=PassClose;  pNtGameSend(Buffer,Buffer.Len,0,0);end;

三、打开买卖NPC(关于远程买卖的说明,如果NPC被打开过,既可以远程买卖,即进入游戏后操作过1次买卖NPC就可以进行远程买卖)

procedure TGameFunMgr.OpenSellNpc;type  _Buffer = Packed record    _C1:Byte;    //C1    Len:Byte;    cmd:byte;    //30    funcid:word; //50cd  end;var  Buffer:_Buffer;begin  Buffer._C1:=$C1;  Buffer.Len:= 5;  Buffer.cmd:=$30;  Buffer.funcid:=$50CD;  pNtGameSend(Buffer,Buffer.Len,1,0);end;
四、关闭买卖NPC

procedure TGameFunMgr.CloseSellNpc;type  _Buffer = Packed record    _C1:Byte;    //C1    Len:Byte;    cmd:byte;    //82  end;var  Buffer:_Buffer;begin  Buffer._C1:=$c1;  Buffer.Len:=3;  Buffer.cmd:=$31;  pNtGameSend(Buffer,Buffer.Len,0,0);end;

五、保存/取出物品

procedure TGameFunMgr.InOutItem(Flag: Integer);type  _Buffer = Packed record    _C1:Byte;         //C1    Len:Byte;         //19    cmd:Byte;         //24    BagId:Byte;       //背包ID    NowPos:Byte;      //当前位置    Range:Cardinal;   //    Empty:Byte;       //0    ItemId:Word;      //物品ID    def2:Integer;     //FFFFFFFE    def3:Byte;        //FF    TarBagId:Byte;    //目标背包ID    TarPos:Byte;      //目标位置  end;var  Buffer:_Buffer;begin  if Flag = 0 then    begin      CopyMemory(@Buffer,@c_save_item,SizeOf(_Buffer));    end  else    begin      CopyMemory(@Buffer,@c_load_item,SizeOf(_Buffer));    end;  MyEncode(@Buffer,SizeOf(_Buffer));  pItemMove(Buffer.BagId,Buffer.Len - 3);  pNtGameSend(Buffer,Buffer.Len,1,0);end;
六、接任务(任务支持远程交接,包括跨级交接任务)

procedure TGameFunMgr.GetTask(TaskId: Cardinal);type  _Buffer = Packed record    _C1:Byte;    //C1    Len:Byte;    cmd:byte;    //F6    flag:Byte;   //0B 接任务    TaskId:Cardinal;    Def:Byte;    //1  end;var  Buffer:_Buffer;begin  Buffer._C1 :=$C1;  Buffer.cmd:= $F6;  Buffer.flag:=$B;  Buffer.TaskId:=TaskId;//$4CEF381B;  Buffer.Def:=1;  Buffer.Len := 9;  MyEncode(@Buffer,SizeOf(_Buffer));  pGetTask(Buffer.flag,SizeOf(_Buffer) - 3);  pNtGameSend(Buffer,Buffer.Len,0,0);end;

七、交任务

procedure TGameFunMgr.PostTask(TaskId: Cardinal);type  _Buffer = Packed record    _C1:Byte;    //C1    Len:Byte;    cmd:byte;    //F6    flag:Byte;   //0D 交    TaskId:Cardinal;  end;var  Buffer:_Buffer;begin  Buffer._C1 :=$C1;  Buffer.cmd:= $F6;  Buffer.flag:=$D;  Buffer.TaskId:=TaskId;  Buffer.Len := 8;  MyEncode(@Buffer,SizeOf(_Buffer));  pGetTask(Buffer.flag,SizeOf(_Buffer) - 3);  pNtGameSend(Buffer,Buffer.Len,0,0);end;



0 0
原创粉丝点击