Grazie tante per l'impegno, ho preferito non dir nulla per tutto questo tempo per impegnarmi anch'io, XD... ebbene dopo vari cervellamenti credo di aver raggiunto il mio obbiettivo, lo spiegherò qui di seguito se mai qualcun'altro voglia fare una cosa simile.
Prima di tutto, ecco come si è evoluto il primo script, chiaramente richiamandolo con "New_Event.new(x, y)"; ho in seguito "disattivato" character name/hue per provare se funzionava anche con tile_id.
class New_Event
def initialize(x, y)
# id event
map_ev = $game_map.events
for i in 1...map_ev.size+2
if not map_ev.keys.include?(i)
id = i
break
end
end
ev = RPG::Event.new(x, y)
ev.id = id
ev.name = "CreatoScript"
ev.pages = [RPG::Event::Page.new]
# pages
ev.pages[0].move_type = 0
ev.pages[0].move_speed = 3
ev.pages[0].move_frequency = 3
ev.pages[0].move_route = RPG::MoveRoute.new
ev.pages[0].walk_anime = true
ev.pages[0].step_anime = false
ev.pages[0].direction_fix = false
ev.pages[0].through = false
ev.pages[0].always_on_top = false
ev.pages[0].trigger = 0
# condition
ev.pages[0].condition = RPG::Event::Page::Condition.new
ev.pages[0].condition.switch1_valid = false
ev.pages[0].condition.switch2_valid = false
ev.pages[0].condition.variable_valid = false
ev.pages[0].condition.self_switch_valid = false
# graphic
ev.pages[0].graphic = RPG::Event::Page::Graphic.new
ev.pages[0].graphic.tile_id = 398
#ev.pages[0].graphic.character_name = "183-Rock02"
#ev.pages[0].graphic.character_hue = 0
ev.pages[0].graphic.direction = 2
ev.pages[0].graphic.pattern = 0
ev.pages[0].graphic.opacity = 255
ev.pages[0].graphic.blend_type = 0
# command
ev.pages[0].list = Array.new(2, RPG::EventCommand.new)
ev.pages[0].list[0].code = 250
ev.pages[0].list[0].indent = 0
audio = RPG::AudioFile.new("157-Skill01", 80, 100)
ev.pages[0].list[0].parameters = [audio]
# game map
$game_map.event_new(id, ev)
# end initialize
end
# end New_Event
end
Ho poi creato un "def" in Game_Map...
#--------------------------------------------------------------------------
# * Event New
#--------------------------------------------------------------------------
def event_new(id, ev)
@map.events[id] = ev
@events[id] = Game_Event.new(@map_id, @map.events[id])
refresh
end
Arrivato a questo punto non dava errori, l'evento era tangibile e ci si potevo interagire, creato il comando del suono apposita per constatare ciò... però risultava invisibile, così ho pensato di dover pasticciare con "Spriteset_Map", infatti...
Ho aggiunto questo prima dell'update degli sprite.
if not $game_map.events.size+1 == @character_sprites.size
refresh
end
Ecco invece il comando per aggiornare gli sprite.
#--------------------------------------------------------------------------
# * refresh
#--------------------------------------------------------------------------
def refresh
@character_sprites = [@character_sprites[@character_sprites.size-1]]
s = 0
for i in $game_map.events.keys.sort
sprite = Sprite_Character.new(@viewport1, $game_map.events[i])
@character_sprites.insert(s, sprite)
s += 1
end
end
Inoltre va precisato che l'evento creato sparirà una volta cambiato mappa, quindi bisognerà ricrearlo se serve più volte, questa è solo una prova, per capire come crearlo... ci tengo a precisare che sono tutte cose che ho imparato per esperienza, spulciando su internet si trova poco o niente, quindi se si potesse fare la stessa cosa ma meglio, beh, basta che funzioni, o no?
Se qualcuno provandolo trova dei bug o simili, mi avvisi, grazie, lo stesso farò anch'io.