update docs

This commit is contained in:
AutumnOrange51 2020-05-14 16:38:55 +08:00
parent fedafb2917
commit b5d356f75f
16 changed files with 568 additions and 1102 deletions

View File

@ -1,6 +1,5 @@
# 元件说明
?> 目前版本**v2.6.6**,上次更新时间:* {docsify-updated} *
?> 目前版本**v2.7**,上次更新时间:* {docsify-updated} *
在本章中,将对样板里的各个元件进行说明。各个元件主要包括道具、门、怪物、楼梯等等。
@ -9,29 +8,22 @@
![生成地图](./img/sample0.png)
## 道具
本塔目前支持的所有道具列表在样板0层中已全部给出。当你在样板0层中拿到某个宝物时会有提示这里不再赘述详见拿到该道具的说明。
样板自带的所有道具在样板0层中已全部给出。当你在样板0层中拿到某个宝物时会有提示这里不再赘述详见拿到该道具的说明。
大多数宝物都有默认的效果,屠龙匕首暂未定义,如有自己的需求可参见[自定义道具效果](personalization#自定义道具效果)。
拿到道具后将触发`afterGetItem`事件,有关事件的详细介绍请参见[事件](event)。
如需修改某个道具的效果,在不同区域宝石数据发生变化等问题,请参见[自定义道具效果](personalization#自定义道具效果)的说明。
**有关轻按在data.js的系统变量中有定义。如果`enableGentleClick`为true则鼠标触摸屏通过双击勇士键盘通过空格可达到轻按效果即不向前移动而获得前方物品。**
<br>**有关轻按,在全塔属性的系统开关中有定义。如果勾选了 `enableGentleClick` ,则鼠标(触摸屏)通过双击勇士,键盘通过空格,手机通过虚拟数字键 7 可达到轻按效果,即不移动而获得周围物品。**
## 装备
如果需要让剑盾等变成装备,可以直接在`data.js`中设置`'equipment': true`即可。
如果需要让剑盾等变成装备,可以直接在它们的图块属性中把 `cls` 一项改为 `equips`<br>
从V2.4.1开始HTML5魔塔样板终于拥有了属于自己的装备页面。
### 装备栏的设置,装备类型
在全塔属性中,有一个`equipName`项,其定义了本塔的所有可装备的装备栏。
其需要是一个不小于1且不大于6的数组其中每一项为装备栏的名称**建议是两个汉字**。
<br>其需要是一个长度为正数且不大于 6 15×15 样板为不大于 8 )的一维数组,其中每一项为装备栏的名称,**建议是两个汉字**。<br>
例如下面这种写法就是定义了四个装备孔,名称分别为武器、防御、首饰和魔杖。
``` js
@ -47,9 +39,8 @@
如果要将一个道具设置为装备,首先需要将其`cls`设为`equips`。
然后在图块属性的`equip`一项中设置装备的具体属性。该项写法如下:
``` js
{"type": 0, "atk": 0, "def": 0, "mdef"0, "animate": "hand", "percentage": true}
``` json
{"type": 0, "atk": 0, "def": 0, "mdef": 0, "animate": "hand", "percentage": true}
```
type为该装备的类型必填和上面装备栏一一对应。例如0就是武器2就是首饰等等。
@ -63,8 +54,7 @@ animate为该装备的攻击动画仅对type为0时有效。具体可参见[
percentage为该装备是否按比例增加属性。
下面是几个写法例子。
``` js
``` json
{"type": 0, "atk": 10} // 装备类型是武器,效果是攻击+10使用默认的攻击动画
{"type": 0, "atk": 40, "animate": "sword"} // 装备类型为武器,效果是攻击+10攻击动画是sword
{"type": 1, "def": 40, "percentage": true} // 装备类型是防具效果是防御提升40%
@ -75,8 +65,8 @@ percentage为该装备是否按比例增加属性。
所有取值全部向下取整。
值得注意的是如果多个装备同时按比例增加属性使用加法计算。比如武器增加30%攻击防具增加10%攻击最终合起来增加的是40%而不是43%的属性。
值得注意的是如果多个装备同时按比例增加属性使用加法计算。比如武器增加30%攻击防具增加10%攻击最终合起来增加的是40%而不是43%的属性。<br>
如果某件装备需要按常数增加一种属性但按百分比增加另一种属性,请参考[插件库](https://h5mota.com/plugins/)
### 检测是否存在装备
可以使用`core.hasEquip(itemId)`来检测是否装上某个装备。
@ -92,9 +82,7 @@ percentage为该装备是否按比例增加属性。
从V2.5.4开始,允许支持多重装备,即有若干的装备可共用若干的格子(例如永不复还那样)。
要实现这一点,上面的写法有所改变。
在全塔属性中的`equipName`项写法不变不过可以写重复的装备孔名称。但仍然最多只能写6个
<br>在全塔属性中的`equipName`项写法不变,不过可以写重复的装备孔名称。(但仍然最多只能写 6 或 8 个)
``` js
"equipName": ["武器", "武器", "武器", "防具", "防具", "首饰"]
```
@ -112,95 +100,52 @@ percentage为该装备是否按比例增加属性。
装备动画仍然会取第一个装备类型为0的装备的`animate`项,即使装备了多个有动画的武器。
## 门
本塔支持6种门黄蓝红绿铁花。前五种门需要有对应的钥匙打开花门只能通过调用`openDoor`事件进行打开。
开门后可触发该层的`afterOpenDoor`事件,有关事件的详细介绍请参见[事件](event)。
样板自带6种门黄蓝红绿铁花。前五种门需要有对应的钥匙打开花门只能通过调用 `openDoor` 事件进行打开。<br>
开门后可触发该点的 `afterOpenDoor` 事件,有关事件的详细介绍请参见[事件](event)。<br>
如果要新增自己的门,请参见[新增门和对应的钥匙](personalization#新增门和对应的钥匙)。
## 暗墙
本塔支持暗墙。
要制作一个暗墙非常简单:在该点直接放一个普通墙壁,然后事件写“开门”,坐标为该点就行。
``` js
样板支持暗墙。要制作一个暗墙非常简单:在该点直接放一个普通墙壁,然后事件写“开门”,坐标为该点就行。
``` json
// 该点画一个普通的墙壁,比如`yellowWall`
// 在该点的事件events中:
"x,y": [
{"type": "openDoor"} // 直接使用开门事件,坐标可忽略表示当前点
]
[{"type": "openDoor"}] // 直接使用开门事件,坐标可忽略表示当前点
```
系统会自动调用animates中的开暗墙动画。
目前只有如下ID支持以这种方式开门
系统会自动调用animates中的开暗墙动画。样板自带如下ID支持以这种方式开门
``` text
yellowDoor, blueDoor, redDoor, greenDoor, specialDoor, steelDoor,
yellowWall, blueWall, whiteWall
```
## 怪物
本塔支持的怪物列表参见`project/enemys.js`。其与images目录下的`enemys.png`素材按顺序一一对应。
样板自带的怪物列表参见 `project\enemys.js` 。其与 `images\enemys.png` 素材按顺序一一对应。<br>
如有自己的怪物素材需求请参见[自定义素材](personalization#自定义素材)的内容。
怪物可以有特殊属性,每个怪物可以有多个自定义属性。
怪物的特殊属性所对应的数字special在脚本编辑中的`getSpecials`中定义,请勿对已有的属性进行修改。
多属性可采用数组的写法,比如`'special': [1,3]`视为同时拥有先攻和坚固属性;`'special': [5,10,14,18]`视为拥有3连击、模仿、诅咒、阻击四个属性。
怪物可以负伤,在全塔属性的全局变量`enableNegativeDamage`中指定。
<br>多属性可直接从图块属性勾选。怪物可以负伤,由全塔属性的系统开关 `enableNegativeDamage` 指定。<br>
打败怪物后可以进行加点操作。有关加点塔的制作可参见[加点事件](event#加点事件)。
如果全塔属性中的enableexp为false即不启用经验的话怪物手册里将不显示怪物的经验值打败怪物也不获得任何经验。
拿到幸运金币后,打怪获得的金币将翻倍。
如果怪物有`"notBomb": true`,则该系列诖怪物均不可被炸。
<br>如果全塔属性中的“显示经验值”未勾选,即不启用经验的话,怪物手册里将不显示怪物的经验值,打败怪物也不获得任何经验。<br>
拿到幸运金币后,打怪获得的金币将翻倍。如果怪物勾选了 `notBomb` ,则这个种类的怪物均不可被炸。<br>
N连击怪物的special是6且我们可以为它定义n代表实际连击数。参见样板中剑王的写法。
吸血怪需要给怪物设置value代表吸血的比例。
可以给吸血怪添加`'add': true`来将吸血的数值加到自身上。
中毒怪让勇士中毒后,每步扣减的生命值由`data.js`中的values定义。
衰弱怪让勇士衰弱后,攻防会下降一定比例或固定数值(直到衰弱状态解除恢复);其在`data.js`中的values定义。
<br>吸血怪需要给怪物设置value代表吸血的比例。可以给吸血怪勾选 `add` 来将吸血的数值加到自身上。<br>但这样做以后,红色的预估伤害往往带有误导性,这点还务请注意!<br>
中毒怪让勇士中毒后,每步扣减的生命值由全塔属性中的 `poisonDamage` 定义。<br>
衰弱怪让勇士衰弱后,攻防会下降一定比例或固定数值(直到衰弱状态解除恢复);由全塔属性中的 `weakValue` 定义。<br>
诅咒怪将让勇士陷入诅咒状态,诅咒状态下杀怪不获得金币和经验值。
领域怪需要在怪物后添加value代表领域伤害的数值。如果勇士生命值扣减到0则直接死亡触发lose事件。
领域是十字伤害还是九宫格伤害由`zoneSquare`设定如设置为true则为九宫格伤害不指定或为false则为十字伤害。
<br>领域怪需要需要给怪物设置 `value` 代表领域伤害的数值。如果勇士生命值扣减到0则直接死亡触发 `lose` 事件。<br>
领域是锯齿形状还是正方形由 `zoneSquare` 设定,如勾选则为正方形,不勾选则为锯齿形状。<br>
领域怪还可以设置`range`选项代表该领域怪的范围不写则默认为1。
**将`flag:no_zone`设置为true可以取消领域效果。**
<br>**将 `flags.no_zone` 设置为 `true` 可以免疫领域效果。**<br>
阻击怪同样需要设置value代表阻击伤害的数值。如果勇士生命值扣减到0则直接死亡触发lose事件。
**将`flag:no_snipe`设置为true可以取消阻击效果。**
!> 阻击怪后退的地点不能有任何事件存在,即使是已经被禁用的自定义事件!
<br>**将`flags.no_snipe`设置为true可以免疫阻击效果包括伤害和移动。**<br>
!> 阻击怪后退的地点不能有任何事件存在,即使是已经被禁用的红绿事件或重生怪!(会导致此事件意外被重新启用)<br>
激光怪同样需要设置value代表激光伤害的数值。
请注意如果吸血、领域、阻击中任何两个同时存在则value会冲突。**因此请勿将吸血、领域、阻击或激光放置在同一个怪物身上。**
**将`flag:no_laser`设置为true可以免疫激光效果。**
<br>请注意如果吸血、领域、阻击、生命光环中任何两个同时存在,则 `value` 会冲突。**因此请勿将吸血、领域、阻击或激光放置在同一个怪物身上。退化和攻防光环同理!<br>**
**将 `flags.no_laser` 设置为 `true` 可以免疫激光效果。将 `flags.no_ambush` 设置为 `true` 可以免疫捕捉效果。**<br>
退化怪需要设置'atkValue'和'defValue'表示退化的数值也可以不设置默认为0。
**将`flag:no_betweenAttack`设置为true可以免疫夹击效果。**
<br>**将`flags.no_betweenAttack`设置为true可以免疫夹击效果在全塔属性中还有一个系统开关可以控制夹击伤害是否封顶至夹击怪的战斗伤害。**<br>
固伤怪则需要设置`damage`选项,代表战前扣血数值。
如有额外需求,可参见[自定义怪物属性](personalization#自定义自定义怪物属性),里面讲了如何设置一个新的怪物属性。
@ -226,9 +171,7 @@ N连击怪物的special是6且我们可以为它定义n代表实际连击数
我们可以给`E301`和`E302`怪物属性中的`displayIdInBook`项填写为`"E300"`。
这样的话在怪物手册中所有的E301和E302均会被视为E300并进行合并。即使只有一只朝向左的怪物E301怪物手册仍然会按E300进行显示。
从而完美解决了同种怪物不同朝向在怪物手册的显示问题。
<br>从而完美解决了同种怪物不同朝向在怪物手册的显示问题。此做法不兼容夹击属性,漏怪检测也以映射后的怪物为准。
### NPC的朝向问题
和怪物不同的是NPC朝向问题更复杂一点。
@ -238,12 +181,10 @@ N连击怪物的special是6且我们可以为它定义n代表实际连击数
举个例子假设我存在一个NPC其向上的图块ID是N333向下的图块ID是N334向左的图块ID是N335不存在向右的图块ID。
则可以在这几个图块属性中的`faceIds`中写:`{"up": "N333", "down": "N334", "left": "N335"}`。
当勇士从左边撞上此怪物后将从该图块的图块属性中的faceIds中寻求`left`所对应的ID。
如果存在定义如N335则会在触发对话事件前改变当前图块为N335看起来就是在对话前进行了转向面向勇士。
<br>当勇士从左边撞上此NPC后将从该图块的图块属性中的 `faceIds` 中寻求 `left` 所对应的ID。
如果存在定义如N335则会在触发对话事件前改变当前图块为N335看起来就是在对话前进行了转向面向勇士。<br>
!> 请注意,在对话结束后朝向不会切换回来,因此如果有必要切换朝向请在事件结束前调用转变图块事件。
<br>从v2.7起也提供了“事件转向”指令来执行这种转变图块从而省去了手动填写ID的不便。<br>
同理使用移动事件让NPC在行走时不同朝向的行走会自动调用`faceIds`中不同朝向的ID所对应的行走图看起来就是在行走时也可以不断转向了。
从而完美解决了NPC的朝向问题碰触时面向勇士、行走时改变朝向
@ -253,23 +194,11 @@ N连击怪物的special是6且我们可以为它定义n代表实际连击数
血网的伤害数值、中毒后每步伤害数值、衰弱时暂时攻防下降的数值都在全塔属性的values内定义。
路障同样会尽量被自动寻路绕过。
有关楼梯和传送门必须在该层样板的changeFloor里指定传送点的目标。
floorId指定的是目标楼层的唯一标识符ID
也可以写`"floorId": ":before"`和`"floorId": ":next"`表示上一楼和下一楼。
后面可以写stair到upFloor或downFloor表示将前往目标楼层的上楼梯/下楼梯位置。你也可以写loc然后指定目标点的坐标。
请注意的是如果目标楼层有多个楼梯写stair可能会导致到达的楼梯不确定这时候请使用loc方式来指定具体的点位置。
可以指定direction为up/left/right/down指定后勇士将面向该方向。
可以指定time指定后切换动画时长为指定的数值。
**从2.1.1开始,楼层属性中提供了`upFloor`和`downFloor`两项。如果设置此项(比如`"upFloor": [2,3]`则写stair:upFloor或者楼传器的落点将用此点来替换楼梯位置即类似于RM中的上箭头。**
<br>有关楼梯和传送门,必须在该点的 `changeFloor` 事件里指定传送点的目标。![生成地图](./img/changeFloorBlockly.png)<br>
楼层ID指定的是目标楼层的唯一标识符ID也可以在第一个下拉框中选择“前一楼”和“后一楼”。<br>
第二个下拉框可以选择传送到哪个楼梯,或选择三种对称位置,或显式指定坐标(比如目标楼层有多个楼梯时)。<br>
“朝向”为勇士上下楼后面对的方向,不填则不改变。“动画时间”为上下楼的黑屏时间,不填则使用玩家设定值。<br>“穿透性”表示鼠标或触屏寻路时勇士能否穿过此传送点,在转不开身的狭窄区域建议设为可穿透。<br>
**从v2.1.1开始,楼层属性中提供了 `upFloor``downFloor` 两项。如果设置此项(比如`"upFloor": [2,3]`则写传送到哪个楼梯或者楼传器的落点将用此点来替换楼梯位置即类似于RMXP中的上箭头。**
## 剧情文本控制与对话框效果
在写剧情文本时,可以:
@ -312,16 +241,12 @@ floorId指定的是目标楼层的唯一标识符ID
从V2.4开始H5魔塔开始支持大地图。
大地图在创建时可以指定宽高,要求**宽和高都不得小于1315x15版本则是不小于15且宽高之积不超过1000**。
大地图一旦创建成功则不得修改宽高数值。
<br>大地图一旦创建成功则难以修改宽高数值,如确需修改,请手动打开 `floors` 文件夹中的 `JS` 文件并同时修改宽高和地图矩阵。
## 动画和天气系统
现在我们的H5魔塔支持播放动画也支持天气系统了。
要播放动画你需要先使用“RM动画导出器”将动画导出放在animates目录下然后在全塔属性的animates中定义。
``` js
<br>要播放动画你可以先使用“RM动画导出器”将动画导出放在animates目录下然后在全塔属性的animates中定义。
``` json
// 在此存放所有可能使用的动画必须是animate格式在这里不写后缀名
// 动画必须放在animates目录下文件名不能使用中文不能带空格或特殊字符
"animates": ["hand", "sword", "zone", "yongchang", "thunder"]
@ -332,18 +257,15 @@ floorId指定的是目标楼层的唯一标识符ID
导出动画时可能会进行一些压缩以节省流量,因此清晰度可能不如原版。
从2.3.2开始,动画可以同时导出所用的音效。**如果导出音效,请确保将所用到的音效复制到了`sounds`目录下,并且在全塔属性中注册过。**
<br>确切地说,动画文件中记录着第几帧该用什么音效的文件名,您可以用记事本等文本编辑器打开动画文件并手动修改用到的音效文件名(原本可能是中文甚至日文),以和实际的文件名相匹配
动画播放时是按照每秒20帧的速度即50ms/帧)。
定义完毕后,我们可以调用`animate`事件来播放该动画,有关事件的详细介绍请参见[事件](event)。
!> 播放录像时,将默认忽略所有动画。
目前天气系统支持雨和雪和雾两种天气。
在每层楼的楼层属性中存在一个weather选项表示该层楼的默认天气。
``` js
<br>目前天气系统支持雨、雪和雾三种天气。在每层楼的楼层属性中存在一个weather选项表示该层楼的默认天气。
``` json
// 该层的默认天气。本项可忽略表示晴天,如果写则第一项为"rain""snow"或"fog"代表雨雪雾第二项为1-10之间的数代表强度。
"weather": ["snow",5]
```
@ -351,12 +273,8 @@ floorId指定的是目标楼层的唯一标识符ID
我们也可以使用`setWeather`事件来设置当前天气,有关事件的详细介绍请参见[事件](event)。
## 背景音乐
本塔支持BGM和SE的播放。
要播放音乐和音效你需要将对应的文件放在sounds目录下然后在全塔属性中进行定义
``` js
样板支持BGM和SE的播放。要播放音乐和音效你需要将对应的文件放在sounds目录下然后在全塔属性中进行定义
``` json
// 在此存放所有的bgm和文件名一致。
// 音频名不能使用中文,不能带空格或特殊字符;可以直接改名拼音就好
"bgms": ["bgm.mp3"]
@ -366,9 +284,7 @@ floorId指定的是目标楼层的唯一标识符ID
```
!> 音频名不能使用中文,不能带空格或特殊字符。
目前BGM支持主流的音乐格式如mp3, ogg等。不支持mid格式的播放。
<br>目前BGM支持主流的音乐格式`wav, mp3, ogg, flac, m4r` 等。不支持 `mid` 格式的播放。<br>`iOS` 系统对 `ogg` 的支持性较差,但 `ogg``mp3` 体积小,请注意权衡。<br>
定义完毕后,我们可以调用`playBgm`/`playSound`事件来播放对应的音乐/音效,有关事件的详细介绍请参见[事件](event)。
**另外,考虑到用户的流量问题,将遵循如下规则:**
@ -382,11 +298,7 @@ floorId指定的是目标楼层的唯一标识符ID
从V2.5.3开始,可以使用`loadBgm`事件来预加载一个bgm这样到播放时无需等待直接播放。
同时BGM将使用LRU算法增加缓存机制。默认最多缓存4个BGM在core.js的musicStatus.cachedBgmCount控制
系统会自动释放最久未使用的BGM。
也可以使用`freeBgm`事件来手动释放一个无需再用的bgm。
<br>系统会自动释放最久未使用的BGM。也可以使用 `freeBgm` 脚本来手动释放一个无需再用的 `bgm`
## 录像
HTML5魔塔一大亮点就是存在录像系统可以很方便进行录像回放。
@ -404,6 +316,7 @@ HTML5魔塔一大亮点就是存在录像系统可以很方便进行录像回
录像播放过程中,可以进行如下操作:
- **步进:** 暂停状态下,按 `N` 键可以单步执行录像,常用于调试。
- **暂停/播放:** 按空格可以随时暂停或播放录像。
- **加速:** 按X可以加速录像播放最高可达6倍速。
- **减速:** 按Z可以减速录像播放最低可达0.3倍速。
@ -413,8 +326,7 @@ HTML5魔塔一大亮点就是存在录像系统可以很方便进行录像回
- **查看手册:** 按C可以在录像播放过程中查看怪物手册。
- **浏览地图:** 按PgUp/PgDn可以在录像播放过程中浏览地图。
如果录像出现问题请加群539113091找小艾反馈Bug。
如果录像出现问题,请加 QQ 群 [959329661](https://jq.qq.com/?_wv=1027&k=5C87qeQ) 找小艾反馈Bug。
## 操作说明
![](img/keyboard.png)

File diff suppressed because it is too large Load Diff

BIN
_docs/img/bigKey.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 372 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 44 KiB

After

Width:  |  Height:  |  Size: 315 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 21 KiB

After

Width:  |  Height:  |  Size: 102 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 24 KiB

After

Width:  |  Height:  |  Size: 222 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 50 KiB

After

Width:  |  Height:  |  Size: 169 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 187 KiB

After

Width:  |  Height:  |  Size: 382 KiB

BIN
_docs/img/forEach.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 254 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 53 KiB

After

Width:  |  Height:  |  Size: 75 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.2 KiB

After

Width:  |  Height:  |  Size: 21 KiB

View File

@ -1,18 +1,17 @@
# HTML5 魔塔样板说明文档
?> 目前版本**v2.7**,上次更新时间:* {docsify-updated} *
<br>当您打开这份帮助文档的瞬间,相信您一定是抱着幼年时的游戏开发梦想前来的。<br>
众所周知,即时制游戏的开发要比非即时游戏难上许多,像素级游戏的开发又要比网格地图游戏难上许多。<br>在非即时的网格地图游戏譬如策略战棋有一类游戏叫做“固定数值RPG”或者简称“魔塔”。<br>这是一种基于运筹学的数学优化建模游戏,虽然小众,却不失有自己的圈子。
?> 目前版本**v2.6.6**,上次更新时间:* {docsify-updated} *
众所周知魔塔的趋势是向移动端发展贴吧中也常常能见到“求手机魔塔”的帖子。然而现有的工具中NekoRPG有着比较大的局限性游戏感较差更是完全没法在iOS上运行。而一些APP的魔塔虽然可用但是必须要下载安装对于Android和iOS还必须开发不同的版本非常麻烦。
在当下魔塔的趋势是向移动端发展网络上也常常能见到“求手机魔塔”的提问。然而现有的工具中NekoRPG有着比较大的局限性游戏感较差更是完全没法在iOS上运行。而一些APP的魔塔譬如《魔塔盛宴》和一些登陆了TapTap的魔塔以及最新的由RPG Maker MV制作的《盖伦排位记》等虽然可用但是必须要下载安装对于Android和iOS还必须开发不同的版本非常麻烦。
但是现在我们有了HTML5。 HTML5的画布canvas以及它被Android/iOS内置浏览器所支持的特性可以让我们做出真正意义上的全平台覆盖的魔塔。
然而一般而言使用非RMXP制作魔塔往往需要一定的编程技术HTML5魔塔自然也不例外。但是为了能让大家更加注重于“做塔”本身而不用考虑做塔以外的各种脚本问题我特意制作了这样一部HTML5的魔塔样板。
然而一般而言使用非RPG Maker MV制作魔塔往往需要一定的编程技术HTML5魔塔自然也不例外。但是为了能让大家更加注重于“做塔”本身而不用考虑做塔以外的各种脚本问题@艾之葵GitHub ckcz123特意制作了这样一部HTML5的魔塔样板。
> 这个魔塔样板可以让你在完全不懂任何编程语言的情况下做出自己的H5魔塔。不会代码没关系只要你想做就能做出来
> 这个魔塔样板可以让你在完全不懂任何编程的情况下做出自己的H5魔塔。不会代码没关系只要你想做就能做出来
继续查看文档的详细介绍让你学会如何使用这一个样板来制作属于自己的HTML5魔塔。
本说明文档配有B站视频教程对照查看效果更佳哦[https://www.bilibili.com/video/av32781473/](https://www.bilibili.com/video/av32781473/)。
继续查看文档的详细介绍让你学会如何使用这一个样板来制作属于自己的HTML5魔塔或者……任何非即时的网格地图游戏。<br>
本说明文档配有较为过时的B站视频教程可供参考[https://www.bilibili.com/video/av32781473/](https://www.bilibili.com/video/av32781473/)。
==========================================================================================

View File

@ -1,6 +1,5 @@
# 个性化
?> 目前版本**v2.6.6**,上次更新时间:* {docsify-updated} *
?> 目前版本**v2.7**,上次更新时间:* {docsify-updated} *
有时候只靠样板本身可能是不够的。我们需要一些个性化、自定义的素材,道具效果,怪物属性,等等。
@ -69,13 +68,6 @@ core.fillText('test', '这是一段文字', 10, 30, '#FF0000', '16px Verdana');
- `terrains.png` 为所有地形的图标。
系统会读取`icon.js`文件并获取每个ID对应的图标所在的位置。
### 使用预定义的素材
在images目录的“默认素材”下给定了若干预定义的自定义素材。
如果你需要某个素材已经存在则可以直接将其覆盖images目录下的同名文件就能看到效果。
### 背景和前景图层
从V2.4.1开始,样板允许多个图层叠加,最多支持背景层、事件层和前景层三个图层。
@ -246,15 +238,14 @@ ID必须由数字字母下划线组成数字在1000以内且均不能和
额外素材可以使用“tileset贴图”的方式进行绘制一次绘制一个矩形区域。
“辅助工具”中提供了“额外素材合并”如果使用此功能请不要对额外素材进行基于ID、索引和数字的判定和读写等操作如确有此需求可以创建一些玩家不可达也不可预览的隐藏样板层然后用等量代换的办法去从样板层取用。
## 自定义道具效果
本节中将继续介绍如何自己编辑一个道具的效果。
道具效果的具体实现都在`items.js`中。
道具效果的具体实现都在 `project\items.js` 中。
### 即捡即用类道具cls: items
对于即捡即用类道具,如宝石、血瓶、剑盾等,我们可以简单地修改`data.js`中的value一栏即可。
对于即捡即用类道具,如宝石、血瓶等,我们可以简单地修改全塔属性中的 `values` 一栏即可。
如果你想要同种宝石在不同层效果不同的话,可以进行如下操作:
@ -281,11 +272,14 @@ core.status.hero.atk += core.values.redJewel + 2*ratio
具体过程比较复杂需要一定的JS能力在这里就不多说了有需求可以找`艾之葵`进行了解。
从V2.6.6起,道具的“图块属性”中,提供了 `useItemEvent` 项,您可以用事件而不是脚本去书写道具的使用效果(对 `cls: items` 也有效但会打断寻路),参见样板的黄宝石和生命魔杖。
如果弄不清楚 `canUseItem` ,也可以干脆统一填写为 `"true"`,先斩后奏,并在使用效果中再行判定,如果发现其实使用失败了,就悄咪咪返还给勇士一个该道具,参见样板的破墙镐和炸弹。
### 实战!拿到神圣盾后免疫吸血、领域、夹击效果
1. 在itemEffect中修改拿到神圣盾时的效果标记一个自定义Flag。
``` js
core.status.hero.def += core.values.shield5 * ratio;
core.status.hero.def += 100;
core.setFlag("shield5", true); // 增加一个自定义Flag已经拿到神圣盾
```
2. 免疫吸血效果在脚本编辑的getDamageInfo中编辑成如果存在神圣盾标记吸血伤害为0。
@ -310,31 +304,24 @@ function (enemy, hero_hp, hero_atk, hero_def, hero_mdef, x, y, floorId) {
// ... 下略
```
3. 免疫领域、夹击、阻击效果在2.4.1之后可以直接将flag:no_zone设为true来免疫领域效果其他几个同理。
``` js
// 写在获得道具后事件
[
``` json
[ // 写在获得道具后事件
// 设置不同的flag可以分别无视对应的阻激夹域效果
{"type": "setValue", "name": "flag:no_zone", "value": "true"}, // 免疫领域
{"type": "setValue", "name": "flag:no_snipe", "value": "true"}, // 免疫阻击
{"type": "setValue", "name": "flag:no_laser", "value": "true"}, // 免疫激光
{"type": "setValue", "name": "flag:no_betweenAttack", "value": "true"}, // 免疫夹击
{"type": "setValue", "name": "flag:no_ambush", "value": "true"}, // 免疫捕捉
{"type": "setValue", "name": "item:shoes", "value": "1"} // 免疫路障
]
```
4. 如果有更高的需求,例如想让吸血效果变成一半,则还是在上面这些地方进行对应的修改即可。
## 新增门和对应的钥匙
如果要新增一个门和对应的钥匙,需要进行如下几步:
1. 在terrains.png中添加新的门的素材并在地图编辑器中注册门的ID。该ID必须是以`Door`结尾,例如`abcDoor`。
2. 在animates.png中添加开门的四格动画然后直接打开icons.js文件在animates下直接添加ID和索引信息例如`'abcDoor': 34`。
3. 在items.png中添加钥匙的素材并在地图编辑器中注册钥匙的ID。该ID必须是和门对应且以`Key`结尾,例如`abcKey`。
4. 该道具的cls应为`tools`,可以自行写道具描述,最下面几项均留`null`即可。
!> **请勿在animates中对门的动画素材进行注册而是请直接打开icons.js文件并添加ID和索引信息**
!> terrains和animates的门ID必须完全一致且以`Door`结尾所对应的钥匙ID应当是把`Door`换成`Key`,这样才能对应的上!
如果要新增一个门和对应的钥匙,只需要进行如下三步:
1. 在 `project\images\animates.png` 中添加开门的四帧动画并注册,其中第一帧也作为未开启的静止门。
2. 在图块属性中将其默认触发器改为 `openDoor` ,动画帧数填 `1` 表示门未开启时静止在第一帧。
3. 在 `doorInfo` 中填写需要哪些钥匙(可以填任何消耗类道具)各多少把,开关门分别播放什么音效等。
## 覆盖楼传事件
对于特殊的塔,我们可以考虑修改楼传事件来完成一些特殊的要求,比如镜子可以按楼传来切换表里。
@ -354,23 +341,25 @@ function (enemy, hero_hp, hero_atk, hero_def, hero_mdef, x, y, floorId) {
如果你对现有的怪物不满意想自行添加怪物属性也是可以的。具体参见脚本编辑的getSpecials。
你需自己指定一个special数字修改属性名和属性提示文字。后两者可以直接写字符串或写个函数传入怪物。
你需自己指定一个special数字修改属性名和属性提示文字。提示文字可以直接写字符串或写个函数传入怪物。
如果要改动怪物在手册中的显示数值(也会被用于伤害计算,如模仿),请修改下面的 `getEnemyInfo` 函数。
如果要修改伤害计算公式请修改下面的getDamageInfo函数。请注意如果无法战斗该函数必须返回`null`。
!> 如果改动了伤害计算公式,可能导致临界计算崩掉,因此建议将全塔属性中的`useLoop`置为true。
对于毒衰弱怪物的战斗后结算在脚本编辑中的afterBattle函数中。
对于领域、夹击、阻击怪物的检查在`control.js`中的checkBlock函数中。
对于毒衰咒、自爆、退化怪物和加点、仇恨值累加等战斗后结算在脚本编辑中的 `afterBattle` 函数中。
对于领域、夹击、阻击、激光、捕捉怪物的检查在脚本编辑中的 `updateCheckBlock` 函数中。
## 自定义快捷键
如果需要绑定某个快捷键为处理一段事件,也是可行的。
要修改按键,我们可以在脚本编辑的`onKeyUp`进行处理:
比如,我们设置一个快捷键进行绑定,比如`Y`其keycode是89。有关每个键的keycode搜一下就能得到
我们设置一个快捷键进行绑定,比如 `Y`,其 `keycode``89`<br>
(大键盘数字键 `0-9``keycode``48-57, A-Z` 键的 `keycode``65-90` ,其他键的 `keycode` 搜一下就能得到)
然后在脚本编辑的`onKeyUp`函数的`switch`中进行处理。
@ -387,8 +376,7 @@ case 89: // 使用该按键的keyCode比如Y键就是89
break;
```
强烈建议所有新增的自定义快捷键均给个对应的永久道具可点击,以方便手机端的行为。
强烈建议所有新增的自定义非数字快捷键均给个对应的永久道具可点击,以方便手机端的行为。
使用`core.status.route.push("key:"+keyCode)`可以将这次按键记录在录像中。
@ -457,7 +445,7 @@ this.myfunc = function(x) {
可以在脚本编辑的onKeyUp中定义每个快捷键的使用效果比如使用道具或释放技能等。
默认值下1使用破2使用炸3使用飞4使用其他存在的道具5-8未定义。可以相应修改成自己的效果。
默认值下1使用破2使用炸3使用飞4使用其他存在的道具5读取上一个自动存档6读取下一个自动存档7轻按8未定义。可以相应修改成自己的效果。
也可以替换icons.png中的对应图标以及修改main.js中`main.statusBar.image.btn1~8`中的onclick事件来自定义按钮和对应按键。
@ -475,6 +463,7 @@ this.myfunc = function(x) {
具体可详见脚本编辑的`drawStatusBar`函数。
自绘状态栏开启后,金币图标将失去打开快捷商店的功能,您可以修改脚本编辑的 `onStatusBarCLick` 函数来适配。
## 自定义状态栏的显示项
在V2.2以后,我们可以自定义状态栏背景图(全塔属性 - statusLeftBackground等等。
@ -534,13 +523,9 @@ core.statusBar.speed.innerHTML = core.getStatus('speed');
// 设置其显示内容为flag:speed值无需额外进行定义。
core.statusBar.speed.innerHTML = core.getFlag('speed', 0);
```
总的来说不建议这样做,因为 `main.js` 和几个 `html` 文件不在 `project` 文件夹,会导致随样板更新迁移接档变得困难。
## 技能塔的支持
要支持技能塔,可能需要如下几个方面:
从V2.5开始,内置了"二倍斩"技能,可以仿照其制作自己的技能。
从V2.5开始,内置了"二倍斩"技能,可以仿照其制作自己的技能。要支持技能塔,可能需要如下几个方面:
- 魔力(和上限)的添加;技能的定义
- 状态栏的显示
- 技能的触发(按键与录像问题)
@ -548,11 +533,9 @@ core.statusBar.speed.innerHTML = core.getFlag('speed', 0);
### 魔力的定义添加;技能的定义
从V2.5开始提供了status:mana选项可以直接代表当前魔力值。
从V2.5开始,提供了 `status:mana` 选项,可以直接代表当前魔力值。可以在全塔属性勾选来启用它。
如果要启用需要开启全塔属性的enableMana选项。
如果需要魔力上限则可以使用flag:manaMax来表示当前的魔力最大值。
如果需要魔力上限,则可以使用 `status:manaMax` 来表示当前的魔力最大值,负数表示没有上限。
同时我们可以使用flag:skill表示当前开启的技能编号flag:skillName表示当前开启的技能名称。
@ -581,8 +564,7 @@ core.statusBar.skill.innerHTML = core.getFlag('skillName', '无');
### 技能的触发
#### 使用道具作为技能
由于手机端按键十分不方便,虚拟键盘不好用,因此强烈推荐**给每个技能设置一个道具图标,在道具栏点击使用!**
由于手机端按字母键不方便,虚拟键盘不好用,因此强烈推荐**给每个字母键技能设置一个道具,在道具栏点击使用!**
下面是个很简单的例子,要制作一个技能"二倍斩"。
@ -616,19 +598,17 @@ else { // 关闭技能
在技能的道具定义完毕后,再将该道具绑定到一个快捷键上。有关绑定按键请参见[自定义快捷键](#自定义快捷键)。
下面是一个很简单的例子当勇士按下W后触发我们上面定义的二倍斩技能。
下面是一个很简单的例子,当勇士按下 `F` 后,触发我们上面定义的二倍斩技能。
``` js
case 87: // W:开启技能“二倍斩”
case 70: // F:开启技能“二倍斩”
// 是否拥有“二倍斩”这个技能道具
if (core.hasItem('skill1')) {
core.status.route.push("key:87");
core.status.route.push("key:70");
core.useItem('skill1', true);
}
break;
```
在勇士处于停止的条件下按下W键时判断技能的道具是否存在如果存在再使用它。
在勇士处于停止的条件下,按下 `F` 键时,判断技能的道具是否存在,如果存在再使用它。
!> 由于现在手机端存在拓展键盘也强烈建议直接覆盖1-8的使用效果这样手机端使用也非常方便。

View File

@ -1,37 +1,34 @@
# 快速上手
?> 目前版本**v2.6.6**,上次更新时间:* {docsify-updated} *
?> 目前版本**v2.7**,上次更新时间:* {docsify-updated} *<br>
在这一节中,将详细介绍做一部塔的流程。现在,让我们来做一部单层塔!
## 前置需求
你需要有满足如下条件才能进行制作:
- Windows 8以上操作系统Windows 7需要安装.Net Framework 4.0。(能打开同目录下的“启动服务.exe”即可
- Mac系统则需OS X 10.7及以上,能正确打开启动服务(Mac版).app即可。
- 安卓手机端需要下载最新版的HTML5安卓造塔器。
- Chrome浏览器。其他浏览器可能会导致本地服务器产生闪退等现象。
- 强烈推荐安装一个很好的文本编辑器VSCode。在某些需要直接修改文件的场合可能会非常重要。
上述软件均可以在群文件的常用软件中找到下载安装包。
你需要满足如下条件才能进行制作:
- Windows 8 以上操作系统Windows 7 需要安装 .Net Framework 4.0。(能打开同目录下的“启动服务.exe”即可
- 其他电脑则需安装 [python 3.8.2](https://www.python.org/getit/) 或更高版本能打开server.py即可 Windows 也可以这样做)。
- 安卓手机端需要下载最新版的 [HTML5安卓造塔器](https://h5mota.com/games/_client/H5motaMaker.apk)。
- [Chrome浏览器](https://www.google.cn/chrome/)。其他浏览器可能会导致本地服务器产生闪退等现象。
- 强烈推荐安装一个很好的文本编辑器:[VSCode](https://code.visualstudio.com/download)。在某些需要直接修改文件的场合,可能会非常重要。
只要满足了上述条件,你就可以开始做自己的塔啦!
## 启动HTTP服务
在根目录下有一个“启动服务.exe”运行之。Mac版本则双击运行“启动服务(Mac版).app”手机端则使用造塔APP。
与编辑器闭源的 RPG Maker MV 不同,本样板对文件的绝大部分修改是通过网页编辑器经由本地 HTTP 服务完成的,这样做也有助于编辑器跨平台并最大限度地复用运行时代码,还可以让玩家在在线游戏时查看游戏工程。<br>
在根目录下有一个“启动服务.exe”运行之。非 Windows 电脑则需使用命令行运行 server.py手机端则使用造塔APP。
![启动服务](img/server.png)
* “启动游戏”按钮将打开一个网页,你能在里面看到现在游戏的效果。
* “地图编辑器”允许你以可视化的方式进行编辑地图。
* “启动游戏”按钮将打开一个网页(您也可以手动在浏览器中键入 127.0.0.1:1055/index.html 同时开启多个启动服务则1056、1057顺延你能在里面看到现在游戏的效果。
* “地图编辑器”允许你以可视化的方式进行编辑游戏(这个名称为历史遗留,两年前它真的只能编辑地图)。您也可以手动在浏览器中键入 127.0.0.1:1055/editor.html
* 以下为 Windows 专用的一些辅助工具由C#编写:
* “便捷PS工具”能让你很方便的对自定义素材进行添加。参见[自定义素材](personalization#自定义素材)。
* “地图生成器”能让你从已有的截图如RMXP项目中立刻生成可被本样板识别的地图数据。
* “怪物数据导出”能让你从RMXP中导出怪物数据而被H5魔塔使用。
* “RM动画导出器”能让你从RMXP中导出动画而被H5魔塔使用。
* “JS代码压缩工具”能对JS代码进行压缩从而减少IO请求数和文件大小。
* “怪物数据导出”能让你从RMXPRPG Maker XP 1.03下同中导出怪物数据而被HTML5魔塔使用。
* “RM动画导出”能让你从RMXP中导出动画而被HTML5魔塔使用。
* “JS代码压缩”能对JS代码和音像素材进行压缩从而减少IO请求数和文件大小。
* “额外素材合并”能将用到的tileset素材重新拼成更少的图片并更新对应的地图矩阵。
* “伤害和临界值计算器”是一个很便捷的小工具,能对怪物的伤害和临界值进行计算。
* “动画编辑器”能让你编辑已有的animate动画文件或自己利用图片制作全新的动画。
* “[怪物数据生成机](https://pan.baidu.com/s/1w-JMg-ZPRvbsqbbtOwORGA#list/path=%2F
)”能够借助AI生成适当强度的怪物此工具需要手动下载。
!> **整个造塔过程中,启动服务必须全程处于开启状态!切不可手滑关闭,否则做的都是无用功!**
@ -48,15 +45,10 @@
![绘制地图](./img/drawmap.jpg)
如果提示“该素材未被定义”或有红色问号框,请参见[素材注册](#素材注册)。
绘制地图时可以右键弹出菜单,移动图块和事件。
从V2.4.2开始,可以使用`Alt+0~9`对一个图块素材快速保存,`Ctrl+0~9`来快速选用。
<br>绘制地图时可以右键弹出菜单,复制、交换、删除图块、选中素材、更改出生点或快速创建常用事件。<br>从V2.4.2开始,可以使用 `Alt+0~9` 对一个图块素材快速保存,大键盘 `0~9` 来快速选用。<br>
从V2.6.6开始,最近使用的图块也会直接显示在地图下方,您可以随时选取或清空它们。
### 从RMXP导入已有的地图
!> 注现在已经不推荐此方法如需从RM刻塔请使用 [RM转H5刻塔器使用教程](https://www.bilibili.com/video/av43125840) 进行操作。
!> 注现在已经不推荐此方法如需从RMXP复刻魔塔请观看 [RM转H5刻塔器使用教程](https://www.bilibili.com/video/av43125840) 进行操作。<br>
如果我们想复刻一个现有的已经被RMXP所制作的塔也有很便捷的方式那就是用到我们的“地图生成器”。
首先我们打开RMXP和对应的项目可以看到它的地图。
@ -64,9 +56,7 @@
![绘制地图](./img/rmxp2.png)
我们打开地图编辑器创建一个地图宽高需要和RM中的地图一致。
之后我们打开Windows自带的“截图工具”并将整个地图有效区域截图下来并将其复制到剪切板。
<br>之后,我们打开 Windows 10 自带的“截图工具”(非 Windows 10 请使用 Print Screen 键全屏截图后粘贴到“画图”中裁剪,或使用微信/QQ等自带的截图功能并将整个地图有效区域截图下来复制到剪切板。
![绘制地图](./img/rmxp3.png)
截图时请注意:**只截取有效游戏空间内数据并且有效空间内的范围必须是创建的地图的大小至少为13x13。**
@ -78,8 +68,7 @@
然后点击“复制地图”,即可将地图数据复制到剪切板,然后再地图编辑器中切换到“地图编辑”,并在左边的框进行粘贴。
!> **地图生成器默认只支持已被定义的素材。如果有自定义素材需求例如原版的1层小塔那种素材请先[导入并注册素材](#素材注册)后再进行操作。**
!> **请确保截图范围为你创建的地图大小并且保证每个位置的像素都是32x32。**
!> **请确保截图范围为你创建的地图大小并且保证每个位置的像素都是32x32譬如48×48的RPG Maker MV就需要缩小到2/3比例再截图。**
!> **如果宽度超过13地图生成器将无法显示完全但是仍然可以粘贴到地图编辑器中进行修改。**
@ -90,9 +79,7 @@
## 编辑属性
当地图绘制完毕后,我们可能需要进行属性的编辑。属性编辑有四类:楼层属性、怪物属性、道具属性、全塔属性。
### 楼层属性
### 楼层属性快捷键V
我们切换到楼层属性,并进行一项项的编辑。将鼠标放在中间有具体的每一项注释,这里不再细说。
![楼层属性](./img/floor.png)
@ -110,13 +97,9 @@
同理,点击道具可以对道具属性进行编辑。
目前大多数道具都已有默认效果。更多信息可参见[元件说明:道具](element#道具)。
### 全塔属性
### 全塔属性快捷键B
我们切换到全塔属性,并进行一项项的编辑。同样鼠标放在中间可以查看注释。
我们可以在这里定义一些全局的属性,比如开始剧情、宝石血瓶剑盾数值,破甲反击净化的比例,以及一些系统开关比如是否启用加点,是否允许负伤害等等。
<br>我们可以在这里定义一些全局的属性,比如开始剧情、宝石血瓶数值,破甲反击净化的比例,以及一些系统开关比如是否启用加点,是否允许负伤害等等。<br>
!> **注name作为游戏的唯一标识符必须进行修改否则可能会导致存档等出现问题。**
&nbsp;
@ -142,9 +125,7 @@
从上至下有若干项,分别代表该点的一些事件。有关事件的详细信息请参见[事件](event)。
如果一个点存在事件,则在地图编辑器中该点的左下角会有一个小方框表示。
红色为自定义事件,绿色为楼层传送事件,黄色为战后事件,青色为道具获得后的事件,粉色为开门后的事件。
<br>红色为普通事件,橙色为自动事件,黄色为战后事件,绿色为楼层转换,青色为拾获道具后事件,靛色为不可通行性(不是事件),粉(紫)色为开门后事件。
## 自定义素材的添加与注册
有关素材的更多详细信息,包括素材的机制等内容,请参见[自定义素材](personalization#自定义素材)。
@ -154,15 +135,10 @@
### 新素材的添加
如果我们需要新增加一些素材,比如样板中没有的怪物等。
我们可以从启动服务打开编辑PS工具然后选择对应的图片进行添加。
<br>我们可以从启动服务打开便捷PS工具然后选择对应的图片进行添加。
![便捷PS工具](img/ps.png)
在左边选择你要导入到的位置比如怪物就是enemy.png道具就是items.png等等再在右边导入你的新素材图片。
之后就可以简单的使用Ctrl+C和Ctrl+V来复制粘贴了。
在左边选择你要导入到的文件比如怪物就是enemy.png道具就是items.png等等再在右边导入你的新素材图片。<br>
之后就可以简单的使用 C 和 V 来复制粘贴了。<br>
保存后,刷新地图编辑器即可生效。
### 素材注册
@ -172,15 +148,11 @@
![素材注册](./img/register.png)
出现这种情况,是因为我们没有将该素材定义到游戏中,也无法进行使用。
要解决这个问题只需要在左边的图块属性中定义新的图块ID和图块数字即可。ID必须由数字字母下划线组成数字在1000以内且均不能和已有的进行重复。
<br>要解决这个问题只需要在左边的图块属性中定义新的图块ID和图块数字即可。ID必须由数字字母下划线组成ID不允许使用纯数字。图块数字在1000以内ID和图块数字均不能和已有的进行重复。<br>
有关图块的ID和数字定义请参见[素材的机制](personalization#素材的机制)。
之后刷新编辑器即可。
也可以进行自动注册只需要点击“自动注册”按钮将对该栏下所有未注册的素材进行自动注册自动分配ID和数字
<br>也可以进行自动注册只需要点击“自动注册”按钮将对该栏下所有未注册的素材进行自动注册自动分配ID和数字随后强烈建议手动修改ID<br>
素材注册完毕后,即可在游戏中正常使用,也可以被地图生成器所识别(需要重开地图生成器)。
### 额外素材
@ -194,11 +166,8 @@
有关额外素材的更多说明参见[额外素材](personalization#额外素材)
## 控制台调试
HTML5的塔都是可以进行控制台调试的。
当我们使用Chrome进入游戏后可以按 `Ctrl+Shift+I` ,并找到 `Console` 控制台。
HTML5游戏都是可以进行控制台调试的。<br>
当我们使用Chrome进入游戏后可以按 `Ctrl+Shift+I` F12并找到 `Console` 控制台。
![控制台](./img/console.png)
在控制台中,我们可以输入一些命令对游戏进行调试,常见的命令有:
@ -209,21 +178,21 @@ HTML5的塔都是可以进行控制台调试的。
- `core.status.hero` 获得当前勇士状态信息。例如`core.status.hero.atk`就是当前勇士的攻击力数值。
- `core.material.enemys` 获得所有怪物信息。例如`core.material.enemys.greenSlime`就是获得绿色史莱姆的属性数据。
- `core.material.items` 获得所有道具的信息。例如`core.material.items.pickaxe`就是获得破墙镐的信息。
- `core.debug()` 开启调试模式此模式下可以按住Ctrl键进行穿墙。
- `core.updateStatusBar()` 立刻更新状态栏和地图显伤。
- `flags.debug = true` 开启调试模式;此模式下可以按住 Ctrl 键进行穿墙。
- `core.updateStatusBar()` 立刻更新状态栏和地图显伤,并检查自动事件
- `core.setStatus('atk', 1000)` 直接设置勇士的某项属性。本句等价于 `core.status.hero.atk = 1000`
- `core.getStatus('atk')` 返回勇士当前某项属性数值。本句等价于 `core.status.hero.atk`
- `core.setItem('pickaxe', 10)` 直接设置勇士某个道具的个数。这里可以需要写道具的ID。
- `core.getItem('pickaxe', 2)` 令勇士获得两个破墙镐。
- `core.itemCount('pickaxe')` 返回勇士某个道具的个数。
- `core.hasItem('pickaxe')` 返回勇士是否拥有某个道具。等价于`core.itemCount('pickaxe')!=0`。
- `core.hasItem('pickaxe')` 返回勇士是否拥有某个道具。等价于`core.itemCount('pickaxe') > 0`。
- `core.getEquip(0)` 返回0号装备类型武器的当前装备的itemId不存在则返回null
- `core.hasEquip('sword1')` 返回某个装备当前是否处于被装备状态
- `core.setFlag('xxx', 1)` 设置某个flag/自定义变量的值。
- `core.getFlag('xxx', 10)` 获得某个flag/自定义变量的值;如果该项不存在(未被定义),则返回第二个参数的值。
- `core.hasFlag('xxx')` 返回是否存在某个变量且不为0。等价于`core.getFlag('xxx', 0)!=0`
- `core.removeFlag('xxx')` 删除某个flag/自定义变量
- `core.insertAction(list)` 执行一段自定义事件。比如 `core.insertAction(["剧情文本"])` 将执行一个剧情文本显示事件。
- `core.hasFlag('xxx')` 返回是否存在某个变量且不为六种广义 `false` 。等价于 `!!core.getFlag('xxx')`
- `core.setFlag('xxx')` 删除某个flag/自定义变量
- `core.insertAction(list)` 执行一个公共事件或一段自定义事件。比如 `core.insertAction(["剧情文本"])` 将执行一个剧情文本显示事件。
- `core.changeFloor('MT2', 'downFloor')` 立刻执行楼层切换到MT2层的下楼点位置。
- `core.changeFloor('MT5', null, {'x': 4, 'y': 7})` 立刻切换楼层到MT5层的(4,7)点。
- `core.getBlock(3, 5, 'MT1')` 获得当前地图上某一个块的信息。第三个参数为floorId可省略表示当前楼层。
@ -234,16 +203,16 @@ HTML5的塔都是可以进行控制台调试的。
更多API和详细参数介绍可参见[API列表](api)。
## 编辑器的基本操作
- **H** 查看所有快捷键
- **Alt+0~9, 0~9** 保存和读取当前选中图块
- **W/A/S/D** 移动大地图
- **Ctrl+Z** 撤销上次绘图
- **Ctrl+Y** 重做上次绘图
- **PgUp/PgDn** 切换楼层
- **PgUp/PgDn,或滚轮** 切换楼层
- **Ctrl+S** 保存事件编辑器/脚本编辑器
- **地图上单击** 选中该点
- **地图上双击** 选中该点图块
- **地图上右键** 弹出菜单栏,包括选中、复制、清除等操作
- **地图上右键** 弹出菜单栏,包括选中、复制、交换、清除、更改出生点、快速绑定等操作
- **事件编辑器中Ctrl+C, Ctrl+X, 右键等** 执行相应操作
## 报错处理
@ -273,10 +242,7 @@ HTML5的塔都是可以进行控制台调试的。
![删除ID](./img/floorid.png)
请注意手动删除楼层时一定要确保“初始楼层ID”是一个有效且存在的floorId
&nbsp;
如有任何无法解决的问题,欢迎加群**539113091**寻求帮助。
<br>如有任何无法解决的问题,欢迎加 QQ 群 [959329661](https://jq.qq.com/?_wv=1027&k=5C87qeQ) 寻求帮助。
==========================================================================================