SMWma
11.12.2010, 16:50
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:
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:
$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
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:
$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!
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:
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:
$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
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:
$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!