通用剧情事件指令说明
特别注意:脚本编辑时注意所有特殊符号必须为半角!!!
目录
一、剧情事件
剧情事件是游戏过程中用来实现剧情脚本的基本元素。游戏中所有的剧情事件都是由触发器或者执行器调用并丢入指令队列中,然后在游戏中由世界事件管理器(GameWorldManager)在游戏世界时间运行时顺序执行的。 一个完整的剧情事件主要由以下部分组成:
- 剧情事件ID:用以唯一标识该剧情事件;
- 命令内容:包含该剧情事件触发后执行的命令条目;
- 结果:根据命令条目最后一条的返回结果,进行条件判定并跳转;
二、目前支持的脚本命令条如下:
- 对话框:*角色ID(@立绘显示位置)#对话段落1#对话段落2#对话段落3#...#对话段落N
- 当对话框某段文字需要绑定语音时,在该段文字之前加上<voice:语音ID>就可以在显示该段文字时播放对应声音文件,当点击跳过时自动关闭当前语音
每段对话文字可以以“|”分隔写出多组随机对话段落,调用时会在其中随机选出一端进行返回。
当对话内容以“inner:...”开头时,为用特殊信息替换内容;
以下为内置的特殊信息ID及含义:
inner:set_player_job 给对象为玩家的角色设置工作指令时说的话
inner:set_player_lord 任命玩家为城主时说的话
inner:self_introduce 角色的自我介绍
inner:cur_doing 当前角色正在进行的工作内容
inner:cur_team_intent 当前队伍的目的
*立绘显示位置:可以是L或者R,默认为L,立绘显示在对话框左侧,R则显示在右侧
- 对话选择框:SELECT*角色ID#对话内容#1:选项一*条件组一;2:选项二*条件组二;...;N:选项N*条件组N (只有当条件组满足或者为空时才会显示,否则隐藏该选项)
当选项Key值以"+"开头时表示该选项选中后对话框不会关闭;
- 确认框:CONFIRM*确认文字内容
- 1111
- 系统选择框:CMD_SELECT*选择提示信息#选项组(同SELECT命令)
- Toast信息:TOAST*弹出信息内容
- BB对话框:BB*角色ID#对话内容#等待额外延时(以秒为单位,按照文字长度自动停留时间再加上此项)
- 游戏消息提示:GAME_MSG*消息内容#消息类型(0:普通 1:警告 2:系统)
- 输入框:INPUT*提示文字#Len限制字数#默认文字
- 延时等待:DELAY*等待时间(秒)
- 设置天气:SET_WEATHER*天气效果命令
天气效果命令格式: 天气效果ID1,强度|天气效果ID2,强度|...|天气效果ID N,强度
如: 雪,60|雾,20
强度值范围0~100,当为0时表示关闭该效果
天气效果ID见6.9章
- 执行指定战斗:BATTLE*战斗ID (当不指定战斗ID或为"ENCOUNTER"则开启当前遭遇战)
- 改变当前BGM:CHANGE_BGM*目标BGM的AudioID(如果需要定义中文名,需要加前缀@,并在音效表中定义中文名对应的Wwise Event Key,类型必须是BGM,为空时表示切换回当前地图默认的BGM,当该ID为保留字段”MUTE”时,表示当前不播放BGM)#有效期(0:切换场景时无效 1:始终有效,哪怕保存游戏再进来,除非再次调用CHANGE_BGM指令指定一个空的AudioID)
- 播放一个音效:PLAY_SOUND*音效ID#延迟时间(默认0秒)
- 播放一个角色的语音:PLAY_ROLE_VOICE*角色ID,该处关联角色tags中“Voice”一栏设定。
- 开始一个副本战斗:DUNGEON*副本ID
- 整数输入框:NUMSEL*输入框显示文字#最小值#最大值#默认值#单价#单价计算显示信息(当单价为0时不显示单价信息,否则需要按照"每个单位{0}银两,共需{1}银两"这样的格式进行指定)
- 跳转至事件:EVENT*剧情事件ID#子命令index(从0开始)
- 跳转到子事件:SUB_EVENT*剧情事件ID
- 子事件返回:SUB_EVENT_RETURN。将返回上一个跳转点,从index为0开始执行
- 变更金钱:CHANGE_MONEY*金钱变更数量
- 指定角色变更金钱:ROLE_CHANGE_MONEY*英雄ID#金钱变更数量
- 获得道具:GETITEMS*道具获取命令 (如GETITEMS*商会茶叶,3|面包,1)
- 获得道具:AI_CAMP_GETITEMS*道具获取命令。与上语句的唯一不同之处在于,上述语句仅玩家可以触发,该语句AI势力也可以触发,例如项目执行效果等。
- 转换道具:TRANSFER_ITEMS*原道具ID#新道具ID#原数额#新数额#转化次数。比如:小麦#小麦粉#1#1#10,表示将小麦1:1转化为小麦粉,转化10次。如果任何一次转化过程中原道具数量不足,则停止转换。
- 转换道具:TRANSFER_ITEMS_BY_PRESENT_TAG*原道具的一个present tag#原道具最低等级#原道具最高等级#新道具ID#原数额#新数额#转化次数。
- 获得随机道具:GET_RND_ITEM*道具获取命令(GET_RND_ITEMS*商会茶叶,3|面包,1),在N个道具之间随机选择一个
- 移除道具:REMOVE_ITEMS*道具列表命令 (如REMOVE_ITEMS*商会茶叶,3|面包,1)
- 移除符合礼物要求的一个特定道具:REMOVE_PRESENT*礼物描述字符串
礼物描述字符串格式参加任务列表中Tag栏中“Like”这个tag的格式
- 打开道具选择器:ITEMS_SELECTOR*选择框标题#数量限制(小于0为不限制)#筛选条件表达式
- 获得秘宝:TREASURE*(仅在首次攻占城市时触发,不需要任何参数)
- 进行一次Loot判断:LOOT*Loot列表 (信息格式见6.11节)
- 主角获得经验:GAINEXP*获得的经验值
- 英雄获得经验:HERO_GAINEXP*英雄ID#经验值。如果相应的英雄不存在/不在己方势力,则给主角加相应经验(限于现在的主角实现方式,暂时如此,以后要改)。
- 主角队伍获得经验:TEAM_GAINEXP*获得的经验值(每张卡牌均有等量经验)
- 指定某个角色增加固定经验:TEST_ADD_ROLE_EXP*英雄ID#经验
- 指定某个角色等级为固定值(略过加点):CHANGE_ROLE_LV*英雄ID#等级
- 主角势力驻守某地的所有部队升一级:PLAYER_GUARDS_LEVELUP*地点ID
- 主角队伍所有部队升一级:PLAYER_TEAM_LEVELUP*
- 队伍每个单位都获得经验:EACH_GAINEXP*每人的经验
- 过场字幕:SCREEN*字幕显示文字#字幕配全屏图资源名称(空为不配图)
- 设置黑屏效果:BLACK_SCREEN*是否开启(0:关闭 1:开启)
- 屏幕晃动:SHAKE_SCREEN*时间#烈度 (如:SHAKE_SCREEN*0.3#3)
- 设置触发器开关:SETTRIGG*触发器ID#状态值(0为开启,1为关闭)
- 执行触发器检定:TRIGGER*触发器ID
- 设置剧情事件状态:SET_ES*剧情事件ID*状态值(-1未执行过 其他为该事件ResultCode)
- 设置自定义变量:SETINTVAR*变量ID#当前int值
- 改变一个自定义变量:CHANGEINTVAR*变量ID#改变值(正负数皆可)#【可选:forceZero】,填写forceZero后,扣负只会扣到零,不会为负数。
- 设置一个临时ID,不会被存档保存:SET_TEMP_ID*ID,可以被各种指令调用读取
- 设置自定义string变量:SETSTRVAR*变量ID#string值
- 设置自定义的待读取游戏时间点:SETGAMETIMETAG*时间点ID,之后可以从[%tag_gametime_elapse%]读取该时间点ID的已流逝时间。【注意:该指令仅用于在一系列story中进行临时变量传递,该tag不会在存档中被保存,请勿用于需要持久化数据的场景】
- 设定自定义游戏时间点:SETGAMETIME*时间点ID
- 设定自定义现实时间点:SETREALTIME*时间点ID
- 设置一个自定义CD时间:SET_CUSTOM_CD*自定义ID#CD时间(≤0为关闭此CD,>0时设置指定时间,单位:天)
- 获得任务:GET_QUEST*任务ID
- 增加任务子项计数器:ADD_QS*任务ID#子项index(0开始)#增加数量
- 完成任务:DONE_QUEST*任务ID#是否给奖励(1是)
- 派发一个固定命令:SEND_FIXED_ORDER*
- 判断是否完成命令:CHECK_ORDER*
- 显示立绘图片框:SHOW_IMG*图片资源名称*预设特效0*停留时间(秒)
- 关闭当前图片框:CLOSE_IMG*预设特效0
- 人物加入队伍:JOIN_ROLE*人物1|人物2|...|人物N
- 人物离开队伍:QUIT_ROLE*人物ID
- 小兵加入队伍:JOIN_UNIT*小兵列表命令(见小兵列表格式)
- 设置地图地点状态:SET_PLACE*地点ID#状态值(0正常 1被摧毁 -1隐藏)
- 设置人物位置:SET_ROLEPOS*人物ID#地点信息(当人物为非玩家对象时,该对象会移动到指定地点中 当人物为玩家对象时,如果地点类型为城市,则传送至指定地点的指定建筑中) 人物位置格式见6.3章
- 离开当前地点:LEAVE_PLACE*1
- 将玩家传送到指定地图位置:TELEPORT*大地图位置信息
- TELEPORT_TO_PLACE*地点ID,传送到指定地点
- TELEPORT_TO_ROLE*人物ID,传送到指定人物附近
- 大地图专用指令集:MAP_CMD*指令内容
以下为指令内容说明
a) 移动至指定坐标:MOVETO#对象ID#目标坐标x,y#等待回调(1:否 0:是)
b) 追逐指定目标:CHASE#对象ID#目标ID#等待回调(1:否 0:是)
c) 主角进入指定地点:ENTER_PLACE#目标地点ID#进入方式(0普通 1潜入)#是否屏蔽enter_place事件(0否 1是)
d) 显示一个战斗标记:SHOW_BATTLE_MARK#目标坐标x,y
e) 隐藏当前战斗标记:HIDE_BATTLE_MARK#1
- 回复主角队伍卡牌耐久:RESTORE*参数(<=0:回复队伍所有耐久 >0:仅指定点数的耐久)
- 快速时间推移:TIME_ELAPSE*游戏时间#时间倍率#框体信息#允许取消(0[默认] 是 1否)#显示进度条(0[默认]否 1是)#操作显示图标(Assets\BuildSource\Icons下的图标文件名)#是否跟随主角单位(0否 1是)
- 等待并执行一个脚本事件:WAIT_EXEC*游戏时间#时间倍率#框体信息#允许取消(0[默认] 是 1否)#时间到达时执行的事件ID#操作显示图标(Assets\BuildSource\Icons下的图标文件名)#是否跟随主角单位(0否 1是)
- 取消当前等待中的脚本事件:CANCEL_WAIT_EXEC*1
- 打开攻城集结界面:OPENSEIGE*界面模式 0:攻城 1:守城
- 执行攻打当前地点:OCCUPY*攻打方式 0:占领 1:掠夺
- 加入战团:JOIN_WARBAND*战团ID#加入目标(0:左 1:右 不指定或其他值按照优先友方进行加入)
- 更改角色阵营:CHANGE_CAMP*阵营ID#目标角色ID#招募者ID
- 创建玩家自建阵营:CREATE_OWN_CAMP*阵营名称
- 改变阵营活跃状态:SET_CAMP_ACTIVE*阵营ID#状态值(0不活跃 1活跃)
- 更改阵营关系: SET_CAMP_RL*阵营A#阵营B#关系状态(-1:不改变状态 0:中立 1: 敌对 2:友善)#友好度改变值#友好值目标值(如果存在该字段)
- 变更主角与阵营的声望(贡献值):CHG_CAMP_REP*目标阵营ID#更改数值#目标值(当不为空时生效),阵营ID为空时表示当前所属阵营
- 变更主角与地点的声望(友好值):CHG_PLACE_REP*地点ID#更改数值#目标值(当不为空时生效)
- 改变主角的全局声望值:FAME*更改数值
- 更改角色全局声望值:CHANGE_FAME*目标人物ID#更改数值
- 变更主角与人物的友善值:CHG_PERSON_FV*人物ID#更改数值#目标值(当不为空时生效)
- 改变人物活跃状态:SET_ROLE_ACTIVE*人物ID#状态值(-1不活跃 0活跃)
- 变更目标人物善恶值:CHG_GOODEVIL*人物ID#更改数值#目标值(当不为空时生效)
- 变更一个势力所有据点的繁荣度(百分比):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)
- 变更地点的箭塔数量:CHG_PLACE_TOWERS*地点ID#更改数值#目标值(更改后的数量最大不会超过当地最大数量)
- 变更地点的用户自定义字段:CHG_PLACE_CUSTOM_INT*地点ID#字段KEY#更改数值#目标值
- 地点增加一个自定义设施:PLACE_ADD_BUILDING*地点ID#设施ID(目标地点已存在该设施则无效)
- 地点移除一个自定义设施:PLACE_REMOVE_BUILDING*地点ID#设施ID
- 地点增加/替换一个自定义标记:PLACE_CUSTOM_INT*地点ID#标记ID#整型标记值
- 创建一个商队并出发:CREATE_CARAVAN*出发城市ID#到达城市ID#玩家保护(1为玩家保护,0不是)#
- 强制创建队伍并下达指令:CREATE_TEAM*地图位置#所属阵营#人物列表(所有人物会强制离开当前队伍或地点)#卡牌单位列表(卡牌ID#等级,数目|卡牌ID2#等级2,数目2|.......)#指令方式(见说明)#指令参数
指令方式分为以下几种:
0:自定义指令:当自定义指令时参数为队伍指令内容(格式如:指令类型1,参数1;指令类型2,参数2;...;指令类型N,参数N,指令格式见6.7节)
1:预制指令入侵城市:参数为目标城市的ID,入侵方式(0占领地点 1掠夺)
2:预制指令入侵势力:参数为目标势力的ID,目标优先方式(0距离优先 1城防值优先),入侵方式(同上)
- 解散队伍:DISMISS_TEAM*地图单位ID
- 更改队伍指令:TEAM_ORDER*地图单位ID#新的队伍指令内容(指令格式见6.7节说明)
- 指定地点攻打另一地点:INVASION_PLACE*发兵地点ID#目标地点ID#攻打方式(0占领 1掠夺) 注:发兵地点与目标地点必须分属两个敌对势力且发兵城内有可战斗人员
- 指定一个势力马上进攻另外一个势力:IVASION_CAMP*进攻方势力ID#目标势力ID#选取目标方式(0距离优先 1城防优先)#入侵方式(0占领地点 1掠夺)#发动据点数量(0:全部发动 >0:发动距离最近的有限个据点)#入侵强度(0:保留有限实力 1:不顾一切(发动所有资源))
注意:这两个势力必须是敌对或中立状态的两个势力,当发起方因为兵力不足等原因时可能无法发起进攻
- 打开交易界面:OPENSTORE*商人ID(如为空则表示根据地点及当前NPC自动查询)
- ADD_LOCAL_PRODUCT:增加本地特产
- TRADE_PERMISSION:设置通商许可,TRADE_PERMISSION*地点ID*是否可以通商,0代表不能通商,1代表可以通商。
- 强制刷新指定商人商品列表:RESET_STORE*商人ID
- 打开城镇招募界面:OPENRECRUIT*地点ID(如为空则表示当前地点)
- 打开城镇建设界面:OPENCONSTRUCTION*地点ID(如为空则表示当前地点)
- 打开队伍与地点单位交换界面:TROOPS_ALLOC*地点ID(如为空则表示当前地点)
- 打开俘虏单位贩卖界面:TRADE_CAPTIVE*地点ID(如为空则表示当前地点)
- 学习技能:GETSKILL*人物ID#技能列表(单个技能格式为:“技能ID,等级(可选)”,多个技能以”|”分隔)
- 遗忘技能:REMOVESKILL*人物ID#技能列表(多个技能以”|”分隔)
- 重置已分配的技能点数:RESET_SP*人物ID
- 打开目标角色的技能配置面板:DISTRIBUTE_SP*人物ID
- 改变可用技能点:ADD_UNUSEDSP*人物ID#点数(为负值时减少)
- 点亮或移除主角技能页:SET_SKILLPAGE*技能页ID表(以”,”分割)#1点亮0移除#目标角色ID(可选,默认为主角)
- 增加一个技能的经验:ADD_SKILL_EXP*人物ID#目标技能ID(必须为一个目标角色拥有的技能,并且该技能可升级并未满级)#增加的经验数值
- 查看人物属性:SHOW_STATU*人物ID
- 查看当前遭遇队伍详情:SHOW_TEAMINFO*1
- 设置一个完成标记:SET_FLAG*标记名称#标记值
- 更新地图上的标记:UPDATE_MARKS*1
- 设置地图假人或野怪的状态:SET_DUMMY*假人ID#状态(0:显示 -1:隐藏)
- 设置大地图镜头参数:SET_CAMERA*跟随模式#参数
目前支持的镜头跟随模式及参数含义
0:跟随主角,无参数(默认)
1:跟随指定目标,参数为指定地图目标标识ID
2:指定地图位置,参数为地图坐标(地图ID:x,y)#镜头移动速度
- 设置地点归属阵营:SET_PLACE_CAMP*目标地点ID#目标阵营ID#是否为攻城侵略模式占据(1为是,0为否)
- 割让一个地图中所有据点:SET_MAP_CAMP*目标地图ID#from阵营ID#to阵营ID#是否为攻城侵略(1为是,0为否)
- 消耗一个钥匙:CONSUME_KEY*钥匙等级(当拥有开锁技能时不会消耗)
- 进行一次收支结算:BALANCE_BUDGET*1
- 【已过期,请使用TRY_RECRUIT_FREE_ROLE】执行一次在野英雄招募判断:CHK_RECRUIT_FREE_ROLE*人物ID(为空表示当前对象),成功返回1,失败为2,未知失败为0,资源不够为3,CD为4,队伍已满为5
- 招募在野英雄,TRY_RECRUIT_FREE_ROLE。传入ROLEID,成功返回1、内部错误返回0、队伍已满返回2
- 执行一次俘虏招募判断:CHK_RECRUIT_CAPTIVE*人物ID(为空表示当前对象),成功返回1,失败为2,不满足条件为0,未知失败为0,
资源不够为3,CD为4,队伍已满为5
- 释放一个俘虏人物:RELEASE_CAP*人物ID(为空时表示当前对象)
- 派出一个执行外交任务的信使:SEND_ENVOY*势力ID(为空时表示玩家势力)#外交行为(1:赎回 2:友善 3:宣战 4:同盟 5:破裂 6:停战)#目标ID(当赎回时为目标人物ID,其他为目标势力ID)#附带参数(一般为条件金钱数)#是否即刻到达的信使(1表示不需要等待时间,0表示需要等待时间)
- 执行当前外交事件结果:DIP_DECIDE*结果代码(1同意 0拒绝)
- 将一个人物驱逐出势力:EXPEL_ROLE*势力ID#人物ID
- 尝试奖赏一个手下:TRY_REWARD_ROLE*人物ID(为空时表示当前对象)
- 为当前队伍获得一个全局BUFF:ADD_GLOBAL_BUFF*buffID#持续时间(游戏天数)#层数(默认为1)#最高层数限制(默认为-1,无限制)
- 为当前队伍移除一个全局BUFF:RM_GLOBAL_BUFF*buffID
- 为当前队伍移除指定类型的全局BUFF:RM_GLOBAL_BUFF_BYCLASS*全局BUFF类型
- 为当前队伍移除所有全局BUFF:RM_ALL_GLOBAL_BUFF*1
- 当玩家遭遇战失败时执行的默认操作:PLAYER_FAILED*1
- 损失货物和金钱:LOSE_INVENTORY*比例(比例为整数,代表百分比)
- 变更当前脚本目标人物:SET_TAGROLE*人物ID
- 势力归顺另外一个势力(所有领地被征服者占领,所有人员根据忠诚度随机选择是否归顺):SURRENDER*投降方势力ID#受降方势力ID
- 生成一个随机地点,并可以用[%last_rnd_place_XX%]系列指令查询:GEN_RND_PLACE*所属势力ID。如果所属势力为空,则为玩家势力中的一个地点。
- 生成一个随机人物GEN_RND_ROLE ,并可以用[%last_rnd_role_XX%]系列指令查询。语法同上。
- 英雄强化(永久增加各种属性):HERO_UPGRADE*英雄ID#属性ID#增加值#增加上限(必须指定,可以为-1,即没有上限)。
如果相应的英雄不存在/不在己方势力,则给主角加相应属性(限于现在的主角实现方式,暂时如此,以后要改)。
- 英雄属性字段设置:HERO_SET_STATU*英雄ID#属性ID#新值,英雄ID为空表示主角
- 增加英雄的属性经验(积累变身所需的经验):HERO_ATTR_EXP*英雄ID#属性ID#增加经验值#增加等级上限(必须指定,可以为-1,即没有上限)。如果新的值超过了升级所需经验,则自动升级该属性。
如果相应的英雄不存在/不在己方势力,则给主角加相应属性(限于现在的主角实现方式,暂时如此,以后要改)。
- HERO_ATTR_EXP_WITH_POTENTIAL*英雄ID#属性ID#消耗比例#增加经验值#增加等级上限(必须指定,可以为-1,即没有上限)。如果新的值超过了升级所需经验,则自动升级该属性。
消耗潜能来获取一个技能的成长,消耗比例为1点经验需要多少点潜能。如果没有足够潜能则什么也不会发生。
- 获得一个阵营BUFF:ADD_CAMP_BUFF*阵营ID#buffID#持续时间(游戏天数,当该值小于等于0时表示永久生效除非强制移除该BUFF)
- 移除一个阵营BUFF:RM_CAMP_BUFF*阵营ID#buffID
- 移除指定类型的阵营BUFF:RM_CAMP_BUFF_BYCLASS*阵营ID#全局BUFF类型
- 移除所有阵营BUFF:RM_ALL_GLOBAL_BUFF*阵营ID
- 增加一个势力的动态属性:ADD_CAMP_EXTRA_STATU*阵营ID#动态属性字段表(见阵营表EXCEL势力初始属性格式)
- 重置势力的动态属性(归零):RESET_CAMP_EXTRA_STATU*阵营ID
- ON_PRESENT:处理送礼给英雄的后续逻辑
- ON_PRESENT_PLACE*地点ID:处理送礼给地点的后续逻辑
- FOOD_UP*数值:饱食度上升
- WATER_UP*数值:饮水度上升
- FOOD_WATER_COST*食物数值#饮水数值:如果有数值,则按照数值消耗,没有数值,则按照默认值消耗
- COUNTER_ADD*ID#值#称号类型:将一个值增加到系统计数器的对应ID上,如果ID不存在则直接赋值,如果称号类型不为空,则会检查相应称号是否可以自动提升
- WEAPON_DURABILITY_DOWN*数值:降低当前装备的武器的耐久度,当耐久度为0时自动损毁。如果武器本身耐久为-1(没有耐久度概念),则该语句什么也不会发生
- ITEM_DURABILITY_DOWN*装备tag筛选#装备等级筛选#数值:降低背包中一把符合tag、等级条件(>=要求等级)的道具耐久度【数值】点,如果符合条件的道具耐久不足,将摧毁这件道具
- 设置合成配方状态:SET_SYNTH_STATE*配方ID#新状态(0:未习得 1:已习得)
- 开启合成界面:OPEN_SYNTH_DLG*是否锁定(0:不锁定主分类 1:锁定显示分类)#默认显示的分类页(可为空默认,以“,”分隔多页,默认显示第一页;当锁定主分类时该字段可显示隐藏的分类)#关闭合成面板后执行的story key(可不填)
- 开启合成卡牌界面:OPEN_CARD_SYNTH_DLG*1
- 在当前地图上播放一个特效:PLAY_EFT*特效路径(相对Asset目录,例如:Assets\BuildSource\battle_effects\SkillEffects\psLightingHit1.prefab)#地图坐标#初始旋转角度(可为3方向旋转向量或者一个Y轴的旋转角度)#缩放比例(可指定XYZ3轴上的比例向量或者整体的缩放比例)#持续时间(秒,超过此时间后自动移除)#播放延迟时间(默认为0秒)
- 播放一个地图单位特效:PLAY_MU_EFT*特效路径(相对Asset目录,例如:Assets\BuildSource\battle_effects\HitEffects\psHealEft1.prefab)#地图单位ID#对象范围(0:仅英雄 1:全体)#初始旋转角度(可为3方向旋转向量或者一个Y轴的旋转角度)#缩放比例(可指定XYZ3轴上的比例向量或者整体的缩放比例)#持续时间(秒,超过此时间后自动移除)
- OPEN_MAPAREA_SELECTOR*区域标识ID#显示的模型#排他模式(0:不排他、1:排除自定义宝箱)#提示信息。result_code返回1标识位置设置成功,为0标识失败。位置信息记录在[$last_selpos$]中。
- OPEN_FREEAREA_SELECTOR*宽(整数)#高(整数)##显示的模型#排他模式(0:不排他、1:排除自定义宝箱)#提示信息。result_code返回1标识位置设置成功,为0标识失败。位置信息记录在[$last_selpos$]中。
- PLACE_SELECTOR*提示内容#选择条件(传入[%tagplace%]作为判断参数)
- 返回存在[$tagplace$]里,编号存在[%result_code%]里,如果[%result_code%]为9999则代表玩家取消选择。
- SET_LORD*角色ID#地点ID,设置一个地点的领主
- ADD_CUSTOM_CHEST*宝箱ID#对应的宝箱表中ID#位置信息#初始状态(>0表示可以开的次数,-1表示已经开过了,full表示以满次数开)#defDir(??默认填0)
- SET_CHEST*地图ID#宝箱ID#状态。状态>0表示可开启次数,状态<=0表示已开启
- SET_CURCHEST*状态。状态>0表示可开启次数,状态<=0表示已开启。
- CLOSE_SYSTEM_UI:关闭系统UI主界面
- 打开人物选择器:ROLES_SELECTOR*选择框标题#选择数量限制(小于0为不限制)#选择范围(0:全局非模板人物 1:主角队伍中 2:指定人物表范围)#筛选条件表达式#参数(当选择范围为指定人物表时该参数为人物列表信息)
示例:
ROLES_SELECTOR*选择目标阵营中的人物#1#0#[$tagrole:campid$][=][$player:campid$]&[$tagrole:campid$][<>][$null$]#
ROLES_SELECTOR*几个目标对象中选择一个#1#2##人物1|人物2|人物3|人物4
选取后存在[%last_seled_roles%]里。
如果只有一个结果,则同时存在[%tagrole%]里
- 打听人物,ASK_ABOUT_SOMEBODY_SELECTOR#被打听人ID
被打听人现在暂没参与逻辑运算,弹出人物选项框,结果存在[%arg_str_val1%]里,选择结果[%result_code%]为9999的时候是玩家取消。
- 打开卡牌选择器: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#绑定地点(可选,默认当前地点)
- 设置主角复活点:SET_REVIVE_POS*大地图位置(地图ID:x,y)
- 开启或关闭静默播报模式:SET_SILENCE_MODE*静默模式(0:不开启 1:不显示TOAST,仅显示消息,获得物品TOAST信息在消息中显示 2:不显示TOAST及消息)
- 打开角色团体项目管理界面:GROUP_PROJECT_ADMIN*项目标签#界面标题#项目绑定类型#项目绑定对象参数(可选,默认为当前对象)
目前支持的项目绑定类型有
place:地点建筑建设 对象参数为地点ID,如不指定为当前地点
world:自定义地点建设 对象参数格式为:自选区域控制ID;所属地点(当所属地点为空时表示建设一个非附属地点)
- 主角队伍开始掠夺一个地点:START_RAID_PLACE*地点ID
- 增加一个自建地点(一旦新增全局不可移除):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
- 增加自定义变量监视字段:ADD_INTVAL_WATCHER*变量监视信息格式(格式如:字段Key1,显示名称1,枚举值1a=枚举名称1a|枚举值1b=枚举名称1b|...|枚举值1N=枚举名称1N,是否战斗中可见([可选,默认0] 0否1是);...;监视字段信息N)
- 移除一个变量监视字段:REMOVE_INTVAL_WATCHER*字段Key值
- 清除所有变量监视字段:CLEAR_ALL_INTVAL_WATCHERS*1
- 打开玩家招募城镇内卡牌的面板:PLAYER_RECRUIT_CARD_IN_PLACE*城镇ID#完成招募后执行的事件ID(可选)#取消招募后执行的事件ID(可选)
- 剧情卡片:必须要有STORY_CARD_START和STORY_CARD_END,不然会报错。STORY_CARD_LINE为剧情段落,需要加在中间,可以加无数行
STORY_CARD_START*卡片文件名
STORY_CARD_LINE*剧情段落
STORY_CARD_END*
- 设置一个游戏计时器事件:SET_TIMER*计时器ID(当ID重复时将覆盖重复的目标计时器信息)#时间参数(小于0时表示关闭该计时器, 其他当类型为指定时间型时该参数为指定的游戏事件(单位天), 当倒计时型时该参数为倒计时的天数)#计时器类型(0:指定时间触发型 1:倒计时型)#时间到达时执行的事件ID#是否强制更新(1表示强制更新,0表示非强制更新:即不会更改已有的计时器的数据。不填为1)
- 删除一个计时器:REMOVE_TIMER*计时器ID
- 增加/缩减一个游戏计时器的时间:CHANGE_TIMER_TIME*计时器ID#时间(以天为单位,可正可负,可以为小数)
- 增加自定义计时器监视字段:ADD_TIMER_WATCHER*计时器监视信息格式(格式如:计时器ID1,显示时间格式1,缩放参数1([可选,默认1]对时间参数(天)进行缩放的系数),是否战斗中可见([可选,默认0] 0否1是)|...|计时器ID N,显示时间格式N,缩放参数N
- 移除一个计时器监视字段:REMOVE_TIMER_WATCHER*字段Key值
- 清除所有计时器监视字段:CLEAR_ALL_TIMER_WATCHERS*1
- 执行自动存档:AUTOSAVE*1
- 打开存档界面:OPEN_SAVE_DLG*1
- 打开读档界面:OPEN_LOAD_DLG*1
- 打开卡牌交换界面:EXCHANGE_CARD*对象类型(0:地点 1:队伍)#对象ID([可选,默认为当前地点] 当对象为地点时为地点ID,队伍时为队伍ID)
- 关卡完成:LEVEL_FINISH,用于剧本模式描述一关结束
- 骑马:MOUNT*角色ID
- 下马:DISMOUNT*角色ID
- 设置镜头滤镜效果:SET_CAMERA_FILTER*滤镜参数(为空为关闭所有滤镜,参数代码见6.10节)测试代码:SET_CAMERA_FILTER*黑白,0|老旧,100|暗角,100
- 播放Timeline动作:TLACTION*地图角色ID#Timeline动作文件名#动作时长
- 全屏特殊剧情选择:SELECTION_VIEW*剧情图片文件名#剧情内容(支持“\n”表示换行)#选择项(参考SELECT*)
- 对话气泡:DIALOG_BUBBLE*地图角色ID#对话内容#显示时长
- 设置任务子项的值:SETQUESTIEM*任务ID#子项index#设置的值
- 自定义战斗:BATTLE_WITH*对方角色信息(可选)#对方兵牌信息(可选)#战场地图信息(可选)#战场地点信息(可选)#战场天气(可选)#bgm(可选)
- 和当前对话人物进行战斗:BATTLE_WITH_TAGROLE*战斗ID(战斗ID只是用来触发剧情事件)
- TEXT_EXPLORE_START*文字探索地图ID。开启一场文字冒险
- TEXT_EXPLORE_OVER*。结束当前副本
- TEXT_EXPLORE_FORCE_OVER_AND_CD*。强制结束当前副本并进入CD
- TEAM_CHANGE_HP_PCT*百分比(-100~100)#提示格式(默认:none不提示。confirm:用confirm方式提示)
- TEAM_CHANGE_MP_PCT*百分比(-100~100)#提示格式(默认:none不提示。confirm:用confirm方式提示)
- 斗志变化:CHANGE_DOUZHI*(0~100)#提示格式(默认:none不提示。confirm:用confirm方式提示)
- 显示CG:SHOW_CG*图片名称(不带后缀,可为空,空就只会显示黑色背景,对应目录为Assets\BuildSource\Backgrounds,文件格式统一要求为png)
- 隐藏CG:HIDE_CG*(注意开了之后需要手动关闭CG,不然会影响玩家操作)
- 生成一张随机卡:GENERATE_RANDOM_CARD,存放在当前变量的tagcard里,用#分割
- 招募兵卡:ON_HIRE_TAGCARD,无变量,在当前变量环境中的tagplace地点中招募tagcard
- 预览卡牌:PREVIEW_TAGCARD,预览变量环境中的tagcard
- 旁白:VOICE_OVER,展现一句旁白
- CREATE_STORYARMY*tagkey#地图位置#所属阵营#人物列表(所有人物会强制离开当前队伍或地点)#卡牌单位列表(卡牌ID#等级,数目|卡牌ID2#等级2,数目2|.......)#运动信息(WANDER,2500)
- REMOVE_STORYARMY*tagkey 移除一队剧情部队
- BAZZAR_BUY_ITEM*集市ID#商人ID#交换用物品的集市ID(可选)#交换用物品的商人ID(可选)
- BAZZAR_SELL_ITEM*集市ID#商人ID
- 对话时显示角色立绘:SHOWROLE*角色1ID@角色1立绘显示位置(#角色2ID@角色2立绘显示位置)(可选)
*立绘显示位置:可以是L或者R,默认为L,立绘显示在对话框左侧,R则显示在右侧
- 对话时隐藏角色立绘:HIDEROLE*角色1立绘显示位置(#角色2立绘显示位置)(可选)
*立绘显示位置:可以是L或者R,L为隐藏左侧立绘,R为隐藏右侧立绘
- SELECT_QUEST_ASK,在普通的SELECT基础上添加满足条件的任务询问
- SELECT_TEAMROLE,选择队伍里的人物
- ROLE_PLAYER_ACTIVE,设置角色在“情报”界面中可见,传入角色ID(此方法一般用于剧情中,如酒吧女郎)
- SELECT_TALK: 前2个参数和SELECT相同,第三个参数为触发器type(不填写默认为any),不过会从触发器中选择触发类型为SELECT且满足条件的选项添加到选项中,显示的文字为触发器中的绑定选项,触发事件为触发事件ID对应的事件。使用时需要在结果中添加一行[%result_code%][>]99:EVENTPOJO_EVENT*
注意:在触发器表中触发事件ID支持增加前缀“SUB_EVENT.”来标记该事件为一个子事件。
可以使用[ADDON_SELECT]来标记需要将符合条件的SELECT插入的位置;
- 内置角色指令:ROLE_ORDER*角色ID[为空表示当前目标角色]#指令代码:指令参数表
指令代码支持以下内容:
(1) RETURN_JOBCITY:角色返回所属地点,无参数,当其为队长时直接变更队伍指令,不是队长时离开当前队伍并返回,在其他地点时则创建队伍并返回
(2) GOTO_PLACE:角色前往目标地点,参数为目标地点ID
(3) JOIN_PLAYER_TEAM:角色直接加入主角队伍,无参数
(4) FOLLOW_ME:角色集结并跟随主角队伍,无参数
(5) EXPEL_FROM_CAMP:从阵营中驱逐该角色,无参数
- ...
全局存档相关操作脚本
1. 设置自定义变量:SET_GLOBAL_INTVAR*变量ID#当前int值
2. 改变一个自定义变量:CHANGE_GLOBAL_INTVAR*变量ID#改变值(正负数皆可)#锁定最小值(可选,不填为不限制)#锁定最大值(可选,不填为不限制)
3. 设置自定义string变量:SET_GLOBAL_STRVAR*变量ID#string值
4. 将指定的角色表存入全局角色状态表中:PUSH_GLOBAL_ROLES*自定义全局存储Key#角色ID(该角色只能为非模板角色)
5. 将指定的角色表的状态从全局角色状态表读入到当前游戏模式中:PULL_GLOBAL_ROLES*自定义全局存储Key(该Key值对应的角色必须为当前游戏模式人物模板表中存在的角色)
6. 锁定当前指令队列:LOCK_CMD_QUEUE*是否锁定(0否1是,当锁定后切换游戏存档或者重置游戏模式时不会清空执行的指令队列)
7. 切换并载入到目标游戏模式:SWITCH_GAME_MODE*目标游戏模式的ID
8.
一些内置命令表:
9. 打开遭遇野怪信息面板:ENCOUNTER*1
10. 打开宝箱守卫信息面板:CHEST_INFO_DLG*宝箱ID
11. 打开宝箱代价信息面板:CHEST_COST_DLG*宝箱ID
12. 开启宝箱逻辑回调命令:CHEST_CALLBACK*回调代码(1:击败守卫 2:完成开启)#目标宝箱ID
13. 执行招募队伍中的俘虏判定:EXEC_RECRUIT_CAPS*1
14. 执行掠夺地点回调:ON_RAID_FINISH*地点ID
三、脚本预设字段及含义:
在脚本编辑中有时会使用一些特定的指令来替代具体的对象,比如CUR_ROLE可以用来替代当前遭遇对象的人物ID,这样就可以实现一些通用脚本编辑的应用场景。
目前支持的预设字段有:
CUR_ROLE:当前遭遇人物模板的ID,专门用与对话框及选择框
CUR_BATTLE:当前遭遇的大地图刷新单位对应的战斗ID
四、专门用于战斗场景的脚本命令条如下:
1. 对话框:同上
2. 选择框:SELECT同上
3. 过场字幕:SCREEN同上
4. 屏幕震动:SHAKE_SCREEN同上
5. 延时等待:DELAY同上
6. 跳转事件:EVENT同上
7. 暂停游戏:PAUSE*1 暂停当前游戏场景
8. 继续游戏:RESUME*1 继续当前游戏场景
9. 设置天气:SET_WEATHER*同上
10. BB对话框:BB*同上
11. 战斗人物对话泡泡:B_TALK*对象ID#随机文字段落1#随机文字段落2#随机文字段落3#...#随机文字段落N
对象ID通常为角色或单位的ID,当目标类型为地城刷新对象时,对象ID为该单位的控制ID
对象ID特殊值:
RND_ENEMY_UNIT:任意一个敌方小兵单位
RND_FRIEND_UNIT:任意我方小兵单位
12. 敌方单位增援:ENEMY_REINF*小兵列表命令(见小兵列表格式)
13. 我方单位增援:FRIEND_REINF*小兵列表命令(见小兵列表格式)
14. 下达撤退指令:CMD_RETREAT*0为我方全体1为敌方全体
15. 立即强制结束战斗:BATTLE_OVER*0为胜利 1为失败
16. 全灭目标:KILL_ALL*0为我方 1:为敌方
17. 主角不死:UNDEAD_PLAYER*1
18. 所有单位不死:UNDEAD_ALL*0:仅我方 1:敌我双方
19. *全体单位停止活动:STOP_ALL*0:恢复 1:停止
20. *控制单位移动:MOVE*单位ID(同上)#路径坐标表(坐标1x,y|坐标2x,y|...|坐标Nx,y)#移动速度
21. 场景使用技能:EXEC_SKILL*释放者ID#技能ID,技能等级(默认1级)#目标坐标的x,y#坐标参数1的x,y(所有坐标均为TILEDMAP的地图坐标)
释放者ID为目标的识别ID,可以有以下特殊值
PLAYER:玩家 GM_A:进攻方的预设对象 GM_B:防守方的预设对象
THIS:指令发起者(一般返回发射器自身)
EMITTER=ID:指定ID的地城发射器,可为this表示当前地城发射器
RND_FRIEND_UNIT:随机友方单位 RND_ENEMY_UNIT:随机敌方单位
当释放者为预设对象时,坐标参数1代表技能释放的其起始坐标
22. (地城)刷新已定义的地城单位:DUNGEON_SPAWN*控制ID#是否无视状态(当该单位已被击败时仍可刷新 0:否[默认] 1是)
23. (地城)设置地城专用触发器的状态:SET_DUNGEON_TS*控制ID#状态(0正常 -1禁用)
24. (地城)结束地城:DUNGEON_OVER*结果代码(0:退出 1:胜利 2:失败)
25. 设置障碍区域的状态:SET_AREA*控制ID#状态(0正常 -1禁用)
26. 设置物件的显示状态:SET_WIDGET*控制ID#状态(0正常 -1隐藏)
27. 设置地城传送器状态:SET_TP*控制ID#状态(0正常 -1禁用)
28. 设置地城发射器状态:SET_EMITTER*控制ID#状态(0正常 -1禁用)
29. 设置玩家角色的模型:SET_PLAYER_MODEL*单位模型描述信息
30. 设置玩家角色的当前技能:SET_PLAYER_SKILL*技能ID1,等级|技能ID2,等级|...|技能ID n,等级 (最多4个技能)
31. 直接执行技能指令:SKILL_CMD*技能指令内容
32. 设置地城自定义整形字段:SET_DG_INTVAR*字段ID#设置值#设置模式(可选 1为增加模式(原值加上设置值) 其他为直接赋值模式)
33. 设置大地图镜头参数:SET_CAMERA*跟随模式#参数
目前支持的镜头跟随模式及参数含义
0:跟随主角,无参数(默认)
1:跟随指定目标,参数为目标单位的对象ID
2:战场坐标位置,参数为坐标X,Y
34. 命令一个目标攻击另外一个敌方目标:ATTACK*攻击发起者对象ID#攻击目标对象ID
35. 为一个单位指定控制命令队列:CMD_QUEUE*目标对象ID#命令脚本的事件ID
其中,战斗中命令队列的设置格式为(时间参数表示该秒数后执行下一条):
指令类型1[,时间参数]:指令参数
指令类型2[,时间参数]:指令参数
...
当前支持的队列指令类型有:
skill_cmd:执行技能指令:参数为一行技能指令
use_skill:使用技能:技能ID,技能等级#目标单位对象参数#目标位置参数
event:执行战斗事件:战斗中事件ID#执行条件(可选)
move_to:移动至指定点:目标坐标参数#速度参数(该指令中时间参数无效,只有当单位正确到达目标后执行下一条)
set_dir:设置单位方向:参数为方向
keep_act:保持一个动作:动作ID(为空时表示待机动作)#循环次数(小于等于0为无限循环 默认1)#单次动作时间(<=0为始终保持 默认0) 注:此命令中时间参数无效,需等待动作循环执行结束为止,当无限循环时只有对该单位下达新指令方可结束动作保持
注意,以上命令中所有的坐标参数当为2参数时表示目标位置的x,y地图坐标,当3参数时第三个参数表示位置类型(0:地图坐标 1:战场坐标)
36. 设置一个单位的当前策略:SET_POLICY*目标对象ID#主策略类型#参数1#位置参数
当前支持的主策略类型有:
0:强攻(参数为唤醒半径,小于等于0为无限距离)
1:固守(参数为守卫半径)
2:跟随(参数为跟随半径)
3:攻略目标点
37. 设置一个单位身上的计时器:SET_UNIT_TIMER*目标对象ID#计时器ID#时间参数(<=0时为关闭 只有当单位身上挂有”on_timer”触发器事件时有效)
38. 立即释放出当前吟唱中的技能:FINISH_CAST*目标对象ID#目标技能ID(只有当目标正在吟唱该技能时生效)
39. 设置一个单位身上的基础属性(最终属性=基础属性+BUFF等附加属性):SET_UNIT_STAT*目标对象ID#属性信息表(格式为:字段1,值1|字段2.,值2|...)
40. 替换单位的当前技能表:REPLACE_SKILLS*目标对象ID#技能ID1,等级|技能ID2,等级|...|技能ID n,等级 (一次最多4个技能,当等级为0时表示移除该技能)
41. 替换单位的地城技能:REPLACE_DGSKILL*目标对象ID#地城技能ID,等级(技能ID为空或者null表示关闭该角色地城技能)
42. 播放一条战场消息:BATTLE_MSG*消息内容#消息类型(0:普通 1:警告)
43. 设置战斗结束检查器工作状态:SET_BATTLE_CHECKER*工作状态(0:关闭 1:开启)
44. 显示手动结束战斗按钮:SHOW_BATTLEOVER_BTN*1
45.
五、目前支命令结果的脚本定义如下:
返回的结果格式为(以换行符分割):
条件表达式组1:执行命令1
条件表达式组2:执行命令2
...
条件表达式组N:执行命令N
执行方式为:先判定条件表达式组1,如果成立则执行命令1,否则接着判定条件表达式组2……直到有任意一组成立,或者所有条件均不成立
n 条件表达式组格式
条件表达式组由多个形如" [%condition%][=]1"这样的条件表达式组成,以符号"|"(或) 或 符号”&”(与)进行连接,”&”(与)的优先级大于"|"(或)的优先级,当条件表达式左右值均为整数字符时,将返回其数值大小的比较结果,否则只能执行字符串比较切仅支持[=]和[<>]两种判定。
例如: [%result_code%][=]1| [%player_money%][>=]100 表示当结果为1或玩家身上有100金钱时执行
而 [%player:level%][>=]3| [%player_money%][>]100 表示玩家等级大于等于3并且身上的金钱大于100时执行
n 以下为可支持的查询方法:
1. [%result_code%]:返回当前事件中最后一个有返回结果的命令结果值(比如在剧情事件脚本中代表返回的选择框选项、输入的数值、战斗的结果等)
以下为result_code在不同类型命令下返回的含义
a) 当选择框返回时表示其选项ID
b) 当战斗结束返回时 0:战斗胜利 1:战斗失败
c) 当整数输入框时为表示输入的数字
2. [%rnd_num%]:返回一个0-100的整数
3. [%last_rnd%]:返回上次产生的随机数
4. [%player_money%]:玩家身上的金钱数
5. [%player_wood%]:玩家拥有的木材数
6. [%player_iron%]:玩家拥有的铁矿石数
7. [%player_jade%]:玩家拥有的玉石数
8. [%player_food%]:玩家当前的饱食度
9. [%player_water%]:玩家当前的饮水度
10. [%game_time%]:当前游戏中的天数
11. [%is_gametime_night%]: 判断当前是否是晚上,如果是,返回1,否则为0
12. [%is_gametime_daytime%]: 判断当前是否是白天,如果是,返回1,否则为0
13. [%mod_day:MOD%]:当前游戏的天数对MOD取余的值
14. [%generate_rob_money%]:生成当前等级遭抢劫时索取的金额
15. [%rob_money%]:获取上次生成的抢劫索取金额
16. [%get_ts:ID%]:返回一个触发器当前的状态值 0正常 1关闭
17. [%get_es:ID%]:返回一个剧情事件当前的状态 -1:未执行 其他:返回Result Code
18. [%get_es_first_time:ID%]:返回一个剧情事件的首次完成时间
19. [%get_es_time_score:ID:minTime:maxTime:maxScore%]:返回一个剧情事件的首次完成时间得分,minTime是设定的最短完成时间(在此时间前完成均为满分),maxTime是设定的最长完成时间(之后完成均为零分),maxScore为最高得分。
20. [%int_val:ID%]:返回编号为ID的自定义int值
21. [%int_val_for_calc:ID%]:返回编号为ID的自定义int值用于计算,必定存在计算值,如果ID不存在则值为0
22. [%str_val:ID%]:返回编号为ID的自定义string值
23. [%team_num%]:当前队伍总统御度
24. [%team_max%]:当前队伍统御度上限
25. [%team_unit_number:兵种key%]:返回当前队伍某种兵的人数
26. [%unit_name:兵种key%]:返回某种兵的名称
27. [%item_number:物品key%]:返回背包中某种物品的数目
28. [%item_with_tag:tag%]:返回背包中具有某种tag的物品数目
29. [%item_with_tag_and_level:tag:level%]:返回背包中具有某种tag、且物品等级>=level的物品数目
30. [%item_qualify_as_present:present_desc%]:返回背包中满足某种礼物描述字符串要求的道具数目。礼物描述字符串的格式参见人物列表excel中的Tag一列中的“Like”这个Tag的格式写法。
31. [%item_name:物品ID%]:返回物品的显示名称
32. [%admin_level%]:返回玩家在当地的管理权限 0:无 1:任职 2:城主 3:阵营领袖
33. [%gametime_elapse:ID%]:返回距上次设置的自定义游戏时间点ID过去的游戏时间(整数天数,算法是:(当前时间-ID时间)后取整。
34. [%gametime_elapse_by_day:ID%]:返回距上次设置的自定义游戏时间点ID过去的游戏时间(整数天数,算法是:(当前所在的天-ID所在的天)。一般用于一天内只能触发一次的事件。
35. [%tag_gametime_elapse%]:返回预先设置的动态tag的gametime_elapse,如果没有预先设置的动态tag,或者没有该ID,则返回-1。算法是:(当前时间-ID时间)后取整
36. [%tag_gametime_elapse_by_day%]:返回预先设置的动态tag的gametime_elapse,如果没有预先设置的动态tag,或者没有该ID,则返回-1。算法是:(当前所在的天-ID所在的天),通常用于一天内只能触发一次的事件判断。
37. [%is_custom_cd:ID%]:返回编号为ID的自定义CD时间是否已就绪(1:是 0:否)
38. [%has_gametime_elapse_tag:ID%]:查询上述的自定义游戏时间点ID是否存在(存在1,不存在0)
39. [%realtime_elapse:ID%]:返回距上次设置的自定义现实时间点ID过去的现实时间(秒)
40. [%qs:ID%]:返回指定任务ID的状态值0:未领取 1:进行中 2:已完成 3:已终结
41. [%qs:ID:index%]:返回指定任务ID的子项值,index为从0开始的子项序号
42. [%get_flag:ID%]:返回一个完成标记的当前值,没有值则返回-1
43. [%camp_rep:ID%]:返回主角对目标阵营ID的声望值
44. [%is_wanted_by_tagcamp%]: 返回主角是否被目标阵营通缉,0否,1是
45. [%is_player_triggered_encounter%]:一个遭遇对话是否是由玩家主动点击的,0否,1是。(如果玩家是被其他人追上的情况下触发对话,则此值为0)
46. [%place_rep:ID%]:返回主角对目标地点的声望值
47. [%unlock_check%]:返回当前队伍及所持物品最高的开锁等级
48. [%arg_int_val1%]:当前事件数值参数(此外还可用arg_int_val2,arg_int_val3)
49. [%g_buffs%]:返回当前队伍全局BUFF的个数
50. [%last_battle_res%]:上一次战斗的战斗结果 0:胜利 1:失败 2:撤退
51. [%last_dungeon_res%]:上一次地城的结果 0:退出 1:通过 2:失败
52. [%g_buff:ID%]:查询当前队伍是否存在目标ID的全局BUFF,存在返回1
53. [%g_buff_c:CLASS%]:查询当前队伍当前类型为CLASS的全局BUFF的个数
54. [%g_stat:STAT_FILED%]:返回当前队伍状态中字段为STAT_FILED的当前值
55. [%has_KeyValues:ID%]:直接对存储中的KV进行查询,存在相应KV为1,不存在为0
56. [%get_KeyValues:ID%]:直接对存储中的KV进行查询,存在相应KV返回相应值,不存在为空
57. [%rnd_place_id:CAMP_ID%]:返回一个由一个势力控制的随机地点id,如果没有camp_id则返回主角势力控制的随机地点id
58. [%last_rnd_place_id%]:返回上一个生成的随机地点id
59. [%last_rnd_place_name%]:返回上一个生成的随机地点的名称
60. [%last_rnd_place_map_name%]:返回上一个生成的随机地点的所在地图名称
61. [%last_rnd_place_products%]:返回当前地点的每周期产出列表,符合GETITEMS的物品格式
62. [%last_rnd_place_products_name%]:返回当前地点的每周期产出描述
63. [%last_rnd_place_has_products%]:当前地点每周期是否有产出,1为有产出,0无
64. [%last_seled_items%]:返回上一次物品选择框命令(ITEMS_SELECTOR)选择的物品列表
65. [%last_seled_roles%]:返回上一次人物选择框命令(ROLES_SELECTOR)选择的人物列表
66. [%weather:ID%]:查询当前地图中指定ID的天气效果的当前值
67. [%monster_news:X:Y%]:查询当前地图中坐标为(X,Y)附近的野怪信息,X/Y不填则为主角当前队伍所在位置信息
68. [%attack_intend_code%]:查询当前相遇的地图单位对玩家的攻击意图,详情见MuUnitBase.IntendToAttack
69. [%place_randmom_pos%]查询一个地点所在位置附近的随机位置,输出特定的字符串如:沙盒红石城:123,123
70. [%tag_role_with_role_relation%]输入参数和tagrole或place的关系
71. [%tag_role_with_city_relation%]tagrole和输入的role的关系
72.
此外还有一些字符串返回类型的查询方法
1. [$player:INFO$]:查询主角的信息INFO可为如下内容
id:角色ID
name:角色名称
level:角色等级
job_type:身份类型 0:百姓 1:阵营成员 2:城主 3:阵营领袖
campid:所属阵营ID
campname:所属阵营名称
campleaderid:所属阵营首领的ID
campleadername:所属阵营首领的名称
campleader:所属阵营首领的称呼
fame_val:个人名望值
maxhp:最大生命
maxmp:最大气力
job_cityid:任职地点ID
job_cityname:任职地点名称
state:当前状态:0:正常 1:被俘 -1:死亡
is_recruitable:是否可招募人物 0:不可 1:可招募
is_leave_team_enable:是否可以离队 0 不可以 1可以
recruit_val:当前可招募标记 0:不可 1:可招募
inteam:是否在玩家队伍中 0:不在 1:在
camp_rl:目标阵营与主角阵营之间的关系 0中立 1交战 2盟友 3己方
camp_fv_val:目标阵营与主角阵营之间的友好度具体值
fv:与玩家的友好度
player_relation_score:与玩家的综合好感评估
weapon_tag=(自定义tag字段):查询装备武器上的指定tag,如果没有武器或者指定tag不存在,都会返回[$null$]
skill_level=(技能ID):查询人物目标技能的当前等级
skill_maxlevel=(技能ID):查询人物目标技能的最大等级
skill_exp=(技能ID):查询人物目标技能的当前经验
skill_upexp=(技能ID):查询人物目标技能当前等级升级到下一级所需经验
statu=(自定义ID):查询人物属性表里的相应ID的值。如果没有则返回[$null$]
statu_int=(自定义ID):查询任务属性表里对应ID的int值,没有返回0
has_girl_friend:【主角专用】是否有女友,1表示有,0表示没有
current_girl_friend_name:【主角专用】女友姓名
girl_friend=角色ID:【主角专用】查询某人是否为主角女友
is_female:是否为女性角色,1表示是,0表示不是
需补充的(PY添加代码未说明):
haunting_chara
present_cd_clear
word
action_cost
current_patience
learn_list
could_learn_from
available_quest
2. [$called:call1:call2$]:玩家称呼(当为男性时返回call1,当为女性时返回call2)
3. [$null$]:替换为空字符串
4. [$trig_tagtype$]:当前执行事件的触发对象类型
5. [$trig_tagid$]:当前执行事件的触发对象ID
6. [$input_str$]:前一个输入框的输入结果
7. [$tagrole:INFO:ID$]:查询对象人物ID的信息,当人物ID字段不存在时为当前交互对象。INFO项同[$player:INFO$]
8. [$argvs:INDEX$]:查询当前附加的参数信息,编号从0开始。(当前用于随机事件的参数填充)
9. [$tagplace:INFO:ID$]:查询一个地点的信息,当地点ID字段不存在时为查询当前地点
INFO可为如下内容
id:地点ID
name:地点名称
campid:所属阵营ID
mapid:所属地图ID
campname:所属阵营名称
prosperity:当地繁荣度
defence:当地城防值
rep:当地好感度
security:当地治安值
size:地点规模值
lord_id:城主角色ID
tag=(自定义扩展字段KEY):返回指定的自定义字段值
is_stronghold:是否据点类型(可驻守军队)
is_weekhold:不可驻守军队的【资源点】
is_couldoccupy:当前是否可攻占
is_couldraid:当前是否可掠夺
is_raided:地点当前是否已被掠夺(处于恢复期)
is_subplace:当前是否附属地点
towers:当前地点的箭塔数量
max_towers:当前地点最大箭塔数量
stat=(状态值字段ID):获取当前地点的指定状态值
building=(指定设施ID):查询地点内指定建筑ID的设施数量
building_t=(指定设施类型):查询当地指定类型的设施数量
custom_int=(自定义字段ID):获取当前地点的整形自定义字段值
camp_rl:目标阵营与主角阵营之间的关系 0中立 1交战 2盟友 3己方
func_map=(指定字段KEY):查询对应指令事件映射表映射的字段,如func_map=hirelist
player_rep:玩家在该处的声望
hire_states:查询该处的招募状态
player_dist:玩家当前位置距离该地点的距离,如果不可达,则返回-1.
[$tagmap:INFO:ID$]:查询一个地图区块的信息:
id:区块id
name:区块名称
dominant_camp:如果存在完全统治的势力,则返回该势力名称,不存在则返回空
dominant_camps=(自定义字段ID):如果仅存在某几个指定id的势力,则返回1,否则返回0,自定义字段格式:势力1#势力2#势力3
camp_place_count=势力ID:返回在该区块某势力的据点数目
ExploreInfo=Info ID:查询某个探索地图信息的值
10. [$tagbuilding:INFO$]:查询当前目标建筑信息
id:建筑ID
name:名称
inner_id:目标建筑的地点内置ID
type:建筑类型
level:建筑等级
tag=(自定义扩展字段KEY):返回指定的自定义字段值
11. [$tagwb:INFO$]:查询当前遭遇战斗的信息INFO可为如下内容
id:战斗ID
camp_a:参战A方的阵营ID
camp_b:参战B方的阵营ID
leader_a:参战A方的领袖人物ID
leader_b:参战B方的领袖人物ID
camp_a_rl:参战A方与主角阵营的关系
camp_b_rl:参战B方与主角阵营的关系
teamname_a:参战A方的阵营及将领名称
teamname_b:参战B方的阵营及将领名称
12. [$tagteam:INFO$]/[$playerteam:INFO$]:查询当前遭遇队伍的信息INFO可为如下内容
id:队伍ID
campid:所属阵营ID
campname:所属阵营名称
state_num:当前队伍的StateNum值
from_id:来自地点的ID
from_name:来自地点的名称
lifetime:队伍自创建以来经历的游戏时间(天数)
camp_rl:目标阵营与主角阵营之间的关系 0中立 1交战 2盟友 3己方
max_attr_lv=属性字段ID: 队伍中所有角色中某属性的最高值
exist_role=角色ID:返回队伍是否存在某人物ID,是返回1否0
role_vacancy:队伍剩余的英雄可用位置
soldier_vacancy:队伍剩余的可用小兵卡牌位置
map_info:当前地图位置信息
13. [$tagcamp:INFO:ID$]:查询目标阵营信息,当ID不存在时为查询当前阵营 INFO可为如下内容
id:势力ID
campname:阵营名称
leaderid:领袖ID
leadercalled:阵营领袖的称呼
lands_count:当前该势力的领地数量
camp_rl:目标阵营与主角阵营之间的关系 0中立 1交战 2盟友 3己方
camp_rl_value :目标阵营与主角阵营之间的好感度具体数值
stat=(状态值字段ID):获取当前阵营的指定状态值
buff=(目标BUFF的ID):查询当前阵营指定BUFF是否存在(1为是)
buff_c=(BUFF类型):查询当前阵营指定类型的BUFF数量
active_state:目标阵营的活跃状态 0:不活跃 1:活跃
[$tagbazzar:INFO$]:查询当前系统传入的集市的信息
start_day:集市的开始天数
[$tagbazzarItem:INFO:bazzarID:merchantID$]:查询某个集市的某个商人在当前时候买/卖的货物信息
item_desc:货物的描述(详细)
item_desc_short:货物的描述(简略)
item_buy_price:货物的购买价格
item_sell_price:货物的卖出价格
[$tagproduct:INFO:ID$]:查询某种特产的信息,ID不填时查询当前传入的特产信息
item_name:对应道具的名称
item_id:对应道具的ID
item_level:对应道具的等级
item_price:对应道具的单个公允价
player_dist:该特产的中心位置离玩家当前位置的距离,-1表示该中心位置玩家不可达
place_include=地点ID:返回0表示指定地点没有售卖对应的道具,1表示指定地点在售卖对应的道具
place_include_tagQuestPlace:自动使用当前传入的任务发生地点信息来进行输出
available_places:返回一连串售卖该特产对应道具的地点描述
[$tagTextExplore:INFO:ID:copyID$]:查询某个文字探索地图的信息,copyID是因为探索地图可能存在多份副本,可以不填(基本上只有系统传入参数才会填这个copyID)。不填就是地图上可见的那种探索地图。
finishCount:探索地图完成次数
InCD:0表示没有CD概念或者CD已经ok,1表示正在冷却中
[$tagquest:INFO:ID$]:查询任务信息
status:0:未领取 1:进行中 2:已完成 3:已超时(等待超时惩罚) 4:已超时(等待自动领取奖励) 5:已终结
[$fixed_order:INFO$]:查询当前固定命令的信息,当固定命令不存在时必定返回[$null$]
sub_type:命令的子类型
argv_index=(参数编号,从0开始):查询当前命令的相应编号参数
14. [$temp_order:INFO$]:查询当前临时命令的信息,当临时命令不存在时必定返回[$null$]
sub_type:命令的子类型
argv_index=(参数编号,从0开始):查询当前命令的相应编号参数
15. [$arg_str_val1$]:当前事件字符参数(此外还可用arg_str_val2,arg_str_val3)
16. [$rnd_enum:PROB_A,RES_A:PROB_B,RES_B:PROB_C,RES_C[:...]$]:随机枚举值,根据所有项的概率分布返回其中一个项的RES值。比如[%rnd_enum:25,A:40,B:35,C%]表示有25%的概率返回”A”,40%的概率返回”B”,35%的概率返回”C”
17. [$tagitem:INFO$]:查询当前物品的信息,INFO可为以下内容
id:物品ID
name:物品名称
count:物品数量
group_n:最大堆叠数量
quality:物品品质
level:物品等级
main_type:物品主类型
sub_type:物品子类型
equip_type:装备类别
gendays:生产日期距离今天已有的天数
tag=(自定义扩展字段KEY):返回指定的自定义字段值
18. [$tagproject:INFO:ID$]:查询一个项目的信息,如果不填ID将从SET_TEMP_ID指定的id中读取。
id:项目id
state:项目状态(仅团体项目有效) 0:未开始 1:进行中 2:已完成
showPlaceName:项目执行地点描述
showProjectName:项目名称
roles:当前参与项目的所有角色
19. [$tagunit:INFO$]:查询当前查询目标小兵单位的信息
id:单位id
name:单位名称
level:单位等级
statu=(自定义ID):查询单位属性表里的相应ID的值
20. [$tagcard:INFO$]:查询指定卡牌的信息
id:卡牌id
name:卡牌显示名
level:卡牌等级
全局查询字段
1. [%global_int:ID%]:返回全局整形字段ID的值
2. [$global_str:ID$]:返回全局字符串字段ID的值
系统占用的intvar:
system_探索地图点数:探索地图点数
system_星星:星星数目
专门用于战斗场景中条件查询方法
3. [%result_code%]:战斗中各种事件脚本的查询结果(如:选择框的结果)
4. [%bs_time%]:当前战斗进行的时间(整秒数)
5. [%rnd:A,B%]:返回一个每次都不相同的大于等于A小于等于B的随机值
6. [%last_rnd%]:返回上一次[%rnd:A,B%]查询到的结果
7. [%const_rnd%]:返回一个执行周期内相同的0-100的随机值
8. [%last_rnd_pos_x%]:返回上一个随机位置结果的X
9. [%last_rnd_pos_y%]:返回上一个随机位置结果的Y
10. [%last_rnd_pos%]:返回上一个随机位置坐标
11. [%last_skill%]:返回上一个使用技能的ID
12. [%this_type%]:当前查询对象的类型 0英雄 1小兵
13. [%aim_type%]:当前查询目标对象的类型 0英雄 1小兵
14. [%this_level%]:当前查询对象的等级
15. [%aim_level%]:当前查询目标对象的等级
16. [%this_hp_pct%]:当前查询对象的HP百分比
17. [%aim_hp_pct%]:当前查询目标对象的HP百分比
18. [%this_mp_pct%]:当前查询对象的MP百分比
19. [%aim_mp_pct%]:当前查询目标对象的MP百分比
20. [%friends_num%]:我方剩余人数
21. [%enemy_num%]:敌方剩余人数
22. [%hit_enemy%]:判断当前命中的目标是否caster的敌人。敌方1 友方0
23. [%battle_res%]:当前当前战斗结果
24. [%skill_lv:SKILL_ID%]:查询当前source对象指定技能ID的等级,无则返回0
25. [%base_atk%]:当前技能等级所对应的基础物理攻击力
26. [%base_magic_atk%]:当前技能等级所对应的基础魔法攻击力
27. [%standard_magic_atk%]:当前技能等级所对应的魔法最终攻击力
28. [%this_buff:BUFF_ID%]:查询当前source对象指定BUFF_ID的当前层数
29. [%aim_buff:BUFF_ID%]:查询当前target对象指定BUFF_ID的当前层数
30. [%stat:STAT_FIELD%]:查询当前source指定属性字段的当前数值
31. [%aim_stat:STAT_FIELD%]:查询当前target对象指定属性字段的当前数值
32. [%this_weapon%]:当前查询source对象的武器类型
33. [%aim_weapon%]:当前查询target对象的武器类型
34. [%charge_val%]:本次伤害的蓄力值(0~100)
35. [%cmd_argval%]:当前命令行的参数值
36. [%cmd_argval_next%]:返回当前命令行参数值后立即加1
37. [%rpt_index%]:当前命令行所在循环的INDEX值
38. [%find_tag:TAGINFO%]:执行一次目标单位查找,TAGINFO为目标单位信息,参数格式见7.4章说明,当查询到合适目标时返回1否则返回0
39. [%add_find_tag:TAGINFO%]:从已查找单位列表中增加目标单位,始终返回1,TAGINFO同上
40. [%rm_find_tag:TAGINFO%]:从已查找单位列表中排除目标单位,始终返回1,TAGINFO同上
41. [%reset_find_list%]:重置当前查找列表,始终返回1
42. [%rnd_enum:PROB_A,RES_A:PROB_B,RES_B:PROB_C,RES_C[:...]%]:随机枚举值,根据所有项的概率分布返回其中一个项的RES值。比如[%rnd_enum:25,1:40,2:35,3%]表示有25%的概率返回”1”,40%的概率返回”2”,35%的概率返回”3”
43. [%dg_sp_state:ID%]:返回当前地城中ControlID为ID的刷新单位的当前状态 0:未刷新 1:已刷新 -1:已击败
44. [%dg_unitnum:TAG%]:返回当前地城中剩余未击败并且Tag为TAG的地城刷新单位的个数
45. [%fd_sum%]:当前查询source对象的友军倒下计数器值
46. [%ed_sum%]:当前查询source对象的敌军倒下计数器值
47. [%fd_mod:MOD_VAL%]:当前查询source对象的友军倒下计数器值与MOD_VAL取余后的值
48. [%ed_mod:MOD_VAL%]:当前查询source对象的敌军倒下计数器值与MOD_VAL取余后的值
49. [%dg_int_val:KEY%]:返回指定KEY的自定义地城整形字段的值
50. [%emitter_pos:ID,MIN-MAX%]:返回指定指定ID的发射器中心位置,距其中心MIN至MAX的一个随机位置,并记录入last_rnd_pos
51. [%unit_timer:UNIT_ID,TIMER_ID%]:返回指定UNIT_ID单位身上所附加的ID为TIMER_ID的计时器剩余时间
52. [%this_intvar:ID%]:返回当前查询source对象身上的自定义整形数值(技能指令set_unit_intvar设置)
53. [%aim_intvar:ID%]:返回当前查询target对象身上的自定义整形数值(技能指令set_unit_intvar设置)
54. [%defeat_hit%]:查询当前命令是否是在击杀单位指令中执行的并且目标单位已被击杀(0:否 1:是) 注意:只能在技能中的命中命令指令中生效
55. [%eft_count:TAG%]:查询当前场上指定TAG的特效体数量 注意:仅支持查询由caster本单位创建的特效体
56. [%this_id%]:当前查询对象的单位ID
57. [%aim_id%]:当前查询目标对象的单位ID
58. [%hit_dmg_val%]:查询当前施法中对目标造成的实际伤害或治疗的实际数值 注意:只能在命中指令中生效
59. [%stealth_hit%]:查询当前技能或伤害是否是在隐身状态下进行的 0否1是
60. [%hit_count%]:查询当前技能命中判定生效的次数
61.
n 以下为支持的比较符号
[=]:等于
[>]:大于
[>=]:大于等于
[<]:小于
[<=]:小于等于
[<>]:不等于
执行命令格式
执行命令格式同脚本内容命令格式。
n 对话内容内可支持指定文字颜色,格式如下:
这是一段[[imp:红色字体]],[[red:红色字体]],[[&ff6699ff:自定义颜色]]的字体
可支持的颜色格式如下(自定义颜色需用"&"符号替换"#"):
place:地点名称的统一颜色
role:人物名称的统一颜色
camp:阵营名称的统一颜色
item:物品名称的统一颜色
imp:重要信息的统一颜色
quest、aqua (same as cyan) | #00ffffff | 任务 |
black | #000000ff | |
blue | #0000ffff | |
brown | #a52a2aff | |
cyan (same as aqua) | #00ffffff | |
darkblue | #0000a0ff | |
fuchsia (same as magenta) | #ff00ffff | |
green | #008000ff | |
grey | #808080ff | |
lightblue | #add8e6ff | |
lime | #00ff00ff | |
magenta (same as fuchsia) | #ff00ffff | |
maroon | #800000ff | |
navy | #000080ff | |
olive | #808000ff | |
action 颜色是moccasin | # ffe4b5 | 特殊动作 |
present 颜色是plum | #dda0dd | 送礼 |
learn 颜色是sandybrown | #f4a460ff | 请教 |
orange/master | #ffa500ff | 拜师 |
almz 颜色是springgreen | #00ff7f | 施舍 |
purple | #800080ff | |
red、fight | #ff0000ff | |
beg颜色是darkgoldenrod | # b8860b | 乞讨 |
silver | #c0c0c0ff | |
teal | #008080ff | |
white | #ffffffff | |
yellow | #ffff00ff |
六、各种列表命令格式:
1. 小兵列表命令:单位1,最小数量,最大数量,最小等级,最大等级|单位2,最小数量,最大数量,最小等级,最大等级|...|单位N,最小数量,最大数量,最小等级,最大等级
2. 动画动作命令:贴图名称前缀,动作总帧数,起始帧序号(贴图后缀的首序号),每帧停留,循环次数(-1一直循环)
3. 人物位置格式:位置代码:位置参数
支持的位置代码有 0:未分配 1:地点中 2:队伍中
当为1地点中时:格式如下 1:地点ID,设施ID (设施ID为空表示在设施外部)
当为2队伍中是:格式如下 2:队伍ID
4. 伤害值表达式由形如 key1:value1;key2:value2;...keyN:valueN这样的格式键值组合组成。
伤害值表达式可通过“[&expression&]”的格式嵌入到一些数值表里(如BUFF列表的状态值等);
目前可支持的键值有:
a. type 伤害类型:0:普通近战攻击 1:普通远程攻击 2:技能伤害 3:治疗 4:回蓝
b. dmg 物理伤害数值,值为伤害值公式
c. t_dmg 真实伤害数值(所有治疗效果都为此值),值为伤害值公式
d. hit 命中参数(-1000~1000) 当不能闪避时为-1000
e. blk 被招架参数(-1000~1000) 当不能被招架时为-1000
f. cri 暴击参数(-1000~1000) 当不能暴击时为-1000
g. act 是否播放受击动作 1是 0否
h. eft 受击特效ID
i. trig 是否触发伤害效果(如反伤等)
j. attack_type 指定伤害的武器攻击类型
k. buff 受到该伤害时附带的BUFF效果, 格式为 BuffID,[time],[overlay],两个参数为可选参数,分别表示时间及层数
伤害值公式仅支持标准数学公式,包含以下运算符号:+-*/^%(),可嵌入一些预定义字段,所有预定义字段写在形如[%cmd%]的格式内,目前支持的预定义字段有:
[%rnd:min_val,max_val%]:随机一个大于等于min_val,小于等于max_val的整数
[%field%]:field表示任意一个定义在角色属性字段中的数值
5. 特效信息格式: 特效类型#特效代码#位置类型
特效类型支持:
a. an 帧动画类型:特效代码为动画动作命令(见第2节)
b. ps 粒子效果类型:特效代码为粒子特效GameObject预制体名称
c. 111
6. 特定战斗限制命令:
命令格式为:命令1:参数1;命令2:参数2;...命令N:参数N;
支持的限制命令如下:
a. player 重置队伍英雄列表 格式为:人物ID1,重置等级(-1或不填表示不重置)|人物ID2,重置等级|人物ID3,重置等级|...|人物ID N,重置等级
b. units重置队伍小兵列表 格式为见本章第1小节
c. add_stat 附加角色属性状态 格式为:目标人物ID#状态表
7. 大地图单位命令表:
大地图单位单位命令由命令类型+命令内容组成,多行以“;”进行分隔,每行指令以指令类型代码+”,”开头,后面为指令参数,例如:
1,测试地图:100,100;1,测试地图:100,200;99,0
上述代码表示先移动到测试地图的坐标1(100,100),再移动到2(100,200),然后解散队伍;
目前支持的指令类型代码如下:
1:向大地图坐标移动 参数为目标地图坐标(地图坐标格式 地图ID:坐标X,坐标Y)
2:在原地停留 参数为停留时间
3:进入地点 参数为目标地点ID
4:攻打目标地点 参数为目标地点ID,攻占方式(0:占领 1:掠夺)
5:在目标地点内停留 参数为目标地点ID,停留时间
7:执行一个事件 参数为事件ID
8:更改当前StateNum值 参数为新的StateNum值
9:永久执行自定义运动命令,参数格式:运动方式,参数表
目前可支持的运动方式及参数格式:
范围内游荡:WANDER,运动半径,[中心坐标X,中心坐标Y](如不指定中心坐标则以当前位置为中心)
巡逻运动:PATROL,坐标1X,坐标1Y,坐标2X,坐标2Y,...,坐标NX,坐标NY(当第一个坐标等于最后一个坐标时执行循环运动,否则为往复运动)
其他为静止不运动
10:加入一个战团 参数为战团的数字ID(系统内置方法,不推荐调用)
11:执行一个动作 参数格式为:动作ID,循环次数(-1无限循环 ≥1有限次循环,当动作自身是循环动画时设置为1即可),单次动作时间(秒为单位,当非无限循环的动作次数播放结束后执行下一条指令),播放对象(0默认全体 1仅领队 2所有追随模型),初始帧区间(0~1之间,1为动画最后一帧。-1为随机取0~1之间的值),播放结束后是否转入下一个指令(默认为0否 1是)
模型当前支持的默认动作表:
循环动作:待机、移动、慢走、冲锋、蓄力
单次动作:受击、闪避、格挡、攻击、射击、横劈、顺劈、直击、释放、咆哮、击飞、跳跃、庆祝、死亡
12:掠夺一个地点 参数为目标地点ID
13:开宝箱 参数为宝箱ID
14:执行一个TimeLine动作 参数格式为:TimeLineID,持续时间(默认-1,始终持续,当>0时播放执行时间后结束)
15:改变当前队伍对玩家的态度 0:中立 1:敌对
16:改变当前队伍移动速度 参数为目标移动速度
17:交易成功 参数为交易目标地点ID
18:进行交易 参数为交易目标地点ID
19:跟随队伍目标 参数为跟随目标的控制ID
99:解散当前队伍
8. 物品列表命令格式:
物品代码1,数量1[,细节信息表]|物品代码2,数量2[,细节信息表]|....|物品代码N,数量N[,细节信息表]
细节信息表为格式为"key1=val1,key2=val2,..."的字典表,其支持以下信息字段内容:
【mf】自动匹配创建词缀:mf=最低品质N-最高品质N[-变量数值附加基数]
例:长剑,1,mf=0-3 说明:以mf开头的词缀代码表示自动适配出品质从0-3之间的词缀(0为不附带词缀)。
【cw】创建制定词缀:cw=词缀ID+变量数值附加基数(0-100)
例:长剑,1,cw=吸血剑+50 说明:表示附带吸血剑指定词缀的物品,所有变量数值指定由50-100之间。
【w】指定物品词缀详情:w=词缀ID$[变量代码数组]
【qv】指定物品属性的变量数组:qv=变量代码数组
【p】指定物品的记录买入价格:p=买入价格
变量代码数组由列数为2的二维数组组成,列1为枚举值,列2为品质数值(0-100),以”/”进行连接。比如一个词缀有3条词条,那么他的变量数组可能为:0/50/0/100/0/100
9. 目前游戏中支持的天气效果ID有:
1) 雨:强度为0时关闭 1~50为普通 50~100为大雨
2) 雪:强度为0时关闭 1~50为普通 50~100为大雪
3) 风沙:强度为0时关闭 1~100
4) 雷电:强度为0时关闭 1~100
5) 雾:强度为0时关闭 1~100
6) 黑暗:强度为0时关闭 1~100
7) 炎热:强度为0时关闭 1~100(热变形特效)
8) 云:强度为0时关闭 1~100(晴天时地面的云朵阴影)
9)
地图中默认天气效果填写格式如下:
概率1,持续时间1:[天气效果描述信息1];概率2,持续时间2:[天气效果描述信息2];概率3,持续时间3:[天气效果描述信息3];[...];概率N,持续时间N:[天气效果描述信息N]
比如:30,1:;50,3:雨,20|雾,10;20,5:风沙,30
表示30%的概率持续一天无天气效果,50%的概率持续3天下雨,20%的概率持续5天风沙天气
10. 目前游戏中支持的镜头滤镜效果ID有:
1) 暗角:强度为0时关闭 1~100为镜头边框的暗影程度
2) 黑白:强度为0时关闭 1~100为同一黑白照片效果
3) 老旧:强度为0时关闭 1~100为老旧(泛黄)照片效果
4)
11.
人物可使用的TAG:
LIKE:类型1|类型2|...:标识人物所喜欢的物品类型,影响好感度提升速度
DEF_WEAPON_SPEED:默认的武器速度,有此tag时会在人物不装武器时候以此速度为默认武器速度
地点可使用的TAG:
中立不可攻打:有此tag为不可攻打地点
AI出征关闭:有此tag的据点不会主动出征、巡逻、占领资源点
中立条件攻打:在没有设置customInt[取消中立]=”1”之前,不可攻打,之后可攻打
迷你地图显示:除城镇地图默认显示外,其他地方如果要显示必须此tag=1
迷你地图不显示:顾名思义
大地图隐藏名称:在大地图上不显示名称
物品可使用的TAG【回车符分割不同tag】:
不可丢弃或出售:顾名思义
不占背包格子:顾名思义
全局的特定INTVAL:
关闭治安与暴乱系统=1:任何地点都不会暴乱,UI上治理相关信息全部去除
主角经验倍率=百分比(如10表示增加10%的经验获取速率)
队伍经验倍率=百分比(同上,仅限主角所在队伍,与主角经验倍率叠加)
全局经验倍率=百分比(同上,该模式中所有人获取经验的倍率,与以上叠加)
12. 物品道具词条类型:物品道具的词条以“词条类型:{枚举信息1,数值1;枚举信息2,数值2;...}”的格式设置在物品表中,其中词条类型分为以下几种:
a:被动增加角色属性,枚举信息为增加属性的Key
skill:增加角色可用技能,枚举信息为技能ID
dg_skill:替换角色当前的地城技能,枚举信息为地城技能ID
13. 物品掉落信息格式:概率1,物品ID1,最低数量,最高数量[,附带参数表(同6.8节)]|概率2,物品ID2,最低数量,最高数量[,参数表]|...|概率N,物品N,最低数量,最高数量[,参数表] (如LOOT*100.0,金钱,100,200|50.0,经验,100,200 表示100%的概率获取100~200金钱 50%的概率获取100~200经验)
其中,物品ID一项可指定特殊ID “QUERY”,表示从全局掉落表中查询一个掉落结果并返回。(见Q全局掉落表.xlsx 中格式)
QUERY的参数表格式为“参数1=val1,参数2=val2,....”,可支持以下查询参数:
【id】直接从全局掉落表中取目标ID的结果(此项存在且不为空时将忽略所有其他查询条件)
【lv】指定的适配等级,当-1时适配所有查询结果 当为0时以主角当前等级进行查询
【tag1】查询筛选TAG1
【tag2】查询筛选TAG2
【tag3】查询筛选TAG3
14.
七、技能命令编辑说明
以下命令适用于战斗中技能的效果与事件。
技能命令条以”\n”换行符分隔,每条由延迟时间*[条件表达式(可选)]#命令内容组成,参考格式如下:
0*条件表达式1#技能命令1
0.2#技能命令2
……
当条件表达式不为空时,根据条件表达式判定结果执行。
条件语句中可以使用一些内置命令来实现一些例如重复之类的特殊效果,例如
*REPEAT_START:9
语句1
语句2
[@0.01*[%rpt_index%]@]#技能命令
...
语句N
*REPEAT_END
表示将REPEAT_START行与REPEAT_END之间的所有行重复9遍,期间可以通过[%rpt_index%]来查询当前语句处于第几次循环
*SELECT_UNITS:[目标筛选条件表达式](注意,次数查询cast_info中的target为当前单位)
语句1
语句2
...
语句N
*SELECT_END
表示对SELECT_UNITS行与SELECT_END之间所有的命令行,对SELECT_UNITS:后所有满足指定条件表达式的对象使用,并以该对象作为caster对象
其中,嵌入到[@...@]中的语句为保留两位小数的结果运算取值,此类查询仅在技能命令中有效。
目前支持的技能命令有:
1. stop_act:立即停止当前所有技能动作并按照之前指令行动
stop_act#1
2. add_eft:向战场中添加一个预定义的特效体
add_eft#特效体ID#初始位置#运动参数#修改伤检对象(可选,为空时为默认)#附带伤害表达式(可选,为空时按照特效表中定义的伤害表达式计算,格式见6.4节)#目标参数(见7.4节说明)#特效体TAG(用于replace_eft指令查询)
初始位置格式为:位置类型,偏移x,偏移y,偏移z(偏移量为相对于初始方向的偏移)
支持的位置类型有:
cast_pos:技能施放动作的预设位置
tag_pos:技能施放目标单位或者目标坐标的位置
hit_pos:技能命中目标单位当前的位置
unit_pos:技能施放单位当前的位置
start_pos:技能释放时的开始位置
rnd_pos:技能释放单位周围一个任意的位置
dim_pos:通过set_dimpos命令定义的预设位置
reinf_pos:施法者阵营方的增援位置
emitter_pos=EMITTER_ID:ID为EMITTER_ID的发射器发射点位置
unit_round=DIR:LEN:距离施法者正方向偏移DIR角度,距离为LEN的位置
rnd_round=RAD[-MIN_RAD]:施法者半径RAD范围内的随机位置,可选参数MIN_RAD表示随机范围距中心的最小距离,默认为0
eft_pos=TAG:返回查询到的第一个指定特效体TAG的特效体位置,如不存在则返回caster的当前位置 注意:仅支持查询由caster本单位创建的特效体
……
运动参数格式为:运动类型:运动参数(形如:参数1,参数2,参数3.....)
支持的运动类型有:
l 0:不运动 无参数
l 1:运动至技能目标点 偏移x,偏移y,偏移z
l 2:运动至技能目标单位 无参数(当目标参数不为空时使用目标参数指定的目标,否则按照技能释放目标)
l 3:向指定方向运动 偏移角度,移动距离(最大不超过战场宽度)
l 4:向指定方向往返运动 偏移角度,移动距离(最大不超过战场宽度)
l 5:跟随目标运动 跟随类型(0固定相对位置,1发射点位置),偏移x,偏移y,偏移z,持续时间(-1为永久)
l 6:运动至dim_pos 偏移x,偏移y,偏移z
l .。。
3. dmg_check:进行伤害判定
dmg_check#判断类型#伤害值表达式#目标对象参数#判断参数表(“,”分隔)#是否过滤掉重复检定对象(可选,默认关闭)
支持的判断类型有:
l 0:单体判断(目标对象参数为目标单位见下一小节,为空表示技能目标)
l 1:半径范围判断 目标对象参数为目标类型(0:敌方 1:我方 2:双方) 参数表中参数1为参考位置类型(见add_eft命令的位置类型) 参数2,3,4,5分别为偏移坐标的x,y,z及半径
l 2:多边形范围判断 目标对象参数同上 参数表中参数1同上 参数2为旋转角度 参数3为多边形顶点数,参数4以后为以参考点坐标为(0,0)的多边形坐标信息
4. add_buff:对目标施加BUFF
add_buff#buff ID#BUFF目标参数#持续时间(如不指定则采用BUFF默认持续时间)#叠加层数(默认为1)#上限层数(默认为配置表中的数值,只有大于0时生效)
可支持的内置目标参数有:
caster:技能释放者
target:目标单位(指向性技能的目标或技能命中的目标)
roleid,ROLEID:查询单位绑定人物ID为ROLEID的一个目标对象
buffgiver,BUFFID:查询当前caster身上一个ID为BUFFID的BUFF给与者
find_tag_res:查询指定目标的结果单位(必须先执行一次[%find_tag:TAGINFO%]查询才可调用)
tag_next_fu,距离D:当前命中目标的下一个小于距离D的友方单位
caster_next_fu,距离D:施法者的下一个小于距离D的友方目标
caster_next_eu,距离D:施法者的下一个小于距离D的敌方目标
5. remove_buff:移除目标的BUFF
remove_buff#移除目标(同上)#移除方式#参数1,参数2,参数3...
目前支持的移除方式如下
l 0:全部移除
l 1:移除指定BUFF 参数1为BUFF ID,参数2为移除层数(默认-1为全部移除)
l 2:移除有害BUFF 参数1为移除数量(默认-1全部移除),参数2为BUFF子类型(默认-1不限)
l 3:移除有益BUFF 参数1为移除数量(默认-1全部移除),参数2为BUFF子类型(默认-1不限)
1:
6. dart_move:突进类移动
dart_move#动作ID#移动类型#速度参数#冲撞质量#绑定特效#运动结束承接技能,技能等级(默认1级)[可为空],时间偏移(秒,在运动结束前开始执行承接技能向前的时间偏移量>=0)[可为空]#操作对象(可选,默认为caster)#修正目标位置(可选,参数格式见节2)#是否强制(默认0 为1时强制移动)
移动类型分为:
0:匀速运动
1:跳跃
2:击退运动
3:击飞运动 (当为击飞运动时,速度参数为击飞的滞空时间)
速度参数为角色移动时的水平速度(当速度小于等于0时为闪现至目标)
冲撞质量在匀速运动时表示刚体质量,0为无视碰撞 (当为跳跃运动时该参数代表跳跃高度)——由于不使用物理引擎了,目前暂时无用了,参数还必须要填写。
绑定特效为运动时附加在单位上的特效ID
运动结束承接技能为执行运动结束后立即执行的技能ID
7. stop_dartmove:停止当前突进运动
stop_dartmove#1
8. explode:在目标位置进行一次爆破物理效果
explode#初始位置(见2节解释)#爆破半径#力度参数
9. add_force:对目标单位进行一次击退效果
add_force#力度参数#目标单位(可省略,默认target)
10. play_sound:播放一个指定音效
play_sound#音效ID#音效位置(同第一节解释)
11. unit_sound_dic:单位根据模型配置播放指定音效字典中的字段对应音效
unit_sound_dic#音效字典KEY值#单位目标参数
12. cast_sound:播放一个指定音效(在施法者处)
cast_sound#音效ID
13. chain_eft_to:播放一个链式特效
chain_eft_to#释放单位#目标单位#特效预制体#传播速度(-1为瞬间)#维持时间#命中目标的伤害值表达式
释放目标的参数同本章第4小节
14. taunt:嘲讽效果,让目标立即攻击释放者
taunt#释放者#目标单位
15. use_skill:立即触发一个不需要吟唱时间的单体目标技能(可以是当前施法者没有的技能)
use_skill#技能ID,技能等级(默认1级)#释放者#目标单位#目标位置(同2小节,为空表示同目标单位位置)
16. set_cmd_val:操作当前命令行参数
set_cmd_val#操作方式#操作值D
操作方式:0:设置为值D 1:增加值D 2:减少值D
注意:与其他缓冲后一次执行的指令不同,该指令不会进入执行队列,将立即执行生效。这是为了在一些需要在执行语句上下文中使用临时变量进行信息中继所设计的结构。
17. set_dimpos:设置预设位置参数
set_dimpos#操作方式#操作参数[#偏移参数(仅在查询单位位置时生效)]
操作方式:
0:我方增援出兵位置 操作参数分别为 x,y,z的偏移
1:查询目标单位位置 操作参数为查询指令(见第4小节)
2:查询技能参数位置 操作参数为查询指令(见第2小节位置信息)
18. play_sk_act:播放一个已定义的技能动作
play_sk_act#目标单位#技能动作ID名称#播放速度系数(默认1)#是否停止移动(默认否)
19. summon_unit:召唤一个单位
summon_unit#召唤方式#对象参数[,血量百分比(可选参数,默认为100)]#初始位置参数#持续时间#附加状态表#附加特效参数
召唤方式:0:对象的镜像 1:通过人物ID召唤 2:通过小兵ID召唤
对象参数: 当召唤方式为0时表示对象单位(参考本章4节);当召唤方式为1时表示人物模版ID,等级;当召唤方式为2时表示兵种单位ID
初始位置参数见本章2节
持续时间小于等于0时表示本次战斗永久持续,大于0时表示持续秒数
附加状态为该单位的附加属性表,如: s_生命,-[&[%s_生命%]*0.5&]|s_攻击,-[&[%s_攻击%]*0.5&] 表示召唤出的单位生命与攻击力均为原单位的一半
附加特效参数:默认为0 当为1时显示半透明影子效果
20. set_unitpos强制改变目标单位的当前位置
set_unitpos#操作对象(同4节)#位置信息(同2节)
21. set_active设置目标单位的激活状态
set_active#操作对象(同4节)#是否激活(1是0否),是否隐藏(1是0否,仅在非激活时有效)
22. kill_unit目标立即被击倒(无视无敌属性)
kill_unit#操作对象(同4节)
23. down_unit目标主动倒下
down_unit#操作对象(同4节)
24. b_talk在目标头上弹出一个对话气泡
b_talk#操作对象#对话内容#持续时间(秒数,可省略)
25. yell目标呼喊出几个字(多为技能)
yell#操作对象#喊话内容
26. warning_area播放一个圆形战场警告区域
warning_area#目标位置信息#半径#持续时间(秒)
27. timeline播放一个TimeLine技能对象
timeline#指定的TimeLine ID
28. block_act 设置当前施法者的动作锁定状态
block_act#状态类型(见下表)#是否可打断该状态(0否1是)#锁定时间(单位:秒 Timeline里编辑时可不指定该时间,以再度调用 block_act#0#0#0的时间差为准)
可用的锁定状态
0:不锁定
1:锁定攻击及移动
2:仅锁定攻击
29. camera_shake 镜头抖动
camera_shake#时长(秒)#幅度
30. rotate 控制角色进行旋转
rotate#目标参数(见7.4)#起始偏转角度(相对于当前方向)#共计旋转角度数(负数为反转)#持续时间(秒)
31. replace_eft:查找并用指定的特效体在当前位置替换目标特效体
replace_eft#指定的特效体TAG#匹配数量(≤0时为匹配全部,>0为匹配生成时间最早的有限几个)#用于替换的特效体ID(可为空表示直接停止目标特效)#初始位置(默认空或hit_pos为替换目标的当前位置,否则同add_eft)#运动参数#修改伤检对象(可选,为空时为默认)#附带伤害表达式(同add_eft)#目标参数(同add_eft)#特效体TAG(用于replace_eft指令查询)#原特效体创建者的对象参数(可选,默认为所有人)
32. hitstop 角色顿帧
hitstop#操作对象#曲线起点降速幅度(倍率)#曲线终点降速幅度(倍率)#时长(秒)
(结束后角色动作速度恢复为1倍)
33. global_hitstop 全局顿帧
global_hitstop#曲线起点降速幅度(倍率)#曲线终点降速幅度(倍率)#时长(秒)
(结束后全局速度恢复为1倍)
34. set_skill_cd 更改施法者的技能CD
set_skill_cd#技能ID表(为空或者为ALL表示单位的所有技能,多个技能ID以”|”分隔)#操作方式(0:减少 1:直接赋新值)#操作值(单位:秒)
35. get_items 战斗中立即获得道具或资源(增加的道具只对主角自己使用时有效)
get_items#道具列表(道具表格式同剧情指令中的GETITEMS指令)#获得道具的对象目标参数
36. set_unit_intvar 为此单位设置一个自定义的整形变量值
set_unit_intvar#变量ID#操作方式(0:±改变 1:直接赋值)#操作值#操作对象目标参数(可选,默认为施法者)
37. call_battle_event 执行一个指定的战斗事件
call_battle_event#事件ID#执行者的目标参数(可选,事件脚本中THIS对象的默认值)
38. change_skill 替换施法者单位的当前技能列表
change_skill#技能列表信息
39. revert_skill 还原施法者的当前技能列表
revert_skill#1
40. change_dungeon_skill 替换施法者的地城技能
change_dungeon_skill#技能ID,等级
41. revert_dungeon_skill 还原施法者的地城技能
revert_dungeon_skill#1
42. replace_tag_skill 将一个单位的指定技能暂时替换为其他技能
replace_tag_skill#原技能ID#替换为新的技能ID,等级(如需还原该技能则为空)#替换时长(≤0时为永久,>0为持续指定秒数)#对象单位目标参数
43.
八、地图假人设置及控制方法说明
大地图上,可在任意对象层中设置一些mtype为dummy的矩形区域,同时可以添加以下一些自定义字段来完善该单位信息:
(带*号的为可选字段,如不填将由默认值代替)
1. dummy_id:假人全局索引编号(可重复,如重复则为批量控制)
2. model_id:大地图单位模型
3. *role_id:绑定对象人物的ID(默认为空时不显示目标名称)
4. *init_state:初始状态 -1:隐藏(默认) 0:正常
5. *init_dir:初始方向(默认0)
6. *move_info:假人行动方式(默认为静止。)命令格式参考6.7.9节
7. *interative:是否可交互0:否 1:是(默认)
8. *move_speed:假人移动速度 (默认为100)
9. *camp_id:所属阵营 (默认为空)
当需要绑定假人类型的地图交互触发器时,需指定触发事件为“encounter”,触发类型为“DUMMY”,触发ID为假人的dummy_id
九、地图宝箱设置说明
地图上可设置一些奖励类的可交互对象,当点击时会执行脚本并获取奖励
该类宝箱对象需要将mtype设置为chest,同时添加以下自定义字段:
1. chest_id:宝箱全局索引编号(可重复,如重复则为共享CD并批量控制)
2. info_id:宝箱的描述信息编号(所有信息定义在“地图宝箱信息表.xlsx”中
3. *init_state:初始状态 0:未开启(默认) -1:已开启
4. *init_dir:初始方向(默认0)
十、地图野怪设置说明
野怪属于地图刷新单位的一种,实现机制复用了地图假人系统。
设置地图野怪首先需要在Tiled中定义野怪刷新的位置和信息,设置方法为将矩形对象的mtype设置为monster,同时添加以下自定义字段:
1. monster_id:野怪的全局索引编号(可重复,如重复则为共享CD并批量控制)
2. m_group:野怪的索引组(所有信息定义在“野怪投放适配表.xlsx”中
3. min_lv:适配到的最低等级
4. max_lv:适配到的最高等级
5. *init_state:初始状态 0:未开启(默认) -1:已开启
6. *init_dir:初始方向(默认0)
7. *move_info:野怪行动方式(默认为静止。)命令格式参考6.7.9节
8. *move_speed:野怪移动速度 (默认为100)
9.
十一、游戏数据中运算值表达式系统说明
在游戏中很多地方可以以“[&expression&]”的格式嵌入一些数值公式进去(如BUFF列表的状态值等)
数值公式中支持一些基本数学运算,目前支持的运算符号如下:
1. +:加法运算
2. -:减法运算
3. *:乘法运算
4. /:除法运算
5. %:模运算(取余)
6. ^:幂运算
7. ( ):改变运算优先级
此外,当数值公式以 @func(expression1,expression2...) 的格式出现时,则调用相关的内置函数返回计算结果。目前支持的内置函数如下(注意:当前此等内置函数只能用于最外层的计算)
1. @min(a,b):返回a与b中较小的一个值
2. @max(a,b):返回a与b中较大的一个值
比如某段数据中[&1+2*3&]将会被替换为7,[&@max(1+2*3, 8)&]将会被替换为8,[&@min(1+2*3, 8)&]将会被替换为7……
十二、单位对象附加触发脚本编辑说明
通过在地城单位对象中的触发命令中定义,可对该单位附加若干触发器脚本。角色表中角色也可以通过在TAG中指定attached_script字段为一个脚本事件ID来给该角色附加触发脚本。定义格式为:
[CMD_BEGIN]#触发类型1#触发条件(可选)#触发参数(可选)
命令行1
命令行2
...
命令行N
[CMD_END]
[CMD_BEGIN]#触发类型2#触发条件(可选)#触发参数(可选)
命令行1
命令行2
...
命令行N
[CMD_END]
...
每个对象可挂载多个地城对象触发器,当前已支持的触发类型有:
on_spawn:当刷新出时
enter_combat:进入战斗
get_hurt:单位受到伤害
dead:单位死亡时
on_timer:当单位身上的计时器(战斗指令SET_UNIT_TIMER设置)到时时触发
on_skill:该单位开始释放技能时触发 触发参数位技能ID
hp_pct:单位血线第一次少于目标百分比时触发 触发参数位目标血线的百分比
以下为一段示例附加脚本:
[CMD_BEGIN]#enter_combat#
B_TALK*THIS#关门,放狗!
[CMD_END]
[CMD_BEGIN]#get_hurt#[%this_hp_pct%][<=]5&[%dg_int_val:测试计数器1%][<=]0
SET_DG_INTVAR*测试计数器1#1#1
SKILL_CMD*THIS#THIS#0#add_buff#中立#caster B_TALK*THIS#别打了!别打了!我认输,什么都给你!
CMD_RETREAT*1
[CMD_END]
十三、特效对象事件脚本指令格式
特效对象可以附加 eftEffectEventHelper 脚本为其增加播放事件,每个事件的输入格式为: 事件时间点(start后的秒数):指令类型,参数1, 参数2,....,参数N
目前支持的指令类型有:
shake_cam:晃动屏幕 参数1为晃动时间 参数2为强度
play_sound:播放一个声音 参数1为声音ID