diff --git a/_server/blockly/MotaAction.g4 b/_server/blockly/MotaAction.g4 index 2467d19c..d81a1128 100644 --- a/_server/blockly/MotaAction.g4 +++ b/_server/blockly/MotaAction.g4 @@ -1257,7 +1257,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 -default : [500,false,"上右3下2左上左2"] +default : [500,false,"上右3下2后4左前2"] colour : this.dataColor Int_0 = Int_0!=='' ?(', "time": '+Int_0):''; Bool_0 = Bool_0?', "async": true':''; @@ -1846,8 +1846,8 @@ Global_Value_List Global_Flag_List - : '显示当前楼层'|'显示勇士图标'|'显示当前等级'|'启用生命上限'|'显示魔力值'|'显示魔防值'|'显示金币值'|'显示经验值'|'允许等级提升'|'升级扣除模式'|'显示钥匙数量'|'显示破炸飞'|'显示毒衰咒'|'显示当前技能'|'楼梯边才能楼传'|'开启加点'|'开启负伤'|'循环计算临界'|'允许轻按'|'允许走到将死领域'|'允许瞬间移动'|'阻激夹域后禁用快捷商店' - /*Global_Flag_List ['enableFloor','enableName','enableLv', 'enableHPMax', 'enableMana', 'enableMDef', 'enableMoney', 'enableExperience', 'enableLevelUp', 'levelUpLeftMode', 'enableKeys', 'enablePZF', 'enableDebuff', 'enableSkill', 'flyNearStair', 'enableAddPoint', 'enableNegativeDamage', 'useLoop', 'enableGentleClick', 'canGoDeadZone', 'enableMoveDirectly', 'disableShopOnDamage']*/; + : '显示当前楼层'|'显示勇士图标'|'显示当前等级'|'启用生命上限'|'显示魔力值'|'显示魔防值'|'显示金币值'|'显示经验值'|'允许等级提升'|'升级扣除模式'|'显示钥匙数量'|'显示破炸飞'|'显示毒衰咒'|'显示当前技能'|'楼梯边才能楼传'|'开启加点'|'开启负伤'|'仇恨怪战后扣减一半'|'夹击是否上整'|'循环计算临界'|'允许轻按'|'寻路算法不绕血瓶'|'允许走到将死领域'|'允许瞬间移动'|'允许查看禁用商店'|'阻激夹域后禁用快捷商店'|'检查控制台' + /*Global_Flag_List ['enableFloor','enableName','enableLv', 'enableHPMax', 'enableMana', 'enableMDef', 'enableMoney', 'enableExperience', 'enableLevelUp', 'levelUpLeftMode', 'enableKeys', 'enablePZF', 'enableDebuff', 'enableSkill', 'flyNearStair', 'enableAddPoint', 'enableNegativeDamage', 'hatredDecrease', 'betweenAttackCeil', 'useLoop', 'enableGentleClick', 'potionWhileRouting', 'canGoDeadZone', 'enableMoveDirectly', 'enableDisabledShop', 'disableShopOnDamage', 'checkConsole']*/; Colour : 'sdeirughvuiyasdeb'+ //为了被识别为复杂词法规则 @@ -2516,7 +2516,9 @@ ActionParser.prototype.StepString = function(steplist) { 'up': '上', 'down': '下', 'left': '左', - 'right': '右' + 'right': '右', + 'forward': '前', + 'backward': '后' } var StepString = []; for(var ii=0,obj;obj=steplist[ii];ii++) { @@ -2573,7 +2575,7 @@ MotaActionFunctions.PosString_pre = function(PosString){ MotaActionFunctions.StepString_pre = function(StepString){ //StepString='上右3下2左上左2' - var route = StepString.replace(/上/g,'U').replace(/下/g,'D').replace(/左/g,'L').replace(/右/g,'R'); + var route = StepString.replace(/上/g,'U').replace(/下/g,'D').replace(/左/g,'L').replace(/右/g,'R').replace(/前/g,'F').replace(/后/g,'B'); //copyed from core.js var ans=[], index=0; @@ -2602,6 +2604,8 @@ MotaActionFunctions.StepString_pre = function(StepString){ case "D": for (var i=0;i=0;}); + var step=0; var animate=window.setInterval(function() { @@ -918,18 +920,23 @@ control.prototype.eventMoveHero = function(steps, time, callback) { } else { var direction = moveSteps[0]; + + // ------ 前进/后退 + var o = direction == 'backward' ? -1 : 1; + if (direction == 'forward' || direction == 'backward') direction = core.getHeroLoc('direction'); + core.setHeroLoc('direction', direction); step++; if (step <= 4) { - core.drawHero(direction, x, y, 'leftFoot', 4 * step); + core.drawHero(direction, x, y, 'leftFoot', 4 * o * step); } else if (step <= 8) { - core.drawHero(direction, x, y, 'rightFoot', 4 * step); + core.drawHero(direction, x, y, 'rightFoot', 4 * o * step); } if (step == 8) { step = 0; - core.setHeroLoc('x', x + core.utils.scan[direction].x, true); - core.setHeroLoc('y', y + core.utils.scan[direction].y, true); + core.setHeroLoc('x', x + o * core.utils.scan[direction].x, true); + core.setHeroLoc('y', y + o * core.utils.scan[direction].y, true); core.control.updateFollowers(); moveSteps.shift(); } diff --git a/libs/maps.js b/libs/maps.js index 801b1fab..e8e3c0e4 100644 --- a/libs/maps.js +++ b/libs/maps.js @@ -1019,6 +1019,7 @@ maps.prototype.moveBlock = function(x,y,steps,time,keep,callback) { } } }); + moveSteps = moveSteps.filter(function (t) { return ['up','down','left','right'].indexOf(t)>=0;}); var nowX=32*x, nowY=32*y, step=0; var destX=x, destY=y;