Added cheat option for singleplayer - in Server/worldprops/default.conf set i_want_to_cheat to true for GE autobuy/autosell
This commit is contained in:
@@ -137,6 +137,9 @@ class ServerConstants {
|
|||||||
@JvmField
|
@JvmField
|
||||||
var WATCHDOG_ENABLED = true
|
var WATCHDOG_ENABLED = true
|
||||||
|
|
||||||
|
@JvmField
|
||||||
|
var I_AM_A_CHEATER = false
|
||||||
|
|
||||||
//location names for the ::to command.
|
//location names for the ::to command.
|
||||||
val TELEPORT_DESTINATIONS = arrayOf(
|
val TELEPORT_DESTINATIONS = arrayOf(
|
||||||
arrayOf(Location.create(2974, 4383, 2), "corp", "corporal", "corporeal"),
|
arrayOf(Location.create(2974, 4383, 2), "corp", "corporal", "corporeal"),
|
||||||
|
|||||||
@@ -5,10 +5,12 @@ import core.game.ge.OfferState
|
|||||||
import core.game.node.entity.player.Player
|
import core.game.node.entity.player.Player
|
||||||
import core.game.node.entity.player.info.PlayerDetails
|
import core.game.node.entity.player.info.PlayerDetails
|
||||||
import core.game.node.entity.player.link.audio.Audio
|
import core.game.node.entity.player.link.audio.Audio
|
||||||
|
import core.game.system.task.Pulse
|
||||||
import rs09.ServerConstants
|
import rs09.ServerConstants
|
||||||
import rs09.game.system.SystemLogger
|
import rs09.game.system.SystemLogger
|
||||||
import rs09.game.system.command.Privilege
|
import rs09.game.system.command.Privilege
|
||||||
import rs09.game.system.config.ItemConfigParser
|
import rs09.game.system.config.ItemConfigParser
|
||||||
|
import rs09.game.world.GameWorld
|
||||||
import rs09.game.world.repository.Repository
|
import rs09.game.world.repository.Repository
|
||||||
import rs09.tools.stringtools.colorize
|
import rs09.tools.stringtools.colorize
|
||||||
import java.lang.Integer.max
|
import java.lang.Integer.max
|
||||||
@@ -20,9 +22,6 @@ import java.util.concurrent.LinkedBlockingDeque
|
|||||||
* @author Ceikry
|
* @author Ceikry
|
||||||
*/
|
*/
|
||||||
class GrandExchange : StartupListener, Commands {
|
class GrandExchange : StartupListener, Commands {
|
||||||
private val GET_SPECIFIC_OFFER_BY_UID = "SELECT * FROM player_offers WHERE uid = ?;"
|
|
||||||
private val GET_MATCHES_FROM_PLAYER_OFFERS = "SELECT * FROM player_offers WHERE item_id = ? AND is_sale = ? AND offer_state < 4 AND NOT offer_state = 2;"
|
|
||||||
private val GET_MATCH_FROM_BOT_OFFERS = "SELECT * FROM bot_offers WHERE item_id = ?;"
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Fallback safety check to make sure we don't start the GE twice under any circumstance
|
* Fallback safety check to make sure we don't start the GE twice under any circumstance
|
||||||
@@ -56,18 +55,6 @@ class GrandExchange : StartupListener, Commands {
|
|||||||
isRunning = true
|
isRunning = true
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun getOfferByUid(uid: Long): GrandExchangeOffer? {
|
|
||||||
var offer: GrandExchangeOffer? = null
|
|
||||||
GEDB.run { conn ->
|
|
||||||
val query = conn.prepareStatement(GET_SPECIFIC_OFFER_BY_UID)
|
|
||||||
query.setLong(1, uid)
|
|
||||||
val res = query.executeQuery()
|
|
||||||
|
|
||||||
if (res.next())
|
|
||||||
offer = GrandExchangeOffer.fromQuery(res)
|
|
||||||
}
|
|
||||||
return offer
|
|
||||||
}
|
|
||||||
|
|
||||||
private fun tryExchangeWithBots(offer: GrandExchangeOffer) {
|
private fun tryExchangeWithBots(offer: GrandExchangeOffer) {
|
||||||
GEDB.run { conn ->
|
GEDB.run { conn ->
|
||||||
@@ -125,6 +112,22 @@ class GrandExchange : StartupListener, Commands {
|
|||||||
|
|
||||||
companion object {
|
companion object {
|
||||||
val pendingOffers = LinkedBlockingDeque<GrandExchangeOffer>()
|
val pendingOffers = LinkedBlockingDeque<GrandExchangeOffer>()
|
||||||
|
private val GET_SPECIFIC_OFFER_BY_UID = "SELECT * FROM player_offers WHERE uid = ?;"
|
||||||
|
private val GET_MATCHES_FROM_PLAYER_OFFERS = "SELECT * FROM player_offers WHERE item_id = ? AND is_sale = ? AND offer_state < 4 AND NOT offer_state = 2;"
|
||||||
|
private val GET_MATCH_FROM_BOT_OFFERS = "SELECT * FROM bot_offers WHERE item_id = ?;"
|
||||||
|
|
||||||
|
private fun getOfferByUid(uid: Long): GrandExchangeOffer? {
|
||||||
|
var offer: GrandExchangeOffer? = null
|
||||||
|
GEDB.run { conn ->
|
||||||
|
val query = conn.prepareStatement(GET_SPECIFIC_OFFER_BY_UID)
|
||||||
|
query.setLong(1, uid)
|
||||||
|
val res = query.executeQuery()
|
||||||
|
|
||||||
|
if (res.next())
|
||||||
|
offer = GrandExchangeOffer.fromQuery(res)
|
||||||
|
}
|
||||||
|
return offer
|
||||||
|
}
|
||||||
|
|
||||||
@JvmStatic
|
@JvmStatic
|
||||||
fun getRecommendedPrice(itemID: Int, from_bot: Boolean = false): Int {
|
fun getRecommendedPrice(itemID: Int, from_bot: Boolean = false): Int {
|
||||||
@@ -240,6 +243,23 @@ class GrandExchange : StartupListener, Commands {
|
|||||||
Repository.sendNews(username + " just offered " + offer.amount + " " + getItemName(offer.itemID) + " on the GE.")
|
Repository.sendNews(username + " just offered " + offer.amount + " " + getItemName(offer.itemID) + " on the GE.")
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (ServerConstants.I_AM_A_CHEATER) {
|
||||||
|
val otherO = GrandExchangeOffer()
|
||||||
|
otherO.itemID = offer.itemID
|
||||||
|
otherO.amount = offer.amount
|
||||||
|
otherO.sell = !offer.sell
|
||||||
|
otherO.offeredValue = offer.offeredValue
|
||||||
|
offer.writeNew()
|
||||||
|
GameWorld.Pulser.submit(object : Pulse(5) {
|
||||||
|
override fun pulse(): Boolean {
|
||||||
|
val offer2 = getOfferByUid(offer.uid) ?: return false
|
||||||
|
exchange(offer2, otherO)
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
})
|
||||||
|
return true
|
||||||
|
}
|
||||||
|
|
||||||
pendingOffers.add(offer)
|
pendingOffers.add(offer)
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -120,6 +120,7 @@ object ServerConfigParser {
|
|||||||
ServerConstants.BANK_BOOTH_NOTE_UIM = data.getBoolean("world.bank_booth_note_uim", true)
|
ServerConstants.BANK_BOOTH_NOTE_UIM = data.getBoolean("world.bank_booth_note_uim", true)
|
||||||
ServerConstants.DISCORD_GE_WEBHOOK = data.getString("server.discord_webhook", "")
|
ServerConstants.DISCORD_GE_WEBHOOK = data.getString("server.discord_webhook", "")
|
||||||
ServerConstants.WATCHDOG_ENABLED = data.getBoolean("server.watchdog_enabled", true)
|
ServerConstants.WATCHDOG_ENABLED = data.getBoolean("server.watchdog_enabled", true)
|
||||||
|
ServerConstants.I_AM_A_CHEATER = data.getBoolean("world.i_want_to_cheat", false)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -60,6 +60,8 @@ verbose_cutscene = false
|
|||||||
show_rules = true
|
show_rules = true
|
||||||
#the number of revenants active at a time
|
#the number of revenants active at a time
|
||||||
revenant_population = 30
|
revenant_population = 30
|
||||||
|
#enable auto-buy/auto-sell on the GE.
|
||||||
|
i_want_to_cheat = false
|
||||||
|
|
||||||
[paths]
|
[paths]
|
||||||
#path to the data folder, which contains the cache subfolder and such
|
#path to the data folder, which contains the cache subfolder and such
|
||||||
|
|||||||
Reference in New Issue
Block a user