mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-11 09:00:23 -07:00
Fixed bug where ::forcegravedeath could make admins lose admin status
Added ::makeadmin command to promote accounts to admin Added ::dropadmin command to demote accounts from admin Added ::setpestpoints to set Pest Control points Testing commands now take optional player name argument ::max, ::noobme, ::setlevel and ::addxp
This commit is contained in:
parent
612ccc6776
commit
e63c6f523a
3 changed files with 94 additions and 84 deletions
|
|
@ -17,6 +17,7 @@ import org.rs09.consts.Items
|
|||
import core.ServerStore
|
||||
import core.game.interaction.InteractionListener
|
||||
import core.game.interaction.IntType
|
||||
import core.game.interaction.QueueStrength
|
||||
import core.game.system.command.Privilege
|
||||
import core.game.world.GameWorld
|
||||
import core.game.world.map.zone.impl.WildernessZone
|
||||
|
|
@ -36,18 +37,16 @@ class GraveController : PersistWorld, TickListener, InteractionListener, Command
|
|||
}
|
||||
|
||||
override fun defineCommands() {
|
||||
define("forcegravedeath", Privilege.ADMIN, "", "Forces a death that should produce a grave.") {player, _ ->
|
||||
define("forcegravedeath", Privilege.ADMIN, "", "Forces a death that should produce a grave.") { player, _ ->
|
||||
player.details.rights = Rights.REGULAR_PLAYER
|
||||
setAttribute(player, "tutorial:complete", true)
|
||||
player.impactHandler.manualHit(player, player.skills.lifepoints, ImpactHandler.HitsplatType.NORMAL)
|
||||
notify(player, "Grave created at ${player.getAttribute("/save:original-loc",player.location)}")
|
||||
GameWorld.Pulser.submit(object : Pulse(15) {
|
||||
override fun pulse(): Boolean {
|
||||
player.details.rights = Rights.ADMINISTRATOR
|
||||
sendMessage(player, "Rights restored")
|
||||
return true
|
||||
}
|
||||
})
|
||||
notify(player, "Grave created at ${player.getAttribute("/save:original-loc", player.location)}")
|
||||
queueScript(player, 15, QueueStrength.SOFT) { stage: Int ->
|
||||
player.details.rights = Rights.ADMINISTRATOR
|
||||
sendMessage(player, "Rights restored")
|
||||
return@queueScript stopExecuting(player)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,10 +34,20 @@ import core.game.world.repository.Repository
|
|||
class DevelopmentCommandSet : CommandSet(Privilege.ADMIN) {
|
||||
val farmKitItems = arrayListOf(Items.RAKE_5341, Items.SPADE_952, Items.SEED_DIBBER_5343, Items.WATERING_CAN8_5340, Items.SECATEURS_5329, Items.GARDENING_TROWEL_5325,Items.COMPOST_6032, Items.SUPERCOMPOST_6034, Items.PLANT_CURE_6036)
|
||||
val runeKitItems = arrayListOf(Items.AIR_RUNE_556, Items.EARTH_RUNE_557, Items.FIRE_RUNE_554, Items.WATER_RUNE_555, Items.MIND_RUNE_558, Items.BODY_RUNE_559, Items.DEATH_RUNE_560, Items.NATURE_RUNE_561, Items.CHAOS_RUNE_562, Items.LAW_RUNE_563, Items.COSMIC_RUNE_564, Items.BLOOD_RUNE_565, Items.SOUL_RUNE_566, Items.ASTRAL_RUNE_9075)
|
||||
|
||||
fun getPlayerFromArgs(player: Player, args: Array<String>, startindex: Int = 1): Player? {
|
||||
val n = args.slice(startindex until args.size).joinToString("_")
|
||||
if (n == "") { //no argument given -> return self player
|
||||
return player
|
||||
}
|
||||
val target = Repository.getPlayerByName(n)
|
||||
if (target == null) {
|
||||
reject(player, "Could not find a player named '$n'")
|
||||
}
|
||||
return target
|
||||
}
|
||||
|
||||
override fun defineCommands() {
|
||||
/**
|
||||
* Gives the player a set of tools used to test farming stuff.
|
||||
*/
|
||||
define("farmkit", Privilege.ADMIN, "", "Provides a kit of various farming equipment."){player,_ ->
|
||||
for(item in farmKitItems){
|
||||
player.inventory.add(Item(item))
|
||||
|
|
@ -291,5 +301,78 @@ class DevelopmentCommandSet : CommandSet(Privilege.ADMIN) {
|
|||
player.sendMessage(" ${timer.identifier}")
|
||||
}
|
||||
}
|
||||
|
||||
define("setpestpoints", Privilege.ADMIN, "::setpestpoints points player_name", "Sets your (or player_name's) Pest Control points to 'points'") { player, args ->
|
||||
val target = getPlayerFromArgs(player, args, 2) ?: return@define
|
||||
val points = args[1].toIntOrNull()
|
||||
if (points == null) {
|
||||
reject(player, "No valid 'points' argument given")
|
||||
}
|
||||
target.savedData.activityData.pestPoints = points!!
|
||||
}
|
||||
|
||||
define("makeadmin", Privilege.ADMIN, "::makeadmin player_name", "Permanently gives admin rights to player_name (or self if empty)") { player, args ->
|
||||
val target = getPlayerFromArgs(player, args, 1) ?: return@define
|
||||
target.details.rights = Rights.ADMINISTRATOR
|
||||
sendMessage(player, "Gave admin rights to ${target.username}.")
|
||||
sendMessage(target, "You've been given admin rights by ${player.username}!")
|
||||
}
|
||||
|
||||
define("dropadmin", Privilege.ADMIN, "::dropadmin", "Permanently drops admin rights from self") { player, _ ->
|
||||
player.details.rights = Rights.REGULAR_PLAYER
|
||||
sendMessage(player, "Dropped admin rights.")
|
||||
}
|
||||
|
||||
define("max", Privilege.ADMIN, "::max player_name", "Gives all 99s to player_name (or self if empty)") { player, args ->
|
||||
val target = getPlayerFromArgs(player, args, 1) ?: return@define
|
||||
var index = 0
|
||||
Skills.SKILL_NAME.forEach {
|
||||
target.skills.setStaticLevel(index,99)
|
||||
target.skills.setLevel(index,99)
|
||||
index++
|
||||
}
|
||||
target.skills.updateCombatLevel()
|
||||
}
|
||||
|
||||
define("noobme", Privilege.ADMIN, "::noobme player_name", "Sets player_name (or self if empty) back to default stats") { player, args ->
|
||||
val target = getPlayerFromArgs(player, args, 1) ?: return@define
|
||||
var index = 0
|
||||
Skills.SKILL_NAME.forEach {
|
||||
val level = if (index == Skills.HITPOINTS) 10 else 1
|
||||
target.skills.setStaticLevel(index, level)
|
||||
target.skills.setLevel(index, level)
|
||||
index++
|
||||
}
|
||||
target.skills.updateCombatLevel()
|
||||
}
|
||||
|
||||
define("setlevel", Privilege.ADMIN, "::setlevel <lt>SKILL NAME<gt> <lt>LEVEL<gt> <lt>PLAYER<gt>", "Sets SKILL NAME to LEVEL for PLAYER (self if omitted)."){player,args ->
|
||||
if (args.size < 3) reject(player,"Usage: ::setlevel skillname level")
|
||||
val skillname = args[1]
|
||||
val desiredLevel: Int? = args[2].toIntOrNull()
|
||||
if (desiredLevel == null) {
|
||||
reject(player, "Level must be an integer.")
|
||||
}
|
||||
if (desiredLevel!! > 99) reject(player,"Level must be 99 or lower.")
|
||||
val skill = Skills.getSkillByName(skillname)
|
||||
if (skill < 0) reject(player, "Must use a valid skill name!")
|
||||
val target = getPlayerFromArgs(player, args, 3) ?: return@define
|
||||
target.skills.setStaticLevel(skill,desiredLevel)
|
||||
target.skills.setLevel(skill,desiredLevel)
|
||||
target.skills.updateCombatLevel()
|
||||
}
|
||||
|
||||
define("addxp", Privilege.ADMIN, "::addxp <lt>skill name | id<gt> <lt>xp<gt>", "Add xp to skill") { player, args ->
|
||||
if (args.size < 3) reject(player, "Usage: ::addxp <lt>skill name | id<gt> <lt>xp<gt> <lt>player(optional)<gt>")
|
||||
val target = getPlayerFromArgs(player, args, 3) ?: return@define
|
||||
|
||||
val skill = args[1].toIntOrNull() ?: Skills.getSkillByName(args[1])
|
||||
if (skill < 0 || skill >= Skills.NUM_SKILLS) reject(player, "Must use valid skill name or id.")
|
||||
|
||||
val xp = args[2].toDoubleOrNull()
|
||||
if (xp == null || xp <= 0) reject(player, "Xp must be a positive number.")
|
||||
|
||||
target.skills.addExperience(skill, xp!!)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -296,78 +296,6 @@ class MiscCommandSet : CommandSet(Privilege.ADMIN){
|
|||
player.dialogueInterpreter.close()
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Max account stats
|
||||
*/
|
||||
define("max", Privilege.ADMIN, "", "Gives you all 99s."){player,_ ->
|
||||
var index = 0
|
||||
Skills.SKILL_NAME.forEach {
|
||||
player.skills.setStaticLevel(index,99)
|
||||
player.skills.setLevel(index,99)
|
||||
index++
|
||||
}
|
||||
player.skills.updateCombatLevel()
|
||||
}
|
||||
|
||||
define("noobme", Privilege.ADMIN, "", "Sets you back to default stats."){ player,_ ->
|
||||
var index = 0
|
||||
Skills.SKILL_NAME.forEach {
|
||||
if (index == Skills.HITPOINTS) {
|
||||
player.skills.setStaticLevel(index,10)
|
||||
player.skills.setLevel(index,10)
|
||||
index++
|
||||
} else {
|
||||
player.skills.setStaticLevel(index,1)
|
||||
player.skills.setLevel(index,1)
|
||||
index++
|
||||
}
|
||||
}
|
||||
player.skills.updateCombatLevel()
|
||||
}
|
||||
|
||||
/**
|
||||
* Set a specific skill to a specific level
|
||||
*/
|
||||
define("setlevel", Privilege.ADMIN, "::setlevel <lt>SKILL NAME<gt> <lt>LEVEL<gt> <lt>PLAYER<gt>", "Sets SKILL NAME to LEVEL for PLAYER (self if omitted)."){player,args ->
|
||||
if(args.size < 3) reject(player,"Usage: ::setlevel skillname level")
|
||||
val skillname = args[1]
|
||||
val desiredLevel: Int? = args[2].toIntOrNull()
|
||||
if(desiredLevel == null){
|
||||
reject(player, "Level must be an integer.")
|
||||
}
|
||||
if(desiredLevel!! > 99) reject(player,"Level must be 99 or lower.")
|
||||
val skill = Skills.getSkillByName(skillname)
|
||||
if(skill < 0) reject(player, "Must use a valid skill name!")
|
||||
var target = player
|
||||
if (args.size > 3) {
|
||||
val n = args.slice(3 until args.size).joinToString("_")
|
||||
val foundtarget = Repository.getPlayerByName(n)
|
||||
if (foundtarget == null) {
|
||||
reject(player,"Invalid player \"${n}\" or player not online")
|
||||
}
|
||||
target = foundtarget!!
|
||||
}
|
||||
target.skills.setStaticLevel(skill,desiredLevel)
|
||||
target.skills.setLevel(skill,desiredLevel)
|
||||
target.skills.updateCombatLevel()
|
||||
}
|
||||
|
||||
/**
|
||||
* Add xp to skill
|
||||
*/
|
||||
define("addxp", Privilege.ADMIN, "::addxp <lt>skill name | id<gt> <lt>xp<gt>", "Add xp to skill") { player, args ->
|
||||
if (args.size != 3) reject(player, "Usage: ::addxp <lt>skill name | id<gt> <lt>xp<gt>")
|
||||
|
||||
val skill = args[1].toIntOrNull() ?: Skills.getSkillByName(args[1])
|
||||
if (skill < 0 || skill >= Skills.NUM_SKILLS) reject(player, "Must use valid skill name or id.")
|
||||
|
||||
val xp = args[2].toDoubleOrNull()
|
||||
if (xp == null || xp <= 0) reject(player, "Xp must be a positive number.")
|
||||
|
||||
player.skills.addExperience(skill, xp!!)
|
||||
}
|
||||
|
||||
define("completediaries", Privilege.ADMIN, "", "Completes all diaries."){player,_ ->
|
||||
player.achievementDiaryManager.diarys.forEach {
|
||||
for(level in it.taskCompleted.indices){
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue