Ja hallo ^,^
Wie kopiere ich im Spiel ohne Swtiches ein Event?
Ich habe bisher 2 Event-Kopier-Skripte gefunden:
Eins von Shining Advance, dass sich schon beim laden einer Karte das Spiel aufhängt:
PHP-Code:
class Spriteset_Map
def add_sprite ( event )
@ character_sprites . push ( Sprite_Character .new(@ viewport1 , event ))
end
end
class Scene_Map
def copy_event ( map_id , event_id )
event = Game_Event .new( map_id , load_data ( sprintf ( "Data/Map%03d.rxdata" , map_id )). events [ event_id ])
$game_map . events [ $game_map . events . keys . max + 1 ] = event
event . id = $game_map . events . keys . max
@ spriteset . add_sprite ( event )
event . refresh
return event
end
end
class Game_Event
def id =( n )
@ id = n
@ event . id = n
end
end
Es wird so benutzt:
Code:
$scene.copy_event(map_id,event_id).moveto(x,y)
Und eins, dass mehr oder weniger klappt: http://www.rpg-studio.de/scriptdb/Events-klonen.html
PHP-Code:
class Spriteset_Map
#--------------------------------------------------------------------------
def refresh
$game_map . need_refresh = true
unless @ character_sprites == nil
for sprite in @ character_sprites
sprite . dispose
end
end
@ character_sprites = []
for i in $game_map . events . keys . sort
sprite = Sprite_Character .new(@ viewport1 , $game_map . events [ i ])
@ character_sprites . push ( sprite )
end
@ character_sprites . push ( Sprite_Character .new(@ viewport1 , $game_player ))
end
#--------------------------------------------------------------------------
end
class Game_Map
#--------------------------------------------------------------------------
def add_event ( map_id , id , x , y )
s = 1
( 1. .@ events . size + 1 ). each {| s |break unless @ events . keys .include?( s )}
map = load_data ( sprintf ( "Data/Map%03d.rxdata" , map_id ))
ev = map . events [ id ]
ev . id = s
@ events [ s ] = Game_Event .new(@ map_id , ev )
@ events [ s ]. moveto ( x , y )
return @ events [ s ]. id
end
#--------------------------------------------------------------------------
end
class Scene_Map
#--------------------------------------------------------------------------
attr_accessor : spriteset
#--------------------------------------------------------------------------
end
#--------------------------------------------------------------------------
def refresh
$game_map . need_refresh = true
unless @ character_sprites == nil
for sprite in @ character_sprites
sprite . dispose
end
end
@ character_sprites = []
for i in $game_map . events . keys . sort
sprite = Sprite_Character .new(@ viewport1 , $game_map . events [ i ])
@ character_sprites . push ( sprite )
end
@ character_sprites . push ( Sprite_Character .new(@ viewport1 , $game_player ))
end
#--------------------------------------------------------------------------
class Game_Map
#--------------------------------------------------------------------------
def add_event ( map_id , id , x , y )
s = 1
( 1. .@ events . size + 1 ). each {| s |break unless @ events . keys .include?( s )}
map = load_data ( sprintf ( "Data/Map%03d.rxdata" , map_id ))
ev = map . events [ id ]
ev . id = s
@ events [ s ] = Game_Event .new(@ map_id , ev )
@ events [ s ]. moveto ( x , y )
return @ events [ s ]. id
end
#--------------------------------------------------------------------------
end
class Scene_Map
#--------------------------------------------------------------------------
attr_accessor : spriteset
#--------------------------------------------------------------------------
end
Das Event wird zwar kopiert, aber die Grafik wird nicht angezeigt!
Es wird so benutzt:
Code:
$game_map.add_event(map_id,id,x,y)
# ... weitere Events ...
# ... es können bel. viele Events angeben werden
Die Scripts.rxdata Datei findet ihr im Anhang!