html魔塔编辑器,migration.html

html魔塔编辑器,migration.htmlHTML5 魔塔样板 V2 7 接档工具 HTML5 魔塔样板 V2 7 接档工具 检查脚本编辑和插件编写 这两个绝对不能接 if functions d6ad677b 427a 4623 b50f a445a3b0ef8a events setInitData plugins bb40132b 638b 4a9f b028 d3fe47acc8d1 shop document

大家好,我是讯享网,很高兴认识大家。

HTML5魔塔样板V2.7接档工具

HTML5魔塔样板V2.7接档工具

// 检查脚本编辑和插件编写;这两个绝对不能接

if (functions_d6ad677b_427a_4623_b50f_a445a3b0ef8a.events.setInitData || !plugins_bb40132b_638b_4a9f_b028_d3fe47acc8d1.shop) {

document.write(“

错误:请勿覆盖脚本编辑(functions.js)和插件编写(plugins.js)!
请从全新的V2.7样板中复制一个functions.js和plugins.js到project文件夹,再继续接档操作。

”);

} else {

document.write(“

点此一键接档

接档成功!请重启编辑器并继续以下接档流程;若仍然无法打开编辑器请联系小艾处理。

”);

}

请严格按照如下流程,一步步进行接档操作。请勿随意增删接档过程,以免出现编辑器白屏、闪退等情况。

  1. 做好备份,做好备份,做好备份!!!接档前请一定先做好备份!
  2. 使用RM转H5刻塔器所刻的塔不适用于此接档工具。
  3. 将V2.6.6样板中project目录下,除了project/functions.jsproject/plugins.js以外的其他文件和文件夹,直接复制到最新的V2.7样板中,然后打开本接档工具。
  4. 点击上述的「点此一键接档」,并看到红字提示接档成功。此时编辑器应该可以正常打开。若此时无法打开编辑器请联系小艾处理。
  5. 下拉框切到「全塔属性」,并注意以下内容:
    • 现在素材和使用的其他图片等在文件夹中被拆分,请检查对应的图片文件已经正确移动到对应的文件夹。
    • 「难度选择项」的逻辑在V2.7中被修改;请重新制作。
    • 「全局商店」的结构在V2.7中被修改;请重新制作。
    • 部分方框进行了合并,请一个个仔细检查是否存在问题。
  6. 下拉框切到「楼层属性」,并注意以下内容:
    • item_ratio被重命名为ratio,请自行修改。
    • 楼层贴图的结构在V2.7中被修改;请重新制作。
  7. 素材区的如下图块有所变动:
    • 三色墙和六色门从terrains中解除引用;请用animates中的进行绘制。
    • 如下图块的图块属性已被重置:三色墙、六色门、四色网、四个单向箭头、亮灯。
    • 所有的noPass:false都改成canPass:true;请仔细检查可通行性。
    • 如下道具的道具属性已被重置,请仔细检查:三色钥匙、四色宝石(已改名Gem)、四色血瓶、破墙、破冰、炸弹、地震、冰冻、大黄门钥匙、上下楼器。
    • 即时道具获得的说明和提示文字均改成了\({}</code>计算&#xff0c;<code>ratio</code>需写明全称(参见宝石血瓶写法)&#xff0c;请自行处理。</li><li>npc48的默认动画帧数<code>null</code>改回为4&#xff1b;如需静止状态请手动改成1。</li></ul></li><li>下拉框切换到「脚本编辑」&#xff0c;并请重新编辑各个自己改过的函数(可以双开一个原版V266项目和当前接档的项目进行处理)。 <ul><li>请注意&#xff1a;V2.7中的经验全部从<code>experience</code>替换成简写的<code>exp</code>&#xff1b;写伤害计算等时请尤其注意。</li><li>部分文案有所改变&#xff0c;如「阻击」从<code>snipe</code>改名<code>repulse</code>&#xff0c;<code>shoes</code>改名<code>amulet</code>等等&#xff0c;请自行处理。</li><li><code>setInitData</code>已被删除&#xff0c;请将需要的额外初始化代码写入<code>startText</code>中。</li><li><code>afterChangeLight, afterUseBomb, afterPassNet</code>已被删除&#xff0c;请去对应图块属性内修改。</li><li>其他基本每个函数都有大幅修改&#xff0c;<b style="color:#FF0000;">请勿直接拿原来的脚本整体覆盖&#xff0c;而是重新对函数进行需要的编辑&#xff01;</b></li></ul></li><li>下拉框切换到「插件编写」&#xff0c;并重新新增自己加过的插件。 <ul><li>V2.7不能保证插件的兼容性&#xff0c;请谨慎测试。</li><li>如果插件出现不可用问题&#xff0c;请自行联系插件原作者更新插件到支持V2.7的版本。</li></ul></li><li>请仔细检查每个道具的道具效果、每个怪物的属性、每个楼层属性、以及每个点的事件(建议双开对比)。主要变动如下&#xff1a; <ul><li>「数值增减」事件已被删除并被数值操作&#43;运算符替代&#xff0c;编辑器将解析为自定义事件&#xff1b;但是游戏中仍然可以正确执行(你可以选择替换与否)。</li><li>「隐藏事件」将不再默认删除该点(而只是纯粹的隐藏)&#xff1b;请给有需要的「隐藏事件」勾选「同时删除」选项。</li><li>「绘制圆」「绘制圆边框」「重启当前事件」已经被删除&#xff0c;并且无法再在游戏中使用&#xff0c;请替换成等价的写法。</li></ul></li><li>其他 <ul><li>V2.7默认采用新版图标&#xff1b;如果觉得不合适可以将<code>materials</code>目录下的<code>icons_old.png</code>替换掉<code>icons.png</code>以使用原版图标。</li></ul></li><li><b style="color:#FF0000;">接档后请做好充分的测试&#xff01;最好能跑通录像以确认接档无误&#xff01;</b></li></ol> <p>function action() {<!-- --></p> <p>action_data(function() {<!-- --></p> <p>action_enemys(function() {<!-- --></p> <p>action_icons(function() {<!-- --></p> <p>action_items(function() {<!-- --></p> <p>action_maps(function() {<!-- --></p> <p>alert(&#39;接档成功&#xff01;请重启编辑器并继续以下接档流程&#xff1b;若仍然无法打开编辑器请联系小艾处理。&#39;);</p> <p>document.getElementById(&#39;action&#39;).style.display &#61; &#39;none&#39;;</p> <p>document.getElementById(&#39;message&#39;).style.display &#61; &#39;block&#39;;</p> <p>})</p> <p>})</p> <p>})</p> <p>})</p> <p>})</p> <p>}</p> <p>function encode(str) {<!-- --></p> <p>return btoa(encodeURIComponent(str).replace(/%([0-9A-F]{2})/g, function (match, p1) {<!-- --></p> <p>return String.fromCharCode(parseInt(p1, 16))</p> <p>}))</p> <p>}</p> <p>// 接档全局属性</p> <p>function action_data(callback) {<!-- --></p> <p>var data &#61; data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d;</p> <p>var main &#61; data.main, firstData &#61; data.firstData, values &#61; data.values, flags &#61; data.flags;</p> <p>// Step 0: 移动目录</p> <p>// materials</p> <p>[&#39;animates&#39;, &#39;enemys&#39;, &#39;items&#39;, &#39;npcs&#39;, &#39;terrains&#39;, &#39;enemy48&#39;, &#39;npc48&#39;, &#39;icons&#39;, &#39;airwall&#39;, &#39;fog&#39;, &#39;keyboard&#39;].forEach(function (one) {<!-- --></p> <p>fs.moveFile(&#39;project/images/&#39;&#43;one&#43;&#34;.png&#34;, &#39;project/materials/&#39;&#43;one&#43;&#39;.png&#39;, function (e, d) {});</p> <p>});</p> <p>main.tilesets.forEach(function (one) {<!-- --></p> <p>if (one.indexOf(&#39;.&#39;)&lt;0) one &#43;&#61; &#39;.png&#39;;</p> <p>fs.moveFile(&#39;project/images/&#39;&#43;one, &#39;project/tilesets/&#39;&#43;one, function (e, d) {});</p> <p>});</p> <p>// bgms</p> <p>main.bgms.forEach(function (one) {<!-- --></p> <p>fs.moveFile(&#39;project/sounds/&#39;&#43;one, &#39;project/bgms/&#39;&#43;one, function (e,d) {});</p> <p>})</p> <p>// Step 1: 重置levelChoose和shop</p> <p>main.levelChoose &#61; [];</p> <p>firstData.shops &#61; [];</p> <p>main.fonts &#61; [];</p> <p>// Step 2: 合并main.styles</p> <p>if (!main.styles) main.styles &#61; {<!-- --></p> <p>&#34;startBackground&#34;: &#34;project/images/bg.jpg&#34;,</p> <p>&#34;startVerticalBackground&#34;: &#34;project/images/bg.jpg&#34;,</p> <p>&#34;startLogoStyle&#34;: &#34;color: black&#34;,</p> <p>&#34;startButtonsStyle&#34;: &#34;background-color: #32369F; opacity: 0.85; color: #FFFFFF; border: #FFFFFF 2px solid; caret-color: #FFD700;&#34;,</p> <p>&#34;statusLeftBackground&#34;: &#34;url(project/materials/ground.png) repeat&#34;,</p> <p>&#34;statusTopBackground&#34;: &#34;url(project/materials/ground.png) repeat&#34;,</p> <p>&#34;toolsBackground&#34;: &#34;url(project/materials/ground.png) repeat&#34;,</p> <p>&#34;borderColor&#34;: [204,204,204,1],</p> <p>&#34;statusBarColor&#34;: [255,255,255,1],</p> <p>&#34;floorChangingStyle&#34;: &#34;background-color: black; color: white&#34;,</p> <p>&#34;font&#34;: &#34;Verdana&#34;</p> <p>};</p> <p>[&#34;startLogoStyle&#34;, &#34;startButtonsStyle&#34;, &#34;statusLeftBackground&#34;, &#34;statusTopBackground&#34;, &#34;toolsBackground&#34;, &#34;font&#34;].forEach(function (one) {<!-- --></p> <p>if (main[one]) main.styles[one] &#61; main[one];</p> <p>});</p> <p>if (main.styles.startVerticalBackground &#61;&#61; null) main.styles.startVerticalBackground &#61; main.styles.startBackground;</p> <p>for (var key in main.styles) delete main[key];</p> <p>delete main.floorChangingBackground; delete main.floorChangingTextColor;</p> <p>// Step 3: 重置勇士属性</p> <p>if (main.images.indexOf(&#39;hero.png&#39;) &lt; 0) main.images.push(&#39;hero.png&#39;);</p> <p>firstData.hero.image &#61; &#39;hero.png&#39;;</p> <p>firstData.hero.followers &#61; [];</p> <p>if (firstData.hero.exp &#61;&#61; null) firstData.hero.exp &#61; firstData.hero.experience;</p> <p>delete firstData.hero.experience;</p> <p>delete firstData.hero.items.keys;</p> <p>// Step 4: 重置全局开关</p> <p>if (values.statusCanvasRowsOnMobile &#61;&#61; null)</p> <p>values.statusCanvasRowsOnMobile &#61; flags.statusCanvasRowsOnMobile;</p> <p>delete flags.statusCanvasRowsOnMobile;</p> <p>if (values.redGem &#61;&#61; null) values.redGem &#61; values.redJewel;</p> <p>if (values.blueGem &#61;&#61; null) values.blueGem &#61; values.blueJewel;</p> <p>if (values.greenGem &#61;&#61; null) values.greenGem &#61; values.greenJewel;</p> <p>delete values.redJewel;</p> <p>delete values.blueJewel;</p> <p>delete values.greenJewel;</p> <p>delete values.moveSpeed;</p> <p>delete values.floorChangeTime;</p> <p>var statusList &#61; [</p> <p>&#34;enableFloor&#34;,</p> <p>&#34;enableName&#34;,</p> <p>&#34;enableLv&#34;,</p> <p>&#34;enableHPMax&#34;,</p> <p>&#34;enableHP&#34;,</p> <p>&#34;enableMana&#34;,</p> <p>&#34;enableAtk&#34;,</p> <p>&#34;enableDef&#34;,</p> <p>&#34;enableMDef&#34;,</p> <p>&#34;enableMoney&#34;,</p> <p>&#34;enableExp&#34;,</p> <p>&#34;enableLevelUp&#34;,</p> <p>&#34;levelUpLeftMode&#34;,</p> <p>&#34;enableKeys&#34;,</p> <p>&#34;enableGreenKey&#34;,</p> <p>&#34;enablePZF&#34;,</p> <p>&#34;enableDebuff&#34;,</p> <p>&#34;enableSkill&#34;</p> <p>];</p> <p>if (flags.statusBarItems &#61;&#61; null) {<!-- --></p> <p>flags.statusBarItems &#61; [];</p> <p>statusList.forEach(function (one) {<!-- --></p> <p>if (flags[one]) flags.statusBarItems.push(one);</p> <p>});</p> <p>}</p> <p>statusList.forEach(function (one) { delete flags[one]; });</p> <p>delete flags.pickaxeFourDirections;</p> <p>delete flags.bombFourDirections;</p> <p>delete flags.snowFourDirections;</p> <p>delete flags.bigKeyIsBox;</p> <p>delete flags.equipment;</p> <p>delete flags.iconInEquipbox;</p> <p>delete flags.hatredDecrease;</p> <p>delete flags.betweenAttackCeil;</p> <p>delete flags.startDirectly;</p> <p>delete flags.enableDisabledShop;</p> <p>delete flags.checkConsole;</p> <p>// 写入</p> <p>var datastr &#61; &#39;var data_a1e2fb4a_e986_4524_b0da_9b7ba7c0874d &#61; \n&#39;;</p> <p>datastr &#43;&#61; JSON.stringify(data, null, &#39;\t&#39;);</p> <p>fs.writeFile(&#39;project/data.js&#39;, encode(datastr), &#39;base64&#39;, function (err, data) {<!-- --></p> <p>if (err) {<!-- --></p> <p>alert(&#39;datas接档失败&#xff01;请查看控制台报错&#xff0c;并刷新重试。&#39;);</p> <p>console.error(err);</p> <p>} else callback();</p> <p>});</p> <p>}</p> <p>// 接档怪物&#xff1a;experience-&gt;exp</p> <p>function action_enemys(callback) {<!-- --></p> <p>var enemy &#61; enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80;</p> <p>for (var id in enemy) {<!-- --></p> <p>if (enemy[id].experience !&#61; null) {<!-- --></p> <p>enemy[id].exp &#61; enemy[id].experience;</p> <p>}</p> <p>delete enemy[id].experience;</p> <p>}</p> <p>var datastr &#61; &#39;var enemys_fcae963b_31c9_42b4_b48c_bb48d09f3f80 &#61; \n&#39;;</p> <p>var emap &#61; {};</p> <p>var estr &#61; JSON.stringify(enemy, function (k, t) {<!-- --></p> <p>if (t &amp;&amp; t.hp !&#61; null) {<!-- --></p> <p>delete t.id;</p> <p>var id_ &#61; &#34;:&#34; &#43; k &#43; &#34;:&#34;;</p> <p>emap[id_] &#61; JSON.stringify(t);</p> <p>return id_;</p> <p>} else return t;</p> <p>}, &#39;\t&#39;);</p> <p>for (var id_ in emap) {<!-- --></p> <p>estr &#61; estr.replace(&#39;&#34;&#39; &#43; id_ &#43; &#39;&#34;&#39;, emap[id_])</p> <p>}</p> <p>datastr &#43;&#61; estr;</p> <p>fs.writeFile(&#39;project/enemys.js&#39;, encode(datastr), &#39;base64&#39;, function (err, data) {<!-- --></p> <p>if (err) {<!-- --></p> <p>alert(&#39;enemys接档失败&#xff01;请查看控制台报错&#xff0c;并刷新重试。&#39;);</p> <p>console.error(err);</p> <p>} else callback();</p> <p>});</p> <p>}</p> <p>function action_icons(callback) {<!-- --></p> <p>var icons &#61; icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1;</p> <p>var terrains &#61; icons.terrains;</p> <p>// 三色墙&amp;六色门</p> <p>delete terrains.yellowWall;</p> <p>delete terrains.blueWall;</p> <p>delete terrains.whiteWall;</p> <p>delete terrains.yellowDoor;</p> <p>delete terrains.blueDoor;</p> <p>delete terrains.redDoor;</p> <p>delete terrains.greenDoor;</p> <p>delete terrains.specialDoor;</p> <p>delete terrains.steelDoor;</p> <p>// shop</p> <p>if (terrains.blueShopLeft &#61;&#61; null) terrains.blueShopLeft &#61; terrains[&#39;blueShop-left&#39;];</p> <p>if (terrains.blueShopRight &#61;&#61; null) terrains.blueShopRight &#61; terrains[&#39;blueShop-right&#39;];</p> <p>if (terrains.pinkShopLeft &#61;&#61; null) terrains.pinkShopLeft &#61; terrains[&#39;pinkShop-left&#39;];</p> <p>if (terrains.pinkShopRight &#61;&#61; null) terrains.pinkShopRight &#61; terrains[&#39;pinkShop-right&#39;];</p> <p>delete terrains[&#39;blueShop-left&#39;];</p> <p>delete terrains[&#39;blueShop-right&#39;];</p> <p>delete terrains[&#39;pinkShop-left&#39;];</p> <p>delete terrains[&#39;pinkShop-right&#39;];</p> <p>if (icons.items.snow !&#61; null) icons.items.freezeBadge &#61; icons.items.snow;</p> <p>delete icons.items.snow;</p> <p>var datastr &#61; &#39;var icons_4665ee12_3a1f_44a4_bea3_0fccba634dc1 &#61; \n&#39;;</p> <p>datastr &#43;&#61; JSON.stringify(icons, null, &#39;\t&#39;);</p> <p>fs.writeFile(&#39;project/icons.js&#39;, encode(datastr), &#39;base64&#39;, function (err, data) {<!-- --></p> <p>if (err) {<!-- --></p> <p>alert(&#39;icons接档失败&#xff01;请查看控制台报错&#xff0c;并刷新重试。&#39;);</p> <p>console.error(err);</p> <p>} else callback();</p> <p>});</p> <p>Object.keys(icons.autotile).forEach(function (one) {<!-- --></p> <p>fs.moveFile(&#39;project/images/&#39;&#43;one&#43;&#39;.png&#39;, &#39;project/autotiles/&#39;&#43;one&#43;&#39;.png&#39;, function (e,d) {});</p> <p>});</p> <p>}</p> <p>function action_items(callback) {<!-- --></p> <p>if (!items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.itemEffect || !items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.itemEffectTip) {<!-- --></p> <p>callback();</p> <p>return;</p> <p>}</p> <p>// Step 1: 合并内容</p> <p>var items &#61; items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a.items;</p> <p>[&#34;itemEffect&#34;, &#34;itemEffectTip&#34;, &#34;useItemEvent&#34;, &#34;useItemEffect&#34;, &#34;canUseItemEffect&#34;, &#34;equipCondition&#34;].forEach(function(one) {<!-- --></p> <p>var data &#61; items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a[one];</p> <p>if (!data) return;</p> <p>for (var id in data) {<!-- --></p> <p>if (data[id] !&#61; null &amp;&amp; items[id])</p> <p>items[id][one] &#61; data[id];</p> <p>}</p> <p>});</p> <p>// Step 2: 重置道具效果</p> <p>var data &#61; {<!-- --></p> <p>&#34;yellowKey&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;tools&#34;,</p> <p>&#34;name&#34;: &#34;黄钥匙&#34;,</p> <p>&#34;text&#34;: &#34;可以打开一扇黄门&#34;,</p> <p>&#34;hideInToolbox&#34;: true</p> <p>},</p> <p>&#34;blueKey&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;tools&#34;,</p> <p>&#34;name&#34;: &#34;蓝钥匙&#34;,</p> <p>&#34;text&#34;: &#34;可以打开一扇蓝门&#34;,</p> <p>&#34;hideInToolbox&#34;: true</p> <p>},</p> <p>&#34;redKey&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;tools&#34;,</p> <p>&#34;name&#34;: &#34;红钥匙&#34;,</p> <p>&#34;text&#34;: &#34;可以打开一扇红门&#34;,</p> <p>&#34;hideInToolbox&#34;: true</p> <p>},</p> <p>&#34;redGem&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;红宝石&#34;,</p> <p>&#34;text&#34;: &#34;攻击&#43;\){core.values.redGem}“,

      ”itemEffect“: ”core.status.hero.atk += core.values.redGem * core.status.thisMap.ratio“,

      ”itemEffectTip“: ”,攻击+\({core.values.redGem * core.status.thisMap.ratio}&#34;,</p> <p>&#34;useItemEffect&#34;: &#34;core.status.hero.atk &#43;&#61; core.values.redGem&#34;,</p> <p>&#34;canUseItemEffect&#34;: &#34;true&#34;</p> <p>},</p> <p>&#34;blueGem&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;蓝宝石&#34;,</p> <p>&#34;text&#34;: &#34;&#xff0c;防御&#43;\){core.values.blueGem}“,

      ”itemEffect“: ”core.status.hero.def += core.values.blueGem * core.status.thisMap.ratio“,

      ”itemEffectTip“: ”,防御+\({core.values.blueGem * core.status.thisMap.ratio}&#34;,</p> <p>&#34;useItemEffect&#34;: &#34;core.status.hero.def &#43;&#61; core.values.blueGem&#34;,</p> <p>&#34;canUseItemEffect&#34;: &#34;true&#34;</p> <p>},</p> <p>&#34;greenGem&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;绿宝石&#34;,</p> <p>&#34;text&#34;: &#34;&#xff0c;护盾&#43;\){core.values.greenGem}“,

      ”itemEffect“: ”core.status.hero.mdef += core.values.greenGem * core.status.thisMap.ratio“,

      ”itemEffectTip“: ”,护盾+\({core.values.greenGem * core.status.thisMap.ratio}&#34;,</p> <p>&#34;useItemEffect&#34;: &#34;core.status.hero.mdef &#43;&#61; core.values.greenGem&#34;,</p> <p>&#34;canUseItemEffect&#34;: &#34;true&#34;</p> <p>},</p> <p>&#34;yellowGem&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;黄宝石&#34;,</p> <p>&#34;text&#34;: &#34;可以进行加点&#34;,</p> <p>&#34;itemEffect&#34;: &#34;core.status.hero.hp&#43;&#61;1000;core.status.hero.atk&#43;&#61;6;core.status.hero.def&#43;&#61;6;core.status.hero.mdef&#43;&#61;10;&#34;,</p> <p>&#34;itemEffectTip&#34;: &#34;&#xff0c;全属性提升&#34;,</p> <p>&#34;useItemEvent&#34;: [</p> <p>{<!-- --></p> <p>&#34;type&#34;: &#34;choices&#34;,</p> <p>&#34;choices&#34;: [</p> <p>{<!-- --></p> <p>&#34;text&#34;: &#34;攻击&#43;1&#34;,</p> <p>&#34;action&#34;: [</p> <p>{<!-- --></p> <p>&#34;type&#34;: &#34;setValue&#34;,</p> <p>&#34;name&#34;: &#34;status:atk&#34;,</p> <p>&#34;operator&#34;: &#34;&#43;&#61;&#34;,</p> <p>&#34;value&#34;: &#34;1&#34;</p> <p>}</p> <p>]</p> <p>},</p> <p>{<!-- --></p> <p>&#34;text&#34;: &#34;防御&#43;2&#34;,</p> <p>&#34;action&#34;: [</p> <p>{<!-- --></p> <p>&#34;type&#34;: &#34;setValue&#34;,</p> <p>&#34;name&#34;: &#34;status:def&#34;,</p> <p>&#34;operator&#34;: &#34;&#43;&#61;&#34;,</p> <p>&#34;value&#34;: &#34;2&#34;</p> <p>}</p> <p>]</p> <p>},</p> <p>{<!-- --></p> <p>&#34;text&#34;: &#34;生命&#43;200&#34;,</p> <p>&#34;action&#34;: [</p> <p>{<!-- --></p> <p>&#34;type&#34;: &#34;setValue&#34;,</p> <p>&#34;name&#34;: &#34;status:hp&#34;,</p> <p>&#34;operator&#34;: &#34;&#43;&#61;&#34;,</p> <p>&#34;value&#34;: &#34;200&#34;</p> <p>}</p> <p>]</p> <p>}</p> <p>]</p> <p>}</p> <p>],</p> <p>&#34;canUseItemEffect&#34;: &#34;true&#34;</p> <p>},</p> <p>&#34;redPotion&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;红血瓶&#34;,</p> <p>&#34;text&#34;: &#34;&#xff0c;生命&#43;\){core.values.redPotion}“,

      ”itemEffect“: ”core.status.hero.hp += core.values.redPotion * core.status.thisMap.ratio“,

      ”itemEffectTip“: ”,生命+\({core.values.redPotion * core.status.thisMap.ratio}&#34;,</p> <p>&#34;useItemEffect&#34;: &#34;core.status.hero.hp &#43;&#61; core.values.redPotion&#34;,</p> <p>&#34;canUseItemEffect&#34;: &#34;true&#34;</p> <p>},</p> <p>&#34;bluePotion&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;蓝血瓶&#34;,</p> <p>&#34;text&#34;: &#34;&#xff0c;生命&#43;\){core.values.bluePotion}“,

      ”itemEffect“: ”core.status.hero.hp += core.values.bluePotion * core.status.thisMap.ratio“,

      ”itemEffectTip“: ”,生命+\({core.values.bluePotion * core.status.thisMap.ratio}&#34;,</p> <p>&#34;useItemEffect&#34;: &#34;core.status.hero.hp &#43;&#61; core.values.bluePotion&#34;,</p> <p>&#34;canUseItemEffect&#34;: &#34;true&#34;</p> <p>},</p> <p>&#34;yellowPotion&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;黄血瓶&#34;,</p> <p>&#34;text&#34;: &#34;&#xff0c;生命&#43;\){core.values.yellowPotion}“,

      ”itemEffect“: ”core.status.hero.hp += core.values.yellowPotion * core.status.thisMap.ratio“,

      ”itemEffectTip“: ”,生命+\({core.values.yellowPotion * core.status.thisMap.ratio}&#34;,</p> <p>&#34;useItemEffect&#34;: &#34;core.status.hero.hp &#43;&#61; core.values.yellowPotion&#34;,</p> <p>&#34;canUseItemEffect&#34;: &#34;true&#34;</p> <p>},</p> <p>&#34;greenPotion&#34;: {<!-- --></p> <p>&#34;cls&#34;: &#34;items&#34;,</p> <p>&#34;name&#34;: &#34;绿血瓶&#34;,</p> <p>&#34;text&#34;: &#34;&#xff0c;生命&#43;\){core.values.greenPotion}“,

      ”itemEffect“: ”core.status.hero.hp += core.values.greenPotion * core.status.thisMap.ratio“,

      ”itemEffectTip“: ”,生命+${core.values.greenPotion * core.status.thisMap.ratio}“,

      ”useItemEffect“: ”core.status.hero.hp += core.values.greenPotion“,

      ”canUseItemEffect“: ”true“

      },

      ”freezeBadge“: {

      ”cls“: ”constants“,

      ”name“: ”冰冻徽章“,

      ”text“: ”可以将面前的熔岩变成平地“,

      ”useItemEffect“: ”(function () {\n\tvar success = false;\n\n\tvar snowFourDirections = false; // 是否四方向雪花;如果是将其改成true\n\tif (snowFourDirections) {\n\t\t// 四方向雪花\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc(‘x’) + delta.x,\n\t\t\t\tny = core.getHeroLoc(‘y’) + delta.y;\n\t\t\tif (core.getBlockId(nx, ny) == ‘lava’) {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\tif (core.getBlockId(core.nextX(), core.nextY()) == ‘lava’) {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.drawTip(core.material.items[itemId].name + ‘使用成功’);\n\t} else {\n\t\tcore.drawTip(&#34;当前无法使用&#34; + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();“,

      ”canUseItemEffect“: ”true“

      },

      ”bigKey“: {

      ”cls“: ”tools“,

      ”name“: ”大黄门钥匙“,

      ”text“: ”可以开启当前层所有黄门“,

      ”itemEffect“: ”core.status.hero.items.keys.yellowKey++;core.status.hero.items.keys.blueKey++;core.status.hero.items.keys.redKey++;“,

      ”itemEffectTip“: ”,全钥匙+1“,

      ”useItemEffect“: ”(function () {\n\tvar actions = core.searchBlock(&#34;yellowDoor&#34;).map(function (block) {\n\t\treturn { &#34;type&#34;: &#34;openDoor&#34;, &#34;loc&#34;: [block.x, block.y], &#34;async&#34;: true };\n\t});\n\tactions.push({ &#34;type&#34;: &#34;waitAsync&#34; });\n\tactions.push({ &#34;type&#34;: &#34;tip&#34;, &#34;text&#34;: core.material.items[itemId].name + &#34;使用成功&#34; });\n\tcore.insertAction(actions);\n})();“,

      ”canUseItemEffect“: ”(function () {\n\treturn core.searchBlock(‘yellowDoor’).length &gt; 0;\n})();“

      },

      ”pickaxe“: {

      ”cls“: ”tools“,

      ”name“: ”破墙镐“,

      ”text“: ”可以破坏勇士面前的墙“,

      ”useItemEffect“: ”(function () {\n\tvar canBreak = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable) return false;\n\t\treturn block.block.event.canBreak;\n\t};\n\n\tvar success = false;\n\tvar pickaxeFourDirections = false; // 是否四方向破;如果是将其改成true\n\tif (pickaxeFourDirections) {\n\t\t// 四方向破\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc(‘x’) + delta.x,\n\t\t\t\tny = core.getHeroLoc(‘y’) + delta.y;\n\t\t\tif (canBreak(nx, ny)) {\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t\tsuccess = true;\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅破当前\n\t\tif (canBreak(core.nextX(), core.nextY())) {\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t\tsuccess = true;\n\t\t}\n\t}\n\n\tif (success) {\n\t\tcore.playSound(‘pickaxe.mp3’);\n\t\tcore.drawTip(core.material.items[itemId].name + ‘使用成功’);\n\t} else {\n\t\t// 无法使用\n\t\tcore.drawTip(&#34;当前无法使用&#34; + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n})();“,

      ”canUseItemEffect“: ”true“

      },

      ”icePickaxe“: {

      ”cls“: ”tools“,

      ”name“: ”破冰镐“,

      ”text“: ”可以破坏勇士面前的一堵冰墙“,

      ”useItemEffect“: ”(function () {\n\tcore.removeBlock(core.nextX(), core.nextY());\n\tcore.drawTip(core.material.items[itemId].name + ‘使用成功’);\n})();“,

      ”canUseItemEffect“: ”(function () {\n\treturn core.getBlockId(core.nextX(), core.nextY()) == ‘ice’;\n})();“

      },

      ”bomb“: {

      ”cls“: ”tools“,

      ”name“: ”炸弹“,

      ”text“: ”可以炸掉勇士面前的怪物“,

      ”useItemEffect“: ”(function () {\n\tvar canBomb = function (x, y) {\n\t\tvar block = core.getBlock(x, y);\n\t\tif (block == null || block.block.disable || block.block.event.cls.indexOf(‘enemy’) != 0) return false;\n\t\tvar enemy = core.material.enemys[block.block.event.id];\n\t\treturn enemy && !enemy.notBomb;\n\t};\n\n\tvar bombList = []; // 炸掉的怪物坐标列表\n\tvar bombFourDirections = false; // 是否四方向可炸;如果是将其改成true。\n\tif (bombFourDirections) {\n\t\t// 四方向炸\n\t\tfor (var direction in core.utils.scan) {\n\t\t\tvar delta = core.utils.scan[direction];\n\t\t\tvar nx = core.getHeroLoc(‘x’) + delta.x,\n\t\t\t\tny = core.getHeroLoc(‘y’) + delta.y;\n\t\t\tif (canBomb(nx, ny)) {\n\t\t\t\tbombList.push([nx, ny]);\n\t\t\t\tcore.removeBlock(nx, ny);\n\t\t\t}\n\t\t}\n\t} else {\n\t\t// 仅炸当前\n\t\tif (canBomb(core.nextX(), core.nextY())) {\n\t\t\tbombList.push([core.nextX(), core.nextY()]);\n\t\t\tcore.removeBlock(core.nextX(), core.nextY());\n\t\t}\n\t}\n\n\tif (bombList.length &gt; 0) {\n\t\tcore.playSound(‘bomb.mp3’);\n\t\tcore.drawTip(core.material.items[itemId].name + ‘使用成功’);\n\t} else {\n\t\tcore.drawTip(‘当前无法使用’ + core.material.items[itemId].name);\n\t\tcore.addItem(itemId, 1);\n\t\treturn;\n\t}\n\n\t// 炸弹后事件\n\t// 这是一个使用炸弹也能开门的例子\n\t/\n\tif (core.status.floorId==‘xxx’ && core.terrainExists(x0,y0,‘specialDoor’) // 某个楼层,该机关门存在\n\t\t&& !core.enemyExists(x1,y1) && !core.enemyExists(x2,y2)) // 且守门的怪物都不存在\n\t{\n\t\tcore.insertAction([ // 插入事件\n\t\t\t{&#34;type&#34;: &#34;openDoor&#34;, &#34;loc&#34;: [x0,y0]} // 开门\n\t\t])\n\t}\n\t/\n})();“,

      ”canUseItemEffect“: ”true“

      },

      ”upFly“: {

      ”cls“: ”tools“,

      ”name“: ”上楼器“,

      ”text“: ”可以飞往楼上的相同位置“,

      ”useItemEffect“: ”(function () {\n\tvar floorId = core.floorIds[core.floorIds.indexOf(core.status.floorId) + 1];\n\tif (core.status.event.id == ‘action’) {\n\t\tcore.insertAction([\n\t\t\t{ &#34;type&#34;: &#34;changeFloor&#34;, &#34;loc&#34;: [core.getHeroLoc(‘x’), core.getHeroLoc(‘y’)], &#34;floorId&#34;: floorId },\n\t\t\t{ &#34;type&#34;: &#34;tip&#34;, &#34;text&#34;: core.material.items[itemId].name + ‘使用成功’ }\n\t\t]);\n\t} else {\n\t\tcore.changeFloor(floorId, null, core.status.hero.loc, null, function () {\n\t\t\tcore.drawTip(core.material.items[itemId].name + ‘使用成功’);\n\t\t\tcore.replay();\n\t\t});\n\t}\n})();“,

      ”canUseItemEffect“: ”(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index &lt; core.floorIds.length - 1) {\n\t\tvar toId = core.floorIds[index + 1],\n\t\t\ttoX = core.getHeroLoc(‘x’),\n\t\t\ttoY = core.getHeroLoc(‘y’);\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX &gt;= 0 && toX &lt; mw && toY &gt;= 0 && toY &lt; mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();“

      },

      ”downFly“: {

      ”cls“: ”tools“,

      ”name“: ”下楼器“,

      ”text“: ”可以飞往楼下的相同位置“,

      ”useItemEffect“: ”(function () {\n\tvar floorId = core.floorIds[core.floorIds.indexOf(core.status.floorId) - 1];\n\tif (core.status.event.id == ‘action’) {\n\t\tcore.insertAction([\n\t\t\t{ &#34;type&#34;: &#34;changeFloor&#34;, &#34;loc&#34;: [core.getHeroLoc(‘x’), core.getHeroLoc(‘y’)], &#34;floorId&#34;: floorId },\n\t\t\t{ &#34;type&#34;: &#34;tip&#34;, &#34;text&#34;: core.material.items[itemId].name + ‘使用成功’ }\n\t\t]);\n\t} else {\n\t\tcore.changeFloor(floorId, null, core.status.hero.loc, null, function () {\n\t\t\tcore.drawTip(core.material.items[itemId].name + ‘使用成功’);\n\t\t\tcore.replay();\n\t\t});\n\t}\n})();“,

      ”canUseItemEffect“: ”(function () {\n\tvar floorId = core.status.floorId,\n\t\tindex = core.floorIds.indexOf(floorId);\n\tif (index &gt; 0) {\n\t\tvar toId = core.floorIds[index - 1],\n\t\t\ttoX = core.getHeroLoc(‘x’),\n\t\t\ttoY = core.getHeroLoc(‘y’);\n\t\tvar mw = core.floors[toId].width,\n\t\t\tmh = core.floors[toId].height;\n\t\tif (toX &gt;= 0 && toX &lt; mw && toY &gt;= 0 && toY &lt; mh && core.getBlock(toX, toY, toId) == null) {\n\t\t\treturn true;\n\t\t}\n\t}\n\treturn false;\n})();“

      },

      ”earthquake“: {

      ”cls“: ”tools“,

      ”name“: ”地震卷轴“,

      ”text“: ”可以破坏当前层的所有墙“,


      讯享网

      ”useItemEffect“: ”(function () {\n\tvar indexes = [];\n\tfor (var index in core.status.thisMap.blocks) {\n\t\tvar block = core.status.thisMap.blocks[index];\n\t\tif (!block.disable && block.event.canBreak) {\n\t\t\tindexes.push(index);\n\t\t}\n\t}\n\tcore.removeBlockByIndexes(indexes);\n\tcore.drawMap(core.status.floorId, function () {\n\t\tcore.drawTip(core.material.items[itemId].name + ‘使用成功’);\n\t});\n})();“,

      ”canUseItemEffect“: ”(function () {\n\treturn core.status.thisMap.blocks.filter(function (block) {\n\t\treturn !block.disable && block.event.canBreak;\n\t}).length &gt; 0;\n})();“

      },

      };

      for (var id in data) {

      items[id] = data[id];

      }

      var datastr = ‘var items_296f5d02_12fd_4166_a7c1_b5e830c9ee3a = \n’;

      datastr += JSON.stringify(items, function (k, v) {

      if (v && v.id != null) delete v.id;

      return v;

      }, ‘\t’);

      fs.writeFile(‘project/items.js’, encode(datastr), ‘base64’, function (err, data) {

      if (err) {

      alert(‘items接档失败!请查看控制台报错,并刷新重试。’);

      console.error(err);

      } else callback();

      });

      }

      function action_maps(callback) {

      var maps = maps_90f36752_8815_4be8_b32b_d7fad1d0542e;

      var data = {

      ”1“: {”cls“:”animates“,”id“:”yellowWall“,”canBreak“:true,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{}}},

      ”2“: {”cls“:”animates“,”id“:”whiteWall“,”canBreak“:true,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{}}},

      ”3“: {”cls“:”animates“,”id“:”blueWall“,”canBreak“:true,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{}}},

      ”7“: {”cls“:”terrains“,”id“:”blueShopLeft“},

      ”8“: {”cls“:”terrains“,”id“:”blueShopRight“},

      ”9“: {”cls“:”terrains“,”id“:”pinkShopLeft“},

      ”10“: {”cls“:”terrains“,”id“:”pinkShopRight“},

      ”11“: {”cls“:”animates“,”id“:”lavaNet“,”canPass“:true,”trigger“:”null“,”script“:”(function () {\n\t// 血网的伤害效果移动到 checkBlock 中处理\n\n\t// 如果要做一次性血网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc(‘x’), core.getHeroLoc(‘y’));\n})();“,”name“:”血网“},

      ”12“: {”cls“:”animates“,”id“:”poisonNet“,”canPass“:true,”trigger“:”null“,”script“:”(function () {\n\t// 直接插入公共事件进行毒处理\n\tif (!core.hasItem(‘amulet’)) {\n\t\tcore.insertAction({ &#34;type&#34;: &#34;insert&#34;, &#34;name&#34;: &#34;毒衰咒处理&#34;, &#34;args&#34;: [0] });\n\t}\n\n\t// 如果要做一次性毒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc(‘x’), core.getHeroLoc(‘y’));\n})()“,”name“:”毒网“},

      ”13“: {”cls“:”animates“,”id“:”weakNet“,”canPass“:true,”trigger“:”null“,”script“:”(function () {\n\t// 直接插入公共事件进行衰处理\n\tif (!core.hasItem(‘amulet’)) {\n\t\tcore.insertAction({ &#34;type&#34;: &#34;insert&#34;, &#34;name&#34;: &#34;毒衰咒处理&#34;, &#34;args&#34;: [1] });\n\t}\n\n\t// 如果要做一次性衰网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc(‘x’), core.getHeroLoc(‘y’));\n})()“,”name“:”衰网“},

      ”14“: {”cls“:”animates“,”id“:”curseNet“,”canPass“:true,”trigger“:”null“,”script“:”(function () {\n\t// 直接插入公共事件进行咒处理\n\tif (!core.hasItem(‘amulet’)) {\n\t\tcore.insertAction({ &#34;type&#34;: &#34;insert&#34;, &#34;name&#34;: &#34;毒衰咒处理&#34;, &#34;args&#34;: [2] });\n\t}\n\n\t// 如果要做一次性咒网,可直接注释掉下面这句话:\n\t// core.removeBlock(core.getHeroLoc(‘x’), core.getHeroLoc(‘y’));\n})()“,”name“:”咒网“},

      ”54“: {”cls“:”items“,”id“:”freezeBadge“},

      ”81“: {”cls“:”animates“,”id“:”yellowDoor“,”trigger“:”openDoor“,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{”yellowKey“:1}},”name“:”黄门“},

      ”82“: {”cls“:”animates“,”id“:”blueDoor“,”trigger“:”openDoor“,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{”blueKey“:1}},”name“:”蓝门“},

      ”83“: {”cls“:”animates“,”id“:”redDoor“,”trigger“:”openDoor“,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{”redKey“:1}},”name“:”红门“},

      ”84“: {”cls“:”animates“,”id“:”greenDoor“,”trigger“:”openDoor“,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{”greenKey“:1}},”name“:”绿门“},

      ”85“: {”cls“:”animates“,”id“:”specialDoor“,”trigger“:”openDoor“,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{”specialKey“:1}},”name“:”机关门“},

      ”86“: {”cls“:”animates“,”id“:”steelDoor“,”trigger“:”openDoor“,”animate“:1,”doorInfo“:{”time“:160,”openSound“:”door.mp3“,”closeSound“:”door.mp3“,”keys“:{”steelKey“:1}},”name“:”铁门“},

      ”161“: {”cls“:”terrains“,”id“:”arrowUp“,”canPass“:true,”cannotOut“:[”left“,”right“,”down“],”cannotIn“:[”up“]},

      ”162“: {”cls“:”terrains“,”id“:”arrowDown“,”canPass“:true,”cannotOut“:[”left“,”right“,”up“],”cannotIn“:[”down“]},

      ”163“: {”cls“:”terrains“,”id“:”arrowLeft“,”canPass“:true,”cannotOut“:[”up“,”down“,”right“],”cannotIn“:[”left“]},

      ”164“: {”cls“:”terrains“,”id“:”arrowRight“,”canPass“:true,”cannotOut“:[”up“,”down“,”left“],”cannotIn“:[”right“]},

      ”165“: {”cls“:”terrains“,”id“:”light“,”trigger“:”null“,”canPass“:true,”script“:”(function () {\n\tcore.setBlock(core.getNumberById(‘darkLight’), core.getHeroLoc(‘x’), core.getHeroLoc(‘y’));\n})();“},

      };

      for (var id in data) {

      maps[id] = data[id];

      }

      for (var id in maps) {

      if (maps[id].noPass === false || maps[id].noPass === ‘false’)

      maps[id].canPass = true;

      delete maps[id].noPass;

      }

      var datastr = ‘var maps_90f36752_8815_4be8_b32bd7fad1d0542e = \n’;

      var emap = {};

      var estr = JSON.stringify(maps, function (k, v) {

      if (v && v.id != null) {

      var id = ‘:’ + v.id + ‘:’;

      emap[id] = JSON.stringify(v);

      return id;

      } else return v

      }, ‘\t’);

      for (var id_ in emap) {

      estr = estr.replace(‘”’ + id_ + ‘“’, emap[id_])

      }

      datastr += estr;

      fs.writeFile(‘project/maps.js’, encode(datastr), ‘base64’, function (err, data) {

      if (err) {

      alert(‘maps接档失败!请查看控制台报错,并刷新重试。’);

      console.error(err);

      } else callback();

      });

      }

      一键复制

      编辑

      Web IDE

      原始数据

      按行查看

      历史

小讯
上一篇 2025-02-22 14:03
下一篇 2025-01-09 14:39

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/61490.html