=begin
To show an icon on a event just take CtI = Iconid
as the name of the event.
Example: CtI = 1
If you want to set the icon visible just use this in a
Call Script...
icon_visibility(id,status)
id = eventid
status = true/false
this command works only for an event on the visited map.
To change the visibility of all icons on the visited map use:
all_icon_visibility(status)
status = true/false
To change the visibility of all icons on all visited maps use:
global_icon_visibility(status)
status = true/false
=end
class Game_Temp
attr_accessor :eventicons
alias initialize_icon initialize unless $@
def initialize
initialize_icon
@eventicons = []
end
end
class Game_System
attr_accessor :eventiconsvisibility
alias initialize_iconvis initialize unless $@
def initialize
initialize_iconvis
@eventiconsvisibility = {}
end
end
class Game_Event
attr_accessor :name
alias initialize_name initialize unless $@
def initialize(map_id, event)
initialize_name(map_id, event)
@name = event.name
end
end
class Game_Map
attr_reader :map_id
alias setup_emptyvisibilityicons setup unless $@
def setup(map_id)
$game_temp.eventicons = [] if @map_id != map_id
setup_emptyvisibilityicons(map_id)
if $game_system.eventiconsvisibility.include?(map_id) == false
$game_system.eventiconsvisibility.store(map_id,[])
end
end
end
class Scene_Map
alias initialize_event_icons initialize unless $@
def initialize
initialize_event_icons
$game_temp.eventicons = []
end
alias update_transfer_player_event_icons update_transfer_player unless $@
def update_transfer_player
$game_temp.eventicons = [] unless $game_player.transfer? == false
update_transfer_player_event_icons
end
end
class Sprite_Character
alias initialize_icon initialize unless $@
def initialize(viewport, character = nil)
initialize_icon(viewport, character)
if character.class == Game_Event
if character.name.include?("CtI")
data = character.name.split
id = data[data.index("CtI")+2].to_i
@icon = Eventicon.new(id,character,viewport,character.screen_x - 32 + 4 + 12,character.screen_y - 32 + 4)
$game_temp.eventicons.push(@icon)
if $game_system.eventiconsvisibility[$game_map.map_id].size < $game_temp.eventicons.size
$game_system.eventiconsvisibility[$game_map.map_id].push(false)
else
@icon.visible = $game_system.eventiconsvisibility[$game_map.map_id][$game_temp.eventicons.size - 1]
end
end
end
end
alias dispose_icon dispose unless $@
def dispose
@icon.dispose if @icon != nil
dispose_icon
end
alias update_icon update unless $@
def update
update_icon
@icon.update if @icon != nil
end
end
class Eventicon < Sprite
attr_accessor :event
def initialize(icon_index,event,viewport,x,y)
super(viewport)
@event = event
self.visible = false
self.x = x
self.y = y
self.bitmap = Bitmap.new(24,24)
draw_icon(icon_index,0,0)
end
def draw_icon(icon_index, x, y, enabled = true)
bitmap = Cache.system("Iconset")
rect = Rect.new(icon_index % 16 * 24, icon_index / 16 * 24, 24, 24)
self.bitmap.blt(x, y, bitmap, rect, enabled ? 255 : 128)
end
def update
self.z = @event.screen_z
self.x = @event.screen_x - 32 + 4 + 12
self.y = @event.screen_y - 32 + 4
end
end
class Game_Interpreter
def global_icon_visibility(status)
for i in $game_system.eventiconsvisibility
for o in 0...$game_system.eventiconsvisibility[i[0]].size
$game_system.eventiconsvisibility[i[0]][o] = status
end
end
all_icon_visibility(status)
end
def all_icon_visibility(status)
for i in $game_temp.eventicons
i.visible = status
end
for i in 0...$game_system.eventiconsvisibility[$game_map.map_id].size
$game_system.eventiconsvisibility[$game_map.map_id][i] = status
end
end
def icon_visibility(id,status)
for i in 0...$game_temp.eventicons.size
if $game_temp.eventicons[i].event == $game_map.events[id]
$game_temp.eventicons[i].visible = status
$game_system.eventiconsvisibility[$game_map.map_id][i] = status
end
end
end
end
Add a code snippet to your website: www.paste.org