Ergebnis 1 bis 4 von 4

Thema: Event im Spiel kopieren

  1. #1

    Event im Spiel kopieren

    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_idload_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)
        
    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 
        
    @events[s] = Game_Event.new(@map_idev)
        @
    events[s].moveto(xy)
        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)
        
    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 
        
    @events[s] = Game_Event.new(@map_idev)
        @
    events[s].moveto(xy)
        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!
    Angehängte Dateien Angehängte Dateien

  2. #2
    Ohne mir jetzt dir scripts.rxdata anzuschauen:
    Sieht so aus als hättest du das sprite refresh vergessen.
    PHP-Code:
    # Aufruf:
    # $game_map.add_event(map_id,id,x,y)
    # ...weitere Events...
    # $scene.spriteset.refresh 

  3. #3
    Durch das hinzufügen von:
    $scene.spriteset.refresh
    hatte es geklappt ^,^
    Aber wie lasse ich mir die ID des neuen Events in der Variable $newevent speichern?
    Da steht was von:

    Man kann sich die ID des neuen Events zurückgeben lassen (@id = $game_map.add...)
    Aber so weiter helfen tut es mir nicht ^,^

  4. #4
    Du musst beim Erstellen des Event-Klons den Rückgabewert der Variable zuordnen:

    $game_variables[16] = $game_map.add_event(1,15, 2, 21)


    würde beispielsweise das entspr. Event an die entspr. Stelle kopieren und dessen ID in Variable 16 speichern.

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •