特别注意:脚本编辑时注意所有特殊符号必须为半角!!!同时在剧情和所有配置表里也要避免使用带有特殊符号的字符串,以防止和脚本配合使用时发生脚本注入错误!
目前游戏中所有的剧情及事件都是基于剧情事件触发器机制来建立的。触发器的设计原理为,通过在游戏中的各种关键位置预设事件接口,当程序访问这些程序位置时,就会调用这些事件接口并传入当前调用时的环境变量,程序会根据当前的环境变量去遍历该接口事件中定义的所有触发器,并返回其中优先级最高的一个触发器或者所有满足条件的触发器(根据接口的类型不同来决定是返回一个还是所有触发器)来执行对应的剧情事件。触发器调用事件时并不是立即执行的,而是把对应的事件放入剧情事件执行队列中依次执行,直到队列中所有的事件都执行结束。
目前游戏中定义的剧情事件接口列表为(加粗的为全部触发类型,既执行所有满足条件的触发器事件而非优先级最高的一个):
一般用于地图编辑器中的触发器或者使用TRIGGER指令直接执行的触发器
1:赎回2:友善3:宣战4:结盟5:解盟6:停战
游戏事件中执行的脚本指令一般由:指令类型*参数1#参数2#..#参数N这样的格式组成,多行指令由换行符进行分隔。
目前支持的脚本命令条如下:
用途:以角色立绘+文字打印的方式显示一段对话文本
格式:*角色ID(@立绘显示位置)#对话段落1#对话段落2#对话段落3#...#对话段落N
备注:
当对话框某段文字需要绑定语音时,在该段文字之前加上
格式:EVENT*剧情事件ID#跳转至目标事件的子命令行index值(从0开始)
用途:跳转并执行指定的子事件,并可通过SUB_EVENT_RETURN指令跳转回来
格式:SUB_EVENT*剧情事件ID
用途:从当前子事件中返回上一次跳转来的事件位置
格式:SUB_EVENT_RETURN*
用途:结束当前子事件,并且不返回到跳转来的事件
格式:SUB_EVENT_HALT*
用途:根据条件表达式组判断是否执行下面的条件,否则跳到END_IF处
支持多个IF嵌套,但是需要正确添加对应的END_IF
格式:
IF*条件表达式组(参考条件表达式组格式)其他语句END_IF*END_IF条件分支结束用途:用于IF语句的结束判断,当IF条件不满足时,会跳转到匹配的END_IF处继续执行
格式:END_IF*
用途:在角色对话框的基础上,当打印完对话内容后,弹出一个选项框让用户选择并返回结果(对应剧情事件中的结果命令中的[%result_code%])
备注:当选项Key值以"+"开头时表示该选项选中后对话框不会关闭;
用途:可通过触发器表来扩展选项内容的选择框
格式:SELECT_TALK*角色ID#对话内容#[ADDON_SELECT];[固定选项(例如:0:取消)]#筛选标签(以"|"分隔,默认为any)
备注:前2个参数和SELECT相同,第4个参数为触发器type(不填写默认为any),不过会从触发器中选择触发类型为SELECT且满足条件的选项添加到选项中,显示的文字为触发器中的绑定选项,触发事件为触发事件ID对应的事件。
注意:使用时需要在结果中添加一行[%result_code%][>]99:EVENTPOJO_EVENT*在触发器表中触发事件ID支持增加前缀“SUB_EVENT.”来标记该事件为一个子事件。CMD_SELECT系统选择框用途:弹出一个只有确定按钮的文字框
格式:CMD_SELECT*选择提示信息#选项组(同SELECT命令)
用途:弹出一个只有确定按钮的文字框
格式:CONFIRM*确认文字内容
格式:TOAST*弹出信息内容
用途:在屏幕指定UI区域弹出一个有角色头像的对话框,不会打扰当前的操作且不需要进行操作,对话结束后自动消失
用途:在UI中的消息框中显示一段文字消息,并且可以再消息记录中查阅
格式:GAME_MSG*消息内容#消息类型(0:普通1:警告2:系统)
用途:弹出一个文字输入框,并将输入结果保存在可查询变量中([%input_str%])
格式:INPUT*提示文字#Len限制字数#默认文字
用途:全屏显示一个屏幕字幕(默认背景为黑色,可设置背景透明度)
格式:SCREEN*字幕显示文字(支持“\n”表示换行)#字幕配全屏图资源名称(空为不配图)#背景透明度(可选,默认为1)
用途:给屏幕UI层覆盖一层黑色的幕布,仅可在其上显示全屏字幕等UI对象
格式:BLACK_SCREEN*是否开启(0:关闭1:开启)
用途:执行一个屏幕晃动效果
用途:设置并覆盖当前的游戏天气效果
格式:SET_WEATHER*天气效果命令
难度等级每增加1级,兵种初始等级、等级上限、转职需要等级均+5英雄等级上限+5,初始等级+2装备的核心词条(武器默认为攻击力、魔法攻击力,防具默认为防御力、血量,饰品默认为生命恢复、气力恢复)数值增加10%装备的随机词条数值增长10%
格式:ADD_GAME_HARD_LEVEL*增加难度等级
用途:设置角色等级上限扩展,扩展等级上限可使用[%role_level_extend%]查询
角色等级上限=20+初始设定表上限+角色等级上限扩展
格式:SET_ROLE_LEVEL_EXTEND*扩展等级
用途:设置兵种等级上限扩展,扩展等级上限可使用[%card_level_extend%]查询
兵种等级上限=20+兵种等级上限扩展
格式:SET_CARD_LEVEL_EXTEND*扩展等级
用途:设置角色额外初始等级,只在传承指令中生效(游戏开始后角色已经生成)
格式:SET_ROLE_LEVEL_START_EXTEND*额外初始等级
用途:设置兵种额外初始等级,只在传承指令中生效(游戏开始后角色已经生成)
格式:SET_CARD_LEVEL_START_EXTEND*额外初始等级
用途:执行一个定义在特定战斗表或者当前遭遇战的战斗
格式:BATTLE*战斗ID(当不指定战斗ID或为"ENCOUNTER"则开启当前遭遇战)#指定BGM(可选,如存在指定战斗的BGM)#战斗参数(可选,对应特定战斗表中的“限制条件_Limitations”字段,不为空时覆盖该参数)
用途:与指定的单位目标开始一场自定义战斗
格式:BATTLE_WITH*对方角色信息(可选)#对方兵牌信息(可选)#战场地图信息(可选)#战场地点信息(可选)#战场天气(可选)#bgm(可选)#战斗参数(可选,对应特定战斗表中的“限制条件_Limitations”字段)#暂停沙盒演算(0否,1是,默认0)
用途:立即与当前的目标角色开始一场特定战斗
格式:BATTLE_WITH_TAGROLE*战斗ID(战斗ID只是用来触发剧情事件)#指定BGM(可选,如存在指定战斗的BGM)
用途:使用自定义战斗数据开启一场战斗,并进行观战
格式:BATTLE_OBSERVE*A方角色信息#A方兵牌信息#B方角色信息#B方兵牌信息#战场地图信息(可选)#战场地点信息(可选)#战场天气(可选)#bgm(可选)#战斗参数(可选,对应特定战斗表中的“限制条件_Limitations”字段)#暂停沙盒演算(0否,1是,默认0)
用途:根据剧情需要更改当前游戏播放的背景音乐
格式:CHANGE_BGM*参数1#参数2
用途:播放一段游戏音效
用途:播放定义在角色tags中"Voice"项中的语音音频文件
格式:PLAY_ROLE_VOICE*角色ID,该处关联角色tags中“Voice”一栏设定。
用途:开始一场自定义的地城战斗
格式:DUNGEON*地城ID
用途:弹出一个文字输入框,并将输入结果保存在可查询变量中([%result_code%])
格式:NUMSEL*输入框显示文字#最小值#最大值#默认值#单价#单价计算显示信息(当单价为0时不显示单价信息,否则需要按照"每个单位{0}银两,共需{1}银两"这样的格式进行指定)
用途:按照变更值改变主角所持金钱数,可为负数代表减少
格式:CHANGE_MONEY*金钱变更数量
用途:按照变更值改变指定角色所持金钱数,可为负数代表减少
格式:ROLE_CHANGE_MONEY*英雄ID#金钱变更数量
用途:主角直接获得指定的道具列表(注意:游戏中的金钱、经验等资源都可以通过此方法来获得,只要传入正确的映射ID即可)
格式:GETITEMS*道具列表信息(如GETITEMS*商会茶叶,3|面包,1)
用途:与GETITEMS作用相同,但不会出现获得提示。
格式:SILENCE_GETITEMS*道具列表信息(如GETITEMS*商会茶叶,3|面包,1)
用途:为指定角色获取装备道具并立即装备,当目标为队伍中的角色并且该角色无法装备此道具则将其加入背包中。(当不指定目标时默认为主角)
格式:GETEQUIPS*装备道具表(装备ID1|装备ID2|...)#目标角色ID(可选,默认为主角)
用途:同GETEQUIPS,但是会无视装备的装备条件
格式:GETEQUIPS_FORCE*装备道具表(装备ID1|装备ID2|...)#目标角色ID(可选,默认为主角)
用途:同GETITEMS指令,但是生效的主体从主角改为所有调用当前指令的势力实体
格式:AI_CAMP_GETITEMS*道具列表信息
用途:按照比例将现有道具表中的指定道具转换为新的道具
格式:TRANSFER_ITEMS*原道具ID#新道具ID#原数额#新数额#转化次数
例如:TRANSFER_ITEMS*小麦#小麦粉#1#1#10,表示将小麦1:1转化为小麦粉,转化10次。如果任何一次转化过程中原道具数量不足,则停止转换。
用途:在几组道具之中随机选中并获取一组道具
格式:GET_RND_ITEM*对象道具列表(如GET_RND_ITEMS*茶叶,3|面包,1|牛奶,2表示从此3种道具总随机取一种)
用途:根据指定的道具数量从主角道具表中移除指定数量的道具
格式:REMOVE_ITEMS*道具列表
用途:根据ITEMS_SELECTOR指令创建的UI选择道具列表后,从物品栏中移除指定数目的道具
格式:REMOVE_SELECT_ITEMS*最大指定组数(从选中对象中取最前面的指定对象组)#移除数量(可选,默认-1,当小于0或者大于对象堆叠的数量时为移除该组全部,否则对所有选中对象范围移除指定个数)
用途:根据指定的礼物标签移除道具列表中一个礼物道具
格式:REMOVE_PRESENT*礼物筛选描述信息,礼物描述字符串格式参加任务列表中Tag栏中“Like”这个tag的格式
用途:弹出一个道具选择对话框,并将选择结果保存在可查询变量中([%last_seled_items%],[%last_seled_item_id%]等)
格式:ITEMS_SELECTOR*选择框标题#数量限制(小于0为不限制)#筛选条件表达式
用途:按照列表执行一次掉落检定(LOOT格式见物品掉落信息格式)
格式:LOOT*Loot列表
用途:根据均分原则对主角队伍增加一次经验值
格式:TEAM_GAINEXP*获得的经验值(每张卡牌均有等量经验)
用途:对一个指定的角色增加经验值
格式:TEST_ADD_ROLE_EXP*英雄ID#经验
用途:更改一个指定的角色的等级
格式:CHANGE_ROLE_LV*英雄ID#指定等级
用途:直接把一个地点下所有的守军等级提升一级
格式:PLAYER_GUARDS_LEVELUP*地点ID
用途:直接升级主角队伍里所有的英雄
格式:PLAYER_TEAM_LEVELUP*
用途:直接开启或关闭一个触发器
格式:SETTRIGG*触发器ID#状态值(0为开启,1为关闭)
用途:直接执行一个指定的触发器
格式:TRIGGER*触发器ID
用途:按类型触发触发器,并执行对应事件
格式:CHECK_TRIGGER*触发器类型#触发对象类型#触发对象ID#是否触发全部触发器(0否,1是)
备注:用于按照触发器条件去检测所有的触发器,并触发对应的触发器事件。
用途:手动设置一个剧情事件的执行状态(正常的事件执行逻辑执行后会以当前事件的ResultCode标记事件状态结果)
格式:SET_ES*剧情事件ID*状态值(-1未执行过其他为该事件ResultCode)
用途:设置一个整形的自定义变量(会被存档所记录),其中一部分变量字段可对游戏中的一些逻辑参数进行关联(已在程序内部定义并关联的整形自定义变量见《自定义变量参数表》),并可通过内置查询参数进行查询([%int_val:ID%])
格式:SETINTVAR*变量ID#当前int值
用途:通过改变值来根据当前自定义变量的值进行更改
格式:CHANGEINTVAR*变量ID#改变值(正负数皆可)#【可选:forceZero】,填写forceZero后,扣负只会扣到零,不会为负数。
用途:设置一个临时的ID,不会被存档保存,通过特殊方式进行访问
格式:SET_TEMP_ID*ID
用途:设置一个字符串变量(会被存档记录),可通过内置查询参数进行查询([%str_val%])
格式:SETSTRVAR*变量ID#string值
用途:领取指定的任务
格式:GET_QUEST*任务ID
用途:手动增加一个任务子项的计数器
格式:ADD_QS*任务ID#子项index(0开始)#增加数量
用途:设置指定任务子项的值
格式:SETQUESTIEM*任务ID#子项index#设置的值
用途:标记并完成指定的任务
格式:DONE_QUEST*任务ID#是否给奖励(1是)
用途:显示一个预制资源图片(已废弃,推荐使用SHOW_CG指令)
用途:关闭当前的立绘图片框
格式:CLOSE_IMG*预设特效0
用途:强制一个指定角色加入队伍,如果当前队伍已满,会显示处置界面
格式:JOIN_ROLE*人物ID
用途:强制一个指定的角色离开主角队伍
格式:QUIT_ROLE*人物ID
用途:设置一个地点的当前状态
格式:SET_PLACE*地点ID#状态值(0正常1被摧毁-1隐藏)
用途:强制设置一个角色的位置(人物位置信息格式见人物位置信息说明)
格式:SET_ROLEPOS*人物ID#位置信息
用途:将主角队伍传送至指定世界位置
格式:TELEPORT*世界位置信息
用途:将主角队伍传送至指定地点的位置
格式:TELEPORT_TO_PLACE*地点ID
用途:将主角队伍传送至指定角色所在的位置(只有目标角色位于队伍或者地点中时方可生效)
格式:TELEPORT_TO_ROLE*人物ID
用途:用于在沙盒地图上控制各种单位进行指定命令
格式:MAP_CMD*指令内容
用途:用于回复主角队伍所有卡牌的耐久度
格式:RESTORE*参数(<=0:回复队伍所有耐久>0:仅指定点数的耐久)
用途:显示一个围城处置界面,根据预设来操作增援部队(需配合适当的指令触发环境,如:进城触发器)
格式:OPENSEIGE*界面模式(0:攻城1:守城)#目标地点ID(可选,默认为当前环境变量目标地点)
用途:直接根据当前环境执行攻城占领判定(需配合适当的指令触发环境,如:进城触发器)
格式:OCCUPY*0
用途:加入一个已经创建的战团(战团ID一般通过[$tagwb:id$]来取得当前遭遇到的战团信息)
格式:JOIN_WARBAND*战团ID
用途:直接改变一个目标角色的阵营
格式:CHANGE_CAMP*阵营ID#目标角色ID#招募者ID(如果指定此字段为主角则直接进入主角队伍)
用途:创建并激活主角自己的势力。主角自己的势力势力拥有一个默认且固定的势力ID:自建势力,此势力游戏一开始就存在,只是出于非激活状态,调用此指令后主角自建势力将激活并处于可用状态,同时主角及其下属角色都将改变至此势力中
格式:CREATE_OWN_CAMP*自建阵营势力名称
用途:改变势力的活跃状态。当势力处于非活跃状态时,不会进行各种决策或者势力行为
格式:SET_CAMP_ACTIVE*阵营ID#状态值(0不活跃1活跃)
用途:设置阵营的自定义名称,当设置名称为空时,阵营恢复默认名称
格式:SET_CAMP_NAME*阵营ID#阵营名称
NPC叛乱部落的部落ID为:"camp_"+角色ID
用途:改变阵营势力之间的外交关系状态或友好值
格式:SET_CAMP_RL*阵营A#阵营B#关系状态(-1:不改变状态0:中立1:敌对2:友善)#友好度改变值#友好值目标值(如果存在该字段)
用途:为指定的阵营设置阵营倾向
格式:SET_CAMP_WEIGHT*阵营ID#倾向类型#倾向数值(1-100)
可设置的倾向类型:
用途:改变主角与阵营的声望值(贡献值)
格式:CHG_CAMP_REP*目标阵营ID#更改数值#目标值(当不为空时生效),阵营ID为空时表示当前所属阵营
用途:改变主角对地点的声望值(友好值)
格式:CHG_PLACE_REP*地点ID#更改数值#目标值(当不为空时生效)
用途:修改主角当前的全局声望值
格式:FAME*改变值
用途:修改一个指定角色当前的全局声望值
格式:CHANGE_FAME*目标人物ID#更改数值
用途:修改主角与指定游戏角色的友善度
格式:CHG_PERSON_FV*目标人物ID#更改数值#目标值(当不为空时生效)
用途:改变一个非主角角色的活跃状态。当角色处于非活跃状态时,不会自动刷新在在野酒馆里,也不会进行迁移等AI操作
格式:SET_ROLE_ACTIVE*人物ID#状态值(-1不活跃0活跃)
用途:按照百分比改变一个势力下所有据点的繁荣度
格式:CHG_PROSP_BY_CAMP*势力ID#百分比(>-100)
用途:按照固定数值改变一个地点的繁荣度
格式:CHG_PLACE_PROSPERITY*地点ID#更改数值#目标值(当不为空时生效不能超过当地最大值)
用途:按照百分比改变一个地点的繁荣度
格式:CHG_PLACE_PROSPERITY_BY_PCT*地点ID#更改数值百分比(>-100)
用途:按照固定数值改变一个地点的防御度
格式:CHG_PLACE_DEF*地点ID#更改数值#目标值(当不为空时生效不能超过当地最大值)
用途:按照百分比改变一个地点的防御度
格式:CHG_PLACE_DEF_BY_PCT*地点ID#更改百分比
用途:按照固定数值改变一个地点的治安值
格式:CHG_PLACE_SECURITY*地点ID#更改数值#目标值(0-100)
用途:指定地点的指定自定义整形字段值
格式:PLACE_CUSTOM_INT*地点ID#标记ID#整型标记值
用途:改变地点的指定自定义整形字段值
格式:CHG_PLACE_CUSTOM_INT*地点ID#字段KEY#更改数值#目标值
用途:给一个地点增加一个自定义设施
格式:PLACE_ADD_BUILDING*地点ID#设施ID(目标地点已存在该设施则无效)
用途:移除地点的指定自定义设施
格式:PLACE_REMOVE_BUILDING*地点ID#设施ID
用途:指定一个地点创建出一个指定的商队
格式:CREATE_CARAVAN*出发城市ID#到达城市ID#TAG(用来标记的队伍TAG)
用途:创建一个队伍并使其根据指定指令进行行动
格式:CREATE_TEAM*地图位置#所属阵营#人物列表(所有人物会强制离开当前队伍或地点)#卡牌单位列表(卡牌ID#等级,数目|卡牌ID2#等级2,数目2|.......)#指令方式(见说明)#指令参数#队伍TAG标签(用来查找特定的队伍)
目前指令方式支持以下几种:
用途:解散一个指定的队伍
格式:DISMISS_TEAM*地图单位识别ID
用途:更改队伍当前执行的指令列表
格式:TEAM_ORDER*地图单位识别ID#新的队伍指令内容(指令格式见队伍预置指令说明)
用途:指定一个地点开始攻打另外一个地点。发兵地点与目标地点必须分属两个敌对势力且发兵城内有同属于发兵城镇势力的英雄
格式:INVASION_PLACE*发兵地点ID#目标地点ID
用途:发动一个势力马上开始进攻另外一个势力。注意:这两个势力必须是敌对或中立状态的两个势力,当发起方因为兵力不足等原因时可能无法发起进攻
格式:IVASION_CAMP*进攻方势力ID#目标势力ID#选取目标方式(0距离优先1城防优先)#入侵方式(0占领地点1掠夺)#发动据点数量(0:全部发动>0:发动距离最近的有限个据点)#入侵强度(0:保留有限实力1:不顾一切(发动所有资源))
用途:打开与指定商人的交易界面
格式:OPENSTORE*商人ID(如为空则表示根据地点及当前NPC自动查询)
用途:根据配置刷新商人所持的商品表
格式:RESET_STORE*商人ID
用途:向指定地图位置投放特产,投放后附近的商人中会刷新特产
格式:ADD_LOCAL_PRODUCT*特产ID#地图ID#中心坐标X#中心坐标Y
用途:设置一个地点的通商许可
格式:TRADE_PERMISSION*地点ID*是否可以通商(0代表不能通商,1代表可以通商)
用途:打开一个地点的驻军界面
格式:TROOPS_ALLOC*地点ID(如为空则表示当前地点)
用途:给一个角色增加技能
格式:GETSKILL*人物ID#技能列表(单个技能格式为:“技能ID,等级(可选)”,多个技能以”|”分隔)
用途:选择一个队伍中的角色,尝试使其学习一个技能,如果技能点不足,则无法学习
格式:LEARN_SKILL*技能ID#所需技能点(可不填,默认为1)
用途:移除指定角色的技能
格式:REMOVESKILL*人物ID#技能ID
用途:重置角色技能点数
格式:RESET_SP*人物ID
用途:增加一个主角可用的技能点数并进行分配
格式:ADD_UNUSEDSP*点数
用途:直接为指定角色添加技能点
格式:ADD_UNUSEDSP_TO*点数#人物ID(不填默认为主角)
用途:点亮或者移除角色可用的技能页
格式:SET_SKILLPAGE*技能页ID表(以”,”分割)#0移除、1点亮、2静默点亮、3完全移除#目标角色ID(可选,默认为主角)
2静默点亮,不会发出提示信息3完全移除,会移除技能页里所有学习的技能并返还技能点
用途:显示当前遭遇的队伍信息
格式:SHOW_TEAMINFO*1
用途:设置一个完成标记,一般用于重大剧情转折标记
格式:SET_FLAG*标记名称#标记值
用途:更新地图上的标记
格式:UPDATE_MARKS*1
用途:设置地图假人或野怪的状态。当控制野怪时ID为野怪ID
格式:SET_DUMMY*假人ID#状态(0:显示-1:隐藏)
用途:用来控制沙盒地图上镜头的跟随模式。
格式:SET_CAMERA*跟随模式#参数
目前支持的镜头跟随模式及参数含义:0:跟随主角,无参数(默认)1:跟随指定目标,参数为指定地图目标标识ID2:指定地图位置,参数为地图坐标(地图ID:x,y)#镜头移动速度SET_PLACE_CAMP设置地点归属阵营用途:改变一个地点所归属的阵营势力。
格式:SET_PLACE_CAMP*目标地点ID#目标阵营ID#是否以攻城侵略方式占据(1为是,0为否)
用途:改变一个地图板块下所有据点的阵营势力
格式:SET_MAP_CAMP*目标地图ID#from阵营ID#to阵营ID#是否为攻城侵略(1为是,0为否)
用途:尝试进行一次在野英雄招募判定成功返回1、内部错误返回0、队伍已满返回2
格式:TRY_RECRUIT_FREE_ROLE*角色ID
用途:派出一个执行特定外交任务的信使
用途:对当前外交事件进行结果决定。只能用在特定的外交事件触发器环境中
格式:DIP_DECIDE*结果代码(1同意0拒绝)
用途:将一个角色驱逐出阵营势力
格式:EXPEL_ROLE*势力ID#人物ID
用途:尝试奖赏一个属下
格式:TRY_REWARD_ROLE*人物ID(为空时表示当前对象)
用途:为当前队伍增加一个全局BUFF
用途:为当前队伍移除一个全局BUFF
格式:RM_GLOBAL_BUFF*buffID
用途:按照类型为当前队伍移除一个全局BUFF
格式:RM_GLOBAL_BUFF_BYCLASS*全局BUFF类型
用途:为当前队伍移除所有全局BUFF
格式:RM_ALL_GLOBAL_BUFF*1
用途:玩家游戏失败时进行的通用处理
格式:PLAYER_FAILED*1
用途:对玩家进行一次财物损失操作(只损失货物和金钱)
格式:LOSE_INVENTORY*比例(比例为整数,代表百分比)
用途:为当前脚本的环境变量设置默认的操作对象物品
格式:SET_TAGITEM*物品信息(参考物品列表信息格式)
用途:为当前脚本的环境变量设置默认的操作对象角色
格式:SET_TAGROLE*人物ID
用途:为当前脚本的环境变量设置默认的操作对象地点
格式:SET_TAGPLACE*地点ID
用途:为当前脚本的环境变量设置默认的操作对象阵营
格式:SET_TAGCAMP*阵营ID
用途:为当前脚本的环境变量设置默认的操作对象游荡NPC,可配合[$tag_wander_npc:INFO:ID$]指令进行查询
格式:SET_TAG_WANDERNPC*游荡NPCID
用途:刷新游荡NPC的状态,可能会使游荡NPC重新刷新位置。
格式:REFRESH_WANDERNPC*游荡NPCID(为空则默认为环境中的游荡NPC)#操作方式(0,刷新状态1,推进1天2,强制刷新位置)
用途:指定一个势力向另外一个势力投降(所有领地被受降方占领,所有人员根据忠诚度随机选择是否归顺)
格式:SURRENDER*投降方势力ID#受降方势力ID
用途:生成一个随机地点,并可以用[%last_rnd_place_XX%]系列指令查询
格式:GEN_RND_PLACE*所属势力ID(如果所属势力为空,则为玩家势力中的一个地点)
用途:在指定范围内选定一个随机人物角色,并可用[%last_rnd_role_XX%]系列指令查询
格式:GEN_RND_ROLE*所属势力ID(如果所属势力为空,则为玩家势力中的一个地点)
用途:为指定的人物角色永久增加某项角色属性
格式:HERO_UPGRADE*英雄ID#属性ID#增加值#增加上限(必须指定,可以为-1,即没有上限)
用途:为指定的人物角色设置某一项属性字段值
格式:HERO_SET_STATU*角色ID#属性ID#新值(角色ID为空表示主角)
用途:为指定的阵营势力增加一个阵营BUFF
用途:为指定的阵营势力移除一个阵营BUFF
格式:RM_CAMP_BUFF*阵营ID#buffID
用途:按照BUFF类型为指定的阵营势力移除一个阵营BUFF
格式:RM_CAMP_BUFF_BYCLASS*阵营ID#阵营BUFF类型
用途:为指定的阵营势力移除所有的阵营BUFF
格式:RM_ALL_GLOBAL_BUFF*阵营ID
用途:增加阵营势力的某一项动态属性字段
格式:ADD_CAMP_EXTRA_STATU*阵营ID#动态属性字段表(见阵营表EXCEL势力初始属性格式)
用途:重置阵营势力的所有动态属性字段值
格式:RESET_CAMP_EXTRA_STATU*阵营ID
用途:降低当前装备的武器装备的耐久度,当耐久度为0时自动损毁。如果武器本身耐久为-1(没有耐久度概念),则该语句什么也不会发生
格式:WEAPON_DURABILITY_DOWN*数值
用途:降低背包中一把符合tag、等级条件(>=要求等级)的道具耐久度【数值】点,如果符合条件的道具耐久不足,将摧毁这件道具
格式:ITEM_DURABILITY_DOWN*装备tag筛选#装备等级筛选#数值
用途:设置指定合成配方状态
格式:SET_SYNTH_STATE*配方ID#新状态(0:未习得1:已习得)
用途:开启道具合成界面UI
格式:OPEN_SYNTH_DLG*是否锁定(0:不锁定主分类1:锁定显示分类)#默认显示的分类页(可为空默认,以“,”分隔多页,默认显示第一页;当锁定主分类时该字段可显示隐藏的分类)#关闭合成面板后执行的storykey(可不填)
用途:开启卡牌合成界面UI
格式:OPEN_CARD_SYNTH_DLG*1
用途:在当前地图上播放一个特效
用途:在指定地图单位身上播放一个跟随该单位的特效
用途:在当前沙盒地图上开启一个区域选择UI界面,在此界面上可为当前操作的对象在预先定义好的地图区域中选取一个地图位置并返回。result_code返回1标识位置设置成功,为0标识失败。位置信息记录在[$last_selpos$]中。
格式:OPEN_MAPAREA_SELECTOR*区域标识ID#显示的模型#排他模式(0:不排他、1:排除自定义宝箱)#提示信息
用途:效果同上,只不过不再限制可供选择的地图区域。
格式:OPEN_FREEAREA_SELECTOR*宽(整数)#高(整数)##显示的模型#排他模式(0:不排他、1:排除自定义宝箱)#提示信息。
用途:开启一个建议的地点选择界面。选中的结果存在[$tagplace$]里,编号存在[%result_code%]里,如果[%result_code%]为9999则代表玩家取消选择。
格式:PLACE_SELECTOR*提示内容#选择条件(传入[%tagplace%]作为判断参数)
用途:为指定地点设置一个城主。
格式:SET_LORD*角色ID#地点ID
用途:根据设置信息在大地图上增加一个自定义宝箱。(宝箱的概念可扩展为所有大地图上有价值的可交互目标。如:材料、遗迹、征兵点等等)
格式:ADD_CUSTOM_CHEST*宝箱ID#对应的宝箱表中ID#位置信息#初始状态(>0表示可以开的次数,-1表示已经开过了)#默认方向(0-360)
用途:设置一个地图上可控宝箱的状态
格式:SET_CHEST*地图ID#宝箱ID#状态。状态>0表示可开启次数,状态<=0表示已开启
用途:设置当前脚本中的对象宝箱的状态
格式:SET_CURCHEST*状态(同SET_CHEST)
用途:关闭当前打开的系统UI
格式:CLOSE_SYSTEM_UI*
用途:关闭当前打开的背包UI(如果存在的话)
格式:CLOSE_ITEM_PANEL*
用途:打开一个角色选择器,并将选中的角色存储到[%last_seled_roles%]里。如果只有一个结果,则同时存在[%tagrole%]里
格式:ROLES_SELECTOR*选择框标题#选择数量限制(小于0为不限制)#选择范围(0:全局非模板人物1:主角队伍中2:指定人物表范围3:指定势力范围(参数为势力ID)4:指定地点城主候选人(参数为地点ID)5:队伍中的俘虏(参数为队长ID)6:地点中的俘虏(参数为地点ID))#筛选条件表达式#参数(当选择范围为指定人物表时该参数为人物列表信息)
示例:
ROLES_SELECTOR*选择目标阵营中的人物#1#0#[$tagrole:campid$][=][$player:campid$]&[$tagrole:campid$][<>][$null$]#ROLES_SELECTOR*几个目标对象中选择一个#1#2##人物1|人物2|人物3|人物4选取后存在[%last_seled_roles%]里。如果只有一个结果,则同时存在[%tagrole%]里
用途:被打听人现在暂没参与逻辑运算,弹出人物选项框,结果存在[%arg_str_val1%]里,选择结果[%result_code%]为9999的时候是玩家取消
格式:ASK_ABOUT_SOMEBODY_SELECTOR#被打听人ID
用途:弹出当前卡牌列表界面供选择
格式:CARD_SELECTOR*选择框标题#选择数量限制(小于0为不限制)#选择范围(0:主角队伍中的卡牌1:指定单位表范围)#参数(当选择范围为指定单位表时该参数为单位列表信息)#筛选条件表达式(可选)
用途:集结阵营势力下的部队跟随集结者
格式:ASSEMBLE_ARMY#集结者ID#集结角色ID列表(可为空,“|”分割,可以使用ROLES_SELECTOR的结果[%last_seled_roles%]。如果为空,则是默认选定阵营下所有的角色。)
用途:解散所有当前已进行集结中的部队
格式:RELEASE_ALL_ASSEMBLE_ARMY#首领角色ID
用途:使一个角色开始执行指定项目
格式:SET_ROLE_IN_PROJECT*角色ID#项目ID
用途:强制指定的角色结束当前进行的项目
格式:SET_ROLE_FINISH_PROJECT*角色ID1,角色ID2,...
用途:打开角色个人项目执行界面
格式:ROLE_PROJECT_ADMIN*项目ID#绑定地点(可选,默认当前地点)
用途:打开团体项目执行界面
格式:GROUP_PROJECT_ADMIN*项目标签#界面标题#项目绑定类型#项目绑定对象参数(可选,默认为当前对象)
目前支持的项目绑定类型有place:地点建筑建设对象参数为地点ID,如不指定为当前地点world:自定义地点建设对象参数格式为:自选区域控制ID;所属地点(当所属地点为空时表示建设一个非附属地点)SET_REVIVE_POS设置复活集结地点用途:设置新的复活集结地点
格式:SET_REVIVE_POS*大地图位置(地图ID:x,y)
用途:开启或关闭消息静默模式
格式:SET_SILENCE_MODE*静默模式(0:不开启1:不显示TOAST,仅显示消息,获得物品TOAST信息在消息中显示2:不显示TOAST及消息)
用途:在大地图上的指定位置增加一个自定义地点
格式:ADD_CUSTOM_PLACE*自定义地点ID(全局唯一)#附属于地点(可为空,为空表示非附属地点)#地点信息模板ID#位置信息#默认所属势力
用途:修改一个指定地点的显示名称
格式:SET_PLACE_NAME*地点ID#自定义名称
用途:开启地点建筑建设界面
格式:OPEN_PLACE_BUILD_UI*地点ID#建设成功后执行的剧本(可选)#建设取消后执行的剧本(可选
用途:加入一张预制的卡牌
格式:ADD_CARD*卡牌ID#是否免费招募(1免费,0付费招募,默认为0)
用途:加入一张预制的卡牌,最大耐久为指定的残值
格式:ADD_CARD_PIECE*卡牌ID#最大耐久#是否免费招募(1免费,0付费招募,默认为0)
用途:设置地图阻挡区域的状态
格式:SET_OBS_AREA*控制ID#状态(0:启用-1:禁用)
用途:点亮当前地图某一块区域(去除区域战争迷雾)
格式:EXPLORE_AREA*坐标x,坐标y#点亮半径
用途:点亮整个地图(去除整张地图的战争迷雾)
格式:EXPLORE_MAP*地图ID
用途:增加自定义变量监视字段,在屏幕指定UI区块显示当前监视的变量字段值
格式:ADD_INTVAL_WATCHER*变量监视信息格式
(格式如:字段Key1,显示名称1,枚举值1a=枚举名称1a|枚举值1b=枚举名称1b|...|枚举值1N=枚举名称1N,是否战斗中可见([可选,默认0]0否1是);...;监视字段信息N)
用途:移除指定的自定义变量监视字段
格式:REMOVE_INTVAL_WATCHER*字段Key值
用途:清除所有变量监视字段
格式:CLEAR_ALL_INTVAL_WATCHERS*
用途:移除一个游戏计时器事件
格式:REMOVE_TIMER*计时器ID
用途:增加自定义计时器监视字段,同自定义变量监视器UI
用途:移除一个自定义计时器监视字段
格式:REMOVE_TIMER_WATCHER*字段Key值
用途:清除所有自定义计时器监视字段
格式:CLEAR_ALL_TIMER_WATCHERS*
用途:打开玩家招募城镇内卡牌的面板
格式:PLAYER_RECRUIT_CARD_IN_PLACE*城镇ID#完成招募后执行的事件ID(可选)#取消招募后执行的事件ID(可选)
STORY_CARD_LINE
STORY_CARD_END
用途:打开剧情卡片界面。必须要有STORY_CARD_START和STORY_CARD_END,不然会报错。STORY_CARD_LINE为剧情段落,需要加在中间,可以加无数行
STORY_CARD_START*卡片文件名
STORY_CARD_LINE*剧情段落1
STORY_CARD_LINE*剧情段落2
STORY_CARD_LINE*剧情段落3
...
STORY_CARD_END*
用途:立即执行自动存档
格式:AUTOSAVE*1
用途:打开存档界面
格式:OPEN_SAVE_DLG*1
用途:打开读取界面
格式:OPEN_LOAD_DLG*1
用途:打开卡牌交换界面
格式:EXCHANGE_CARD*对象类型(0:地点1:队伍)#对象ID([可选,默认为当前地点]当对象为地点时为地点ID,队伍时为队伍ID)
用途:用于剧本模式描述一关结束
格式:LEVEL_FINISH*
用途:设置镜头滤镜效果
格式:SET_CAMERA_FILTER*滤镜参数(为空为关闭所有滤镜,参数代码见6.10节)测试代码:SET_CAMERA_FILTER*黑白,0|老旧,100|暗角,100
用途:让大地图上的指定单位播放TIMELINE动作
格式:TLACTION*地图角色ID#Timeline动作文件名#动作时长
用途:打开一个全屏特殊剧情选择界面
格式:SELECTION_VIEW*剧情图片文件名#剧情内容(支持“\n”表示换行)#选择项(参考SELECT*)
用途:在大地图上的单位头上弹出气泡对话框
格式:DIALOG_BUBBLE*地图角色ID#对话内容#显示时长
TEXT_EXPLORE_OVER
TEXT_EXPLORE_FORCE_OVER_AND_CD
用途:特定的文字探索模式
TEXT_EXPLORE_START*文字探索地图ID。开启一场文字冒险
TEXT_EXPLORE_OVER*。结束当前副本
TEXT_EXPLORE_FORCE_OVER_AND_CD*。强制结束当前副本并进入CD
用途:用来展示一个CG图片界面(注意开了之后需要手动用HIDE_CG*关闭CG,不然会影响玩家操作)
格式:SHOW_CG*图片名称(不带后缀,可为空,空就只会显示黑色背景,对应目录为Assets\BuildSource\Backgrounds\,文件格式统一要求为png)
用途:关闭CG图片界面
格式:HIDE_CG*
用途:随机抽取一张卡牌,并存放在当前变量的tagcard里
格式:GENERATE_RANDOM_CARD#1
用途:展现一句旁白界面
格式:VOICE_OVER*旁白内容
用途:创建一个用于剧情的队伍
格式:CREATE_STORYARMY*tagkey#地图位置#所属阵营#人物列表(所有人物会强制离开当前队伍或地点)#卡牌单位列表(卡牌ID1,数量1,等级1|卡牌ID2,数目2,等级2|.......)#运动信息(例如:WANDER,2500)
用途:移除一个剧情队伍
格式:REMOVE_STORYARMY*tagkey
用途:进行集市商人买入操作
格式:BAZZAR_BUY_ITEM*集市ID#商人ID#交换用物品的集市ID(可选)#交换用物品的商人ID(可选)
购买结果保存在[%result_code%]中(1购买成功,0购买失败)
用途:进行集市商人卖出操作
格式:BAZZAR_SELL_ITEM*集市ID#商人ID
用途:对话时显示角色立绘
格式:SHOWROLE*角色1ID@角色1立绘显示位置(#角色2ID@角色2立绘显示位置)(可选)
*立绘显示位置:可以是L或者R,默认为L,立绘显示在对话框左侧,R则显示在右侧
用途:对话时隐藏角色立绘
格式:HIDEROLE*角色1立绘显示位置(#角色2立绘显示位置)(可选)
*立绘显示位置:可以是L或者R,L为隐藏左侧立绘,R为隐藏右侧立绘
用途:在普通的SELECT基础上添加满足条件的任务询问
格式:SELECT_QUEST_ASK*
用途:选择队伍里的人物角色
格式:SELECT_TEAMROLE*
用途:设置角色在“情报”界面中可见,传入角色ID(此方法一般用于剧情中,如酒吧女郎)
格式:ROLE_PLAYER_ACTIVE*角色ID
用途:为一个角色下达一些内置指令并立即执行
格式:ROLE_ORDER*角色ID[为空表示当前目标角色]#指令代码:指令参数表
当前指令代码支持以下内容:
用途:添加一条自定义的可交互消息,并在对应的UI中显示
当消息类型为非财务消息时,参数文本的格式为:
参数Key1:参数值1;参数Key2:参数值2;...;参数KeyN:参数值N目前系统内置的参数KEY类型有:
例如:ask:是=Event1:否=Event2
当消息类型为财务消息时,参数文本的格式为:
账单字段1=账单明细表(格式为:资源1,数目1|资源2,数目2|...|资源N,数目N);账单字段2=账单明细表;[...];账单字段N=账单明细表发起者信息的格式为:发起者类型代码:发起者ID
目前支持的发起者类型有:
TAG参数为任意用来标记用的字符串字段
用途:移除指定条件的可交互消息
格式:REMOVE_INTERACTIVE_MSG*消息类型#发起者信息#TAG参数
消息类型及TAG参数可填空,表示不限类型或TAG
发起者信息格式见ADD_INTERACTIVE_MSG
用途:移除当前环境变量中的可交互消息
格式:REMOVE_THIS_INTERACTIVE_MSG*1
用途:改变主角立绘
格式:FORCE_CHANGE_HEADAVATA*立绘代码(使用$号替换#号)
用途:改变主角模型
格式:FORCE_CHANGE_MODEL*模型ID(使用$号替换#号)
用途:改变主角名称
格式:FORCE_CHANGE_NAME*角色名称
用途:打开一个游戏内自定义字段配置界面
格式:SHOW_INTVAR_CONFIG*开启模式(0:创建游戏模式1:游戏中模式)
用途:在大地图上增加或者设置一个自定义的地图标记,当标记ID已存在时为覆盖此地图标记信息
格式:SET_MAP_MARKER*标记ID#标题#备注信息#地图位置信息#标记图标文件名(可为空,默认为"map_flag",此图标为位于“\BuildSource\map_res\MinimapMakers\”资源目录下的一个PNG图片资源)
用途:移除指定ID的自定义地图标记(如果存在的话)
格式:REMOVE_MAP_MARKER*标记ID
用途:运行指定的Lua脚本(不推荐使用)
格式:RUN_SCRIPT*脚本相对路径文件名(相对于脚本根目录“Asset\BuildSource\LuaScripts\”,无文件扩展名)
用途:运行指定的Lua脚本中的标准方法
格式:RUN_SCRIPT_FUNC*脚本相对路径文件名(同RUN_SCRIPT)#标准方法名称(脚本中的方法名,参数为传入的环境变量)#传入的参数字符串信息对应LUA脚本调用的方法参数表,参数1默认为环境变量参数,参数2为传入字符串参数LUA中实现的函数接口示例:functionTestFunc(_contextArgVal,_StrArgs)_contextArgVal:调用指令中传入的环境变量_StrArgs:传入的字符串型参数信息
用途:打开一个自定义的GUI窗口
格式:OPEN_GUI*GUI包名#窗体组件名#脚本路径#窗体参数#阻塞指令队列(默认0阻塞)#模糊窗体(默认0否)#UI小组件
格式:OPEN_CONTAINER_GUI*容器ID(实例ID用于标识)#模板信息ID(定义在容器定义表中的信息ID)
当参数表为空或者为"THIS"时,表示直接打开当前环境变量中指定的容器(如果有传入的话),如:OPEN_CONTAINER_GUI*THIS
用途:为当前环境变量设置一个容器
格式:SET_TAG_CONTAINER*容器ID(实例ID用于标识)#模板信息ID(定义在容器定义表中的信息ID)#是否不存在则创建(0否1是,默认1)
用途:为当前环境变量中指定的容器执行特定指令
格式:CONTAINER_CMD*容器指令类型#参数1#参数2#...#参数N
目前支持的集中内置指令类型:
add_exp:对容器内所有卡牌增加经验,参数为经验数字
add_items:向容器内添加指定的元素。(如:物品类容器可为CONTAINER_CMD*add_items#道具1,10|道具2,5;卡牌类容器为卡牌的ID表,以"|"分隔)
remove_items:从容器内移除指定的元素。(如:物品类容器可为CONTAINER_CMD*add_items#道具1,10|道具2,5;卡牌类容器为卡牌的ID表,以"|"分隔)
clear:清空容器内的所有元素
set_capacity:设置容器大小,参数1为容器大小数字,该项会覆盖容器原本的大小设定。仅对容器表定义的容器有效,对地点容器无效。
change_capacity:修改容器大小,参数1为变动值,正数增加,负数减少。仅对容器表定义的容器有效,对地点容器无效。
用途:将地点视为容器对象,执行和容器相同的特定指令
格式:PLACE_CONTAINER_CMD*地点ID(为空或者THIS表示当前环境变量所指定的地点)#容器指令列表(同CONTAINER_CMD参数说明)
用途:设置指定地图的可见状态
格式:SET_MAP*地图ID#状态值(0:正常1:关闭)
用途:重置当前LUA脚本运行环境并清除缓存,可用于调试LUA脚本时避免重新启动游戏
格式:RESET_LUAENV*1
用途:设置存储在当前运行脚本环境变量中的整型参数值(对应[%arg_int_val1%][%arg_int_val2%][%arg_int_val3%])
格式:SET_ARG_INT*设置新的值#目标参数索引(可选,默认为0。0,1,2分别对应[%arg_int_val1%]~[%arg_int_val3%])
用途:强制一个指定角色加入队伍,无视队伍上限限制(不会弹出处置UI)
格式:TEAM_JOIN_ROLE*人物ID1|人物ID2|人物ID3|...
用途:设置角色身上的可存储整形字段
格式:SET_ROLE_INTVAR*角色ID(为空为主角)#字段ID#设置值#设置模式(可选1为增加模式(原值加上设置值)其他为直接赋值模式)
用途:设置角色身上的可存储字符串字段
格式:SET_ROLE_STRVAR*角色ID(为空为主角)#字段ID#字符串信息
用途:对一个大地图单位设置气泡对话框文字信息
用途:改变游戏内任意两个角色之间的好感度
格式:CHG_ROLES_FV*人物ID_A#人物ID_A#更改数值#是否链式更改(1是0否,默认否)#目标值(当不为空时生效,当此项生效时链式参数无效)
用途:队伍角色关系虚拟事件结果决定
用途:开启角色关系调试界面
格式:OPEN_ROLE_RL_DEBUG*1
用途:立即调用一次以地点为中心的角色关系虚拟随机事件
格式:DEBUG_ROLE_RL_EVENT_PLACE*地点ID
用途:立即调用一次队伍中的角色关系虚拟随机事件
格式:DEBUG_ROLE_RL_EVENT_TEAM*1
用途:开始一次酒吧挑战判定,并执行对应的触发器检定
格式:BAR_FIGHT*地点ID
用途:开始一次自定义参与对象的搏击战斗
格式:CUSTOM_FIGHT*敌方英雄表#我方英雄表#对应战斗ID(可选)
用途:按照当前搏击战斗的环境参数开始执行战斗逻辑(内置指令,用于由该次搏击战斗触发的事件中进行调用。其他环境下调用此指令无效)
格式:BAR_FIGHT_EXEC*1
用途:参加当地举办的比如大会(如果条件满足的话)
格式:START_TOURNAMENT*1
用途:改变游戏内任意角色在其所在阵营的贡献度
格式:CHG_ROLE_MERIT*人物ID#更改数值#目标值
用途:设置查询指令的替换参数,用于需要对查询指令中指定的目标进行赋值时使用,可以将查询指令中的任何部分使用替换参数替代
当查询指令具有多元参数时,只需要使用SUBARG关键字即可替换为设置好的参数值,如:[$tagrole:role_fv=SUBARG$]
格式:SET_SUBARG*设置值
用途:发送UI通知消息,UI界面的LUA代码中可通过接口注册或实现functiononWindowEvent(msgType,msgArg)接口来接受消息
示例:实现方法一:通过接口注册
--注册接口CS.GUIHelper.RegSceneMsgHandler(OnSceneMsgHandler)--场景关闭时通过CS.GUIHelper.RemoveSceneMsgHandler(sceneMsgHandler)来注销此接口functionOnSceneMsgHandler(msgType,msgArg)--dosomethingend实现方法二:实现消息接口
--将函数命名为onWindowEvent,会在窗口中自动读取该接口使用functiononWindowEvent(msgType,msgArg)end接口示例:
格式:UI_MSG*消息类型(对应msgType)#消息参数(对应msgArg)
用途:添加一个队伍事件通知,此通知在游戏内提示并需要点击触发对应事件。
用途:替代一个游戏内角色,继承该角色的信息
格式:PLAYER_REPLACE_NPC*角色ID#替代方式(替换模式0:仅替换阵营地位、领地、人际关系1:完全替换,包括角色名称和形象立绘等)
用途:用于修改角色的某个固有属性,如姓名、立绘、模型、使用武器、性格等等
格式:CHANGE_ROLE_ATTRIBUTE*人物ID#属性名称#属性值
可以修改的属性有:
name:修改名称,属性值为要修改的名称avatar:修改立绘,属性值为目标立绘,若立绘的值里包含#,可以用$替换#model:修改模型,属性值为模型数据,若模型的值里包含#,可以用$替换#gender:修改性别,属性值-1为使用模板数据,0男性,1女性weapon_type:修改武器类型,属性值-2为使用模板数据,-1为全部武器,其他武器请参照物品表里的介绍can_recruit:修改是否可招募,属性值-1为使用模板数据,0不可招募,1可招募can_leave:修改是否可离队,属性值-1为使用模板数据,0不可离队,1可离队nature:修改性格,属性值格式为:性格1=性格值1,性格2=性格值2,……,性格n=性格值n。将性格值设为0或以下为使用模板数据。desc:修改角色背景描述,属性值为要修改的描述,使用\n换行SET_DAILY_FOOD_CONSUME开关游戏内每日食物消耗用途:开启或关闭每日的食物消耗判定。注:关闭食物消耗时,饥饿惩罚也会一并关闭。
格式:SET_DAILY_FOOD_CONSUME*状态(0关闭,1开启,游戏默认开启)
用途:设置一组兵种招募组,并从中抽取一支兵种。同时会为环境变量设置该招募组和要招募的兵种。
格式:SET_RECRUIT_CARD*招募组ID#刷新冷却期(单位:天,小于等于0为立即刷新)#招募单位1,权重1#招募单位2,权重2#...
用途:同SET_RECRUIT_CARD,但是会无视刷新冷却期刷新招募组
格式:SET_RECRUIT_CARD_FORCE*招募组ID#刷新冷却期(单位:天,小于等于0为立即刷新)#招募单位1,权重1#招募单位2,权重2#...
用途:修改兵种招募组中的兵种
格式:CHANGE_RECRUIT_CARD*招募组ID#兵种单位ID
用途:为环境变量设置该招募组和招募组中随机抽取的兵种。需要先调用过SET_RECRUIT_CARD
格式:SET_TAG_RECRUIT_GROUP*招募组ID
用途:设置招募组招募兵种的费率,默认为100,即100%*原价
格式:SET_RECRUIT_COST_RATE*招募组ID#招募费率(单位:百分比整数,默认100)
用途:尝试对招募组内的兵种进行一次招募,使用设置的消耗费率
格式:TRY_RECRUIT_CARD*招募组ID
备注:招募成功后招募次数+1,直到下次招募刷新后招募次数清零。招募结果通过tagrecruit进行查询
用途:使用生成模板生成一名角色
格式:GENERATE_ROLE*角色生成模板ID
角色生成模板生成的角色ID为"tmpl_"+递增ID,生成角色在其他方面与普通非模板角色一致
用途:从角色生成模板组内抽取一个模板生成一名角色
格式:GENERATE_ROLE_BY_GROUP*角色生成模板组1|角色生成模板组2……
备注:与GENERATE_ROLE功能一致,但是使用组ID进行抽取,可以填写多个组ID,会把各组合并后按概率进行抽取。
用途:插入并执行一个事件,执行完继续执行当前事件下一行
格式:PUSH_EVENT*事件ID
用途:通过触发器触发事件,触发的事件执行完后继续执行当前事件下一行
格式:INSERT_TRIGGER*触发器类型#目标类型(全部则填any)#目标ID(全部则填any)#是否触发全部事件(0否1是)
用途:用于推进当前正在进行的比武大会进度,如生成对战表、模拟对战进度
格式:MATCH_CONTINUE*比武大会ID#是否强制继续(0:否,1:是默认0)
备注:如果强制继续,且当前比赛尚未进行,则会直接快速模拟比赛结果
用途:设置比武大会某场战斗的结果,用于设置战斗的胜利方
格式:MATCH_SET_BATTLE_RESULT*比赛ID#比赛阶段#比赛结果(1:左方胜利,2:右方胜利)
备注:比赛阶段:0~3八进四4~5四进二6决赛,如果该阶段还未生成(未推进到该进度)将会设置失败
用途:设置比武大会当前进行的战斗的结果,用于设置战斗的胜利方
格式:MATCH_SET_CUR_BATTLE_RESULT*比武大会ID#比赛结果(1:左方胜利,2:右方胜利)
用途:对所有的比武大会进行查询,并将符合条件的结果存储在当前环境中
格式:MATCH_QUERY*判断条件
备注:结果可以使用[$match_query_first_id$]查询首个比武大会的ID、[$match_query_rnd_id$]查询其中随机一个比武大会的ID、[$match_query_ids$]查询所有符合条件的比武大会ID(使用|分割)、[$match_query_options$]返回所有符合条件的比武大会的选项组(用于SELECT命令)
用途:对该地点的比武大会进行查询,并将符合条件的结果存储在当前环境中
格式:MATCH_QUERY_PLACE*地点ID#获取的类型(0:全部1:正在举办,包含准备中和比赛中2:未举办)
备注:结果同MATCH_QUERY
用途:查询所有可以参加比武大会的队伍,并按照参与概率挑选一只添加到环境变量中
格式:MATCH_TEAM_QUERY*比赛级别#必须包含的队伍标签(多个标签用|风格)#排除的队伍标签(多个标签用|风格)
备注:比赛级别
1试炼赛2锦标赛3比武大会队伍标签
Candidate候选队伍,一般最后才会参加比赛Powerful强力队伍,每场比赛参赛的强力队伍有限Fixed固定队伍,不会招募候选外的其他队员使用[%match_team_query_member_name:INDEX%]、[%match_team_query_member_id:INDEX%]等指令获取查询结果
用途:为当前脚本的环境变量设置默认的操作比武大会
格式:SET_TAGMATCH*比武大会ID
用途:通过结果代码设置当前环境中的比武大会,通常用于使用[$match_query_options$]在SELECT命令中注入选项后,通过该指令设置选择结果
格式:SET_TAGMATCH_BY_RESULT*结果代码
使用范例:
MATCH_QUERY_PLACE*[$tagplace:id$]#1SELECT*CUR_ROLE#选择该地点的比武大会#[$match_query_options$];0:离开SET_TAGMATCH_BY_RESULT*[$result_code$]MATCH_ADD_TEAM为比武大会手动添加队伍用途:为比武大会手动添加队伍
格式:MATCH_ADD_TEAM*比武大会ID#队伍类型(0:模板队伍1:主角队伍2:自定义队伍)#队伍信息#队伍名称(可选)#是否填充队员(0否1是,默认0)
备注:模板队伍的队伍信息为模板ID,主角队伍与自定义队伍的队伍信息为参赛人物ID列表,以“|”分隔,其中非主角队第一个角色ID为队长,队伍名称为可选参数,如果不填写则使用默认名称
[$result_code$]返回添加结果0成功1比赛已满2该队伍已经被添加过-99其他错误
用途:设置特定比武大会小队的名称
格式:MATCH_SET_TEAM_NAME*比赛Id#队伍索引#队伍名称
备注:队伍索引从0开始
全局存档是用来记录一些所有存档共享的数据记录的存档。记录在全局存档中的数据更改后可以在所有不同的存档中进行访问。
用途:设置一个全局存档中的自定义整形变量。记录在全局存档中的自定义整形变量可以通过查询指令[%global_int:ID%]来进行查询访问。
格式:SET_GLOBAL_INTVAR*变量ID#当前int值
用途:修改一个全局存档中的自定义整形变量。
格式:CHANGE_GLOBAL_INTVAR*变量ID#改变值(正负数皆可)#锁定最小值(可选,不填为不限制)#锁定最大值(可选,不填为不限制)
用途:设置自定义字符串变量。记录在全局存档中的自定义字符串变量可以通过查询指令[$global_str:ID$]来进行查询访问。
格式:SET_GLOBAL_STRVAR*变量ID#string值
用途:将指定的角色表存入全局角色状态表中
格式:PUSH_GLOBAL_ROLES*自定义全局存储Key#角色ID(该角色只能为非模板角色)
用途:将指定的角色表的状态从全局角色状态表读入到当前游戏模式中
格式:PULL_GLOBAL_ROLES*自定义全局存储Key(该Key值对应的角色必须为当前游戏模式人物模板表中存在的角色)
用途:锁定当前的指令队列,当锁定后切换游戏存档或者重置游戏模式时不会清空执行的指令队列
格式:LOCK_CMD_QUEUE*是否锁定(0否1是)
用途:切换并载入到目标游戏模式
格式:SWITCH_GAME_MODE*目标游戏模式的ID
内置指令是指一些专门用于程序内部实现某些特定功能的指令。一般专门供一些特定脚本使用。
用途:打开遭遇野怪信息面板
格式:ENCOUNTER*1
用途:打开宝箱守卫信息面板
格式:CHEST_INFO_DLG*宝箱ID
用途:打开宝箱开启代价信息面板
格式:CHEST_COST_DLG*宝箱ID
用途:开启宝箱逻辑回调命令
格式:CHEST_CALLBACK*回调代码(1:击败守卫2:完成开启)#目标宝箱ID
用途:执行招募队伍中的俘虏判定
格式:EXEC_RECRUIT_CAPS*
在脚本编辑中有时会使用一些特定的指令来替代具体的对象,比如CUR_ROLE可以用来替代当前遭遇对象的人物ID,这样就可以实现一些通用脚本编辑的应用场景。
目前支持的预设字段有:
剧情事件中结果脚本指令的格式为(以换行符分割):
条件表达式组1:执行命令1条件表达式组2:执行命令2...条件表达式组N:执行命令N执行方式为:先判定条件表达式组1,如果成立则执行命令1,否则接着判定条件表达式组2……直到有任意一组成立,或者所有条件均不成立
条件表达式组由多个形如"[%CONDITION%][=]1"这样的条件表达式组成,以符号"|"(或)或符号"&"(与)进行连接,"&"(与)的优先级大于"|"(或)的优先级,当条件表达式左右值均为整数字符时,将返回其数值大小的比较结果,否则只能执行字符串比较且仅支持[=]和[<>]两种判定。
如果需要改变表达式优先级,可以使用括号"("和")"包裹表达式。括号内的表达式会优先进行计算。
例如:
[%result_code%][=]1|[%player_money%][>=]100表示当结果为1或玩家身上有100金钱时执行而[%player:level%][>=]3&[%player_money%][>]100表示玩家等级大于等于3并且身上的金钱大于100时执行以下为条件表达式中支持的比较符号
在游戏中很多地方可以以“[&expression&]”(返回整数)或“[@expression@]”(返回小数)的格式嵌入一些数值公式进去(如BUFF列表的状态值等)
数值公式中支持一些基本数学运算,目前支持的运算符号如下:
比如某段数据中[&1+2*3&]将会被替换为7,[&@max(1+2*3,8)&]将会被替换为8,[&@min(1+2*3,8)&]将会被替换为7……
目前游戏中很多地方都支持插入嵌入式查询指令,通过这些查询指令,可以很方便的在一些文本或者条件表达式中插入我们想要的数值或者字符串类型的查询结果。所有嵌入式查询指令都是以[%QUERY:arg1:arg2...%]或者[$QUERY:arg1:arg2...$]这样的格式(两者等效)插入到目标位置的。
注意:关于使用查询指令嵌套!
当前的指令系统不支持直接进行嵌套,如果需要对查询指令进行嵌套,则需要使用SET_SUBARG指令进行预替换。如SETSTRVAR*[$tagrole:name:[$str_val:enemy$]$],替换后的指令如下:
SET_SUBARG*[$str_val:enemy$]SETSTRVAR*[$tagrole:name:SUBARG$]同理,若有多层嵌套,如SETSTRVAR*[$tagrole:name:[$str_val:[$str_val:tag_enemy$]$]$],一一进行拆分即可
SET_SUBARG*[$str_val:tag_enemy$]SET_SUBARG*[$str_val:SUBARG$]SETSTRVAR*[$tagrole:name:SUBARG$]目前支持的查询指令列表如下:
以下为result_code在不同类型命令下返回的含义
[%arg_int_val2%]
[%arg_int_val3%]
[$tagrole:INFO:ID$]
INFO可为如下内容:
[$playerteam:INFO$]
当查询为tagteam时,可以选择指定队伍查询参数,当指定队伍查询参数指定时,只返回查询目标的信息
INFO可为如下内容
QUERY_INFO格式为:[查询类型]=[查询目标]如:leader=ROLE_ID
当前支持的查询类型有:
status:0:未领取1:进行中2:已完成3:已超时(等待超时惩罚)4:已超时(等待自动领取奖励)5:已终结
[$arg_str_val2$]
[$arg_str_val3$]
在任务表中的“可打听选项_NPCQueryList”列中,按照下列格式填入线索选项及事件信息,可支持多行,格式为:CLUE#[条件表达式组]#选项显示名称#触发事件ID(可以用“SUB_EVENT.”开头表示执行完该事件后返回当前选择事件)
可使用的平台有:
def为默认返回结果(若所有的int值都不匹配)INFO为返回文本num为匹配的int值
num可以直接填写数字,也可以填写简易的判断符号,如
num,INFO:值为num时返回INFO<>num,INFO:值不为num时返回INFO>num,INFO:值大于num时返回INFO>=num,INFO:值大于等于num时返回INFO
DLC可选项:
dlc1:乱世英豪dlc2:比武大会dlc3_1:赫石之夏-赫炎工坊dlc3_2:赫石之夏-生儿育女dlc3_3:赫石之夏-汉家江湖辛弃疾以下查询需要激活DLC《比武大会》[%match_query_first_id%]比武大会查询结果中第一个结果的ID,见MATCH_QUERY*指令[%match_query_rnd_id%]比武大会查询结果中随机结果的ID,见MATCH_QUERY*指令[%match_query_ids%]比武大会查询结果中所有结果的ID,使用"|"分割[%match_query_options%]比武大会查询结果的选项组信息,用于插入到SELECT*或SELECT_TAL*指令中。配合SET_TAGMATCH_BY_RESULT*指令设置选择的结果。[%match_team_query_member_name:INDEX%]比武大会队伍查询结果中成员的名称,INDEX范围从0到2[%match_team_query_member_id:INDEX%]比武大会队伍查询结果中成员的ID,INDEX范围从0到2[%match_team_query_members%]分割ID[$tagmatch:INFO:ID$]查询目标比武大会的信息ID不填时默认为环境中的比武大会
传承界面专用查询指令
用来查询全局存档中的一些指令
以下是内置的全局变量关键字段:
可使用SETINTVAR、CHANGEINTVAR等指令进行修改并保存的系统内置自定义变量。一般都具有特定的功能。
游戏初始设定表中,可以配置一些具有实际功能的初始字段值。
阵营A,阵营B,关系状态,友好度(-100~100)|阵营A,阵营C,关系状态,友好度(-100~100)|...|阵营N,阵营N,关系状态,友好度(-100~100)
此数值越高,AI升级兵种越慢。
摧毁个数1:概率1摧毁个数2:概率2...摧毁个数N:概率N例如:
1:502:303:104:5monster_move_speed_random野怪发射器野怪随机移动速度随机修正范围,最多0.750soldier_battle_killed_prob士兵的基础战损,每个士兵在战斗结束时如果战败,有多少概率重伤0.2ai_soldier_battle_killed_probAI部队战败后阵亡概率1ai_recruit_hero_freeAI免费招募英雄0army_base_move_speed军队基础移动速度240monster_min_movespeed野怪最小的移动速度150caravan_move_speed_range商队移动速度范围格式为:最小速度,最大速度100,100farmers_move_speed_range农民移动速度范围格式为:最小速度,最大速度100,100army_base_move_speed_range军队的移动速度范围格式为:最小速度,最大速度100,100global_move_speed_range全局移动速度范围格式为:最小速度,最大速度该数值影响所有的地图上可移动单位
在对话框、文字框以及一些常见的UI中,通常可以使用以下格式来为文本中的指定文字更改颜色。
例如:这是一段[[imp:红色字体]],[[&ff6699ff:自定义颜色]]的字体
目前可支持的定制颜色如下(自定义颜色需用"&"符号替换"#"):
特别的,使用[[img:图片路径,size=大小格式]]的方式可以在对话中插入图片。
例如:[[img:ui://NewUI/defence_1,size=1.8em]]这是一个图标
图标的路径支持两种格式,一种是使用Assets/开头的资源路径,另一种是使用FairyGUI的url路径。
若要在图片中指定图片大小,可以通过size或height和width属性进行指定。
如:[[img:ui://NewUI/defence_1,size=1em]]大小为一倍行高(高度适配,宽度缩放)的图标
[[img:ui://NewUI/defence_1,height=50%,width=50%]]大小为原图片大小50%的图标
大小格式支持三种格式
数字:height=64单位像素百分比:height=100%原图片大小的百分比行高:height=2em几倍的行高(即按文字高度来)
人物位置信息说明人物位置格式为:位置代码:位置参数
支持的位置代码有0:未分配1:地点中2:队伍中3:项目中
当为一个队伍或者大地图上的对象指定位置信息时,就需要一个可以进行全局位置指定的指令格式(如使用TELEPORT指令等)。
全局位置格式为:
地图ID:坐标X,坐标y
在特定战斗表中,可以在“限制条件”一栏中填入以下格式的指令字段进行单位或者特殊限制。
格式如下:
命令1:参数1;命令2:参数2;...命令N:参数N;目前支持的限制命令如下:
大地图单位(队伍)控制指令是用来对大地图上的单位进行序列行为指定的控制方法。当单位被指定控制指令表后,会按照先后顺序逐步执行每一条指令,直到指令表执行完成。当单位执行动作进行中途保存退出后,读档时会按照之前的指令表继续执行指令。
注意:除了假人(包括剧情控制中需要的假人和游戏中的野怪等)外,其他类型的队伍的指令表执行结束后会自动解散队伍。
控制指令的格式是由整形数字的命令类型加命令内容组成,多行以“;”进行分隔,每行指令以指令类型代码+”,”开头,后面为指令参数,例如:
1,测试地图:100,100;1,测试地图:100,200;99,0上述代码表示先移动到测试地图的坐标1(100,100),再移动到2(100,200),然后解散队伍;
目前支持的指令类型代码如下:
说明:StateNum可以用来标记一些控制队伍的当前状态。例如:命令一个单位去地图某个地方执行一个动作,当它到达之前StateNum为0,到达后将StateNum改为1,这样就可以在脚本中判断该队伍当前处于什么状态了。
模型当前支持的默认动作表:
大地图上的假人、野怪、队伍中会需要设置默认的运行方式或者是通过脚本改变其运动模式。指定运动模式后,单位会按照此指令进行默认的行为动作。
单位运动指令的格式为:
运动方式,参数1[,参数2,...,参数N]当前可支持的运动方式及参数格式为:
物品信息的格式如下:
物品代码1,数量1[,细节信息表]|物品代码2,数量2[,细节信息表]|....|物品代码N,数量N[,细节信息表]细节信息表为格式为"key1=val1,key2=val2,..."的字典表,其支持以下信息字段内容:
例:长剑,1,mf=0-3说明:以mf开头的词缀代码表示自动适配出品质从0-3之间的词缀(0为不附带词缀)。
例:长剑,1,cw=吸血剑+50说明:表示附带吸血剑指定词缀的物品,所有变量数值指定由50-100之间。
变量代码数组由列数为2的二维数组组成,列1为枚举值,列2为品质数值(0-100),以”/”进行连接。比如一个词缀有3条词条,那么他的变量数组可能为:0/50/0/100/0/100
使用指令代码控制天气时多以组合天气效果为主,多个天气效果以"|"进行连接。
天气效果描述信息格式为:
天气效果ID1,强度值|天气效果ID2,强度值|...天气效果IDn,强度值目前游戏中支持的天气效果ID有:
地图编辑器及各种配置表中的天气效果信息字段填写格式如下:
表示30%的概率持续一天无天气效果,50%的概率持续3天下雨,20%的概率持续5天风沙天气
当使用SET_CAMERA_FILTER等指令时可以对当前游戏设置镜头滤镜效果。
镜头滤镜效果信息的格式为:
滤镜效果ID1,强度值|滤镜效果ID2,强度值|...滤镜效果IDn,强度值目前游戏中支持的镜头滤镜效果ID有:
目前一些程序中使用的人物TAG字段
格式:LIKE:类型1|类型2|...
程序中具有实际功能的地点TAG表
程序中具有实际功能的阵营TAG表
未指定阵营颜色的阵营,将由游戏分配默认颜色
未指定阵营情报背景的阵营,将使用默认背景+阵营颜色
程序中具有实际功能的TAG字段:
程序中具有实际功能的信息字段:
分配模式有以下几种
物品道具的词条以“词条类型:{枚举信息1,数值1;枚举信息2,数值2;...}”的格式设置在物品表中,其中词条类型分为以下几种:
物品掉落信息格式为:
其中,物品ID一项可指定特殊ID“QUERY”,表示从全局掉落表中查询一个掉落结果并返回。(见Q全局掉落表.xlsx中格式)
QUERY的参数表格式为“参数1=val1,参数2=val2,....”,可支持以下查询参数: