Added ability to define custom varbits via JSON
Fixed the bank note/unnote and insert/swap toggle buttons not persisting between logins
This commit is contained in:
@@ -18,4 +18,5 @@ data class SelfDeath(val killer: Entity) : Event
|
||||
data class TickEvent(val worldTicks: Int) : Event
|
||||
data class PickUpEvent(val itemId: Int) : Event
|
||||
data class InterfaceOpenEvent(val component: Component) : Event
|
||||
data class InterfaceCloseEvent(val component: Component) : Event
|
||||
data class InterfaceCloseEvent(val component: Component) : Event
|
||||
data class VarbitUpdateEvent(val offset: Int, val value: Int) : Event
|
||||
@@ -15,4 +15,5 @@ object Event {
|
||||
@JvmStatic val PickedUp = PickUpEvent::class.java
|
||||
@JvmStatic val InterfaceOpened = InterfaceOpenEvent::class.java
|
||||
@JvmStatic val InterfaceClosed = InterfaceCloseEvent::class.java
|
||||
@JvmStatic val VarbitUpdated = VarbitUpdateEvent::class.java
|
||||
}
|
||||
@@ -23,7 +23,7 @@ class Varp(val index: Int) {
|
||||
return config
|
||||
}
|
||||
|
||||
fun getVarbit(offset: Int): Int?{
|
||||
fun getVarbit(offset: Int): Int {
|
||||
return getVarbitValue(offset)
|
||||
}
|
||||
|
||||
|
||||
@@ -1,9 +1,8 @@
|
||||
package rs09.game
|
||||
|
||||
import api.events.VarbitUpdateEvent
|
||||
import core.cache.def.impl.VarbitDefinition
|
||||
import core.game.node.entity.player.Player
|
||||
import core.net.packet.PacketRepository
|
||||
import core.net.packet.context.VarbitContext
|
||||
import org.json.simple.JSONArray
|
||||
import org.json.simple.JSONObject
|
||||
import rs09.game.node.entity.skill.farming.FarmingPatch
|
||||
@@ -31,26 +30,41 @@ class VarpManager(val player: Player) {
|
||||
}
|
||||
|
||||
fun setVarbit(def: VarbitDefinition, value: Int){
|
||||
get(def.configId).setVarbit(def.bitShift,value).send(player)
|
||||
get(def.varpId).setVarbit(def.startBit,value).send(player)
|
||||
|
||||
player.dispatch(VarbitUpdateEvent(def.id, value))
|
||||
}
|
||||
|
||||
fun setVarbit(varbitIndex: Int, value: Int){
|
||||
val def = VarbitDefinition.forId(varbitIndex)
|
||||
get(def.configId).setVarbit(def.bitShift, value)
|
||||
get(def.configId).send(player)
|
||||
get(def.varpId).setVarbit(def.startBit, value)
|
||||
get(def.varpId).send(player)
|
||||
|
||||
player.dispatch(VarbitUpdateEvent(varbitIndex, value))
|
||||
}
|
||||
|
||||
fun getVarbit(varbitIndex: Int){
|
||||
fun getVarbit(varbitIndex: Int): Int{
|
||||
val def = VarbitDefinition.forId(varbitIndex)
|
||||
get(def.configId).getVarbit(def.bitShift)
|
||||
return get(def.varpId).getVarbit(def.startBit)
|
||||
}
|
||||
|
||||
fun flagSave(index: Int){
|
||||
get(index).save = true
|
||||
fun flagSave(index: Int, isVarbit: Boolean = false){
|
||||
if (isVarbit) {
|
||||
val def = VarbitDefinition.forId(index)
|
||||
flagSave(def.varpId, false)
|
||||
} else {
|
||||
get(index).save = true
|
||||
}
|
||||
}
|
||||
|
||||
fun unflagSave(index: Int){
|
||||
get(index).save = false
|
||||
fun unflagSave(index: Int, isVarbit: Boolean = false){
|
||||
if (isVarbit) {
|
||||
val def = VarbitDefinition.forId(index)
|
||||
unflagSave(def.varpId, false)
|
||||
}
|
||||
else {
|
||||
get(index).save = false
|
||||
}
|
||||
}
|
||||
|
||||
fun sendAllVarps(){
|
||||
|
||||
+1
-1
@@ -44,7 +44,7 @@ class CanoeStationListener : InteractionListener {
|
||||
return@on true
|
||||
}
|
||||
player.lock()
|
||||
player.varpManager.get(varbit.configId).clearBitRange(0,31)
|
||||
player.varpManager.get(varbit.varpId).clearBitRange(0,31)
|
||||
player.faceLocation(CanoeUtils.getFaceLocation(player.location))
|
||||
player.animate(axe.animation)
|
||||
player.varpManager.setVarbit(varbit,STAGE_TREE_NONINTERACTABLE)
|
||||
|
||||
@@ -25,7 +25,7 @@ enum class CompostBins(val varpIndex: Int, val varpOffest: Int) {
|
||||
fun forObjectID(id: Int): CompostBins?{
|
||||
val objDef = SceneryDefinition.forId(id)
|
||||
val def = VarbitDefinition.forObjectID(objDef.varbitID)
|
||||
return bins[def.configId shl def.bitShift]
|
||||
return bins[def.varpId shl def.startBit]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -83,7 +83,7 @@ enum class FarmingPatch(val varpIndex: Int, val varpOffset: Int, val type: Patch
|
||||
fun forObjectID(id: Int): FarmingPatch?{
|
||||
val objDef = SceneryDefinition.forId(id)
|
||||
val def = VarbitDefinition.forObjectID(objDef.varbitID)
|
||||
return patches[def.configId shl def.bitShift]
|
||||
return patches[def.varpId shl def.startBit]
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -156,9 +156,9 @@ class DevelopmentCommandSet : CommandSet(Privilege.ADMIN) {
|
||||
for(id in 0 until 10000)
|
||||
{
|
||||
val def = VarbitDefinition.forId(id)
|
||||
if(def.configId == varp)
|
||||
if(def.varpId == varp)
|
||||
{
|
||||
sendMessage(player, "${def.id} -> [offset: ${def.bitShift}, upperBound: ${def.bitSize}]")
|
||||
sendMessage(player, "${def.id} -> [offset: ${def.startBit}, upperBound: ${def.endBit}]")
|
||||
}
|
||||
}
|
||||
sendMessage(player, "=========================================")
|
||||
|
||||
@@ -117,7 +117,7 @@ class MiscCommandSet : CommandSet(Privilege.ADMIN){
|
||||
notify(player,"Region: [id=" + l.regionId + ", active=" + r.isActive + ", instanced=" + (r is DynamicRegion) + "], obj=" + RegionManager.getObject(l) + ".")
|
||||
notify(player, "Jagex: ${l.z}_${l.regionId shr 8}_${l.regionId and 0xFF}_${l.localX}_${l.localY}")
|
||||
notify(player,"Object: " + RegionManager.getObject(l).also{obj = it} + ".")
|
||||
notify(player,"Object Varp: " + obj?.definition?.configFile?.configId + " offset: " + obj?.definition?.configFile?.bitShift + " size: " + (obj?.definition?.configFile?.bitShift?.minus(obj?.definition?.configFile?.bitShift!!)))
|
||||
notify(player,"Object Varp: " + obj?.definition?.configFile?.varpId + " offset: " + obj?.definition?.configFile?.startBit + " size: " + (obj?.definition?.configFile?.startBit?.minus(obj?.definition?.configFile?.startBit!!)))
|
||||
SystemLogger.logInfo("Viewport: " + l.getSceneX(player.playerFlags.lastSceneGraph) + "," + l.getSceneY(player.playerFlags.lastSceneGraph))
|
||||
val loc = "Location.create(" + l.x + ", " + l.y + ", " + l.z + ")"
|
||||
SystemLogger.logInfo(loc + "; " + player.playerFlags.lastSceneGraph + ", " + l.localX + ", " + l.localY)
|
||||
@@ -427,7 +427,7 @@ class MiscCommandSet : CommandSet(Privilege.ADMIN){
|
||||
reject(player,"Syntax: ::getobjectvarp objectid")
|
||||
}
|
||||
val objectID = args[1].toInt()
|
||||
notify(player, "${VarbitDefinition.forObjectID(SceneryDefinition.forId(objectID).varbitID).configId}")
|
||||
notify(player, "${VarbitDefinition.forObjectID(SceneryDefinition.forId(objectID).varbitID).varpId}")
|
||||
}
|
||||
|
||||
define("define_varbit", Privilege.ADMIN, "::define_varbit <lt>VARBIT ID<gt>", "Prints information about the given varbit."){ player, args ->
|
||||
|
||||
@@ -26,6 +26,7 @@ class ConfigParser : Commands {
|
||||
GroundSpawnLoader().load()
|
||||
MusicConfigLoader().load()
|
||||
RangedConfigLoader().load()
|
||||
CustomVarbitParser().load()
|
||||
}
|
||||
|
||||
fun reloadConfigs(callback: () -> Unit) {
|
||||
|
||||
@@ -0,0 +1,35 @@
|
||||
package rs09.game.system.config
|
||||
|
||||
import core.cache.def.impl.VarbitDefinition
|
||||
import org.json.simple.JSONArray
|
||||
import org.json.simple.JSONObject
|
||||
import org.json.simple.parser.JSONParser
|
||||
import rs09.ServerConstants
|
||||
import rs09.game.system.SystemLogger
|
||||
import java.io.FileReader
|
||||
|
||||
class CustomVarbitParser {
|
||||
val parser = JSONParser()
|
||||
var reader: FileReader? = null
|
||||
|
||||
fun load() {
|
||||
var count = 0
|
||||
|
||||
reader = FileReader(ServerConstants.CONFIG_PATH + "varbit_definitions.json")
|
||||
val array = parser.parse(reader) as JSONArray
|
||||
|
||||
for (jObject in array) {
|
||||
val varbitDef = jObject as JSONObject
|
||||
|
||||
val varpId = varbitDef["varpId"].toString().toInt()
|
||||
val varbitId = varbitDef["varbitId"].toString().toInt()
|
||||
val startBit = varbitDef["startBit"].toString().toInt()
|
||||
val endBit = varbitDef["endBit"].toString().toInt()
|
||||
|
||||
VarbitDefinition.create(varpId, varbitId, startBit, endBit)
|
||||
count++
|
||||
}
|
||||
|
||||
SystemLogger.logInfo("Parsed $count custom varbit definitions.")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user