运行时脚本
阅读
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是否为玩家的徒弟 | 
| 
 | ||||||||||||||||||||||||||||||||
 
                

 沪公网安备 31011002002714 号
                    沪公网安备 31011002002714 号