[VX] Ograniczona Ilość Przedmiotów

Problemy związane z pracą w RM, poszukiwania współpracowników. Uwaga na zasady zakładania tematów!

Moderatorzy: GameBoy, Dragon Kamillo

ODPOWIEDZ
Awatar użytkownika
Yoroiookami

GF 2019 - Pełne Wersje (miejsce 2); GF 2017 - Dema (miejsce 1); GF 2015 - Pełne Wersje (miejsce 2); GF 2014 - Pełne Wersje (miejsce 3); GF 2010 - Gry (miejsce 2); GF Special III - Recenzje (zwycięstwo)
Posty: 679
Rejestracja: 02 wrz 2014, 12:45

[VX] Ograniczona Ilość Przedmiotów

Post autor: Yoroiookami »

Mam tutaj taki skrypt od Ayune. Pozwala na ustawienie limitu do kupowanych przedmiotów. Problem polega na tym, że jeżeli przedmiot zostanie użyty, znowu można kupić go w sklepie.
Chciałbym żeby ten limit działał niezależnie od tego czy przedmiotu użyjemy, czy nie. :| Jeśli to możliwe.

Kod: Zaznacz cały

#===================================================================
# Limit przedmiotów do kupienia / Shop Item Limit [VX]
# by Ayene
# 13.09.2012
# www.ultimateam.pl
#===================================================================
# Opis:
# Skrypt umożliwia ustawienie maksymalnej liczby przedmiotów do
# kupienia w sklepie.
#
# Instrukcja:
# By skorzystać ze skryptu w oknie 'Note' przy danym przedmiocie / broni /
# pancerzu w Bazie Danych umieść tekst <max_buy LICZBA>.
#
# Przykładowo:
# Jeśli chcesz, by drużyna mogła kupić Potion maksymalnie 5 razy,
# to w oknie 'Note' tego przedmiotu należy wpisać:
# <max_buy 5>
#===================================================================
module AYE
  module Custom_Shop
    BUY = /<(?:MAX_BUY|max_buy)\s*(\d+)>/i   
    MAX_BUY = 99 # domyślna maksymalna liczba przedmiotów
  end
end
#===================================================================
# RPG::BaseItem
#===================================================================
class RPG::BaseItem
  attr_accessor :max_buy 
  def item_maxbuy_ini
    @max_buy = AYE::Custom_Shop::MAX_BUY
    self.note.split(/[\r\n]+/).each { |line|
      case line
      when AYE::Custom_Shop::BUY
        @max_buy = $1.to_i
      end
    }
  end
end
class Window_ShopBuy < Window_Selectable
  #--------------------------------------------------------------------------
  # * Draw Item
  #     index : item number
  #--------------------------------------------------------------------------
  def draw_item(index)
    item = @data[index]
    number = $game_party.item_number(item)
    enabled = (item.price <= $game_party.gold and number < item.max_buy)
    rect = item_rect(index)
    self.contents.clear_rect(rect)
    draw_item_name(item, rect.x, rect.y, enabled)
    rect.width -= 4
    self.contents.draw_text(rect, item.price, 2)
  end
end
#===================================================================
# Scene_Title
#===================================================================
class Scene_Title < Scene_Base
  alias aye_custshop_loaddata load_database
  def load_database
    aye_custshop_loaddata
    for group in [$data_items, $data_weapons, $data_armors]
      for obj in group
        next if obj.nil?
        obj.item_maxbuy_ini
      end
    end
  end
end
#===================================================================
# Scene_Equip
#===================================================================
class Scene_Shop < Scene_Base
  #--------------------------------------------------------------------------
  # * Update Buy Item Selection
  #--------------------------------------------------------------------------
  def update_buy_selection
    @status_window.item = @buy_window.item
    if Input.trigger?(Input::B)
      Sound.play_cancel
      @command_window.active = true
      @dummy_window.visible = true
      @buy_window.active = false
      @buy_window.visible = false
      @status_window.visible = false
      @status_window.item = nil
      @help_window.set_text("")
      return
    end   
    if Input.trigger?(Input::C)
      @item = @buy_window.item
      number = $game_party.item_number(@item)
      if @item == nil or @item.price > $game_party.gold or number == @item.max_buy
        Sound.play_buzzer
      else       
        Sound.play_decision
        max = @item.price == 0 ? @item.max_buy : $game_party.gold / @item.price
        max = [max, @item.max_buy - number].min
        @buy_window.active = false
        @buy_window.visible = false
        @number_window.set(@item, max, @item.price)
        @number_window.active = true
        @number_window.visible = true
      end
    end
  end
end
Obrazek
Obrazek
Awatar użytkownika
Vodun
Posty: 73
Rejestracja: 19 kwie 2010, 22:08

Re: [VX] Ograniczona Ilość Przedmiotów

Post autor: Vodun »

Może użyj warunku?

Jeśli przedmioty zostały kupione to zmień sklep na taki który nie oferuje tych zakupionych przedmiotów?
Awatar użytkownika
Yoroiookami

GF 2019 - Pełne Wersje (miejsce 2); GF 2017 - Dema (miejsce 1); GF 2015 - Pełne Wersje (miejsce 2); GF 2014 - Pełne Wersje (miejsce 3); GF 2010 - Gry (miejsce 2); GF Special III - Recenzje (zwycięstwo)
Posty: 679
Rejestracja: 02 wrz 2014, 12:45

Re: [VX] Ograniczona Ilość Przedmiotów

Post autor: Yoroiookami »

Vodun pisze:Może użyj warunku?

Jeśli przedmioty zostały kupione to zmień sklep na taki który nie oferuje tych zakupionych przedmiotów?
Mógłbym tak zrobić, drogi Vodunie. Problem pojawia się, gdy mam powiedzmy 7 takich przedmiotów w jednym sklepie i muszę ustawiać kilkadziesiąt różnych warunków. :II
Obrazek
Obrazek
ODPOWIEDZ