运行时脚本
阅读
2023-01-25更新
最新编辑:深淵の鴿子
阅读:
更新日期:2023-01-25
最新编辑:深淵の鴿子
运行时脚本
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是否为玩家的徒弟 |
|