iinlvcwtlp 发表于 2025-3-5 18:59:37

91M2引擎传奇版本中实现自定义的客户端命令集

实现自定义的客户端命令集

客户端输入命令后,将触发ManagerNPC中的ProcessCommand函数,ProcessCommand函数定义为:

procedure ProcessCommand(Npc: TNormNpc; Player: TPlayObject; const Command: String; Args: TArgs; var Handled: Boolean);
NPC指向ManagerNPC对象,Player为当前输入命令的玩家,Command为命令名,Args为参数,Handled表示是否处理

以千里传音功能为例:
procedure ProcessCommand(Npc: TNormNpc; Player: TPlayObject; const Command: String; Args: TArgs; var Handled: Boolean);
begin
    if Command = '千里传音' then //如果玩家输入的是 @千里传音 这个字符串
    begin
      if (Player.Charm<>nil) and SameText(Player.Charm.Name, '千里传音') then //如果玩家的宝石位装备有物品并且这个物品的名字叫“千里传音”
      begin
            Gamelib.BroadcastSay(Message, 0, 0);   //世界喊话
            //减掉物品1次使用次数
            Player.Charm.Dura := Player.Charm.Dura - 1000; //将宝石位物品的持久减1000点(客户端显示持久减少1点)
            Player.UpdateItem(Player.Charm); //发送消息到客户端,让客户端实时的更新宝石位物品
      end;
      Handled := True; //表示此次操作完成,M2引擎将不继续处理此命令,如果不设置为True,M2可能会继续处理该命令
    end;

    if Player.ISAdmin then
    begin
      //如果玩家是管理员身份,则处理这里实现的命令部分
    end
end;


注:因ManagerNPC、QFunctionNPC及MapEventNPC等系统特殊NPC处理的内容较多,因此如果一个函数里面处理的内容过多,则考虑将相关内容写到一个新的单元中。如示范版中将客户端命令集处理放到一个“客户端命令集”脚本中

终极吾辈 发表于 2025-3-5 19:14:15

楼主发贴辛苦了,谢谢楼主分享!

金币合击 发表于 2025-3-5 22:36:51

感谢站长分享传奇教程,让我学习到很多知识。

76合击 发表于 2025-3-6 08:17:07

这个帖子不回对不起自己!

宠物乱斗 发表于 2025-3-6 22:11:40

在这里可以学到很多传奇一条龙开区时遇到的问题。

迷失沉默 发表于 2025-3-7 13:45:44

很多架设问题在这里可以找到,真是太好啦。

鸿蒙神器 发表于 2025-3-7 14:17:21

比较全的传奇教程分享网站,站长辛苦了。

玩命道盾英雄 发表于 2025-3-7 15:49:58

这个帖子不回对不起自己!

逆天渡凡尘 发表于 2025-3-7 16:44:57

很多架设问题在这里可以找到,真是太好啦。

彼岸沉默 发表于 2025-3-8 00:09:39

楼主发贴辛苦了,谢谢楼主分享!
页: [1] 2 3 4
查看完整版本: 91M2引擎传奇版本中实现自定义的客户端命令集