From 3c0b3a8db846b28a2d15906f346d25f5b26596b7 Mon Sep 17 00:00:00 2001 From: ckcz123 Date: Sun, 7 Jun 2020 20:08:07 +0800 Subject: [PATCH] =?UTF-8?q?HTML5=E9=AD=94=E5=A1=94=E6=A0=B7=E6=9D=BFV2.7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .idea/codeStyleSettings.xml | 13 - .idea/codeStyles/Project.xml | 7 - .idea/codeStyles/codeStyleConfig.xml | 5 - .idea/inspectionProfiles/Project_Default.xml | 13 - .../inspectionProfiles/profiles_settings.xml | 9 - .idea/markdown-exported-files.xml | 8 - .idea/markdown-navigator.xml | 72 - .../markdown-navigator/profiles_settings.xml | 3 - .idea/misc.xml | 6 - .idea/modules.xml | 8 - .idea/mota-js.iml | 12 - .idea/mota-js.xml | 12 - .idea/vcs.xml | 6 - .idea/watcherTasks.xml | 24 - API列表.txt | 2159 ----------------- HTML5魔塔样板使用说明文档.url | 5 - README.md | 19 + _docs/api.md | 11 +- _docs/element.md | 8 +- _docs/event.md | 4 +- _docs/index.html | 13 +- _docs/instruction.md | 8 +- _server/CodeMirror/defs.js | 18 +- _server/MotaAction.g4 | 320 +-- main.js | 4 +- migration.html | 2 +- project/floors/sample0.js | 14 +- v2.x-final更新.txt | 162 -- 更新说明.txt | 581 ----- 素材整理下载地址.txt | 16 - 30 files changed, 234 insertions(+), 3308 deletions(-) delete mode 100644 .idea/codeStyleSettings.xml delete mode 100644 .idea/codeStyles/Project.xml delete mode 100644 .idea/codeStyles/codeStyleConfig.xml delete mode 100644 .idea/inspectionProfiles/Project_Default.xml delete mode 100644 .idea/inspectionProfiles/profiles_settings.xml delete mode 100644 .idea/markdown-exported-files.xml delete mode 100644 .idea/markdown-navigator.xml delete mode 100644 .idea/markdown-navigator/profiles_settings.xml delete mode 100644 .idea/misc.xml delete mode 100644 .idea/modules.xml delete mode 100644 .idea/mota-js.iml delete mode 100644 .idea/mota-js.xml delete mode 100644 .idea/vcs.xml delete mode 100644 .idea/watcherTasks.xml delete mode 100644 API列表.txt delete mode 100644 HTML5魔塔样板使用说明文档.url delete mode 100644 v2.x-final更新.txt delete mode 100644 更新说明.txt delete mode 100644 素材整理下载地址.txt diff --git a/.idea/codeStyleSettings.xml b/.idea/codeStyleSettings.xml deleted file mode 100644 index d564359d..00000000 --- a/.idea/codeStyleSettings.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml deleted file mode 100644 index 79a710fd..00000000 --- a/.idea/codeStyles/Project.xml +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml deleted file mode 100644 index a55e7a17..00000000 --- a/.idea/codeStyles/codeStyleConfig.xml +++ /dev/null @@ -1,5 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml deleted file mode 100644 index 7f0771f3..00000000 --- a/.idea/inspectionProfiles/Project_Default.xml +++ /dev/null @@ -1,13 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/inspectionProfiles/profiles_settings.xml b/.idea/inspectionProfiles/profiles_settings.xml deleted file mode 100644 index 17b6b9a1..00000000 --- a/.idea/inspectionProfiles/profiles_settings.xml +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/.idea/markdown-exported-files.xml b/.idea/markdown-exported-files.xml deleted file mode 100644 index 5d1f1293..00000000 --- a/.idea/markdown-exported-files.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/markdown-navigator.xml b/.idea/markdown-navigator.xml deleted file mode 100644 index dbe0e461..00000000 --- a/.idea/markdown-navigator.xml +++ /dev/null @@ -1,72 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/markdown-navigator/profiles_settings.xml b/.idea/markdown-navigator/profiles_settings.xml deleted file mode 100644 index 57927c5a..00000000 --- a/.idea/markdown-navigator/profiles_settings.xml +++ /dev/null @@ -1,3 +0,0 @@ - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index 28a804d8..00000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index f7251ba2..00000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/mota-js.iml b/.idea/mota-js.iml deleted file mode 100644 index 24643cc3..00000000 --- a/.idea/mota-js.iml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/mota-js.xml b/.idea/mota-js.xml deleted file mode 100644 index 24643cc3..00000000 --- a/.idea/mota-js.xml +++ /dev/null @@ -1,12 +0,0 @@ - - - - - - - - - - - - \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml deleted file mode 100644 index 94a25f7f..00000000 --- a/.idea/vcs.xml +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/.idea/watcherTasks.xml b/.idea/watcherTasks.xml deleted file mode 100644 index 157a5562..00000000 --- a/.idea/watcherTasks.xml +++ /dev/null @@ -1,24 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/API列表.txt b/API列表.txt deleted file mode 100644 index 2f2bb602..00000000 --- a/API列表.txt +++ /dev/null @@ -1,2159 +0,0 @@ -# 附录:API列表 - -?> 目前版本**v2.6.5**,上次更新时间:* {docsify-updated} * - -这里将列出所有被转发到core的API,没有被转发的函数此处不会列出,请自行在代码中查看。 - -本附录量较大,如有什么需求请自行Ctrl+F进行搜索。 - -如有任何疑问,请联系小艾寻求帮助。 - -## core.js - -core.js中只有很少的几个函数,主要是游戏开始前的初始化等。 - -但是,core中定义了很多游戏运行时的状态,这些状态很多都会被使用到。 - -``` text -core.__SIZE__, core.__PIXELS__ -游戏窗口大小;对于13x13的游戏而言这两个值分别是13和416,15x15来说分别是15和480。 - - -core.material -游戏中的所有资源列表,具体分为如下内容: -core.material.animates (动画) -core.material.bgms (背景音乐) -core.material.enemys (怪物信息,来自于 project/enemys.js) -core.material.icons (图标信息,来自于 project/icons.js) -core.material.images (图片素材,存放了各项素材图片如items.png等) - core.material.images.autotile (所有的自动元件图片) - core.material.images.tilesets (所有的额外素材图片) - core.material.images.images (用户引入的其他图片) -core.material.items (道具信息) -core.material.sounds (音效) - - -core.animateFrame -主要是记录和requestAnimationFrame相关的一些数据,常用的如下: -core.animateFrame.totalTime (游戏总的运行时时间) -core.animateFrame.weather (当前的天气信息) -core.animateFrame.asyncId (当前的异步处理事件的内容) - - -core.musicStatus -主要是记录和音效相关的内容,常用的如下: -core.musicStatus.bgmStatus (音乐开启状态) -core.musicStatus.soundStatus (音效开启状态) -core.musicStatus.playingBgm (当前正在播放的BGM) -core.musicStatus.lastBgm (最近一次尝试播放的BGM) -core.musicStatus.volume (当前的音量) -core.musicStatus.cachedBgms (背景音乐的缓存内容) -core.musicStatus.cacheBgmCount (背景音乐的缓存数量,默认值是4) - - -core.platform -游戏平台相关信息,常见的几个如下: -core.platform.isPC (是否是电脑端) -core.platform.isAndroid (是否是安卓端) -core.platform.isIOS (是否是iOS端) -core.platform.useLocalForage (是否开启了新版存档) - - -core.domStyle -游戏的界面信息,包含如下几个: -core.domStyle.scale (当前的放缩比) -core.domStyle.isVertical (当前是否是竖屏状态) -core.domStyle.showStatusBar (当前是否显示状态栏) -core.domStyle.toolbarBtn (当前是否显示工具栏) - - -core.bigmap -当前的地图的尺寸信息,主要包含如下几个 -core.bigmap.width (当前地图的宽度) -core.bigmap.height (当前地图的高度) -core.bigmap.offsetX (当前地图针对窗口左上角的偏移像素x) -core.bigmap.offsetX (当前地图针对窗口左上角的偏移像素y) -core.bigmap.tempCanvas (一个临时画布,可以用来临时绘制很多东西) - - -core.saves -和存档相关的信息,包含如下几个: -core.saves.saveIndex (上次保存或读取的存档编号) -core.saves.ids (当前存在存档的编号列表) -core.saves.autosave (自动存档的信息) -core.saves.favorite (收藏的存档) -core.saves.favoriteNames (自定义存档的名称) - - -core.status -游戏的状态相关,是整个游戏中最重要的东西,其核心是如下几条: -请注意,每次重新开始、存档或读档时,core.status都会重新初始化。 -core.status.played (当前是否在游戏中) -core.status.gameOver (当前是否已经游戏结束,即win或lose) -core.status.hero (勇士信息;此项和全塔属性中的hero大体是对应的) - core.status.hero.name 勇士名 - core.status.hero.lv 当前等级 - core.status.hero.hpmax 当前生命上限 - core.status.hero.hp 当前生命值 - core.status.hero.manamax 当前魔力上限 - core.status.hero.mana 当前魔力值 - core.status.hero.atk 当前攻击力 - core.status.hero.def 当前防御力 - core.status.hero.mdef 当前护盾值 - core.status.hero.money 当前金币值 - core.status.hero.exp 当前经验值 - core.status.hero.loc 当前的位置信息 - core.status.hero.equipment 当前装上的装备 - core.status.hero.items 当前拥有的道具信息 - core.status.hero.flags 当前的各项flag信息 - core.status.hero.step 当前的步数值 - core.status.hero.statistics 当前的统计信息 -core.status.floorId (当前所在的楼层) -core.status.maps (所有的地图信息) -core.status.thisMap (当前的地图信息,等价于core.status.maps[core.status.floorId]) -core.status.bgmaps (所有背景层的信息) -core.status.fgmaps (所有的前景层的信息) -core.status.checkBlock (地图上的阻激夹域信息,也作为光环的缓存) -core.status.lockControl (当前是否是控制锁定状态) -core.status.automaticRoute (当前的自动寻路信息) -core.status.route (当前记录的录像) -core.status.replay (录像回放时要用到的信息) -core.status.shops (所有全局商店信息) -core.status.textAttribute (当前的文字属性,如颜色、背景等信息,和setText事件对应) -core.status.globalAttribute (当前的全局属性,如边框色、装备栏等) -core.status.curtainColor (当前色调层的颜色) -core.status.globalAnimateObjs (当前的全局帧动画效果) -core.status.floorAnimateObjs (当前的楼层贴图帧动画效果) -core.status.boxAnimateObjs (当前的盒子帧动画效果,例如怪物手册中的怪物) -core.status.autotileAnimateObjs (当前楼层的自动元件动画效果) -core.status.globalAnimateStatus (当前的帧动画的状态) -core.status.animateObjs (当前的播放动画信息) - - -core.floorIds -一个数组,表示所有的楼层ID,和全塔属性中的floorIds一致。 - - -core.floors -从楼层文件中读取全部的地图数据。 -和core.status.maps不同的是,后者在每次重新开始和读档时都会重置,也允许被修改(会存入存档)。 -而core.floors全程唯一,不允许被修改。 - - -core.statusBar -状态栏信息,例如状态栏图片,图标,以及各个内容的DOM定义等。 -core.statusBar.images (所有的系统图标,和icons.png对应) -core.statusBar.icons (状态栏中绘制的图标内容) - - -core.values -所有的全局数值信息,和全塔属性中的values一致。 -此项允许被直接修改,会存入存档。 - - -core.flags -所有的全塔开关,和全塔属性中的flags一致。 -此项不允许被直接修改,如有需要请使用“设置系统开关”事件,或者调用core.setGlobalFlag这个API。 - - -core.plugin -定义的插件函数。 - - -core.doFunc(func, _this) -执行一个函数,func为函数体或者插件中的函数名,_this为使用的this。 -如果func为一个字符串,则视为插件中的函数名,同时_this将被设置成core.plugin。 -此函数剩余参数将作为参数被传入func。 -``` - -## actions.js - -actions.js主要是处理一些和用户交互相关的内容。 - -```text -core.registerAction(action, name, func, priority) -注册一个用户交互行为。 -action:要注册的交互类型,如 ondown, onclick, keyDown 等等。 -name:你的自定义名称,可被注销使用;同名重复注册将后者覆盖前者。 -func:执行函数;可以是一个具体的函数体,或者是一个插件中的函数名。 -priority:优先级;优先级高的被注册项将会被执行。此项可不填,默认为0。 -返回:如果func返回true,则不会再继续执行其他的交互函数;否则会继续执行其他的交互函数。 - - -core.unregisterAction(action, name) -注销一个用户交互行为。 - - -core.doRegisteredAction(action) -执行一个用户交互行为。 -此函数将在该交互行为所注册的所有函数中,按照优先级从高到底依次执行。 -此函数剩余的参数将会作为参数传入该执行函数中。 -当某个执行函数返回true时将终止这一过程。 - - -core.onkeyDown(e) -当按下某个键时的操作,e为KeyboardEvent。 -请勿直接覆盖或调用此函数,如有需要请注册一个"onkeyDown"的交互函数。 - - -core.onkeyUp(e) -当放开某个键时的操作,e为KeyboardEvent。 -请勿直接覆盖或调用此函数,如有需要请注册一个"onkeyUp"的交互函数。 - - -core.pressKey(keyCode) -当按住某个键不动时的操作,目前只对方向键有效。 -如果需要添加对于其他键的长按,请复写_sys_onkeyDown和_sys_onkeyUp。 -请勿直接覆盖或调用此函数,如有需要请注册一个"pressKey"的交互函数。 - - -core.keyDown(keyCode) -当按下某个键时的操作,参数为该键的keyCode值。 -请勿直接覆盖或调用此函数,如有需要请注册一个"keyDown"的交互函数。 - - -core.keyUp(keyCode, altKey, fromReplay) -当按下某个键时的操作,参数为该键的keyCode值。 -altKey标志了Alt键是否同时被按下,fromReplay表示是否是从录像回放中调用的。 -请勿直接覆盖或调用此函数,如有需要请注册一个"keyUp"的交互函数。 - - -core.ondown(loc) -当点击屏幕时的操作。loc为点击的信息。 -请勿直接覆盖或调用此函数,如有需要请注册一个"ondown"的交互函数。 -注册的ondown交互函数需要接受x, y, px, py四个参数,代表点击的位置和像素坐标。 - - -core.onmove(loc) -当在屏幕上滑动时的操作。loc为当前的坐标信息。 -请勿直接覆盖或调用此函数,如有需要请注册一个"onmove"的交互函数。 -注册的onmove交互函数需要接受x, y, px, py四个参数,代表当前的的位置和像素坐标。 - - -core.onup(loc) -当从屏幕上离开时的操作。loc为当前的坐标信息。 -请勿直接覆盖或调用此函数,如有需要请注册一个"onup"的交互函数。 -注册的onup交互函数需要接受x, y, px, py四个参数,代表当前的的位置和像素坐标。 - - -core.onclick(x, y) -当点击屏幕上的某点位置时执行的操作,请注意这里的x和y是位置坐标。 -一般而言,一个完整的ondown到onup将触发一个onclick事件。 -请勿直接覆盖或调用此函数,如有需要请注册一个"onclick"的交互函数。 - - -core.onmousewheel(direct) -当滚动鼠标滑轮时执行的操作。direct为滑轮方向,上为1,下为-1。 -请勿直接覆盖或调用此函数,如有需要请注册一个"onmousewheel"的交互函数。 - - -core.keyDownCtrl() -当长按Ctrl键不动时执行的操作。 -请勿直接覆盖或调用此函数,如有需要请注册一个"keyDownCtrl"的交互函数。 - - -core.longClick() -当长按住屏幕时执行的操作。 -请勿直接覆盖或调用此函数,如有需要请注册一个"longClick"的交互函数。 -注册的交互函数如果某一项返回true,则之后仍然会继续触发该长按, -如果全部返回false则将停止本次长按行为,直到手指离开屏幕并重新进行长按为止。 -``` - -## control.js - -control.js将负责整个游戏的核心控制系统,分为如下几个部分: -- requestAnimationFrame相关 -- 标题界面,开始和重新开始游戏 -- 自动寻路和人物行走相关 -- 画布、位置、阻激夹域、显伤等相关 -- 录像的回放相关 -- 存读档,自动存档,同步存档等相关 -- 人物属性和状态、位置、变量等相关 -- 天气、色调、音乐和音效的播放 -- 状态栏和工具栏相关 -- 界面resize相关 - -```text -// ------ requestAnimationFrame 相关 ------ // - -core.registerAnimationFrame(name, needPlaying, func) -注册一个animationFrame。它将在每次浏览器的帧刷新时(约16.6ms)被执行。 -name:你的自定义名称,可被注销使用;同名重复注册将后者覆盖前者。 -needPlaying:如果此项为true,则仅在游戏开始后才会被执行(标题界面不执行) -func:执行函数;可以是一个具体的函数体,或者是一个插件中的函数名。 -func可以接受一个timestamp作为参数,表示从整个页面加载完毕到当前时刻所经过的毫秒数。 -如果func执行报错,将在控制台打出一条信息,并自动进行注销。 - - -core.unregisterAnimationFrame(name) -注销一个animationFrame,参数是你的上面的自定义名称。 - -// ------ 开始界面相关 ------ // - -core.showStartAnimate(noAnimate, callback) -重置所有内容并显示游戏标题界面。 -noAnimate如果为true则不会有淡入动画,callback为执行完毕的回调。 - - -core.hideStartAnimate(callback) -淡出隐藏游戏标题界面,callback为执行完毕的回调。 - - -core.isPlaying() -当前是否正在游戏中。 - - -core.clearStatus() -清除所有的游戏状态和数据,包括状态栏的显示。 - -// ------ 自动寻路、人物行走 ------ // - -core.stopAutomaticRoute() -停止自动寻路的操作 - - -core.saveAndStopAutomaticRoute() -保存剩下的寻路路线并停止自动寻路操作。主要用于打怪开门后继续寻路使用。 - - -core.continueAutomaticRoute() -继续剩下的自动寻路操作。主要用于打怪开门后继续寻路使用。 - - -core.clearContinueAutomaticRoute() -清空剩下的自动寻路操作。 - - -core.setAutomaticRoute(destX, destY, stepPostfix) -尝试开始进行一个自动寻路。stepPostfix是鼠标拖动的路径。 -此函数将检测是否在寻路中(在则停止或双击瞬移),检测是否点击自己(转身或轻按), -检测是否能单击瞬移,最后找寻自动寻路路线并开始寻路。 - - -core.setAutoHeroMove(steps) -设置勇士的自动行走路线,并立刻开始行走。 - - -core.setHeroMoveInterval(callback) -设置勇士行走动画。callback是每一步行走完毕后的回调。 - - -core.moveOneStep(x, y) -每走完一步后执行的操作,被转发到了脚本编辑中,执行脚本编辑moveOneStep中的内容。 - - -core.moveAction(callback) -尝试执行单步行走。callback是执行完毕的回调。 -如果勇士面对的方向是noPass的,将直接触发事件并执行回调。 - - -core.moveHero(direction, callback) -令勇士朝一个方向行走。如果设置了callback,则只会行走一步,并执行回调。 -否则,将一直朝该方向行走,直到core.status.heroStop为true为止。 -direction可为"up","down","right","left",分别对应上,下,右,左。 - - -core.isMoving() -当前是否正在处于行走状态 - - -core.waitHeroToStop(callback) -停止勇士的行走,等待行动结束后,再异步执行回调。 - - -core.turnHero(direction) -转向。如果设置了direction则会转到该方向,否则会右转。该函数会自动计入录像。 -direction可为"up","down","right","left",分别对应上,下,右,左。 - - -core.moveDirectly(destX, destY) -尝试瞬间移动到某点,被转发到了脚本编辑中,执行脚本编辑中的内容。 -此函数返回非负值代表成功进行瞬移,返回值是省略的步数;如果返回-1则代表没有成功瞬移。 - - -core.tryMoveDirectly(destX, destY) -尝试单击瞬移到某点。 -如果该点可被直接瞬间移动到,则直接瞬移到该点;否则尝试瞬移到相邻的上下左右点并行走一步。 - - -core.drawHero(status, offset) -绘制勇士。 -status可选,为'stop','leftFoot'和'rightFoot'之一,不填或null默认是'stop'。 -offset可选,表示具体当前格子的偏移量。不填默认为0。 -此函数将重新计算地图的偏移量,调整窗口位置,绘制勇士和跟随者信息。 - -// ------ 画布、位置、阻激夹域、显伤 ------ // - -core.setGameCanvasTranslate(canvas, x, y) -设置某个画布的偏移量 - - -core.addGameCanvasTranslate(x, y) -加减所有系统画布(ui和data除外)的偏移量。主要是被“画面震动”所使用。 - - -core.updateViewport() -根据大地图的偏移量来更新窗口的视野范围。 - - -core.nextX(n) / core.nextY(n) -获得勇士面对的第n个位置的横纵坐标。n可不填,默认为1。 - - -core.nearHero(x, y, n) -判定某个点是否和勇士的距离不大于n。n可不填,默认为1。 - - -core.gatherFollowers() -聚集所有的跟随者到勇士的位置。 - - -core.updateFollowers() -更新跟随者们的坐标。 - - -core.updateCheckBlock(floorId) -更新阻激夹域的信息,被转发到了脚本编辑中。 - - -core.checkBlock() -检查勇士坐标点的阻激夹域信息。 - - -core.updateDamage(floorId, ctx) -更新全地图的显伤。floorId可选,默认为当前楼层。 -ctx可选,为画布;如果不为空,则将会绘制到该画布上而不是damage层上。 - -// ------ 录像相关 ------ // - -core.chooseReplayFile() -弹出选择文件窗口,让用户选择录像文件。 - - -core.startReplay(list) -开始播放一段录像。list为录像的操作数组。 - - -core.triggerReplay() -播放或暂停录像,实际上是pauseReplay或resumeReplay之一。 - - -core.pauseReplay() / core.resumeReplay() -暂停和继续录像播放。 - - -core.speedUpReplay() / core.speedDownReplay() -加速和减速录像播放。 - - -core.setReplaySpeed(speed) -直接设置录像回放速度。 - - -core.stopReplay(force) -停止录像回放。如果force为true则强制停止。 - - -core.rewindReplay() -回退一个录像节点。 - - -core.saveReplay() / core.bookReplay() / core.viewMapReplay() -回放录像时的存档、查看怪物手册、浏览地图操作。 - - -core.isReplaying() -当前是否正在录像播放中。 - - -core.registerReplayAction(name, func) -注册一个自定义的录像行为。 -name:自定义名称,可用户注销使用。 -func:具体执行录像的函数,是一个函数体或者插件中的函数名。 -func需要接受action参数,代表录像回放时的当前操作行为。 -如果func返回true,则代表成功处理了此次操作,返回false代表没有进行处理。 -自己添加的录像项只能由数字、大小写、下划线线、冒号等符号组成,否则无法正常压缩和解压缩。 -对于自定义内容(比如中文文本或数组)请使用JSON.stringify再core.encodeBase64处理。 -请注意回放录像时的二次记录问题(即回放时录像会重新记录路线)。 - - -core.unregisterReplayAction(name) -注销一个录像行为。此函数一般不应当被使用。 - -// ------ 存读档相关 ------ // - -core.autosave(remoreLast) -进行一个自动存档,实际上是加入到缓存之中。 -removeLast如果为true则会从路线中删除最后一项再存(打怪开门前的状态)。 -在事件处理中不允许调用本函数,如有需要请呼出存档页面。 - - -core.checkAutosave() -将缓存的自动存档写入存储中。平均每五秒钟,或在窗口失去焦点时被执行。 - - -core.doSL(id, type) -实际执行一个存读档事件。id为存档编号,自动存档为'autoSave'。 -type只能为'save', 'load', 'replayLoad'之一,代表存档、读档和从存档回放录像。 - - -core.syncSave(type) / core.syncLoad() -向服务器同步存档,从服务器加载存档。type如果为'all'则会向服务器同步所有存档。 - - -core.saveData() -获得要存档的内容,实际转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.loadData(data, callback) -实际执行一次读档行为,data为读取到的数据,callback为执行完毕的回调。 -实际转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.getSave(index, callback) -获得某个存档位的存档。index为存档编号,0代表自动存档。 - - -core.getSaves(ids, callback) -获得若干个存档位的存档。ids为一个存档编号数组,0代表自动存档。 - - -core.getAllSaves(callback) -获得全部的存档内容。目前仅被同步全部存档和下载全部存档所调用。 - - -core.getSaveIndexes(callback) -刷新全部的存档信息,将哪些档位有存档的记录到core.saves.ids中。 - - -core.hasSave(index) -判定某个存档位是否存在存档。index为存档编号,0代表自动存档。 - - -core.removeSave(index) -删除某个存档。index为存档编号,0代表自动存档。 - - -// ------ 属性、状态、位置、变量等 ------ // - -core.setStatus(name, value) -设置勇士当前的某个属性,name可为"atk","def","hp"等。 -如core.setStatus("atk", 100)则为设置勇士攻击为100。 - - -core.addStatus(name, value) -加减勇士当前的某个属性,name可为"atk","def","hp"等。 -如core.addStatus("atk", 100)则为增加勇士攻击100点。 -等价于 core.setStatus(name, core.getStatus(name) + value)。 - - -core.getStatus(name) -获得勇士的某个原始属性值,该值不受百分比增幅影响。 -譬如你有一件道具加10%的攻击,你可以使用该函数获得你的攻击被增幅前的数值 - - -core.getStatusOrDefault(status, name) -尝试从status中获得某个原始属性值,该值不受百分比增幅影响;如果status为null或不存在对应属性值则从勇士属性中获取。 -此项在伤害计算函数中使用较多,例如传递新的攻击和防御来计算临界和1防减伤。 - - -core.getRealStatus(name) -获得勇士的某个计算属性值。该属性值是在加成buff之后得到的。 -该函数等价于 core.getStatus(name) * core.getBuff(name) - - -core.getRealStatusOrDefault(status, name) -尝试从status中获得某个原始属性值再进行增幅,如果不存在则获取勇士本身的计算属性值。 - - -core.setBuff(name, value) -设置勇士的某个属性的增幅值。value为1代表无增幅。 - - -core.addBuff(name, value) -增减勇士的某个属性的增幅值。等价于 core.setBuff(name, core.getBuff(name) + value) - - -core.getBuff(name) -获得勇士的某个属性的增幅值。默认值是1。 - - -core.setHeroLoc(name, value, noGather) -设置勇士位置属性。name只能为'x'(勇士x坐标), 'y'(勇士y坐标)和'direction'(勇士朝向)之一。 -如果noGather为true,则不会聚集所有的跟随者。 -譬如core.setHeroLoc("x", 1, true)则为设置勇士x坐标为1,不聚集所有跟随者。 - - -core.getHeroLoc(name) -获得勇士的某个位置属性。如果name为null则直接返回core.status.hero.loc。 -譬如core.getHeroLoc("x")则返回勇士当前x坐标 - - -core.getLvName(lv) -获得某个等级对应的名称,其在全塔属性的levelUp中定义。如果不存在则返回原始数值。 - - -core.setFlag(name, value) -设置某个自定义变量或flag。如果value为null则会调用core.removeFlag进行删除。 -这里的变量与事件中使用的变量等价 -譬如core.setFlag("xxx",1)则为设置变量xxx为1。 - - -core.addFlag(name, value) -加减某个自定义的变量或flag。等价于 core.setFlag(name, core.getFlag(name, 0) + value) -这里的变量与事件中使用的变量等价 -譬如core.addFlag("xxx",1)则为增加变量xxx1 - - -core.getFlag(name, defaultValue) -获得某个自定义的变量或flag。如果该flag不存在(从未赋值过),则返回defaultValue的值。 -这里的变量与事件中使用的变量等价 -譬如core.getFlag("xxx",1)则为获得变量xxx的值,如变量xxx不存在则返回1 - - -core.hasFlag(name) -判定是否拥有某个自定义变量或flag。等价于 !!core.getFlag(name, 0) -这里的变量与事件中使用的变量等价 -譬如core.hasFlag("xxx",1)则为判断变量xxx是否存在 - -core.removeFlag(name) -删除一个自定义变量或flag。 - - -core.lockControl() / core.unlockControl() -锁定和解锁控制。常常应用于事件处理。 - - -core.debug() -开启调试模式。此模式下可以按住Ctrl进行穿墙。 - -// ------ 天气,色调,音乐和音效 ------ // - -core.setWeather(type, level) -设置当前的天气。type只能为'rain', 'snow'或'fog',level为1-10之间代表强度信息。 - - -core.setCurtain(color, time, callback) -更改画面色调。color为更改到的色调,是个三元或四元组;time为渐变时间,0代表立刻切换。 -譬如core.setCurtain([255,255,255,1], 0)即为无回调无等待更改画面色调为白色 - - - -core.screenFlash(color, time, times, callback) -画面闪烁。color为色调,三元或四元组;time为单次闪烁时间,times为总闪烁次数。 - - -core.playBgm(bgm, startTime) -播放一个bgm。startTime可以控制开始时间,不填默认为0。 -如果bgm不存在、不被支持,或当前不允许播放背景音乐,则会跳过。 - - -core.pauseBgm() / core.resumeBgm() -暂停和恢复当前bgm的播放。 - - -core.triggerBgm() -更改当前bgm的播放状态。 - - -core.playSound(sound) / core.stopSound() -播放一个音效,停止全部音效。 -如果sound不存在、不被支持,或当前不允许播放音效,则会忽略。 - - -core.checkBgm() -检查bgm的状态。 -有的时候,刚打开页面时,浏览器是不允许自动播放标题界面bgm的,一定要经过一次用户操作行为。 -这时候我们可以给开始按钮增加core.checkBgm(),如果之前没有成功播放则重新播放。 - -// ------ 状态栏和工具栏相关 ------ // - -core.clearStatusBar() -清空状态栏的数据。 - - -core.updateStatusBar(doNotCheckAutoEvents) -更新状态栏,被转发到了脚本编辑中。此函数还会根据是否在回放来设置工具栏的图标。 -如果doNotCheckAutoEvents为true则此时不检查自动事件。 - -core.showStatusBar() / core.hideStatusBar(showToolbox) -显示和隐藏状态栏。 -如果showToolbox为true,则在竖屏模式下不隐藏工具栏,方便手机存读档操作。 - - -core.updateHeroIcon() -更新状态栏上的勇士图标。 - - -core.setToolbarButton(useButtom) -设置工具栏是否是拓展键盘。 - -// ------ resize 相关 ------ // - -core.registerResize(name, func) -注册一个resize函数。 -name为自定义名称,可供注销使用。 -func可以是一个函数,或插件中的函数名,可以接受一个obj作为参数。 -具体详见resize函数。 - - -core.unregisterResize(name) -注销一个resize函数。 - - -core.resize() -屏幕分辨率改变后的重新自适应。 -此函数将根据当前的屏幕分辨率信息,生成一个obj,并传入各个注册好的resize函数中执行。 -``` - -## enemys.js - -enemys.js中定义了一系列和怪物相关的API函数。 - -```text -core.hasSpecial(special, test) -判断是否含有某个特殊属性。test为要检查的特殊属性编号。 -special为要测试的内容,允许接收如下类型参数: - - 一个数字:将直接和test进行判等。 - - 一个数组:将检查test是否在该数组之中存在。 - - 一个怪物信息:将检查test是否在该怪物的特殊属性中存在 - - 一个字符串:视为怪物ID,将检查该怪物的特殊属性 - - -core.getSpecials() -获得所有特殊属性的列表。实际上被转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.getSpecialText(enemy) -获得某个怪物的全部特殊属性名称。enemy可以是怪物信息或怪物ID。 -将返回一个数组,每一项是该怪物所拥有的一个特殊属性的名称。 - - -core.getSpecialHint(enemy, special) -获得怪物的某个特殊属性的描述。enemy可以是怪物信息或怪物ID,special为该特殊属性编号。 - - -core.canBattle(enemy, x, y, floorId) -判定当前能否战胜某个怪物。 -enemy可以是怪物信息或怪物ID,x,y,floorId为当前坐标和楼层。(下同) -能战胜返回true,不能战胜返回false。 - - -core.getDamage(enemy, x, y, floorId) -获得某个怪物的全部伤害值。 -如果没有破防或无法战斗则返回null,否则返回具体的伤害值。 - - -core.getExtraDamage(enemy, x, y, floorId) -获得某个怪物的额外伤害值(不可被护盾减伤)。 -目前暂时只包含了仇恨和固伤两者,如有需要可复写该函数。 - - -core.getDamageString(enemy, x, y, floorId) -获得某个怪物伤害字符串和颜色信息,以便于在地图上绘制显伤。 - - -core.nextCriticals(enemy, number, x, y, floorId) -获得接下来的N个临界值和临界减伤。enemy可以是怪物信息或怪物ID,x,y,floorId为当前坐标和楼层。 -number为要计算的临界值数量,不填默认为1。 -如果全塔属性中的useLoop开关被开启,则将使用循环法或二分法计算临界,否则使用回合法计算临界。 -返回一个二维数组 [[x1,y1],[x2,y2],...] 表示接下来的每个临界值和减伤值。 - - -core.getDefDamage(enemy, k, x, y, floorId) -获得某个怪物的k防减伤值。k可不填默认为1,x,y,floorId为当前xy坐标和楼层。 - - -core.getEnemyInfo(enemy, hero, x, y, floorId) -获得某个怪物的实际计算时的属性。该函数实际被转发到了脚本编辑中。 -hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero, "atk")来获得攻击力数值。 -该函数应当返回一个对象,记录了怪物的实际计算时的属性。 - - -core.getDamageInfo(enemy, hero, x, y, floorId) -获得某个怪物的战斗信息。该函数实际被转发到了脚本编辑中。 -hero可为null或一个对象,具体将使用core.getRealStatusOrDefault(hero, "atk")来获得攻击力数值。 -如果该函数返回null,则代表不可战斗(如没有破防,或无敌等)。 -否则,该函数应该返回一个对象,记录了战斗伤害信息,如战斗回合数等。 -从V2.5.5开始,该函数也允许直接返回一个数字,代表战斗伤害值,此时回合数将视为0。 - - -core.getCurrentEnemys(floorId) -获得某个楼层不重复的怪物信息,floorId不填默认为当前楼层。该函数会被怪物手册所调用。 -该函数将返回一个列表,每一项都是一个不同的怪物,按照伤害值从小到大排序。 -另外值得注意的是,如果设置了某个怪物的displayIdInBook,则会返回对应的怪物。 - - -core.hasEnemyLeft(enemyId, floorId) -检查某个楼层是否还有剩余的(指定)怪物。 -floorId为楼层ID,可忽略表示当前楼层。也可以填数组如["MT0","MT1"]同时检测多个楼层。 -enemyId如果不填或null则检查是否剩余任何怪物,否则只检查是否剩余指定的某类怪物。 -``` - -## events.js - -events.js将处理所有和事件相关的操作,主要分为五个部分: -- 游戏的开始和结束 -- 系统事件的处理 -- 自定义事件的处理 -- 点击状态栏图标所进行的操作 -- 一些具体事件的执行内容 - - -```text -// ------ 游戏的开始和结束 ------ // - -core.resetGame(hero, hard, floorId, maps, values) -重置整个游戏。该函数实际被转发到了脚本编辑中。 - - -core.startGame(hard, seed, route, callback) -开始新游戏。 -hard为难度字符串,会被设置为core.status.hard。 -seed为开始时要设置的的种子,route为要开始播放的录像,callback为回调函数。 -该函数将重置整个游戏,执行startText事件,上传游戏人数统计信息等。 - - -core.win(reason, norank) -游戏胜利,reason为结局名,norank如果为真则该结局不计入榜单。 -该函数实际被转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.lose(reason) -游戏失败,reason为结局名。该函数实际被转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.gameOver(ending, fromReplay, norank) -游戏结束。ending为获胜结局名,null代表失败;fromReplay标识是否是录像触发的。 -此函数将询问是否上传成绩(如果ending不是null),是否下载录像等,并重新开始。 - - -core.restart() -重新开始游戏。本质上就是播放标题界面的BGM并调用showStartAnimate。 - - -core.confirmRestart() -确认用户是否需要重新开始。 - -// ------ 系统事件处理 ------ // - -core.registerSystemEvent(type, func) -注册一个系统事件,即通过图块的默认触发器所触发的事件。 -type为一个要注册的事件类型,func为要执行的函数体或插件中的函数名。 -func需要接受(data, callback)作为参数,分别是触发点的图块信息,和执行完毕时的回调。 -如果注册一个已经存在的系统事件,比如openDoor,则会覆盖系统的默认函数。 - - -core.unregisterSystemEvent(type) -注销一个系统事件。type是上面你注册的事件类型。 - - -core.doSystemEvent(type, data, callback) -执行一个系统事件。type为事件类型,data为该事件点的图块信息,callback为执行完毕的回调。 - - -core.battle(id, x, y, force, callback) -和怪物进行战斗。 -id为怪物的ID,x和y为怪物坐标,force如果为真将强制战斗,callback为执行完毕的回调。 -如果填写了怪物坐标,则会删除对应点的图块并执行该点战后事件。 -如果是在事件流的执行过程中调用此函数,则不会进行自动存档,且会强制战斗。 - - -core.beforeBattle(enemyId, x, y) -战前事件。实际被转发到了脚本编辑中,执行脚本编辑中的内容,可以用于加上一些战前特效。 -此函数在“检测能否战斗和自动存档”【之后】执行。 -如果需要更早的战前事件,请在插件中覆重写 core.events.doSystemEvent 函数。 -此函数返回true则将继续本次战斗,返回false将不再战斗。 - - -core.afterBattle(enemyId, x, y, callback) -战后事件,将执行扣血、加金币经验、特殊属性处理、战后事件处理等操作。 -实际被转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.openDoor(x, y, needKey, callback) -尝试开一个门。x和y为门的坐标,needKey表示是否需要钥匙,callback为执行完毕的回调。 -如果不是一个有效的门,需要钥匙且未持有等,均会忽略此事件并直接执行callback。 - - -core.afterOpenDoor(doorId, x, y, callback) -开完一个门后执行的事件,实际被转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.getItem(id, num, x, y, callback) -获得若干个道具。itemId为道具ID,itemNum为获得的道具个数,不填默认为1。 -x和y为道具点的坐标,如果设置则会擦除地图上的该点,也可不填。 -譬如core.getItem("yellowKey",2)会直接获得两把黄钥匙。 - - -core.afterGetItem(id, x, y, callback) -获得一个道具后执行的事件,实际被转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.getNextItem(noRoute) -轻按,即获得面对的道具。如果noRoute为真则这个轻按行为不会计入录像。 - - -core.changeFloor(floorId, stair, heroLoc, time, callback, fromLoad) -楼层切换。floorId为目标楼层ID,stair为是什么楼梯,heroLoc为目标点坐标。 -time为切换时间,callback为切换完毕的回调,fromLoad标志是否是从读档造成的切换。 -floorId也可以填":before"和":next"表示前一层和后一层。 -heroLoc为{"x": 0, "y": 0, "direction": "up"}的形式。不存在则从勇士位置取。 -如果stair不为null,则会在该楼层中找对应的图块作为目标点的坐标并覆盖heroLoc。 -一般设置的是"upFloor"和"downFloor",但也可以用任何其他的图块ID。 - - -core.changingFloor(floorId, heroLoc, fromLoad) -正在执行楼层切换中执行的操作,实际被转发到了脚本编辑中。 - - -core.hasVisitedFloor(floorId) -是否曾经到达过某一层。 - - -core.visitFloor(floorId) -标记曾经到达了某一层。 - - -core.passNet(data) -执行一个路障处理。这里只有毒衰咒网的处理,血网被移动到了updateCheckBlock中。 - - -core.pushBox(data) -执行一个推箱子事件。 - - -core.afterPushBox() -推箱子之后触发的事件,实际被转发到了脚本编辑中,执行脚本编辑中的内容。 - - -core.changeLight(id, x, y) -踩灯后的事件。 - -// ------ 自定义事件的处理 ------ // - -core.registerEvent(type, func) -注册一个自定义事件。type为事件名,func为执行事件的函数体或插件中的函数名。 -func可以接受(data, x, y, prefix)参数,其中data为事件内容,x和y为该点坐标,prefix为该点前缀。 -同名注册的事件将进行覆盖。 -请记得在自定义处理事件完毕后调用core.doAction()再继续执行下一个事件! - - -core.unregisterEvent(type) -注销一个自定义事件。 - - -core.doEvent(data, x, y, prefix) -执行一个自定义事件。data为事件内容,将根据data.type去注册的事件列表中查找对应的执行函数。 -x和y为该点坐标,prefix为该点前缀。执行事件时也会把(data, x, y, prefix)传入执行函数。 - - -core.setEvents(list, x, y, callback) -设置自定义事件的执行列表,坐标和回调函数。 - - -core.startEvents(list, x, y, callback) -开始执行一系列的自定义事件。list为事件列表,x和y为事件坐标,callback为执行完毕的回调。 -此函数将调用core.setEvents,然后停止勇士,再执行core.doAction()。 - - -core.doAction(keepUI) -执行下一个自定义事件。 -此函数将检测事件列表是否全部执行完毕,如果是则执行回调函数。 -否则,将从事件列表中弹出下一个事件,并调用core.doEvent进行执行。 -如果keepUI为true,则不会清掉UI层和selector,适合于自己用脚本的绘制。 - - -core.insertAction(action, x, y, callback, addToLast) -向当前的事件列表中插入一个或多个事件并执行。 -如果当前并不是在事件执行流中,则会调用core.startEvents()开始执行事件,否则仅仅执行插入操作。 -action为要插入的事件,可以是一个单独的事件,或者是一个事件列表。 -x,y,callback如果设置了且不为null,则会覆盖当前的坐标和回调函数。 -addToLast如果为真,则会插入到事件执行列表的尾部,否则是插入到执行列表的头部。 - - -core.getCommonEvent(name) -根据名称获得某个公共事件内容。 - - -core.recoverEvents(data) -恢复事件现场。一般用于呼出怪物手册、呼出存读档页面等时,恢复事件执行流。 - - -core.checkAutoEvents() -检测自动事件并执行。 - - -core.precompile(events) -尝试预编译一段事件。 - - -// ------ 点击状态栏图标时执行的一些操作 ------ // - -core.openBook(fromUserAction) -尝试打开怪物手册。fromUserAction标志是否是从用户的行为触发,如按键或点击状态栏。(下同) -不建议复写此函数,否则【呼出怪物手册】事件会出问题。 - - -core.useFly(fromUserAction) -尝试使用楼传器。可以安全的复写此函数,参见文档-个性化-覆盖楼传事件。 - - -core.flyTo(toId, callback) -尝试飞行到某个楼层,被转发到了脚本编辑中。 -如果此函数返回true代表成功进行了飞行,false代表不能进行飞行。 - - -core.openEquipbox(fromUserAction) / core.openToolbox(fromUserAction) -尝试打开道具栏和装备栏。可以安全复写这两个函数。 - - -core.openQuickShop(fromUserAction) / core.openKeyBoard(fromUserAction) -尝试打开快捷商店和虚拟键盘。可以安全复写这两个函数。 - - -core.save(fromUserAction) / core.load(fromUserAction) -尝试打开存读档页面。 -不建议复写这两个函数,否则【呼出存读档页面】事件会出问题。 - - -core.openSettings(fromUserAction) -尝试打开系统菜单。不建议复写此函数。 - - -// ------ 一些具体事件的执行内容 ------ // - -core.hasAsync() -当前是否存在未执行完毕的异步事件。请注意正在播放的动画也算异步事件。 - - -core.follow(name) / core.unfollow(name) -跟随勇士/取消跟随。name为行走图名称。 -在取消跟随时如果指定了name,则会从跟随列表中选取一个该行走图取消,否则取消所有跟随。 -跟随和取消跟随都会调用core.gatherFollowers()来聚集所有的跟随者。 - - -core.setValue(name, operator, value, prefix) / core.addValue(name, value, prefix) -设置/增减某个数值。name可以是status:xxx,item:xxx或flag:xxx。 -value可以是一个表达式,将调用core.calValue()计算。prefix为前缀,独立开关使用,脚本中一般忽略。 - - -core.doEffect(effect, need, times) -执行一个effect操作。该函数目前仅被全局商店的status:xxx+=yyy所调用。 - - -core.setEnemy(id, name, value, prefix) -设置一个怪物属性。id为怪物的ID,name为要设置的项,比如hp,atk,def等等。 -value可以是一个表达式,将调用core.calValue()计算。prefix为前缀,独立开关使用,脚本中一般忽略。 - - -core.setFloorInfo(name, values, floorId, prefix) -设置某层楼的楼层属性,其中name为该楼层属性对应的条目,values为要设置的值,floorId为楼层id,prefix一般直接忽略。 -譬如core.setFloorInfo("name","4", "MT1")则为设置MT1显示在状态栏中的层数为4 - - -core.setGlobalAttribute(name, value) -设置一个全局属性,如边框颜色等。 - - -core.setGlobalFlag(name, value) -设置一个全局开关,如enableXXX等。 -如果需要设置一个全局数值如红宝石数值,可以直接简单的修改core.values,因此没有单独列出函数。 - - -core.closeDoor(x, y, id, callback) -执行一个关门事件。如果不是一个合法的门,或者该点不为空地,则会忽略本事件。 - - -core.showImage(code, image, sloc, loc, opacityVal, time, callback) -显示一张图片。code为图片编号,image为图片内容或图片名。 -sloc为[x,y,w,h]形式,表示在原始图片上裁剪的区域,也可直接设为null表示整张图片。 -loc为[x,y,w,h]形式,表示在界面上绘制的位置和大小,w和h可忽略表示使用绘制大小。 -opacityVal为绘制的不透明度,time为淡入时间。 -此函数将创建一个画布,其z-index是100+code,即图片编号为1则是101,编号50则是150。 -请注意,curtain层的z-index是125,UI层的z-index是140;因此可以通过图片编号来调整覆盖关系。 - - -core.hideImage(code, time, callback) -隐藏一张图片。code为图片编号,time为淡出时间。 - - -core.moveImage(code, to, opacityVal, time, callback) -移动一张图片。code为图片编号,to为[x,y]表示目标位置,opacityVal目标不透明度,time为移动时间。 - - -core.showGif(name, x, y) -绘制一张gif图片或取消所有绘制内容。如果name不设置则视为取消。x和y为左上角像素坐标。 - - -core.setVolume(value, time, callback) -设置音量。value为目标音量大小,在0到1之间。time为音量渐变的时间。 - - -core.vibrate(time, callback) -画面震动。time为震动时间。 -请注意,画面震动时间必须是500的倍数,系统也会自动把time调整为上整的500倍数值。 - - -core.eventMoveHero(steps, time, callback) -使用事件移动勇士。time为每步的移动时间。 -steps为移动数组,可以接受'up','down','left','right','forward'和'backward'项。 -使用事件移动勇士将不会触发任何地图上的事件。 - - -core.jumpHero(ex, ey, time, callback) -跳跃勇士。ex和ey为目标点的坐标,可以为null表示原地跳跃。time为总跳跃时间。 - - -core.openShop(shopId, needVisited) -打开一个全局商店。needVisited表示是否需要该商店原本就是启用状态。 -如果该商店对应的实际上是一个全局事件,则会直接插入并执行。 - - -core.disableQuickShop(shopId) -禁用一个全局商店,即把一个商店从启用变成禁用状态。 - - -core.canUseQuickShop(shopId) -当前能否使用某个全局商店,实际被转发到了脚本编辑中。 -如果此函数返回null则表示可以使用,返回一个字符串表示不可以,该字符串表示不可以的原因。 - - -core.setHeroIcon(name, noDraw) -设置勇士的行走图。 -name为行走图名称,noDraw如果为真则不会调用core.drawHero()函数进行刷新。 - - -core.checkLvUp() -检查升级事件。该函数将判定当前是否升级(或连续升级),然后执行升级事件。 - - -core.tryUseItem(itemId) -尝试使用一个道具。 -对于怪物手册和楼传器,将分别调用core.openBook()和core.useFly()函数。 -对于中心对称飞行器,则会调用core.drawCenterFly()函数。 -对于其他的道具,将检查是否拥有,能否使用,并且进行使用。 -``` - -## icons.js - -icons.js主要是负责素材相关信息,比如某个素材在对应的图片上的位置。 - -```text -core.getClsFromId(id) -根据某个素材的ID获得该素材的cls - - -core.getTilesetOffset(id) -根据某个素材来获得对应的tileset和坐标信息。 -如果该素材不是tileset,则返回null。 -``` - -## items.js - -items.js主要负责一切和道具相关的内容。 - -```text -core.getItemEffect(itemId, itemNum) -即捡即用类的道具获得时的效果。实际对应道具图块属性中的itemEffect框。 - - -core.getItemEffectTip(itemId) -即捡即用类的道具获得时的额外提示,比如“,攻击+100”。 -实际对应道具图块属性中的itemEffectTip框。 - - -core.useItem(itemId, noRoute, callback) -尝试使用一个道具。实际对应道具图块属性中的useItemEffect框。 -此函数也会调用一遍core.canUseItem(),如果无法使用将直接返回。 -noRoute如果为真,则这次使用道具的过程不会被计入录像。 -使用道具完毕后,对于消耗道具将自动扣除,永久道具不会扣除。 - - -core.canUseItem(itemId) -当前能否使用某个道具。 -有些系统道具如破炸和上下楼器等,会在计算出目标点的坐标后存入core.status.event.ui。 -使用道具时将直接从core.status.event.ui调用,不会重新计算。 - - -core.itemCount(itemId) -获得某个道具的个数。 - - -core.hasItem(itemId) -当前是否拥有某个道具。等价于 core.itemCount(itemId) > 0 -请注意,装备上的装备不视为拥有该道具,即core.hasEquip()和core.hasItem()是完全不同的。 - - -core.hasEquip(itemId) -当前是否装备上某个装备。 -请注意,装备上的装备不视为拥有该道具,即core.hasEquip()和core.hasItem()是完全不同的。 - - -core.getEquip(equipType) -获得某个装备位的当前装备。equipType为装备类型,从0开始。 -如果该装备位没有装备则返回null,否则返回当前装备的ID。 - - -core.setItem(itemId, itemNum) -设置某个道具的个数。 - - -core.addItem(itemId, itemNum) -增减某个道具的个数,itemNum可不填默认为1。 - - -core.getEquipTypeByName(name) -根据装备位名称来找到一个空的装备孔,适用于多重装备,装备位名称可在全塔属性中设置。 -如果没有一个装备孔是该装备名称,则返回-1。 -譬如:core.getEquipTypeByName("武器")默认返回全塔属性中武器对应的装备孔号0。 - - -core.getEquipTypeById(equipId) -获得某个装备的装备类型。 -如果其type写的是装备名(多重装备),则调用core.getEquipTypeByName()函数。 - - -core.canEquip(equipId, hint) -当前能否穿上某个装备。如果hint为真,则不可装备时会气泡提示原因。 - - -core.loadEquip(equipId, callback) -穿上某个装备,equipId为装备id。 - - -core.unloadEquip(equipType, callback) -脱下某个装备孔的装备。 -譬如core.unloadEquip(0)则为脱下0号装备孔中的装备,默认0号装备孔对应“武器”,1号装备孔对应“盾牌” - - -core.compareEquipment(compareEquipId, beComparedEquipId) -比较两个套装的差异。 -此函数将对所有的勇士属性包括生命魔力攻防护盾金币等进行比较。 -如果存在差异的,将作为一个对象返回其差异内容。 - - -core.quickSaveEquip(index) -保存当前套装。index为保存的套装编号。 - - -core.quickLoadEquip() -读取当前套装。index为读取的套装编号。 - - -core.getEquippedStatus(name) -获得装备直接增加的属性数据。 -``` - -## loader.js - -loader.js主要负责资源加载相关的内容。 - -```text -core.loadImage(imgName, callback) -从 project/images/ 中加载一张图片。imgName为图片名。 -callback为执行完毕的回调函数,接收(imgName, image)即图片名和图片内容作为参数。 -如果图片不存在或加载失败则会在控制台打出一条错误日志,不会执行回调。 - - -core.loadImages(names, toSave, callback) -从 project/images/ 中加载若干张图片。 -names为一个图片名的列表,toSave为加载并存到的对象。 -callback为全部加载完毕执行的回调。 - - -core.loadOneMusic(name) -从 project/sounds/ 或第三方中加载一个音乐,并存入core.material.bgms中。name为音乐名。 - - -core.loadOneSound(name) -从 project/sounds/ 中加载一个音效,并存入core.material.sounds中。name为音效名。 - - -core.loadBgm(name) -预加载一个bgm并加入缓存列表core.musicStatus.cachedBgms。 -此函数将会检查bgm的缓存,预加载和静音播放。 -如果缓存列表溢出(core.musicStatus.cacheBgmCount)则通过LRU算法选择一个bgm并调用core.freeBgm()。 - - -core.freeBgm(name) -释放一个bgm的内存并移出缓存列表。如果该bgm正在播放则也会立刻停止。 -``` - -## map.js - -maps.js负责一切和地图相关的处理内容,包括如下几个方面: -- 地图的初始化,保存和读取,地图数组的生成 -- 是否可移动或瞬间移动的判定 -- 地图的绘制 -- 获得某个点的图块信息 -- 启用和禁用图块,改变图块 -- 移动/跳跃图块,淡入淡出图块 -- 全局动画控制,动画的绘制 - -```text -// ------ 地图的初始化,保存和读取,地图数组的生成 ------ // - -core.loadFloor(floorId, map) -从楼层或者存档中生成core.status.maps的内容。 -map为存档信息,如果某项在map中不存在则会从core.floors中读取。 - - -core.getNumberById(id) -给定一个图块ID,找到图块对应的图块编号。 - - -core.initBlock(x, y, id, addInfo, eventFloor) -给定一个数字,初始化一个图块信息。 -x和y为坐标,id为数字或者可以:t或:f结尾表示初始是启用还是禁用状态。 -addInfo如果为true则会填充上图块的默认信息,比如给怪物添加battle触发器。 -eventFloor如果设置为某个楼层信息,则会填充上该点的自定义或楼层切换事件。 - - -core.compressMap(mapArr, floorId) -压缩地图。mapArr为要压缩的二维数组,floorId为对应的楼层。 -此函数将把mapArr和对应的楼层中的数组进行比较,并只取差异值进行存储。 -通过这种压缩地图的方式,不仅节省了存档空间,还支持了任意修改地图的接档。 - - -core.decompressMap(mapArr, floorId) -解压缩地图。mapArr为压缩后的地图,floorId为对应的楼层。 -此函数返回解压后的二维数组。 - - -core.saveMap(floorId) -将某层楼的数据生成存档所保存的内容。在core.saveData()中被调用。 - - -core.loadMap(data, floorId) -从data中读取楼层数据,并调用core.loadFloor()进行初始化。 - - -core.removeMaps(fromId, toId) -删除某个区域的地图。调用此函数后,这些楼层将不可飞,不可被浏览地图,也不计入存档。 -fromId和toId为要删除的起终点楼层ID;toId也可以不填代表只删除某一层。 -此函数适用于高层塔的砍层,例如每100层一个区域且互相独立,不可再返回的情况。 - - -core.resizeMap(floorId) -根据某层楼的地图大小来调整大地图的画布大小。floorId可为null表示当前层。 - - -core.getMapArray(floorId, showDisable) -生成某层楼的二维数组。floorId可不填代表当前楼层。 -showDisable若为真,则对于禁用的点会加上:f表示,否则视为0。 - - -core.getMapBlocksObj(floorId, showDisable) -以x,y的形式返回每个点的图块信息。floorId可不填表示当前楼层。 -此函数将返回 {"0,0": {...}, "0,1": {...}} 这样的结构,其中内部为对应点的block信息。 - - -core.getBgMapArray(floorId, noCache) -获得某层楼的背景层的二维数组。floorId可不填表示当前楼层。 -如果noCache为真则重新从剧本中读取而不使用缓存数据。 - - -core.getFgMapArray(floorId, noCache) -获得某层楼的前景层的二维数组。floorId可不填表示当前楼层。 -如果noCache为真则重新从剧本中读取而不使用缓存数据。 - - -core.getBgNumber(x, y, floorId, noCache) -获得某层楼的背景层中某个点的数字。floorId可不填表示当前楼层。 -如果noCache为真则重新从剧本中读取而不使用缓存数据。 -本函数实际等价于 core.getBgMapArray(floorId, noCache)[y][x] - - -core.getBgNumber(x, y, floorId, noCache) -获得某层楼的前景层中某个点的数字。参数和方法同上。 - -// ------ 是否可移动或瞬间移动的判定 ------ // - -core.generateMovableArray(floorId, x, y, direction) -生成全图或某个点的可通行方向数组。floorId为楼层Id,可不填默认为当前点。 -这里的可通行方向数组,指的是["up","down","left","right"]中的一个或多个组成的数组。 - - 如果不设置x和y,则会返回一个三维数组,其中每个点都是一个该点可通行方向的数组。 - - 如果设置了x和y但没有设置direction,则只会返回该点的可通行方向数组, - - 如果设置了x和y以及direction,则会判定direction是否在该点可通行方向数组中,并返回true或false。 -可以使用core.inArray()来判定某个方向是否在可通行方向数组中。 - - -core.canMoveHero(x, y, direction, floorId) -某个点是否可朝某个方向移动。x和y可选,不填或为null则默认为勇士当前点。 -direction可选,不填或为null则默认勇士当前朝向。floorId不填则默认为当前楼层。 -此函数将直接调用 core.generateMovableArray() 进行判定。 - - -core.canMoveDirectly(destX, destY) -当前能否瞬间移动到某个点。 -如果可以瞬移则返回非负数,其值为该次瞬移所少走的步数;如果不能瞬移则返回-1。 - - -core.automaticRoute(destX, destY) -找寻到目标点的一条自动寻路路径。 - -// ------ 绘制地图相关 ------ // - -core.drawBlock(block, animate) -重新绘制一个图块,block为图块信息。 -如果animate不为null则代表是通过全局动画的绘制,其值为当前的帧数。 - - -core.generateGroundPattern(floorId) -生成某个楼层的地板信息。floorId不填默认为当前楼层。 -该函数可被怪物手册、对话框帧动画等地方使用。 - - -core.drawMap(floorId, callback) -绘制某层楼的地图。floorId为目标楼层ID,可不填表示当前楼层。 -此函数会将core.status.floorId设置为floorId,并设置core.status.thisMap。 -将依次调用core.drawBg(), core.drawEvents()和core.drawFg()函数,最后绘制勇士和更新地图显伤。 - - -core.drawBg(floorId, ctx) -绘制背景层。floorId为目标楼层ID,可不填表示当前楼层。 -如果ctx不为null,则背景层将绘制在该画布上而不是bg层上(drawThumbnail使用)。 -可以通过复写该函数,调整_drawFloorImages和_drawBgFgMap的顺序来调整背景图块和贴图的遮挡顺序。 - - -core.drawEvents(floorId, blocks, ctx) -绘制事件层。floorId为目标楼层ID,可不填表示当前楼层。 -block表示要绘制的图块列表,可不填使用当前楼层的图块列表。 -如果ctx不为null,则背景层将绘制在该画布上而不是event层上(drawThumbnail使用)。 - - -core.drawFg(floorId, ctx) -绘制前景层。floorId为目标楼层ID,可不填表示当前楼层。 -如果ctx不为null,则背景层将绘制在该画布上而不是fg层上(drawThumbnail使用)。 -可以通过复写该函数,调整_drawFloorImages和_drawBgFgMap的顺序来调整前景图块和贴图的遮挡顺序。 - - -core.drawThumbnail(floorId, blocks, options, toDraw) -绘制一个楼层的缩略图。floorId为目标楼层ID,可不填表示当前楼层。 -block表示要绘制的图块列表,可不填使用当前楼层的图块列表。 -options为绘制选项(可为null),包括: - heroLoc: 勇士位置;heroIcon:勇士图标(默认当前勇士);damage:是否绘制显伤; - flags:当前的flags(在存读档时使用) -toDraw为要绘制到的信息(可为null,或为一个画布名),包括: - ctx:要绘制到的画布(名);x,y:起点横纵坐标(默认0);size:绘制大小(默认416/480); - all:是否绘制全图(默认false);centerX,centerY:截取中心(默认为地图正中心) - -// ------ 获得某个点的图块信息 ------ // - -core.noPass(x, y, floorId) -判定某个点是否有noPass(不可通行)的图块。 - - -core.npcExists(x, y, floorId) -判定某个点是否有NPC的存在。 - - -core.terrainExists(x, y, id, floorId) -判定某个点是否有(id对应的)地形存在。 -如果id为null,则只要存在terrains即为真,否则还会判定对应点的ID。 - - -core.stairExists(x, y, floorId) -判定某个点是否存在楼梯。 - - -core.nearStair() -判定当前勇士是否在楼梯上或旁边(距离不超过1)。 - - -core.enemyExists(x, y, id, floorId) -判定某个点是否有(id对应的)怪物存在。 -如果id为null,则只要存在怪物即为真,否则还会判定对应点的怪物ID。 -请注意,如果需要判定某个楼层是否存在怪物请使用core.hasEnemyLeft()函数。 - - -core.getBlock(x, y, floorId, showDisable) -获得某个点的当前图块信息。x和y为坐标;floorId为楼层ID,可忽略或null表示当前楼层。 -showDisable如果为true,则对于禁用的点和事件也会进行返回。 -如果该点不存在图块,则返回null。 -否则,返回值如下: {"index": xxx, "block": xxx} -其中index为该点在该楼层blocks数组中的索引,block为该图块实际内容。 - - -core.getBlockId(x, y, floorId, showDisable) -获得某个点的图块ID。如果该点不存在图块则返回null。 - - -core.getBlockCls(x, y, floorId, showDisable) -获得某个点的图块类型。如果该点不存在图块则返回null。 - - -core.getBlockInfo(block) -根据某个的图块信息获得其详细的素材信息。 -如果参数block为字符串,则视为图块ID;如果参数为数字,则视为图块的数字。 -此函数将返回一个非常详尽的素材信息,目前包括如下几项: -number:素材数字;id:素材id;cls:素材类型;image:素材所在的素材图片;animate:素材的帧数。 -posX, posY:素材在该素材图片上的位置;height:素材的高度;faceIds:NPC朝向记录。 - - -core.searchBlock(id, floorId, showDisable) -搜索一个图块出现过的所有位置。id为图块ID,也可以传入图块的数字。 -id支持通配符搜索,比如"*Door"可以搜索所有的门,"unknownEvent*"可以所有所有的unknownEvent。 -floorId为要搜索的楼层,可以是一个楼层ID,或者一个楼层数组。如果floorId不填则只搜索当前楼层。 -showDisable如果为真,则对于禁用的图块也会返回。 -此函数将返回一个数组,每一项为一个搜索到的结果: -{"floorId": ..., "index": ..., "block": {...}, "x": ..., "y": ...} -即包含该图块所在的楼层ID,在该楼层的blocks数组的索引,图块内容,和横纵坐标。 - - -// ------ 启用和禁用图块,改变图块 ------ // - -core.showBlock(x, y, floorId) -将某个点从禁用变成启用状态。floorId可不填或null表示当前楼层。 - - -core.hideBlock(x, y, floorId) -将某个点从启用变成禁用状态,但不会对其进行删除。floorId可不填或null表示当前楼层。 -此函数不会实际将该块从地图中进行删除,而是将该点设置为禁用,以供以后可能的启用事件。 - - -core.removeBlock(x, y, floorId) -将从启用变成禁用状态,并尽可能将其从地图上删除。 -和hideBlock相比,如果该点不存在自定义事件(比如门或普通的怪物),则将直接从地图中删除。 -如果存在自定义事件,则简单的禁用它,以供以后可能的启用事件。 - - -core.removeBlockByIndex(index, floorId) -每个楼层的图块存成一个数组,index即为该数组中的索引,每个索引对应该地图中的一个图块 -根据索引从地图的block数组中尽可能删除一个图块。floorId可不填或null表示当前楼层。 - - -core.removeBlockByIndexes(indexes, floorId) -indexes为由索引组成的数组,如[0,1]等 -根据索引数组从地图的block数组中尽可能删除一系列图块。floorId可不填或null表示当前楼层。 - - -core.canRemoveBlock(block, floorId) -block为图块信息,可由core.getBlock获取 -判定当前能否完全删除某个图块。floorId可不填或null表示当前楼层。 -如果该点存在自定义事件,或者是重生怪,则不可进行删除。 - - -core.showBgFgMap(name, loc, floorId, callback) -显示某层楼中某个背景/前景层的图块。name只能为'bg'或'fg'表示背景或前景层。 -loc为该点坐标,floorId可不填默认为当前楼层。callback为执行完毕的回调。 - - -core.hideBgFgMap(name, loc, floorId, callback) -隐藏某层楼中某个背景/前景层的图块。name只能为'bg'或'fg'表示背景或前景层。 -loc为该点坐标,floorId可不填默认为当前楼层。callback为执行完毕的回调。 - - -core.showFloorImage(loc, floorId, callback) -显示某层楼中的某个楼层贴图。loc为该贴图的左上角坐标。floorId可省略表示当前楼层。 - - -core.hideFloorImage(loc, floorId, callback) -隐藏某层楼中的某个楼层贴图。loc为该贴图的左上角坐标。floorId可省略表示当前楼层。 - - -core.setBlock(number, x, y, floorId) -改变某个楼层的某个图块。 -number为要改变到的数字,也可以传入图块id(将调用core.getNumberById()来获得数字)。 -x,y和floorId为目标点坐标和楼层,可忽略为当前点和当前楼层。 - - -core.replaceBlock(fromNumber, toNumber, floorId) -将某个或某些楼层中的所有某个图块替换成另一个图块 -fromNumber和toNumber为要被替换和替换到的数字。 -floorId可为某个楼层ID,或者一个楼层数组;如果不填只视为当前楼层。 -值得注意的是,使用此函数转了的点上的自定义事件可能无法被执行。 -如有需要,再对那些存在事件的点执行core.setBlock()即可 - - -core.setBgFgBlock(name, number, x, y, floorId) -设置前景/背景层的某个图块。name只能为'bg'或'fg'表示前景或背景层。 -number为要设置到的图块数字,x,y和floorId为目标点坐标和楼层,可忽略为当前点和当前楼层。 - - -core.resetMap(floorId) -重置某层或若干层的地图和楼层属性。 -floorId可为某个楼层ID,或者一个楼层数组如["MT1","MT2"](同时重置若干层);如果不填则只重置当前楼层。 - -// ------ 移动/跳跃图块,淡入淡出图块 ------ // - -core.moveBlock(x, y, steps, time, keep, callback) -移动一个图块,x和y为图块的坐标。 -steps为移动的数组,每一项只能是"up","down","left","right"之一。 -time为每一步的移动时间,不填默认为500ms。 -如果keep为真,则在移动完毕后将自动调用一个setBlock事件,改变目标点的图块(即不消失), -否则会按照time时间来淡出消失。callback会执行完毕后的回调。 - - -core.jumpBlock(sx, sy, ex, ey, time, keep, callback) -跳跃一个图块,sx和sy为图块的坐标,ex和ey为目标坐标。time为整个跳跃过程中的全程用时,不填默认500。 -如果keep为真,则在移动完毕后将自动调用一个setBlock事件,改变目标点的图块(即不消失), -否则会按照time时间来淡出消失。callback会执行完毕后的回调。 - - -core.animateBlock(loc, type, time, callback) -淡入/淡出一个或多个图块。 -loc为一个图块坐标,或者一个二维数组表示一系列图块坐标(将同时显示和隐藏)。 -type只能为'show'或'hide'表示是淡入但是淡出。time为动画时间,callback为执行完毕的回调。 - -// ------ 全局动画控制,动画的绘制 ------ // - -core.addGlobalAnimate(block) -添加一个全局帧动画。 - - -core.removeGlobalAnimate(x, y, name) -删除一个或全部的全局帧动画。name可为'bg',null或'fg'表示某个图层。 -x和y如果为null,则会删除全部的全局帧动画,否则只会删除该点的该层的帧动画。 - - -core.drawBoxAnimate() -绘制UI层的box动画,如怪物手册和对话框中的帧动画等。 - - -core.drawAnimate(name, x, y, alignWindow, callback) -绘制一个动画。name为动画名,x和y为绘制的基准坐标,callback为绘制完毕的回调函数。 -此函数将播放动画音效,并异步开始绘制该动画。 -此函数会返回一个动画id,可以通过core.stopAnimate()立刻停止该动画的播放。 - - -core.stopAnimate(id, doCallback) -立刻停止某个动画的播放。id为上面core.drawAnimate的返回值。 -如果doCallback为真,则会执行该动画所对应的回调函数。 -``` - -## ui.js - -ui.js负责一切UI界面的绘制。主要包括三个部分: -- 设置某个画布的属性的相关API -- 具体的某个UI界面的绘制 -- 动态创建画布相关的API - -```text -// ------ 设置某个画布的属性的相关API ------// -这系列函数的name一般都是画布名,可以是系统画布或动态创建的画布。 -但也同时也允许直接传画布的context本身,将返回自身。 - - -core.getContextByName(name) -根据画布名找到一个画布的context;支持系统画布和自定义画布。 -如果不存在画布此函数返回null。 -该参数也可以直接传画布的context自身,则返回自己。 - - -core.clearMap(name) -清空某个画布图层。 -该函数的name也可以是'all',若为'all'则为清空所有系统画布。 - - -core.fillText(name, text, x, y, style, font, maxWidth) -在某个画布上绘制一段文字。 -text为要绘制的文本,x,y为要绘制的坐标,style可选为绘制的样式,font可选为绘制的字体。(下同) -style可直接使用"red","white"等或用"rgba(255,255,255,1)"或用"#FFFFFF"等方式来获得字体对应的颜色 -font的格式为"20px Verdana"前者为字体大小,后者为字体 -如果maxWidth不为null,则视为文字最大宽度,如果超过此宽度则会自动放缩文字直到自适应为止。 -请注意textAlign和textBaseline将决定绘制的左右对齐和上下对齐方式。 -具体可详见core.setTextAlign()和core.setTextBaseline()函数。 -譬如:core.fillText("ui", "这是要描绘的文字", 10, 10, "red", "20px Verdana", 100) -即是在ui图层上,以10,10为起始点,描绘20像素大小,Verdana字体的红色字,长度不超过100像素 - - -core.fillBoldText(name, text, x, y, style, font) -在某个画布上绘制一个描黑边的文字。 - - -core.fillRect(name, x, y, width, height, style) -绘制一个矩形。width, height为矩形宽高,style可选为绘制样式。如果设置将调用core.setFillStyle()。(下同) - - -core.strokeRect(name, x, y, width, height, style, lineWidth) -绘制一个矩形的边框。style可选为绘制样式,如果设置将调用core.setStrokeStyle()。 -lineWidth如果设置将调用core.setLineWidth()。(下同) - - -core.drawLine(name, x1, y1, x2, y2, style, lineWidth) -绘制一条线,x1y1为起始点像素,x2y2为终止点像素。 - - -core.drawArrow(name, x1, y1, x2, y2, style, lineWidth) -绘制一个箭头,x1y1为起始点像素,x2y2为终止点像素。 - - -core.setFont(name, font) / core.setLineWidth(name, lineWidth) -设置一个画布的字体/线宽。 - - -core.setAlpha(name, font) / core.setOpacity(name, font) -设置一个画布的绘制不透明度和画布本身的不透明度。 -两者区别如下: - - setAlpha是设置"接下来绘制的内容的不透明度",不会对已经绘制的内容产生影响。 - > 比如setAlpha('ui', 0.5)则会在接下来的绘制中使用0.5的不透明度。 - - setOpacity是设置"画布本身的不透明度",已经绘制的内容也会产生影响。 - > 比如我已经在UI层绘制了一段文字,再setOpacity则也会让已经绘制的文字变得透明。 -尽量不要对系统画布使用setOpacity(因为会对已经绘制的内容产生影响),自定义创建的画布则不受此限制。 - - -core.setFillStyle(name, style) / core.setStrokeStyle(name, style) -设置一个画布的填充样式/描边样式。 - - -core.setTextAlign(name, align) -设置一个画布的文字横向对齐模式,这里的align只能为'left', 'right'和'center',分别对应左对齐,右对齐,居中。 -默认为'left'。 - - -core.setTextBaseline(name, baseline) -设置一个画布的纵向对齐模式。有关textBaseline的说明可参见如下资料: -http://www.runoob.com/tags/canvas-textbaseline.html -默认值是'alphabetic'。 -请注意,系统画布在绘制前都是没有设置过textBaseline的,都是按照alphabetic进行坐标绘制。 -因此,如果你修改了系统画布的textBaseline来绘图,记得再绘制完毕后修改回来。 - - -core.calWidth(name, text, font) -计算一段文字在某个画布上的绘制宽度,此函数其实是ctx.measureText()的包装。 -font可选,如果存在则会先设置该画布上的字体。 -此函数不会对文字进行换行,如需换行版本请使用core.splitLines()函数。 - - -core.splitLines(name, text, maxWidth, font) -计算一段文字在某画布上换行分割的结果。 -text为文字内容,maxWidth为最大宽度,可为null表示不自动换行。 -font可选,如果存在则会先设置该画布上的字体。 -此函数将返回一个换行完毕的文本列表。 - - -core.drawImage(name, image, x, y, w, h, x1, y1, w1, h1) -在一张画布上绘制一张图片,此函数其实是ctx.drawImage()的包装。 -可以查看下面的文档以了解各项参数的信息: -http://www.w3school.com.cn/html5/canvas_drawimage.asp -这里的image允许传一个图片,画布。也允许传递图片名,将从你导入的图片中获取图片内容。 - - -core.drawIcon(name, id, x, y, w, h) -在一张画布上绘制一个图标。 -id为注册过的图标ID,也可以使用状态栏的图标ID,例如lv, hp, up, save, settings等。 -x和y为绘制的左上角坐标;w和h可选为绘制的宽高,如果不填或null则使用该图标的默认宽高。 - - -// ------ 具体的某个UI界面的绘制 ------ // -core.closePanel() -结束一切事件和UI绘制,关闭UI窗口,返回游戏。 -此函数将以此调用core.clearUI(),core.unlockControl(),并清空core.status.event里面的内容。 - - -core.clearUI() -重置UI窗口。此函数将清掉所有的UI帧动画和光标,清空UI画布,并将alpha设为1。 - - -core.drawTip(text, id, clear) -在左上角以气泡的形式绘制一段提示。 -text为文字内容,仅支持${}的表达式计算,不支持换行和变色。 -id可选,为同时绘制的图标ID,如果不为null则会同时绘制该图标(仅对32x32的素材有效)。 -也可以使用状态栏的图标ID,例如lv, hp, up, save, settings等。 -如果clear为true,则会清空当前所有正在显示的提示。 - - -core.clearTip() -清空当前所有正在显示的提示。 - - -core.drawText(content, callback) -绘制一段文字。contents为一个字符串或一个字符串数组,callback为全部绘制完毕的回调。 -支持所有的文字效果(如\n,${},\r,\\i,\\c,\\d,\\e等),也支持\t和\b的语法。 -如果当前在事件处理中或录像回放中,则会自动转成core.insertAction处理。 -不建议使用该函数,如有绘制文字的需求请尽量使用core.insertAction()插入剧情文本事件。 - - -core.drawWindowSelector(background, x, y, w, h) -绘制一个WindowSkin的闪烁光标。background可为winskin的图片名或图片本身。 -x,y,w,h为绘制的左上角位置和宽高,都是像素为单位。 - - -core.drawWindowSkin(background, ctx, x, y, w, h, direction, px, py) -绘制一个WindowSkin。background可为winskin的图片名或图片本身。 -ctx为画布名或画布本身,x,y,w,h为左上角位置和宽高,都是像素为单位。 -direction, px, py可选,如果设置则会绘制一个对话框箭头。 - - -core.drawBackground(left, top, right, bottom, posInfo) -绘制一个背景图。此函数将使用你在【剧情文本设置】中设置的背景,即用纯色或WindowSkin来绘制。 -left, top, right, bottom为你要绘制的左上角和右下角的坐标。 -posInfo如果不为null则是一个含position, px和py的对象,表示一个对话框箭头的绘制。 - - -core.drawTextContent(ctx, content, config) -根据配置在某个画布上绘制一段文字。此函数会被core.drawTextBox()所调用。 -ctx为画布名或画布本身,如果不设置则会忽略该函数。 -content为要绘制的文字内容,支持所有的文字效果(如\n,${},\r,\\i,\\c,\\d,\\e等) - ,但不支持支持\t和\b的语法。 -config为绘制的配置项,目前可以包括如下几项: - - left, top:在该画布上绘制的左上角像素位置,不设置默认为(0,0)。 - > 该函数绘制时会将textBaseline设置为'top',因此只需要考虑第一个字的左上角位置。 - - maxWidth:单行最大宽度,超过此宽度将自动换行,不设置不会自动换行。 - - color:默认颜色,为#XXXXXX形式。如果不设置则使用剧情文本设置中的正文颜色。 - - bold:是否粗体。如果不设置默认为false。 - - align:文字对齐方式,仅在maxWidth设置时有效,默认为'left'。 - - fontSize:字体大小,如果不设置则使用剧情文本设置中的正文字体大小。 - - lineHeight:绘制的行距值,如果不设置则使用fontSize*1.3(即1.3倍行距)。 - - time:打字机效果。若不为0,则会逐个字进行绘制,并设置core.status.event.interval定时器。 - - interval:字符间的间距。值表示绘制每个字符之间间隔的距离,默认为0。 - - -core.drawTextBox(content, showAll) -绘制一个对话框。content为一个字符串或一个字符串数组。 -支持所有的文字效果(如\n,${},\r,\\i,\\c,\\d,\\e等),也支持\t和\b的语法。 -该函数将使用用户在剧情文本设置中的配置项进行绘制。 -实际执行时,会计算文本框宽度并绘制背景,绘制标题和头像,再调用core.drawTextContent()绘制正文内容。 -showAll可选,如果为true则不会使用打字机效果而全部显示,主要用于打字机效果的点击显示全部。 - - -core.drawScrollText(content, time, lineHeight, callback) -绘制一个滚动字幕。content为绘制内容,time为总时间(默认为5000),lineHeight为行距比例(默认为1.4)。 -滚动字幕将绘制在UI上,支持所有的文字效果(如\n,${},\r,\\i,\\c,\\d,\\e等),但不支持\t和\b效果。 -可以通过剧情文本设置中的align控制是否居中绘制,offset控制其距离左边的偏移量。 - - -core.textImage(content, lineHeight) -将文本图片化。content为绘制内容,lineHeight为行距比例(默认为1.4)。 -可以通过剧情文本设置中的align控制是否居中绘制。 -此函数将返回一个临时画布的canvas,供转绘到其他画布上使用。 - - -core.drawChoices(content, choices) -绘制一个选项框。 -content可选,为选项上方的提示文字,支持所有的文字效果(如\n,${},\r,\\i,\\c,\\d,\\e等),也支持\t。 -choices必选,为要绘制的选项内容,是一个列表。其中的每一项: - - 可以是一个字符串,表示选项文字,将使用剧情文本设置中的正文颜色来绘制,仅支持${}表达式计算。 - - 或者是一个包含text, color和icon的对象。 - > text必选,为要绘制的文字内容,仅支持${}的表达式计算, - > color为要绘制的选项颜色,可以是#XXXXXX的格式或RGBA数组。不设置则使用正文颜色。 - > icon为要绘制的图标ID,支持使用素材的ID,或者系统图标。 - - -core.drawConfirmBox(text, yesCallback, noCallback) -绘制一个确认框。text为确认文字,支持\n换行(但不支持自动换行)和${}表达式计算。 -yesCallback和noCallback分别为确定和取消的回调函数。 -可以在调用此函数前设置core.status.event.selection来控制默认的选中项(0确定1取消)。 -此函数和core.myconfirm的区别主要在于: - - 此函数会清掉UI层原有的绘制信息,core.myconfirm不会清除。 - - 此函数可以用键盘进行操作,core.myconfirm必须用鼠标点击。 -另外请注意:本函数和事件流的执行不兼容,选择也不会进录像。 -如果需要在事件流中调用请使用提供选择项。 - - -core.drawWaiting(text) -绘制一个等待界面,一般用于同步存档之类的操作。 -调用此函数后,需要再调用core.closePanel()才会恢复游戏。 - - -core.drawPagination(page, totalPage, y) -绘制一个分页。y如果不设置则绘制在最后一行。 - - -core.drawBook(index) / core.drawBookDetail(index) -绘制怪物手册,绘制怪物的详细信息。 - - -core.drawFly(page) / core.drawCenterFly() / core.drawShop(shopId) -绘制楼传页面,中心对称飞行器,绘制商店 - - -core.drawToolbox(index) / core.drawEquipbox(index) / core.drawKeyBoard() -绘制道具栏,绘制装备栏,绘制虚拟键盘。 - - -core.drawMaps(index, x, y) / core.drawSLPanel(index, refresh) -绘制浏览地图,绘制存读档界面。 - - -core.drawStatusBar() -自定义绘制状态栏,仅在状态栏canvas化开启时有效,实际被转发到了脚本编辑中。 - - -core.drawStatistics() -绘制数据统计。将从脚本编辑中获得要统计的数据列表,再遍历所有地图进行统计。 - - -core.drawAbout() / core.drawHelp() -绘制关于界面,帮助界面。 - -// ------ 动态创建画布相关的API ------ // - - -core.ui.createCanvas(name, x, y, width, height, z) -动态创建一个自定义画布。name为要创建的画布名,如果已存在则会直接取用当前存在的。 -x,y为创建的画布相对窗口左上角的像素坐标,width,height为创建的长宽。 -z值为创建的纵向高度(关系到画布之间的覆盖),z值高的将覆盖z值低的;系统画布的z值可在个性化中查看。 -返回创建的画布的context,也可以通过core.dymCanvas[name]或core.getContextByName获得。 - - -core.ui.relocateCanvas(name, x, y) -重新定位一个自定义画布。x和y为画布的左上角坐标,name为画布名。 - - -core.ui.resizeCanvas(name, width, height, styleOnly) -重新设置一个自定义画布的大小。width和height为新设置的宽高。 -styleOnly控制是否只修改画布的显示大小(而不修改画布的内部大小)。 -如果styleOnly为true,则只修改其显示大小(即canvas.style.width); -否则,则会同时修改画布的显示大小和内部大小并清空画布内容。 - - -core.ui.deleteCanvas(name) -删除一个自定义画布。 - - -core.ui.deleteAllCanvas() -删除所有的自定义画布。 -``` - -## utils.js - -utils.js是一个工具函数库,里面有各个样板中使用到的工具函数。 - -```text -core.replayText(text, need, times) -将一段文字中的${}(表达式)进行替换。need和time一般可以直接忽略。 - - -core.replaceValue(value) -对一个表达式中的特殊规则进行替换,如status:xxx等。 -请注意,此项不会对独立开关如switch:A进行替换。 - - -core.calValue(value, prefix, need, time) -计算一个表达式的值,支持status:xxx等的计算。 -prefix为前缀(switch:xxx的独立开关使用),need和time一般可以直接忽略。 - - -core.unshift(a, b) / core.push(a, b) -将b插入到列表a之前或之后。b可以是一个元素或者一个数组。 - - -core.decompress(value) -解压缩一个字符串并进行JSON解析。value可能会被LZString或LZW算法进行压缩。 -返回解压后的JSON格式内容,如果无法解压则返回null。 - - -core.setLocalStorage(key, value) -将一个键值对存入localStorage中,会立刻返回结果。 -此函数会自动给key加上它的name作为前缀,以便于不同塔之间的区分。 -value为要存储的内容,存储前会被JSON转成字符串形式,并LZW算法进行压缩。 -如果value为null,则实际会调用core.removeLocalStorage()函数清除该key。 -localStorage为浏览器的默认存储,和存档无关,只有5M的空间大小。 -此函数立刻返回true或false,如果为false则代表存储失败,一般指的是空间满了。 - - -core.getLocalStorage(key, defaultValue) -从localStorage中获得一个键的值,会立刻返回结果。 -此函数会自动给key加上它的name作为前缀,以便于不同塔之间的区分。 -如果对应的键值不存在或为null,则会返回defaultValue。 -返回的结果会被调用core.decompress进行解压缩和JSON解析。 - - -core.removeLocalStorage(key) -从localStorage中删除一个键的值,会立刻返回。 -此函数会自动给key加上它的name作为前缀,以便于不同塔之间的区分。 - - -core.setLocalForage(key, value, successCallback, errorCallback) -将一个键值对存入localForage中,异步返回结果。 -如果用户没有开启【新版存档】开关,则仍然会使用core.setLocalStorage()。 -localForage为一个开源库,项目地址 https://github.com/localForage/localForage -一般存入的是indexedDB,这是一个浏览器的自带数据库,没有空间限制。 -successCallback和errorCallback均可选,表示该次存储成功或失败的回调, -此函数为异步的,只能通过回调函数来获得存储的成功或失败信息。 - - -core.getLocalForage(key, defaultValue, successCallback, errorCallback) -从localForage中获得一个键的值,异步返回结果。 -如果对应的键值不存在,则会使用defaultValue。 -如果获得成功,则会将core.decompress后的结果传入successCallback回调函数执行。 -errorCallback可选,如果失败,则会将错误信息传入errorCallback()。 -此函数是异步的,只能通过回调函数来获得读取的结果或错误信息。 - - -core.setGlobal(key, value) -设置一个全局存储,适用于global:xxx。 -录像播放时将忽略此函数,否则直接调用core.setLocalStorage。 - - -core.getGlobal(key, value) -获得一个全局存储,适用于global:xxx,支持录像。 -正常游戏时将使用core.getLocalStorage获得具体的数据,并将结果存放到录像中。 -录像播放时会直接从录像中获得对应的数据。 - - -core.clone(data, filter, recursion) -深拷贝一个对象。有关浅拷贝,深拷贝,基本类型和引用类型等相关知识可参见: -https://zhuanlan.zhihu.com/p/26282765 -filter为过滤函数,如果设置且不为null则需传递一个可接受(name, value)的函数, -并返回true或false,表示该项是否应该被深拷贝。 -recursion表示该filter是否应递归向下传递,如果为true则递归函数也将传该filter。 -例如: -core.clone(core.status.hero, function(name, value) { - return name == 'items' || typeof value == 'number'; -}, false); -这个例子将会深拷贝勇士的属性和道具。 - - -core.splitImage(image, width, height) -等比例切分一张图片。width和height为每张子图片的宽高。 -请确保原始图片的宽度和高度都是是width和height的倍数。 -此函数将返回一个一维数组,每一项都是一张切分好的图片,横向再纵向排列。 -例如4x3的图片按1x1切分得到一个长度为12的数组,按如下方式进行排列: -0 1 2 3 -4 5 6 7 -8 9 10 11 -可以将很多需要的图片拼在一张大图上,然后在插件的_afterLoadResources中切分。 -切分好的图片再存入core.material.images.images中,这样可以少很多IO请求。 - - -core.formatDate(date) / core.formatDate2(date) / core.formatTime(time) -格式化日期和时间。 - - -core.setTwoDigits(x) -将x变成两位数。其实就是 parseInt(x) < 10 ? "0" + x : x - - -core.formatBigNumber(x, onMap) -大数据格式化。x为要格式化的内容,如果不合法会返回???。 -onMap标记是否在地图上调用,如果为真则尝试格式化成六位,否则五位。 - - -core.arrayToRGB(color) / core.arrayToRGBA(color) -将一个颜色数组,例如[255,0,0,1]转成#FF0000或rgba(255,0,0,1)的形式。 - - -core.encodeRoute(route) -录像压缩和解压缩。route为要压缩的路线数组。 -此函数将尽可能对录像进行压缩。对于无法识别的项目(比如自己添加的),将不压缩而原样放入。 -例如,["up","up","left","move:3:5","test:2333","getNext","item:bomb","down"] -将被压缩成"U2LM3:5(test:2333)GIbomb:D"。 -自己添加的录像项只能由数字、大小写、下划线线、冒号等符号组成,否则无法正常压缩和解压缩。 -对于自定义内容(比如中文文本或数组)请使用JSON.stringify再core.encodeBase64处理。 -压缩的结果将再次进行LZString.compressToBase64()的压缩以进一步节省空间。 - - -core.decodeRoute(route) -解压缩一个录像,返回解压完毕的路线数组。 - - -core.isset(v) -判定v是不是null, undefined或NaN。 -请尽量避免使用此函数,而是直接判定 v == null (请注意 null==undefined !) - - -core.subarray(a, b) -判定数组b是不是数组a的一个前缀子数组。 -如果是,则返回a中除去b后的剩余数组,否则返回null。 - - -core.inArray(array, element) -判定array是不是一个数组,以及element是否在该数组中。 - - -core.clamp(x, a, b) -将x限定在[a,b]区间内。 - - -core.getCookie(name) -获得一个cookie值,如果不存在该cookie则返回null。 - - -core.setStatusBarInnerHTML(name, value, css) -设置一个状态栏的innerHTML。此函数会自动设置状态栏的文字放缩和斜体等效果。 -name为状态栏的名称,如atk, def等。需要是core.statusBar中的一个合法项。 -value为要设置到的数值,如果是数字则会先core.formatBigNumber()进行格式化。 -css可选,为增添的额外css内容,比如可以设定颜色等。 - - -core.strlen(str) -计算某个字符串的实际长度。每个字符的长度,ASCII码视为1,中文等视为2。 - - -core.reverseDirection(direction) -翻转方向,即"up"转成"down", "left"转成"right"等。 - - -core.matchWildcard(pattern, string) -进行通配符的匹配判定,目前仅支持*(可匹配0或任意个字符)。比如"a*b*c"可以匹配"aa012bc"。 - - -core.encodeBase64(str) / core.decodeBase64(str) -将字符串进行base64加密或解密。 -可用于解压缩录像数据 - - -core.rand(num) -使用伪种子生成伪随机数。该随机函数能被录像支持。 -num如果设置大于0,则生成一个[0, num-1]之间的数;否则生成一个0到1之间的浮点数。 -此函数为伪随机算法,SL大法无效。(即多次SL后调用的该函数返回的值都是相同的。) - - -core.rand2(num) -使用系统的随机数算法得到的随机数。该随机函数能被录像支持。 -num如果设置大于0,则生成一个[0, num-1]之间的数;否则生成一个0到2147483647之间的整数。 -此函数使用了系统的Math.random()函数,支持SL大法。 -但是,此函数会将生成的随机数值存入录像,因此如果调用次数太多则会导致录像文件过大。 -对于需要大量生成随机数,但又想使用真随机支持SL大法的(例如随机生成地图等),可以采用如下方式: - var x = core.rand2(100); for (var i = 0; i < x; i++) core.rand() -即先生成一个真随机数,根据该数来推进伪随机的种子,这样就可以放心调用core.rand()啦。 - - -core.readFile(success, error, accept) -读取一个本地文件内容。success和error分别为读取成功或失败的回调函数。 -accept如果设置则控制能选择的文件类型。 -iOS平台暂不支持读取文件操作。 - - -core.readFileContent(content) -读取到的文件内容。此函数会被APP等调用,来传递文件的具体内容。 - - -core.download(filename, content) -生成一个文件并下载。filename为文件名,content为具体的文件内容。 -iOS平台暂不支持下载文件操作。 - - -core.copy(data) -将一段内容拷贝到剪切板。 - - -core.myconfirm(hint, yesCallback, noCallback) -弹窗绘制一段提示信息并让用户确认。hint为提示信息。 -yesCallback和noCallback分别为确定和取消的回调函数。 -此函数和core.drawConfirmBox的区别主要在于: - - drawConfirmBox会清掉UI层原有的绘制信息,此函数不会清除。 - - drawConfirmBox可以用键盘进行操作,此函数必须用鼠标点击。 -另外请注意:本函数的选择也不会进录像,一般用于全局的提示。 -如果需要在事件流中调用请使用显示确认框或显示选择项。 - - -core.myprompt(hint, value, callback) -弹窗让用户输入一段内容。hint为提示信息,value为框内的默认填写内容。 -callback为用户点击确认或取消后的回调。 -如果用户点击了确认,则会把框内的内容(可能是空串)传递给callback,否则把null传递给callback。 - - -core.showWithAnimate(obj, speed, callback) / core.hideWithAnimate(obj, speed, callback) -动画淡入或淡出一个对象。 - - -core.same(a, b) -判定a和b是否相同,包括类型相同和值相同。 -如果a和b都是数组,则会递归依次比较数组中的值;如果都是对象亦然。 - - -core.utils.http(type, url, formData, success, error, mimeType, responseType) -发送一个异步HTTP请求。 -type为'GET'或者'POST';url为目标地址;formData如果是POST请求则为表单数据。 -success为成功后的回调,error为失败后的回调。 -mimeType和responseType如果设置将会覆盖默认值。 - - -lzw_encode(s) / lzw_decode(s) -LZW压缩算法,来自https://gist.github.com/revolunet/843889 -``` diff --git a/HTML5魔塔样板使用说明文档.url b/HTML5魔塔样板使用说明文档.url deleted file mode 100644 index 021c516b..00000000 --- a/HTML5魔塔样板使用说明文档.url +++ /dev/null @@ -1,5 +0,0 @@ -[{000214A0-0000-0000-C000-000000000046}] -Prop3=19,2 -[InternetShortcut] -IDList= -URL=https://h5mota.com/games/template/docs/ \ No newline at end of file diff --git a/README.md b/README.md index cf3d90bf..2cc6acfb 100644 --- a/README.md +++ b/README.md @@ -57,6 +57,25 @@ HTML5 canvas制作的魔塔样板,支持全平台游戏! ## 更新说明 +### 2020.6.7 HTML5魔塔样板V2.7 + +* [x] 大幅增强脚本编辑的自动补全和代码提示等功能 +* [x] 地图可以右键拉框批量复制剪切删除,额外素材可以拉框绘制区域 +* [x] 图片、音乐音效、动画的半自动注册,可以预览或试听 +* [x] 表格注释大幅精简,怪物特殊属性、图块出入方向、状态栏显示项等改为多选框 +* [x] 重构全局商店,支持任何事件类型 +* [x] 门信息、装备属性、难度分歧、楼层贴图、css等事件化 +* [x] 增加五图层插件,支持背景2层和前景2层 +* [x] 大量图片和几何图形事件支持翻转、旋转和预览 +* [x] 新增大量事件:勇士前进或撞击、事件转向、循环遍历,UI绘制等 +* [x] 选择项、确认框、等待用户操作等支持超时时间,可以制作QTE效果 +* [x] 事件编辑器支持更为强大的自动补全功能 +* [x] 初始化和读档对超高层的优化,现在能更好的支持超高层塔了 +* [x] 包括状态栏图标在内的大量素材进行更新 +* [x] 支持大地图浏览和选点 +* [x] 油漆桶和动态更改地图大小 +* [x] 大量细节优化,解决了许多历史遗留问题 + ### 2019.12.31 HTML5魔塔样板V2.6.6 * [x] 编辑器增加【最近使用的图块】的区域 diff --git a/_docs/api.md b/_docs/api.md index e8e7d48d..2a959dfe 100644 --- a/_docs/api.md +++ b/_docs/api.md @@ -395,6 +395,7 @@ debug: fn() moveOneStep: fn(callback?: fn()) 每移动一格后执行的事件 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 clearStatus: fn() 清除游戏状态和数据 @@ -483,6 +484,7 @@ moveHero: fn(direction?: string, callback?: fn()) 例如:core.moveHero(); // 连续前进 direction: 可选,如果设置了就会先转身到该方向 callback: 可选,如果设置了就只走一步 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 getRealStatusOrDefault: fn(status?: ?, name?: string) 从status中获得实际属性(增幅后的),如果不存在则从勇士属性中获取 @@ -523,7 +525,8 @@ clearStatusBar: fn() moveAction: fn(callback?: fn()) 尝试前进一步,如果面前不可被踏入就会直接触发该点事件 -请勿直接使用此函数,如有需要请使用「勇士前进一步或撞击」事件 +与「勇士前进一步或撞击」事件等价 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 hasFlag: fn(name: string) -> bool 判定一个flag变量是否存在且不为false、0、''、null、undefined和NaN @@ -954,6 +957,7 @@ unregisterSystemEvent: fn(type: string) trigger: fn(x?: number, y?: number, callback?: fn()) 触发(x,y)点的系统事件;会执行该点图块的script属性,同时支持战斗(会触发战后)、道具(会触发道具后)、楼层切换等等 callback: 执行完毕的回调函数 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 restart: fn() 重新开始游戏;此函数将回到标题页面 @@ -1072,6 +1076,7 @@ x: 门的横坐标 y: 门的纵坐标 needKey: true表示需要钥匙,会导致机关门打不开 callback: 门完全打开后或打不开时的回调函数,可选 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 setEnemy: fn(id: string, name: string, value: ?, prefix?: string) 设置一项敌人属性并计入存档 @@ -1104,6 +1109,7 @@ ex: 跳跃后的横坐标 ey: 跳跃后的纵坐标 time: 跳跃时长,单位为毫秒。不填视为半秒 callback: 跳跃完毕后的回调函数,可选 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 closeDoor: fn(x: number, y: number, id: string, callback?: fn()) 关门,目标点必须为空地 @@ -1112,6 +1118,7 @@ x: 横坐标 y: 纵坐标 id: 门的id,也可以用三种基础墙 callback: 门完全关上后的回调函数,可选 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 eventMoveHero: fn(steps: [step], time?: number, callback?: fn()) 强制移动主角(包括后退),这个函数的作者已经看不懂这个函数了 @@ -1119,6 +1126,7 @@ eventMoveHero: fn(steps: [step], time?: number, callback?: fn()) steps: 步伐数组,注意后退时跟随者的行为会很难看 time: 每步的用时,单位为毫秒。0或不填则取主角的移速,如果后者也不存在就取0.1秒 callback: 移动完毕后的回调函数,可选 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 changeFloor: fn(floorId: string, stair?: string, heroLoc?: {x?: number, y?: number, direction?: string}, time?: number, callback?: fn()) 场景切换 @@ -1128,6 +1136,7 @@ stair: 传送的位置 heroLoc: 传送的坐标;会覆盖stair time: 传送的黑屏时间,单位为毫秒;不填为用户设置值 callback: 传送的回调函数 +【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】 getCommonEvent: fn(name: string) -> [?] 获得一个公共事件 diff --git a/_docs/element.md b/_docs/element.md index d90b186b..fd400ed5 100644 --- a/_docs/element.md +++ b/_docs/element.md @@ -27,7 +27,7 @@ ## 图块属性(快捷键C) -![image](img/mapsC.jpg) +![image](img/mapsc.jpg) 如上图,除怪物和道具外,所有素材的图块属性都定义在`project\maps.js`中。道具和怪物属性也支持清空和批量复制,下面逐一讲解各条目的含义和用法: @@ -138,7 +138,7 @@ ## 楼层属性(快捷键V) -![image](img/floorsV.jpg) +![image](img/floorsv.jpg) 1. **楼层ID:**`project/floors`中的文件名,不允许使用中文也不能直接修改。修改方法见上图底部,修改后必须立即刷新浏览器页面。 2. **楼层名:**楼层在楼传、上下楼黑屏和浏览地图界面的名称。 @@ -199,7 +199,7 @@ 全塔属性共分为四部分:文件注册、初始勇士、全局数值、系统开关,您可以随时折叠其中任何一个部分。 -![image](img/firstDataB.jpg) +![image](img/firstdatab.jpg) ### 文件注册 @@ -281,7 +281,7 @@ ### 全局数值 -![image](img/values_flagsB.jpg) +![image](img/values_flagsb.jpg) 这个类型的数值会保存在core.values中,可以直接在游戏中修改。 diff --git a/_docs/event.md b/_docs/event.md index a1be436a..4098e86a 100644 --- a/_docs/event.md +++ b/_docs/event.md @@ -4,7 +4,7 @@ ## 事件编辑(地图选点,快捷键X) -![image](img/eventsX.jpg) +![image](img/eventsx.jpg) 样板所有的事件都是依靠“触发器”完成的。例如,勇士碰到(绑定好的)楼梯可以触发changeFloor,碰到门可以触发openDoor,碰到怪物可以触发battle,碰到道具可以触发getItem,碰到箱子可以触发pushBox,走上冰面(背景层)可以触发ski. @@ -40,7 +40,7 @@ ### 楼梯、传送门事件 -![image](img/changeFloor.jpg) +![image](img/changefloor.jpg) 当您在地图上绘制楼梯、或绘制四种三帧箭头并右击绑定后,就创建了一个“楼层转换”事件,您可以在事件编辑器右侧看到一行代码(json),请注意对照。 diff --git a/_docs/index.html b/_docs/index.html index 1c9733fd..69f7fb66 100644 --- a/_docs/index.html +++ b/_docs/index.html @@ -13,6 +13,8 @@ @@ -110,6 +113,7 @@ mergeNavbar: true, formatUpdated: '{YYYY}-{MM}-{DD} {HH}:{mm}:{ss}', plugins: [ + /* function(hook){ var renderScriptNode=function(str){ @@ -140,11 +144,14 @@ node.innerHTML=str }) } + */ ] } - + + + + diff --git a/_docs/instruction.md b/_docs/instruction.md index f047db5d..d002cd5c 100644 --- a/_docs/instruction.md +++ b/_docs/instruction.md @@ -34,7 +34,7 @@ data为整个指令对象,x和y为当前点坐标,prefix为独立开关的 ## 显示文字类(黄色) -![image](img/images_textY.jpg) +![image](img/images_texty.jpg) 这个类别的指令会负责UI层图文的处理,如图片的移动和淡入淡出,游戏的胜败和重启等。 @@ -153,7 +153,7 @@ QTE,即快速反应事件。一般表现为需要玩家在收到某信号后 为了方便地做出这种效果,样板提供了“全局商店”。 -![image](img/quickShops.jpg) +![image](img/quickshops.jpg) 在“全塔属性——全局商店”中可以编辑各个商店,商店一共有三种: @@ -189,7 +189,7 @@ QTE,即快速反应事件。一般表现为需要玩家在收到某信号后 ## 数据相关类(绿色) -![image](img/control_itemsG.jpg) +![image](img/control_itemsg.jpg) 这类的指令会设置各种数据(如怪物属性、楼层属性、全塔属性、六大可读写块),处理弹窗输入和开关全局商店,以及控制玩家最最关心的勇士的各种行为。 @@ -402,7 +402,7 @@ core.insertAction({"type": "changeFloor", "floorId": "MT" + core.rand2(20)}) ## 事件控制类(深蓝) -![image](img/flowCtrl.jpg) +![image](img/flowctrl.jpg) 在三个QTE指令中,我们已经初见了流程控制的端倪。只不过,它们的流程走向是由玩家的选择直接左右的。能否通过对值块的比较等操作自动走向不同的流程分支呢?答案是肯定的。 diff --git a/_server/CodeMirror/defs.js b/_server/CodeMirror/defs.js index 435fab3e..2c2448ad 100644 --- a/_server/CodeMirror/defs.js +++ b/_server/CodeMirror/defs.js @@ -2219,7 +2219,7 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!type": "fn()" }, "moveOneStep": { - "!doc": "每移动一格后执行的事件", + "!doc": "每移动一格后执行的事件
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(callback?: fn())" }, "clearStatus": { @@ -2315,7 +2315,7 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!type": "fn()" }, "moveHero": { - "!doc": "连续前进,不撞南墙不回头
例如:core.moveHero(); // 连续前进
direction: 可选,如果设置了就会先转身到该方向
callback: 可选,如果设置了就只走一步", + "!doc": "连续前进,不撞南墙不回头
例如:core.moveHero(); // 连续前进
direction: 可选,如果设置了就会先转身到该方向
callback: 可选,如果设置了就只走一步
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(direction?: string, callback?: fn())" }, "getRealStatusOrDefault": { @@ -2355,7 +2355,7 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!type": "fn()" }, "moveAction": { - "!doc": "尝试前进一步,如果面前不可被踏入就会直接触发该点事件
请勿直接使用此函数,如有需要请使用「勇士前进一步或撞击」事件", + "!doc": "尝试前进一步,如果面前不可被踏入就会直接触发该点事件
请勿直接使用此函数,如有需要请使用「勇士前进一步或撞击」事件
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(callback?: fn())" }, "hasFlag": { @@ -3775,7 +3775,7 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!type": "fn(type: string)" }, "trigger": { - "!doc": "触发(x,y)点的系统事件;会执行该点图块的script属性,同时支持战斗(会触发战后)、道具(会触发道具后)、楼层切换等等
callback: 执行完毕的回调函数", + "!doc": "触发(x,y)点的系统事件;会执行该点图块的script属性,同时支持战斗(会触发战后)、道具(会触发道具后)、楼层切换等等
callback: 执行完毕的回调函数
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(x?: number, y?: number, callback?: fn())" }, "restart": { @@ -3871,7 +3871,7 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!type": "fn(name: string, values: ?, floorId?: string, prefix?: string)" }, "openDoor": { - "!doc": "开门(包括三种基础墙)
例如:core.openDoor(0, 0, true, core.jumpHero); // 打开左上角的门,需要钥匙,然后主角原地跳跃半秒
x: 门的横坐标
y: 门的纵坐标
needKey: true表示需要钥匙,会导致机关门打不开
callback: 门完全打开后或打不开时的回调函数,可选", + "!doc": "开门(包括三种基础墙)
例如:core.openDoor(0, 0, true, core.jumpHero); // 打开左上角的门,需要钥匙,然后主角原地跳跃半秒
x: 门的横坐标
y: 门的纵坐标
needKey: true表示需要钥匙,会导致机关门打不开
callback: 门完全打开后或打不开时的回调函数,可选
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(x: number, y: number, needKey?: bool, callback?: fn())" }, "setEnemy": { @@ -3895,19 +3895,19 @@ var terndefs_f6783a0a_522d_417e_8407_94c67b692e50 = [ "!type": "fn(type: string)" }, "jumpHero": { - "!doc": "主角跳跃,跳跃勇士。ex和ey为目标点的坐标,可以为null表示原地跳跃。time为总跳跃时间。
例如:core.jumpHero(); // 主角原地跳跃半秒
ex: 跳跃后的横坐标
ey: 跳跃后的纵坐标
time: 跳跃时长,单位为毫秒。不填视为半秒
callback: 跳跃完毕后的回调函数,可选", + "!doc": "主角跳跃,跳跃勇士。ex和ey为目标点的坐标,可以为null表示原地跳跃。time为总跳跃时间。
例如:core.jumpHero(); // 主角原地跳跃半秒
ex: 跳跃后的横坐标
ey: 跳跃后的纵坐标
time: 跳跃时长,单位为毫秒。不填视为半秒
callback: 跳跃完毕后的回调函数,可选
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(ex?: number, ey?: number, time?: number, callback?: fn())" }, "closeDoor": { - "!doc": "关门,目标点必须为空地
例如:core.closeDoor(0, 0, 'yellowWall', core.jumpHero); // 在左上角关掉一堵黄墙,然后主角原地跳跃半秒
x: 横坐标
y: 纵坐标
id: 门的id,也可以用三种基础墙
callback: 门完全关上后的回调函数,可选", + "!doc": "关门,目标点必须为空地
例如:core.closeDoor(0, 0, 'yellowWall', core.jumpHero); // 在左上角关掉一堵黄墙,然后主角原地跳跃半秒
x: 横坐标
y: 纵坐标
id: 门的id,也可以用三种基础墙
callback: 门完全关上后的回调函数,可选
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(x: number, y: number, id: string, callback?: fn())" }, "eventMoveHero": { - "!doc": "强制移动主角(包括后退),这个函数的作者已经看不懂这个函数了
例如:core.eventMoveHero(['forward'], 125, core.jumpHero); // 主角强制前进一步,用时1/8秒,然后主角原地跳跃半秒
steps: 步伐数组,注意后退时跟随者的行为会很难看
time: 每步的用时,单位为毫秒。0或不填则取主角的移速,如果后者也不存在就取0.1秒
callback: 移动完毕后的回调函数,可选", + "!doc": "强制移动主角(包括后退),这个函数的作者已经看不懂这个函数了
例如:core.eventMoveHero(['forward'], 125, core.jumpHero); // 主角强制前进一步,用时1/8秒,然后主角原地跳跃半秒
steps: 步伐数组,注意后退时跟随者的行为会很难看
time: 每步的用时,单位为毫秒。0或不填则取主角的移速,如果后者也不存在就取0.1秒
callback: 移动完毕后的回调函数,可选
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(steps: [step], time?: number, callback?: fn())" }, "changeFloor": { - "!doc": "场景切换
例如:core.changeFloor('MT0'); // 传送到主塔0层,主角坐标和朝向不变,黑屏时间取用户定义的值
floorId: 传送的目标地图id,可以填':before'和':after'分别表示楼下或楼上
stair: 传送的位置
heroLoc: 传送的坐标;会覆盖stair
time: 传送的黑屏时间,单位为毫秒;不填为用户设置值
callback: 传送的回调函数", + "!doc": "场景切换
例如:core.changeFloor('MT0'); // 传送到主塔0层,主角坐标和朝向不变,黑屏时间取用户定义的值
floorId: 传送的目标地图id,可以填':before'和':after'分别表示楼下或楼上
stair: 传送的位置
heroLoc: 传送的坐标;会覆盖stair
time: 传送的黑屏时间,单位为毫秒;不填为用户设置值
callback: 传送的回调函数
【异步脚本,请勿在脚本中直接调用(而是使用对应的事件),否则可能导致录像出错】", "!type": "fn(floorId: string, stair?: string, heroLoc?: {x?: number, y?: number, direction?: string}, time?: number, callback?: fn())" }, "getCommonEvent": { diff --git a/_server/MotaAction.g4 b/_server/MotaAction.g4 index dba4e924..e265e406 100644 --- a/_server/MotaAction.g4 +++ b/_server/MotaAction.g4 @@ -35,7 +35,7 @@ event_m /* event_m tooltip : 编辑魔塔的事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction default : [false,null,null,null,null] B_0_List_0=eval(B_0_List_0); var code = { @@ -58,7 +58,7 @@ autoEvent_m /* autoEvent_m tooltip : 自动事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction default : ["flag:__door__===2",0,true,false,false,null] var code = { "condition": EvalString_0, // 条件不可为null @@ -79,7 +79,7 @@ level_m /* level_m tooltip : 升级事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e7%bb%8f%e9%aa%8c%e5%8d%87%e7%ba%a7%ef%bc%88%e8%bf%9b%e9%98%b6%2f%e5%a2%83%e7%95%8c%e5%a1%94%ef%bc%89 +helpUrl : /_docs/#/instruction var code = '[\n'+levelCase_0+']\n'; return code; */; @@ -90,7 +90,7 @@ levelCase /* levelCase tooltip : 升级设定 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e7%bb%8f%e9%aa%8c%e5%8d%87%e7%ba%a7%ef%bc%88%e8%bf%9b%e9%98%b6%2f%e5%a2%83%e7%95%8c%e5%a1%94%ef%bc%89 +helpUrl : /_docs/#/instruction default : [0,"",false,null] colour : this.subColor Bool_0 = Bool_0?', "clear": true':''; @@ -104,7 +104,7 @@ shop_m /* shop_m tooltip : 全局商店列表 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97 +helpUrl : /_docs/#/instruction var code = '['+shoplist_0+']\n'; return code; */; @@ -131,7 +131,7 @@ shopsub /* shopsub tooltip : 全局商店 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97 +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_1 allIds : ['IdString_1'] default : ["shop1","贪婪之神","moneyShop","勇敢的武士啊, 给我${20+2*flag:shop1}金币就可以:","金币商店",false,false] @@ -160,8 +160,8 @@ shopChoices /* shopChoices -tooltip : 商店选项,商店消耗是-1时,这里的消耗对应各自选项的消耗,商店消耗不是-1时这里的消耗不填 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97 +tooltip : 商店选项 +helpUrl : /_docs/#/instruction default : ["攻击+1","status:money>=20+2*flag:shop1","","","rgba(255,255,255,1)",""] allIds : ['IdString_0'] colour : this.subColor @@ -178,7 +178,7 @@ shopitem /* shopitem tooltip : 道具商店 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97 +helpUrl : /_docs/#/instruction default : ["itemShop","道具商店",false] var code = { 'id': IdString_0, @@ -198,7 +198,7 @@ shopItemChoices /* shopItemChoices tooltip : 道具商店选项,每一项是道具名;买入或卖出可以不填表示只能卖出或买入 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e5%85%a8%e5%b1%80%e5%95%86%e5%ba%97 +helpUrl : /_docs/#/instruction default : ["yellowKey","","10","",""] colour : this.subColor IntString_0 = IntString_0 ? (', "number": '+IntString_0) : ''; @@ -215,7 +215,7 @@ shopcommonevent /* shopcommonevent tooltip : 全局商店, 执行一个公共事件 -helpUrl : https://h5mota.com/games/template/_docs/#/ +helpUrl : /_docs/#/instruction default : ["shop1","回收钥匙商店",false,"回收钥匙商店",""] if (JsonEvalString_0) { if (!(JSON.parse(JsonEvalString_0) instanceof Array)) @@ -238,8 +238,8 @@ afterBattle_m /* afterBattle_m -tooltip : 系统引发的自定义事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e7%b3%bb%e7%bb%9f%e5%bc%95%e5%8f%91%e7%9a%84%e8%87%aa%e5%ae%9a%e4%b9%89%e4%ba%8b%e4%bb%b6 +tooltip : 系统引发的战后 +helpUrl : /_docs/#/instruction var code = '[\n'+action_0+']\n'; return code; */; @@ -250,8 +250,8 @@ afterGetItem_m /* afterGetItem_m -tooltip : 系统引发的自定义事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e7%b3%bb%e7%bb%9f%e5%bc%95%e5%8f%91%e7%9a%84%e8%87%aa%e5%ae%9a%e4%b9%89%e4%ba%8b%e4%bb%b6 +tooltip : 系统引发的道具后事件 +helpUrl : /_docs/#/instruction if (Bool_0) { return '{"disableOnGentleClick": true, "data": [\n'+action_0+']\n}'; } else { @@ -266,7 +266,7 @@ afterOpenDoor_m /* afterOpenDoor_m tooltip : 系统引发的自定义事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e7%b3%bb%e7%bb%9f%e5%bc%95%e5%8f%91%e7%9a%84%e8%87%aa%e5%ae%9a%e4%b9%89%e4%ba%8b%e4%bb%b6 +helpUrl : /_docs/#/instruction var code = '[\n'+action_0+']\n'; return code; */; @@ -278,7 +278,7 @@ firstArrive_m /* firstArrive_m tooltip : 首次到达楼层 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e7%b3%bb%e7%bb%9f%e5%bc%95%e5%8f%91%e7%9a%84%e8%87%aa%e5%ae%9a%e4%b9%89%e4%ba%8b%e4%bb%b6 +helpUrl : /_docs/#/instruction var code = '[\n'+action_0+']\n'; return code; */; @@ -290,7 +290,7 @@ eachArrive_m /* eachArrive_m tooltip : 每次到达楼层 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=%e7%b3%bb%e7%bb%9f%e5%bc%95%e5%8f%91%e7%9a%84%e8%87%aa%e5%ae%9a%e4%b9%89%e4%ba%8b%e4%bb%b6 +helpUrl : /_docs/#/instruction var code = '[\n'+action_0+']\n'; return code; */; @@ -302,7 +302,7 @@ changeFloor_m /* changeFloor_m tooltip : 楼梯, 传送门, 如果目标楼层有多个楼梯, 写upFloor或downFloor可能会导致到达的楼梯不确定, 这时候请使用loc方式来指定具体的点位置 -helpUrl : https://h5mota.com/games/template/_docs/#/element?id=%e8%b7%af%e9%9a%9c%ef%bc%8c%e6%a5%bc%e6%a2%af%ef%bc%8c%e4%bc%a0%e9%80%81%e9%97%a8 +helpUrl : /_docs/#/instruction default : [null,"MTx",null,"","",null,"",null] selectPoint : ["PosString_0", "PosString_1", "IdString_0", true] allFloorIds : ['IdString_0'] @@ -333,7 +333,7 @@ commonEvent_m /* commonEvent_m tooltip : 公共事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction var code = '[\n'+action_0+']\n'; return code; */; @@ -345,7 +345,7 @@ item_m /* item_m tooltip : 使用道具事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction var code = '[\n'+action_0+']\n'; return code; */; @@ -357,7 +357,7 @@ levelChoose_m /* levelChoose_m tooltip : 难度分歧 -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction var code = '[\n'+levelChooseList_0+']\n'; return code; */; @@ -379,7 +379,7 @@ levelChooseChoice /* levelChooseChoice tooltip : 难度分歧项 -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction default : ['简单','Easy',1,''] ColorString_0 = ColorString_0 ? (', "color": [' + ColorString_0 + ']') : ''; var code = '{"title": "'+EvalString_0+'", "name": "'+EvalString_1+'", "hard": '+Int_0+ColorString_0+', "action": [\n'+action_0+']},\n'; @@ -394,7 +394,7 @@ equip_m /* equip_m tooltip : 装备 default : ['0', ''] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction allAnimates : ['IdString_0'] if (!/^\d+$/.test(EvalString_0)) { EvalString_0 = '"' + EvalString_0 + '"'; @@ -417,7 +417,7 @@ equipKnown /* equipKnown tooltip : 装备项 default : ['atk', 10] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction return '"'+Equip_List_0+'": '+Number_0+', '; */; @@ -428,7 +428,7 @@ equipUnknown /* equipUnknown tooltip : 装备项 default : ['speed', 10] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction return '"'+EvalString_0+'": '+Number_0+', '; */; @@ -447,7 +447,7 @@ floorImage_m /* floorImage_m tooltip : 楼层贴图 -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction var code = '[\n'+floorImageList_0+']\n'; return code; */; @@ -464,7 +464,7 @@ floorOneImage /* floorOneImage tooltip : 楼层贴图 default : ["bg.jpg","null","bg",0,0,false,"","","","",""] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction allImages : ['EvalString_0'] previewBlock : true if (Reverse_List_0 && Reverse_List_0 != 'null') { @@ -496,7 +496,7 @@ doorInfo_m /* doorInfo_m tooltip : 开门信息 default : [160, 'door.mp3', 'door.mp3'] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction EvalString_0 = EvalString_0 && (', "openSound": "' + EvalString_0 + '"'); EvalString_1 = EvalString_1 && (', "closeSound": "' + EvalString_1 + '"'); var code = '{"time": '+Int_0+EvalString_0+EvalString_1+', "keys": {\n'+doorKeyList_0+'\n}}'; @@ -514,9 +514,9 @@ doorKeyKnown /* doorKeyKnown -tooltip : 需要钥匙 +tooltip : 开门需要钥匙 default : ['yellowKey', 1, false] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction if (Bool_0) Key_List_0 += ':o'; return '"'+Key_List_0+'": '+Int_0+', '; */; @@ -526,9 +526,9 @@ doorKeyUnknown /* doorKeyUnknown -tooltip : 需要钥匙 +tooltip : 开门需要钥匙 default : ['orangeKey', 1, false] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction allItems : ['IdString_0'] if (Bool_0) IdString_0 += ':o'; return '"'+IdString_0+'": '+Int_0+', '; @@ -552,7 +552,7 @@ faceIds_m tooltip : 行走图朝向 default : ["","","",""] allIds : ['IdString_0','IdString_1','IdString_2','IdString_3'] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction return '{' + [ IdString_0 && ('"up": "' + IdString_0 +'"'), IdString_1 && ('"down": "' + IdString_1 +'"'), @@ -576,7 +576,7 @@ mainStyle_m /* mainStyle_m tooltip : 主要样式设置 default : ["project/images/bg.jpg", "project/images/bg.jpg", "color: black", "background-color: #32369F; opacity: 0.85; color: #FFFFFF; border: #FFFFFF 2px solid; caret-color: #FFD700;", "url(project/materials/ground.png) repeat", "url(project/materials/ground.png) repeat", "url(project/materials/ground.png) repeat", "background-color: black; color: white", "255,255,255,1", "rgba(255,255,255,1)", "204,204,204,1", "rgba(204,204,204,1)", "Verdana"] -helpUrl : https://h5mota.com/games/template/_docs/#/event +helpUrl : /_docs/#/instruction var code = { startBackground: EvalString_0, startVerticalBackground: EvalString_1, @@ -725,7 +725,7 @@ text_0_s /* text_0_s tooltip : text:显示一段文字(剧情) -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=text%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%96%87%E5%AD%97%EF%BC%88%E5%89%A7%E6%83%85%EF%BC%89 +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_0 default : ["欢迎使用事件编辑器(双击方块进入多行编辑)"] var code = '"'+EvalString_0+'",\n'; @@ -738,7 +738,7 @@ text_1_s /* text_1_s tooltip : text:显示一段文字(剧情),选项较多请右键点击帮助 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=text%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%96%87%E5%AD%97%EF%BC%88%E5%89%A7%E6%83%85%EF%BC%89 +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_3 allIds : ['EvalString_1'] default : ["小妖精","fairy","","欢迎使用事件编辑器(双击方块进入多行编辑)"] @@ -764,7 +764,7 @@ text_2_s /* text_2_s tooltip : text:显示一段文字(剧情),选项较多请右键点击帮助 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=text%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%96%87%E5%AD%97%EF%BC%88%E5%89%A7%E6%83%85%EF%BC%89 +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_3 allIds : ['EvalString_1'] default : ["小妖精","fairy","","欢迎使用事件编辑器(双击方块进入多行编辑)",null] @@ -795,7 +795,7 @@ textDrawing /* textDrawing tooltip : 立绘 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction default : ["fairy.png","null","0","0","","","","","","","",""] colour : this.subColor previewBlock : true @@ -843,7 +843,7 @@ comment_s /* comment_s tooltip : comment:添加一段会被游戏跳过的注释内容 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=comment%ef%bc%9a%e6%b7%bb%e5%8a%a0%e6%b3%a8%e9%87%8a +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_0 default : ["可以在这里写添加任何注释内容"] colour : this.commentColor @@ -857,7 +857,7 @@ autoText_s /* autoText_s tooltip : autoText:自动剧情文本,用户无法跳过自动剧情文本,大段剧情文本请添加“是否跳过剧情”的提示 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=autotext%EF%BC%9A%E8%87%AA%E5%8A%A8%E5%89%A7%E6%83%85%E6%96%87%E6%9C%AC +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_2 allIds : ['EvalString_1'] default : ["小妖精","fairy","",3000,"用户无法跳过自动剧情文本,大段剧情文本请添加“是否跳过剧情”的提示"] @@ -883,7 +883,7 @@ scrollText_s /* scrollText_s tooltip : scrollText:滚动剧情文本,将从下到上进行滚动显示。 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=scrollText%ef%bc%9a%e6%bb%9a%e5%8a%a8%e5%89%a7%e6%83%85%e6%96%87%e6%9c%ac +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_0 default : [5000,1.4,false,"时间是总时间,可以使用setText事件来控制字体、颜色、大小、偏移量等"] Bool_0 = Bool_0?', "async": true':''; @@ -897,7 +897,7 @@ setText_s /* setText_s tooltip : setText:设置剧情文本的属性,颜色为RGB三元组或RGBA四元组,打字间隔为剧情文字添加的时间间隔,为整数或不填,字符间距为字符之间的距离,为整数或不填。 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=settext%EF%BC%9A%E8%AE%BE%E7%BD%AE%E5%89%A7%E6%83%85%E6%96%87%E6%9C%AC%E7%9A%84%E5%B1%9E%E6%80%A7 +helpUrl : /_docs/#/instruction default : [null,"",null,"",'rgba(255,255,255,1)',"",'rgba(255,255,255,1)',"",'rgba(255,255,255,1)',null,"","","","",""] SetTextPosition_List_0 =SetTextPosition_List_0==='null'?'': ', "position": "'+SetTextPosition_List_0+'"'; TextAlign_List_0 = TextAlign_List_0==='null'?'': ', "align": "'+TextAlign_List_0+'"'; @@ -932,7 +932,7 @@ tip_s /* tip_s tooltip : tip:显示一段提示文字 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=tip%EF%BC%9A%E6%98%BE%E7%A4%BA%E4%B8%80%E6%AE%B5%E6%8F%90%E7%A4%BA%E6%96%87%E5%AD%97 +helpUrl : /_docs/#/instruction allIds : ['IdString_0'] default : ["这段话将在左上角以气泡形式显示",""] IdString_0 = IdString_0 && (', "icon": "' + IdString_0 + '"'); @@ -946,7 +946,7 @@ setValue_s /* setValue_s tooltip : setValue:设置勇士的某个属性、道具个数, 或某个变量/Flag的值 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setvalue%EF%BC%9A%E8%AE%BE%E7%BD%AE%E5%8B%87%E5%A3%AB%E7%9A%84%E6%9F%90%E4%B8%AA%E5%B1%9E%E6%80%A7%E3%80%81%E9%81%93%E5%85%B7%E4%B8%AA%E6%95%B0%EF%BC%8C%E6%88%96%E6%9F%90%E4%B8%AA%E5%8F%98%E9%87%8Fflag%E7%9A%84%E5%80%BC +helpUrl : /_docs/#/instruction default : ["","","",false] colour : this.dataColor if (AssignOperator_List_0 && AssignOperator_List_0 != '=') { @@ -964,7 +964,7 @@ setEnemy_s /* setEnemy_s tooltip : setEnemy:设置某个怪物的属性 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setEnemy%ef%bc%9a%e5%a2%9e%e5%87%8f%e5%8b%87%e5%a3%ab%e7%9a%84%e6%9f%90%e4%b8%aa%e5%b1%9e%e6%80%a7%e3%80%81%e9%81%93%e5%85%b7%e4%b8%aa%e6%95%b0%ef%bc%8c%e6%88%96%e6%9f%90%e4%b8%aa%e5%8f%98%e9%87%8f%2fFlag%e7%9a%84%e5%80%bc +helpUrl : /_docs/#/instruction default : ["greenSlime", "atk", "0"] allEnemys : ['IdString_0'] colour : this.dataColor @@ -979,7 +979,7 @@ setFloor_s /* setFloor_s tooltip : setFloor:设置楼层属性;该楼层属性和编辑器中的楼层属性一一对应 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setFloor%ef%bc%9a%e8%ae%be%e7%bd%ae%e6%a5%bc%e5%b1%82%e5%b1%9e%e6%80%a7 +helpUrl : /_docs/#/instruction default : ["title","","\"新楼层名\""] allFloorIds : ['IdString_0'] colour : this.dataColor @@ -995,7 +995,7 @@ setGlobalAttribute_s /* setGlobalAttribute_s tooltip : setGlobalAttribute:设置全局属性 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setGlobalAttribute%ef%bc%9a%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%85%a8%e5%b1%80%e5%b1%9e%e6%80%a7 +helpUrl : /_docs/#/instruction default : ["font","Verdana"] colour : this.dataColor var code = '{"type": "setGlobalAttribute", "name": "'+Global_Attribute_List_0+'", "value": "'+EvalString_0+'"},\n'; @@ -1009,7 +1009,7 @@ setGlobalValue_s /* setGlobalValue_s tooltip : setGlobalValue:设置全局属性 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setGlobalValue%ef%bc%9a%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e5%85%a8%e5%b1%80%e6%95%b0%e5%80%bc +helpUrl : /_docs/#/instruction default : ["lavaDamage","100"] colour : this.dataColor var code = '{"type": "setGlobalValue", "name": "'+Global_Value_List_0+'", "value": '+EvalString_0+'},\n'; @@ -1023,7 +1023,7 @@ setGlobalFlag_s /* setGlobalFlag_s tooltip : setGlobalFlag:设置系统开关 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setGlobalFlag%ef%bc%9a%e8%ae%be%e7%bd%ae%e4%b8%80%e4%b8%aa%e7%b3%bb%e7%bb%9f%e5%bc%80%e5%85%b3 +helpUrl : /_docs/#/instruction default : ["s:enableFloor","true"] colour : this.dataColor var code = '{"type": "setGlobalFlag", "name": "'+Global_Flag_List_0+'", "value": '+Bool_0+'},\n'; @@ -1037,7 +1037,7 @@ show_s /* show_s tooltip : show: 将禁用事件启用,楼层和动画时间可不填,xy可用逗号分隔表示多个点 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=show%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E7%A6%81%E7%94%A8%E4%BA%8B%E4%BB%B6%E5%90%AF%E7%94%A8 +helpUrl : /_docs/#/instruction default : ["","","","",false] selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] allFloorIds : ['IdString_0'] @@ -1072,7 +1072,7 @@ hide_s /* hide_s tooltip : hide: 隐藏事件,同时可删除 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hide%EF%BC%9A%E5%B0%86%E4%B8%80%E4%B8%AA%E5%90%AF%E7%94%A8%E4%BA%8B%E4%BB%B6%E7%A6%81%E7%94%A8 +helpUrl : /_docs/#/instruction default : ["","","",true,"",false] selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] allFloorIds : ['IdString_0'] @@ -1108,7 +1108,7 @@ trigger_s /* trigger_s tooltip : trigger: 立即触发另一个地点的事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=trigger%EF%BC%9A%E7%AB%8B%E5%8D%B3%E8%A7%A6%E5%8F%91%E5%8F%A6%E4%B8%80%E4%B8%AA%E5%9C%B0%E7%82%B9%E7%9A%84%E4%BA%8B%E4%BB%B6 +helpUrl : /_docs/#/instruction default : ["",""] selectPoint : ["PosString_0", "PosString_1"] colour : this.eventColor @@ -1126,7 +1126,7 @@ insert_1_s /* insert_1_s tooltip : insert: 插入公共事件并执行 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=insert%ef%bc%9a%e6%8f%92%e5%85%a5%e5%85%ac%e5%85%b1%e4%ba%8b%e4%bb%b6%e6%88%96%e5%8f%a6%e4%b8%80%e4%b8%aa%e5%9c%b0%e7%82%b9%e7%9a%84%e4%ba%8b%e4%bb%b6%e5%b9%b6%e6%89%a7%e8%a1%8c +helpUrl : /_docs/#/instruction default : ["加点事件", ""] colour : this.eventColor if (JsonEvalString_0) { @@ -1144,7 +1144,7 @@ insert_2_s /* insert_2_s tooltip : insert: 立即插入另一个地点的事件执行,当前事件不会中断,事件坐标不会改变 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=insert%ef%bc%9a%e6%8f%92%e5%85%a5%e5%85%ac%e5%85%b1%e4%ba%8b%e4%bb%b6%e6%88%96%e5%8f%a6%e4%b8%80%e4%b8%aa%e5%9c%b0%e7%82%b9%e7%9a%84%e4%ba%8b%e4%bb%b6%e5%b9%b6%e6%89%a7%e8%a1%8c +helpUrl : /_docs/#/instruction default : ["0","0",null,"",""] colour : this.eventColor allFloorIds : ['IdString_0'] @@ -1172,7 +1172,7 @@ exit_s /* exit_s tooltip : exit: 立刻结束当前事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=exit%EF%BC%9A%E7%AB%8B%E5%88%BB%E7%BB%93%E6%9D%9F%E5%BD%93%E5%89%8D%E4%BA%8B%E4%BB%B6 +helpUrl : /_docs/#/instruction colour : this.eventColor var code = '{"type": "exit"},\n'; return code; @@ -1184,7 +1184,7 @@ setBlock_s /* setBlock_s tooltip : setBlock:设置某个图块,忽略坐标楼层则为当前事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 +helpUrl : /_docs/#/instruction colour : this.mapColor allFloorIds : ['IdString_0'] allIds : ['EvalString_0'] @@ -1220,7 +1220,7 @@ turnBlock_s /* turnBlock_s tooltip : turnBlock:事件转向;自动检索faceIds -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 +helpUrl : /_docs/#/instruction colour : this.mapColor allFloorIds : ['IdString_0'] default : [null,"","",""] @@ -1255,7 +1255,7 @@ showFloorImg_s /* showFloorImg_s tooltip : showFloorImg: 显示一个贴图,xy为左上角坐标,可用逗号分隔表示多个点 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showFloorImg%ef%bc%9a%e6%98%be%e7%a4%ba%e8%b4%b4%e5%9b%be +helpUrl : /_docs/#/instruction default : ["","",""] allFloorIds : ['IdString_0'] colour : this.mapColor @@ -1287,7 +1287,7 @@ hideFloorImg_s /* hideFloorImg_s tooltip : hideFloorImg: 隐藏一个贴图,xy为左上角坐标,可用逗号分隔表示多个点 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideFloorImg%ef%bc%9a%e9%9a%90%e8%97%8f%e8%b4%b4%e5%9b%be +helpUrl : /_docs/#/instruction default : ["","",""] allFloorIds : ['IdString_0'] colour : this.mapColor @@ -1319,7 +1319,7 @@ showBgFgMap_s /* showBgFgMap_s tooltip : showBgFgMap: 显示图层块,即背景图层/前景图层的某些图块,xy为左上角坐标,可用逗号分隔表示多个点 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showFloorImg%ef%bc%9a%e6%98%be%e7%a4%ba%e8%b4%b4%e5%9b%be +helpUrl : /_docs/#/instruction default : ["bg","","",""] selectPoint : ["EvalString_0", "EvalString_1", "IdString_0"] allFloorIds : ['IdString_0'] @@ -1352,7 +1352,7 @@ hideBgFgMap_s /* hideBgFgMap_s tooltip : hideBgFgMap: 隐藏图层块,即背景图层/前景图层的某些图块,xy为左上角坐标,可用逗号分隔表示多个点 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideFloorImg%ef%bc%9a%e9%9a%90%e8%97%8f%e8%b4%b4%e5%9b%be +helpUrl : /_docs/#/instruction default : ["bg","","",""] allFloorIds : ['IdString_0'] colour : this.mapColor @@ -1385,7 +1385,7 @@ setBgFgBlock_s /* setBgFgBlock_s tooltip : setBgFgBlock:设置某个图层块,忽略坐标楼层则为当前点 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setblock%EF%BC%9A%E8%AE%BE%E7%BD%AE%E6%9F%90%E4%B8%AA%E5%9B%BE%E5%9D%97 +helpUrl : /_docs/#/instruction colour : this.mapColor selectPoint : ["EvalString_1", "EvalString_2", "IdString_0"] allIds : ['EvalString_0'] @@ -1419,7 +1419,7 @@ setHeroIcon_s /* setHeroIcon_s tooltip : setHeroIcon:更改角色行走图 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setheroicon%EF%BC%9A%E6%9B%B4%E6%94%B9%E8%A7%92%E8%89%B2%E8%A1%8C%E8%B5%B0%E5%9B%BE +helpUrl : /_docs/#/instruction colour : this.dataColor default : ["hero.png", false] allImages : ['EvalString_0'] @@ -1436,7 +1436,7 @@ update_s /* update_s tooltip : update: 立刻更新状态栏和地图显伤 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=update%EF%BC%9A%E7%AB%8B%E5%88%BB%E6%9B%B4%E6%96%B0%E7%8A%B6%E6%80%81%E6%A0%8F%E5%92%8C%E5%9C%B0%E5%9B%BE%E6%98%BE%E4%BC%A4 +helpUrl : /_docs/#/instruction default : [false] colour : this.dataColor Bool_0 = Bool_0 ? (', "doNotCheckAutoEvents": true') : '' @@ -1450,7 +1450,7 @@ showStatusBar_s /* showStatusBar_s tooltip : showStatusBar: 显示状态栏 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showStatusBar%ef%bc%9a%e6%98%be%e7%a4%ba%e7%8a%b6%e6%80%81%e6%a0%8f +helpUrl : /_docs/#/instruction colour : this.soundColor var code = '{"type": "showStatusBar"},\n'; return code; @@ -1462,7 +1462,7 @@ hideStatusBar_s /* hideStatusBar_s tooltip : hideStatusBar: 隐藏状态栏 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideStatusBar%ef%bc%9a%e9%9a%90%e8%97%8f%e7%8a%b6%e6%80%81%e6%a0%8f +helpUrl : /_docs/#/instruction colour : this.soundColor default : [false] Bool_0 = Bool_0?', "toolbox": true':''; @@ -1476,7 +1476,7 @@ showHero_s /* showHero_s tooltip : showHero: 显示勇士 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showHero%3a+%e6%98%be%e7%a4%ba%e5%8b%87%e5%a3%ab +helpUrl : /_docs/#/instruction default : ['',false] colour : this.soundColor IntString_0 = IntString_0 && (', "time": ' + IntString_0); @@ -1491,7 +1491,7 @@ hideHero_s /* hideHero_s tooltip : hideHero: 隐藏勇士 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideHero%ef%bc%9a%e9%9a%90%e8%97%8f%e5%8b%87%e5%a3%ab +helpUrl : /_docs/#/instruction default : ['',false] colour : this.soundColor IntString_0 = IntString_0 && (', "time": ' + IntString_0); @@ -1506,7 +1506,7 @@ sleep_s /* sleep_s tooltip : sleep: 等待多少毫秒 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=sleep%EF%BC%9A%E7%AD%89%E5%BE%85%E5%A4%9A%E5%B0%91%E6%AF%AB%E7%A7%92 +helpUrl : /_docs/#/instruction default : [500, false] colour : this.soundColor Bool_0 = Bool_0?', "noSkip": true':''; @@ -1521,7 +1521,7 @@ battle_s /* battle_s tooltip : battle: 强制战斗 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=battle%EF%BC%9A%E5%BC%BA%E5%88%B6%E6%88%98%E6%96%97 +helpUrl : /_docs/#/instruction default : ["greenSlime"] allEnemys : ['IdString_0'] colour : this.dataColor @@ -1536,7 +1536,7 @@ battle_1_s /* battle_1_s tooltip : battle: 强制战斗 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=battle%EF%BC%9A%E5%BC%BA%E5%88%B6%E6%88%98%E6%96%97 +helpUrl : /_docs/#/instruction default : ["","",""] selectPoint : ["PosString_0", "PosString_1"] colour : this.mapColor @@ -1554,7 +1554,7 @@ openDoor_s /* openDoor_s tooltip : openDoor: 开门,楼层可不填表示当前层 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=opendoor%EF%BC%9A%E5%BC%80%E9%97%A8 +helpUrl : /_docs/#/instruction default : ["","","",false,false] selectPoint : ["PosString_0", "PosString_1", "IdString_0"] allFloorIds : ['IdString_0'] @@ -1576,7 +1576,7 @@ closeDoor_s /* closeDoor_s tooltip : closeDoor: 关门事件,需要该点本身无事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=opendoor%EF%BC%9A%E5%BC%80%E9%97%A8 +helpUrl : /_docs/#/instruction default : ["","","yellowDoor",false] selectPoint : ["PosString_0", "PosString_1"] allDoors : ['IdString_0'] @@ -1596,7 +1596,7 @@ changeFloor_s /* changeFloor_s tooltip : changeFloor: 楼层切换,动画时间可不填 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=changefloor%EF%BC%9A%E6%A5%BC%E5%B1%82%E5%88%87%E6%8D%A2 +helpUrl : /_docs/#/instruction default : [null,"",null,"","",null,"",null] selectPoint : ["PosString_0", "PosString_1", "IdString_0", true] allFloorIds : ['IdString_0'] @@ -1623,7 +1623,7 @@ changePos_s /* changePos_s tooltip : changePos: 当前位置切换 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=changepos%EF%BC%9A%E5%BD%93%E5%89%8D%E4%BD%8D%E7%BD%AE%E5%88%87%E6%8D%A2%E5%8B%87%E5%A3%AB%E8%BD%AC%E5%90%91 +helpUrl : /_docs/#/instruction default : ["","",null] selectPoint : ["PosString_0", "PosString_1"] colour : this.dataColor @@ -1640,7 +1640,7 @@ useItem_s /* useItem_s tooltip : useItem: 使用道具 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=useItem%ef%bc%9a%e4%bd%bf%e7%94%a8%e9%81%93%e5%85%b7 +helpUrl : /_docs/#/instruction colour : this.dataColor allItems : ['IdString_0'] default : ["pickaxe"] @@ -1654,7 +1654,7 @@ loadEquip_s /* loadEquip_s tooltip : loadEquip: 装上装备 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=useItem%ef%bc%9a%e4%bd%bf%e7%94%a8%e9%81%93%e5%85%b7 +helpUrl : /_docs/#/instruction colour : this.dataColor default : ["sword1"] allItems : ['IdString_0'] @@ -1668,7 +1668,7 @@ unloadEquip_s /* unloadEquip_s tooltip : unloadEquip: 卸下装备 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=useItem%ef%bc%9a%e4%bd%bf%e7%94%a8%e9%81%93%e5%85%b7 +helpUrl : /_docs/#/instruction colour : this.dataColor default : [0] var code = '{"type": "unloadEquip", "pos": '+Int_0+'},\n'; @@ -1681,7 +1681,7 @@ openShop_s /* openShop_s tooltip : 全局商店 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=openshop%EF%BC%9A%E6%89%93%E5%BC%80%E4%B8%80%E4%B8%AA%E5%85%A8%E5%B1%80%E5%95%86%E5%BA%97 +helpUrl : /_docs/#/instruction colour : this.dataColor default : ["shop1", true] allShops : ['IdString_0'] @@ -1696,7 +1696,7 @@ disableShop_s /* disableShop_s tooltip : 全局商店 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=disableshop%EF%BC%9A%E7%A6%81%E7%94%A8%E4%B8%80%E4%B8%AA%E5%85%A8%E5%B1%80%E5%95%86%E5%BA%97 +helpUrl : /_docs/#/instruction default : ["shop1"] allShops : ['IdString_0'] colour : this.dataColor @@ -1710,7 +1710,7 @@ follow_s /* follow_s tooltip : follow: 跟随勇士 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=follow%ef%bc%9a%e8%b7%9f%e9%9a%8f%e5%8b%87%e5%a3%ab +helpUrl : /_docs/#/instruction default : ["npc.png"] allImages : ['EvalString_0'] material : ["./project/images/", "EvalString_0"] @@ -1725,7 +1725,7 @@ unfollow_s /* unfollow_s tooltip : unfollow: 取消跟随 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=unfollow%ef%bc%9a%e5%8f%96%e6%b6%88%e8%b7%9f%e9%9a%8f +helpUrl : /_docs/#/instruction default : [""] allImages : ['EvalString_0'] material : ["./project/images/", "EvalString_0"] @@ -1741,7 +1741,7 @@ vibrate_s /* vibrate_s tooltip : vibrate: 画面震动 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=vibrate%ef%bc%9a%e7%94%bb%e9%9d%a2%e9%9c%87%e5%8a%a8 +helpUrl : /_docs/#/instruction default : [2000,false] colour : this.soundColor Int_0 = Int_0 ?(', "time": '+Int_0):''; @@ -1756,7 +1756,7 @@ animate_s /* animate_s tooltip : animate:显示动画,位置填hero或者1,2形式的位置,或者不填代表当前事件点 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=animate%EF%BC%9A%E6%98%BE%E7%A4%BA%E5%8A%A8%E7%94%BB +helpUrl : /_docs/#/instruction default : ["zone","hero",false,false] allAnimates : ['IdString_0'] material : ["./project/animates/", "IdString_0"] @@ -1785,7 +1785,7 @@ setViewport_s /* setViewport_s tooltip : setViewport: 设置视角 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=changepos%EF%BC%9A%E5%BD%93%E5%89%8D%E4%BD%8D%E7%BD%AE%E5%88%87%E6%8D%A2%E5%8B%87%E5%A3%AB%E8%BD%AC%E5%90%91 +helpUrl : /_docs/#/instruction default : ["",""] selectPoint : ["PosString_0", "PosString_1"] colour : this.soundColor @@ -1803,7 +1803,7 @@ moveViewport_s /* moveViewport_s tooltip : moveViewport:移动视角 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=movehero%EF%BC%9A%E7%A7%BB%E5%8A%A8%E5%8B%87%E5%A3%AB +helpUrl : /_docs/#/instruction default : [300,false,"上右3下2左"] colour : this.soundColor IntString_0 = IntString_0 ?(', "time": '+IntString_0):''; @@ -1819,7 +1819,7 @@ showImage_s /* showImage_s tooltip : showImage:显示图片 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a%e6%98%be%e7%a4%ba%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction default : [1,"bg.jpg","null","0","0",1,0,false] allImages : ['EvalString_0'] colour : this.printColor @@ -1841,7 +1841,7 @@ showImage_1_s /* showImage_1_s tooltip : showImage_1:显示图片 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a%e6%98%be%e7%a4%ba%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction default : [1,"bg.jpg","null","0","0","","",1,"0","0","","",0,false] allImages : ['EvalString_0'] colour : this.printColor @@ -1865,7 +1865,7 @@ showTextImage_s /* showTextImage_s tooltip : showTextImage:显示图片化文本 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showTextImage%ef%bc%9a%e6%98%be%e7%a4%ba%e6%96%87%e6%9c%ac%e5%8c%96%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_0 colour : this.printColor default : ["可以使用setText事件来控制字体、颜色、大小、偏移量等",1,"0","0",1.4,"null",1,0,false] @@ -1884,7 +1884,7 @@ hideImage_s /* hideImage_s tooltip : hideImage:清除图片 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=hideImage%ef%bc%9a%e6%b8%85%e9%99%a4%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction colour : this.printColor default : [1,0,false] if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); @@ -1899,7 +1899,7 @@ showGif_s /* showGif_s tooltip : showGif:显示动图 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showgif%EF%BC%9A%E6%98%BE%E7%A4%BA%E5%8A%A8%E5%9B%BE +helpUrl : /_docs/#/instruction default : ["","",""] allImages : ['EvalString_0'] colour : this.printColor @@ -1917,7 +1917,7 @@ moveImage_s /* moveImage_s tooltip : moveImage:图片移动 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=moveImage%ef%bc%9a%e5%9b%be%e7%89%87%e7%a7%bb%e5%8a%a8 +helpUrl : /_docs/#/instruction default : [1,'','','',500,false] colour : this.printColor if(Int_0<=0 || Int_0>50) throw new Error('图片编号在1~50之间'); @@ -1936,7 +1936,7 @@ setCurtain_0_s /* setCurtain_0_s tooltip : setCurtain: 更改画面色调,动画时间可不填 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setcurtain%EF%BC%9A%E6%9B%B4%E6%94%B9%E7%94%BB%E9%9D%A2%E8%89%B2%E8%B0%83 +helpUrl : /_docs/#/instruction default : ["255,255,255,1",'rgba(255,255,255,1)',500,true,false] colour : this.soundColor previewBlock : true @@ -1953,7 +1953,7 @@ setCurtain_1_s /* setCurtain_1_s tooltip : setCurtain: 恢复画面色调,动画时间可不填 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setcurtain%EF%BC%9A%E6%9B%B4%E6%94%B9%E7%94%BB%E9%9D%A2%E8%89%B2%E8%B0%83 +helpUrl : /_docs/#/instruction default : [500,false] colour : this.soundColor IntString_0 = IntString_0 ?(', "time": '+IntString_0):''; @@ -1967,7 +1967,7 @@ screenFlash_s /* screenFlash_s tooltip : screenFlash: 画面闪烁,动画时间可不填 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=screenFlash%EF%BC%9A%E7%94%BB%E9%9D%A2%E9%97%AA%E7%83%81 +helpUrl : /_docs/#/instruction default : ["255,255,255,1",'rgba(255,255,255,1)',500,1,false] colour : this.soundColor if (ColorString_0 == '') throw new Error('颜色格式错误,形如:0~255,0~255,0~255,0~1'); @@ -1983,7 +1983,7 @@ setWeather_s /* setWeather_s tooltip : setWeather:更改天气 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setweather%EF%BC%9A%E6%9B%B4%E6%94%B9%E5%A4%A9%E6%B0%94 +helpUrl : /_docs/#/instruction default : [null,1,true] colour : this.soundColor if(Int_0<1 || Int_0>10) throw new Error('天气的强度等级, 在1-10之间'); @@ -1999,7 +1999,7 @@ move_s /* move_s tooltip : move: 让某个NPC/怪物移动,位置可不填代表当前事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=move%EF%BC%9A%E8%AE%A9%E6%9F%90%E4%B8%AAnpc%E6%80%AA%E7%89%A9%E7%A7%BB%E5%8A%A8 +helpUrl : /_docs/#/instruction default : ["","",500,false,false,"上右3下2后4左前2"] selectPoint : ["PosString_0", "PosString_1"] colour : this.mapColor @@ -2020,7 +2020,7 @@ moveAction_s /* moveAction_s tooltip : moveAction: 前进一格或撞击 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=move%EF%BC%9A%E8%AE%A9%E6%9F%90%E4%B8%AAnpc%E6%80%AA%E7%89%A9%E7%A7%BB%E5%8A%A8 +helpUrl : /_docs/#/instruction colour : this.dataColor return '{"type": "moveAction"},\n'; */; @@ -2033,7 +2033,7 @@ moveHero_s /* moveHero_s tooltip : moveHero:移动勇士,用这种方式移动勇士的过程中将无视一切地形, 无视一切事件, 中毒状态也不会扣血 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=movehero%EF%BC%9A%E7%A7%BB%E5%8A%A8%E5%8B%87%E5%A3%AB +helpUrl : /_docs/#/instruction default : ["",false,"上右3下2后4左前2"] colour : this.dataColor IntString_0 = IntString_0 ?(', "time": '+IntString_0):''; @@ -2048,7 +2048,7 @@ jump_s /* jump_s tooltip : jump: 让某个NPC/怪物跳跃 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=jump%EF%BC%9A%E8%AE%A9%E6%9F%90%E4%B8%AANPC%2F%E6%80%AA%E7%89%A9%E8%B7%B3%E8%B7%83 +helpUrl : /_docs/#/instruction default : ["","","","",500,true,false] selectPoint : ["PosString_2", "PosString_3"] menu : [['选择起点位置','editor_blockly.selectPoint(block,["PosString_0", "PosString_1"])']] @@ -2074,7 +2074,7 @@ jumpHero_s /* jumpHero_s tooltip : jumpHero: 跳跃勇士 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=jumpHero%EF%BC%9A%E8%B7%B3%E8%B7%83%E5%8B%87%E5%A3%AB +helpUrl : /_docs/#/instruction default : ["","",500,false] selectPoint : ["PosString_0", "PosString_1"] colour : this.dataColor @@ -2094,7 +2094,7 @@ playBgm_s /* playBgm_s tooltip : playBgm: 播放背景音乐 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=playbgm%EF%BC%9A%E6%92%AD%E6%94%BE%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90 +helpUrl : /_docs/#/instruction default : ["bgm.mp3", 0, true] allBgms : ['EvalString_0'] material : ["./project/bgms/", "EvalString_0"] @@ -2111,7 +2111,7 @@ pauseBgm_s /* pauseBgm_s tooltip : pauseBgm: 暂停背景音乐 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=pausebgm%EF%BC%9A%E6%9A%82%E5%81%9C%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90 +helpUrl : /_docs/#/instruction colour : this.soundColor var code = '{"type": "pauseBgm"},\n'; return code; @@ -2123,7 +2123,7 @@ resumeBgm_s /* resumeBgm_s tooltip : resumeBgm: 恢复背景音乐 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=resumebgm%EF%BC%9A%E6%81%A2%E5%A4%8D%E8%83%8C%E6%99%AF%E9%9F%B3%E4%B9%90 +helpUrl : /_docs/#/instruction colour : this.soundColor Bool_0 = Bool_0 ? ', "resume": true' : ''; var code = '{"type": "resumeBgm"' + Bool_0 + '},\n'; @@ -2136,7 +2136,7 @@ loadBgm_s /* loadBgm_s tooltip : loadBgm: 预加载某个背景音乐,之后可以直接播放 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=loadBgm%ef%bc%9a%e9%a2%84%e5%8a%a0%e8%bd%bd%e4%b8%80%e4%b8%aa%e8%83%8c%e6%99%af%e9%9f%b3%e4%b9%90 +helpUrl : /_docs/#/instruction default : ["bgm.mp3"] allBgms : ['EvalString_0'] material : ["./project/bgms/", "EvalString_0"] @@ -2151,7 +2151,7 @@ freeBgm_s /* freeBgm_s tooltip : freeBgm: 释放背景音乐的缓存 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=freeBgm%ef%bc%9a%e9%87%8a%e6%94%be%e4%b8%80%e4%b8%aa%e8%83%8c%e6%99%af%e9%9f%b3%e4%b9%90%e7%9a%84%e7%bc%93%e5%ad%98 +helpUrl : /_docs/#/instruction default : ["bgm.mp3"] allBgms : ['EvalString_0'] colour : this.soundColor @@ -2165,7 +2165,7 @@ playSound_s /* playSound_s tooltip : playSound: 播放音效 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=playsound%EF%BC%9A%E6%92%AD%E6%94%BE%E9%9F%B3%E6%95%88 +helpUrl : /_docs/#/instruction default : ["item.mp3",false] colour : this.soundColor allSounds : ['EvalString_0'] @@ -2181,7 +2181,7 @@ stopSound_s /* stopSound_s tooltip : stopSound: 停止所有音效 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=stopSound%ef%bc%9a%e5%81%9c%e6%ad%a2%e6%89%80%e6%9c%89%e9%9f%b3%e6%95%88 +helpUrl : /_docs/#/instruction colour : this.soundColor var code = '{"type": "stopSound"},\n'; return code; @@ -2193,7 +2193,7 @@ setVolume_s /* setVolume_s tooltip : setVolume: 设置音量 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setvolume%EF%BC%9A%E8%AE%BE%E7%BD%AE%E9%9F%B3%E9%87%8F +helpUrl : /_docs/#/instruction default : [90, 500, false] colour : this.soundColor IntString_0 = IntString_0 ?(', "time": '+IntString_0):''; @@ -2208,7 +2208,7 @@ win_s /* win_s tooltip : win: 获得胜利, 该事件会显示获胜页面, 并重新游戏 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=win%EF%BC%9A%E8%8E%B7%E5%BE%97%E8%83%9C%E5%88%A9 +helpUrl : /_docs/#/instruction default : ["",false, false] Bool_0 = Bool_0?', "norank": 1':''; Bool_1 = Bool_1?', "noexit": 1':''; @@ -2222,7 +2222,7 @@ lose_s /* lose_s tooltip : lose: 游戏失败, 该事件会显示失败页面, 并重新开始游戏 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=lose%EF%BC%9A%E6%B8%B8%E6%88%8F%E5%A4%B1%E8%B4%A5 +helpUrl : /_docs/#/instruction default : [""] var code = '{"type": "lose", "reason": "'+EvalString_0+'"},\n'; return code; @@ -2234,7 +2234,7 @@ restart_s /* restart_s tooltip : restart: 直接回到标题界面 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=restart%ef%bc%9a%e7%9b%b4%e6%8e%a5%e5%9b%9e%e5%88%b0%e6%a0%87%e9%a2%98%e7%95%8c%e9%9d%a2 +helpUrl : /_docs/#/instruction var code = '{"type": "restart"},\n'; return code; */; @@ -2245,7 +2245,7 @@ input_s /* input_s tooltip : input:接受用户输入数字, 事件只能接受非负整数输入, 所有非法的输入将全部变成0 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=input%ef%bc%9a%e6%8e%a5%e5%8f%97%e7%94%a8%e6%88%b7%e8%be%93%e5%85%a5%e6%95%b0%e5%ad%97 +helpUrl : /_docs/#/instruction default : ["请输入一个数"] colour : this.dataColor var code = '{"type": "input", "text": "'+EvalString_0+'"},\n'; @@ -2258,7 +2258,7 @@ input2_s /* input2_s tooltip : input2:接受用户输入文本, 允许用户输入任何形式的文本 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=input2%ef%bc%9a%e6%8e%a5%e5%8f%97%e7%94%a8%e6%88%b7%e8%be%93%e5%85%a5%e6%96%87%e6%9c%ac +helpUrl : /_docs/#/instruction default : ["请输入文本"] colour : this.dataColor var code = '{"type": "input2", "text": "'+EvalString_0+'"},\n'; @@ -2271,7 +2271,7 @@ if_s /* if_s tooltip : if: 条件判断 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=if%EF%BC%9A%E6%9D%A1%E4%BB%B6%E5%88%A4%E6%96%AD +helpUrl : /_docs/#/instruction colour : this.eventColor var code = ['{"type": "if", "condition": "',expression_0,'",\n', '"true": [\n',action_0,'],\n', @@ -2286,7 +2286,7 @@ if_1_s /* if_1_s tooltip : if: 条件判断 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=if%EF%BC%9A%E6%9D%A1%E4%BB%B6%E5%88%A4%E6%96%AD +helpUrl : /_docs/#/instruction colour : this.eventColor var code = ['{"type": "if", "condition": "',expression_0,'",\n', '"true": [\n',action_0,'],\n', @@ -2300,7 +2300,7 @@ switch_s /* switch_s tooltip : switch: 多重条件分歧 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=switch%EF%BC%9A%E5%A4%9A%E9%87%8D%E6%9D%A1%E4%BB%B6%E5%88%86%E6%AD%A7 +helpUrl : /_docs/#/instruction default : ["判别值"] colour : this.eventColor var code = ['{"type": "switch", "condition": "',expression_0,'", "caseList": [\n', @@ -2315,7 +2315,7 @@ switchCase /* switchCase tooltip : 选项的选择 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=switch%EF%BC%9A%E5%A4%9A%E9%87%8D%E6%9D%A1%E4%BB%B6%E5%88%86%E6%AD%A7 +helpUrl : /_docs/#/instruction default : ["", false] colour : this.subColor Bool_0 = Bool_0?', "nobreak": true':''; @@ -2329,7 +2329,7 @@ choices_s /* choices_s tooltip : choices: 给用户提供选项 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=choices%EF%BC%9A%E7%BB%99%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E9%80%89%E9%A1%B9 +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_0 default : ["","流浪者","trader",0] allIds : ['IdString_0'] @@ -2356,7 +2356,7 @@ choicesContext /* choicesContext tooltip : 选项的选择 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=choices%EF%BC%9A%E7%BB%99%E7%94%A8%E6%88%B7%E6%8F%90%E4%BE%9B%E9%80%89%E9%A1%B9 +helpUrl : /_docs/#/instruction default : ["提示文字:红钥匙","","",""] allIds : ['IdString_0'] colour : this.subColor @@ -2372,7 +2372,7 @@ confirm_s /* confirm_s tooltip : 弹出确认框 -helpUrl : https://h5mota.com/games/template/_docs/#/ +helpUrl : /_docs/#/instruction default : ["确认要xxx吗?",0,false] doubleclicktext : EvalString_0 Bool_0 = Bool_0?', "default": true':'' @@ -2389,7 +2389,7 @@ for_s /* for_s tooltip : for:循环遍历 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=while%ef%bc%9a%e5%89%8d%e7%bd%ae%e6%9d%a1%e4%bb%b6%e5%be%aa%e7%8e%af +helpUrl : /_docs/#/instruction colour : this.eventColor if (!/^temp:[A-Z]$/.test(expression_0)) { throw new Error('循环遍历仅允许使用临时变量!'); @@ -2402,7 +2402,7 @@ forEach_s /* forEach_s tooltip : forEach:循环遍历列表 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=while%ef%bc%9a%e5%89%8d%e7%bd%ae%e6%9d%a1%e4%bb%b6%e5%be%aa%e7%8e%af +helpUrl : /_docs/#/instruction colour : this.eventColor if (!/^temp:[A-Z]$/.test(expression_0)) { throw new Error('循环遍历仅允许使用临时变量!'); @@ -2418,7 +2418,7 @@ while_s /* while_s tooltip : while:前置条件循环 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=while%ef%bc%9a%e5%89%8d%e7%bd%ae%e6%9d%a1%e4%bb%b6%e5%be%aa%e7%8e%af +helpUrl : /_docs/#/instruction colour : this.eventColor var code = ['{"type": "while", "condition": "',expression_0,'",\n', '"data": [\n',action_0,'],\n', @@ -2431,7 +2431,7 @@ dowhile_s /* dowhile_s tooltip : dowhile:后置条件循环 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=dowhile%ef%bc%9a%e5%90%8e%e7%bd%ae%e6%9d%a1%e4%bb%b6%e5%be%aa%e7%8e%af +helpUrl : /_docs/#/instruction colour : this.eventColor var code = ['{"type": "dowhile", "condition": "',expression_0,'",\n', '"data": [\n',action_0,'],\n', @@ -2444,7 +2444,7 @@ break_s /* break_s tooltip : break:跳出循环或公共事件! -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=break%EF%BC%9A%E8%B7%B3%E5%87%BA%E5%BE%AA%E7%8E%AF +helpUrl : /_docs/#/instruction colour : this.eventColor var code = '{"type": "break"},\n'; return code; @@ -2455,7 +2455,7 @@ continue_s /* continue_s tooltip : continue:继续执行当前循环的下一轮,或跳出公共事件! -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=continue%EF%BC%9A%E7%BB%A7%E7%BB%AD%E6%89%A7%E8%A1%8C%E5%BD%93%E5%89%8D%E5%BE%AA%E7%8E%AF +helpUrl : /_docs/#/instruction colour : this.eventColor var code = '{"type": "continue"},\n'; return code; @@ -2468,7 +2468,7 @@ wait_s /* wait_s tooltip : wait: 等待用户操作并获得按键或点击信息 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=wait%EF%BC%9A%E7%AD%89%E5%BE%85%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C +helpUrl : /_docs/#/instruction default : [0] colour : this.soundColor Int_0 = Int_0?(', "timeout": ' + Int_0):''; @@ -2489,7 +2489,7 @@ waitContext_1 /* waitContext_1 tooltip : wait: 等待用户操作并获得按键或点击信息 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=wait%EF%BC%9A%E7%AD%89%E5%BE%85%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C +helpUrl : /_docs/#/instruction colour : this.subColor if (!/^\d+(,\d+)*$/.test(EvalString_0)) { throw new Error('键值必须是正整数,可以以逗号分隔'); @@ -2504,7 +2504,7 @@ waitContext_2 /* waitContext_2 tooltip : wait: 等待用户操作并获得按键或点击信息 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=wait%EF%BC%9A%E7%AD%89%E5%BE%85%E7%94%A8%E6%88%B7%E6%93%8D%E4%BD%9C +helpUrl : /_docs/#/instruction default : [0,32,0,32] previewBlock : true colour : this.subColor @@ -2525,7 +2525,7 @@ waitAsync_s /* waitAsync_s tooltip : waitAsync: 等待所有异步事件执行完毕 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=waitAsync%ef%bc%9a%e7%ad%89%e5%be%85%e6%89%80%e6%9c%89%e5%bc%82%e6%ad%a5%e4%ba%8b%e4%bb%b6%e6%89%a7%e8%a1%8c%e5%ae%8c%e6%af%95 +helpUrl : /_docs/#/instruction colour : this.soundColor var code = '{"type": "waitAsync"},\n'; return code; @@ -2538,7 +2538,7 @@ callBook_s /* callBook_s tooltip : callBook: 呼出怪物手册;返回游戏后将继续执行后面的事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=callBook%ef%bc%9a%e5%91%bc%e5%87%ba%e6%80%aa%e7%89%a9%e6%89%8b%e5%86%8c +helpUrl : /_docs/#/instruction colour : this.soundColor var code = '{"type": "callBook"},\n'; return code; @@ -2551,7 +2551,7 @@ callSave_s /* callSave_s tooltip : callSave: 呼出存档页面 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=callSave%ef%bc%9a%e5%91%bc%e5%87%ba%e5%ad%98%e6%a1%a3%e7%95%8c%e9%9d%a2 +helpUrl : /_docs/#/instruction colour : this.soundColor var code = '{"type": "callSave"},\n'; return code; @@ -2564,7 +2564,7 @@ autoSave_s /* autoSave_s tooltip : autoSave: 自动存档 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=autoSave%ef%bc%9a%e8%87%aa%e5%8a%a8%e5%ad%98%e6%a1%a3 +helpUrl : /_docs/#/instruction colour : this.soundColor default : [false] Bool_0 = Bool_0 ? (', "nohint": true') : ''; @@ -2579,7 +2579,7 @@ callLoad_s /* callLoad_s tooltip : callLoad: 呼出存档页面;返回游戏后将继续执行后面的事件 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=callLoad%ef%bc%9a%e5%91%bc%e5%87%ba%e8%af%bb%e6%a1%a3%e7%95%8c%e9%9d%a2 +helpUrl : /_docs/#/instruction colour : this.soundColor var code = '{"type": "callLoad"},\n'; return code; @@ -2592,7 +2592,7 @@ previewUI_s /* previewUI_s tooltip : previewUI: ui绘制并预览 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=previewUI%ef%bc%9aUI%e7%bb%98%e5%88%b6%e5%b9%b6%e9%a2%84%e8%a7%88 +helpUrl : /_docs/#/instruction previewBlock : true var code = ['{"type": "previewUI", "action": [\n', action_0,']},\n'].join(''); return code; @@ -2604,7 +2604,7 @@ clearMap_s /* clearMap_s tooltip : clearMap: 清除画布 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=clearMap%ef%bc%9a%e6%b8%85%e9%99%a4%e7%94%bb%e5%b8%83 +helpUrl : /_docs/#/instruction colour : this.subColor default : ["", "", "", ""] previewBlock : true @@ -2622,7 +2622,7 @@ setAttribute_s /* setAttribute_s tooltip : setAttribute:设置画布属性 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=setAttribute%ef%bc%9a%e8%ae%be%e7%bd%ae%e7%94%bb%e5%b8%83%e5%b1%9e%e6%80%a7 +helpUrl : /_docs/#/instruction previewBlock : true colour : this.subColor default : ["","",'rgba(255,255,255,1)',"",'rgba(255,255,255,1)',"","",null,null,""] @@ -2648,7 +2648,7 @@ fillText_s /* fillText_s tooltip : fillText:绘制一行文本;可以设置最大宽度进行放缩 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillText%ef%bc%9a%e7%bb%98%e5%88%b6%e6%96%87%e6%9c%ac +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","",'rgba(255,255,255,1)',"","","绘制一行文本"] @@ -2664,7 +2664,7 @@ fillBoldText_s /* fillBoldText_s tooltip : fillBoldText:绘制一行描边文本 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillBoldText%ef%bc%9a%e7%bb%98%e5%88%b6%e6%8f%8f%e8%be%b9%e6%96%87%e6%9c%ac +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","",'rgba(255,255,255,1)',"",'rgba(0,0,0,1)',"","绘制一行描边文本"] @@ -2680,7 +2680,7 @@ drawTextContent_s /* drawTextContent_s tooltip : drawTextContent:绘制多行文本 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawTextContent%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%a1%8c%e6%96%87%e6%9c%ac +helpUrl : /_docs/#/instruction doubleclicktext : EvalString_0 colour : this.subColor default : ["绘制多行文本\\n可双击编辑","0","0","","",'rgba(255,255,255,1)',null,"","",false] @@ -2699,7 +2699,7 @@ fillRect_s /* fillRect_s tooltip : fillRect:绘制矩形 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","flag:x","300","","","","rgba(255,255,255,1)"] @@ -2715,7 +2715,7 @@ strokeRect_s /* strokeRect_s tooltip : strokeRect:绘制矩形边框 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeRect%ef%bc%9a%e7%bb%98%e5%88%b6%e7%9f%a9%e5%bd%a2%e8%be%b9%e6%a1%86 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","flag:x","300","","","","rgba(255,255,255,1)",""] @@ -2732,7 +2732,7 @@ drawLine_s /* drawLine_s tooltip : drawLine:绘制线段 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawLine%ef%bc%9a%e7%bb%98%e5%88%b6%e7%ba%bf%e6%ae%b5 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","flag:x","300","","rgba(255,255,255,1)",""] @@ -2747,7 +2747,7 @@ drawArrow_s /* drawArrow_s tooltip : drawArrow:绘制箭头 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawArrow%ef%bc%9a%e7%bb%98%e5%88%b6%e7%ae%ad%e5%a4%b4 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","flag:x","300","","rgba(255,255,255,1)",""] @@ -2763,7 +2763,7 @@ fillPolygon_s /* fillPolygon_s tooltip : fillPolygon:绘制多边形 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillPolygon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%be%b9%e5%bd%a2 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0,0,100","0,100,0","","rgba(255,255,255,1)"] @@ -2784,7 +2784,7 @@ strokePolygon_s /* strokePolygon_s tooltip : strokePolygon:绘制多边形边框 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokePolygon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%a4%9a%e8%be%b9%e5%bd%a2%e8%be%b9%e6%a1%86 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0,0,100","0,100,0","","rgba(255,255,255,1)",""] @@ -2805,7 +2805,7 @@ fillEllipse_s /* fillEllipse_s tooltip : fillEllipse:绘制椭圆 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","100","100","0","","rgba(255,255,255,1)"] @@ -2820,7 +2820,7 @@ strokeEllipse_s /* strokeEllipse_s tooltip : strokeEllipse:绘制椭圆边框 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=strokeEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86%e8%be%b9%e6%a1%86 +helpUrl : /_docs/#/instruction colour : this.subColor previewBlock : true default : ["0","0","100","100","0","","rgba(255,255,255,1)",""] @@ -2836,7 +2836,7 @@ fillArc_s /* fillArc_s tooltip : fillArc:绘制扇形 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 +helpUrl : /_docs/#/instruction colour : this.subColor default : ["0","0","100","0","90","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; @@ -2850,7 +2850,7 @@ strokeArc_s /* strokeArc_s tooltip : strokeArc:绘制弧 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=fillEllipse%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9c%86 +helpUrl : /_docs/#/instruction colour : this.subColor default : ["0","0","100","0","90","","rgba(255,255,255,1)",""] ColorString_0 = ColorString_0 ? (', "style": ['+ColorString_0+']') : ''; @@ -2867,7 +2867,7 @@ drawImage_s /* drawImage_s tooltip : drawImage:绘制图片 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction previewBlock : true allImages : ['EvalString_0'] default : ["bg.jpg","null","0","0","","",""] @@ -2889,7 +2889,7 @@ drawImage_1_s /* drawImage_1_s tooltip : drawImage:绘制图片 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawImage%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction default : ["bg.jpg","null","0","0","32","32","0","0","32","32",""] colour : this.subColor allImages : ['EvalString_0'] @@ -2910,7 +2910,7 @@ drawIcon_s /* drawIcon_s tooltip : drawIcon:绘制图标 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawIcon%ef%bc%9a%e7%bb%98%e5%88%b6%e5%9b%be%e6%a0%87 +helpUrl : /_docs/#/instruction default : ["yellowKey",0,"0","0","",""] previewBlock : true allIds : ['IdString_0'] @@ -2928,7 +2928,7 @@ drawBackground_s /* drawBackground_s tooltip : drawBackground:绘制背景 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawBackground%ef%bc%9a%e7%bb%98%e5%88%b6%e8%83%8c%e6%99%af%e5%9b%be +helpUrl : /_docs/#/instruction default : ["winskin.png","rgba(255,255,255,1)","0","0","100","100"] colour : this.subColor previewBlock : true @@ -2952,7 +2952,7 @@ drawSelector_s /* drawSelector_s tooltip : drawSelector:绘制闪烁光标 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=drawSelector%ef%bc%9a%e7%bb%98%e5%88%b6%e9%97%aa%e7%83%81%e5%85%89%e6%a0%87 +helpUrl : /_docs/#/instruction previewBlock : true default : ["winskin.png","1","0","0","100","100"] colour : this.subColor @@ -2966,7 +2966,7 @@ drawSelector_1_s /* drawSelector_1_s tooltip : drawSelector:清除闪烁光标 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=showImage%ef%bc%9a%e6%98%be%e7%a4%ba%e5%9b%be%e7%89%87 +helpUrl : /_docs/#/instruction default : ["1"] previewBlock : true colour : this.subColor @@ -2979,7 +2979,7 @@ unknown_s /* unknown_s tooltip : 通过脚本自定义的事件类型, 以及编辑器不识别的事件类型 -helpUrl : https://h5mota.com/games/template/_docs/#/ +helpUrl : /_docs/#/instruction default : ['{"type":"test", "data": "这是自定义的参数"}'] colour : this.dataColor try { @@ -2996,7 +2996,7 @@ function_s /* function_s tooltip : 可双击多行编辑,请勿使用异步代码。常见API参见文档附录。 -helpUrl : https://h5mota.com/games/template/_docs/#/event?id=function%EF%BC%9A%E8%87%AA%E5%AE%9A%E4%B9%89js%E8%84%9A%E6%9C%AC +helpUrl : /_docs/#/instruction default : [false,"alert(core.getStatus(\"atk\"));"] colour : this.dataColor doubleclicktext : RawEvalString_0 diff --git a/main.js b/main.js index b05c815c..dff0a79f 100644 --- a/main.js +++ b/main.js @@ -2,7 +2,7 @@ function main() { //------------------------ 用户修改内容 ------------------------// - this.version = "2.6.6"; // 游戏版本号;如果更改了游戏内容建议修改此version以免造成缓存问题。 + this.version = "2.7"; // 游戏版本号;如果更改了游戏内容建议修改此version以免造成缓存问题。 this.useCompress = false; // 是否使用压缩文件 // 当你即将发布你的塔时,请使用“JS代码压缩工具”将所有js代码进行压缩,然后将这里的useCompress改为true。 @@ -187,7 +187,7 @@ function main() { this.canvas = {}; this.__VERSION__ = "2.7"; - this.__VERSION_CODE__ = 127; + this.__VERSION_CODE__ = 139; } main.prototype.init = function (mode, callback) { diff --git a/migration.html b/migration.html index df5a4697..a13d5bcb 100644 --- a/migration.html +++ b/migration.html @@ -474,7 +474,7 @@ function action_items(callback) { "cls": "tools", "name": "大黄门钥匙", "text": "可以开启当前层所有黄门", - "itemEffect": "core.status.hero.items.keys.yellowKey++;core.status.hero.items.keys.blueKey++;core.status.hero.items.keys.redKey++;", + "itemEffect": "core.addItem('yellowKey', 1);\ncore.addItem('blueKey', 1);\ncore.addItem('redKey', 1);", "itemEffectTip": ",全钥匙+1", "useItemEffect": "(function () {\n\tvar actions = core.searchBlock(\"yellowDoor\").map(function (block) {\n\t\treturn { \"type\": \"openDoor\", \"loc\": [block.x, block.y], \"async\": true };\n\t});\n\tactions.push({ \"type\": \"waitAsync\" });\n\tactions.push({ \"type\": \"tip\", \"text\": core.material.items[itemId].name + \"使用成功\" });\n\tcore.insertAction(actions);\n})();", "canUseItemEffect": "(function () {\n\treturn core.searchBlock('yellowDoor').length > 0;\n})();" diff --git a/project/floors/sample0.js b/project/floors/sample0.js index b38c0dff..d94d70f5 100644 --- a/project/floors/sample0.js +++ b/project/floors/sample0.js @@ -220,7 +220,19 @@ main.floors.sample0= ], "fgmap": [ - + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0,10169, 0,10177, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0,10170, 0,10178, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0,10171, 0,10179, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0,10172, 0,10180, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0,10186, 0,10181, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0,10187, 0,10182, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0,10188, 0,10183, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + [ 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0] ], "width": 13, "height": 13, diff --git a/v2.x-final更新.txt b/v2.x-final更新.txt deleted file mode 100644 index d4a63110..00000000 --- a/v2.x-final更新.txt +++ /dev/null @@ -1,162 +0,0 @@ -(已完成!) 1.(来自鹿神)门和像三种基础墙一样的墙应当提供一个“需要消耗多少把哪种钥匙、开关门分别播放什么音效”的属性,如[{"yellowKey": 2, "blueKey": 1}, "door.mp3", "close.mp3"],多种钥匙之间的关系可以为&&或|| -(已完成!) 2.(来自小艾)请求修复瞬移判定无视图块属性script项的bug -(已完成!) 3. 请求修复(如果还没修复)core.drawTip()不能使用系统图标和clear参数的bug,建议增加一个参数来表示多帧图块绘制第几帧 -(已完成!) 3.1 (“UI绘制”类事件中的“绘制图标”同理) -(已完成!\b[up,null]可实现此效果) 4. 建议显示文章的\b[]提供top和bottom这两种新写法来实现在顶部或底部显示对话框,目前只有startText、firstArrive、eachArrive、useItemEvent和公共事件等没有当前点的事件中才能用up和down来临时实现这种效果,否则就得设置剧情文本的属性,这在频繁来回切换时是致命的,就像《无上之光》RMXP版地上40层一样 -(已完成!) 5. 建议优化core.splitLines()来避免把单词打断和触犯标点禁则,如点号和右标号禁止用于行首,左标号禁止用于行尾 -(已完成!) 6. core.drawAnimate()和对应的事件,建议增加一个boolean型参数来表示坐标是绝对坐标(即当前的实现)还是在视野中的相对坐标(以13*13为例相对坐标总是在0~12之间),以实现形如“在视野正中心播放某某动画”的需求(小地图可以写6,6,大地图怎么办) -(已完成!) 7. 建议把core.playBgm(bgm, startTime)的startTime参数在事件中也提供出来,以用于一些演出(比如适当的剧情处直接从高潮开始)。同理可以让“暂停背景音乐”记录下当前播放到了第几秒,并在“恢复背景音乐”中自动从这个秒数恢复。作者还可以手动配合音量渐变效果 -(已完成!) 8. 系统设置菜单中“音量”和“步时”的点击区并不是根据文本长度自动适配的,这导致作者修改文本(包括但不限于翻译)后玩家难以找到准确的点击区,建议优化 -(已完成!) 9. 建议给“显示选择项”、“显示确认框”、“等待用户操作”这三个事件添加一个“若多少毫秒内不响应则触发的分支”,用来实现一些如新新2的QTE,录像中可以记录“choice: timeout”、“confirm: timeout”和“wait: timeout”来表示触发了超时分支 -(已完成!) 10. 建议给“转变图块”事件增加一个淡入时间参数,用于原本是空地或空气墙的情况,目前这种效果必须借助存在安全隐患的红点 -(已完成!) 11. 建议修复勇士后退时跟随者的鬼畜行为,并推出一套能够对跟随者位置和朝向进行读写的API甚至事件,且允许这些信息被计入存档,以实现一些演出效果甚至游戏要素,如新新2用公主占位防冰块 -(已完成!) 12. “设置怪物属性”事件的下拉框目前只支持一部分,另一部分只能通过手敲json再解析来得到,希望提供完整支持 -(已完成!) 13. 建议给core.moveAction(callback)提供对应的事件,用于在事件中让勇士像事件外一样移动,从而正常触发跑毒和阻激夹域捕等 -(已完成!) 14. core.openShop()和对应的事件,建议在用于公共事件时简单地退化为“插入公共事件”而不要打断当前事件,把决定权交给作者 -(已完成!) 15. “等待用户操作”虽然提供了场合块但还不支持将多个按键的场合合并(比如空格、回车和C键一般会被作者予以合并,执行内容如果只是大致相同也值得合并,在块内由作者根据flag再行分歧),建议支持一下 -(已完成!) 16. “绘制描边文本”事件建议加一个“描边颜色”参数,目前只能描黑边 -(已完成!) 17. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 -(已完成!) 18. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 -(已完成!) 19.(来自群友)建议给第一代全局商店的子选项像“显示选择项”一样提供图标、颜色和出现条件(注意长按的适配) -(已完成!) 20. 很多事件对应的脚本有默认参数,但在事件中省略参数却会变成0,建议修复 - -------------- - -(已完成!) defaultGround全局可用 -(已完成!) 对floorIds和图片进行检测 -(已完成!) 删除绘图模式 -(已完成!) 清除最近使用图块 -(已完成!) cannotIn / cannotOut使用选项框 -(已完成!) noPass->canPass改成选择框 -(已完成!) 初始化&读档优化:不一次读取全部楼层并创建 -(已完成!) 绿钥匙进状态栏 -(已完成!) 图块ID不可全数字 -(已完成!) 怪物详细信息富文本化 -(已完成!) for和forEach事件 -(已完成!) 转向:顺时针/逆时针/反向 -(已完成!) 事件转向 -(已完成!) 修复core.removeBlock隐藏和删除问题 -(已完成!) 合并数值操作事件 -(已完成!) fromLoad,聚集问题 -(已完成!) 注释优化 -(已完成!) 状态栏显示项的优化 -(已完成!) 动画/音乐/音效自动补全 -(已完成!) 重构全局商店! -(已完成!) 读档时色调数据丢失 -(已完成!) 圆角边框 -(不处理) 像素高分辨率问题 -(已完成!) 道具效果优化,删除部分道具相关的开关 -(已完成!) 素材列表选择 -(已完成!) 油漆桶,动态更改地图大小 -(已完成!) 地图拉框选择复制剪切删除 -(已完成!) 额外素材区拖动选择一个区域 -(已完成!) 素材替换 -(已完成!) 大屏幕下放大游戏界面 -(已完成!) 最近使用/最常使用的图块 -(已完成!) loader并行加载 -(已完成!) 合并items.js -(已完成!) 增加fonts目录,全塔属性增加fonts引用 -(已完成!) 右边框输入完后解析按钮高亮 -(已完成!) 32x48的门 -(已完成!) 难度分歧的图块(颜色,含SL界面) -(已完成!) 装备同时加属性和比例 -(已完成!) removeMap和resumeMap -(已完成!) 右键图块选择复制/粘贴事件 -(已完成!) showImage, drawImage,立绘等加上对称选项 -(已完成!) 更多的图块blockly化 -(已完成!) 勇士帧动画 -(不处理;现在静止状态可以有帧动画了,所以不考虑行走过程动画) 行走动画 -(已完成!) 合并main中一些设置内容 -(已完成!) \t[this], 勇士朝下,flag:arg清理,瞬移扣血 -(OK) 同步存档合并;(OK) 失去焦点右键;(OK) 竖屏标题界面背景;(OK)商店录像bug -(OK) 右键反复弹出;(OK) 上下楼梯绑定楼传;(OK) 属性框出现0问题;(OK) 上下楼点选点 -(OK) 地图编辑框无效;(OK) jumpHero和帧动画冲突;(OK) bookDetails重复计算buff;(OK) 怪物属性多选 -(OK) 图片化文本翻转;(OK) 绘制矩形(边框)旋转; -(OK) 特殊属性颜色;(OK) 光环检查;(OK) 钥匙不消耗;(OK) 录像接档问题 - -------------- - -(不处理) 0. 部分文案的修改,如“地图编辑器”(启动服务.exe中)、“enemys”、“repulse” -(造塔工具相关都给鹿神) 1. 便捷PS工具希望加入自定义单位宽高功能,希望把“白底转透明”增强为“纯色底转透明”(弹窗由作者输入RGB或RGBA值)。 -(已修复) 2. 请求修复(如果还没修复)新建单张空白地图无法自定义宽高的bug -(文档相关给秋橙) 3. 希望给M键“追加素材”功能写个更详细的说明,在线文档中没有所以离线文档中也没写成 -(已解决;现在注册会进行判定) 4. 请求修复图块id可以使用“0-9A-Za-z和下划线”以外的字符的bug(如贪婪之神和经验之神的两个耳朵使用了减号,它们会干扰显示文章等事件块的解析) -(已修复) 5. (接上)请求修复\t[xxx,yyy.png]解析后全部被放入标题框的bug,yyy.png应放入图像框才对 -(已删除此函数) 6. 增强core.getStatusName()的适用面,目前它只用于装备栏属性变化非图标模式的绘制,事实上很多写死的文案值得改为此函数的调用(如rmxp默认的“力量”、“灵巧”、“G”),同理还有一些道具名称文案也存在此问题(如“楼层传送器似乎失效了”) -(不处理) 7. (来自鹿神)core.insertAction()在接受单个字符串参数时存在不稳定性(如跨塔抄别人脚本时),建议优化 -(不处理) 8. core.changeFloor()等函数的参数列表过于混乱,建议优化 -(文档相关给秋橙) 9. useItemEvent用于有afterGetItem事件(浅蓝点)的即捡即用类道具时,其执行次序与itemEffect相反,建议在表格注释中强调一下 -(文档相关给秋橙) 10. 装备孔的最大总个数在15*15为8而不再是6,在线文档没有提到 -(已完成!) 11. (来自鹿神)门和像三种基础墙一样的墙应当提供一个“需要消耗多少把哪种钥匙、开关门分别播放什么音效”(如[{"yellowKey": 1}, "door.mp3", "close.mp3"])的属性(还可以提供多种钥匙组合,关系可以为&&和||),而不是通过id去机械地对应 -(不处理) 12. (来自鹿神和君浪)坚固属性建议按照描述来,去修改turn或hero_per_damage而不是mon_def(rmxp魔塔的坚固属性是通过一个全局量去指定hero_per_damage的,默认为1)以免和模仿(或者说仿防)冲突 -(不处理) 13. 破甲、反击、净化倍率、仇恨增量和是否减半,建议允许使用怪物的属性去覆盖全塔属性中的值,如不同的破甲怪破甲倍率不同 -(已完成!) 14. (来自小艾)仇恨伤害和固伤合并进总伤害以免和负伤抵消 -(已完成!) 15. 单点阻激夹域和血网伤害同时存在多种时,气泡提示的伤害类型存在覆盖现象,建议优化 -(已完成!) 16. (来自小艾)建议修复瞬移判定无视图快属性script项的bug -(已完成!) 17. 建议修复(如果还没修复)core.drawTip()不能使用系统图标和clear参数的bug,并建议增加一个参数来表示多帧图块使用第几帧(UI绘制事件中的绘制图标同理),增加另一个参数来表示32*48图块绘制上2/3(当前实现,和手册一致)还是下2/3 -(不处理) 18. (来自群友)推箱子、阻击、捕捉、重生、炸锤和afterXxx事件的系列问题... -(不处理) 19. (来自群友)建议删除2连击和3连击 -(不处理) 20. (来自群友)建议优化怪物图块属性中value的结构(退化和攻防光环同理),君浪为此配置了一个独立的表格可供使用(基于在getEnemyInfo、getDamageInfo和afterBattle中各eval一串脚本) -(不处理) 21. (来自群友)建议大幅缩减表格的长度,譬如把勾选项和单个数值类紧凑摆放 -(已完成!) 22. betweenAttackMax在被四个怪同时夹击时(比如上下楼后或通过事件使勇士和其中一只怪重合了)目前是以上下方向的怪为准,建议在表格注释中予以强调,更合理的做法是在两种怪的战损中取max或min -(不处理) 23. displayIdInBook属性不能用于夹击QAQ,同时建议给core.getBlockId()追加一个“如果是怪物,是否按displayIdInBook进行映射”的参数。此外此属性会导致core.hasEnemyLeft()在指定id时失真(不一定是坏事) -(已完成!) 24. core.hasEnemyLeft()不应该调用core.getCurrentEnemys(),因为后者是用于手册的,它为了按伤害升序排列而调用了core.getDamageInfo(),而core.getDamageInfo()又会调用core.getEnemyInfo(),但作者完全可能在core.getDamageInfo()或core.getEnemyInfo()中使用core.hasEnemyLeft()判断特定id的怪物是否存在从而实现一些类似光环的效果(如协同),这样就会造成死递归 -(已完成!) 25. 建议新增一个类似“勇士转向”的事件指令————“图块转向”,用于NPC甚至怪物(比如基于索引/数字对4取余),毕竟用转变图块的话不够通用 -(已完成!) 26. “勇士转向”会导致跟随者聚集,这不利于演出,建议改成像core.turnHero()一样不聚集跟随者 -(已完成!) 27. 勇士后退时跟随者很鬼畜,建议优化(每步聚集算是一种简陋的办法) -(不处理) 28. 勇士的移动帧只有2,建议改为允许作者指定 -(不处理) 29. 建议加一对“勇士开始抖动”和“勇士停止抖动”事件指令,来让勇士像图块一样原地抖动(即全局动画)。目前这个效果还只能通过隐藏勇士(或切换透明行走图)并转变图块/图层块来实现且只能用于事件处理中QAQ -(不处理) 30. 建议加一个“视角锁定”事件指令,从而允许用事件改变勇士位置、朝向或行走图时不会使视角重置到以其为中心,用于一些演出效果 -(已完成!) 31. 楼层切换事件(绿点)一旦使用blockly编辑就会无视全塔属性的切换时间,只能手动在表格中删除时间(数据相关“楼层切换”事件指令也有这个问题,有群友还希望这个默认时间能像步时和音量一样由玩家设定来节约拆塔时间)。使用blockly编辑也无法做出“ignore:true”的效果(用来覆盖全塔属性的禁止穿透),建议优化 -(已完成!) 32. (关于CC的来回回档优化版)据其称,清空存档后会出现bug,此外他使用了W键导致二倍斩失效了(js的switch语句遇到duplicate cases居然不报错吗...) -(已完成!) 33. (疑似已被CC修复)楼传平面塔模式在记录离开位置时会错误地把读档也算作离开 -(已完成!) 34. (接上)还有很多像这样在楼层切换中对读档处理不当的问题,如天气色调bgm(前两者应当像bgm一样提供keep勾选项) -(已完成!) 35. (来自群友)自动寻路有绕过血瓶的勾选项,但不会绕过绿宝石,这在卡血的净化塔是噩梦 -(已修复!) 36. (疑似)一年前小雨等人提到“可穿透的楼梯”旁边没有不可通行图块时,桌面端和移动端中只有一种端能停在楼梯上。如果确有此现象,希望修复 -(不处理) 37. animates.png的四种箭头的右键绑定目前都只有":next",希望也提供":before" -(已修复!) 38. 建议移除afterUseBomb函数,合并进炸弹和圣锤的useItemEffect甚至useItemEvent -(已修复!) 38.1 现在强制要求面向要破的墙/要炸的怪物了 -(已修复!) 38.2 移除圣锤道具的定义 -(不处理) 39. 建议把样板自带的大部分tools类道具的useItemEffect用useItemEvent重写,以方便作者参照学习(我能说266都几个月了好多新作者和老作者压根不知道useItemEvent的存在吗) -(已修复!) 40. 希望显示文章的\b提供top和bottom这两种新写法来实现在顶部或底部显示对话框,目前只有firstArrive和eachArrive等没有当前点的事件中才能用up和down来临时实现这种效果,否则就得设置剧情文本的属性,这在频繁来回切换时是致命的,就像《无上之光》RMXP版地上40层一样 -(已完成!) 41. 建议优化core.splitLines()来避免出现标点禁则(如点号和右标号不能用于行首,左标号不能用于行尾),同时也能更好地支持字母文字语言如英语(日语韩语等同样是方块字的倒不要紧) -(已修复!) 42. core.drawAnimate()和对应的事件指令,建议增加一个参数来表示坐标是绝对坐标(即当前的实现)还是在视野中的相对坐标(以13*13为例相对坐标总是在0~12之间),毕竟有些动画按相对坐标绘制才是作者的演出需求。 -(不处理) 43. (来自鹿神)希望给animate文件支持多音效、画面闪烁和图块闪烁 -(已修复!) 44. 希望给“播放背景音乐”事件像core.playBgm()函数一样添加“从第几秒开始”的参数,以用于一些演出(比如适当的剧情处直接从高潮开始)。同理可以让“暂停背景音乐”记录下当前播放到了第几秒,并在“恢复背景音乐”中自动从这个秒数恢复。作者还可以手动配合音量渐变效果 -(文档相关给秋橙) 45. 希望API列表和在线文档介绍一下多个bgm同时播放和独立启停甚至独立调节音量的具体用法,以用于一些演出。 -(已修复!) 46. 希望在线文档提供一两个“事件中原生脚本勾选async并以core.doAction作为回调”的用法举例,并修复它也会导致弹窗警告缺少{"type": "waitAsync"}的bug -(不处理) 47. (来自灯绫)建议标题画面右下角的圆形bgm开关按钮在进入游戏后也一直显示 -(文档相关给秋橙) 48. statusBarOnClick在横屏时的有效点击区并不包括最下方六个按钮和难度单词,建议改正该函数的注释 -(已修复!) 49. 系统设置菜单中音量和步时的点击区并不是根据文本长度自动适配的,这导致作者修改文本(包括但不限于翻译)后玩家难以找到准确的点击区,建议优化 -(不处理) 50. 建议给录像播放时的N键提供一个对应的移动端操作,以方便移动端作者 -(已完成!) 51. 希望给“显示选择项”、“显示确认框”、“等待用户操作”这三个事件添加一个“若多少毫秒内不响应则触发的分支”,用来实现一些QTE,录像中可以记录“choice: timeout”、“confirm: timeout”和“wait: timeout”来表示触发了超时分支 -(已完成!) 52. 希望给“转变图块”加一个淡入时间参数(显隐和转变图层块也希望加个淡入淡出时间参数,图层块也希望提供移动和跳跃事件),专门用于原本是空地或空气墙的情况。目前要实现这样的效果必须使用红点,然而红点有着“推箱子、阻击、捕捉、重生、炸锤和afterXxx事件”的系列问题,且会导致core.removeBlock()(隐藏事件)退化为core.hideBlock() -(不处理) 53. 希望“移动事件”的移速和淡出速度拆开成两个参数,目前这样捆绑在一起不太自由 -(已完成) 54. 建议把图块属性的noPass改为勾选框而不是下拉框,因为null一定表示不可通行(道具根本没有noPass) -(不处理,可以转变图块) 55. “移动事件”和“跳跃事件”会导致本来勾选了不显伤的怪物突然有了显伤,非常难看,建议优化 -(不处理) 56. 希望推出一套能够对跟随者位置和坐标进行读写的API甚至事件指令,并允许这些信息被计入存档,以实现一些演出甚至游戏性效果,如新新2用公主占位防冰块 -(不处理) 57. 希望\t[hero]和\t[xxx,hero]能像图块一样绘制原地抖动的4帧全局动画而不是不动,希望能使用勇士的当前朝向而不是一直朝下,希望能使用\t[hero1]和\t[xxx,hero1]这样的写法来使用跟随者的行走图作为头像 -(文档相关给秋橙) 58. 建议在在线文档中给\r支持的颜色单词做一下枚举并写出对应的RGB值 -(不处理) 59. 在标题画面调用core.hideStartAnimate(core.startGame)会立即开始游戏并跳过难度选择,可能造成非作者预期的效果,有办法优化吗? -(已完成!) 60. “设置怪物属性”事件的下拉框目前只支持一部分,另一部分只能通过手敲json再解析来得到,希望提供完整支持 -(已完成!) 61. 在事件编辑器中进行地图选点时,有些事件指令虽然只能用于同楼层,但实际生效时勇士可能已经不在当前正在编辑的楼层(比如在一个楼层切换事件指令后)了,所以希望地图选点始终提供楼层下拉表 -(文档相关给秋橙) 62. 希望在线文档介绍一下楼层和startText的独立开关的flag表示 -(已完成!) 63. 希望给core.moveAction(callback)函数提供一个对应的事件指令,用于在事件流处理中让勇士进行一些有游戏性意义(即非纯演出)的移动。如果做不到的话希望参照本文的46号issue作为原生脚本勾选async的例子讲解如何使用 -(已完成!) 64. “打开全局商店”事件指令建议在用于公共事件版商店时简单地退化为“插入公共事件”而不要打断当前事件流,由作者在这个公共事件结尾去决定“立刻结束当前事件”还是不结束 -(已修复!) 65. “显隐贴图”的参数应为像素坐标而不是网格坐标,请修正在线文档的描述。同时建议加个淡入淡出时间参数,还建议贴图能像图片一样有透明度和被移动 -(不处理) 66. 读档建议换个和floor.mp3不一样的音效 -(不处理) 67. “画面震动”事件希望不要光左右晃,至少做成QQ窗口抖动的效果吧w -(不处理) 68. “自动存档”事件希望加一个“读此档后打断当前事件”的勾选项,否则这种自动存档用于强制战斗之前就没什么意义了,读了档还是会强制战斗。录像兼容性方面,不知道如果这种自动存档只用于事件开头是不是就不会有问题 -(已修复!) 69. “等待用户操作”虽然提供了场合块但还不支持将多个按键的场合合并(比如空格、回车和C键一般会被作者予以合并,执行内容如果只是大致相同也值得合并,在块内再行分歧),希望支持一下 -(已完成!) 70. “显隐勇士”事件指令希望加个淡入淡出时间参数 -(不处理,请用等待事件) 1. 希望给core.drawTip()和core.playSound()出个同步版本,目前只有异步版本,后者如果要模拟同步就得绑在一个透明动画上 -(已完成!) 72. “绘制描边文本”事件希望加一个“描边颜色”参数,目前只能描黑边 -(已完成!) 73. 画弧既然有现成的API,那建议也作为UI绘制事件提供。甚至希望提供画椭圆功能(长短轴水平或铅直的那种)参数为中心坐标和长短轴长度 -(已完成!) 74. “设置画布属性”的基准线建议增加'hanging'和'ideographic'这两种模式 -(已完成!) 75. 建议修复“绘制多行文本”时行距比字号大不太多会导致各行下缘丢失的bug(加大行距又会导致第一行的纵坐标难以估计),此bug在道具商店和1.3倍行距英文看的很明显 -(已完成!) 76. (来自群友)建议给第一代全局商店像“显示选择项”一样提供图标、颜色和出现条件 -(已完成!增加正则匹配) 77. 建议给core.searchBlock()新增问号通配符(匹配一个任意字符) -(已完成!) 78. 建议移除core.setInitData()并将其内容写在startText以方便作者仿照修改 -(不处理;有跟随情况下处理很麻烦) 79. 建议给core.drawHero()添加纵横两个偏移参数(目前只有一个),以用于做一些斜向移动的演出 -(文档都给秋橙) 80. 在线文档中“系统使用的flag变量”不够完整,建议加以补充 -(不处理,新增样板非常麻烦) 81. (来自群友)建议做一个17*13的纯横屏样板(大地图只能纵向实现),状态栏自绘在最右边四列,从而彻底摆脱乱七八糟的dom操作 diff --git a/更新说明.txt b/更新说明.txt deleted file mode 100644 index 1cd892d5..00000000 --- a/更新说明.txt +++ /dev/null @@ -1,581 +0,0 @@ -HTML5魔塔样板V2.6.6 - -编辑器增加【最近使用的图块】的区域 -编辑器拉伸到铺满全屏幕,还可以Ctrl+滚轮放缩 -编辑器支持连续Ctrl+Z的撤销,Ctrl+Y的重做 -新增tileset右键绑定宽高,以替代贴图模式 -多重自动存档,可以连续A键读档 -高层塔分区域支持 -自绘状态栏点击事件 -绘制的锁定模式 -等待用户操作增设分歧选项 -增设压缩模式,会对图片等进行zip压缩 -追加素材现在可以同时进行自动注册 -可以复制和粘贴怪物或道具的属性 -折叠素材时设置每一列个数 -标题界面和显示选择项时光标跟随鼠标 -修复所有已知的bug,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.6.5 - -事件:设置怪物属性;穿脱装备 -新值块:enemy:xxx:atk可获得怪物数据 -新值块:blockId:x,y获得某点图块ID -部分事件预编译,加快执行速度 -在系统设置中可以设置bgm的播放音量 -通关事件可以不退出游戏 -失败时允许直接读取自动存档 -NPC48自动注册可以自动绑定faceIds -编辑器Alt+1-9存图块,1-9读取图块 -编辑器现在可以跨楼层复制粘贴图块了 -可以对flags.进行自动补全 -部分Bug修复,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.6.4 - -自动事件,多事件页 -增加开场logo动画 -拓展:游戏时动态修改地图和怪物数据 -插件:道具商店,支持买入和卖出道具 -编辑器可以搜索变量出现位置 -变量的中文替换 -可以给图块绑定自定义脚本,碰触时触发 -编辑器右键可以绑定机关门和出生点 -支持多个drawTip同时出现 -闪烁光标同时支持多个同时存在 -插件:镜头平滑移动,默认禁用 -素材的快速追加 -批量导出动画 -部分Bug修复,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.6.3 - -标题界面大幅美化,增加闪烁光标,支持键盘开始游戏 -事件编辑器支持自动补全,能对flag和API列表等进行补全 -剧情文本中\\c修改字体大小,\\d和\\e切换粗体和斜体 -事件:设置视角&移动视角 -可以指定显示选择项的出现条件并动态生成 -楼层传送器的平面传送模式(哪里离开飞回到哪里) -UI绘制事件增添绘制圆和绘制圆边框 -所有的UI绘制事件均可以双击预览 -播放BGM事件可以一直持续播放直到下次调用 -\f立绘支持alpha值 -支持在脚本编辑中直接flags.xxx调用自定义变量 -首次获得道具将给予提示 -等待用户操作支持滚轮,视为PgUp和PgDn -脚本编辑器语法错误将禁止保存 -录像播放时B键查看数据统计 -所有已知bug的修复,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.6.2 - -可以拖动地图上的图块和事件,复制剪切和跨楼层粘贴 -新增事件的地图选点功能,可以在地图上选择落点 -现在素材区可以进行折叠与自动换列了 -新增UI绘制系列事件,并且可以进行预览 -显示文本事件的标题解析 -新增常用工具:额外素材合并工具 -进一步提升24倍速的播放速度 -楼层转换增加对称点 -增加编辑器快捷键说明,H键查看 -文档-事件增加事件编辑器截图 -大量细节优化,所有已知的Bug修复 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.6.1 - -区域优化的录像播放功能,R键使用 -强制战斗可以指定怪物坐标,将自动隐藏并执行该点战后事件 -flag:xxx也支持中文,例如 flag:2楼机关门 -增加文件名映射,可以用中文映射到某个图片或bgm文件并使用 -勇士宽度可以超过32(例如48x48的勇士行走图) -现在允许修改floorId和图块ID了(在表格下方) -增加事件:自动存档,返回标题界面;部分事件优化 -商店长按空格可以连续加点 -增设global:xxx使用全局存储,可被录像支持 -支持\b[hero]和\b[null,x,y]来自动调整上下方向 -支持\t[yellowKey]等只显示图标而没有标题 -编辑器中前景层对于有事件的点半透明显示 -存档改成1000页,长按上下页可快速翻页 -录像播放初始默认暂停,N键可以单步执行 -增设本地API文档,部分API和事件的优化 -所有已知的bug修复,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.6 - -拆分整个项目,大幅重构代码,新增大量API -重写文档,尤其是脚本和API列表 -现在可以对编辑器的表格的结构进行配置 -可以收藏和高亮存档 -独立出来的插件编写 -新增事件:关门、显示确认框、后置循环处理 -剧情文本的绘制可以设置居中选项 -选项框的绘制可以增加图标 -增加公共事件版的全局商店 -公共事件现在可以传入参数 -重写滑冰事件,现在滑冰在背景层了 -将输入框改成自定义实现,避免部分设备不支持 -状态栏文字可以自动放缩 -显示图片和对话框立绘可以裁剪图片 -修复所有已知bug,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.5.5 - -现在编辑器修改地图后可以直接读档生效,无需再重置地图或回放录像 -存档方式优化,大幅降低单个存档的占用空间 -脚本编辑器增加代码格式化的选项 -事件和脚本编辑器中Ctrl+S可以进行保存 -显示选择项提供颜色控制 -事件的移动勇士增加前进和后退两个操作 -事件编辑器的下拉框增加滚动条 -通关后将询问是否进行评分 -录像播放失败后可以回退到上个节点 -修复已知的所有Bug,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.5.4 - -发布15x15的版本 -独立出来的公共事件 -支持多重装备(一个装备可以装到多个孔上) -工具栏按钮增添至8个,快捷商店和虚拟键盘同时显示 -点击状态栏的金币图标也可以打开快捷商店 -等待事件提供flag:px和flag:py在0~415之间 -事件:呼出存读档界面;呼出怪物手册 -事件:使用道具,暂停背景音乐,暂停所有音效 -type:trigger可以触发系统事件 -独立开关 -贴图也可以支持帧动画了 -图块内置颜色选择器 -标题界面增加音乐按钮 -等待事件可被Ctrl(长按)跳过 -部分Bug修复,大量细节优化,性能进一步得到提升 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.5.3 - -标题界面事件化;现在可以用事件流来处理标题界面了 -动态canvas管理;无限图层,可以任意创建图层并使用 -状态栏canvas化,可以自行对状态栏进行绘制 -手机端新增1-7按钮,可点工具栏进行切换 -事件编辑器可以查看最近使用图块和搜索图块 -事件编辑器中增加增加颜色选择器 -对话框里`\f`可以自带立绘效果 -图片相关事件全部修改为动态canvas实现 -新增事件:滚动字幕 -新增事件:等待所有异步事件执行完毕 -新增事件:画面闪烁 -BGM缓存管理;新增事件:预加载BGM -新增天气:雾 -每次到达楼层执行的事件`eachArrive` -可以控制某些图块无全局动画效果 -背景/前景层的素材可以全局动画/动态Autotile效果 -可以为每个装备单独设置是否按比例增加 -地图编辑器中选中点高亮;双击选中素材;WASD平移大地图 -修复所有Bug,部分代码重构,大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.5.2 - -怪物和NPC的行走图和朝向问题(详见文档) -可以引入WindowSkin作为对话框的背景素材 -允许使用\t[标题,1.png]来绘制大头像图 -对话框的宽度可以根据文本长度自动调整 -\r[red]可以动态调整剧情文本的颜色 -升级事件改用事件编辑器完成 -每层楼都增添该层的并行事件处理 -新增快捷键:N返回标题;P游戏主页;O打开工程 -新增事件:设置全局属性或全局数值 -新增事件:隐藏/显示状态栏 -道具可以设置是否在回放时绘制道具栏或直接使用 -可以同时异步移动/跳跃勇士和多个NPC -可以同时异步移动两张或以上的图片了 -追加素材一次可以追加多个 -菜单栏中新增虚拟键盘的弹出 -修复所有已知Bug;部分细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.5.1 - -新增事件type:insert,可以插入另一个地点的事件执行(公共事件) -可以使用\r来控制剧情文本部分文字的颜色 -新增事件type:switch,多重分歧 -绘制前景/背景层时淡化其他图层 -追加素材的自动调整(如白底、不规范的素材) -浏览地图时:左上角/V开启显伤;右上角/Z查看当前层大地图 -允许在受到领域夹击等伤害后禁用快捷商店 -升级的扣除模式,即不显示经验值,只显示升级的所需剩余值 -装备增加可装备条件判定 -选项界面可以使用1-9快速选择 -未开启状态的快捷商店用灰色显示 -修复不能在背景/前景层绘图的Bug -部分其他细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.5 - -添加绘图模式支持;可以用户手动绘图和保存 -内置主动技能:二倍斩的支持,可以仿照制作其他主动技能 -将按键处理移动到脚本编辑中 -Alt+0\~9保存和读取当前套装 -图块属性的cannotOut和cannotIn控制可通行方向(来造成悬崖效果) -支持动态Autotile自动元件(仅在事件层有效) -允许快捷商店使用共用的times -未启用的快捷商店可以隐藏或预览 -开始剧情startText可以执行任意事件 -对话窗口可以任意调节位置(上中下、距离顶部/底部的像素值) -楼层转换界面可以设置背景图片文字颜色等 -数据统计进行分段描写,剑盾显示数值 -现在可以在事件编辑器中注释内容了 -存读档界面显示该存档的属性 -F7键可以开启debug模式 -R键可以从本地选取录像文件从头播放 -吸血属性的显伤增加^;仇恨怪显示仇恨伤害 -4键默认使用破冰稿或冰冻徽章或地震卷轴或上下楼器等等 -血瓶的道具化选项;黄宝石增加加点选项 -破炸飞增加默认音效 -修复单击瞬移的拖动打怪问题 -其他细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.4.4 - -tilesets可以设置图块属性(如可通行状态) -追加素材时可以更改图片色调 -防作弊手段的进一步加强:打开控制台则禁止上传成绩 -图块属性增加“是否可被破震”的选项 -模仿怪物内置模仿临界计算器 -部分其他细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.4.3 - -并行事件处理 -事件:设置楼层属性 -增加光环属性,还可以制作区域光环效果 -将部分代码移动到脚本编辑中 -(怪物属性获取、楼层传送、数据统计等) -事件改变天气或画面色调,读档后仍有效 -Autotile自动元件的新增和注册 -状态栏可以显示角色名字 -浏览地图可以显伤 -图片淡入淡出和移动图片可以将其保留 -双击道具栏图标直接进入装备栏 -可以设置剧情文本的字体大小 -录像播放可以最高24倍速 -1-6键快速设置录像播放速度;滚轮加减速 -进一步加强防作弊机制 -部分其他细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.4.2 - -允许导入tilesets直接使用,无需PS和注册 -tilesets的素材允许以矩形方式整体绘制 -Alt+0~9保存素材,Ctrl+0~9快速选中 -增加了透明块的支持 -装备允许按照百分比增加属性 -多动画的同时播放 -修复了打开存读档页面时闪屏的问题 -修复了cannotMove仍然能轻按和瞬移的问题 -所有已知Bug修复,部分代码重构和细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.4.1 - -增加背景层和前景层的图块绘制,多层图块可叠加 -背景层/前景层图块的显示、隐藏、修改等事件 -专门的装备页面(Q键开启);装备系统大改造 -灯光和漆黑层效果,通过插件函数方式给出 -将状态栏更新和阻激夹域的计算移动到脚本编辑中 -增加控制免疫阻激夹域的flag:no_zone等 -打字机效果时点击显示全部文字 -修复更改画面色调的Bug -修复更改剧情文本属性后读档恢复原样的问题 -部分细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.4 - -大地图的支持 -突破了5M的存档空间大小限制 -可以隐藏和显示楼层贴图 -事件:接收用户文本输入 -同点多事件的颜色块绘制 -录像播放时可以按PgUp/PgDn浏览地图 -录像播放时对于瞬间移动绘制箭头 -增加激光属性 -可以在读档时E键直接指定编号 -破炸飞可以在状态栏显示个数 -部分细节优化,所有已知Bug修复 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.3.3 - -将怪物特殊属性定义和伤害计算函数移动到脚本编辑中 -地图编辑器可以使用矩形方式绘制地图 -瞬间移动可以指定存在事件的点(如怪物、门、楼梯等) -事件:画面震动 -事件:更新怪物数据 -贴图可自适应遮挡效果 -默认不能走到将死的领域上 -移动事件和跳跃事件增加“不消失”选项 -获胜结局可以指定“不计入榜单” -RM动画导出器可以指定压缩比率 -修改默认bgm -修复读档开启战斗动画等Bug -大量细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.3.2 - -适配手机端的造塔页面 -启动服务的多开版本 -事件:跟随效果 -怪物数据导出器 -RM动画导出器也能导出音效 -gif播放可随着分辨率自动放缩 -状态栏可随文字长度自动调整放缩 -楼传器一次可以翻10层 -也可以用status:exp来代替经验值的写法 -V键也可以打开快捷商店 -破炸在周围只有一个目标时无需转向面对它 -道具效果中,无需再将null改成""才能双击编辑了 -各个已知Bug的修复,部分细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.3.1 - -存档采用高比率压缩,单个大小是原来的1/10! -默认存档数改成100页500个 -base64上传成绩,杜绝乱码 -道具栏翻页 -单击瞬移(菜单栏中开关) -重新补上E键打开光标 -楼层属性增添地下层选项,同层传送至上楼梯 -core.debug()穿墙模式不能穿出地图 -core.values和core.flags存入存档 -修复所有已知bug - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.3 - -启动服务和便捷PS工具(Mac版) -地图编辑器可以右键复制或移动图块 -事件:while循环处理 -事件:等待用户操作并获得按键或点击信息 -地图数据统计 -衰弱可以减少攻防的比例 -便捷PS工具可以批量导入素材 -楼层转换可以直接指定“上一楼”和“下一楼” -除Autotile外均可自动注册 -地图编辑器可以使用滚轮切换楼层 -支持status:x获得当前坐标 -core.debug()改成调试模式,可以Ctrl穿墙 -新建地图可以保留楼层属性 -地图编辑器可用PageUp和PageDown切换楼层 -提供大量素材,可直接取用 -重写大部分教程,新增大量拓展描述 -大量细节进行优化,所有已知的bug进行了修复 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.2 - -事件坐标可用变量指定("loc": ["flag:x", "flag:y"]) -全局商店也可以使用图块编辑 -高亮显示有事件的格子 -对于道具和怪物自动注册该列所有未注册的素材 -便捷PS工具对于白底图片可自动调整为透明背景 -事件:等待用户点击(type:wait) -事件:图片移动事件(type:moveImage) -事件:设置BGM音量(type:setVolume) -提供core.rand()和core.rand2()两个随机数函数 -作弊处理(最大有效生命值、匿名则最低成绩上传) -自定义状态栏绘制 -最高六倍速播放 -播放录像时可以C键查看怪物手册 -修复标题文字太长导致无法开始游戏的问题 -新增纯新手简易造塔流程 -部分效果和性能的优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.1.1 - -新增事件:改变勇士行走图 -楼传器落点设置 -录像回放从任意存档点开始 -录像过程中允许存档 -血网显伤 -怪物手册显示接下来的临界表 -重置当前楼层地图core.resetMap() -支持部分楼层不允许浏览地图 -修复部分浏览器无法进入游戏的Bug -其他细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.1 - -编辑器添加新建和删除按钮;地图自动保存 -录像支持倒退(录像播放中每20步自动存档,最多存30个) -Gif支持:可以作为楼层背景图或者使用显示动图事件 -图片显示增加淡入淡出效果 -APP端也能下载或读取文件 -地图临界显伤 -单个存档清理 -大数据魔塔的支持(临界计算等) -进一步对JS文件和图标进行压缩,大幅提高加载速度 -修复有时候无法输入ID的问题 -其他细节优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.0.1 - -道具使用效果的进一步分离 -支持插件编写,用户可以根据需求来写插件了 -文本编辑器支持自动补全和代码纠错 -部分UI界面发生变化,更加方便和美观 -所有已知Bug的修复 - ------------------------------------------------------------------------ - -HTML5魔塔样板V2.0 - -全GUI造塔,现在用户无需打开任何文件直接编辑JS代码了。 -整体改变目录架构,将数据和逻辑进行分离 -支持48x32的怪物和NPC素材 -加点改成系统开关进行处理,怪物手册会列出加点值 -支持带有血量上限的塔 -增加前景图片绘制 -便捷PS工具对于非标准的图片可以自动进行调整 -录像存储机制进行修改,对于道具记录全ID -其他细节的优化 - ------------------------------------------------------------------------ - -HTML5魔塔样板V1.4.1 - -改变图块(setBlock事件)。 -同一个点的多事件处理(做法详见文档)。 -增加新地图后可以接档而不用重新开始。 -增加可以接收用户输入的事件(type:input)。 -滚动字幕;自动剧情文本。 -可以同时show/hide多个事件。 -现在可以支持滑冰和推箱子事件了。 -地图中每个块的可通行方向控制(悬崖效果)。 -动画支持带旋转和翻转的帧。 -长按屏幕可跳过对话。 -现在可以允许用户丢弃道具了(例如不会再使用的装备)。 -修复行走时按键会发生动画抖动问题。 -修复无法打开战斗动画的Bug。 - ------------------------------------------------------------------------ - -HTML5魔塔样板V1.4 - -动画!动画!!动画!!! -瞬间移动。 -支持天气系统,可以在剧本中设置默认天气。 -新增自定义事件-图片显示。 -同时可以在剧本中设定多个背景素材。 -剧情文本特性控制,人物的对话框效果。 -单存档同步到服务器,下载到文件和读取。 -键盘支持自动寻路操作。 -浏览地图模式下可以查看怪物数据。 -未成功打怪和开门则不自动存档。 -重新支持楼梯穿透。 -支持多结局,成绩将分开统计。 -重构全局动画、行走动画和行走检测,大幅提升性能。 -修复所有已知Bug。 - ------------------------------------------------------------------------ - -HTML5魔塔样板V1.3.2 - -增加录像和回放功能。 -增加统计功能,现在能看到每部塔的游戏人数、通关人数和当前MAX了。 -增加浏览地图功能,玩家可以快速查看每层楼的地图。 -现在保存文件到本地,以及从本地文件读档了。 -可以在全局开关中设置剑盾是否作为装备存在。 -修复了部分已知Bug。 - ------------------------------------------------------------------------ - -HTML5魔塔样板V1.3.1: - -增加虚拟键盘。 -增加自动存档(回退),A键可快速读档。 -修复几处较为严重的Bug。 - ------------------------------------------------------------------------ - -HTML5魔塔样板V1.3: - -支持全键盘操作。 -支持将某个图片作为某层的背景素材。 -便捷PS工具支持更改图片色相。 -支持经验升级(进阶/境界塔)。 -打败怪物可以进行加点(加点塔)。 -增加阻击、N连击等属性;在怪物手册有属性显示。 -支持九宫格领域和大范围领域。 -增加负伤。 -支持各种BGM的播放。 -支持不同层使用不同的地面素材;支持多个Autotile同时存在。 -许多细节进行了优化,一些已知的Bug进行了修复。 - ------------------------------------------------------------------------ - -HTML5魔塔样板V1.2: - -新增:本地HTTP服务器。 -新增:可视化地图编辑工具。 -新增:便捷PS工具。 -移除了meaning.txt,现在“地图生成器”将直接从js文件中读取数字和图块对应关系。 -新增:对Autotile图块的支持。 -新增:怪物支持多种属性;添加仇恨属性。 -移除了不再支持的checkBlock,现在对于领域和夹击无需再手动指定可能的点了。 -新增:单向箭头、感叹号(单次通行)的支持。 -新增:更多的默认素材,现在对于大多数地图风格无需P图,直接替换即可。 -添加部分自定义事件,部分细节优化,一些已知的Bug进行了修复。 - ------------------------------------------------------------------------ - -HTML5魔塔样板V1.1: - -新增:战斗过程显示,可以在设置中关闭 -新增:勇士支持48*32(大图)的行走图 -新增:更改画面色调 -新增:文字显示支持自动换行 -部分修改状态栏UI -增添Web的Markdown文档,移除原本的doc和pdf文档。 -修复若干Bug。 diff --git a/素材整理下载地址.txt b/素材整理下载地址.txt deleted file mode 100644 index 76aa0f1f..00000000 --- a/素材整理下载地址.txt +++ /dev/null @@ -1,16 +0,0 @@ -将几个RM塔的素材进行归整后,上传到了百度网盘和QQ群文件可供下载使用。 - -包含: - - 地面图(Tilesets) - - 道具和帧动画 - - 行走图(勇士、怪物和NPC等) - - 动画(可被RM动画导出器直接导出) - - 自动元件(Autotiles) - - 音效 -等六个部分 - -百度网盘下载地址: - -https://pan.baidu.com/s/1vXICR79ZoP5LXujhlAjN-A - -也可以在HTML5魔塔交流群539113091的群文件中找“常用素材”下载。