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
This commit is contained in:
philliam
2021-06-26 01:18:51 -04:00
parent d3aa311f2e
commit 922657b762
7 changed files with 94 additions and 0 deletions
@@ -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
@@ -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
}
@@ -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
}
@@ -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{
@@ -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 {
@@ -114,6 +114,7 @@ class SharkCatcher : Script() {
}
State.FISHING -> {
bot.interfaceManager.close()
if (Random.nextBoolean()) {
tick = 0
val spot = scriptAPI.getNearestNode(334, false)
@@ -22,6 +22,7 @@ class VarrockEssenceMiner : Script(){
when(state){
State.TO_ESSENCE -> {
bot.interfaceManager.close()
if(!auburyZone.insideBorder(bot))
scriptAPI.walkTo(auburyZone.randomLoc)
else {