Ergebnis 1 bis 5 von 5

Thema: [XP] Script befehl Item auswählen

  1. #1

    [XP] Script befehl Item auswählen

    Hallo,

    ich nutze ein Ring-Menü Script. Hier der betreffende Teil:

    Code:
    class Scene_items_rc
      def main
        @actor= $game_party.actors[0]
        @data= []
        @icon_name = []
        @name= []
        @description=[]
        @anzahl= []
        get_item
        #  @status.active=false
        @command_window = Window_Ring_Command.new(1,$game_player.screen_x-30, $game_player.screen_y-50, @icon_name, 60)
        @beschreibung_window = Window_beschreibung.new(@name,@description,@anzahl)
        @beschreibung_window.z = 400
        @spriteset = Spriteset_Map.new
        # Main loop
        Graphics.transition
        loop do
          # Update game screen
          Graphics.update
          # Update input information
          Input.update
          # Frame update
          update
          # Abort loop if screen is changed
          if $scene != self
            break
          end
        end
            Graphics.freeze
        # Dispose of command window
        @command_window.dispose
        @beschreibung_window.dispose
        @spriteset.dispose
       
       
      end
      def update
        @command_window.update
        @beschreibung_window.update
        @item = @data[@command_window.index]
      if Input.trigger?(Input::B)
          # Play cancel SE
          $game_system.se_play($data_system.cancel_se)
          # Switch to map screen
          $scene = Scene_Map.new 
          return
        end
        if Input.trigger?(Input::C)
          wählen
          end
    if Input.repeat?(Input::	LEFT )
      @command_window.move_left
        $game_system.se_play($data_system.cursor_se)
        @item = @data[@command_window.index]
      end
    if Input.repeat?(Input::RIGHT)
     @command_window.move_right
        $game_system.se_play($data_system.cursor_se)
        @item = @data[@command_window.index]
      end
      if Input.trigger? (Input::UP)
      #$scene = Scene_skill_rc.new
      $scene = Scene_Menu.new
    end
    if Input.trigger? (Input::DOWN)
      #$scene = Scene_waffen.new
      $scene = Scene_Menu.new
    end
    
    
     #       case Input.dir4
    #  when 4 then @command_window.move_left
     #   $game_system.se_play($data_system.cancel_se)
     # when 6 then @command_window.move_right
     #   $game_system.se_play($data_system.cancel_se)
    
    #end
    #@index = 0
    #while @command_window.index != @index and @command_window.index !=0
     # @index= @command_window.index
    end  
    def wählen
          unless @item.is_a?(RPG::Item)
            $game_system.se_play($data_system.buzzer_se)
            return
          end
          unless $game_party.item_can_use?(@item.id)
            $game_system.se_play($data_system.buzzer_se)
            return
          end
                $game_system.xas_item_id = @item.id
                @ausgerüstet = @item
                update_icons
              
              $scene = Scene_Map.new
              return
            
            
    end
        def update_icons
          @data.clear
        @icon_name.clear    
        @name.clear
        @description.clear
        @anzahl.clear
        get_item
        @command_window.update_icons(@icon_name)
        @beschreibung_window.refresh
      end
        def get_item
          unless @ausgerüstet == nil
         @data.push(@ausgerüstet)
         @icon_name.push(@ausgerüstet.icon_name)
        @name.push(@ausgerüstet.name)
        @description.push(@ausgerüstet.description)
        @anzahl.push($game_party.item_number($game_system.xas_item_id))
        end
        for i in 1...$data_items.size
          if $game_party.item_number(i) > 0 and $data_items[i] != @ausgerüstet
            @data.push($data_items[i])
            @icon_name.push($data_items[i].icon_name)
        @name.push($data_items[i].name)
        @description.push($data_items[i].description)
        @anzahl.push($game_party.item_number($data_items[i].id))
    
        end
      end
    
      if @data[0] == nil
        @data.push("nix")
        @icon_name.push("nix")
        @name.push("")
        @description.push("")
        end
        
    
          
      
        end
      end
    Alles funktioniert hervorragend, mit Ausnahme des Auswählens eines Items.
    Sobald ich im Menü ein Item benutzen will erhalte ich folgende Fehlermeldung:

    Script "Scene_items_rc" line 92: NoMethodError occured.
    Undefined method "xas_item_id=" for #<Game_System:0xad6a3b0>

    Ich habe die betreffende Zeile im Code fett makiert.
    Nun weiß ich, dass es ein XAS-Abs gibt und hatte vermutet, dass dies vielleicht ein Befehl aus diesem Script ist.
    Oder handelt es sich hierbei nur um einen Zufall? Wenn ja, gibt es eine Möglichkeit das Problem dennoch zu beheben?

    Jedenfalls wäre ich sehr verbunden, wenn mir jemand hierbei auf die Sprünge hilft.
    Immerhin wäre es schade dieses wunderbare Script nur wegen einer Kleinigkeit nicht benutzen zu können.

    Vielen Dank im vorraus.

  2. #2
    Zitat Zitat
    Nun weiß ich, dass es ein XAS-Abs gibt und hatte vermutet, dass dies vielleicht ein Befehl aus diesem Script ist.
    Also aus Jux wird der Ersteller des Skripts das Ding sicher nicht xas_item_id genannt haben.

    Ich nehme also an, dass das Script ein Teil vom XAS ist und ohne nicht funktioniert.

    Geändert von Nemica (26.09.2013 um 19:56 Uhr)

  3. #3
    Genau das nehme ich auch an.

    Da jedoch alles andere ausnahmslos perfekt funktioniert, wäre es interessant zu wissen,
    ob jemand das "pendant" zu "$game_system.xas_item_id" im Standardscript kennt.

    Ich habe bereits versucht das ".xas" einfach weg zu lassen. Es gibt keine Fehlermeldung mehr,
    aber das Common Event das dem Item zugewiesen ist startet dennoch nicht.

  4. #4
    Das XAS verändert eine Menge Basisklassen, da kann man nicht einfach eine äquivalente Variable finden. Was soll xas_item_id überhaupt sein? Der Name ist nicht wirklich aussagekräftig.

  5. #5
    Ich glaube ich habe es geschafft.
    Der Code um über ein Item ein Common Event zu starten lautet:

    Code:
    if @item.common_event_id > 0
              $game_temp.common_event_id = @item.common_event_id
    end

Berechtigungen

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