<!doctype html> <html> <head> <meta charset="utf-8"> <link href="_server/css/editor.css" rel="stylesheet"> <link href="_server/CodeMirror/codemirror.css" rel="stylesheet"> <link href="_server/thirdparty/awesomplete.css" rel="stylesheet"> <link id="color_css" rel="stylesheet"> <link rel="icon" href="data:;base64,iVBORw0KGgo="> </head> <body> <script> if(innerWidth<innerHeight){ //pic:1242*2208 | chrome info:1340*2380 confirm('高大于宽的设备请使用移动版本的editor, 点击确定跳转')?(window.location='./editor-mobile.html'):''; } if (location.protocol.indexOf("http")!=0) { alert("请在启动服务中打开本编辑器!不然包括编辑在内的绝大多数功能都无法使用。"); } </script> <div class="main"> <div id="left" style="z-index:-1;opacity: 0;"><!-- map --> <div id="arrEditor"> <table class="col" id='arrColMark'></table> <table class="row" id='arrRowMark'></table> <div id="mapEditArea"> <textarea cols="10" rows="10" id="pout"></textarea> </div> <div id="editTip"> <input type="button" value="新建空白地图" id='newMap'/> <input id='newFileName' placeholder="新楼层id" style="width: 70px"/> <span style="vertical-align: bottom">宽</span> <input id='newMapWidth' style="width: 20px"/> <span style="vertical-align: bottom">高</span> <input id='newMapHeight' style="width: 20px"/> <input type="checkbox" id='newMapStatus' checked='checked' style='vertical-align: bottom'/> <span style='vertical-align: bottom; margin-left: -4px'>保留楼层属性</span> </div> <div id="editBtns"> <input type="button" value="导出并复制地图" id="exportMap"/> <input type="button" value="从框中导入地图" id="importMap"/> <input type="button" value="清除地图" id='clearMapButton'/> <input type="button" value="删除地图" id="deleteMap"/> </div> <input type="button" value="批量创建空白地图 ↓" id='newMaps'/> <div id='newFloors' style='display:none'> <span style="vertical-align: bottom">楼层ID格式: </span> <input id='newFloorIds' style="width: 70px" value='MT${i}'/> <span style="vertical-align: bottom">地图中文名格式: </span> <input id='newFloorTitles' style="width: 100px" value='主塔 ${i} 层'/> <br/> <span style="vertical-align: bottom">状态栏名称: </span> <input id='newFloorNames' style="width: 70px" value='${i}'/> <span style="vertical-align: bottom">宽</span> <input id='newMapsWidth' style="width: 20px"/> <span style="vertical-align: bottom">高</span> <input id='newMapsHeight' style="width: 20px"/> <input type="checkbox" id='newMapsStatus' checked='checked' style='vertical-align: bottom'/> <span style='vertical-align: bottom; margin-left: -4px'>保留楼层属性</span> <br/> <span style="vertical-align: bottom">从 i=</span> <input id='newMapsFrom' value="1" style="width: 20px"/> <span style="vertical-align: bottom">到</span> <input id='newMapsTo' value="5" style="width: 20px"/> <input type="button" value="确认创建" id='createNewMaps'> </div> </div> </div> <div id="left1" class='leftTab' style="z-index:-1;opacity: 0;"><!-- appendpic --> <h3 class="leftTabHeader">追加素材</h3> <div class="leftTabContent"> <p> <input id="selectFileBtn" type="button" value="导入文件到画板"/> <select id="selectAppend"></select> <!-- ["terrains", "animates", "enemys", "enemy48", "items", "npcs", "npc48"] --> <input id="appendConfirm" type="button" value="追加"/> <input id="quickAppendConfirm" type="button" value="快速追加"/> <span style="font-size: 13px"> 自动注册</span><input id="appendRegister" type="checkbox" checked/> </p> <p><small>从V2.7.1开始,你可以直接将素材图片拖到对应的素材区,将自动追加并注册。同时,4x4的道具素材已支持快速追加一次16个。</small></p> <p> 色相:<input id='changeColorInput' type="range" min="0" max="12" step="1" value="0" list="huelists" style="width: 60%;margin-left: 3%;vertical-align: middle"> <datalist id="huelists" style="display: none"> <option value="0"/><option value="1"/><option value="2"/> <option value="3"/><option value="4"/><option value="5"/> <option value="6"/><option value="7"/><option value="8"/> <option value="9"/><option value="10"/><option value="11"/><option value="12"/> </datalist> </p> <div id="appendPicCanvas" style="position:relative;overflow: auto;height:470px;"> <canvas style="position:absolute"></canvas><!-- 用于画出灰白相间背景 --> <canvas style="position:absolute"></canvas><!-- 用于画出选中文件 --> <canvas style="position:absolute;z-index:100"></canvas><!-- 用于响应鼠标点击 --> <canvas style="position:absolute;display:none;"></canvas><!-- 画出追加后的sprite用于储存 --> <div id="appendPicSelection"> <div class="appendSelection"><span style="top: 0; left: 2px;">1</span></div> <div class="appendSelection"><span style="top: 0; left: 14px;">2</span></div> <div class="appendSelection"><span style="top: 12px; left: 2px;">3</span></div> <div class="appendSelection"><span style="top: 12px; left: 14px;">4</span></div> </div> </div> </div> </div> <div id="left2" class='leftTab' style="z-index:-1;opacity: 0;"><!-- loc --> <h3 class="leftTabHeader">地图选点 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.uifunctions.addAutoEvent()">添加自动事件页</button> <button onclick="editor_multi.editCommentJs('loc')">配置表格</button> </h3> <div class="leftTabContent"> <p id='pos_a6771a78_a099_417c_828f_0a24851ebfce' style="margin-left: 15px">0,0</p> <div class='etable'> <table> <tbody id='table_3d846fc4_7644_44d1_aa04_433d266a73df'> <tr> <td>条目</td> <td>注释</td> <td>值</td> </tr> </tbody> </table> </div> </div> </div> <div id="left3" class='leftTab' style="z-index:-1;opacity: 0;"><!-- enemyitem --> <h3 class="leftTabHeader">图块属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('enemyitem')">配置表格</button> </h3> <div class="leftTabContent"> <div id="enemyItemTable"><!-- enemy and item --> <div class='etable'> <table> <tbody id='table_a3f03d4c_55b8_4ef6_b362_b345783acd72'> <tr> <td>条目</td> <td>注释</td> <td>值</td> </tr> </tbody> </table> </div> <div style="margin-top: -10px; margin-bottom: 10px"> <button id="copyEnemyItem">复制属性</button> <button id="pasteEnemyItem">粘贴属性</button> <button id="clearEnemyItem">清空属性</button> <button id="clearAllEnemyItem">批量清空属性</button> </div> </div> <div id='newIdIdnum'><!-- id and idnum --> <input placeholder="新id(唯一标识符)"/> <input placeholder="新idnum(10000以内数字)"/> <button>确定</button> <br/> <button style="margin-top: 10px">自动注册</button> <button style="margin-top: 10px; margin-left: 5px">删除此素材</button> <button style="margin-top: 10px; margin-left: 5px">以此素材为模板追加</button> </div> <div id='changeId'><!-- id and idnum --> <input placeholder="修改图块id为" style="width: 100px"/> <button>确定</button> <button style="margin-left: 5px">删除此素材</button> <button style="margin-left: 5px">以此素材为模板追加</button> </div> </div> </div> <div id="left4" class='leftTab' style="z-index:-1;opacity: 0;"><!-- floor --> <h3 class="leftTabHeader">楼层属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('floor')">配置表格</button> </h3> <div class="leftTabContent"> <div class='etable'> <table> <tbody id='table_4a3b1b09_b2fb_4bdf_b9ab_9f4cdac14c74'> <tr> <td>条目</td> <td>注释</td> <td>值</td> </tr> </tbody> </table> </div> <div id='changeFloorId'><!-- id and idnum --> <input placeholder="修改floorId为"/> <button>确定</button> </div> <div id='changeFloorSize' style="font-size: 13px;"> 修改地图大小:宽<input style="width: 25px;" value="13" />,高<input style="width: 25px;" value="13" />, 偏移x<input style="width: 25px;" value="0" /> y<input style="width: 25px;" value="0" /> <button>确定</button> </div> </div> </div> <div id="left5" class='leftTab' style="z-index:-1;opacity: 0;"><!-- tower --> <h3 class="leftTabHeader">全塔属性 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.mode.changeDoubleClickModeByButton('add')">添加</button> <button onclick="editor_multi.editCommentJs('tower')">配置表格</button> </h3> <div class="leftTabContent"> <div class='etable'> <table> <tbody id='table_b6a03e4c_5968_4633_ac40_0dfdd2c9cde5'> <tr> <td>条目</td> <td>注释</td> <td>值</td> </tr> </tbody> </table> </div> </div> </div> <div id="left6" class='leftTab' style="z-index:-1;opacity: 0;"> <div style="position: relative; height: 95%"><!-- eventsEditor --> <h3>事件编辑器 <!-- <button onclick="editor_blockly.showXML()">Show XML</button> <button onclick="editor_blockly.runCode()">console.log(obj=code)</button> --> <button onclick="editor_blockly.confirm()">确认</button> <button onclick="editor_blockly.confirm(true)">应用</button> <button id='blocklyParse' onclick="editor_blockly.parse()">解析</button> <button onclick="editor_blockly.cancel()">取消</button> <div style="position: relative; display: inline-block; margin-left: 10px"> <div class="searchLogo"></div> <input type="text" id="searchBlock" placeholder="搜索事件块..."/> </div> <button class="cpPanel" onclick="editor_blockly.selectPointFromButton()" style="margin-left:5px">地图选点</button> <button class="cpPanel" onclick="editor.uievent.searchUsedFlags()" style="margin-left:5px">变量出现位置搜索</button> <input type="checkbox" class="cpPanel" id="blocklyReplace" onchange="editor_blockly.triggerReplace()" style="margin-left: 10px" /> <span class="cpPanel" style="margin-left: -4px; font-size: 13px">开启中文名替换</span> <input type="checkbox" class="cpPanel" id="blocklyExpandCompare" onchange="editor_blockly.triggerExpandCompare()" style="margin-left: 10px" /> <span class="cpPanel" style="margin-left: -4px; font-size: 13px">展开值块逻辑运算</span> <xml id="toolbox" style="display:none"> </xml> </h3> <div style="position: relative;height: 100%"> <div id="blocklyArea"> <div id="blocklyDiv"></div> </div> <textarea id="codeArea" spellcheck="false"></textarea> </div> </div> </div> <div id="colorPanel" class="cpPanel" style="display: none"> <input class="color" id="colorPicker" value="255,215,0,1"/> <button onclick="confirmColor()">确定</button> </div> <div id="left7" style="z-index:-1;opacity: 0;"><!-- 多行文本编辑器 --> <div> <button onclick="editor_multi.confirm()">确认</button> <button onclick="editor_multi.cancel()">取消</button> <button onclick="editor_multi.confirm(true)">应用</button> <button onclick="editor_multi.format()">格式化</button> <button id="editor_multi_preview" style="display: none;">预览</button> <input type="checkbox" onclick="editor_multi.toggerLint()" id="lintCheckbox" style="vertical-align: middle;margin-left:6px"/> <span style="vertical-align: middle; margin-left: -3px">语法检查</span> <select id="codemirrorCommands" onchange="editor_multi.doCommand(this)" style="vertical-align: middle; margin-left: 6px;"></select> <span>字体大小</span> <input style="width: 40px" type="number" onchange="editor_multi.setFontSize()" id="editor_multi_fontsize" /> </div> <textarea id="multiLineCode" name="multiLineCode"></textarea> </div> <div id="left8" class='leftTab' style="z-index:-1;opacity: 0;"><!-- functions --> <h3 class="leftTabHeader">脚本编辑 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor_multi.editCommentJs('functions')">配置表格</button> </h3> <div class="leftTabContent"> <div class='etable'> <table> <tbody id='table_e260a2be_5690_476a_b04e_dacddede78b3'> <tr> <td>条目</td> <td>注释</td> <td>值</td> </tr> </tbody> </table> </div> </div> </div> <div id="left9" class='leftTab' style="z-index:-1;opacity: 0;"><!-- commonevent --> <h3 class="leftTabHeader">公共事件 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.table.addfunc()">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('commonevent')">配置表格</button> </h3> <div class="leftTabContent"> <div class='etable'> <table> <tbody id='table_b7bf0124_99fd_4af8_ae2f_0017f04a7c7d'> <tr> <td>条目</td> <td>注释</td> <td>值</td> </tr> </tbody> </table> </div> </div> </div> <div id="left10" class='leftTab' style="z-index:-1;opacity: 0;"><!-- plugins --> <h3 class="leftTabHeader">插件编写 <button onclick="editor.mode.onmode('save')">保存</button> <button onclick="editor.table.addfunc()">添加</button> <button onclick="editor.mode.changeDoubleClickModeByButton('delete')">删除</button> <button onclick="editor_multi.editCommentJs('plugins')">配置表格</button> </h3> <div class="leftTabContent"> <div class='etable'> <table> <tbody id='table_e2c034ec_47c6_48ae_8db8_4f8f32fea2d6'> <tr> <td>条目</td> <td>注释</td> <td>值</td> </tr> </tbody> </table> </div> </div> </div> <div id="mid"> <table class="col" id='mapColMark'></table> <table class="row" id='mapRowMark'></table> <div class="map" id="mapEdit"> <canvas class='gameCanvas' id='ebm'></canvas> <canvas class='gameCanvas' id='efg'></canvas> <canvas class='gameCanvas' id='eui' style='z-index:100'></canvas> </div> <div class="tools"> <div id="tip"></div> <select id="editModeSelect" style="font-size: 12px"> <option value="map">地图编辑(Z)</option> <option value="loc">地图选点(X)</option> <option value="enemyitem">图块属性(C)</option> <option value="floor">楼层属性(V)</option> <option value="tower">全塔属性(B)</option> <option value="functions">脚本编辑(N)</option> <option value="appendpic">追加素材(M)</option> <option value="commonevent">公共事件(,)</option> <option value="plugins">插件编写(.)</option> </select> <span style="font-size: 12px"><input type="checkbox" id="showMovable" style="margin-left:0;margin-right: 2px"/>通行度</span> <select id="editorTheme" style="margin-left: 0; font-size: 11px;"> <option value="editor_color">默认白</option> <option value="editor_color_dark">夜间黑</option> </select> <br/> <span style="font-size: 12px;"> <input type="radio" id="brushMod" name="brushMod" value="line" checked="checked" />线 <input type="radio" id="brushMod2" name="brushMod" value="rectangle" />矩形 <input type="radio" id="brushMod3" name="brushMod" value="tileset" />tile平铺 <input type="radio" id="brushMod4" name="brushMod" value="fill" />填充 </span> <br/> <span style="font-size: 12px"> <input type="radio" id="layerMod2" name="layerMod" value="bgmap" />背景层 <input type="radio" id="layerMod" name="layerMod" value="map" checked="checked" style="margin-left: 5px" />事件层 <input type="radio" id="layerMod3" name="layerMod" value="fgmap" style="margin-left: 5px" />前景层 </span> <br> <div id="viewportButtons" style="margin-bottom: 7px"> <input type="button" value="←"/> <input type="button" value="↑"/> <input type="button" value="↓"/> <input type="button" value="→"/> <input type="button" id='bigmapBtn' value="大地图" style="margin-left: 5px"/> </div> <select id="selectFloor" style="margin-bottom: 5px;"></select> <input type="button" value="选层" id='selectFloorBtn'/> <input type="button" value="保存地图" id='saveFloor'/> <input type="button" value="后退" id="undoFloor" style="display: none;" /> <input type="button" value="帮助文档" id="openDoc" /> <input type="button" value="前往游戏" onclick="window.open('./index.html', '_blank')"/> </div> </div> <div id="mid2"> <p style="margin: 10px"><span id='lastUsedTitle'></span><small>(Ctrl+滚轮放缩,右键置顶)</small> <button id='clearLastUsedBtn'>清除</button></p> <div class="map" id="lastUsedDiv"> <canvas id='lastUsed' class="gameCanvas" style="overflow: hidden"></canvas> </div> </div> <div id="right"> <div id="iconLib"> <div id="iconImages"></div> <div id="selectBox"> <div id='dataSelection' style="display:none"></div> </div> </div> <button id="iconExpandBtn"></button> </div> <div id="menuDiv"> <div id="midMenu" style="display:none"> <div id='extraEvent' class='menuitem' style="display:none"><div class="menuitem-content"></div></div> <div id='chooseThis' class="menuitem"><div class="menuitem-content">选中此点</div></div> <div id='chooseInRight' class="menuitem"><div class="menuitem-content">在素材区选中此图块</div></div> <div id='copyLoc' class="menuitem"><div class="menuitem-content">复制此事件</div></div> <div id='pasteLoc' class="menuitem"><div class="menuitem-content">粘贴到此事件</div></div> <div id='clearEvent' class="menuitem"><div class="menuitem-content">仅清空此点事件</div></div> <div id='clearLoc' class="menuitem"><div class="menuitem-content">清空此点及事件</div></div> </div> </div> </div> <!-- <script>/* --> <div id="gameInject" style='display: none'></div> <!-- UI预览 & 地图选点 --> <div id='uieventDiv' style='display: none'> <div id='uieventDialog'> <div id="uieventHead"> <span id="uieventTitle"></span> <select id="uieventSelect" style="margin-left: 20px"></select> <button id="uieventNo">关闭</button> <button id="uieventYes">确定</button> </div> <hr style="clear: both; margin-top: 0"/> <div id='uieventBody'> <canvas class='gameCanvas' id='uievent'></canvas> <div id="selectPointBox"></div> <div id="uieventExtraBody" style="display: none; margin-top: -10px"></div> </div> <div id="selectPoint"> <select id="selectPointFloor"></select> <div id="selectPointButtons"> <input type="button" value="←"/> <input type="button" value="↑"/> <input type="button" value="↓"/> <input type="button" value="→"/> <input type="button" value="切换大地图" style="margin-left: 10px;"> <input type="button" value="复制楼层ID"> </div> </div> </div> </div> <!-- */</script> --> <!-- =========================================================== --> <!-- <script src='_server/vendor/vue.min.js'></script> --> <!-- <script src="https://cdn.bootcss.com/vue/2.5.13/vue.js"></script> --> <!-- <script src='_server/vendor/polyfill.min.js'></script> --> <script src='_server/fs.js'></script> <script src='_server/editor_config.js'></script> <script src='_server/editor_util.js'></script> <script src='_server/editor_game.js'></script> <script src='_server/editor_file.js'></script> <script src='_server/editor_table.js'></script> <script src='_server/editor_mode.js'></script> <script src='_server/editor_ui.js'></script> <script src='_server/editor_uievent.js'></script> <script src='_server/editor_mappanel.js'></script> <script src='_server/editor_datapanel.js'></script> <script src='_server/editor_materialpanel.js'></script> <script src='_server/editor_listen.js'></script> <script src='libs/thirdparty/lz-string.min.js'></script> <script src='libs/thirdparty/localforage.min.js'></script> <script src='libs/thirdparty/zip.min.js'></script> <script src='_server/editor.js'></script> <script> editor.init(function () { editor.listen(); editor.mode_listen(); editor.mobile_listen(); }); //main.listen(); </script> <!-- hightlight textarea --> <script src='_server/editor_multi.js'></script> <!-- blockly --> <script src="_server/blockly/Converter.bundle.min.js"></script> <script src="_server/blockly/blockly_compressed.js"></script> <script src="_server/blockly/blocks_compressed.js"></script> <script src="_server/blockly/javascript_compressed.js"></script> <script src="_server/blockly/zh-hans.js"></script> <script src='_server/MotaActionParser.js'></script> <script src='_server/editor_blocklyconfig.js'></script> <script src='_server/editor_blockly.js'></script> <!-- codemirror --> <script src="_server/CodeMirror/codeMirror.bundle.min.js"></script> <script src="_server/CodeMirror/beautify.min.js"></script> <script src="_server/CodeMirror/jshint.min.js"></script> <script src="_server/CodeMirror/codeMirror.plugin.min.js"></script> <script src="_server/CodeMirror/acorn.min.js"></script> <script src="_server/CodeMirror/defs.js"></script> <script src="_server/CodeMirror/tern.min.js"></script> <!-- thirdparty --> <script src="_server/thirdparty/color.all.min.js"></script> <script src="_server/thirdparty/awesomplete.min.js"></script> <script src="_server/thirdparty/caret-position.js"></script> <script src="_server/thirdparty/jsColor.js"></script> </body> </html>