```
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: Int64;Const Value: Int64);
//行会初始化
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: int64);
//当脚本引擎启动时 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);
//用于支持httpget功能,结果触发函数,当成功或者失败会调用此函数。(异步模式 同步会导致引擎主线程逻辑卡)
{
参数说明
Ident : 请求标志 自定义数据
URL:远程服务器URL
Response : 服务器返回的数据(失败 为 空字符串,但是服务器如果返回的就是空串那要根据 ErrorStr来判定成功与否)
ErrorStr : 成功为空字符串 失败为失败的错误描述信息。可以根据是否为空串判定是否成功
}
procedure OnAsyncHttpGetResult(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: Int64;Const Value: Int64);
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: int64);
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;
procedure OnAsyncHttpGetResult(Npc: TNormNpc; const Ident:String ; const URL:String; const Response:string ; const ErrorStr:String);
Begin
End;
End.
```
- 更新日志
- 2021年更新日志
- 2020年更新日志
- 2019年更新日志
- 2017年更新日志
- 2016年更新日志
- 2015年更新日志
- 2014年更新日志
- 2013年更新日志
- 游戏对象
- GameLib
- TActor
- TActorList
- TAddedAbility
- TAddLevelItem
- TAddPointItem
- TArgs
- TAttatckMode
- TDBEngine
- TEnvirnoment
- TFunctionFlag
- TGuild
- TItemState
- TItemWhere
- TMissionItem
- TMissionLinkItem
- TMissions
- TNormNpc
- TPlayMonster
- TPlayMonsterNPC
- TPlayObject
- TStdItem
- TStoreItemList
- TToptenz
- TUserCastle
- TUserItem
- TUserMagic
- TVarValue
- Tbuff
- TBuffCategory
- TBuffAbilityType
- TBuffStatusType
- TBuffIntervalType
- 固定NPC
- AINpc
- ExternalNPC
- MagicNpc
- ManagerNPC
- MapEventNPC
- MissionsNpc
- QFunctionNPC
- RobotManagerNPC
- TimeManagerNPC
- 自定义功能
- 自定义客户端UI
- Buffer效果自定义设计
- UI管理界面预览
- 如何实现物品放入或取下时的函数触发
- 自定义窗口
- 自定义界面中编辑框参数发送方式
- 自定义客户端装备提示效果
- 自定义特效
- 自定义装备提示样式
- Buff系统说明
- 自定义技能编辑器
- 技能扩展自定义
- 自定义技能初识
- 被动技能属性定义
- 技能模式定义
- 客户端效果定义
- 主动技能动作定义
- 新自定义技能编辑器
- 初始编辑器
- 自定义编辑器使用说明
- 如何实现自定义怪物
- 脚本实例
- NPC对话编辑
- 宝宝叛变的启动和停止
- 创建脚本单元
- 创建一个藏匿于地图上的攻击事件
- 地图传送
- 获取服务器名称
- 获取玩家任务信息
- 检测是否为沙城成员
- 角色称号、头顶花翎、头顶特效设置
- 判断PK值
- 判断队伍信息
- 判断角色对面是一个什么对象
- 判断角色金币、元宝及礼金等数量
- 判断角色所在的地图信息
- 判断角色性别
- 判断角色职业
- 判断两个角色之间的距离
- 判断是否为队长
- 判断是否为行会掌门
- 判断是否为沙巴克城主
- 判断有某一物品的数量
- 判断转生等级及等级
- 让目标移动到指定的坐标
- 让玩家回城
- 如何播放一个声音文件
- 如何操作Check状态检查
- 如何操作数据库
- 如何查看玩家IP来源
- 如何查看装备是否可被穿戴或取下
- 如何查找一个行会
- 如何充值角色的属性点
- 如何初始化全局变量
- 如何穿戴或取下一件装备
- 如何创建一个副本地图
- 如何创建一个行会
- 如何打开一个宝箱
- 如何打开指定的URL
- 如何弹出对话框让玩家选择执行
- 如何读写个人变量、行会变量及全局变量
- 如何读写文本文件
- 如何发送各种文字信息
- 如何访问其他角色
- 如何复活
- 如何给客户端发送一个标题栏闪动
- 如何给玩家发放物品
- 如何更新自定义窗口上的内容
- 如何关闭进度条
- 如何关闭一个打开的自定义窗口
- 如何过滤字符串中的文字
- 如何获得地图上全部玩家的信息
- 如何获得地图上指定范围内的怪物数量
- 如何获取丢在地上物品对象
- 如何获取角色当前使用的称号
- 如何获取角色负重
- 如何获取角色在线时长
- 如何获取排行榜信息
- 如何获取人物当前获得的称号信息
- 如何获取坐标上指定范围内的全部怪物
- 如何加入或离开队伍
- 如何加入一个指定的行会
- 如何加载和保存自定义的配置文件(INI文件读写
- 如何监控攻击模式的更改
- 如何监控玩家扔物品
- 如何检查目标是否处于某种状态
- 如何将NPC设置为当前玩家的雕像
- 如何将地图上的角色全部随机传送到另外一个地图上
- 如何将指定玩家传送到身边
- 如何将装备显示在NPC对话框上
- 如何脚本封速
- 如何脚本刷怪
- 如何脚本增加和删除一个NPC
- 如何脚本增加和删除一个怪物NPC
- 如何禁止玩家聊天
- 如何开启及停止自动增加经验值
- 如何克隆玩家为人形怪
- 如何判断当前等级的经验值上限
- 如何判断队伍中是否为不同职业的角色
- 如何判断角色是否为新人
- 如何判断玩家曾经是否接过某任务
- 如何清除地图上的怪物
- 如何请求一个URL
- 如何取得地图上的怪物数量
- 如何取得行会全部称号及全部成员信息
- 如何取得全部在线用户信息
- 如何取得玩当前机器的机器码
- 如何取得物品的数据库单价和销售价格
- 如何取得邮件的数量信息
- 如何取得自定义界面里面玩家放入的物品信息
- 如何让打开客户端的背包、商城及市场
- 如何让他人执行指定的脚本
- 如何删除或修改行会称号
- 如何删除玩家的物品
- 如何删除一个称号
- 如何删除一个副本地图
- 如何删除一个扩展按钮
- 如何删除一个延时调用函数
- 如何设置当前称号
- 如何设置角色死亡不爆出
- 如何实现充值平台对接
- 如何实现骰子
- 如何实现无敌隐身
- 如何实现物品属性转移(物品复制)
- 如何实现一个带参数的输入框
- 如何实现一个机器人
- 如何实现自定义装备爆出提示
- 如何使用JSON对象
- 如何使用角色S、P及N变量
- 如何使用静态数组和动态数组
- 如何使用升级加属性点
- 如何收取城堡金币
- 如何随机刷新物品属性
- 如何踢出在线人物
- 如何添加一个称号
- 如何调整角色的HP、MP值
- 如何调整角色声望值
- 如何调整人物攻击模式
- 如何调整人物转生等级
- 如何调整限时杀怪经验倍率
- 如何调整装备属性上限
- 如何完全控制他人
- 如何显示一个进度条
- 如何修改怪物名称
- 如何修改行会帮主
- 如何修改人物技能属性
- 如何修改一个物品的属性
- 如何延时调用一个函数
- 如何以爆物的方式将一个怪物的爆率给玩家
- 如何用脚本存取物品
- 如何在地图上爆出一个指定的物品
- 如何在行会指定的称号里面添加成员
- 如何在脚本中引用外部DLL
- 如何在客户端显示一个特效
- 如何增加和移除一个个人时钟事件
- 如何增加或减少角色经验值
- 如何增加一个地图连接点
- 如何增加一个行会的称号
- 如何增加一个扩展按钮
- 如何召唤下属
- 如何指定删除角色身上的装备
- 如何重新计算排行榜
- 如何转职
- 如何自动增加或减少元宝
- 如何做一个感叹号提示
- 实现自定义的客户端命令集
- 推开指定的目标
- 修改怪物的爆率为一个指定的爆率文件
- 循环自身全部技能
- 如何设置装备掉落触发脚本处理
- 如何设置装备掉落提示
- 给玩家添加一个未接任务
- 给玩家添加一个已接任务
- 补丁规则
- NPC补丁设置
- Prguse.data文件编辑的注意事项
- 引擎补丁规则
- 地图补丁规则
- 盾牌补丁
- 怪物补丁设置
- 头发补丁设置
- 武器及衣服补丁设置方法
- 坐骑补丁设置
- 操作相关
- 数据库设置
- 版本数据库管理
- 锄头设置方法
- 攻速及幸运设置
- 技能特殊设置
- 扩展数据管理
- 魔法数据设置要点
- 人形怪穿戴及技能设置
- 人形怪攻击速度设置
- 人形怪数据库设置
- 如何配置宝箱及钥匙
- 如何设置解包物品
- 如何设置一个固定位置的传送道具
- 设计采集类怪物
- 设置自定义物品种类名称
- 数据库报错问题
- 特殊物品属性设置说明
- 添加宝石物品
- 添加可穿戴宝石、气血石及魔血石物品
- 物品数据库设置说明
- 游戏数据库的导入导出
- 服务端操作
- [M2]开启物品属性下限功能
- 摆摊相关
- 备份与恢复
- 防外挂设置
- 服务端部署
- 合区
- 角色成长属性调整
- 配置排行榜系统
- 如何查看M2Server所在机器的机器码
- 如何实现多机负载
- 网关防攻击配置
- 游戏网关性能设置
- 任务系统
- 脚本混编说明
- Call命令说明
- 参数Args的读取
- 存在的意义
- 让他人执行脚本
- 如何定义常量
- 如何读写变量
- 如何实现混编
- 特殊标志段说明
- 特殊的CHECK和SET
- 调整杀怪倍率
- 支持编译时错误提示
- 地图配置
- 地图NPC配置
- 地图安全区编辑
- 地图创建及属性说明
- 地图杀怪任务触发
- 地图事件编辑
- 地图刷怪配置
- 地图挖矿设置
- 附属地图配置
- 关联到盛大新格式地图
- 检查地图文件使用情况
- 卫士配置
- 登陆器操作
- 登陆器自我更新
- 登录器界面组件介绍
- 登录器设计界面初识
- 管理登陆器列表
- 将登陆器列表部署到服务器
- 客户端控制
- 客户端样式选择
- 列表设计界面初识
- 如何创建登陆器皮肤
- 如何生成登陆器文件
- 玩家登陆器选项
- 微端控制
- 版本管理器
- NPC对话内容编辑
- 版本文件二次注册使用方法
- 查看程序是否更新
- 创建新的版本文件
- 单个脚本加密方法
- 额外数据库信息配置
- 给版本设置一个唯一ID
- 怪物爆率配置
- 将版本运行所需的配置文件植入版本文件中
- 角色登陆提示信息
- 脚本分类说明
- 脚本机器人配置
- 配置宝箱
- 配置怪物说话
- 如何开启技能自动追踪目标的功能
- 如何实现登陆器图标及客户端Logo的替换
- 如何下载最新版本
- 商城(元宝、礼金)管理
- 商贩贩卖物品配置
- 设置版本工具环境变量
- 套装配置
- 添加一个盾牌物品
- 系统提示信息配置
- 一键导入其他引擎的版本
- 远程管理
- 资源数据管理
- 如何添加一个任务模板中的任务
- 其他辅助说明
- [重要]脚本编写注意项
- 256颜色值
- IP库
- Mir200_Envir下的列表文件详解
- 各种时间控制方法
- 怪物DB数据
- 怪物Race设置
- 键盘码对应数值表
- 脚本系统与系统安全说明
- Pascal基础说明
- Pascal变量类型
- Pascal数据类型
- 基础函数及单元
- 客户端标签变量
- 疑问/建议/反馈/留言
- 在线教程
- 引擎下载