ManagerNPC
91M2说明书 > 引擎脚本功能 > 系统固定NPC >

Unit ManagerNpc; 

Interface
Uses Classes, SysUtils, DateUtils, DefiniensConst, ExtendFuns; 

//玩家数据初始化完成触发,此时不可向角色发送消息(只初始化一次,离线挂机后重新上线不执行初始化) 
Procedure Playeroninitialization(Npc: TNormNpc; Player: TPlayObject); 
//玩家登陆触发 
Procedure Playeronlogin(Npc: TNormNpc; Player: TPlayObject; OnlineAddExp: Boolean); 
//人物小退 OnlineAddExp:是否离线挂机 
Procedure Playerreconnection(Npc: TNormNpc; Player: TPlayObject; OnlineAddExp: Boolean); 
//人物退出 
Procedure Playeroffline(Npc: TNormNpc; Player: TPlayObject; OnlineAddExp: Boolean); 
//玩家提示信息处理 
Procedure Linenoticemessage(Npc: TNormNpc; Player: TPlayObject; Var Message: String); 
//玩家输入命令 
Procedure Processcommand(Npc: TNormNpc; Player: TPlayObject; Const Command: String; Args: TArgs; Var Handled: Boolean); 
//打开会员功能 
Procedure Openmember(Npc: TNormNpc; Player: TPlayObject); 
//玩家打开帮助时内容 
Procedure Playerhelp(Npc: TNormNpc; Player: TPlayObject); 
//玩家点击热点后触发 
Procedure Playerhot(Npc: TNormNpc; Player: TPlayObject); 
//玩家点击商城在线充值时执行 
Procedure Playerpayhome(Npc: TNormNpc; Player: TPlayObject); 
//怪物复活时触发: Envir地图环境,Actor怪物信息,Tag为怪物标志 
Procedure Monitorrevival(Npc: TNormNpc; Envir: TEnvirnoment; Actor: TActor; Const Tag: Integer); 
//怪物死亡触发: Envir地图环境,Actor怪物信息,Killer击杀者,Tag为怪物标志 
Procedure Monitordie(Npc: TNormNpc; Envir: TEnvirnoment; Actor, Killer: TActor; Const Tag: Integer); 
//怪物杀人触发: Envir地图环境,Actor怪物信息,Player被杀的玩家,Tag为怪物标志 
Procedure Monitorkill(Npc: TNormNpc; Envir: TEnvirnoment; Actor: TActor; Player: TPlayObject; Const Tag: Integer); 
//怪物收到伤害触发: Actor怪物信息, ADamageSource造成目标掉血的对象,Tag为怪物标志,Value为掉血数量 该事件不区分物理攻击和魔法攻击 
Procedure Monitordamage(Npc: TNormNpc; Actor, ADamageSource: TActor; Const Tag, Value: Integer); 
//行会初始化 
Procedure Guildinitialize(Npc: TNormNpc; Guild: TGuild); 
//发现玩家游戏速度异常 
Procedure Playerspeedexception(Player:TPlayObject;Var Kick:Boolean); 
{ 
参数意义说明: 
State : 状态码 。0:改名成功, -1:新的名字已经存在无法改名。-2,-3 DBServer异常(可能是数据库链接断开或者被关闭)。 -4:新的角色名字非法。 
PlayObject :要改名的玩家对象 到此处可能有可能为nil 
OldName : 原名字 
Newname :新名字 
名字的额外说明: 
脚本内使用玩家名字按原先的设置 Player.Name 写即可 
系统会自动判定 Newname 为空则显示OldName 不为空则直接显示新名 
OldName 为建人物的时候定死的 仅能修改 Newname 且该名字在服务器内不存在同名 
OldName和Newname 这两个仅在写脚本界面给玩家看到的时候调用即可 
}
//改名成功。需要注意的是这个时候传递进来的PlayObject 可能为nil 。 
Procedure Onplayerrenamesucess (State: Integer;PlayObject: TPlayObject; Const OldName, Newname: String); 
//改名失败。需要注意的是这个时候传递进来的PlayObject 可能为nil 。 
Procedure Onplayerrenamefail (State: Integer;PlayObject: TPlayObject; Const OldName, Newname: String); 
//此触发函数 为 procedure MonitorDamage 的增强版本 会优先于 MonitorDamage执行。
Procedure MonitorDamageEx(Npc: TNormNpc; Actor, ADamageSource: TActor; Const Tag,MagicID,Level:Integer; Var Damage: Integer);
//当脚本引擎启动时 isReload 表示是否重载脚本
procedure OnScriptEngineInit(isReload:Boolean);
//当脚本引擎销毁时 isReload 表示是否重载脚本
procedure OnScriptEngineFinal(isReload:Boolean); 
//自定义UI中脚本按钮触发函数, Flag参数 为 脚本按钮中 设置的 的标志字段
procedure OnScriptButton(Npc:TNormNpc;Player : TPlayObject ;const Flag:String);
//用于支持http提交json功能,结果触发函数,当成功或者失败会调用此函数。(异步模式 同步会导致引擎主线程逻辑卡)
{参数说明
Ident : 请求标志 自定义数据
URL:远程服务器URL
Response : 服务器返回的数据(失败 为 空字符串,但是服务器如果返回的就是空串那要根据 ErrorStr来判定成功与否)
ErrorStr : 成功为空字符串 失败为失败的错误描述信息。可以根据是否为空串判定是否成功 
}
procedure OnAsyncHttpPostResult(Npc: TNormNpc; Const Ident:String ; Const URL:String; Const Response:String ; Const ErrorStr:String); 




Implementation

 
Procedure Playeroninitialization(Npc: TNormNpc; Player: TPlayObject); 
Begin 

End; 

Procedure Playeronlogin(Npc: TNormNpc; Player: TPlayObject; OnlineAddExp: Boolean); 
Begin

End; 

Procedure Playerreconnection(Npc: TNormNpc; Player: TPlayObject; OnlineAddExp: Boolean); 
Begin

End; 

Procedure Playeroffline(Npc: TNormNpc; Player: TPlayObject; OnlineAddExp: Boolean); 
Begin

End; 

Procedure Linenoticemessage(Npc: TNormNpc; Player: TPlayObject; Var Message: String); 
Begin

End; 

Procedure Processcommand(Npc: TNormNpc; Player: TPlayObject; Const Command: String; Args: TArgs; Var Handled: Boolean); 
Begin

End; 

Procedure Openmember(Npc: TNormNpc; Player: TPlayObject); 
Begin

End; 

Procedure Playerhelp(Npc: TNormNpc; Player: TPlayObject); 
Begin

End; 

Procedure Playerhot(Npc: TNormNpc; Player: TPlayObject); 
Begin

End; 

Procedure Playerpayhome(Npc: TNormNpc; Player: TPlayObject); 
Begin

End; 

Procedure Monitorrevival(Npc: TNormNpc; Envir: TEnvirnoment; Actor: TActor; Const Tag: Integer); 
Begin

End; 

Procedure Monitordie(Npc: TNormNpc; Envir: TEnvirnoment; Actor, Killer: TActor; Const Tag: Integer); 
Begin

End; 

Procedure Monitorkill(Npc: TNormNpc; Envir: TEnvirnoment; Actor: TActor; Player: TPlayObject; Const Tag: Integer); 
Begin

End; 

Procedure Monitordamage(Npc: TNormNpc; Actor, ADamageSource: TActor; Const Tag, Value: Integer); 
Begin

End; 

Procedure Guildinitialize(Npc: TNormNpc; Guild: TGuild); 
Begin 

End; 

Procedure Playerspeedexception(Player:TPlayObject;Var Kick:Boolean); 
Begin
Kick := False; 
Player.Sendmessage('请不要开外挂,系统已经发现你速度异常了'); 
End; 

Procedure Onplayerrenamesucess (State: Integer;PlayObject: TPlayObject; Const OldName, Newname: String); 
Begin

End;

Procedure Onplayerrenamefail (State: Integer;PlayObject: TPlayObject; Const OldName, Newname: String);
Begin

End;

//此触发函数 为 procedure MonitorDamage 的增强版本 会优先于 MonitorDamage执行。
Procedure MonitorDamageEx(Npc: TNormNpc; Actor, ADamageSource: TActor; Const Tag,MagicID,Level:Integer; Var Damage: Integer);
Begin
//增加了技能ID 和技能等级 以及 伤害可以在脚本内修改的功能。
//参数说明:
//NPC :指向QManagerNPC 的对象。
//Actor : 受攻击者.
//ADamageSource: 攻击者,
//Tag:标志值
//MagicID:魔法ID,
//Level:魔法等级
//Damage:伤害值(修改此值即可改变本次伤害的数值 , 小<= 0 表示此次攻击无效,>= 0 则表示正常伤害。) 
 
End;

procedure OnScriptEngineInit(isReload:Boolean);
begin
 if isReload then
 begin
 Debug('OnScriptEngineInit 重载');
 end else begin
 Debug('OnScriptEngineInit 启动');
 end; 

end;

procedure OnScriptEngineFinal(isReload:Boolean);
begin
 if isReload then
 begin
 Debug('OnScriptEngineFinal 重载');
 end else begin
 Debug('OnScriptEngineInit 关闭');
 end;

procedure OnScriptButton(Npc:TNormNpc;Player : TPlayObject ;const Flag:String);
begin
 Player.SendMessage('你点击了脚本按钮, 按钮标志:' + Flag);
end;

procedure OnAsyncHttpPostResult(Npc: TNormNpc; Const Ident:String ; Const URL:String; Const Response:String ; Const ErrorStr:String); 
begin

end; 

End. 


引擎官网:www.91M2.com   交流群:5555999   此引擎仅供测试,切勿用于商业用途。如有侵权请立即联系我们,我们将在第一时间删除。