当前位置 : 745v传奇网 | 传奇教程 | 

77M2传奇引擎如何让他人执行指定的脚本讲解和命令范例

来源: 作者: 点击:
如何让他人执行指定的脚本
unitQ2;

inte**ce
usesClassesSysUtilsDateUtils;

procedureMain(Npc:TNormNpc;Player:TPlayObject;Args:TArgs);
procedureSayHello(Npc:TNormNpc;Player:TPlayObject;Args:TArgs);

implementation

procedureMain(Npc:TNormNpc;Player:TPlayObject;Args:TArgs);
var
APlayer:TPlayObject;
begin
Npc.Say(Player'Hello!!!');//对当前玩家Player说话
APlayer:=GameLib.FindPlayer('张三');//在M2中找出一个名叫“张三”的人
ifAPlayer<>nilthen//如果"张三"在线
begin
//方法1(推荐):
SayHello(NpcAPlayernil);//直接调用函数执行最后一个参数如果传递为nil,则在对应的函数处理要避免访问或者需要保护处理

//方法2:
APlayer.CallMethod(Npc'@Q2.SayHello');//最终效果和方法1相同这里多了一个回传到M2中的步骤在调用SayHello函数时存在Args对象

//两者使用的区别在于,方法1简单直接且更高效但是需要自行处理Args参数如果直接传递当前的Args参数则可能是不对的因为当前Args参数
//针对的是当前函数调用者而在让其他玩家触发函数的时候可能当前的Args参数并不合适同时方法1调用方式如果函数名改变的时候在编译期
//是能被发现的;方法2则是将字符串“@Q2.SayHello”回传给M2解析出对应的SayHello函数及参数,然后再调用SayHello这种方式会自动产生
//Args参数但是当SayHello更名的时候如果不主动修改方法2这里的参数将会造成玩家不会执行对应的函数调用所以使用方法2就必须自己同步
//维护相关参数
end;
end;

procedureSayHello(Npc:TNormNpc;Player:TPlayObject;Args:TArgs);
begin
Npc.Say(Player'Hello!!!');
end;
[顶部]