From 922657b762fc97ed1210fdd97a15a7709c5a4f75 Mon Sep 17 00:00:00 2001 From: philliam Date: Sat, 26 Jun 2021 01:18:51 -0400 Subject: [PATCH] Player script fixes, and bankAll scriptAPI function added Fixed the bank window exploit in the coal miner, Draynor willows, lobster catcher, Seers magic, shark catcher, and Varrock essence scripts. Made it so that the coal miner script banks its entire inventory instead of just the coal ore, this way it should no longer get stuck if its inventory is full of mithril ore and uncut gems. Fixed the Draynor willows and Seers magic trees scripts so that the bot actually chops down the trees instead of just standing next to them. Added a bankAll function to the scriptAPI, the coal miner script is dependent on this change --- .../kotlin/rs09/game/ai/general/ScriptAPI.kt | 22 ++++++++++ .../ai/general/scriptrepository/CoalMiner.kt | 44 +++++++++++++++++++ .../scriptrepository/DraynorWillows.kt | 6 +++ .../scriptrepository/LobsterCatcher.kt | 11 +++++ .../scriptrepository/SeersMagicTrees.kt | 9 ++++ .../general/scriptrepository/SharkCatcher.kt | 1 + .../scriptrepository/VarrockEssenceMiner.kt | 1 + 7 files changed, 94 insertions(+) diff --git a/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt b/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt index 567aca3b3..d5306bb55 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/ScriptAPI.kt @@ -550,6 +550,28 @@ class ScriptAPI(private val bot: Player) { bot.pulseManager.run(BankingPulse()) } + /** + * Takes every item out of the bots inventory and places it into the bank. + * @param none + * @author cfunnyman joe + */ + fun bankAll(){ + class BankingPulse() : Pulse(20){ + override fun pulse(): Boolean { + for(item in bot.inventory.toArray()){ + var itemAmount = bot.inventory.getAmount(item) + + bot.inventory.remove(item) + bot.bank.add(item) + bot.bank.refresh() + bot.inventory.refresh() + } + return true + } + } + bot.pulseManager.run(BankingPulse()) + } + /** * Function that makes the bot eat the food item in their inventory if their HP is below 2/3. * @author Ceikry diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/CoalMiner.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/CoalMiner.kt index 9fc4b307b..f57aecfd0 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/CoalMiner.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/CoalMiner.kt @@ -1,5 +1,9 @@ package rs09.game.ai.general.scriptrepository +<<<<<<< refs/remotes/2009scape/master +======= + +>>>>>>> Player script fixes, and bankAll scriptAPI function added import core.game.interaction.DestinationFlag import core.game.interaction.MovementPulse import core.game.node.Node @@ -11,21 +15,38 @@ import rs09.game.ai.general.ScriptAPI import rs09.game.ai.skillingbot.SkillingBotAssembler import rs09.game.interaction.InteractionListener import rs09.game.interaction.InteractionListeners +<<<<<<< refs/remotes/2009scape/master +======= +import api.ContentAPI +import kotlinx.coroutines.delay +import kotlinx.coroutines.runBlocking +import java.util.logging.Handler +>>>>>>> Player script fixes, and bankAll scriptAPI function added @PlayerCompatible @ScriptName("Falador Coal Miner") @ScriptDescription("Start in Falador East Bank with a pick equipped","or in your inventory.") @ScriptIdentifier("fally_coal") +<<<<<<< refs/remotes/2009scape/master class CoalMiner() : Script() { var state = State.INIT var ladderSwitch = false +======= +class CoalMiner : Script() { + var state = State.INIT + var ladderSwitch = false +>>>>>>> Player script fixes, and bankAll scriptAPI function added val bottomLadder = ZoneBorders(3016,9736,3024,9742) val topLadder = ZoneBorders(3016,3336,3022,3342) val mine = ZoneBorders(3027,9733,3054,9743) val bank = ZoneBorders(3009,3355,3018,3358) var overlay: ScriptAPI.BottingOverlay? = null +<<<<<<< refs/remotes/2009scape/master var coalAmount = 0 +======= + var coalAmount = 0 +>>>>>>> Player script fixes, and bankAll scriptAPI function added override fun tick() { when(state){ @@ -47,6 +68,10 @@ class CoalMiner() : Script() { } State.MINING -> { +<<<<<<< refs/remotes/2009scape/master +======= + bot.interfaceManager.close() +>>>>>>> Player script fixes, and bankAll scriptAPI function added if(bot.inventory.freeSlots() == 0){ state = State.TO_BANK } @@ -56,7 +81,11 @@ class CoalMiner() : Script() { val rock = scriptAPI.getNearestNode("rocks",true) rock?.let { InteractionListeners.run(rock.id, InteractionListener.OBJECT,"mine",bot,rock) } } +<<<<<<< refs/remotes/2009scape/master overlay!!.setAmount(bot.inventory.getAmount(Items.COAL_453) + coalAmount) +======= + overlay!!.setAmount(ContentAPI.amountInInventory(bot, Items.COAL_453) + coalAmount) +>>>>>>> Player script fixes, and bankAll scriptAPI function added } State.TO_BANK -> { @@ -83,13 +112,22 @@ class CoalMiner() : Script() { } State.BANKING -> { +<<<<<<< refs/remotes/2009scape/master coalAmount += bot.inventory.getAmount(Items.COAL_453) scriptAPI.bankItem(Items.COAL_453) +======= + coalAmount += bot.inventory.getAmount(Items.COAL_453) + scriptAPI.bankAll() +>>>>>>> Player script fixes, and bankAll scriptAPI function added state = State.TO_MINE } State.TO_MINE -> { if(ladderSwitch){ +<<<<<<< refs/remotes/2009scape/master +======= + bot.interfaceManager.close() +>>>>>>> Player script fixes, and bankAll scriptAPI function added if(!topLadder.insideBorder(bot.location)){ scriptAPI.walkTo(topLadder.randomLoc) } else { @@ -124,7 +162,10 @@ class CoalMiner() : Script() { scriptAPI.teleport(bank.randomLoc) state = State.TO_MINE } +<<<<<<< refs/remotes/2009scape/master +======= +>>>>>>> Player script fixes, and bankAll scriptAPI function added } } @@ -156,5 +197,8 @@ class CoalMiner() : Script() { equipment.add(Item(Items.IRON_PICKAXE_1267)) skills.put(Skills.MINING,75) } +<<<<<<< refs/remotes/2009scape/master +======= +>>>>>>> Player script fixes, and bankAll scriptAPI function added } \ No newline at end of file diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/DraynorWillows.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/DraynorWillows.kt index b9195bb2e..ad2fbf53e 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/DraynorWillows.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/DraynorWillows.kt @@ -41,8 +41,14 @@ class DraynorWillows : Script(){ scriptAPI.walkTo(willowZone.randomLoc) else { val willowtree = scriptAPI.getNearestNode("willow", true) +<<<<<<< refs/remotes/2009scape/master willowtree?.let { InteractionListeners.run(willowtree.id, InteractionListener.OBJECT,"chop",bot,willowtree) } +======= + bot.interfaceManager.close() + willowtree?.let { InteractionListeners.run(willowtree.id, + InteractionListener.OBJECT,"Chop down",bot,willowtree) } +>>>>>>> Player script fixes, and bankAll scriptAPI function added if (bot.inventory.isFull) state = State.BANKING } diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt index 6863f20dd..9532b8b0f 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/LobsterCatcher.kt @@ -69,6 +69,10 @@ class LobsterCatcher : Script() { State.FISHING -> { +<<<<<<< refs/remotes/2009scape/master +======= + bot.interfaceManager.close() +>>>>>>> Player script fixes, and bankAll scriptAPI function added val spot = scriptAPI.getNearestNode(333, false) if(spot == null){ state = State.IDLE @@ -163,10 +167,17 @@ class LobsterCatcher : Script() { init { +<<<<<<< refs/remotes/2009scape/master val setUp = RandomFunction.random(Sets.values().size) equipment.addAll(Sets.values()[setUp].equipment) inventory.add(Item(301)) skills[Skills.FISHING] = 40 +======= + val setUp = RandomFunction.random(Sets.values().size) + equipment.addAll(Sets.values()[setUp].equipment) + inventory.add(Item(301)) + skills[Skills.FISHING] = 40 +>>>>>>> Player script fixes, and bankAll scriptAPI function added } enum class State{ diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SeersMagicTrees.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SeersMagicTrees.kt index 48b7b45c3..c2abc1365 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SeersMagicTrees.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SeersMagicTrees.kt @@ -39,7 +39,12 @@ class SeersMagicTrees : Script(){ State.CHOPPING -> { val tree = scriptAPI.getNearestNode(1306,true) +<<<<<<< refs/remotes/2009scape/master tree?.let { InteractionListeners.run(tree.id, InteractionListener.OBJECT,"chop",bot,tree) } +======= + bot.interfaceManager.close() + tree?.let { InteractionListeners.run(tree.id, InteractionListener.OBJECT,"Chop down",bot,tree) } +>>>>>>> Player script fixes, and bankAll scriptAPI function added if(bot.inventory.isFull){ state = State.FIND_BANK } @@ -69,6 +74,10 @@ class SeersMagicTrees : Script(){ } State.RETURN_TO_TREES -> { +<<<<<<< refs/remotes/2009scape/master +======= + bot.interfaceManager.close() +>>>>>>> Player script fixes, and bankAll scriptAPI function added if(!magicsZone.insideBorder(bot)){ scriptAPI.walkTo(magicsZone.randomLoc) } else { diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SharkCatcher.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SharkCatcher.kt index 2d78e48a0..f1a909d53 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SharkCatcher.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/SharkCatcher.kt @@ -114,6 +114,7 @@ class SharkCatcher : Script() { } State.FISHING -> { + bot.interfaceManager.close() if (Random.nextBoolean()) { tick = 0 val spot = scriptAPI.getNearestNode(334, false) diff --git a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/VarrockEssenceMiner.kt b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/VarrockEssenceMiner.kt index d429713c4..5054b98e0 100644 --- a/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/VarrockEssenceMiner.kt +++ b/Server/src/main/kotlin/rs09/game/ai/general/scriptrepository/VarrockEssenceMiner.kt @@ -22,6 +22,7 @@ class VarrockEssenceMiner : Script(){ when(state){ State.TO_ESSENCE -> { + bot.interfaceManager.close() if(!auburyZone.insideBorder(bot)) scriptAPI.walkTo(auburyZone.randomLoc) else {