Code: |
#=== #¤class Interpreter #--- #%Ajout de la methode permettant de charger une évent depuis une autre map #%Sur la map en cours. #--- #©03/11/2011 - Nuri Yuri (塗 ゆり) #©04/11/2011 - Nuri Yuri (塗 ゆり) - Ajout de la possibilité de forcer un id. #=== class Interpreter ID_MAP_DATA=2 S_Map_File="Data/Map%03d.rxdata" Warn=true @@old_Map_id=nil @Map_Data=nil def move_event(id,x,y,map_id=ID_MAP_DATA,force_id=false,sid=0) if @@old_Map_id != map_id or !@@Map_Data @@old_Map_id=map_id @@Map_Data=load_data(sprintf(S_Map_File,map_id)) end event=@@Map_Data.events[id] if event event.x=x.to_i if x event.y=y.to_i if y event=Game_Event.new($game_map.map_id, event.clone) unless force_id if $game_map.events[id] arr=$game_map.events.keys.sort oid=id id=arr[-1]+1 $game_map.events[id]=event p "Attention, l'évent #{oid} existe déjà sur la Map #{$game_map.map_id}, l'évent à été placé avec l'id : #{id}" if Warn else $game_map.events[id]=event end else id=sid $scene.spriteset.delete_character_sprite(id) if $scene.class==Scene_Map $game_map.events[id]=event end event.id=id event.event.id=id $scene.spriteset.push_character_sprite(id) if $scene.class==Scene_Map return true else p "Erreur : L'évent #{id} n'a pas été trouvé sur la Map #{map_id}" if Warn return false end rescue p $! if Warn false end end #=== #¤Class Spriteset_Map #--- #%Ajout de la methode d'ajout de sprite. #--- #©03/11/2011 - Nuri Yuri (塗 ゆり) #=== class Spriteset_Map def push_character_sprite(id) sprite = Sprite_Character.new(@viewport1, $game_map.events[id]) @character_sprites.push(sprite) end def delete_character_sprite(id) sprite=nil @character_sprites.each {|i| if i.character.id==id sprite=i break end } return unless sprite sprite.dispose id=@character_sprites.index(sprite) @character_sprites[id]=nil @character_sprites.compact! end end #=== #¤Class Game_Character #--- #%Ajout de l'attribut id #=== class Game_Character attr_accessor :id attr_accessor :event end #=== #¤Class Scene_Map #--- #%Ajout de l'attribut spriteset #=== class Scene_Map attr_accessor :spriteset end |
Code: |
#move_event(id,x,y[,map_id[,force_id,sid]]) move_event(5,10,12,ID_MAP_DATA,true,25) #ID_MAP_DATA étant l'id de la map par défauts... |