This script creates names on map. Like this Video
How to use
Read the lines in SetNameForDisplay and the first lines.
DisplayNameVariable is number of game switch. Example: DisplayNameVariable = 100 # It means you use slot 100
And you need to set it on after set the name of player, the best choice is before transfer player.
If you use shadow of Marin and following pokemon, you should put it above this script (script of Marin). If not, put this script above Main.
Note
If you put a lot of names, the game will be laggy.
Code
Code:#------------------------------------------------------------------------------- # Credit: bo4p5687 #------------------------------------------------------------------------------- PluginManager.register({ :name => "Display name on map", :credits => "bo4p5687" }) #------------------------------------------------------------------------------- # If you want to change value for changing Name, call newVdisplay(value) # value is value of the name which you want to change # Example: ["Jack",0],["Picke",1] # You want to change Picke, set value = 1 # Call: newVdisplay(1) #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Store Name #------------------------------------------------------------------------------- class PokemonGlobalMetadata attr_accessor :storeDisplayName alias display_name_ini initialize def initialize @storeDisplayName = {} display_name_ini end end class StoreNameForDisplay def storeValue(id,mapid) $PokemonGlobal.storeDisplayName = {} if !$PokemonGlobal.storeDisplayName if !$PokemonGlobal.storeDisplayName["#{id} #{mapid}"] $PokemonGlobal.storeDisplayName["#{id} #{mapid}"] = 0 end return $PokemonGlobal.storeDisplayName["#{id} #{mapid}"] end def checkValue(id,mapid) return $PokemonGlobal.storeDisplayName["#{id} #{mapid}"] end def setNewValue(value) event = pbMapInterpreter.get_character(0) $PokemonGlobal.storeDisplayName["#{event.id} #{event.map_id}"] = value end end def newVdisplay(value) s = StoreNameForDisplay.new s.setNewValue(value) end #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- class DisplayName # Set game switch DisplayNameVariable = 100 SetNameForDisplay = [ # Map id, id of event, name for display [2,17, # You can set new name if you want to change bitmap, you can delete the name, too. # [Name, Value set this name], [Name, Value set this name] # Value should start at 0, the next number you can set any numbers but differents. [ ["Jack",0],["Picke",1] ] ], # Map id, id of event, name for display [2,21, [ ["Kido",0],["",5] ] ], # Map id, id of event, name for display [2,13, [ ["Running man",0] ] ], # Map id, id of event, name for display [2,20, [ ["Paul",0] ] ], # <- this comma # Map id, id of event, name for display [5,11, [ ["Strange",0],["Rio",10] ] ] # Add , if you want to write next (You can see the lines above) # Next ] def initialize(viewport,event,z) @sprites = {} @viewport = viewport @z = z # Set event @event = event if @event.is_a?(Game_Event) @mapid = @event.map_id @id = @event.id @store = StoreNameForDisplay.new @value = @store.storeValue(@id,@mapid) end @lastframe = 0 end def showName? if $game_switches[DisplayNameVariable] return true if @event.is_a?(Game_Player) if @event.is_a?(Game_Event) ret = false for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end return ret end else return false end end def create @sprites.clear drawText for sprite in @sprites.values sprite.z+=600 end $game_map.update end BaseColor = Color.new(255,255,255) ShadowColor = Color.new(0,0,0) def drawText if @sprites.include?("overlay") @sprites["overlay"].bitmap.clear else width = Graphics.width; height = Graphics.height @sprites["overlay"] = BitmapSprite.new(width,height,@viewport) @sprites["overlay"].z = @z + 1 end x = @event.screen_x y = @event.screen_y - 70 if @event.is_a?(Game_Event) for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] for value2 in value[2] string = value2[0] if value2[1][email protected](@id,@mapid) end end end elsif @event.is_a?(Game_Player) string = $Trainer.name end text = [[string,x,y,2,BaseColor,ShadowColor]] bitmap = @sprites["overlay"].bitmap pbSetSystemFont(bitmap) pbDrawTextPositions(bitmap,text) end def set_visible(value) @sprites["overlay"].visible = value if @sprites.include?("overlay") end def update if showName? if @sprites.empty? create else if Graphics.frame_count-@lastframe>Graphics.frame_rate/20 @lastframe = Graphics.frame_count drawText end end pbUpdateSpriteHash(@sprites) else dispose if [email protected]? end end def dispose pbDisposeSpriteHash(@sprites) end end #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- class Sprite_Character alias ini_display_name initialize alias visible_display_name visible= alias dispose_display_name dispose alias update_display_name update def initialize(viewport,character=nil) @viewport = viewport ini_display_name(viewport,character) end def visible=(value) visible_display_name(value) @display.set_visible(value) if @display end def dispose dispose_display_name @display.dispose if @display @display = nil end def update update_display_name @display = DisplayName.new(@viewport,@character,self.z) if !@display @display.update end end
Credit
bo4p5687
This script creates names on map. Like this Video
How to use
Read the lines in SetNameForDisplay and the first lines.
DisplayNameVariable is number of game switch. Example: DisplayNameVariable = 100 # It means you use slot 100
And you need to set it on after set the name of player, the best choice is before transfer player.
If you use shadow of Marin and following pokemon, you should put it above this script (script of Marin). If not, put this script above Main.
Note
If you put a lot of names, the game will be laggy.
Code
Code:#------------------------------------------------------------------------------- # Credit: bo4p5687 #------------------------------------------------------------------------------- PluginManager.register({ :name => "Display name on map", :credits => "bo4p5687" }) #------------------------------------------------------------------------------- # If you want to change value for changing Name, call newVdisplay(value) # value is value of the name which you want to change # Example: ["Jack",0],["Picke",1] # You want to change Picke, set value = 1 # Call: newVdisplay(1) #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- # Store Name #------------------------------------------------------------------------------- class PokemonGlobalMetadata attr_accessor :storeDisplayName alias display_name_ini initialize def initialize @storeDisplayName = {} display_name_ini end end class StoreNameForDisplay def storeValue(id,mapid) $PokemonGlobal.storeDisplayName = {} if !$PokemonGlobal.storeDisplayName if !$PokemonGlobal.storeDisplayName["#{id} #{mapid}"] $PokemonGlobal.storeDisplayName["#{id} #{mapid}"] = 0 end return $PokemonGlobal.storeDisplayName["#{id} #{mapid}"] end def checkValue(id,mapid) return $PokemonGlobal.storeDisplayName["#{id} #{mapid}"] end def setNewValue(value) event = pbMapInterpreter.get_character(0) $PokemonGlobal.storeDisplayName["#{event.id} #{event.map_id}"] = value end end def newVdisplay(value) s = StoreNameForDisplay.new s.setNewValue(value) end #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- class DisplayName # Set game switch DisplayNameVariable = 100 SetNameForDisplay = [ # Map id, id of event, name for display [2,17, # You can set new name if you want to change bitmap, you can delete the name, too. # [Name, Value set this name], [Name, Value set this name] # Value should start at 0, the next number you can set any numbers but differents. [ ["Jack",0],["Picke",1] ] ], # Map id, id of event, name for display [2,21, [ ["Kido",0],["",5] ] ], # Map id, id of event, name for display [2,13, [ ["Running man",0] ] ], # Map id, id of event, name for display [2,20, [ ["Paul",0] ] ], # <- this comma # Map id, id of event, name for display [5,11, [ ["Strange",0],["Rio",10] ] ] # Add , if you want to write next (You can see the lines above) # Next ] def initialize(viewport,event,z) @sprites = {} @viewport = viewport @z = z # Set event @event = event if @event.is_a?(Game_Event) @mapid = @event.map_id @id = @event.id @store = StoreNameForDisplay.new @value = @store.storeValue(@id,@mapid) end @lastframe = 0 end def showName? if $game_switches[DisplayNameVariable] return true if @event.is_a?(Game_Player) if @event.is_a?(Game_Event) ret = false for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end return ret end else return false end end def create @sprites.clear drawText for sprite in @sprites.values sprite.z+=600 end $game_map.update end BaseColor = Color.new(255,255,255) ShadowColor = Color.new(0,0,0) def drawText if @sprites.include?("overlay") @sprites["overlay"].bitmap.clear else width = Graphics.width; height = Graphics.height @sprites["overlay"] = BitmapSprite.new(width,height,@viewport) @sprites["overlay"].z = @z + 1 end x = @event.screen_x y = @event.screen_y - 70 if @event.is_a?(Game_Event) for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] for value2 in value[2] string = value2[0] if value2[1][email protected](@id,@mapid) end end end elsif @event.is_a?(Game_Player) string = $Trainer.name end text = [[string,x,y,2,BaseColor,ShadowColor]] bitmap = @sprites["overlay"].bitmap pbSetSystemFont(bitmap) pbDrawTextPositions(bitmap,text) end def set_visible(value) @sprites["overlay"].visible = value if @sprites.include?("overlay") end def update if showName? if @sprites.empty? create else if Graphics.frame_count-@lastframe>Graphics.frame_rate/20 @lastframe = Graphics.frame_count drawText end end pbUpdateSpriteHash(@sprites) else dispose if [email protected]? end end def dispose pbDisposeSpriteHash(@sprites) end end #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- #------------------------------------------------------------------------------- class Sprite_Character alias ini_display_name initialize alias visible_display_name visible= alias dispose_display_name dispose alias update_display_name update def initialize(viewport,character=nil) @viewport = viewport ini_display_name(viewport,character) end def visible=(value) visible_display_name(value) @display.set_visible(value) if @display end def dispose dispose_display_name @display.dispose if @display @display = nil end def update update_display_name @display = DisplayName.new(@viewport,@character,self.z) if !@display @display.update end end
Credit
bo4p5687
Tip: I noticed that the game's FPS performance is much smoother when changing the line number:
if Graphics.frame_count-@lastframe> Graphics.frame_rate / 20
For:
if Graphics.frame_count-@lastframe> Graphics.frame_rate / 40.
Could you support the Pokémon Follower EX?
I would like the name of the Pokémon that follows the team to be displayed, along with their respective level!
For example.
Charmander [5]
When leveling up
Charmander [6]
It would be an incredible HUD yes!
One question, how would you change the size of the exposed name?
I would like to decrease the text size a little.
if @event.is_a?(Game_Event)
ret = false
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
ret = true
break
end
end
return ret
end
if @event.is_a?(Game_Event)
ret = false
@name = @event.name
if $PokemonGlobal.followerToggled && @name.downcase=="followerpkmn"
ret = true
else
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
ret = true
break
end
end
end
return ret
end
if @event.is_a?(Game_Event)
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
for value2 in value[2]
string = value2[0] if value2[1][email protected](@id,@mapid)
end
end
end
elsif @event.is_a?(Game_Player)
string = $Trainer.name
end
if @event.is_a?(Game_Event)
if $PokemonGlobal.followerToggled && @name.downcase=="followerpkmn"
pkmn = $Trainer.firstAblePokemon
string = "#{pkmn.name} [#{pkmn.level}]"
else
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
for value2 in value[2]
string = value2[0] if value2[1][email protected](@id,@mapid)
end
end
end
end
elsif @event.is_a?(Game_Player)
string = $Trainer.name
end
In def drawText, below pbSetSystemFont(bitmap), add bitmap.font.size = 25 # 25 is size of text
About "Pokémon Follower EX", I don't use and test it.
In my script
1. Find def showName?, change
intoCode:if @event.is_a?(Game_Event) ret = false for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end return ret end
2. Find def drawText, changeCode:if @event.is_a?(Game_Event) ret = false @name = @event.name if $PokemonGlobal.followerToggled && @name.downcase=="followerpkmn" ret = true else for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end end return ret end
intoCode:if @event.is_a?(Game_Event) for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] for value2 in value[2] string = value2[0] if value2[1][email protected](@id,@mapid) end end end elsif @event.is_a?(Game_Player) string = $Trainer.name end
Code:if @event.is_a?(Game_Event) if $PokemonGlobal.followerToggled && @name.downcase=="followerpkmn" pkmn = $Trainer.firstAblePokemon string = "#{pkmn.name} [#{pkmn.level}]" else for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] for value2 in value[2] string = value2[0] if value2[1][email protected](@id,@mapid) end end end end elsif @event.is_a?(Game_Player) string = $Trainer.name end
It displays the Pokémon and the level, but does not accompany it when we move ...
if @event.is_a?(Game_Event)
character = @event.character_name
ret = false
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
ret = true
break
end
end
ret = false if character==""
return ret
end
if @event.is_a?(Game_Event)
character = @event.character_name
ret = false
@name = @event.name
if $PokemonGlobal.followerToggled && @name.downcase=="followerpkmn"
ret = true
else
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
ret = true
break
end
end
end
ret = false if character==""
return ret
end
1. Copy again my script. (Delete old script)
2. Small change when "Changing" in def showName?.
Change
intoCode:if @event.is_a?(Game_Event) character = @event.character_name ret = false for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end ret = false if character=="" return ret end
In def drawText, change like the post above.Code:if @event.is_a?(Game_Event) character = @event.character_name ret = false @name = @event.name if $PokemonGlobal.followerToggled && @name.downcase=="followerpkmn" ret = true else for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end end ret = false if character=="" return ret end
It still didn't work ... It didn't show anything ... I tested it in several different ways.
if @event.is_a?(Game_Event)
character = @event.character_name
ret = false
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
ret = true
break
end
end
ret = false if character==""
return ret
end
if @event.is_a?(Game_Event)
character = @event.character_name
ret = false
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
ret = true
break
end
end
ret = true if $PokemonGlobal.followerToggled && @id==SetFollower[0] && @mapid==SetFollower[1]
ret = false if character==""
return ret
end
if @event.is_a?(Game_Event)
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
for value2 in value[2]
string = value2[0] if value2[1][email protected](@id,@mapid)
end
end
end
elsif @event.is_a?(Game_Player)
string = $Trainer.name
end
if @event.is_a?(Game_Event)
for value in SetNameForDisplay
if @mapid==value[0] && @id==value[1]
for value2 in value[2]
string = value2[0] if value2[1][email protected](@id,@mapid)
end
end
end
if $PokemonGlobal.followerToggled && @id==SetFollower[0] && @mapid==SetFollower[1]
pkmn = $Trainer.firstAblePokemon
string = "#{pkmn.name} [#{pkmn.level}]"
end
elsif @event.is_a?(Game_Player)
string = $Trainer.name
end
Edit:
In my script
1. Above "def initialize(viewport,event,z)", add SetFollower = [5,2] # 5 is map id, 2 is event id; It's event when you set pokemon follower on
2. In def showName?
Change
intoCode:if @event.is_a?(Game_Event) character = @event.character_name ret = false for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end ret = false if character=="" return ret end
3. In def drawTextCode:if @event.is_a?(Game_Event) character = @event.character_name ret = false for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] ret = true break end end ret = true if $PokemonGlobal.followerToggled && @id==SetFollower[0] && @mapid==SetFollower[1] ret = false if character=="" return ret end
Change
intoCode:if @event.is_a?(Game_Event) for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] for value2 in value[2] string = value2[0] if value2[1][email protected](@id,@mapid) end end end elsif @event.is_a?(Game_Player) string = $Trainer.name end
Code:if @event.is_a?(Game_Event) for value in SetNameForDisplay if @mapid==value[0] && @id==value[1] for value2 in value[2] string = value2[0] if value2[1][email protected](@id,@mapid) end end end if $PokemonGlobal.followerToggled && @id==SetFollower[0] && @mapid==SetFollower[1] pkmn = $Trainer.firstAblePokemon string = "#{pkmn.name} [#{pkmn.level}]" end elsif @event.is_a?(Game_Player) string = $Trainer.name end
I tested this on Essentials Bruto and in my main game, none of it worked, I know this is being a boring job for you, if you can't do it, fine! :)
Sorry, I typed wrong this line "SetFollower = [5,2] # 5 is map id, 2 is event id; It's event when you set pokemon follower on"
It should be "SetFollower = [5,2] # 5 is event id, 2 is map id; It's event when you set pokemon follower on"
It worked perfectly, thank you, it looked great, could you tell me where to change the coordinates of the Pokémon's name so as not to conflict with the name of the character, because as it is very close they overlap, but it was perfect outside of that, congratulations!
x = @event.screen_x
y = @event.screen_y - 70
if @event.is_a?(Game_Event)
if $PokemonGlobal.followerToggled && @id==SetFollower[0] && @mapid==SetFollower[1]
x = @event.screen_x
y = @event.screen_y - 70
end
end
In my script, belowAddCode:x = @event.screen_x y = @event.screen_y - 70
Then the x and y in this if, you can + or - for change coordinates.Code:if @event.is_a?(Game_Event) if $PokemonGlobal.followerToggled && @id==SetFollower[0] && @mapid==SetFollower[1] x = @event.screen_x y = @event.screen_y - 70 end end