mirror of
https://github.com/2006-Scape/apollo.git
synced 2026-07-03 08:39:11 +00:00
69 lines
2.0 KiB
Ruby
69 lines
2.0 KiB
Ruby
require 'java'
|
|
|
|
java_import 'org.apollo.game.model.World'
|
|
java_import 'org.apollo.game.model.Position'
|
|
java_import 'org.apollo.game.model.entity.Npc'
|
|
|
|
# An array of npcs that cannot be spawned.
|
|
blacklist = []
|
|
|
|
# Spawns a non-blacklisted npc in the specified position, or the player's position if both 'x' and
|
|
# 'y' are not supplied.
|
|
on :command, :spawn, RIGHTS_ADMIN do |player, command|
|
|
args = command.arguments
|
|
unless [1, 3, 4].include?(args.length) && (id = args[0].to_i) > -1
|
|
player.send_message('Invalid syntax - ::spawn [npc id] [optional-x] [optional-y] [optional-z]')
|
|
return
|
|
end
|
|
|
|
if blacklist.include?(id)
|
|
player.send_message("Sorry, npc #{id} is blacklisted!")
|
|
return
|
|
end
|
|
|
|
if args.length == 1
|
|
position = player.position
|
|
else
|
|
height = args.length == 4 ? args[3].to_i : player.position.height
|
|
position = Position.new(args[1].to_i, args[2].to_i, height)
|
|
end
|
|
|
|
$world.register(Npc.new($world, id, position))
|
|
end
|
|
|
|
# Mass spawns npcs around the player.
|
|
on :command, :mass, RIGHTS_ADMIN do |player, command|
|
|
args = command.arguments
|
|
unless args.length == 2 && (id = args[0].to_i) > -1 && (1..5).include?(range = args[1].to_i)
|
|
player.send_message('Invalid syntax - ::spawn [npc id] [range (1-5)]')
|
|
return
|
|
end
|
|
|
|
if blacklist.include?(id)
|
|
player.send_message("Sorry, npc #{id} is blacklisted!")
|
|
return
|
|
end
|
|
|
|
center_position = player.position
|
|
|
|
min_x = center_position.x - range
|
|
min_y = center_position.y - range
|
|
max_x = center_position.x + range
|
|
max_y = center_position.y + range
|
|
z = center_position.height
|
|
|
|
(min_x..max_x).each do |x|
|
|
(min_y..max_y).each do |y|
|
|
$world.register(Npc.new($world, id, Position.new(x, y, z)))
|
|
end
|
|
end
|
|
|
|
player.send_message("Mass spawning npcs with id #{id}.")
|
|
end
|
|
|
|
# Unregisters all npcs from the world npc repository.
|
|
on :command, :clearnpcs, RIGHTS_ADMIN do |player, _command|
|
|
$world.npc_repository.each { |npc| $world.unregister(npc) }
|
|
player.send_message('Unregistered all npcs from the world.')
|
|
end
|