全站-加入QQ频道-第一版.png
全站-加入QQ频道-第一版.png
近期平台发版更新修复了一些问题,如果还有问题请反馈给站长
(遇到相关问题请携带截图私信给站长残天

全站通知:

运行时脚本

阅读

    

2023-01-25更新

    

最新编辑:深淵の鴿子

阅读:

  

更新日期:2023-01-25

  

最新编辑:深淵の鴿子

来自觅长生WIKI_BWIKI_哔哩哔哩
跳到导航 跳到搜索
页面贡献者 :
深淵の鴿子

运行时脚本

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 ShowOptionSayOption调用后返回的数值
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是否为玩家的徒弟