• 400-123-4567

    工作时间

    周一至周五:9:00-21:00

    周末及节日:9:00-18:00

  • 手机版二维码

    随时手机查素材

  • 扫描二维码

    加入官方微信群

网络广告 风险自担
趣游论坛 管理员
  • 未知地域
  • 活跃会员

  • 灌水之王

  • 突出贡献

  • 优秀版主

  • 荣誉管理

  • 论坛元老

  • 10573发帖数
  • 10565主题数
  • 0关注数
  • 2粉丝

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

  [复制链接]
趣游论坛 发表于 2019-5-5 10:52:02 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
20190505103954.png

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

客户端输入命令后,将触发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处理的内容较多,因此如果一个函数里面处理的内容过多,则考虑将相关内容写到一个新的单元中。如示范版中将客户端命令集处理放到一个“客户端命令集”脚本中


回复

使用道具 举报

精彩评论2

太执着 发表于 2024-8-25 15:17:30 | 显示全部楼层
路过,瞅一瞅
回复 支持 反对

使用道具 举报

太执着 发表于 2024-8-28 07:57:32 | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

猜你喜欢
客服电话
1300000000

24x7小时免费咨询

  • 官方在线客服

    QQ客服:小西

    点击交谈

    QQ客服:良子

    点击交谈

    QQ客服:闵月

    点击交谈
  • 上海市虹口区海伦中心A座

  • 手机扫码查看手机版

    手机查找资源更方便

  • 扫一扫关注官方微信

    加入官方微信群

Powered by Discuz!X3.5 ©2022-2023 Comsenz Inc.河月网络设计( 赣ICP备2022008660号-4 )赣公网安备36050202000600号|网站地图