Compare commits

..

13 Commits

Author SHA1 Message Date
Stellaraven
2ee0c212fa 补充了所有大起身硬直(即可以装死)的被击飞动作,不包含后续的倒地动作 2024-06-17 21:07:34 +08:00
Stellaraven
fc956b4637 临时添加关于伤害检测修改,其他细节等新版本稳定后再更新 2024-04-10 15:49:24 +08:00
Stellaraven
874a476a0a 增加了一点target = 1的fsmid 2024-03-31 23:58:15 +08:00
Stellaraven
2725ed9655 添加了对试图从源码白嫖mod的人的劝告,以及常见的文本编辑报错的建议。 2024-03-31 02:09:57 +08:00
Stellaraven
62096a6bdf 基于高频发生的文件名错误等问题做出了强调性的解决方式 2024-03-28 21:22:08 +08:00
Stellaraven
76833dc890 格式修整 2024-03-28 01:30:41 +08:00
Stellaraven
462759cd84 为qa撰写了一份目录方便用户浏览,为mod于0.1.5的更新内容添加了使用方法与说明 2024-03-28 01:11:44 +08:00
Stellaraven
d1b98f754f 添加了部分特殊功能的使用描述,以及新的检测方式应用 2024-03-27 02:32:42 +08:00
Stellaraven
d2d065bd6f 发现一处文本错误,已修复 2024-03-25 21:35:17 +08:00
Stellaraven
b54dfa2c48 修复了一点点格式上的错误 2024-03-25 15:31:28 +08:00
Stellaraven
c11bb860f3 追加了游戏内快捷指令的用法说明,发送间隔的设置等问题解答,以及一个整合的简易fsmid表 2024-03-25 14:55:22 +08:00
Stellaraven
50ec543997 基于mod作者最近发现的字节上限问题,针对Q3.7字节上限的问题做出了更加详细的解释。 2024-03-24 01:36:24 +08:00
Stellaraven
7a6f644ae2 comment 2024-03-24 01:20:16 +08:00
20 changed files with 872 additions and 27 deletions

438
README.md
View File

@@ -2,11 +2,86 @@
针对部分用户使用 MHW 更多定型文mod时遇到的问题提供可能的处理方式若尚未解决问题可加群*259616154*咨询 针对部分用户使用 MHW 更多定型文mod时遇到的问题提供可能的处理方式若尚未解决问题可加群*259616154*咨询
编写时mod版本0.1.4 编写时mod版本0.2.0
## mod更新日志
特性:
支持单个动作内的多个伤害数据统计
所有内部实现全部采用async/await异步
单个trigger的执行转为创建异步任务支持内部长时间阻塞
由于主动式伤害收集模式的实现现在可以检查伤害为0的情况
Break Changes:
原配置文件 trigger_on.damage 条件取消,由 check.damage 替代
具体参考新配置文件样例
## 目录
### [1.安装类问题](#1-安装类问题)
[Q1.1:mod安装位置错误导致游戏无法加载mod的解决方法](#q-11-为什么我用狩技盒子安装了mod游戏正常启动但是mod没有生效)
[Q1.2:游戏加载mod时发生崩溃的处理方法](#q-12-为什么我安装了mod但是游戏崩溃了)
[Q1.3:对那些白嫖怪的声明](#q-13-为什么我没办法使用mod盒子安装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有什么游戏内的快捷指令吗)
[Q2.11:错误日志中关于文本行列数的报错的原理和机制举例](#q211-错误日志中关于文本行列数的报错有什么原理和机制吗)
### [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.安装类问题 ## 1. 安装类问题
### Q 1.1 为什么我用狩技盒子安装了mod游戏正常启动但是mod没有生效 ### Q 1.1 为什么我用狩技盒子安装了mod游戏正常启动但是mod没有生效
@@ -44,7 +119,31 @@ A:如果你已经按照 [Q1.1](#q-11-为什么我用狩技盒子安装了mod游
完整性检查完毕后,重新按 [Q1.1](#q-11-为什么我用狩技盒子安装了mod游戏正常启动但是mod没有生效) 中的步骤安装前置和mod。 完整性检查完毕后,重新按 [Q1.1](#q-11-为什么我用狩技盒子安装了mod游戏正常启动但是mod没有生效) 中的步骤安装前置和mod。
## 2.使用类问题 ### Q 1.3 为什么我没办法使用mod盒子安装mod打开下载的东西怎么和下图一样一堆不认识的
![alt text](img/image-35.png)
A:你下载的是这个mod的**源码**,需要经过**基于Rust环境的编译**才能转换为二进制文件dll
## 编译相关的问题请自己解决
如果你有信心去试图编译,笔者以及作者概不承担编译过程中的问题对游戏产生的任何影响。
如果你没有信心去编译,还是乖乖掏影响力去买吧
## **这是试图不劳而获之人必将面临的问题。**
你很聪明,知道踩蘑菇帖子贴的主仓库的链接里面可能有你想要的东西,你也成功的把里面的东西下载下来了。
然而这个仓库里面可没有你想要的dll文件有的只是更加宝贵的东西——**源码**
你的无知认为这只不过是一个比较特殊的mod只要和那些mod一样把压缩包扔盒子再看看教程就能开始下头了。
当你发现这个"mod"拖不进盒子打开它只发现一大堆奇奇怪怪的东西而跑来mod群询问的时候你才会明白**不劳而获**的代价是什么。
要么去自己学习怎么搞,要么去掏影响力买。
## 2. 使用类问题
### Q2.1 我在启动游戏时弹窗内出现如下情况,怎么办? ### Q2.1 我在启动游戏时弹窗内出现如下情况,怎么办?
@@ -84,18 +183,138 @@ 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-怎么创建一个完整的自动文本?)进行修复。 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:这就要怪你自己咯,设那么多又发那么多,被禁言后做出触发自动文本动作导致游戏中的你强行发言被弹窗警告。*少说点吧,话痨* A:这就要怪你自己咯,设那么多又发那么多,被禁言后做出触发自动文本动作导致游戏中的你强行发言被弹窗警告。*少说点吧,话痨*
### Q2.8:怎么让配置文件方便观察和编辑? ### Q2.8 怎么让配置文件方便观察和编辑?
A: 请使用vscode打开mas-config.toml并安装toml插件即可方便的编辑和浏览配置文件。 A: 请使用vscode打开mas-config.toml并安装toml插件即可方便的编辑和浏览配置文件。![alt text](image.png)
### Q2.9 为什么我的文件名是mas-config.toml而情况和Q2.5一样?
### Q2.9:为什么我的文件名是mas-config.toml而情况和[Q2.5](#q25 -为什么我在启动游戏时弹窗内出现如下情况怎么办) 一样? A: 你可能在![alt text](img/image.png)这个地方没把*显示扩展名*![alt text](img/image-23.png)打开把它打开然后再改名或者直接将配置文件名字改成mas-config再启动游戏。
A: 你可能在![alt text](image.png)这个地方没把*显示扩展名*![alt text](image-1.png)打开把它打开然后再改名或者直接将配置文件名字改成mas-config再启动游戏。 **注无论是否开启文件扩展名dll文件是始终显示扩展名的,另外附在有无打开文件扩展名下正确的文件名字:**
打开显示扩展名时:
![alt text](img/image.png)
当前文件名应为(上面的example是作为文件扩展名打开后的对比)
![alt text](img/image-32.png)
未打开显示扩展名时:
![alt text](img/image-33.png)
当前文件名应为(上面的example是作为文件扩展名关闭后的对比)
![alt text](img/image-34.png)
## 根据群内的调研绝大部分人在mod使用方面第一个遇到的就是这个问题从试图改盒子内的配置文件到找不到配置文件在哪类似的问题比比皆是。这里笔者严肃指明配置文件*必须*以正确的名字放置在plugins文件夹内否则系统是*一定*找不到配置文件的。
### Q2.10 现在这个mod有什么游戏内的快捷指令吗
A: 当前版本已添加三个快捷指令,直接在游戏内聊天栏输入对应指令即可
`!mas reload`: 重新加载自动文本配置,用于自动文本的热修改,效果如图
![alt text](img/image-26.png)
`!mas disable`: 游戏内禁用自动文本,输入后游戏将不会再发送自动文本,效果如图
![alt text](img/image-27.png)
`!mas enable`: 游戏内启用自动文本,在自动文本被禁用后输入,游戏将再次发送自动文本,效果如图
![alt text](img/image-28.png)
***特别注意***:快捷指令是**基于检测玩家发送的消息而执行的**,所以如果你发出的游戏内快捷指令**能被其他玩家接收到的话**那么其他安装了此mod的玩家也会**执行**你发送出去的快捷指令。同理,
其他安装了此mod的玩家发送mod的快捷指令的时候你的mhw程序也会**执行**他们发送的指令。(*这就是所谓的ddos攻击吧*
### Q2.11 错误日志中关于文本行列数的报错有什么原理和机制吗
A: 读懂日志只需要四级能过甚至高考及格的英语水平,再不懂可以用词典查或者机翻...
这里举两个例子:
**例一:**
![alt text](img/image-36.png)!
如图,错误的地点已经在下方使用符号`^`标记出来了,精确到每一个字母。
在错误字段后面给出了英文解释,比如上述错误的原因就是:***需要精确到一个元素,包含多个元素***
意思是:这段代码出现了冗余元素,导致只需要一个元素的部分因为检测到多个元素产生了冲突,从而引发报错并将其反馈到日志中。
引发类似错误的 ***错误代码*** 案例如下:
```toml
# ========== 真蓄造成伤害--常见错误代码 ==========
[[trigger]]
action_mode = "sequential_all"
[trigger.trigger_on.damage]
value = { lt = 1000 }
[trigger.trigger_on.fsm]
new = { target = 3, id = {in = [135,136,137]} }
[[trigger.check]]
weapon_type.value = 0
[[trigger.action]]
cmd = "SendChatMessage"
param = "<STYL MOJI_LIGHTBLUE_DEFAULT><SIZE 30>强击真蓄!造成了<SIZE 40>{{damage}}<SIZE 30>伤害</SIZE></STYL>"
```
上面的代码中,
```toml
[trigger.trigger_on.damage]
value = { lt = 1000 }
[trigger.trigger_on.fsm]
new = { target = 3, id = {in = [135,136,137]} }
```
是引发错误的原因,即`[trigger.trigger_on.damage]``[trigger.trigger_on.fsm]`的存在导致只需要一个元素的`trigger.on`部分因为检测到多个元素产生了冲突,从而引发报错并将其反馈到日志中。
**例二:**
![alt text](img/image-37.png)
该例子中,错误字段的英文解释是 ***未知变量`damage`,除了......(后面的都是合法的变量名)***
意思是:这段代码的`trigger.on`后面的变量是未知的,导致报错。*具体原因是mod版本为0.1.4及以下,未添加伤害检测,此时强行插入伤害检测变量`damage`并不会使系统检测到,而是将其视作未知变量处理,导致报错。*
***错误代码***案例如下 ***(假设该代码被写入配置文件并加载时mod版本低于0.1.5)***
```toml
# ========== 真蓄造成伤害 ==========
[[trigger]]
action_mode = "sequential_all"
[trigger.trigger_on.damage]
value = { lt = 1000 }
[[trigger.check]]
fsm.value = { target = 3, id = {in = [135,136,137]} }
[[trigger.check]]
weapon_type.value = 0
[[trigger.action]]
cmd = "SendChatMessage"
param = "<STYL MOJI_LIGHTBLUE_DEFAULT><SIZE 30>强击真蓄!造成了<SIZE 40>{{damage}}<SIZE 30>伤害</SIZE></STYL>"
```
上面的代码中
```toml
[trigger.trigger_on.damage]
```
是引发错误的原因因为mod在0.1.5版本前并未添加伤害检测,强行插入伤害检测变量`damage`并不会使系统检测到,而是将其视作未知变量处理,导致报错。
**注:在编辑文本时遇到报错的问题时一定要去观察并理解日志报错的原因,看懂了日志就可以找出错误并自行纠正,能有效减少甚至避免同样的错误再次发生。**
## 3. 编辑类和文本类问题 ## 3. 编辑类和文本类问题
### Q3.1 怎么打开toml文件 ### Q3.1 怎么打开toml文件
@@ -139,7 +358,15 @@ weapon_type.value = 3
这里用到了两个条件,第一个`trigger_on`表示这是一个触发器条件。 这里用到了两个条件,第一个`trigger_on`表示这是一个触发器条件。
触发器条件有且仅有一个,表示当发生触发器所指示的事件时,若满足设置的条件,则执行触发器。 触发器条件**有且仅有一个**,表示当发生触发器所指示的事件时,若满足设置的条件,则执行触发器。
**注:现在可以使用另一种方式来检查武器动作,具体可参考如下代码**
```toml
[[trigger.check]]
fsm.value = { target = 3, id = 137 }
# 这块检测代码是作者添加伤害检测后原本用于fsm的触发器条件被伤害检测使用故添加此检测器以防止出现两个trigger_on导致冲突的情况
```
一个是检测玩家的动作,`{ target = 3, id = 87 }`为动作`气刃突刺` 一个是检测玩家的动作,`{ target = 3, id = 87 }`为动作`气刃突刺`
@@ -166,7 +393,7 @@ param = "<STYL MOJI_GREEN_DEFAULT><SIZE 30>黑龙歼灭刀将要使用一种从
action_mode = "random" action_mode = "random"
[trigger.trigger_on.fsm] [trigger.trigger_on.fsm]
new = { target = 3, id = 87 }``` new = { target = 3, id = 87 }
[[trigger.check]] [[trigger.check]]
weapon_type.value = 3 weapon_type.value = 3
@@ -226,7 +453,7 @@ mhw游戏中可用的字体颜色对应代码如下
`黑龙歼灭刀将要使用一种从天而降的刀法`是一个示例文本,这个就是你触发条件后发在游戏里面的文本(*想怎么下头的写法就怎么下头吧,决定权在你*) `黑龙歼灭刀将要使用一种从天而降的刀法`是一个示例文本,这个就是你触发条件后发在游戏里面的文本(*想怎么下头的写法就怎么下头吧,决定权在你*)
### Q3.4:怎么去寻找武器的动作即fsm ### Q3.4 怎么去寻找武器的动作即fsm
本文给出两种方案一种是基于0.1.1版本的更新debug一种是基于踩蘑菇大佬*Alcedo*所开发的luaengine框架。 本文给出两种方案一种是基于0.1.1版本的更新debug一种是基于踩蘑菇大佬*Alcedo*所开发的luaengine框架。
@@ -249,11 +476,13 @@ mhw游戏中可用的字体颜色对应代码如下
如红字所说后面那个fsmid对应的数值就是武器当前执行的动作id。有了这个id就可以参考[Q3.2](#q32-怎么创建一个完整的自动文本?)制作自动文本了 如红字所说后面那个fsmid对应的数值就是武器当前执行的动作id。有了这个id就可以参考[Q3.2](#q32-怎么创建一个完整的自动文本?)制作自动文本了
*方案二*luaengine适合除了编辑自动文本的需求外存在其他数据获取需求对基于luaengine编写的mod感兴趣或有制作意图的用户 *方案二***luaengine**适合除了编辑自动文本的需求外存在其他数据获取需求对基于luaengine编写的mod感兴趣或有制作意图的用户
luaengine相关就不在这阐述了一切相关问题请移步踩蘑菇luaengine教程贴https://www.caimogu.cc/post/943219.html luaengine相关就不在这阐述了一切相关问题请移步踩蘑菇luaengine教程贴https://www.caimogu.cc/post/943219.html
### Q3.5:怎么让一个触发器检测多个动作? ##现在已添加简易fsmID表格, 如果不想自己去测可以参考[为Monster Hunter World - More Auto Shouts 制作的简易Fsm ID 表](fsmID.md)。但是该表内只录取部分笔者认为常用的fsm其他fsm请自行按照上述查找fsm的方法进行查找。
### Q3.5 怎么让一个触发器检测多个动作?
A:使用`in`函数以判断事件的值是否包含在数组内。 A:使用`in`函数以判断事件的值是否包含在数组内。
@@ -264,9 +493,9 @@ A:使用`in`函数以判断事件的值是否包含在数组内。
action_mode = "sequential_all" action_mode = "sequential_all"
[trigger.trigger_on.fsm] [trigger.trigger_on.fsm]
new = { target = 3, id = {in = [110,112,114]} } new = { target = 3, id = {in = [110,114]} }
# in是一个函数用于判断事件的值是否包含在数组内需要用花括号{}包起来。 # in是一个函数用于判断事件的值是否包含在数组内需要用花括号{}包起来。同理,你也可以在花括号内使用'nin'来排除动作
[[trigger.check]] [[trigger.check]]
weapon_type.value = 7 weapon_type.value = 7
@@ -278,27 +507,30 @@ param = "<STYL MOJI_LIGHTBLUE_DEFAULT><SIZE 25>龙杭炮发射</SIZE></STYL>"
``` ```
龙杭炮有三个射击方向分别为正常派生的下段炮击突进上捞派生的中段炮击以及站姿上捞派生的上段炮击这三个炮击的动作fsmid是分开的分别为110下段112中段114上段 龙杭炮有三个射击方向分别为正常派生的下段炮击突进上捞派生的中段炮击以及站姿上捞派生的上段炮击这三个炮击的动作fsmid是分开的分别为110下段112中段114上段
现在使用in函数将这三个fsmid放入一个数组内触发器检测到玩家使用铳枪时会检测到玩家当前执行的动作fsmid是否包含在数组内若包含则激活触发器并发送文本![alt text](image-3.png)。 现在使用in函数将这三个fsmid放入一个数组内触发器检测到玩家使用铳枪时会检测到玩家当前执行的动作fsmid是否包含在数组内若包含则激活触发器并发送文本![alt text](img/image-25.png)。
### Q3.6:为什么我的文本修饰了还是默认的文本? **注in有对应的反函数nin可用于检测除内部动作之外的其他动作**
A:请检查文本中是否含有`<STYL``</STYL>`,这两个标签是用于控制文本样式的,请检查文本段的末尾中否含有这两个标签, 如果没有会导致该文本无法被检测到颜色和字体的修改,并以默认形式的文本发送。 ### Q3.6 为什么我的文本修饰了还是默认的文本?
### Q3.7:为什么我的文本只说了一部分? A:请检查文本中是否含有`</SIZE>``</STYL>`,这两个标签是用于控制文本样式的,请检查文本段的末尾中否含有这两个标签, 如果没有会导致该文本无法被检测到颜色和字体的修改,并以默认形式的文本发送。
A:一个param内的文本所包含的字段存在上限255个字符现举例说明 ### Q3.7 为什么我的文本只说了一部分?
A:一个param内的文本所包含的字节数存在上限128个字节现举例说明
```toml ```toml
param = "<STYL MOJI_LIGHTGREEN_DEFAULT><SIZE 30>一二三四五六七八九十壹贰叄肆伍陆柒捌玖拾甲乙丙丁戊己庚辛壬癸</SIZE></STYL>" param = "<STYL MOJI_LIGHTGREEN_DEFAULT><SIZE 30>一二三四五六七八九十壹贰叄肆伍陆柒捌玖拾甲乙丙丁戊己庚辛壬癸</SIZE></STYL>"
#双引号中的内容"<STYL MOJI_LIGHTGREEN_DEFAULT><SIZE 30>一二三四五六七八九十壹贰叄肆伍陆柒捌玖拾甲乙丙丁戊己庚辛壬癸"是被计算进字符的部分
``` ```
写入的字段中包含了三十个汉字,让我们看看发出去的文本会是啥样: *汉字*和*全角标点符号*占**三个字节**,所有的*英文字母*,*数字*和*半角标点符号*占**一个字节**。
![alt text](image-4.png) 写入的字段中包含了30个汉字其他字母数字和半角符号合计39个合计字节是30*3+39=129个。让我们看看发出去的文本会是啥样
如图,写入了三十个汉字实际上只发出来了二十九个,说明输入文本所包含的字段超过上限,导致文本被截断。 ![alt text](img/image-4.png)
一个汉字和全角标点符号占三个字符,所有的英文字母,数字和半角标点符号占一个字符。笔者建议设置自动文本时不要使文本部分的汉字与中文标点符号数量超过30否则会使发送时文本因超过字上限被截断。 如图写入了30个汉字实际上只发出来了29个说明输入文本时字段包含的字节数超过上限129>128,导致文本中最后一个汉字的字符被截断,无法被输出。笔者建议设置自动文本时不要使文本部分的汉字与中文标点符号数量超过30否则会使发送时文本因超过字上限被截断。
### Q3.8:怎么设置复合的颜色和字号文本,比如![alt text](image-2.png)这样的? ### Q3.8 怎么设置复合的颜色和字号文本,比如![alt text](img/image-24.png)这样的?
A:gmd支持在同一句话中使用分隔的多个颜色和字号tag对不同的文本段标注具体可参考如下代码上图中三色字体飞圆斩的**发送器** A:gmd支持在同一句话中使用分隔的多个颜色和字号tag对不同的文本段标注具体可参考如下代码上图中三色字体飞圆斩的**发送器**
@@ -307,9 +539,161 @@ A:gmd支持在同一句话中使用分隔的多个颜色和字号tag对不同的
cmd = "SendChatMessage" cmd = "SendChatMessage"
param = "<STYL MOJI_GREEN_DEFAULT><SIZE 40>飞!<STYL MOJI_LIGHTBLUE_DEFAULT><SIZE 45>圆!<STYL MOJI_RED_DEFAULT><SIZE 50>斩!</SIZE></STYL>" param = "<STYL MOJI_GREEN_DEFAULT><SIZE 40>飞!<STYL MOJI_LIGHTBLUE_DEFAULT><SIZE 45>圆!<STYL MOJI_RED_DEFAULT><SIZE 50>斩!</SIZE></STYL>"
``` ```
每一段文本的前面都有一个控制样式的标签,标签的格式参考[Q3.3](#q33-怎么编辑文本)中的编辑方式,每一段不同样式文本的标签排序**必须**按照颜色`<STYL MOJI_GREEN_DEFAULT>`在前字号`<SIZE 40>`在后顺序排列。 每一段文本的前面都有一个控制样式的标签,标签的格式参考[Q3.3](#q33-怎么编辑文本)中的编辑方式,每一段不同样式文本的标签排序**必须**按照颜色`<STYL MOJI_GREEN_DEFAULT>`在前字号`<SIZE 40>`在后顺序排列。
*这里将文本代码放入了一个发送器的param内可以复制粘贴放入任意param直接使用* *这里将文本代码放入了一个发送器的param内可以复制粘贴放入任意param直接使用*
### Q3.9 怎么设置发送间隔以防止说话太多刷屏?
A:mas-config.toml内已经内置了全局间隔功能默认为1秒具体请参考配置文件(*mod作者贴心的给你放在了最前面还加了注释哦*)
如果想给单个触发器设置间隔发送,可以参考如下代码:
```toml
[[trigger]]
action_mode = "random"
cooldown = 1
# 设置该触发器发送间隔为1秒
[trigger.trigger_on.fsm]
new = { target = 3, id = 11 }
[[trigger.check]]
weapon_type.value = 2
[[trigger.action]]
cmd = "SendChatMessage"
param = "<STYL MOJI_RED_DEFAULT><SIZE 30>开启鬼人化</SIZE></STYL>"
```
在**触发条件**(详见[Q3.2](#q32-怎么创建一个完整的自动文本?))的代码
```toml
[[trigger]]
action_mode = "random"
```
下面添加`cooldown`字段,即可设置单触发器的发送间隔(以秒计算)。
### Q3.10 怎么设置动作前后检测,实现一定程度上在某些情况下的受击检测?
A:使用`old``new`字段,可检测执行该动作的上一个动作,具体请参考如下代码(这里贴出一段登龙被打导致登龙失败的自动文本)
```toml
# 登龙被打导致登龙失败
[[trigger]]
action_mode = "random"
[trigger.trigger_on.fsm]
old = { target = 3, id = {in = [87,89,90,91]} }
new = { target = 1, id = {nin = [87,89,90,91]} }
# 这里用了 in 和 nin 两个函数一个是检测登龙的动作一个检测玩家的状态fsmtarget = 1是纳刀态和硬直fsmtarget = 3是拔刀态基于笔者最新的发现即在检测前后两个动作时新动作检测的是硬直态的话就可以实现动作被打断的检测。
[[trigger.check]]
weapon_type.value = 3
[[trigger.action]]
cmd = "SendChatMessage"
param = "<STYL MOJI_WHITE_DEFAULT><SIZE 30>太刀侠登龙时<STYL MOJI_RED_DEFAULT><SIZE 40>被打飞了其他武器纳刀默哀30秒</SIZE></STYL>"
```
`old`用于检测当前动作的上一个动作`new`用于检测当前动作。当前的动作符合`new`内的动作且上一个符合`old`内包含的动作时,触发器才会触发。
比如上面`old`内是检测登龙的拆分动作(气刃突刺,起跳,空中抬刀预备动作,气刃兜割下劈),`new`内是检测玩家处于纳刀和硬直状态`target = 1`(*内部`fsmid`暂未完全测试建议填写一个不超过100的数字*), 当登龙被打断时,系统会先检测上一个动作是否是登龙中的动作,然后检测下一个动作是不是玩家的纳刀和硬直状态,若符合则触发该触发器并发送![alt text](img/image-29.png)
### Q3.11 为什么我盾斧开电锯会说超解的文本?
A目前因为开电锯时存在延迟输入帧就是可以在超解动作开始时的约0.2秒内按钩爪键可以把超解动作转换为开电锯的动作),导致开电锯按晚了会有超解文本发送。
目前笔者找到了一种基于[Q3.10](#q310-怎么设置动作前后检测,实现一定程度上在某些情况下的受击检测)的解决方法,具体请参考如下代码(**可以直接复制粘贴并应用**
```toml
# ========== 盾斧超解动作 ==========
[[trigger]]
action_mode = "random"
[trigger.trigger_on.fsm]
old = { target = 3, id = 120 }
new = { target = 3, id = {in = [0,1,3,6,19,20,21,22]} }
# 这里new把所有超解完毕后可能的派生站立移动回避都贴了出来并放在超解后的动作检测里借此以防止在超解的延迟输入帧内开电锯的的问题出现
[[trigger.check]]
weapon_type.value = 9
[[trigger.action]]
cmd = "SendChatMessage"
param = "*超解"
```
**注:该触发器是基于超解完毕后的动作判定触发的,所以使用时并不会在“理想的”时机内发送文本,延迟发送功能请期待后续更新**
### Q3.12 怎么给动作添加伤害检测?
A使用新的触发器条件`[trigger.check]`来检测,具体使用方式如下:
这里是使用真蓄作为检测
```toml
# ========== 真蓄造成伤害 ==========
[[trigger]]
action_mode = "sequential_all"
[trigger.trigger_on.fsm]
new = { target = 3, id = {in = [135,136,137]} }
[[trigger.check]]
weapon_type.value = 0
# 武器检测
[[trigger.check]]
[trigger.check.damage]
# damage和旧版本的伤害检测条件相同用于检测该动作的伤害是否大于一定值这里写200即真蓄伤害大于200则触发该触发器。你也可以把gt改为lt表示小于200则触发该触发器。
damage = { gt = 200 }
# fsm检测的目的是检测并累计该动作期间的伤害值(目前只能实现单个动作的检测,多个动作的检测需要后续更新)
fsm = { target = 3, id = 137 }
# timeout检测动作的延时毫秒计数2000为2秒
timeout = 2000
# mod作者已经将伤害检测改为可设置多个的`trigger.check`并放到这里,`trigger.trigger_on。damage`已经不再适用于新版本
[[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)
#### 现在已经实现了伤害为空的检测条件即伤害统计的部分是基于时间段内造成的伤害进行检测可以设置大于0造成伤害或者小于等于0不造成伤害或者负伤害所以理论上总伤害为0时可以判定为未命中
未命中的代码如下:
```toml
# ========== 太刀登龙失败 ==========
[[trigger]]
action_mode = "sequential_all"
name = "太刀登龙失败"
# 动作检测
[trigger.trigger_on.fsm]
new = { target = 3, id = 92 }
# 武器检测
[[trigger.check]]
weapon_type.value = 3
[[trigger.check]]
[trigger.check.damage]
damage = { le = 0 }
# 伤害检测小于0时可以被视为未命中你用骰子剑造成负伤害也会被算进去lt=0的情况下总和为负值时也会触发
fsm = { target = 3, id = 92 }
timeout = 2000
[[trigger.action]]
cmd = "SendChatMessage"
param = "*悲报:太刀侠空登了"
```
**注:现在已经去除了:`trigger.trigger_on.damage`,现在使用该代码进行伤害检测时,会出现报错。**
![alt text](img/image-31.png)
*`trigger.trigger_on`只能检测一个元素,该触发器内检测到多个元素。* **报错如是说到...**
# 本文由Stellaraven 结合群内各种问题编写。还有问题请到群*259616154*内咨询。 # 本文由Stellaraven 结合群内各种问题编写。还有问题请到群*259616154*内咨询。
# Thank For Your Reading # Thanks For Your Reading

461
fsmID.md Normal file
View File

@@ -0,0 +1,461 @@
# 为Monster Hunter World - More Auto Shouts 制作的简易Fsm ID 表
为了方便用户编辑现笔者决定制作一个简易fsm表用于给用户以参考。
## 注本文仅收纳大部分玩家希望使用的fsm*不包含所有的动作*(比如拔刀态走路,普通攻击等触发较为频繁且无特殊意义的动作之类的不会写在里面)
### 大剑武器编号0
#### 蓄力攻击动作
```text
id = 85:拔刀斩,蓄力斩蓄力动作
id = 65:蓄力斩斩击动作
id = 86:强蓄力斩蓄力动作
id = 74:强蓄力斩斩击动作
id = 102:真蓄力斩蓄力动作
id = 78:真蓄力斩出刀动作包括强击未命中时的后续动作。若真蓄垫刀命中则fsmid变为135/136/137后续为真蓄强击动作
id = 135:一蓄真蓄力斩强击动作
id = 136:二蓄真蓄力斩强击动作
id = 137:三蓄真蓄力斩强击动作
```
#### 防御类动作
```text
id = 79, 80:铁山靠蓄靠和滚靠是79强蓄真蓄靠是80
id = 878889防御动作87是防御起手88是防御姿态89是解除防御
id = 1112拔刀防御动作11是站姿防御12是移动中防御
```
#### 其他动作
```text
id = 81飞身跃入横扫斩
id = 66横扫斩
id = 75强化横扫斩
id = 71横拍
id = 69上捞斩
id = 73
```
#### 钩爪派生,软化动作,强化射击等
```text
id = 114强化射击
id = 42软化动作
id = 105软化落地动作
```
### 片手剑武器编号1
#### 主要输出动作
```text
id = 123飞身跃入斩
id = 124强化射击派生的飞身跃入斩
id = 125127129jr非红刀三段125第一段127第二段129第三段
id = 126128130: jr红刀三段精准连击126第一段128第二段130第三段
id = 131132jr终结插拔131为非红刀插拔由fsmid = 129击中怪物派生132为红刀插拔由fsmid = 130击中怪物派生
id = 133, 134jr插拔落地133为非红刀插拔落地134为红刀插拔落地
id = 91后撤蓄力斩
id = 99后撤蓄力斩命中动作
id = 100后撤蓄力斩命中起跳
id = 101空中盾砸
id = 102盾砸落地
```
#### 防御类动作
```text
id = 75防御起手防御结束77防御行走78
id = 76防御中
id = 77防御结束
id = 78防御行走
id = 11拔刀防御动作
id = 79防御斩
```
#### 蹭刀类动作
```text
id = 13空中跳跃斩骑乘值较高
id = 29跳跃斩落地
id = 72剑盾连击
id = 83回转斩击
id = 868987肘击三连
```
#### 钩爪派生,特殊软化动作,强化射击等
```text
id = 65翻滚派生钩爪上捞
id = 47强化射击
id = 68钩爪上捞命中
id = 67钩爪上捞未命中落地动作
```
### 双刀武器编号2
#### 鬼人化开关
```text
id = 11鬼人化
id = 12移动中拔刀鬼人化
id = 97空中鬼人化
id = 98站姿鬼人化解除移动时解除鬼人化无人物动作故无特殊fsm
id = 99在某一动作后派生鬼人化解除
```
#### 主要输出动作
```text
id = 81鬼人六连斩
id = 92鬼人乱舞
id = 90鬼人连斩
id = 94鬼人化下鬼人突进连斩
id = 95鬼人强化下鬼人突进连斩
id = 86回旋斩鬼人化右键(Y)派生第二段)
id = 88二回旋斩鬼人化右键(Y)派生第三段)
```
#### 空中派生动作
```text
id = 139140非鬼人化鬼人化的上墙动作
id = 69空中回转乱舞
id = 71114115空中回转乱舞终结以及落地动作114为非鬼人化115为鬼人化
id = 8137沿斜坡向下的滑行动作顺斩可派生空中回转乱舞8为非鬼人化137为鬼人化
id = 133136滑行结束停止按方向键停止于斜坡上
id = 132135滑行结束因地形原因停止滑行
id = 126搓背
id = 127搓背终结
id = 129搓背落地
```
#### 钩爪派生,特殊软化动作,强化射击等
```text
id = 146147148149四向强化射击回避146147148149
id = 162鬼人化右键连段钩爪派生
id = 163钩爪派生命中的上身动作
id = 164钩爪派生上身后的特殊软化攻击
id = 165钩爪派生软化落地
id = 42普通钩爪上身软化动作
id = 150普通钩爪上身软化后的落地动作
```
#### 回避类动作
```text
id = 105鬼人化自由态回避默认朝着你的方向
id = 106107108109鬼人化四向滑步回避106107108109
```
### 太刀武器编号3
#### 居合
```text
id = 98特殊纳刀中正在将刀收进刀鞘
id = 99特殊纳刀完成已经将刀收进刀鞘准备居合
id = 100特殊纳刀转为正常纳刀
id = 101居合拔刀斩小居
id = 102居合拔刀气刃斩大居
```
#### 登龙动作拆分
```text
id = 87气刃突刺
id = 89气刃突刺命中时的起跳动作
id = 90气刃突刺命中起跳后在空中举刀的动作
id = 91气刃兜割的下劈动作
id = 92气刃兜割的落地动作
```
#### 气刃相关
```text
id = 68三段气刃斩
id = 69气刃大回旋
id = 86看破斩见切
id = 75空中三段气刃斩
```
#### 强化射击
```text
id = 104105106气刃斩派生的强化射击104向前105向左106向右向后
```
### 大锤武器编号4
#### 终结技
```text
id = 87压迫左键连按终结技有上捞判定
id = 96129蓄力返挥92无超蓄力129有超蓄力
id = 93130蓄力压迫93无超蓄力130有超蓄力有上捞判定
id = 94131蓄力敲打94无超蓄力131有超蓄力
id = 95大陀螺回转挥旋
id = 99回旋强压迫空中三蓄落地派生大陀螺转三圈后派生
```
#### 右键民工五连拆分
```text
id = 77787980敲打四个阶段的起手动作
id = 82838485敲打四个阶段的命中反馈动作
id = 81敲打终结
```
#### 斜坡,空中派生
```text
id = 132蓄力时上墙
id = 133115空中回转攻击大风车
id = 118空中回转攻击落地
id = 100101102跳跃蓄力攻击100一蓄101二蓄102三蓄
id = 122123斜坡滑行123为滑行一定时间后加速
```
#### 强化射击,钩爪派生
```text
id = 134蓄力中的强化射击
id = 137138二蓄升龙三蓄敲打等终结技派生的发射钩爪动作137为准备发射138为发射钩爪到收回
id = 141142二蓄钩爪派生的正常上身
id = 140旋转飞扑攻击追踪大风车
id = 42武器软化动作
```
### 狩猎笛武器编号5
#### 攻击动作
```text
id = 74拨浪鼓
```
#### 演奏动作
```text
id = 77开始演奏
id = 81开始向前演奏
id = 88演奏完成
id = 9892二次吹奏
id = 90完成吹奏
id = 87向前吹奏
id = 10297向前第二次吹奏
```
### 长枪武器编号6
#### 攻击动作
```text
id = 697071斜戳三段
id = 656667平戳三段
id = 737475横扫三段衔接在三连戳的起手一段和二段戳刺后派生
id = 83反击突刺
id = 84人车起手
id = 85人车状态
id = 105一段人车终结突刺
id = 106二段人车终结突刺
id = 124人车撞墙
id = 101102人车回马枪102估计是收招
id = 107158:飞身跃入突刺(方唐镜)
```
#### 防御动作
```text
id = 353637防御的小退中退大退
id = 7879808182反击突刺架势的防御反应7879小退9081中退82大退
id = 39力防防御反应、
id = 138139140力量防御起手防御状态结束防御
id = 76反击架势
id = 96979899:四向盾突96前97左98右99后
```
#### 钩爪派生,强化射击等
```text
id = 160: 钩爪反击架势(爪反)
id = 163164爪反被击中起飞163以及钩爪追击至怪物的动作164
id = 151: 强化射击防御
```
### 铳枪武器编号7
#### 体术类
```text
id = 79: 上挑
id = 83: 下砸
id = 85: 横扫
id = 90: 踏步上突刺(突进上捞斩)
id = 737577: 三连戳
id = 126128130: 三段防御突刺
```
#### 炮击类
```text
id = 9294。96: 普通炮击96上94中92下三个方向
id = 98100102: 蓄力炮击102上100中98下三个方向
id = 878889: 龙杭炮发射预备动作87下88中89上三个方向
id = 110112114: 龙杭炮发射动作110下112中114上三个方向
id = 104: 全弹发射
id = 158160: 空中全弹发射
id = 106: 龙击炮
id = 164165166发射起爆龙杭164下165中166上三个方向
```
#### 弹药管理
```text
id = 116普通装填
id = 167起爆龙杭装填
快速装填动作为所有能执行快速装填的动作的fsm数值+1动作数量过多就不赘述了仅在此给用户阐述快速装填的fsm规律
```
### 斩斧武器编号8
#### 斧形态
```text
id = 71上捞斩
id = 70直斩
id = 7576挥旋挥旋停止
id = 136强化敲打
```
#### 剑形态
```text
id = 111二连斩
id = 112横斩
id = 113飞天二连斩
id = 118属性解放突刺
id = 119属性解放突刺连按充能
id = 121属性解放终结
id = 122简易属性解放终结
id = 133钩爪抱脸零距离突刺
id = 124134零解上脸连按
id = 125零解终结
id = 126简易零解终结
id = 127零解落地
id = 138突刺钩爪派生
```
#### 变形部分
```text
id = 105斧变剑
id = 106突进斧变剑
id = 72剑变斧
id = 117剑变斧翻滚变形
id = 77横扫变形斩前段大回环
id = 78斧变剑原地变形
id = 115剑变斧原地变形
id = 80装瓶
```
### 盾斧武器编号9
#### 剑形态
```text
id = 70回转斩击
id = 72蓄力
id = 74蓄力二连斩
id = 80开红剑蓄力
id = 81高压属性斩开红剑
id = 108装瓶
id = 101盾突
id = 76777879四方向移动斩位移很大76前77后78左79右
id = 34剑弹刀
```
#### 斧形态
```text
id = 112突进敲打
id = 110上捞斩
id = 111下砸
id = 114一解
id = 116二解
id = 118大解
id = 120超解
id = 117119大解超解前摇117无红盾119有红盾
```
#### 变形部分
```text
id = 106剑变斧
id = 71斧变剑
```
#### 强化部分
```text
id = 81高压属性斩开红剑
id = 109属性强化回旋斩开红盾
id = 148属性回填斧强化斩开电锯
tips: 目前因为开电锯时存在延迟输入帧就是可以在超解动作开始时的约0.2秒内按钩爪键可以把超解动作转换为开电锯的动作导致开电锯按晚了会有超解文本发送该问题请等待mod作者更新。
```
### 操虫棍武器编号10
#### 地面动作
```text
id = 65飞身跃入斩
id = 66回避斩
id = 75强化二连斩
id = 76强化横扫斩
id = 77连续上捞斩
id = 78飞圆斩
id = 80虫印斩
id = 8182发射虫印弹
id = 83站姿收放虫移动收放虫时只有武器模型位置发生变换不被计入fsm
id = 85868788无白灯四向起跳前85左86右87后88
id = 89909192白灯四向起跳前89左90右91后92
id = 133猎虫强化
```
#### 空中动作
```text
id = 107108109110无白灯四向空中回避前107左108右109后110
id = 111112113114四向空中回避前111左112右113后114
id = 106跳跃突进斩击中后派生的滞空态
id = 116跳跃突进斩
id = 117强化跳跃突进斩小飞棍最爱的那个
id = 13跳跃斩
id = 115强化跳跃斩骑乘值很高
id = 14急袭突刺下戳
id = 129空中钩爪派生
id = 131空中钩爪派生命中
id = 132下戳落地派生虫印连段
```
### 弓箭武器编号11
#### 射击
```text
id = 74满蓄力平射
id = 75刚射
id = 76吊射
id = 77拔刀龙矢蓄力
id = 78拔刀龙矢发射
id = 79迅雷闪击
id = 83飞身跃入近身攻击起手飞身箭斩
id = 84飞身跃入近身攻击后摇
id = 111龙之千矢发射准备动作
id = 112龙之千矢发射动作
```
#### 移动与瞄准相关
```text
id = 65抬手瞄准
id = 66瞄准中移动
id = 67瞄准时停止移动
id = 68站立状态下停止瞄准
id = 22后跳
id = 85868788四向滑步85前86后87左88右
```
### 重弩炮武器编号12
#### 常规弹药
```text
id = 35, 36, 37带盾重弩防御动作35小退36中退37大退
id = 64拔刀安装超级会心镜纳刀时在快捷栏使用超级会心镜
id = 65抬手瞄准
id = 66站立状态下停止瞄准
id = 67站立瞄准
id = 69瞄准中移动
id = 71瞄准时停止移动
id = 72射击后摇后坐力
id = 73射击后摇后坐力特大
id = 78换弹装填速度稍微慢
id = 79换弹装填速度
id = 106近身攻击Manba OUT!
id = 118安装/卸下超级会心镜
```
#### 特殊弹药
```text
id = 77龙击炮蓄力
id = 76龙击炮发射
id = 85扩散弹准备瞄准
id = 86扩散弹取消瞄准
id = 87扩散弹瞄准中
id = 88扩散弹发射后坐力
id = 89扩散弹发射后坐力
id = 90扩散弹发射后坐力
id = 80装备特殊弹药
id = 95狙击龙弹准备瞄准
id = 96狙击龙弹取消瞄准
id = 97狙击龙弹瞄准中
id = 98狙击龙弹发射
机关龙弹无特殊动作故没有fsmid
```
### 轻弩炮武器编号13
#### 射击相关
```text
id = 65抬手瞄准
id = 66站立状态下停止瞄准
id = 67站立瞄准
id = 69瞄准中移动
id = 71瞄准时停止移动
id = 72射击后摇后坐力
id = 73射击后摇后坐力特大
id = 74速射后坐力
id = 75速射后坐力特大
id = 78换弹装填速度稍微慢
id = 79换弹装填速度
id = 99近身攻击What can I say
id = 112起爆龙弹
id = 113反击龙弹
```
#### 回避类动作相关
```text
id = 104105106107四向一段滑步104前105后106左107右
id = 108109110111四向二段滑步108前109后110左111右
注:回避装填是武器模型相对位置的改变,不改变人物动作
```
### 通用fsm测的是fsm target = 1即纳刀态以及硬直类数据有待补充
```text
id = 325:猫车
id = 334:躺在猫车上
id = 340:屁股着地(背面受击)
id = 339:屁股着地(正面受击)
id = 359:正面被击飞(大起身后摇,可装死)
id = 360:背面被击飞(大起身后摇,可装死)
id = 361:正面被击飞(小起身后摇)
id = 362:背面被击飞(小起身后摇)
id = 363 到 366:被击飞(大起身后摇,长滞空)
id = 367368:下压击飞
id = 369:正面被击飞(被上捞)
id = 370:背面被击飞(被上捞)
id = 413:下压落地挣扎(起身)
id = 583:使用回家球
id = 618:转身衣回避
id = 775:使用翼龙
id = :
```
## 本表部分数据由mod群*259616154*内群友***璀云霄***测出相关数据已由Stellaraven验证并更正部分错误并做出了大量的动作补充及其说明若有除表内动作之外的动作检测需求可向笔者反馈。
# Thanks For Your Reading

BIN
image.png

Binary file not shown.

Before

Width:  |  Height:  |  Size: 47 KiB

View File

Before

Width:  |  Height:  |  Size: 1.1 KiB

After

Width:  |  Height:  |  Size: 1.1 KiB

View File

Before

Width:  |  Height:  |  Size: 36 KiB

After

Width:  |  Height:  |  Size: 36 KiB

View File

Before

Width:  |  Height:  |  Size: 9.6 KiB

After

Width:  |  Height:  |  Size: 9.6 KiB

BIN
img/image-26.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

BIN
img/image-27.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
img/image-28.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 56 KiB

BIN
img/image-29.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

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

BIN
img/image-32.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.6 KiB

BIN
img/image-33.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

BIN
img/image-34.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.5 KiB

BIN
img/image-35.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

BIN
img/image-36.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 KiB

BIN
img/image-37.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 KiB

View File

Before

Width:  |  Height:  |  Size: 57 KiB

After

Width:  |  Height:  |  Size: 57 KiB

BIN
img/image.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB