跳到主要内容

运行时脚本

1 介绍

在剧情指令与触发器中,由于许多地方需要使用逻辑判断,因此 Next 引入了一个 C#动态解析库来进行逻辑判断。

编写脚本指令时,可以把脚本指令看作类似于

var result = xxxx;

xxxx 即是脚本指令。

例如,在触发器判断中,condition 需要返回值为 bool 的指令,则可以写出如下脚本指令

roleBindID==609

通过判断目标 Npc 的绑定 ID 是否为 609 来决定是否触发。

而在剧情指令 SetChar 中,需要返回值为 int 的指令,则可以直接使用

roleID

来返回当前交谈 NPC 的 ID

此外,Lua 中也可以直接调用运行时脚本,请参考Lua 脚本

2 脚本环境

脚本在运行时会有一个默认的环境对象,脚本可以直接调用环境里的字段与方法。

当前环境定义的字段与方法如下:

2.1 字段

字段名类型说明
roleIDint环境角色的实时 ID
roleBindIDint环境角色绑定的 ID
参考 Base 里的 AvatarJsonData.json 文件
roleNamestring环境角色名称
bindNpcUINPCData用于查询的角色数据
请自行参考游戏里的UINpcData
playerAvatar请自行参考游戏里的KBEngine.Avatar用于查询的角色数据
qiyuIDint环境奇遇的 ID
qiyuOptionint环境奇遇中已选择的选项
itemIDint使用物品的 ID
optionIDintShowOptionSayOption调用后返回的数值
inputstring使用 Input 输入的文字
tmpArgsDictionary<string, int>临时参数字典,使用GetArg获取值
flowchartFlowchart当前环境内的 flowchart,在由 Fungus 补丁创建的命令调用后自动赋值
mapScenestring加载场景时的场景名,在进入场景触发器中自动赋值

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 是否为玩家的徒弟