为qa撰写了一份目录方便用户浏览,为mod于0.1.5的更新内容添加了使用方法与说明

This commit is contained in:
Stellaraven 2024-03-28 01:11:44 +08:00
parent d1b98f754f
commit 462759cd84
4 changed files with 121 additions and 21 deletions

131
README.md
View File

@ -2,8 +2,63 @@
针对部分用户使用 MHW 更多定型文mod时遇到的问题提供可能的处理方式若尚未解决问题可加群*259616154*咨询
编写时mod版本0.1.4
编写时mod版本0.1.5
## 目录
### [1.安装类问题](#1-安装类问题)
[Q1.1:mod安装位置错误导致游戏无法加载mod的解决方法](#q-11-为什么我用狩技盒子安装了mod游戏正常启动但是mod没有生效)
[Q1.2:游戏加载mod时发生崩溃的处理方法](#q-12-为什么我安装了mod但是游戏崩溃了)
### [2.使用类问题](#2-使用类问题)
[Q2.1:旧前置文件需要手动删除的问题](#q21-我在启动游戏时弹窗内出现如下情况怎么办)
[Q2.2:前置不完整或者前置未更新的问题](#q22-我在启动游戏时弹窗内出现如下情况怎么办)
[Q2.3:部分文件找不到的问题](#q23-我在启动游戏时弹窗内出现如下情况怎么办)
[Q2.4:旧版本mod无法通过debug方式检测fsm的问题](#q24-尝试通过日志获取fsm信息出现下面情况怎么办)
[Q2.5:配置文件名字不正确导致系统找不到配置文件的解决方式](#q25-我在启动游戏时弹窗内出现如下情况怎么办)
[Q2.6:配置文件内触发器格式有误,日志给出具体行列报错的解决方式](#q26-我在启动游戏时弹窗内出现如下情况怎么办)
[Q2.7:自动文本发送过多导致被系统禁言的解决方式](#q27-为什么我在游戏内发言过多被系统禁言然后禁言消息会自动弹出干扰战斗)
[Q2.8:怎么让配置文件方便观察和编辑](#q28-怎么让配置文件方便观察和编辑)
[Q2.9:没打开显示文件扩展名导致按Q2.5的步骤修改文件名后,系统找不到指定文件的解决方式](#q29-为什么我的文件名是mas-configtoml而情况和q25一样)
[Q2.10:游戏内可用的快捷指令](#q210-现在这个mod有什么游戏内的快捷指令吗)
### [3.编辑类和文本类问题](#3-编辑类和文本类问题)
[Q3.1:toml文件的打开方式](#q31-怎么打开toml文件)
[Q3.2:基础自动文本的创建](#q32-怎么创建一个完整的自动文本)
[Q3.3:文本的编辑](#q33-怎么编辑文本)
[Q3.4:寻找动作id即Fsm](#q34-怎么去寻找武器的动作即fsm)
[Q3.5:in函数的应用](#q35-怎么让一个触发器检测多个动作)
[Q3.6:文本不能丢的“尾巴”](#q36-为什么我的文本修饰了还是默认的文本)
[Q3.7:文本不能完全加载的原因以及解释](#q37-为什么我的文本只说了一部分)
[Q3.8:复合字号与颜色文本的写法](#q38-怎么设置复合的颜色和字号文本比如alt-text这样的)
[Q3.9:发送间隔(全局与单个自动文本)的插入方法](#q39-怎么设置发送间隔以防止说话太多刷屏)
[Q3.10:new和old合用以实现前后两个动作的检测](#q310-怎么设置动作前后检测实现一定程度上在某些情况下的受击检测)
[Q3.11:应用new和old来防止开电锯动作在超解动作内存在延迟输入帧的实例](#q311-为什么我盾斧开电锯会说超解的文本)
[Q3.12:伤害检测功能的使用方法](#q312-怎么给动作添加伤害检测)
# 下面根据问题类别进行分类,共分为三个板块
## 1. 安装类问题
@ -84,19 +139,19 @@ A: ![alt text](img/image-13.png)
A: 这些错误都是文本型错误说明你的配置文件中存在不正确的文本或者触发器格式导致mod加载时出现错误。请打开mas-config.toml并按日志内![alt text](img/image-17.png)![alt text](img/image-18.png)所显示的行列数找到相关的错误原因并按照[Q3.2]( #q32-怎么创建一个完整的自动文本?)进行修复。
### Q2.7:为什么我在游戏内发言过多被系统禁言然后禁言消息会自动弹出,干扰战斗?
### Q2.7 为什么我在游戏内发言过多被系统禁言然后禁言消息会自动弹出,干扰战斗?
A:这就要怪你自己咯,设那么多又发那么多,被禁言后做出触发自动文本动作导致游戏中的你强行发言被弹窗警告。*少说点吧,话痨*
### Q2.8:怎么让配置文件方便观察和编辑?
### Q2.8 怎么让配置文件方便观察和编辑?
A: 请使用vscode打开mas-config.toml并安装toml插件即可方便的编辑和浏览配置文件。
### Q2.9:为什么我的文件名是mas-config.toml而情况和[Q2.5](#q25 -为什么我在启动游戏时弹窗内出现如下情况怎么办) 一样?
### Q2.9 为什么我的文件名是mas-config.toml而情况和Q2.5一样?
A: 你可能在![alt text](img/image.png)这个地方没把*显示扩展名*![alt text](img/image-23.png)打开把它打开然后再改名或者直接将配置文件名字改成mas-config再启动游戏。
### Q2.10:现在这个mod有什么游戏内的快捷指令吗
### Q2.10 现在这个mod有什么游戏内的快捷指令吗
A: 当前版本已添加三个快捷指令,直接在游戏内聊天栏输入对应指令即可
@ -158,7 +213,15 @@ weapon_type.value = 3
这里用到了两个条件,第一个`trigger_on`表示这是一个触发器条件。
触发器条件有且仅有一个,表示当发生触发器所指示的事件时,若满足设置的条件,则执行触发器。
触发器条件**有且仅有一个**,表示当发生触发器所指示的事件时,若满足设置的条件,则执行触发器。
**注:现在可以使用另一种方式来检查武器动作,具体可参考如下代码**
```toml
[[trigger.check]]
fsm.value = { target = 3, id = 137 }
# 这块检测代码是作者添加伤害检测后原本用于fsm的触发器条件被伤害检测使用故添加此检测器以防止出现两个trigger_on导致冲突的情况
```
一个是检测玩家的动作,`{ target = 3, id = 87 }`为动作`气刃突刺`
@ -245,7 +308,7 @@ mhw游戏中可用的字体颜色对应代码如下
`黑龙歼灭刀将要使用一种从天而降的刀法`是一个示例文本,这个就是你触发条件后发在游戏里面的文本(*想怎么下头的写法就怎么下头吧,决定权在你*)
### Q3.4:怎么去寻找武器的动作即fsm
### Q3.4 怎么去寻找武器的动作即fsm
本文给出两种方案一种是基于0.1.1版本的更新debug一种是基于踩蘑菇大佬*Alcedo*所开发的luaengine框架。
@ -272,9 +335,9 @@ mhw游戏中可用的字体颜色对应代码如下
luaengine相关就不在这阐述了一切相关问题请移步踩蘑菇luaengine教程贴https://www.caimogu.cc/post/943219.html
## 注现在已添加简易fsmID表格, 如果不想自己去测可以参考[为Monster Hunter World - More Auto Shouts 制作的简易Fsm ID 表](fsmID.md)。但是该表内只录取部分笔者认为常用的fsm其他fsm请自行按照[Q3.2](#q32-怎么创建一个完整的自动文本?)进行查找。
## 注现在已添加简易fsmID表格, 如果不想自己去测可以参考[为Monster Hunter World - More Auto Shouts 制作的简易Fsm ID 表](fsmID.md)。但是该表内只录取部分笔者认为常用的fsm其他fsm请自行按照上述查找fsm的方法进行查找。
### Q3.5:怎么让一个触发器检测多个动作?
### Q3.5 怎么让一个触发器检测多个动作?
A:使用`in`函数以判断事件的值是否包含在数组内。
@ -301,11 +364,13 @@ param = "<STYL MOJI_LIGHTBLUE_DEFAULT><SIZE 25>龙杭炮发射</SIZE></STYL>"
现在使用in函数将这三个fsmid放入一个数组内触发器检测到玩家使用铳枪时会检测到玩家当前执行的动作fsmid是否包含在数组内若包含则激活触发器并发送文本![alt text](img/image-25.png)。
### Q3.6:为什么我的文本修饰了还是默认的文本?
**注in有对应的反函数nin可用于检测除内部动作之外的其他动作**
### Q3.6 为什么我的文本修饰了还是默认的文本?
A:请检查文本中是否含有`</SIZE>`和`</STYL>`,这两个标签是用于控制文本样式的,请检查文本段的末尾中否含有这两个标签, 如果没有会导致该文本无法被检测到颜色和字体的修改,并以默认形式的文本发送。
### Q3.7:为什么我的文本只说了一部分?
### Q3.7 为什么我的文本只说了一部分?
A:一个param内的文本所包含的字节数存在上限128个字节现举例说明
```toml
@ -320,7 +385,7 @@ param = "<STYL MOJI_LIGHTGREEN_DEFAULT><SIZE 30>一二三四五六七八九十
如图写入了30个汉字实际上只发出来了29个说明输入文本时字段包含的字节数超过上限129>128,导致文本中最后一个汉字的字符被截断无法被输出。笔者建议设置自动文本时不要使文本部分的汉字与中文标点符号数量超过30否则会使发送时文本因超过字节上限被截断。
### Q3.8:怎么设置复合的颜色和字号文本,比如![alt text](img/image-24.png)这样的?
### Q3.8 怎么设置复合的颜色和字号文本,比如![alt text](img/image-24.png)这样的?
A:gmd支持在同一句话中使用分隔的多个颜色和字号tag对不同的文本段标注具体可参考如下代码上图中三色字体飞圆斩的**发送器**
@ -333,7 +398,7 @@ param = "<STYL MOJI_GREEN_DEFAULT><SIZE 40>飞!<STYL MOJI_LIGHTBLUE_DEFAULT><S
*这里将文本代码放入了一个发送器的param内可以复制粘贴放入任意param直接使用*
### Q3.9:怎么设置发送间隔以防止说话太多刷屏?
### Q3.9 怎么设置发送间隔以防止说话太多刷屏?
A:mas-config.toml内已经内置了全局延迟发送功能默认为1秒具体请参考配置文件(*mod作者贴心的给你放在了最前面还加了注释哦*)
@ -341,8 +406,8 @@ A:mas-config.toml内已经内置了全局延迟发送功能默认为1秒
```toml
[[trigger]]
action_mode = "random"
# 设置该触发器发送间隔为1秒
cooldown = 1
# 设置该触发器发送间隔为1秒
[trigger.trigger_on.fsm]
new = { target = 3, id = 11 }
@ -361,7 +426,7 @@ action_mode = "random"
```
下面添加`cooldown`字段,即可设置单触发器的发送间隔(以秒计算)。
### Q3.10:怎么设置动作前后检测,实现一定程度上在某些情况下的受击检测?
### Q3.10 怎么设置动作前后检测,实现一定程度上在某些情况下的受击检测?
A:使用`old`和`new`字段,可检测执行该动作的上一个动作,具体请参考如下代码(这里贴出一段登龙被打导致登龙失败的自动文本)
@ -386,7 +451,7 @@ A:使用`old`和`new`字段,可检测执行该动作的上一个动作,具
比如上面`old`内是检测登龙的拆分动作(气刃突刺,起跳,空中抬刀预备动作,气刃兜割下劈),`new`内是检测玩家处于纳刀和硬直状态`target = 1`(*内部`fsmid`暂未完全测试建议填写一个不超过100的数字*), 当登龙被打断时,系统会先检测上一个动作是否是登龙中的动作,然后检测下一个动作是不是玩家的纳刀和硬直状态,若符合则触发该触发器并发送![alt text](img/image-29.png)
### 为什么我盾斧开电锯会说超解的文本?
### Q3.11 为什么我盾斧开电锯会说超解的文本?
A目前因为开电锯时存在延迟输入帧就是可以在超解动作开始时的约0.2秒内按钩爪键可以把超解动作转换为开电锯的动作),导致开电锯按晚了会有超解文本发送。
@ -411,6 +476,40 @@ param = "*超解"
```
**注:该触发器是基于超解完毕后的动作判定触发的,所以使用时并不会在“理想的”时机内发送文本,延迟发送功能请期待后续更新**
### Q3.12 怎么给动作添加伤害检测?
A使用新的触发器条件`[trigger.trigger_on.damage]`来检测,具体使用方式如下:
```toml
# ========== 真蓄造成伤害 ==========
[[trigger]]
action_mode = "sequential_all"
[trigger.trigger_on.damage]
value = { gt = 200 }
# 这是mod作者与0.1.5版本添加的新的触发器条件用于检测该动作的伤害是否大于一定值这里写200即真蓄伤害大于200则触发该触发器。你也可以把gt改为lt表示小于200则触发该触发器。
[[trigger.check]]
weapon_type.value = 0
# 武器检测
[[trigger.check]]
fsm.value = { target = 3, id = {in = [135,136,137]} }
# 鉴于伤害检测会占用触发器条件检测故mod作者将动作检测改为可设置多个的`trigger.check`并放到这里以防止出现两个trigger_on导致加载配置时出现冲突的情况
[[trigger.action]]
cmd = "SendChatMessage"
param = "<STYL MOJI_LIGHTBLUE_DEFAULT><SIZE 30>强击真蓄!造成了<SIZE 40>{{damage}}<SIZE 30>伤害</SIZE></STYL>"
```
上述代码若正常运行则在任意触发强击的真蓄力斩伤害大于等于200时发送如下文本
![alt text](img/image-30.png)
**注:任何动作要添加伤害检测时请务必使用上述的格式来编写自动文本,否则当一个触发器内同时存在两个`trigger.trigger_on`结构时mod会报错并触发如下警告**
![alt text](img/image-31.png)
*`trigger.trigger_on`只能检测一个元素,该触发器内检测到多个元素。* **报错如是说到...**
# 本文由Stellaraven 结合群内各种问题编写。还有问题请到群*259616154*内咨询。
# Thanks For Your Reading

View File

@ -9,8 +9,10 @@ id = 65:蓄力斩斩击动作
id = 86:强蓄力斩蓄力动作
id = 74:强蓄力斩斩击动作
id = 102:真蓄力斩蓄力动作
id = 78:真蓄力斩出刀动作包括强击未命中时的后续动作。若真蓄垫刀命中则fsmid变为137后续为真蓄强击动作
id = 137:真蓄力斩强击动作
id = 78:真蓄力斩出刀动作包括强击未命中时的后续动作。若真蓄垫刀命中则fsmid变为135/136/137后续为真蓄强击动作
id = 135:一蓄真蓄力斩强击动作
id = 136:二蓄真蓄力斩强击动作
id = 137:三蓄真蓄力斩强击动作
```
#### 防御类动作
```text
@ -203,7 +205,6 @@ id = 737475横扫三段衔接在三连戳的起手一段和二段
id = 83反击突刺
id = 84人车起手
id = 85人车状态
id = 124人车撞墙
id = 105一段人车终结突刺
id = 106二段人车终结突刺
id = 124人车撞墙

BIN
img/image-30.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

BIN
img/image-31.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB