ManagerNPC
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 此引擎仅供测试,切勿用于商业用途。如有侵权请立即联系我们,我们将在第一时间删除。