Barotrauma

Barotrauma

MGME SCRIPT
whosyourdaddy  [developer] 10 Feb, 2023 @ 11:42pm
自定义模式制作教程
自定义模式制作教程
提示:在编辑器里可以打开各种自定义模式地图模板

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

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

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

设施摧毁分
  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

占点分
  1. 选中一个内存组件
  2. 添加Tag custom,capturepoint
  3. 添加Tag team:a:数值 对应→在接收到任意信号时,队伍A会获得或被扣除与给定数值等量的分数
  4. 举栗 team:a:+5, team:b:-5 对应→在接收到任意信号时,队伍A获得5分,队伍B扣除5分

显示队伍分数
  1. 选中一个文字显示器
  2. 添加Tag custom,counter
  3. 添加Tag score:a 对应→实时显示队伍A的分数
  4. 若要应用于B队,如上述规则类似,只须将标签的 :a 部分更改为 :b

设置结束时间
  1. 选中一个标签
  2. 添加Tag custom
  3. 添加Tag remtime:时间 对应→设置指定的游戏时长(单位:秒)
  4. 默认为1800秒(半小时)

显示结束时间
  1. 选中一个文字显示器
  2. 添加Tag custom,counter,remtime

设置目标分数
  1. 选中一个标签
  2. 添加Tag custom
  3. 添加Tag targetscore:分数 对应→设置达成胜利目标的分数
  4. 默认为10000

显示目标分数
  1. 选中一个文字显示器
  2. 添加Tag custom,targetscore

设置初始分数
  1. 选中一个标签
  2. 添加Tag custom,initialscore
  3. 添加Tag team:a:10 对应→游戏开始时队伍A的分数为0+10
  4. 默认为0

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

设置玩家复活
  1. 选中一个标签
  2. 添加Tag custom,allowteamrespawn
  3. 添加Tag team:a:true 对应→允许队伍A玩家重生
  4. 添加Tag team:b:true 对应→允许队伍B玩家重生
  5. 默认为允许重生

设置得分规则
  1. 选中一个标签
  2. 添加Tag custom,overridescorerules
  3. 添加Tag kill.enemy:1 对应→击杀敌人获得1分,默认为100
  4. 添加Tag kill.selforteammate:-1 对应→紫砂或TK队友扣除1分,默认为-100
  5. 添加Tag death.to.nth:0 对应→死于未知原因时扣除1分,默认为-100
推荐场合:有独特的分数获取渠道

禁用内置出装
  1. 选中一个标签
  2. 添加Tag custom,disablegear
  3. 禁止了玩家角色在被新建后从传统CQB激斗战的出装中选择
推荐场合:仅使用地图内装备

禁用服装染色
  1. 选中一个标签
  2. 添加Tag custom,disabledyecloth
推荐场合:利用服装进行敌友识别

禁用物品自动清除
  1. 选中一个标签
  2. 添加Tag custom,disableclean
  3. 为避免物品堆积过多而导致地图出现卡顿,默认为会自动清除物品

定义物品自动清除规则
  1. 选中一个标签
  2. 添加Tag custom
  3. 添加Tag clean-weak-include:物品tag或id 对应→响应重生后,清除丢弃在地面上且拥有指定tags或id的物品
    通过分号 ; 定义一个标签组,在一个标签组内通过竖线 | 来定义一个组内标签;
    当物品的tags和id匹配(包含)了其中一个标签组时,才会被清除掉
    栗1 clean-weak-include:medical 对应→清除拥有medical标签的物品,通常为药物
    栗2 clean-weak-include:medical,weapon 对应→清除拥有medical或weapon标签的物品,通常为药物和武器
    栗3 clean-weak-include:explosive|demolitionsexpert 对应→清除同时拥有explosive或demolitionsexpert标签的物品,通常为受爆破专家天赋影响的炸药
  4. 继上述,添加Tag clean-weak-exclude:物品tag或id 对应→在物品由上述规则匹配后,可以通过此述规则将匹配的物品排除在外,语句规则同上述规则类似
    举栗 clean-weak-exclude:antidama1,antidama2 对应→拥有antidama1(吗啡), antidama2(芬太尼) tag或id的物品从清除队列中排除
  5. 前两项描述的是弱清除,仅于物品不在任何容器当中时才进行清除
    clean-weak-strongclean-weak-strong 对应着强清除,无论物品是否在容器内都会被清除
    但弱清除和强清除也有一部分共同点,正在飞行的子弹、角色此时正在交互的目标、角色所拥有的物品并不会被清除
  6. 常用规则如下
    custom, clean-weak-include:clothing;medical;weapon;explosive;diving;tool;mobilecontainer;harpoonammo;stungunammo;pistolammoitem;shotgunammo;loadable;oxygensource;weldingfuel;skillbook;mobileradio, clean-weak-exclude:disableclean;grenade;fraggrenade;stungrenade;incendiumgrenade, clean-strong-include:duffelbag;crate|gear, clean-strong-exclude:disableclean

设置胜负判定方式
  1. 选中一个标签
  2. 添加Tag custom,onlyannihilate

  3. 添加Tag team:a:true,team:b:true 对应的胜负判定优先级为
    1. 双方均达到目标分数,平局
    2. 达到目标分数的队伍获胜
    3. 双方全部阵亡,平局
    4. 双方若都存活,到达游戏结束时间以后,分数高的队伍获胜;若分数相同则平局
    5. 歼灭了敌方的队伍获胜

  4. 添加Tag team:a:false,team:b:false 对应的胜负判定优先级为
    1. 在游戏结束时间前,双方均达到目标分数,平局
    2. 在游戏结束时间前,达到目标分数的队伍获胜
    3. 双方若都存活,到达游戏结束时间以后,分数高的队伍获胜;若分数相同则平局

  5. 添加Tag team:a:true,team:b:false 对应的胜负判定优先级为
    1. 如果队伍A全体阵亡,队伍B获胜
    2. 如果队伍A达到目标分,队伍A获胜
    3. 如果超时(超出结束时间),队伍B获胜

  6. 添加Tag team:a:false,team:b:true 对应的胜负判定优先级与上一个同理

定义出装
出装分为不同的类型,按游戏进程划分,有前期出装、中期出装、后期出装,也可以分为开局出装、中途出装,这意味着玩家在游戏进程当中的各个时期都可以获得不同的出装,我们可以通过为内存组件添加Tag custom,gear 将其标记为一种特定的内存组件,表示它具有定义出装的用途,在该内存组件接受到信号后,会去尝试捕获信号来源,如果追溯后的结果是由玩家角色触发,例如按下了按钮,由按钮产生了信号并最终发送给了该内存组件,那么该玩家的角色会获得与该内存组件绑定的出装,出装的内容会从内存组件中预先写入的数据内读取,出装内容的具体格式和写法完全参照和照搬MGME-SCRIPT模组中Lua/MGME_Scripts/Gear/CQB.Regular下子文件夹内的lua文件
或直接查阅Lua/[CQB-自定义-模板]改出装一对一教程.lua,实例在编辑器中对应的.sub潜艇文件内
  1. 选中一个内存组件
  2. 添加Tag custom,gear
  3. 添加Tag group:xxx 对应→设定出装所属类型的名称,对于相同类型的出装,玩家自上次重生以来只能从中获得一次,所以玩家也能从几种不同类型的出装里各从中获得一次
  4. 添加Tag id:xxx 对应→设定出装在自身所属类型当中的id
  5. 没有 group:xxxid:xxx 则为无效定义
  6. 添加Tag allowAlways 对应→任何玩家能够无限次获取该出装,而非等到下次重生以后
  7. 添加Tag amount:team:a:xxx 对应→队伍A获取该出装的最大次数,默认为无限次
    举栗 amount:team:a:3,amount:team:b:0 对应→队伍A可以获取其出装3次,队伍B可获取次数为零(等同于无法获取)
  8. 在带有 Tag custom,gear 的文字显示器上添加 Tag group:xxx, id:xxx, amount:team:a 表示显示队伍A该出装可获取的剩余次数
  9. 添加Tag hotreload 对应→可以在游戏中途通过修改内存值实时改变出装
  10. 在带有 Tag custom,gear 的标签上添加 Tag group:xxx, id:xxx, amount:team:a
    表示当相应group和id的内存组件由队伍A玩家触发时,则该标签的矩形覆盖范围会被纳入物品清单的生成区域(支持由多个标签构成的生成范围),而不是在角色身上生成。