UltimaForum

Wsparcie [VX] - Sklepowy Problem

Allemov - Sro 05 Wrz, 2012 19:37
Temat postu: Sklepowy Problem
Witajcie!
W mojej grze (która się rozwija coraz bardziej) bardzo pożądany były fakt gdyby każdy sprzedawca miał określoną liczbę sztuk danego przedmiotu.
Fakt iż ilość ich jest nieograniczona przy obecnym systemie mocno przeszkadza, ponieważ o ile mamy do czynienia ze sadownikiem sprzedającym jabłka nikogo dziwić nie będzie że ma ich nieskończoną ilość to w przypadku powiedzmy takiego kupca handlującego antykami... no właśnie.
Problem jest tak podstawowy i fundamentalny iż doszedłem do wniosku że dziesiątki osób musiały natknąć się na niego więc aż dziwne było by gdyby nie istniał na to skrypt czy rozwiązanie.
Jedyne co mi się w tym momencie nasuwa to usunięcie z gry sklepów i wprowadzenie kupowania w formie rozmowy ale nie muszę chyba mówić że to nie dość że pracochłonne to jeszcze nieciekawy efekt daje.
Liczę na was!

Pozdrawiam!
Ryszard 'Allemov'

makerowiec64 - Sob 08 Wrz, 2012 11:18

Cytat:
o ile mamy do czynienia ze sadownikiem sprzedającym jabłka nikogo dziwić nie będzie że ma ich nieskończoną ilość to w przypadku powiedzmy takiego kupca handlującego antykami... no właśnie.

Zgadzam się.Też mnie irytuje coś takiego,że w mieszkańcy mówią:
"To jest legendarne,jedyne",a potem jak się idzie do tego sklepu,
i ma się furę kasy,to ten "jeden" przedmiot staje się taki,że można go 99 razy
kupić...
Może istnieje jakiś skrypt faktycznie na ten błąd,ale ja jestem
"zielony" w skryptach...sorry...

Feniks - Sob 08 Wrz, 2012 12:05

Cytat:
"To jest legendarne,jedyne",a potem jak się idzie do tego sklepu

Skoro jedyne to wystarczy zrobić na dialogu :)

Zrozumiały jest wasz problem, ponieważ ja sam go również posiadam od moich początków w rmie. Jest na ten problem nieco sposobów:
0. Edytować podstawowy skrypt sklepu tak, aby wprowadził taką opcje.
1. Zrobić rzadsze przedmioty na bardzo kuszącym dialogu.
2. Poszukać skryptu ,,advanced shop", ,,zaawansowany sklep" i go ogarnąć.
3. Poszukać skryptu ,,limit przedmiotów" i ustawić antyki na 1.
4. Rzadkie przedmioty zrobić w formie ukrytych przedmiotów po świecie.
Pewnie jest więcej, ale nie chcę mi się teraz myśleć :3

Ayene - Czw 13 Wrz, 2012 10:05

Można spróbować z tym skryptem:
Spoiler:

Kod:
#===================================================================
# Maksymalna liczba przedmiotów do kupnienia [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


Konfiguracja w skrypcie.

makerowiec64 - Pią 14 Wrz, 2012 20:14

Faktycznie fajny skrypt,mi się nie przyda bo nie robię
takiej gry,ale i tak dobry.
Allemov,pamiętaj o podziękowaniach do Ayene,jeżeli
pomogła.

Allemov - Pią 14 Wrz, 2012 21:25

Cóż.
Na początku ucieszyłem się że ktoś zdecydował się napisać skrypt by mi pomóc.
Potem czytając go zawiodłem się że trochę nie o taki limit mi chodziło.
Jednakże po przyzwoitych testach stwierdzam że to jest jeszcze lepsze niż to o co mi wstępnie chodziło. Dzięki temu skryptowi jestem w stanie np. zabronić graczowi bezsensownego zakupu kilku takich samych broni - strasznie mi się to podoba i sprawdza się idealnie praktycznie we wszystkich sytuacjach. :)

Tak więc - wielkie podziękowania w stronę Anyee.
Udało Ci się rozwiązać ostatni z problemów uniemożliwiających stworzenie gry w takiej formie o jaką mi chodziło na mojej liście! (i mam nadzieję że nie będą się już pojawiały kolejne)

Poza tym proponuję dodać ów skrypt do spisu skryptów żeby pytania się nie powtarzały!

Pozdrawiam!
Ryszard 'Allemov'


Powered by phpBB modified by Przemo © 2003 phpBB Group