Return a list of ids if entities share the same name.

This commit is contained in:
Major-
2014-02-14 18:50:31 +00:00
parent 93fcfe2107
commit 7e88243cec
+17 -7
View File
@@ -1,4 +1,5 @@
require 'java' require 'java'
java_import 'org.apollo.game.model.Player' java_import 'org.apollo.game.model.Player'
java_import 'org.apollo.game.model.def.ItemDefinition' java_import 'org.apollo.game.model.def.ItemDefinition'
java_import 'org.apollo.game.model.def.NpcDefinition' java_import 'org.apollo.game.model.def.NpcDefinition'
@@ -19,14 +20,10 @@ on :command, :lookup, RIGHTS_ADMIN do |player, command|
return return
end end
Kernel.const_get("#{type.capitalize}Definition").definitions.each do |definition| ids = locate_entity(type, name)
if definition.name.to_s.downcase == name
player.send_message("That #{type} has id #{definition.id}.")
return
end
end
player.send_message("Could not find an #{type} called #{name}.") message = ids.length == 0 ? "Could not find an #{type} called #{name}." : "Possible ids are: #{ids.join(" ")}"
player.send_message(message)
end end
on :command, :iteminfo, RIGHTS_ADMIN do |player, command| on :command, :iteminfo, RIGHTS_ADMIN do |player, command|
@@ -58,3 +55,16 @@ on :command, :npcinfo, RIGHTS_ADMIN do |player, command|
player.send_message("Npc #{id} is called #{definition.name} and #{is_combative}.") player.send_message("Npc #{id} is called #{definition.name} and #{is_combative}.")
player.send_message("Its description is \"#{definition.description}\".") player.send_message("Its description is \"#{definition.description}\".")
end end
# Locates an entity with the specified type (e.g. npc) and name, returning possible ids as an array.
def locate_entity(type, name, immediate=false)
ids = []
name.downcase!
Kernel.const_get("#{type.capitalize}Definition").definitions.each do |definition|
if definition.name.to_s.downcase == name
ids << definition.id
return ids[0] if immediate
return ids if ids.length == 10
end
end
end