更新文档 & 音像处理事件

This commit is contained in:
ckcz123 2021-08-13 15:34:46 +08:00
parent 2b95023983
commit e21ed4877c
7 changed files with 75 additions and 39 deletions

View File

@ -102,7 +102,8 @@ V2.8起,图块支持“(注销并)删除”操作,执行后将(对已
* 对该图块执行“显隐事件、转变图块、开关门npc48、不透明度设置和渐变、移动跳跃”都会直接操作大贴图这比起2.7.x的楼层贴图要好用许多 * 对该图块执行“显隐事件、转变图块、开关门npc48、不透明度设置和渐变、移动跳跃”都会直接操作大贴图这比起2.7.x的楼层贴图要好用许多
* 但是如果您有一张图片希望分成16小格但是每行对应完全独立的四个图块而不具有行走图朝向关系该怎么做呢 * 但是如果您有一张图片希望分成16小格但是每行对应完全独立的四个图块而不具有行走图朝向关系该怎么做呢
* “插件编写”的第一项init中提供了“资源加载后的操作”您可以在里面用`splitImage`将该图的四行提前裁剪成四张图片并重新命名,就可以使用啦! * “插件编写”的第一项init中提供了“资源加载后的操作”您可以在里面用`splitImage`将该图的四行提前裁剪成四张图片并重新命名,就可以使用啦!
* 切分出的新图片无法通过弹窗选取,必须手动填写,敬请谅解。 * 手动使用脚本切分出的新图片无法通过弹窗选取,必须手动填写,敬请谅解。
* 如果希望能够弹窗选取,可以使用全塔属性中的“图片切分”功能。
``` js ``` js
this._afterLoadResources = function () { this._afterLoadResources = function () {
// 这是一个将4by4.png假设为384*384按行拆分成四个图片并保存的样例 // 这是一个将4by4.png假设为384*384按行拆分成四个图片并保存的样例
@ -125,7 +126,7 @@ V2.8起,图块支持“(注销并)删除”操作,执行后将(对已
* 例如如果您想把四种血瓶和三种宝石改为便携式只需把其道具类别改为tools当然楼层属性中的ratio一项也就失效了 * 例如如果您想把四种血瓶和三种宝石改为便携式只需把其道具类别改为tools当然楼层属性中的ratio一项也就失效了
* 如果想把大黄门钥匙变为钥匙盒红黄蓝钥匙各一把只需把其道具类别从tools改为items * 如果想把大黄门钥匙变为钥匙盒红黄蓝钥匙各一把只需把其道具类别从tools改为items
* 如果想把剑盾变成装备,只需把其道具类别改为`equips` * 如果想把剑盾变成装备,只需把其道具类别改为`equips`
* 如果想修改破墙镐/炸弹/冰冻徽章的目标个数V2.8支持改为八方向,使用`core.utils.scan2`即可)或让炸弹能够触发战后事件,请修改它们的使用效果。 * 如果想修改破墙镐/炸弹/冰冻徽章的目标个数V2.8支持改为八方向,使用`core.utils.scan2`即可)或让炸弹能够获得金经/触发战后事件,请修改它们的使用效果。
2. **道具描述:**对除即捡即用类外的道具都有效。一个字符串,为道具在道具栏里的描述,也作为首次捡到时的提示信息的一部分(如果全塔属性中开启了这一提示功能的话)。支持使用`${表达式计算}`语法(如四种血瓶和三种宝石那样,但不支持中文替换),此语法的详细规则见“显示文章正文的转义序列”,和“值块和冒号缩写量”。 2. **道具描述:**对除即捡即用类外的道具都有效。一个字符串,为道具在道具栏里的描述,也作为首次捡到时的提示信息的一部分(如果全塔属性中开启了这一提示功能的话)。支持使用`${表达式计算}`语法(如四种血瓶和三种宝石那样,但不支持中文替换),此语法的详细规则见“显示文章正文的转义序列”,和“值块和冒号缩写量”。
3. **不显示在道具栏:**对tools和constants有效勾选此项后该道具在背包中将不显示出来。常用于不能主动使用或已有专门的使用按钮的道具来节省显示篇幅如手册、楼传、幸运金币、十字架、护符和钥匙等。该属性的详细原理见“脚本编辑N键”最下面的“道具栏显示项”。 3. **不显示在道具栏:**对tools和constants有效勾选此项后该道具在背包中将不显示出来。常用于不能主动使用或已有专门的使用按钮的道具来节省显示篇幅如手册、楼传、幸运金币、十字架、护符和钥匙等。该属性的详细原理见“脚本编辑N键”最下面的“道具栏显示项”。
4. **回放不绘制道具栏:**勾选此项后,录像回放中使用此道具将不显示黑黑的道具栏。常用于频繁使用的道具,如楼传、技能和冰冻徽章等。 4. **回放不绘制道具栏:**勾选此项后,录像回放中使用此道具将不显示黑黑的道具栏。常用于频繁使用的道具,如楼传、技能和冰冻徽章等。
@ -298,8 +299,12 @@ V2.8.1新增了怪物的大贴图绑定编辑器1:1模式下大贴图会被
* 其他更复杂的白屏请在控制台根据报错信息安卓手机则使用ES文件浏览器查看日志去小心地修改文件如某个楼层文件有问题则可以注销它如果难以独立解决欢迎加QQ群959329661寻求帮助。 * 其他更复杂的白屏请在控制台根据报错信息安卓手机则使用ES文件浏览器查看日志去小心地修改文件如某个楼层文件有问题则可以注销它如果难以独立解决欢迎加QQ群959329661寻求帮助。
2. **分区指定:**一行两列的数组,可以使用事件编辑器编辑,每行表示塔的一个区域,该行的两列分别表示该区域的第一层和最后一层(后者不填表示到塔顶),不在任何区域的楼层组成公区。 2. **分区指定:**一行两列的数组,可以使用事件编辑器编辑,每行表示塔的一个区域,该行的两列分别表示该区域的第一层和最后一层(后者不填表示到塔顶),不在任何区域的楼层组成公区。
* 游戏中,除了公区和勇士当前所在区以外的地图都将处于冻结状态,无法被浏览、无法被飞到、无法触发其自动事件、地图中的图块无法被读写。冻结状态的地图不会存入存档,从而节约了存档大小并加快了存读档速度,上百层的高层塔必备! * 游戏中,除了公区和勇士当前所在区以外的地图都将处于冻结状态,无法被浏览、无法被飞到、无法触发其自动事件、地图中的图块无法被读写。冻结状态的地图不会存入存档,从而节约了存档大小并加快了存读档速度,上百层的高层塔必备!
3. **使用图片**`project/images`文件夹中的文件名需要后缀必须全英数单击“编辑”按钮编辑器会自动扫描文件系统中格式合适的图片如jpg、png和gif 3. **使用图片、图片切分**`project/images`文件夹中的文件名需要后缀必须全英数单击“编辑”按钮编辑器会自动扫描文件系统中格式合适的图片如jpg、png和gif
* 您可以预览并将需要的图片勾选。请注意,勇士的初始行走图必须在这里注册。另外,`winskin.png`只许替换为相同规格的图片而不要注销,否则道具商店等插件无法正常绘制。 * 您可以预览并将需要的图片勾选。请注意,勇士的初始行走图必须在这里注册。另外,`winskin.png`只许替换为相同规格的图片而不要注销,否则道具商店等插件无法正常绘制。
* V2.8.1起新增了“图片切分”功能用于代替插件init中的“资源加载后操作”函数。
* 该项最核心的用法就是将4行4列共16块的大型行走图切成4行绑定给没有朝向关系的独立图块。
* 具体用法是指定一张宽高分别为mw和nh的图片限png格式按照w和h的单位宽高裁剪就会得到mn个小图。
* 每个小图会被重命名为您指定的前缀+数字从0起按正常的Z字形文本顺序逐行从左到右编号。
4. **额外素材:**`project/tilesets`中的文件名需要后缀只支持png 4. **额外素材:**`project/tilesets`中的文件名需要后缀只支持png
* 注册方法同上,最大的区别在于这个数组的顺序必须保持好。如果随意调换其中的顺序,或注销不在数组末尾的图片,就会导致地图上最终呈现的素材发生错位。因此,新勾选的图片总会被自动追加到数组的末尾。 * 注册方法同上,最大的区别在于这个数组的顺序必须保持好。如果随意调换其中的顺序,或注销不在数组末尾的图片,就会导致地图上最终呈现的素材发生错位。因此,新勾选的图片总会被自动追加到数组的末尾。
* 比起常规素材,额外素材最大的好处有几点: * 比起常规素材,额外素材最大的好处有几点:
@ -338,6 +343,7 @@ V2.8.1新增了怪物的大贴图绑定编辑器1:1模式下大贴图会被
* `volume`表示音量0到1`playbackRate`表示播放的倍速 * `volume`表示音量0到1`playbackRate`表示播放的倍速
* `preservesPitch`表示变速播放时是否不变调,`false`表示变调 * `preservesPitch`表示变速播放时是否不变调,`false`表示变调
* V2.8起背景音乐“变速不变调”和“变速且变调”、音效“变速且变调”正式作为样板API提供同时也有对应的事件指令这是样板在追逐RPG Maker上迈出的一大步且行且珍惜 * V2.8起背景音乐“变速不变调”和“变速且变调”、音效“变速且变调”正式作为样板API提供同时也有对应的事件指令这是样板在追逐RPG Maker上迈出的一大步且行且珍惜
* V2.8.1起动画的音效支持“变速且变调”同时编辑器中试听音频也支持了但bgm试听不能只变速不变调
![image](img/bgm.jpg) ![image](img/bgm.jpg)
7. **使用音效:**`project/sounds`文件夹中的文件名(格式要求和写法同上)。 7. **使用音效:**`project/sounds`文件夹中的文件名(格式要求和写法同上)。
* V2.8起音效的播放和动画一样会返回一个ID并且有回调。音效不能像bgm一样只变速不变调而是必须一起变。 * V2.8起音效的播放和动画一样会返回一个ID并且有回调。音效不能像bgm一样只变速不变调而是必须一起变。
@ -431,7 +437,8 @@ V2.8.1新增了怪物的大贴图绑定编辑器1:1模式下大贴图会被
8. **负伤:**勾选后,战斗结束时如果勇士的护盾没有完全被打破,则剩余的护盾值会加到其生命上。所以勾选此项后,护盾可以这样“间接”抵消掉仇恨伤害和固伤。 8. **负伤:**勾选后,战斗结束时如果勇士的护盾没有完全被打破,则剩余的护盾值会加到其生命上。所以勾选此项后,护盾可以这样“间接”抵消掉仇恨伤害和固伤。
9. **夹击不超伤害值:**勾选此项后,夹击伤害将封顶至夹击怪的战损。同时被四只怪夹击时,取两个战损中较小的。 9. **夹击不超伤害值:**勾选此项后,夹击伤害将封顶至夹击怪的战损。同时被四只怪夹击时,取两个战损中较小的。
10. **二分临界:**我们知道打败怪物所需的回合数取决于勇士的攻击减去怪物的防御。这个值并非每增大1都能使回合数减少因而有了“临界”的说法即“再至少增加多少攻击力才能减少回合数”。然而当您修改“脚本编辑——战斗伤害信息”函数后攻击力的增加可能反而导致回合数也增加于是临界值计算出错。您可以勾选此开关来修复代价是游戏可能较卡请自行权衡。 10. **二分临界:**我们知道打败怪物所需的回合数取决于勇士的攻击减去怪物的防御。这个值并非每增大1都能使回合数减少因而有了“临界”的说法即“再至少增加多少攻击力才能减少回合数”。然而当您修改“脚本编辑——战斗伤害信息”函数后攻击力的增加可能反而导致回合数也增加于是临界值计算出错。您可以勾选此开关来修复代价是游戏可能较卡请自行权衡。
* 目前样板的临界只有回合数法和二分法被真正采用,而循环法则只是保留了代码。如需启用,请复写`libs\enemys.js`的几个相关函数。 * 目前样板的临界只有回合数法和二分法被真正采用,而循环法则只是保留了代码。如需启用,请修改`main.js`中“循环临界的分界”。
* V2.8.1起,未破防怪的临界表中,第一项将用负数表示刚刚破防时的伤害,后面的项正常表示破防后再加攻击的减伤。
11. **标题开启事件化:**勾选此项后标题画面将改为执行前述的“标题事件”请自行研究V2.8起建议配合“标题事件居中”插件。 11. **标题开启事件化:**勾选此项后标题画面将改为执行前述的“标题事件”请自行研究V2.8起建议配合“标题事件居中”插件。
12. **开启自绘状态栏:**勾选此项后,状态栏将改用“脚本编辑——自绘状态栏”来绘制,同时“脚本编辑——点击状态栏”也将启用,请自行研究。 12. **开启自绘状态栏:**勾选此项后,状态栏将改用“脚本编辑——自绘状态栏”来绘制,同时“脚本编辑——点击状态栏”也将启用,请自行研究。
13. **四个显伤:**略,玩家依然可以在设置菜单中开关之,其中“定点怪显”指的是手册中把受到额外影响而数值不同的同种怪物分开显示。 13. **四个显伤:**略,玩家依然可以在设置菜单中开关之,其中“定点怪显”指的是手册中把受到额外影响而数值不同的同种怪物分开显示。

View File

@ -291,6 +291,8 @@ V2.8对rand2以及“全局存储”、“弹窗输入”、“选择项”
正常游戏中,已录制的内容被保存在一维数组`core.status.route`中并不断从尾部延长,录像回放时,即将播放的内容会保存在一维数组`core.status.replay.toReplay`中并不断从头部缩减。 正常游戏中,已录制的内容被保存在一维数组`core.status.route`中并不断从尾部延长,录像回放时,即将播放的内容会保存在一维数组`core.status.replay.toReplay`中并不断从头部缩减。
V2.8.1起,录像中勇士死亡将会报错并询问是否回到上一个节点,比起只能读取自动存档更为友好。
您可以在正常游戏中自由行动时随时按下R键进行回放上述数组具体的内容含义如下 您可以在正常游戏中自由行动时随时按下R键进行回放上述数组具体的内容含义如下
``` ```

View File

@ -38,6 +38,8 @@ V2.8.1起下拉框中没有的项都可以通过在json区输入并点击“
与此同时,显示文章、显示选择项、显示确认框都支持双击预览,预览前请先摆一个“设置剧情文本的属性”设置您预览时需要的属性然后双击它。 与此同时,显示文章、显示选择项、显示确认框都支持双击预览,预览前请先摆一个“设置剧情文本的属性”设置您预览时需要的属性然后双击它。
另外原本“显示文字类”的图片相关指令和“特效声音类”的音频相关指令在V2.8.1被移出来合并到了一个新类“音像处理类”,请知悉。
## 显示文字类(黄色) ## 显示文字类(黄色)
![image](img/images_texty.jpg) ![image](img/images_texty.jpg)
@ -89,6 +91,7 @@ V2.8.1起下拉框中没有的项都可以通过在json区输入并点击“
* 一种推荐的用法是在指定下面的非0编号后使用然后“显示选择项/确认框”这样就和RPG Maker的行为一致了。 * 一种推荐的用法是在指定下面的非0编号后使用然后“显示选择项/确认框”这样就和RPG Maker的行为一致了。
* 而且还能充分利用两侧的空间讲清楚每个子选项,这是在“选择项的提示文字无法随光标位置而变化”的现状下的一种妥协做法。 * 而且还能充分利用两侧的空间讲清楚每个子选项,这是在“选择项的提示文字无法随光标位置而变化”的现状下的一种妥协做法。
7. **编号:**V2.8.1新增,可以同时显示多个不同编号的对话框,常用来表现多名角色的嘈杂对话。 7. **编号:**V2.8.1新增,可以同时显示多个不同编号的对话框,常用来表现多名角色的嘈杂对话。
* 和上一项一样此项填写非0值后指令将变为正常的json格式而不是字符串格式。
* 非0编号的对话框将不会自动消失甚至勇士恢复自由行动后也是可以被同编号的对话框覆盖或手动清除。 * 非0编号的对话框将不会自动消失甚至勇士恢复自由行动后也是可以被同编号的对话框覆盖或手动清除。
* 自由行动时,该项常用来做一些常驻提示,如技能的开关状态、毒衰咒状态、当前剧情任务进度等。 * 自由行动时,该项常用来做一些常驻提示,如技能的开关状态、毒衰咒状态、当前剧情任务进度等。
* 您甚至可以像图片一样去移动对话框如和一个npc一起移动支持四种变速效果立绘也会被一起移动。 * 您甚至可以像图片一样去移动对话框如和一个npc一起移动支持四种变速效果立绘也会被一起移动。
@ -97,10 +100,11 @@ V2.8.1起下拉框中没有的项都可以通过在json区输入并点击“
### 显示文章正文的转义序列 ### 显示文章正文的转义序列
1. **表达式计算:**使用`${}`可以计算一个js表达式式子中允许使用所有的冒号缩写量和API详见`core.calValue()`函数。 1. **表达式计算:**使用`${}`可以计算eval一个js表达式式子中允许使用所有的冒号缩写量和API详见`core.calValue()`函数。
* 此语法也可以用于“道具名称”、“道具描述”和“即捡即用提示”,只不过那里就不支持中文替换了。 * 此语法也可以用于“道具名称”、“道具描述”和“即捡即用提示”,只不过那里就不支持中文替换了。
* 如`勇士当前的攻防相乘是\${状态:攻击\*状态:防御}`(中文替换),`持有三色钥匙共\${item:yellowKey+item:blueKey+item:redKey}把。`json * 如`勇士当前的攻防相乘是\${状态:攻击\*状态:防御}`(中文替换),`持有三色钥匙共\${item:yellowKey+item:blueKey+item:redKey}把。`json
* 由于样板对`${}`的处理使用了(非贪心)正则匹配而不是栈匹配,因此`${}`内部不允许出现}字符,这导致您将无法使用代码块(如流程控制)、对象或函数定义,只能使用简单的运算符(包括?:三元运算)和函数调用。如有需要,可以将语法规则改为`${...$}`并自行适配。 * V2.8和更早的版本中,样板对右花括弧的处理是(非贪心)正则匹配,因此`${内部}`不能再出现右花括弧,这也意味着您无法使用对象、复杂的流程控制语句和函数定义,只能使用简单的运算符(包括三元运算)和函数调用。
* V2.8.1中,匹配方式改为了堆栈匹配,上述问题得到解决,您可以放心使用匿名函数了,这对道具名称/道具描述这种场合是个福音。
2. **局部文字变色:**使用`\r[颜色英文名]`或`\r[\#RrGgBb]`(十六进制)来将这之后的文本变为另一种颜色。 2. **局部文字变色:**使用`\r[颜色英文名]`或`\r[\#RrGgBb]`(十六进制)来将这之后的文本变为另一种颜色。
* 最常用的17种颜色提供了自动补全十六进制颜色可以随便找个有颜色参数的指令呼出调色器去自己调配。只使用\r不带方括号则变回默认颜色。 * 最常用的17种颜色提供了自动补全十六进制颜色可以随便找个有颜色参数的指令呼出调色器去自己调配。只使用\r不带方括号则变回默认颜色。
3. **局部字号调节:**使用`\\c[正整数]`改变这之后文本的字号,只使用`\\c`不加方括号则恢复默认字号。 3. **局部字号调节:**使用`\\c[正整数]`改变这之后文本的字号,只使用`\\c`不加方括号则恢复默认字号。
@ -149,19 +153,17 @@ V2.8.1起下拉框中没有的项都可以通过在json区输入并点击“
* 可以双击预览效果,还可以勾选“不等待执行完毕”来和后面的指令同时执行,比如同时淡入两张图片,或者淡入一张同时淡出/移动另一张。 * 可以双击预览效果,还可以勾选“不等待执行完毕”来和后面的指令同时执行,比如同时淡入两张图片,或者淡入一张同时淡出/移动另一张。
* 编号较大的图片会遮盖较小的1—24号图片会被色调层遮盖25—40号图片会遮盖色调层但被UI层遮盖41—50号图片会遮盖UI层。 * 编号较大的图片会遮盖较小的1—24号图片会被色调层遮盖25—40号图片会遮盖色调层但被UI层遮盖41—50号图片会遮盖UI层。
* 此指令对应`core.showImage()`函数,编号真正的意义,详见[个性化](personalization) * 此指令对应`core.showImage()`函数,编号真正的意义,详见[个性化](personalization)
2. **清除图片:**如题,需要指定要清除的图片编号和淡出时间。 2. **清除图片:**如题,需要指定要清除的图片编号和淡出时间显隐图片的时间都可以填0表示瞬间完成
* 此指令对应`core.hideImage(code, time, callback)` * 此指令对应`core.hideImage(code, time, callback)`
3. **图片移动:**其实还包括了透明度渐变,“终点像素位置”指移动结束后的图片在视野中的左上角像素坐标(不填则表示单纯的透明度渐变),“不透明度”指渐变结束后的新的不透明度(不填表示单纯的移动)。对应`core.moveImage(code, to, opacityVal, moveMode, time, callback)` 3. **图片移动:**其实还包括了透明度渐变,“终点像素位置”指移动结束后的图片在视野中的左上角像素坐标(不填则表示单纯的透明度渐变),“不透明度”指渐变结束后的新的不透明度(不填表示单纯的移动)。对应`core.moveImage(code, to, opacityVal, moveMode, time, callback)`
* time不能填0如果想实现瞬移或瞬间改变透明度请填1
* V2.8起,图片和视野的移动支持加速度,分为“匀速、加速、减速、先加速再减速”四种,请任意选用。 * V2.8起,图片和视野的移动支持加速度,分为“匀速、加速、减速、先加速再减速”四种,请任意选用。
4. **图片旋转:**V2.8新增,同样支持加速度,旋转中心坐标不填则取图片中心。 4. **图片旋转:**V2.8新增,同样支持加速度,旋转中心坐标不填则取图片中心。
* 此指令对应`core.rotateImage(code, center, angle, moveMode, time, callback)`函数。 * 此指令对应`core.rotateImage(code, center, angle, moveMode, time, callback)`函数。
* time同样不能填0如果想瞬间得到旋转后的结果请填1
* 比起移动,旋转本身不支持同时透明度渐变,您可以先写一个不指定终点的移动指令且“不等待执行完毕”来实现单纯的淡入淡出,然后再写一个耗时相同或略长的旋转指令,这样两个指令就会一起执行了。 * 比起移动,旋转本身不支持同时透明度渐变,您可以先写一个不指定终点的移动指令且“不等待执行完毕”来实现单纯的淡入淡出,然后再写一个耗时相同或略长的旋转指令,这样两个指令就会一起执行了。
* 当不指定旋转中心时,本指令可以和移动指令同时使用,从而得到“图片的中心做直线运动、同时图片还在绕着中心自转”的效果。 * 当不指定旋转中心时,本指令可以和移动指令同时使用,从而得到“图片的中心做直线运动、同时图片还在绕着中心自转”的效果。
5. **图片放缩:**V2.8.1新增,同样支持加速度,放缩中心坐标不填则取图片中心。 5. **图片放缩:**V2.8.1新增,同样支持加速度,放缩中心坐标不填则取图片中心。
* 此指令对应`core.scaleImage(code, center, scale, moveMode, time, callback)`函数 * 此指令对应`core.scaleImage(code, center, scale, moveMode, time, callback)`函数
* time可以为0代表立刻进行放缩 * 可以和“图片移动/旋转”一起使用做出PowerPoint中常见的动画效果。
5. **显示或清除动图:**需要填写动图的文件名(带.gif后缀“起点像素位置”含义如前且必须填写可以双击指令块来预览第一帧的效果。 5. **显示或清除动图:**需要填写动图的文件名(带.gif后缀“起点像素位置”含义如前且必须填写可以双击指令块来预览第一帧的效果。
* 动图不支持淡入淡出和伸缩移动,如果不填任何参数则清除所有动图(只支持全部清除)。 * 动图不支持淡入淡出和伸缩移动,如果不填任何参数则清除所有动图(只支持全部清除)。
* 该指令对应`core.showGif(name, x, y)`函数。 * 该指令对应`core.showGif(name, x, y)`函数。
@ -453,6 +455,7 @@ V2.8.1起,“显示选择项”支持限宽和手动指定默认项了(注
* 考虑到录像系统,在录像回放时很多耗时的东西和所有需要用户响应的东西会被跳过,勇士的移速又可以很快(倍速播放),导致回放结果和原游戏不一致。 * 考虑到录像系统,在录像回放时很多耗时的东西和所有需要用户响应的东西会被跳过,勇士的移速又可以很快(倍速播放),导致回放结果和原游戏不一致。
* 总之,当您希望确保一些异步事件完全生效后再开始执行新的指令或结束事件流,“等待所有异步事件执行完毕”就是您的不二之选了,事件编辑器也会在发现缺少本指令时弹窗警告。 * 总之,当您希望确保一些异步事件完全生效后再开始执行新的指令或结束事件流,“等待所有异步事件执行完毕”就是您的不二之选了,事件编辑器也会在发现缺少本指令时弹窗警告。
* 动画和V2.8的阻塞音效默认会被等待V2.8.1提供了两个勾选框允许您不等待它们。 * 动画和V2.8的阻塞音效默认会被等待V2.8.1提供了两个勾选框允许您不等待它们。
* 另外,您可以随时使用`core.getAnimates()`和`core.getSounds()`获取当前未结束的所有动画和音效的id支持自变量填名称来筛选
3. **等待用户操作并获得键鼠/触屏信息:**前面提到三种QTE指令这是最后一种。 3. **等待用户操作并获得键鼠/触屏信息:**前面提到三种QTE指令这是最后一种。
* 之前提到的“确认框”和“选择项”可以复现RPG Maker的回合制战斗但没法做出更复杂的交互界面比如技能/天赋树,以及样板的道具商店,这就需要用到本指令了。 * 之前提到的“确认框”和“选择项”可以复现RPG Maker的回合制战斗但没法做出更复杂的交互界面比如技能/天赋树,以及样板的道具商店,这就需要用到本指令了。
* 本指令会阻塞事件的执行直到玩家按下键盘上的某个键滚轮视为PageUp/PageDown键、或点击【视野】中的某个点、或经过了超时毫秒数不设置则不限时 * 本指令会阻塞事件的执行直到玩家按下键盘上的某个键滚轮视为PageUp/PageDown键、或点击【视野】中的某个点、或经过了超时毫秒数不设置则不限时
@ -581,7 +584,8 @@ core.insertAction({"type": "changeFloor", "floorId": "MT" + core.rand2(20)})
5. **显隐勇士:**如题,动画时间为淡入淡出时间,异步勾选框用法如前。 5. **显隐勇士:**如题,动画时间为淡入淡出时间,异步勾选框用法如前。
* 实际调用`core.triggerHero(type, time, callback)` * 实际调用`core.triggerHero(type, time, callback)`
6. **更改画面色调:**色调可以用调色器调配,“动画时间”为渐变的总时间。 6. **更改画面色调:**色调可以用调色器调配,“动画时间”为渐变的总时间。
* 请注意渐变是在RGBA颜色空间中匀速直线运动V2.8.1可能加入加速度),因此效果可能不好,画面闪烁同理。 * 请注意渐变是在RGBA颜色空间中直线运动V2.8.1支持加速度),因此效果可能不好,画面闪烁同理。
* 如需在勇士自由行动时反复执行,请使用并行脚本或自我回调。
7. **恢复画面色调:**指将更改后的色调恢复到楼层的默认色调,更改当前层的默认色调后您可以使用此指令刷新。 7. **恢复画面色调:**指将更改后的色调恢复到楼层的默认色调,更改当前层的默认色调后您可以使用此指令刷新。
8. **画面闪烁:**“单次时间”必须为3的倍数前1/3时间用于将画面色调转变为目标色调后2/3时间用于恢复当前色调执行次数如题。 8. **画面闪烁:**“单次时间”必须为3的倍数前1/3时间用于将画面色调转变为目标色调后2/3时间用于恢复当前色调执行次数如题。
* 实际调用`screenFlash(color, time, times, callback)` * 实际调用`screenFlash(color, time, times, callback)`

View File

@ -30,7 +30,7 @@
以下为Windows专用的一些辅助工具位于“辅助工具”文件夹由C#编写: 以下为Windows专用的一些辅助工具位于“辅助工具”文件夹由C#编写:
* 便捷PS工具能方便地替换和新增32×32、32×48素材。 * 便捷PS工具能方便地替换和新增32×32、32×48素材。V2.8.1对该工具进行了大幅强化您甚至可以指定32×16的格子尺寸作为前述两种尺寸的过渡操作。
* 地图生成器识别RPG Maker魔塔的地图截图生成HTML5魔塔的地图数据。 * 地图生成器识别RPG Maker魔塔的地图截图生成HTML5魔塔的地图数据。
* 怪物数据导出从RPG Maker XP 1.03游戏导出怪物数据用于HTML5魔塔或使用Excel查看。 * 怪物数据导出从RPG Maker XP 1.03游戏导出怪物数据用于HTML5魔塔或使用Excel查看。
* RM动画导出从RPG Maker XP 1.03游戏导出动画用于HTML5魔塔。 * RM动画导出从RPG Maker XP 1.03游戏导出动画用于HTML5魔塔。

View File

@ -2155,6 +2155,7 @@ default : [1,"bg.jpg","null","0","0",1,0,false]
allImages : ['EvalString_0'] allImages : ['EvalString_0']
menu : [['选择图片','editor_blockly.selectMaterial(block, ["./project/images/:images", "EvalString_0"])']] menu : [['选择图片','editor_blockly.selectMaterial(block, ["./project/images/:images", "EvalString_0"])']]
previewBlock : true previewBlock : true
colour : this.imageColor
if (Reverse_List_0 && Reverse_List_0 != 'null') { if (Reverse_List_0 && Reverse_List_0 != 'null') {
Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"';
} else Reverse_List_0 = ''; } else Reverse_List_0 = '';
@ -2176,6 +2177,7 @@ default : [1,"bg.jpg","null","0","0","","",1,"0","0","","",0,false]
allImages : ['EvalString_0'] allImages : ['EvalString_0']
menu : [['选择图片','editor_blockly.selectMaterial(block, ["./project/images/:images", "EvalString_0"])']] menu : [['选择图片','editor_blockly.selectMaterial(block, ["./project/images/:images", "EvalString_0"])']]
previewBlock : true previewBlock : true
colour : this.imageColor
if (Reverse_List_0 && Reverse_List_0 != 'null') { if (Reverse_List_0 && Reverse_List_0 != 'null') {
Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"'; Reverse_List_0 = ', "reverse": "' + Reverse_List_0 + '"';
} else Reverse_List_0 = ''; } else Reverse_List_0 = '';
@ -2195,6 +2197,7 @@ showTextImage_s
/* showTextImage_s /* showTextImage_s
tooltip : showTextImage显示图片化文本 tooltip : showTextImage显示图片化文本
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
colour : this.imageColor
doubleclicktext : EvalString_Multi_0 doubleclicktext : EvalString_Multi_0
default : ["可以使用setText事件来控制字体、颜色、大小、偏移量等",1,"0","0",1.4,"null",1,0,false] default : ["可以使用setText事件来控制字体、颜色、大小、偏移量等",1,"0","0",1.4,"null",1,0,false]
if (Reverse_List_0 && Reverse_List_0 != 'null') { if (Reverse_List_0 && Reverse_List_0 != 'null') {
@ -2213,6 +2216,7 @@ hideImage_s
tooltip : hideImage清除图片 tooltip : hideImage清除图片
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : [1,0,false] default : [1,0,false]
colour : this.imageColor
var async = Bool_0?', "async": true':''; var async = Bool_0?', "async": true':'';
var code = '{"type": "hideImage", "code": '+NInt_0+', "time": '+Int_0+async+'},\n'; var code = '{"type": "hideImage", "code": '+NInt_0+', "time": '+Int_0+async+'},\n';
return code; return code;
@ -2228,6 +2232,7 @@ helpUrl : /_docs/#/instruction
default : ["","",""] default : ["","",""]
allImages : ['EvalString_0'] allImages : ['EvalString_0']
previewBlock : true previewBlock : true
colour : this.imageColor
EvalString_0 = EvalString_0 ? (', "name": "'+EvalString_0+'"') : ''; EvalString_0 = EvalString_0 ? (', "name": "'+EvalString_0+'"') : '';
var loc = (PosString_0 && PosString_1) ? (', "loc": ['+PosString_0+','+PosString_1+']') : ''; var loc = (PosString_0 && PosString_1) ? (', "loc": ['+PosString_0+','+PosString_1+']') : '';
var code = '{"type": "showGif"'+EvalString_0+loc+'},\n'; var code = '{"type": "showGif"'+EvalString_0+loc+'},\n';
@ -2243,6 +2248,7 @@ moveImage_s
tooltip : moveImage图片移动 tooltip : moveImage图片移动
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : [1,'','','','',500,false] default : [1,'','','','',500,false]
colour : this.imageColor
var toloc = ''; var toloc = '';
if (PosString_0 && PosString_1) if (PosString_0 && PosString_1)
toloc = ', "to": ['+PosString_0+','+PosString_1+']'; toloc = ', "to": ['+PosString_0+','+PosString_1+']';
@ -2261,6 +2267,7 @@ rotateImage_s
tooltip : rotateImage图片旋转 tooltip : rotateImage图片旋转
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : [1,'','','',90,500,false] default : [1,'','','',90,500,false]
colour : this.imageColor
var loc = ''; var loc = '';
if (PosString_0 && PosString_1) if (PosString_0 && PosString_1)
loc = ', "center": ['+PosString_0+','+PosString_1+']'; loc = ', "center": ['+PosString_0+','+PosString_1+']';
@ -2278,6 +2285,7 @@ scaleImage_s
tooltip : scaleImage图片放缩 tooltip : scaleImage图片放缩
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : [1,'','','',0.8,0,false] default : [1,'','','',0.8,0,false]
colour : this.imageColor
if (Number_0 <= 0) throw new Error('放缩比例需要大于0'); if (Number_0 <= 0) throw new Error('放缩比例需要大于0');
var loc = ''; var loc = '';
if (PosString_0 && PosString_1) if (PosString_0 && PosString_1)
@ -2515,7 +2523,7 @@ helpUrl : /_docs/#/instruction
default : ["bgm.mp3", 0, true] default : ["bgm.mp3", 0, true]
allBgms : ['EvalString_0'] allBgms : ['EvalString_0']
material : ["./project/bgms/", "EvalString_0"] material : ["./project/bgms/", "EvalString_0"]
colour : this.soundColor colour : this.imageColor
Int_0 = Int_0 ? (', "startTime": '+Int_0) : ''; Int_0 = Int_0 ? (', "startTime": '+Int_0) : '';
Bool_0 = Bool_0 ? ', "keep": true' : ''; Bool_0 = Bool_0 ? ', "keep": true' : '';
var code = '{"type": "playBgm", "name": "'+EvalString_0+'"'+Int_0+Bool_0+'},\n'; var code = '{"type": "playBgm", "name": "'+EvalString_0+'"'+Int_0+Bool_0+'},\n';
@ -2529,7 +2537,7 @@ pauseBgm_s
/* pauseBgm_s /* pauseBgm_s
tooltip : pauseBgm: 暂停背景音乐 tooltip : pauseBgm: 暂停背景音乐
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
colour : this.soundColor colour : this.imageColor
var code = '{"type": "pauseBgm"},\n'; var code = '{"type": "pauseBgm"},\n';
return code; return code;
*/; */;
@ -2541,7 +2549,7 @@ resumeBgm_s
/* resumeBgm_s /* resumeBgm_s
tooltip : resumeBgm: 恢复背景音乐 tooltip : resumeBgm: 恢复背景音乐
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
colour : this.soundColor colour : this.imageColor
Bool_0 = Bool_0 ? ', "resume": true' : ''; Bool_0 = Bool_0 ? ', "resume": true' : '';
var code = '{"type": "resumeBgm"' + Bool_0 + '},\n'; var code = '{"type": "resumeBgm"' + Bool_0 + '},\n';
return code; return code;
@ -2557,7 +2565,7 @@ helpUrl : /_docs/#/instruction
default : ["bgm.mp3"] default : ["bgm.mp3"]
allBgms : ['EvalString_0'] allBgms : ['EvalString_0']
material : ["./project/bgms/", "EvalString_0"] material : ["./project/bgms/", "EvalString_0"]
colour : this.soundColor colour : this.imageColor
var code = '{"type": "loadBgm", "name": "'+EvalString_0+'"},\n'; var code = '{"type": "loadBgm", "name": "'+EvalString_0+'"},\n';
return code; return code;
*/; */;
@ -2571,7 +2579,7 @@ tooltip : freeBgm: 释放背景音乐的缓存
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["bgm.mp3"] default : ["bgm.mp3"]
allBgms : ['EvalString_0'] allBgms : ['EvalString_0']
colour : this.soundColor colour : this.imageColor
var code = '{"type": "freeBgm", "name": "'+EvalString_0+'"},\n'; var code = '{"type": "freeBgm", "name": "'+EvalString_0+'"},\n';
return code; return code;
*/; */;
@ -2584,7 +2592,7 @@ playSound_s
tooltip : playSound: 播放音效 tooltip : playSound: 播放音效
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["item.mp3",false,"",false] default : ["item.mp3",false,"",false]
colour : this.soundColor colour : this.imageColor
allSounds : ['EvalString_0'] allSounds : ['EvalString_0']
material : ["./project/sounds/", "EvalString_0"] material : ["./project/sounds/", "EvalString_0"]
if (IntString_0) { if (IntString_0) {
@ -2605,7 +2613,7 @@ playSound_1_s
tooltip : playSound: 播放系统音效 tooltip : playSound: 播放系统音效
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : ["确定",false,"",false] default : ["确定",false,"",false]
colour : this.soundColor colour : this.imageColor
if (IntString_0) { if (IntString_0) {
if (parseInt(IntString_0) < 30 || parseInt(IntString_0) > 300) throw '音调设置只能在30-300之间100为正常音调。'; if (parseInt(IntString_0) < 30 || parseInt(IntString_0) > 300) throw '音调设置只能在30-300之间100为正常音调。';
IntString_0 = ', "pitch": ' + IntString_0; IntString_0 = ', "pitch": ' + IntString_0;
@ -2623,7 +2631,7 @@ stopSound_s
/* stopSound_s /* stopSound_s
tooltip : stopSound: 停止所有音效 tooltip : stopSound: 停止所有音效
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
colour : this.soundColor colour : this.imageColor
var code = '{"type": "stopSound"},\n'; var code = '{"type": "stopSound"},\n';
return code; return code;
*/; */;
@ -2636,7 +2644,7 @@ setVolume_s
tooltip : setVolume: 设置音量 tooltip : setVolume: 设置音量
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : [90, 500, false] default : [90, 500, false]
colour : this.soundColor colour : this.imageColor
IntString_0 = IntString_0 ?(', "time": '+IntString_0):''; IntString_0 = IntString_0 ?(', "time": '+IntString_0):'';
var async = Bool_0?', "async": true':''; var async = Bool_0?', "async": true':'';
var code = '{"type": "setVolume", "value": '+Int_0+IntString_0+async+'},\n'; var code = '{"type": "setVolume", "value": '+Int_0+IntString_0+async+'},\n';
@ -2651,7 +2659,7 @@ setBgmSpeed_s
tooltip : setSpeed: 设置背景音乐播放速度 tooltip : setSpeed: 设置背景音乐播放速度
helpUrl : /_docs/#/instruction helpUrl : /_docs/#/instruction
default : [100, true] default : [100, true]
colour : this.soundColor colour : this.imageColor
if (Int_0 < 30 || Int_0 > 300) throw '速度只能设置只能在30-300之间100为正常速度。'; if (Int_0 < 30 || Int_0 > 300) throw '速度只能设置只能在30-300之间100为正常速度。';
Bool_0 = Bool_0?', "pitch": true':''; Bool_0 = Bool_0?', "pitch": true':'';
var code = '{"type": "setBgmSpeed", "value": '+Int_0+Bool_0+'},\n'; var code = '{"type": "setBgmSpeed", "value": '+Int_0+Bool_0+'},\n';
@ -4168,6 +4176,7 @@ this.evisitor.soundColor=20;
this.evisitor.commentColor=285; this.evisitor.commentColor=285;
this.evisitor.mapColor=175; this.evisitor.mapColor=175;
this.evisitor.uiColor=359; this.evisitor.uiColor=359;
this.evisitor.imageColor=45;
*/ */
/* Function_1 /* Function_1

View File

@ -115,14 +115,6 @@ editor_blocklyconfig=(function(){
MotaActionBlocks['win_s'].xmlText(), MotaActionBlocks['win_s'].xmlText(),
MotaActionBlocks['lose_s'].xmlText(), MotaActionBlocks['lose_s'].xmlText(),
MotaActionBlocks['restart_s'].xmlText(), MotaActionBlocks['restart_s'].xmlText(),
MotaActionBlocks['showImage_s'].xmlText(),
MotaActionBlocks['showImage_1_s'].xmlText(),
MotaActionBlocks['hideImage_s'].xmlText(),
MotaActionBlocks['showTextImage_s'].xmlText(),
MotaActionBlocks['moveImage_s'].xmlText(),
MotaActionBlocks['rotateImage_s'].xmlText(),
MotaActionBlocks['scaleImage_s'].xmlText(),
MotaActionBlocks['showGif_s'].xmlText(),
], ],
'数据相关':[ '数据相关':[
MotaActionBlocks['setValue_s'].xmlText([ MotaActionBlocks['setValue_s'].xmlText([
@ -195,7 +187,7 @@ editor_blocklyconfig=(function(){
MotaActionBlocks['insert_1_s'].xmlText(), MotaActionBlocks['insert_1_s'].xmlText(),
MotaActionBlocks['insert_2_s'].xmlText(), MotaActionBlocks['insert_2_s'].xmlText(),
], ],
'特效/声音':[ '特效表现':[
MotaActionBlocks['sleep_s'].xmlText(), MotaActionBlocks['sleep_s'].xmlText(),
MotaActionFunctions.actionParser.parseList({"type": "wait", "timeout": 0, "data": [ MotaActionFunctions.actionParser.parseList({"type": "wait", "timeout": 0, "data": [
{"case": "keyboard", "keycode": "13,32", "action": [{"type": "comment", "text": "当按下回车(keycode=13)或空格(keycode=32)时执行此事件\n超时剩余时间会写入flag:timeout"}]}, {"case": "keyboard", "keycode": "13,32", "action": [{"type": "comment", "text": "当按下回车(keycode=13)或空格(keycode=32)时执行此事件\n超时剩余时间会写入flag:timeout"}]},
@ -218,6 +210,21 @@ editor_blocklyconfig=(function(){
MotaActionBlocks['setCurtain_1_s'].xmlText(), MotaActionBlocks['setCurtain_1_s'].xmlText(),
MotaActionBlocks['screenFlash_s'].xmlText(), MotaActionBlocks['screenFlash_s'].xmlText(),
MotaActionBlocks['setWeather_s'].xmlText(), MotaActionBlocks['setWeather_s'].xmlText(),
MotaActionBlocks['callBook_s'].xmlText(),
MotaActionBlocks['callSave_s'].xmlText(),
MotaActionBlocks['autoSave_s'].xmlText(),
MotaActionBlocks['forbidSave_s'].xmlText(),
MotaActionBlocks['callLoad_s'].xmlText(),
],
'音像处理':[
MotaActionBlocks['showImage_s'].xmlText(),
MotaActionBlocks['showImage_1_s'].xmlText(),
MotaActionBlocks['hideImage_s'].xmlText(),
MotaActionBlocks['showTextImage_s'].xmlText(),
MotaActionBlocks['moveImage_s'].xmlText(),
MotaActionBlocks['rotateImage_s'].xmlText(),
MotaActionBlocks['scaleImage_s'].xmlText(),
MotaActionBlocks['showGif_s'].xmlText(),
MotaActionBlocks['playBgm_s'].xmlText(), MotaActionBlocks['playBgm_s'].xmlText(),
MotaActionBlocks['pauseBgm_s'].xmlText(), MotaActionBlocks['pauseBgm_s'].xmlText(),
MotaActionBlocks['resumeBgm_s'].xmlText(), MotaActionBlocks['resumeBgm_s'].xmlText(),
@ -228,11 +235,6 @@ editor_blocklyconfig=(function(){
MotaActionBlocks['stopSound_s'].xmlText(), MotaActionBlocks['stopSound_s'].xmlText(),
MotaActionBlocks['setVolume_s'].xmlText(), MotaActionBlocks['setVolume_s'].xmlText(),
MotaActionBlocks['setBgmSpeed_s'].xmlText(), MotaActionBlocks['setBgmSpeed_s'].xmlText(),
MotaActionBlocks['callBook_s'].xmlText(),
MotaActionBlocks['callSave_s'].xmlText(),
MotaActionBlocks['autoSave_s'].xmlText(),
MotaActionBlocks['forbidSave_s'].xmlText(),
MotaActionBlocks['callLoad_s'].xmlText(),
], ],
'UI绘制':[ 'UI绘制':[
MotaActionBlocks['previewUI_s'].xmlText(), MotaActionBlocks['previewUI_s'].xmlText(),

View File

@ -3264,7 +3264,6 @@ events.prototype.hideImage = function (code, time, callback) {
////// 移动图片 ////// ////// 移动图片 //////
events.prototype.moveImage = function (code, to, opacityVal, moveMode, time, callback) { events.prototype.moveImage = function (code, to, opacityVal, moveMode, time, callback) {
time = time || 1000;
to = to || []; to = to || [];
var name = "image" + (code + 100); var name = "image" + (code + 100);
if (!core.dymCanvas[name]) { if (!core.dymCanvas[name]) {
@ -3282,6 +3281,13 @@ events.prototype.moveImage = function (code, to, opacityVal, moveMode, time, cal
var opacity = parseFloat(canvas.style.opacity), toOpacity = getOrDefault(opacityVal, opacity); var opacity = parseFloat(canvas.style.opacity), toOpacity = getOrDefault(opacityVal, opacity);
if (!time) {
core.relocateCanvas(name, toX, toY);
core.setOpacity(toOpacity);
if (callback) callback();
return;
}
this._moveImage_moving(name, { this._moveImage_moving(name, {
fromX: fromX, fromY: fromY, toX: toX, toY: toY, opacity: opacity, toOpacity: toOpacity, fromX: fromX, fromY: fromY, toX: toX, toY: toY, opacity: opacity, toOpacity: toOpacity,
moveMode: moveMode, time: time / Math.max(core.status.replay.speed, 1) moveMode: moveMode, time: time / Math.max(core.status.replay.speed, 1)
@ -3314,7 +3320,6 @@ events.prototype._moveImage_moving = function (name, moveInfo, callback) {
////// 旋转图片 ////// ////// 旋转图片 //////
events.prototype.rotateImage = function (code, center, angle, moveMode, time, callback) { events.prototype.rotateImage = function (code, center, angle, moveMode, time, callback) {
time = time || 1000;
center = center || []; center = center || [];
var name = "image" + (code + 100); var name = "image" + (code + 100);
if (!core.dymCanvas[name]) { if (!core.dymCanvas[name]) {
@ -3325,6 +3330,13 @@ events.prototype.rotateImage = function (code, center, angle, moveMode, time, ca
var centerX = core.calValue(center[0]), centerY = core.calValue(center[1]); var centerX = core.calValue(center[0]), centerY = core.calValue(center[1]);
var fromAngle = parseFloat(canvas.getAttribute('_angle')) || 0; var fromAngle = parseFloat(canvas.getAttribute('_angle')) || 0;
if (!time) {
core.rotateCanvas(name, fromAngle + angle, centerX, centerY);
if (callback) callback();
return;
}
var rotateInfo = { var rotateInfo = {
fromAngle: fromAngle, angle: angle, centerX: centerX, centerY: centerY, fromAngle: fromAngle, angle: angle, centerX: centerX, centerY: centerY,
moveMode: moveMode, time: time / Math.max(core.status.replay.speed, 1) moveMode: moveMode, time: time / Math.max(core.status.replay.speed, 1)