Ergebnis 1 bis 6 von 6

Thema: [VX-Ace] Script für variablen Truheninhalt

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Zitat Zitat von Elster Beitrag anzeigen
    Wahnsinn, dass ist genau das, was ich gesucht habe
    Vielen lieben Dank

    Nur ich habe noch eine Frage, kann man irgendwie variabel sagen wie viele dieser Items in der Truhe sind? (nicht so wichtig aber wäre für Heiltränke ganz lustig)

    @Skilllernen
    Sorry, ich habe total verplant dir bescheid zu sagen, dass Script ist klasse, vielen lieben Dank.
    Meinst du mit dieser Frage, ob es möglich wäre es einzustellen, dass nicht immer X-Items drin sind, sondern in einer bestimmten Range? => Dass es bspw. sein kann, dass der Held mal 5 Potions direkt erhält - mal nur 3? Oder wie ist diese Frage zu verstehen? x3

    Edit:
    Habe es einfach mal im glauben, dass meine Annahme richtig ist, angepasst:
    Code:
    class Custom_Chest
      
      def initialize
        @chests ={}
        @var_id = 9
        init_chests()
      end
      
      def init_chests()
        $data_weapons.each do |tw|
          add_item?(tw,"weapon")
        end
        $data_armors.each do |ta|
          add_item?(ta,"armor")
        end
        $data_items.each do |ti|
          add_item?(ti,"item")
        end
      end
      
      def add_item?(item,ptype)
        return unless(item)
        reg_type = /<ch_type:\s*(.+)\s*>/i
        reg_amount = /ch_amount:\s*(.+)\s*>/i
        reg_chance = /ch_chance:\s*(.+)\s*>/i
        res_type = item.note.match(reg_type)
        res_amount = item.note.match(reg_amount)
        res_chance = item.note.match(reg_chance)
        return false unless(res_type)
        type = res_type[1]
        amount = res_amount ? res_amount[1] : 1
        chance = res_chance ? res_chance[1].to_i : 1
        
        if(type.include?(","))
          type.split(",").each do |tp|
            @chests[tp] = [] unless(@chests.has_key?(tp))
          end
        else
          @chests[type] = [] unless(@chests.has_key?(type))
        end
        
        chance.times do
          if(type.include?(","))
            type.split(",").each do |tp|
              @chests[tp] << Chest_Item.new(item.id,item.name,ptype,amount)
            end
          else
            @chests[type] << Chest_Item.new(item.id,item.name,ptype,amount)
          end
        end
        return true
      end
    
      def open_chest(chest_type)
        if(@chests.has_key?(chest_type))
          ci = @chests[chest_type][rand(@chests[chest_type].size)]
          ci.add_to_inventory(@var_id)
        else
          $game_variables[@var_id] = "ERROR"
        end
      end
    end
    
    class Chest_Item
      attr_reader :id
      attr_reader :name
      attr_reader :type
      attr_reader :amount
      
      def initialize(id,name,type,amount)
        @id = id
        @name = name
        @type = type
        @amount = amount
      end
      
      def add_to_inventory(mess_var_id=1)
        tamount = 1
        if(@amount.include?("-"))
          trand = @amount.split("-")
          tamount = trand[0].to_i + rand(trand[1].to_i - trand[0].to_i + 1)
        else
          tamount = @amount.to_i
        end
        
        $game_variables[mess_var_id] = tamount.to_s + "x " + @name
        case @type
        when "weapon"
          $game_party.gain_item($data_weapons[@id], tamount)
          return true
        when "armor"
          $game_party.gain_item($data_armors[@id], tamount)
          return true
        when "item"
          $game_party.gain_item($data_items[@id], tamount)
          return true
        else
          return false
        end
      end
    end
    
    
    module DataManager
      class <<self; alias org_setup_new_game setup_new_game; end
      def self.setup_new_game
        self.org_setup_new_game
        $chests = Custom_Chest.new()
      end
      
      def self.load_game_without_rescue(index)
        File.open(make_filename(index), "rb") do |file|
          Marshal.load(file)
          extract_save_contents(Marshal.load(file))
          reload_map_if_updated
          @last_savefile_index = index
        end
        $chests = Custom_Chest.new()    
        return true
      end
    end
    Einfach das alte hiermit ersetzen. Beim Befehl für die Anzahl kannst du nun eine Range eingeben (Minimum-Maximum ohne Leerzeichen, getrennt durch Bindestrich):
    <ch_amount: 3-6>

    Geändert von Linkey (02.07.2014 um 20:56 Uhr)

Berechtigungen

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