Barotrauma

Barotrauma

MGME SCRIPT
whosyourdaddy  [developer] 17 Feb, 2023 @ 5:35am
自定义模式制作教程(新版)
自定义模式制作教程(新版)
提示:在编辑器里可以打开各种自定义模式地图模板

游戏开始后,如果开启了自定义模式,插件会读取并尝试解析地图内特定的Item(物品),并根据读取的内容对当前地图的游戏玩法进行改装,最终产出诸如推塔、占点、复活赛、歼灭战、防守、PVPVE闯关、杀鸡、一战等各具特色的游戏模式。

根本性的玩法主要由地图上特定Item决定,如果在地图上没有给出任何特定Item,那么所有的玩法配置都采用默认的选项,此时是最为标准的复活赛玩法,各队的玩家需要在规定的时间内凭借初始的武器装备,通过摧毁设施、占领据点、击杀敌军等方式来获得分数,在分数达到目标后即可取得胜利。

因此,对任何游戏的玩法改装都是以复活赛作为基础,通过特定Item来实现玩法的变种,下面会开始逐一说明每种改装玩法的方案。

首先要解释一下在游戏玩法改装中一个尤为重要的概念,CST(组件;自定义源模块)Custom Source Tools 的英文缩略词,在本模组中,它被解释为自定义模式的核心(lua脚本)和游戏源代码之间建立联系的中间模块,能够在开启的自定义模式下改装游戏玩法。

设置出生点
  1. 选中一个角色出生点
  2. 添加标记 team:a 指定为队伍A的出生点
  3. 添加标记 team:b 指定为队伍B的出生点

[CST组件]巡回信号(id:cst_roundsignal)
  1. 用途
    在巡回开始时产生一个脉冲信号
  2. 内存1
    存储输出的信号值

Lua组件(id:luacomponent)
  1. 用途
    一种计算单元,可以在内存1中写入lua编程块,在巡回开始时立即编译,inp[]数组存储着信号输入1~8接受的数据,对out[]数组元素赋值可以在对应的信号输出1~8产生输出信号,而mem[]数组用于寄存临时数据(内存2中读写json格式数据),参数item为组件本身。
  2. 内存1
    存储lua代码
  3. 内存2
    存储永久性json格式数据
  4. 样例(产生10~100随机数)
    if inp[1] then out[1] = math.random(10, 100) end

[CST组件]设置队伍复活(id:cst_settingallowteamrespawn)

[CST组件]设置得分规则(id:cst_settingscorerules)

[CST组件]设置默认出装(id:cst_settingdefaultgear)
  • 选项1
    开启或禁用激斗战出装
  • 选项2
    激斗战出装id包含列表,小写逗号分割可指定多个id,可以在Lua\LangFiles\zh.json中查看出装中文名和id的对应表;当选项为空值时,包含所有激斗战出装
  • 选项3
    激斗战出装id排除列表,当选项为空值时,不会排除任何激斗战出装

[CST组件]设置服装染色(id:cst_settingdyecloth)

[CST组件]设置目标分数(id:cst_settargetscore)
  • 用途
    接收到信号时将其设置为目标分数

[CST组件]增减目标分数(id:cst_modifytargetscore)
  • 用途
    用接收到的信号增减目标分数

[CST组件]读取目标分数(id:cst_readtargetscore)
  • 用途
    接收到信号时输出目标分数

[CST组件]设置队伍A分数(id:cst_setteam1score)
  • 用途
    接收到信号时将其设置为队伍A分数

[CST组件]增减队伍A分数(id:cst_modifyteam1score)
  • 用途
    用接收到的信号增减队伍A分数

[CST组件]读取队伍A分数(id:cst_readteam1score)
  • 用途
    接收到信号时输出队伍A分数

[CST组件]设置队伍B分数(id:cst_setteam2score)
  • 用途
    接收到信号时将其设置为队伍B分数

[CST组件]增减队伍B分数(id:cst_modifyteam2score)
  • 用途
    用接收到的信号增减队伍B分数

[CST组件]读取队伍B分数(id:cst_readteam2score)
  • 用途
    接收到信号时输出队伍B分数

[CST组件]设置结束时间(id:cst_setremainingtime)
  • 用途
    接收到信号时将其设置为结束时间

[CST组件]增减结束时间(id:cst_modifyremainingtime)
  • 用途
    用接收到的信号增减结束时间

[CST组件]读取结束时间(id:cst_readremainingtime)
  • 用途
    接收到信号时输出结束时间

[CST组件]设置胜负条件(id:cst_settingwlc)
歼灭队伍A √; 歼灭队伍B √ 对应的胜负判定优先级为
  1. 双方均达到目标分数,平局
  2. 达到目标分数的队伍获胜
  3. 双方全部阵亡,平局
  4. 双方若都存活,到达游戏结束时间以后,分数高的队伍获胜;若分数相同则平局
  5. 歼灭了敌方的队伍获胜

歼灭队伍A ×; 歼灭队伍B × 对应的胜负判定优先级为
  1. 在游戏结束时间前,双方均达到目标分数,平局
  2. 在游戏结束时间前,达到目标分数的队伍获胜
  3. 双方若都存活,到达游戏结束时间以后,分数高的队伍获胜;若分数相同则平局

歼灭队伍A √; 歼灭队伍B × 对应的胜负判定优先级为
  1. 如果队伍A全体阵亡,队伍B获胜
  2. 如果队伍A达到目标分,队伍A获胜
  3. 如果超时(超出结束时间),队伍B获胜

[CST组件]出装生成器(id:cst_itembuilds)
  1. 用途
    在接收到信号时,可以生成各种物品,如果信号来源为角色,则还可以修改其技能等级、给予角色天赋、改变角色属性等
  2. 选项:类别
    所有相同类别的出装,玩家自上次重生以来只能从中获得一次,但玩家可以从几种不同类别的出装里各从中获得一次
  3. 选项:标识
    在相同类别中,不可存在标识相同的出装
  4. 选项:定义
    存储着出装内容,定义方法请参照潜艇文件[CQB-自定义-模板]新版全套演示.sub
  5. 选项:不限次数
    玩家无须等待至重生后便可无限次选择此出装
  6. 选项:队伍A库存
    该出装可分配给队伍A的剩余次数,-1为无限次
  7. 选项:队伍B库存
    该出装可分配给队伍B的剩余次数,-1为无限次
  8. 链接
    如果与 [CST组件]矩形区域 链接,则不会在角色身上生成物品,而是生成在该矩形区域范围内

设置设施摧毁分
  1. 选中需要改装的Item
  2. 添加Tag custom,facility
  3. 添加Tag team:a:数值 对应→在设施被摧毁后,队伍A会获得或被扣除与给定数值等量的分数
  4. 举栗 team:a:+5, team:b:-5 对应→在设施被摧毁后,队伍A获得5分,队伍B扣除5分
  5. 在设施被摧毁后,若要将其设施更改为不可修复,避免反复响应,需要Tag unrepairable

[CST组件]矩形区域(id:cst_region)
  • 用途
    覆盖一块区域,并链接到其他CST组件上以供使用

[CST组件]检测生物数量(id:cst_checkcharacteramount)
  • 用途
    接收到信号时可以根据选项决定输出各队人类数目以及怪物和宠物的个数
  • 选项1
    检测人类
  • 选项2
    检测宠物
  • 选项3
    检测怪物
  • 选项4
    包含尸体
  • 选项5
    最低运动速度
  • 选项6
    包含潜艇内的
  • 选项7
    包含潜艇外的
  • 链接
    如果与 [CST组件]矩形区域 链接,则将生物搜索区域改变为该矩形区域
    如果与 [CST组件]矩形区域(排除) 链接,则在该区域内的生物会被忽略检测

[CST组件]物品清除器(id:cst_cleanitemrules)
  1. 用途
    接收到信号时,对该物品所在潜艇上搜索到的所有须要被清除的物品记录一次,如果物品的记录次数达到了给定次数,则将其清除。
  2. 选项1
    存储执行物品清除时要求达到的记录次数,默认值为2
  3. 选项2
    存储物品清除规则,通过逗号 , 定义一个标签组,在一个标签组内通过竖线 | 来定义一个组内标签,当物品的tags和id匹配(包含)了其中一个标签组时,才会被清除器记录
    • 栗1 clean-weak-include:medical 对应→记录拥有medical标签的物品,通常为药物
    • 栗2 clean-weak-include:medical,weapon 对应→记录拥有medical或weapon标签的物品,通常为药物和武器
    • 栗3 clean-weak-include:explosive|demolitionsexpert 对应→记录同时拥有explosive或demolitionsexpert标签的物品,通常为受爆破专家天赋影响的炸药
    继上述,添加 clean-weak-exclude:... 对应→在物品由上述规则匹配后,可以通过此述规则将匹配的物品排除在外,语句规则同上述规则类似
    举栗 clean-weak-exclude:antidama1,antidama2 对应→拥有antidama1(吗啡), antidama2(芬太尼) tag或id的物品从记录队列中排除
    前两项描述的是弱清除,仅于物品不在任何容器当中时才进行记录
    clean-weak-strongclean-weak-strong 对应着强清除,无论物品是否在容器内都会被记录
    再者,清除器不会记录任何正在飞行的子弹、角色此时正在交互的目标、角色所拥有的物品
  4. 链接
    如果与 [CST组件]矩形区域 链接,则会从该组件的覆盖范围内搜索物品,否则搜索范围覆盖全船
    如果与 [CST组件]矩形区域(排除) 链接,则在该区域内的物品会被忽略
Last edited by whosyourdaddy; 20 Feb, 2023 @ 6:16am