运行时脚本
1 介绍
在剧情指令与触发器中,由于许多地方需要使用逻辑判断,因此 Next 引入了一个 C#动态解析库来进行逻辑判断。
编写脚本指令时,可以把脚本指令看作类似于
var result = xxxx;
xxxx 即是脚本指令。
例如,在触发器判断中,condition 需要返回值为 bool 的指令,则可以写出如下脚本指令
roleBindID==609
通过判断目标 Npc 的绑定 ID 是否为 609 来决定是否触发。
而在剧情指令 SetChar 中,需要返回值为 int 的指令,则可以直接使用
roleID
来返回当前交谈 NPC 的 ID
此外,Lua 中也可以直接调用运行时脚本,请参考Lua 脚本
2 脚本环境
脚本在运行时会有一个默认的环境对象,脚本可以直接调用环境里的字段与方法。
当前环境定义的字段与方法如下:
2.1 字段
字段名 | 类型 | 说明 | |
---|---|---|---|
roleID | int | 环境角色的实时 ID | |
roleBindID | int | 环境角色绑定的 ID 参考 Base 里的 AvatarJsonData.json 文件 | |
roleName | string | 环境角色名称 | |
bindNpc | UINPCData | 用于查询的角色数据 请自行参考游戏里的 UINpcData 类 | |
player | Avatar | 请自行参考游戏里的KBEngine.Avatar 类 | 用于查询的角色数据 |
qiyuID | int | 环境奇遇的 ID | |
qiyuOption | int | 环境奇遇中已选择的选项 | |
itemID | int | 使用物品的 ID | |
optionID | int | ShowOption 或SayOption 调用后返回的数值 | |
input | string | 使用 Input 输入的文字 | |
tmpArgs | Dictionary<string, int> | 临时参数字典,使用GetArg 获取值 | |
flowchart | Flowchart | 当前环境内的 flowchart,在由 Fungus 补丁创建的命令调用后自动赋值 | |
mapScene | string | 加载场景时的场景名,在进入场景触发器中自动赋值 |
2.2 方法
方法定义 | 说明 |
---|---|
int Random(int minInclude, int maxExclude) | minInclude : 最小值(包含) maxExclude : 最大值(不包含) 从最小值到最大值之间取一个随机值 |
int GetArg(string argKey) | 根据参数名获取临时参数(一般由指令进行赋值),未找的则返回 0。 |
bool IsTriggerOn(string triggerId) | triggerId : 触发器 ID 根据触发器 Id 获取触发器是否开启 |
int GetTriggerCount(string triggerId) | triggerId : 触发器 ID 获取触发器触发的次数 |
string GetCurScene() | 获取当前场景 ID 可参考 SceneNameJsonData.json 寻找对应名称 |
string GetCurMapRoad() | 获取当前道路 ID,仅当场景为 AllMapScene 时有效 可参考 AllMapLuDainType.json 寻找对应道路名称 |
string GetSceneName(string sceneID) | 根据场景 ID 获取场景名称 可参考 SceneNameJsonData.json |
string GetRoadName(string roadId) | 根据道路 ID 获取道路名称 可参考 AllMapLuDainType.json |
int GetInt(string key) | key : 键 从 id 为 key 的键中取出整形值。 实际储存位置储存于角色数据的 AvatarChengJiuData |
string GetStr(string key) | key : 键 从 id 为 key 的键中取出字符串值。 实际储存位置储存于角色数据的 AvatarChengJiuData |
bool GetBoolSetting(string key) | key : 设置 key 从 id 为 key 的 bool布尔 类型设置中获取当前的设置值 |
int GetIntSetting(string key) | key : 设置 key 从 id 为 key 的 long长整形 类型设置中获取当前的设置值,并转换为int 类型 |
long GetLongSetting(string key) | key : 设置 key 从 id 为 key 的 long长整形 类型设置中获取当前的设置值 |
float GetFloatSetting(string key) | key : 设置 key 从 id 为 key 的 double双浮点 类型设置中获取当前的设置值,并转换为float 类型 |
double GetDoubleSetting(string key) | key : 设置 key 从 id 为 key 的 double双浮点 类型设置中获取当前的设置值 |
string GetStringSetting(string key) | key : 设置 key 从 id 为 key 的 string字符串 类型设置中获取当前的设置值 |
int GetLuaInt(string luaFile,string luaFunc) | luaFile : Lua 文件 luaFunc : Lua 函数 运行 luaFile 的 luaFunc 函数,返回 Int 值。具体用法参考Lua 脚本 |
string GetLuaStr(string luaFile,string luaFunc) | luaFile : Lua 文件 luaFunc : Lua 函数 运行 luaFile 的 luaFunc 函数,返回 Str 值。具体用法参考Lua 脚本 |
string GetCall(string man,string woman) | man : 对男性称呼 woman : 对女性称呼 根据主角性别返回称呼 |
DateTime GetDateTime(int year, int month = 1, int day = 1) | year : 年 month : 月 day : 日 获取 DateTime 格式的时间数据,参考 C# 的 System.DateTime 对 DateTime 可以进行减法、大小比较等,DateTime 相减会返回 C# 的System.TimeSpan |
DateTime GetNowTime() | 获取 DateTime 格式的游戏当前时间数据,参考 C# 的 System.DateTime |
bool Before(int year, int month = 12, int day = 31) | 参数含义同 GetDateTime 判断是否在某个日期之前 |
bool After(int year, int month = 1, int day = 1) | 参数含义同 GetDateTime 判断是否在某个日期之后 |
ulong GetMoney() | 获取主角灵石数量 Tips:与 ulong 比较,需要输入值为 ulong,如灵石小于 100 的判断为:[&GetMoney()<100ul&] |
int GetHp() | 获取主角血量 |
int GetHpMax() | 获取主角血量上限 |
int GetBaseHpMax() | 获取主角基础血量上限 |
int GetMentality() | 获取主角心境 |
int GetDrugsPoison() | 获取主角丹毒 |
int GetComprehensionPoint() | 获取主角道点 |
int GetComprehensionExp(,int typeID) | typeID : 道类型 ID 获取主角悟道经验值 |
int GetCongenitalBuffCount(int buffID) | buffID : BuffID 获取指定 ID 的先天 buff 数量 |
int GetItemNum(,int itemID) | itemID : 物品 ID 获取主角身上物品的数量 |
int GetSex() | 获取主角性别 1 男;2 女 |
int GetInspiration() | 获取主角灵感 |
int GetInspirationMax() | 获取主角灵感上限 |
int GetAge() | 获取主角年龄 |
int GetLife() | 获取主角寿命 |
int GetTalent() | 获取主角资质 |
int GetBaseSpirit() | 获取主角基础神识 |
int GetSpirit() | 获取主角神识 |
int GetAbility() | 获取主角悟性 |
int GetBaseMoveSpeed() | 获取主角基础遁速 |
int GetMoveSpeed() | 获取主角遁速 |
int GetLevel() | 获取主角等级 1~3 炼气前中后期; 4~6 筑基前中后期; 7~9 金丹前中后期; 10~12 元婴前中后期; 13~15 化神前中后期 |
int GetLevelType() | 获取主角阶段 1 炼气;2 筑基;3 金丹;4 元婴;5 化神 |
bool HasSkill(int skillID) | skillID : 神通 ID 获取主角是否学习对应神通 |
bool HasStaticSkill(int skillID) | skillID : 功法 ID 获取主角是否学习对应功法 |
bool HasTrainSkill(int skillID) | skillID : 双修秘术 ID 获取主角是否学习对应双修秘术 |
int GetNpcFav(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取与 Npc 的好感度 |
int GetNpcSex(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取 Npc 的性别 1 男;2 女 |
int GetNpcAge(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取 Npc 的年龄 单位是月 |
int GetNpcLife(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取 Npc 的寿元 |
int GetNpcSprite(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取 Npc 的神识 |
int GetNpcLevel(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取 Npc 的等级,含义同 GetLevel |
int GetNpcLevelType(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取 Npc 的等级阶段,含义同 GetLevelType |
int IsNpcDeath(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id 获取 Npc 是否死亡 |
int IsCouple(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id Npc 是否为玩家的道侣 |
int IsTeacher(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id Npc 是否为玩家的师傅 |
int IsBrother(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id Npc 是否与玩家结义 |
int IsStudent(int npcId) | npcId : npc 的 id,可以使用绑定 id,会转换为实时 id Npc 是否为玩家的徒弟 |