找回密码
 立即注册

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

[复制链接]
◇逍遥◆MIR2◇ 发表于 2022-9-19 09:53:33 | 显示全部楼层 |阅读模式
实现自定义的客户端命令集

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

guojunhai 发表于 2022-9-19 10:09:39 | 显示全部楼层
感恩无私的分享与奉献 :)
回复

使用道具 举报

fantasybb000 发表于 2022-9-21 06:51:18 | 显示全部楼层
真是被感动的痛哭流涕……
回复

使用道具 举报

zwp707 发表于 2022-9-21 17:03:25 | 显示全部楼层
无回帖,不论坛,这才是人道。
回复

使用道具 举报

lxb1101 发表于 2022-9-22 10:40:20 | 显示全部楼层
真是难得给力的帖子啊。
回复

使用道具 举报

imissa 发表于 2022-9-24 20:46:35 | 显示全部楼层
我只是路过打酱油的。
回复

使用道具 举报

byscp 发表于 2022-9-25 20:14:37 | 显示全部楼层
真是被感动的痛哭流涕……
回复

使用道具 举报

kuhuhgiu 发表于 2022-9-26 16:33:04 | 显示全部楼层
看到这帖子真是高兴!
回复

使用道具 举报

aiwang123w 发表于 2022-9-28 18:30:18 | 显示全部楼层
强烈支持楼主ing……
回复

使用道具 举报

hacksee 发表于 2022-10-1 06:40:28 | 显示全部楼层
看到这帖子真是高兴!
回复

使用道具 举报

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

本版积分规则

Archiver|手机版|小黑屋|游戏淘宝湾

GMT+8, 2024-11-23 16:22 , Processed in 0.079440 second(s), 53 queries .

Powered by Discuz! X3.5

Copyright © 2001-2024, Oddpp Cloud.

快速回复 返回顶部 返回列表