From ba928f8acea121c69522dc1b44ec5d8effc569d7 Mon Sep 17 00:00:00 2001 From: MkFera <114618057+MkFera@users.noreply.github.com> Date: Fri, 10 Mar 2023 13:13:33 -0400 Subject: [PATCH 1/2] shortcuts and macro generals shortcuts adventure macro with move and attack by Sirris --- userscripts/user_adventures_shortcut.js | 253 ++++++++++++-------- userscripts/user_generals.js | 293 ++++++++++++++++++------ 2 files changed, 380 insertions(+), 166 deletions(-) diff --git a/userscripts/user_adventures_shortcut.js b/userscripts/user_adventures_shortcut.js index 5eedacc1..f2607deb 100644 --- a/userscripts/user_adventures_shortcut.js +++ b/userscripts/user_adventures_shortcut.js @@ -13,6 +13,7 @@ var _exudUserAdventureLang = { 'UnitReady' : 'Army ready', 'Menuname' : 'Adventures', 'Command' : 'Command', + 'ToStar' : 'Return all generals to star', 'CannotSet' : 'Something was wrong, cannot load army. Please verify in Specialists/Army (F9)', 'Saved' : 'Saved !' }, @@ -43,9 +44,10 @@ var _exudUserAdventureLang = { 'AutoFree': 'Всегда выгружать войска', 'NoUnitsOnBoard' : 'Армия распущена', 'UnitReady' : 'Армия готова', + 'ToStar' : 'Вернуть всех генералов в звезду', 'Menuname' : 'Приключения', 'Command' : 'Команда', - 'CannotSet' : 'Не все условия выполнены для загрузки армии. Проверьте в ручную в окне армии (F9)', + 'CannotSet' : 'Не все условия выполнены для загрузки армии. Проверьте вручную в окне армии (F9)', 'Saved' : 'Сохранено !' }, 'es-es' : { @@ -116,6 +118,8 @@ var _exudUserAdventureLang = { extendBaseLang(_exudUserAdventureLang, 'exudUserAdventureLang'); var _exudUserAdventureMainMenuName = getText('Menuname', 'exudUserAdventureLang'); +var _exudUserAdventureTypes = { '[b]': 'x ', '[a]': '^ ', '[m]': '> ' }; +var _exudUserAdventureTypesLang = {'x ': loca.GetText("ACL", "PvPAttacker"), '^ ' : loca.GetText("LAB","Army"), '> ': loca.GetText("LAB", "Move")}; var _exudUserAdventureButtons = { "remove": utils.getImage(new(game.def("GUI.Assets::gAssetManager_ButtonIconThrowAway"))().bitmapData), "up": utils.getImage(new(game.def("GUI.Assets::gAssetManager_ArrowSmallNUp"))().bitmapData), @@ -147,6 +151,7 @@ function _exudUserAdventuresMakeMenu() var m = [ { label: getText('Options', 'exudUserAdventureLang'), onSelect: _exudUserAdventureAddHandler }, { label: loca.GetText("LAB","UnloadUnits"), onSelect: _exudUserAdventureFreeAllUnits }, + { label: getText('ToStar', 'exudUserAdventureLang'), onSelect: _exudUserAdventureReturnAll }, { type: 'separator' } ]; _exudAdventureGenMenuRecursive(_exudUserAdventureSettings.Adventures, m); @@ -161,94 +166,109 @@ function _exudAdventureGenMenuRecursive(item, m) if(typeof i == 'object') { return _exudAdventureGenMenuRecursive([i], s.items); } - s.items.push({ label: i.split("\\").pop().replace("_", "[UNDERSCORE]"), name: i, onSelect: _exuduserAdventureMenuSelectedHandler }); + if(i == '--sep--') { + s.items.push({ type: 'separator' }); + } else { + s.items.push({ label: _exudAdventureStripType(i)[1] + _exudAdventureStripType(i)[0].split("\\").pop().replace(/_/g, "[UNDERSCORE]"), name: i, onSelect: _exuduserAdventureMenuSelectedHandler }); + } }); m.push(s); }); } +function _exudAdventureStripType(value) +{ + var possibleType = value.slice(-3); + if(_exudUserAdventureTypes[possibleType] == null) + return [value, '^ ']; + return [value.slice(0, -3), _exudUserAdventureTypes[possibleType]]; +} + // Execute a shortcut function _exuduserAdventureMenuSelectedHandler(event) { - var Text = ""; try { + var filetype = _exudAdventureStripType(event.target.name); var file = new air.File(); - file.nativePath = event.target.name; + file.nativePath = filetype[0]; var fileStream = new air.FileStream(); fileStream.open(file, air.FileMode.READ); - Text = fileStream.readUTFBytes(file.size); + var Text = fileStream.readUTFBytes(file.size); fileStream.close(); if (Text == "") { return; } - if (_exudUserAdventureSettings.AutoFree) - _exudUserAdventureFreeAllUnits(); - armyPacket = JSON.parse(Text); - if(_exuduserAdventurearmyLoadData()) { - armyLoadGenerals(true); - game.showAlert(getText('UnitReady', 'exudUserAdventureLang')); - } + _exudUserAdventureProceedFile(JSON.parse(Text), filetype[1]); } catch (e) { alert(e); } } -function _exuduserAdventurearmyLoadData() +function _exudUserAdventureProceedFile(data, type) { - var exuduserAdventurearmyFreeInfo = {}; - try - { - if(Object.keys(armyPacket).length == 0) { - return false; - } - var canSubmit = true; - - // Total army available - game.zone.GetArmy(game.player.GetPlayerId()).GetSquadsCollection_vector().forEach(function(item){ - exuduserAdventurearmyFreeInfo[item.GetType()] = item.GetAmount(); - }); - - $.each(armyPacket, function(item) { - var uniqueID = item.split(".") - var uniqueIDPacket = game.def("Communication.VO::dUniqueID").Create(uniqueID[0], uniqueID[1]), - var spec = game.zone.getSpecialist(game.player.GetPlayerId(), uniqueIDPacket); - if(spec.GetGarrison() == null || spec.GetTask() != null || spec.GetGarrisonGridIdx() < 1 || spec.IsInUse() || spec.isTravellingAway()) {canSubmit = false; } - }); - if (canSubmit) - { - var requiredArmy = {}; - $.each(armyPacket, function(item) { - $.each(armyPacket[item], function(res) { - if(res == "name") { return; } - requiredArmy[res] = requiredArmy[res] + armyPacket[item][res] || armyPacket[item][res]; - }); + switch(type) { + case '^ ': + updateFreeArmyInfo(true); + var checkedPacket = armyLoadDataCheck(data); + if(checkedPacket.canSubmit = false) { + game.showAlert(getText('CannotSet', 'exudUserAdventureLang')); + return; + } + armyPacket = data; + armyLoadGenerals(true); + break; + case '> ': + battlePacket = battleLoadDataCheck(data); + var canSubmitMove = true; + $.each(battlePacket, function(item) { + if(!battlePacket[item].canSubmitMove) { canSubmitMove = false; } }); - $.each(requiredArmy, function(item) { - if(exuduserAdventurearmyFreeInfo[item] < requiredArmy[item]) { canSubmit = false; } + if(!canSubmitMove) { + game.showAlert(getText('CannotSet', 'exudUserAdventureLang')); + return; + } + battleMove(true); + break; + case 'x ': + battlePacket = battleLoadDataCheck(data); + var canSubmitAttack = true; + $.each(battlePacket, function(item) { + if(!battlePacket[item].canSubmitAttack) { canSubmitAttack = false; } }); + if(!canSubmitAttack) { + game.showAlert(getText('CannotSet', 'exudUserAdventureLang')); + return; + } + battleAttack(true); + break; + } + showGameAlert(getText('command_sent')); +} + +function _exudUserAdventureReturnAll() +{ + var queue = new TimedQueue(1000); + swmmo.application.mGameInterface.mCurrentPlayerZone.GetSpecialists_vector().forEach(function(item){ + if (game.player.GetPlayerId() == item.getPlayerID() && + _exudUserAdventuresSPECIALIST_TYPE.IsGeneral(item.GetType()) && + item.GetGarrisonGridIdx() > 0 && !item.IsInUse() && !item.isTravellingAway()) + { + queue.add(function(){ armySendGeneralToStar(item); }); } - } catch (e) + }); + if(queue.len() > 0) { + queue.run(); + game.showAlert(getText('NoUnitsOnBoard', 'exudUserAdventureLang')); } - - if (!canSubmit) - game.showAlert(getText('CannotSet', 'exudUserAdventureLang')); - return canSubmit; } - function _exudUserAdventureFreeAllUnits() { var queue = new TimedQueue(1000); swmmo.application.mGameInterface.mCurrentPlayerZone.GetSpecialists_vector().forEach(function(item){ - try{ - if (game.player.GetPlayerId() == item.getPlayerID() && _exudUserAdventuresSPECIALIST_TYPE.IsGeneral(item.GetType()) && item.GetGarrisonGridIdx() > 0 && item.HasUnits() && !item.IsInUse() && !item.isTravellingAway()) - { - queue.add(function(){ - armyMilitarySystem.SendRaiseArmyToServer(game.gi, item, null); - //game.chatMessage(item.getName(false), getText('Menuname', 'exudUserAdventureLang')); - }); - } - } - catch (e) + if (game.player.GetPlayerId() == item.getPlayerID() && + _exudUserAdventuresSPECIALIST_TYPE.IsGeneral(item.GetType()) && + item.GetGarrisonGridIdx() > 0 && item.HasUnits() && !item.IsInUse() && !item.isTravellingAway()) { + queue.add(function(){ armyMilitarySystem.SendRaiseArmyToServer(game.gi, item, null); }); } }); if(queue.len() > 0) @@ -278,9 +298,10 @@ function _exudUserAdventureAddHandler(event) $('#UserAdventureModal .modal-header').append( '