Ogłoszenie 

Uwaga! To forum jest w trybie offline.
Wszelką pomoc uzyskasz pod adresem
forum.ultimateam.pl


Administracja Forum


Poprzedni temat «» Następny temat
Multi use items
Autor Wiadomość
Domilos 




Preferowany:
RPG Maker VXAce

Pomógł: 2 razy
Dołączył: 16 Cze 2011
Posty: 62
Wysłany: Czw 19 Lip, 2012 22:57
Multi use items
~ Multi use items ~


Krótki opis:
Czy nie denerwowało Cię, gdy postać wypijała miksturę leczniczą za jednym zamachem? Dzięki temu skryptowi, przedmioty mogą być używane po kilka razy.

Autor:
LiTTleDRAgo

Tłumaczenie:
Domilos

Kompatybilność:
RPG Maker VX

Skrypt:
Spoiler:

Kod:
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
# Multi use items
# Wersja: 1.25
# Autor skryptu: LiTTleDRAgo
# Tłumaczenie: Domilos
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=
#
# Czy nie denerwowało Cię, gdy postać wypijała miksturę leczniczą za jednym
# zamachem? Dzięki temu skryptowi, przedmioty mogą być używane po kilka razy.
#
# Aby jakiś przedmiot był używany kilkukrotnie, należy w "Note" przedmiotu
# wpisać:
# Multi Use = X
#
# X - ilość użyć
#
#:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:=:

module LiTTleDRAgo

#===============================KONFIGURACJA===================================

  Show_Use_String   = 'Liczba użyć: ' # Napis pojawiający się PRZED liczbą użyć.
  Show_Times_String = ' ' # Napis pojawiający się PO liczbie użyć.
     
#========================KONIEC KONFIGURACJI===================================
end
#==============================================================================
# ** Game_Party
#------------------------------------------------------------------------------
#  This class handles the party. It includes information on amount of gold
# and items. The instance of this class is referenced by $game_party.
#==============================================================================
class Game_Party
  #--------------------------------------------------------------------------
  # * Constants
  #--------------------------------------------------------------------------
  VX   = defined?(Window_BattleMessage)
  name =  VX ? "(items, n, include_equip = false)" : "(items, n)"
  eval_text = "
  #--------------------------------------------------------------------------
  # * Gain Items (or lose)
  #--------------------------------------------------------------------------
  def gain_item#{name}
    @multi_use = [] if @multi_use.nil?
    item_id, number = (VX ? items.id : items),item_number(items)
    if item_id > 0
      if multiuse?(item_id) && n > 0
        (0...n).each {|i| @multi_use.push([item_id,multiuse?(item_id)])}
      end
      @items[item_id] = [[number+n,0].max,99].min
      return if !VX
      n += item_number(item_id)
      members.each {|actor|
        while n < 0 && actor.equips.include?(items)
        actor.discard_equip(items);  n += 1  end } if include_equip && n < 0
    end
  end
  #--------------------------------------------------------------------------
  # * Lose Items
  #--------------------------------------------------------------------------
  def lose_item#{name}
    @multi_use = [] if @multi_use.nil?
    item_id, i, xer = (VX ? items.id : items),0, n
    if multiuse?(item_id) && have_multiuse?(item_id) && !$scene.is_a?(Scene_Shop)
      @multi_use.sort! {|a,b|a[1]<=> b[1]}
      for item in @multi_use
        if item[0] == item_id
          @multi_use[i][1]-=1
          if @multi_use[i][1] == 0
            @multi_use.delete(item)
            @items[item_id] = [[item_number(items) -1, 0].max, 99].min
          end
          break
        end
        i+=1
      end
    elsif $scene.is_a?(Scene_Shop) && multiuse?(item_id)
      @multi_use.sort! {|a,b|a[1]<=> b[1]}
      for item in @multi_use
        break if xer == 0
        if item[0] == item_id then  @multi_use.delete_at(i); xer-=1 end
        i+=1
      end
      @items[item_id] = [[item_number(items) -n, 0].max, 99].min
    else
      n = -n
      gain_item#{name}
    end
  end"
  eval(eval_text)
  #--------------------------------------------------------------------------
  # * Have Multiusables?
  #--------------------------------------------------------------------------
  def have_multiuse?(item_id)
    @multi_use = [] if @multi_use.nil?
    @multi_use.each {|item|  return true if item[0] == item_id }
    return false
  end
  #--------------------------------------------------------------------------
  # * Multiusables?
  #--------------------------------------------------------------------------
  def multiuse?(item_id=nil)
    return @multi_use if item_id.nil?
    unless VX
      s = LiTTleDRAgo.multi_use_item(item_id)
      return s ? s.abs : nil
    end
    return LiTTleDRAgo.multi_use_item(item_id) unless VX
    if $data_items[item_id].note =~ /Multi Use = (\d+)/
      return $1.to_i
    end
  end
end

if LiTTleDRAgo::Show_Use_String
#==============================================================================
# ** Window_Item / Window_ShopSell
#------------------------------------------------------------------------------
#  This window displays a list of inventory items for the item screen, etc.
#==============================================================================
  for i in 0..1
    kelas = i == 0 ? "Window_Item" : "Window_ShopSell"
    break if defined?(Window_BattleMessage) && i == 1
    eval_text = "
    class #{kelas} < Window_Selectable
      #------------------------------------------------------------------------
      # * Update Help Text
      #------------------------------------------------------------------------
      def update_help
        if $game_party.multiuse?(self.item.id)
          $game_party.multiuse?.each {|item|
            if item[0] == self.item.id then @uses = item[1]; break end }
          times = LiTTleDRAgo::Show_Times_String
          times = '' if times.nil?
          description = LiTTleDRAgo::Show_Use_String + @uses.to_s + '/' +
          $game_party.multiuse?(self.item.id).to_s
          @help_window.set_text(description + times + self.item.description)
        else
          @help_window.set_text(self.item.nil? ? '' : self.item.description)
        end
      end
    end"
    eval(eval_text)
  end
end

$multi_use_items = true


Screeny:
Spoiler:



Dodatkowe informacje:
Skrypt umieszczamy nad "Main".

Aby jakiś przedmiot był używany kilkukrotnie, należy w "Note" przedmiotu wpisać:
Multi Use = X
"X", to ilość użyć.
 
 
Loki 




Preferowany:
RPG Maker VX

Pomógł: 12 razy
Dołączył: 25 Kwi 2012
Posty: 162
Wysłany: Pią 20 Lip, 2012 08:13
Niezły skrypt ale raczej mi sie nieprzyda :-D
 
 
Wyświetl posty z ostatnich:   
Odpowiedz do tematu
Nie możesz pisać nowych tematów
Nie możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Nie możesz załączać plików na tym forum
Możesz ściągać załączniki na tym forum
Dodaj temat do Ulubionych
Wersja do druku

Skocz do:  

Powered by phpBB modified by Przemo © 2003 phpBB Group | Template Klam by Ayene