Witam wszystkich. Poszukuję skryptu na limit danego przedmiotu. Tzn chciałbym móc ustawić by np można było posiadać 99 "mikstur leczniczych" ale tylko maksymalnie 20 "elixirów".
Z góry dziękuję za pomoc.
________________________ "Darker than Black"
Może taki jestem.
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Czw 24 Lut, 2011 17:46
Sprawdź to... nie wiem, czy nie trzeba by było jeszcze kilku rzeczy wrzucić, więc dobrze przetestuj
Spoiler:
Kod:
module Ayene
# Maksymalna ilość każdego z przedmiotów
ITEM_MAX_AMOUNT = 99
# By ustawić maksymalną ilość wybranego przedmiotu w jego oknie notatek
# w bazie danych wpisz np. <MAX_ITEM 23> lub <maxitem 45>
end
class RPG::BaseItem
def max_amount
@amount = Ayene::ITEM_MAX_AMOUNT
@note.split(/[\r\n]+/).each { |line|
case line
when /^<(?:MAX_ITEM|maxitem)[ ]*(\d+)>/i
@amount = $1.to_i
end
}
return @amount
end
end
class Game_Party < Game_Unit
def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
@items[item.id] = [[number + n, 0].max, item.max_amount].min
when RPG::Weapon
@weapons[item.id] = [[number + n, 0].max, item.max_amount].min
when RPG::Armor
@armors[item.id] = [[number + n, 0].max, item.max_amount].min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
end
end
end
end
Wielkie dzięki Ayene. Jak zawsze niezastąpiona ^ ^
Póki co wszystko działa jak należy, gdyby było coś nie tak dam znać na forum.
Skrypt ma jedną wadę: mianowicie osiągnę już maksymalną liczbę eliksirów jednak w sklepie nadal pokazuje że mogę je kupić i gracz nie wiedzący o tym straci dużo kasy na darmo :D Fajnie by było gdyby w sklepie po osiągnięciu maksymalnej liczby danego przedmiotu nie mozna było już go kupić. Chociaż ja nawet bez tego zrobię ze skryptu pożytek :3
________________________ "Darker than Black"
Może taki jestem.
Pomogła: 232 razy Dołączyła: 18 Wrz 2007 Posty: 2424
Wysłany: Pią 25 Lut, 2011 21:02
Spróbuj tego:
Spoiler:
Kod:
module Ayene
# Maksymalna ilość każdego z przedmiotów
ITEM_MAX_AMOUNT = 99
# By ustawić maksymalną ilość wybranego przedmiotu w jego oknie notatek
# w bazie danych wpisz np. <MAX_ITEM 23> lub <maxitem 45>
end
class RPG::BaseItem
def max_amount
@amount = Ayene::ITEM_MAX_AMOUNT
@note.split(/[\r\n]+/).each { |line|
case line
when /^<(?:MAX_ITEM|maxitem)[ ]*(\d+)>/i
@amount = $1.to_i
end
}
return @amount
end
end
class Game_Party < Game_Unit
def gain_item(item, n, include_equip = false)
number = item_number(item)
case item
when RPG::Item
@items[item.id] = [[number + n, 0].max, item.max_amount].min
when RPG::Weapon
@weapons[item.id] = [[number + n, 0].max, item.max_amount].min
when RPG::Armor
@armors[item.id] = [[number + n, 0].max, item.max_amount].min
end
n += number
if include_equip and n < 0
for actor in members
while n < 0 and actor.equips.include?(item)
actor.discard_equip(item)
n += 1
end
end
end
end
end
class Window_ShopBuy < Window_Selectable
def draw_item(index)
item = @data[index]
number = $game_party.item_number(item)
enabled = (item.price <= $game_party.gold and number < item.max_amount)
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
class Scene_Shop < Scene_Base
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 || @item.price > $game_party.gold or
number == @item.max_amount
Sound.play_buzzer
else
Sound.play_decision
max = (@item.price == 0 ? @item.max_amount : $game_party.gold / @item.price)
max = [max, @item.max_amount - 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
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