RPGVX.net
RPG-Maker VX => VX Technik [Frageforum] => Thema gestartet von: BlaBlaDieBlu am August 13, 2010, 15:57:16
-
Heey..
Ich habe da mal 2 Fragen ^^ :
1.Gibt es ein Script was es ermöglicht Items , exp etc in eine Truhe hinein zu legen?
2.Kann man die anzahl der sachen die man im inventar haben kann begrenzen , zb man darf nur 10 items max haben?
EDIT : 3Fragen :
Kann man mit nem script machen das mal mehr als 9999 HP und MP und mehr als 999 ATK INT TEM DEF haben kann?
-
Wie genau meinst du das ''in eine Truhe legen''?
Eine Truhe die irgendwo rumsteht, du machst sie auf und du bekommst was in dein
Inventar? So habe ich das jetzt verstanden. Ein Standart-Event ^^
Sk!p
-
Also ich mein wen man z.B. eine Potion im inventar hat , und die Truhe leer ist ,
ob man den die Potion in die Truhe legen kann ? ^^
-
Ja ich denke das kann man mit Variablen machen.
Ich kenne mich leider mit den Dingern nicht sonderlich gut aus.
Aber ich denke grundlegend würde es Folgendermaßen Funktionieren.
Du gehst zu einer Truhe und machst eine simple auswahl dass du etwas ablegen möchtest.
Wenn du es soweit hast, dass du einen Trank ablegen willst, erstellst du eine Variable. Diese Variable berechnet
wie viele Tränke abgelegt wurden (Damit man auch hinterher genau so viele wieder herausnehmen kann)
Ich würde sagen wür jeden Trank den du ablegst wird die Variable +1 gesetzt und wür jeden den du
rausnimmst -1. Ist die Variable bei 0 angekommen werden keine Tränke mehr ausgegeben.
Du musst halt nur für jedes mögliche, zu lagernde Item eine Variable anlegen.
Aber wie gesagt, das ist alles nur Theorie. Mit Variablen habe ich es nicht so :D
Edit:
Ja ich denke genau so meint er das, ich teste grad ma n wenig rum ob das
irgendwie mit meiner Idee klappt xD
Sk!p
-
Ich glaube du meinst so etwas wie ein Bank-System, oder?
EDIT: Zu spät xD
-
@ Rayman : ja wie ein bank system ^^
@ Sk!p : thx ich versuchs mal , aber verstehen tuh ich es nicht soo wirklich .
EDIT : nein irgend wie krig ich das net hin :O
-
Ich überrascht von mir, ich habe noch nie etwas mit eienr Variable gemacht
aber ich habe es hinbekommen.
Allerdings auf dem kleinsten Möglichen Weg, ich kann NUR heiltränke reinwerfen jetzt
die Auswahl musst du selbst machen.
Screen mit Erklärung lade ich dir sofort Hoch...
(http://www.abload.de/img/heiltrankd7pc.png) (http://www.abload.de/image.php?img=heiltrankd7pc.png)
So kleine Erklärung falls es nicht einsichtlich ist.
-Eine Variable benennen zB ''Trank'' (Ich weiß - Kreativ)
-Sprichst du mein ''Zauberloch'' an erscheint eine Auswahl (Etwas reinwerfen/Etwas rausholen)
-Willst du etwas reinwerfen, findet eine Abfrage deines Inventars statt.
es wird geprüft, ob ein Heiltrank vorhanden ist.
ist dies der Fall, wird die Trank-Variable +1 gesetzt, der Trank aus deinem Inventar genommen
und es erscheint noch ein geistreicher Text
-Hast du keinen Trank im Inventar > Geistreicher Text
-Willst du etwas herausnehmen wird die Variable überprüft.
alles wietere passiert erst nach der Abfrage ob die Variable Größer als 0 ist.
Ist sie es nicht, wird direkt gesagt, dass keine Heiltränke in dem Loch liegen.
-Steht die Variable min bei 1. Wird ein Heiltrank deinem Inventar hinzugefügt
und die Variable bekommt einen Abzug (-1)
Das sollte es im Großen und ganzen sein. Hast du sehr arge Probleme damit kann ich dir die Datei schicken.
Aber ich denke das bekommste gebacken ;)
-
Okay danke
Funkt ganz gut und danke für die Hilfe natürlich ^^.
Aber wen man verschieden Sachen gleichzeitig reinlegen möchte finde ich wirkt das etwas komisch.
Das wegen , könnte man das mit einem Script machen ? also das sich dan das inventar öffnet ach warte ich beschreib mal wie ich es meine.
Sagen wir wieder man het 5 Potions , wen man nun sagen wir die truhe anredet öffnet sich das inventar und es wird angezeitg das man 5 Potions und sagen wir ein Messer hat, nun geht man mit dem cusor auf die Potion und wen man nun leer taste drückt verschwindet eine aus dem inventar und es zeigt an man hat nur noch 4 pootions und dan kann man das halt machen bis man garnichts mehr hat . Und das selbe auch mit dem Rausholen.
So in etwa habe ich mir das vorgestellt.
Höfe ihr versteht das :D
-
Ja das ist das kleine Problem was ich an der Stelle hatte.
Ich sagte ja, es ist das kleinstmögliche Event was man da machen kann.
Ich weiß nicht, wie weit man es ausbauen kann.
Man müsste das Inventar aufbekommen, auswählen was man in die Truhe legen möchte und
wieviel man davon in die Truhe legen möchte.
Gleiches zählt natürlich auch wenn man wieder etwas herausnehmen möchte.
Also mit Variablen kenne ich mich nicht aus, und mit Scripten schon mal überhaupt nicht.
Es gibt sicher Mittel und Wege dass man das so hinbekommt aber in dem Punkt kann ich
dir leider nicht mehr weiter helfen, Sorry.
Sk!p
-
Frage 1: Uff, ganz schön komplex, was du da willst. Man kann es mit Events lösen, aber die Codes werden erstens seeeehr lang ohne Pointer und zweitens müsstest du ein eigenes Itemmenü Eventen, was auch noch viel zu umständlich ist atm. Man kann das sicher einfach Scripten, jedoch musst du dafür jemanden finden, der soetwas für dich macht.
Frage 2: Hier kannst du etwas Tricksen (was auch etwas umständlich ist). Immer, wenn du ein Item hinzubekommst, lässt du eine Variable +1 Zählen. Wenn die Variable = 10 ist kannst du keine Items mehr aufnehmen. Jedoch kannst du dann z.B. auch nur z.B. 10 Tränke tragen und keine anderen Items... also etwas doof. Auch hier ist es wie zur Frage 1, man könnte es einfach Scripten.
Frage 3: Wozu brauchst du mehr HP und MP? Kämpfe werden nicht cooler, nur weil die Stats größere Zahlen beanspruchen. Mach die Zahlen lieber kleiner, dann behält man den Überblick.
MfG
-
Kann man das Problem mit den 10 Tränken nicht mit einer Abfrage lösen?
Wenn du einen Trank aufnimmst, wird eine Abfrage gestellt, ob sich ein Trank in deinem
Inventar befindet. Ist einer vorhanden, wird die Variable nicht geändert und es wird ein Trank
in dein Inventar gepackt.
Ist kein Trank in deinem Inventar vorhanden, wird die Variable +1 gesetzt, und dann wird der
Trank in dein Inventar gepackt.
Das sind dann zwei Abfragen pro aufgenommenem Item. Ne Item-Abfrage und ne Variablen-Abfrage.
Wäre rein theoretisch möglich oder? So kann man das Inventar auf 10 Items beschränken
aber trotzdem mehrere Items der gleichen Sorte mirführen.
Sk!p
-
Stimmt Sk!p, hab ich voll verrafft! *Baum*
Dann musst du aber auch noch bei Jedem Item ein CE hinzufügen, dass abläuft, wenn man das Item benutzt und den Zähler je nach nötigkeit wieder runter schraubt.
Ich überlege gerade, ob das auch mit nem CE im PP geht...
Ich komme gleich wieder *zur Werkbank eilt"
:D
-
Jap das funktioniert :)
Hab es grad getestet. CE's für jedes Item sehen dann ungefähr so aus:
(http://www.abload.de/img/ceakun.png) (http://www.abload.de/image.php?img=ceakun.png)
Man muss nur jedem Item das passende CE geben. Und schon hat man ein Begrenztes Inventar
mit der Möglichkeit ein schon vorhandes Item öffter zu tragen ;)
Ja ich meine es gibt ein Script die die Statuswerte über diese Zahl hinausbefördern.
Ich meine so eine Diskusion gab es mal in Kombination mit einem Expander im FF10 Stil.
Müsstest du aber mal schauen ob du das noch irgendwo findest
Sk!p
-
Jo, super :D
Fehlt nur noch der Teil 1 und das wäre etwas anderes... Wesentlich komplexer...
-
Ja da wollte ich ja mein bestes tun, aber ist halt mit einem Event meines Wissens nicht mehr möglich.
Ich hab da ein winziges Problem mit der Zweiten Frage.
Das ist alles schön und gut, dass man das Inventar bis Max. 10 hochpushen kann.
Aber wie bekommt man die Variable wieder nach unten?
Man kann 1 CE pro Item Speichern. Aber wenn man jetzt einen Heiltrank findet, und mit diesem die Variable
der MAx. Items +1 setzt, wird sich leider an der ganzen Sache nichts ändern wenn man diesen Trank verbraucht.
Der Trank wird aus dem Inventar entfernt werden. Die Variable bleibt bei 1.
Findet man nun einen weiteren Trank, wird das Inventar überprüft... Es wird gesehen, dass sich kein Trank in
diesem befindet. Die Variable wird abermals +1 gesetzt.
Nun verbraucht 1 Heiltrank schon 2 Plätze in der Variable und das kann man natürlich bis zu Spitze treiben.
Irgendwann ist das Inventar leer, aber die Variable sagt, dass es voll ist.
Was macht man an dieser Stelle?
Da fällt mir nämlich auf die Schnelle jetzt nichts ein, hat da wer ne Idee?
Sk!p
-
Das mit dem Ablagezeug kannst du mit dem Vampyr Warehouse Script machen. Googles einfach mal.
-
@PDM : ich googles es mal ^^
@Sk!p u. Colonios : also wegen frage 2 hab ich ein script gefunden . http://www.rpgvx.net/index.php/topic,4480.0.html
wen man den halt die zahle 10000 auf 10 setzt funktionirts einwand frei .^^
ich würde mal sagen frage 2 ist beantwortet und vieeelen dank für eure mühe . :D
-
Freut mich zu hören.
Ich hab grad die ganze Zeit versucht auf irgendeinem Wege die Variable wieder nach unten zu bekommen
aber es möchte einfach nicht funktionieren.
Schade eigentlich dass man heutzutage für alles ein Script nehmen kann.
Irgendwie verhindert das das denken und das Wissen um die Möglichkeiten die man mit den Events eigentlich
hat.
Naja ich denke, dann hast du ja alle deine Fragen beantwortet oder.
Frage1: Script
Frage2: Script
Frage3: Script
Naja ich denke du kannst zu machen Colo x.x
-
Eine sache hätte ich da noch :
I-was stimmt mit dem script nicht :O
Ab einerbestimmten zeile würd alles lila und wen ich ds behebe werden nur 3zeilen wieder normal der rest ist dan immer noch lila ...
#==============================================================================
# Vampyr Warehouse
#==============================================================================
class Game_Party < Game_Unit
alias vampyr_warehouse_initialize initialize
attr_reader :wgold
def initialize
vampyr_warehouse_initialize
@witems = {}
@wweapons = {}
@warmors = {}
@wgold = 0
end
def witems
result = []
for i in @witems.keys.sort
result.push($data_items[i]) if @witems[i] > 0
end
for i in @wweapons.keys.sort
result.push($data_weapons[i]) if @wweapons[i] > 0
end
for i in @warmors.keys.sort
result.push($data_armors[i]) if @warmors[i] > 0
end
return result
end
def store_gold(n)
@wgold = [[@wgold + n, 0].max, 9999999].min
end
def withdraw_gold(n)
store_gold(-n)
end
def witem_number(item)
case item
when RPG::Item
number = @witems[item.id]
when RPG::Weapon
number = @wweapons[item.id]
when RPG::Armor
number = @warmors[item.id]
end
return number == nil ? 0 : number
end
def store_item(item, n)
number = witem_number(item)
case item
when RPG::Item
@witems[item.id] = [[number + n, 0].max, 99].min
when RPG::Weapon
@wweapons[item.id] = [[number + n, 0].max, 99].min
when RPG::Armor
@warmors[item.id] = [[number + n, 0].max, 99].min
end
n += number
end
def withdraw_item(item, n)
store_item(item, -n)
end
end
#------------------------------------------------------------------------------
class Window_Warehouse < Window_Selectable
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 2
self.index = 0
refresh
end
def item
return @data[self.index]
end
def refresh
@data = []
$game_party.witems.each { |i| @data.push(i) }
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.witem_number(item)
rect.width -= 4
draw_item_name(item, rect.x, rect.y)
self.contents.draw_text(rect, sprintf(\":%2d\", number), 2)
end
end
def update_help
if $scene.is_a?(Scene_VampyrWarehouse) and $scene.description_delay > 0
@help_window.set_text(\"Retrieved Item!\")
else
@help_window.set_text(item == nil ? \"\" : item.description)
end
end
end
#------------------------------------------------------------------------------
class Window_Item < Window_Selectable
def update_help
if $scene.is_a?(Scene_VampyrWarehouse) and $scene.description_delay > 0
@help_window.set_text(\"Item Depositado!\")
else
@help_window.set_text(item == nil ? \"\" : item.description)
end
end
end
#------------------------------------------------------------------------------
class Window_MyGold < Window_Base
def initialize
super(0, 0, 256, 56)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(contents.rect, \"My #{Vocab.gold}:\")
self.contents.font.color = normal_color
self.contents.draw_text(contents.rect, $game_party.gold, 2)
end
end
#------------------------------------------------------------------------------
class Window_WareGold < Window_Base
def initialize
super(0, 0, 256, 56)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(contents.rect, \"#{Vocab.gold} in the Chest\")
self.contents.font.color = normal_color
self.contents.draw_text(contents.rect, $game_party.wgold, 2)
end
end
#------------------------------------------------------------------------------
class Window_TypeGold < Window_Command
attr_reader :value
attr_reader :commands
def initialize
super(256, [\"0\", \"0\", \"0\", \"0\", \"0\", \"0\", \"0\"], 7, 0, 0)
@index = 6
end
def reset
for i in 0...@commands.size
@commands[i] = \"0\"
end
refresh
end
def update
super
value = @commands[@index].to_i
if Input.press?(Input::UP) and Graphics.frame_count % 7 <= 0
Sound.play_cursor
@commands[@index] = (value < 9 ? value+1 : 9).to_s
refresh
elsif Input.press?(Input::DOWN) and Graphics.frame_count % 7 <= 0
Sound.play_cursor
@commands[@index] = (value > 0 ? value-1 : 0).to_s
refresh
end
end
end
#------------------------------------------------------------------------------
class Scene_VampyrWarehouse < Scene_Base
attr_reader :description_delay
def start
super
create_menu_background
@description_delay = 0
@store_gold = false
@withdraw_gold = false
s1 = \"Deposit Items \"
s2 = \"Remove Items\"
s3 = \"Deposit Money\"
s4 = \"Withdraw Money\"
s5 = \"Cancel\"
@command_window = Window_Command.new(208, [s1, s2, s3, s4, s5])
@command_window.x = (544-@command_window.width)/2
@command_window.y = (416-@command_window.height)/2
@command_window.visible = @command_window.active = true
@help_window = Window_Help.new
@help_window.visible = @help_window.active = false
@item_window = Window_Item.new(0, 56, 544, 360)
@item_window.help_window = @help_window
@item_window.visible = @item_window.active = false
@warehouse_window = Window_Warehouse.new(0, 56, 544, 360)
@warehouse_window.help_window = @help_window
@warehouse_window.visible = @warehouse_window.active = false
@typegold_window = Window_TypeGold.new
@typegold_window.x = (544-@typegold_window.width)/2
@typegold_window.y = ((416-@typegold_window.height)/2)
@typegold_window.visible = @typegold_window.active = false
@mygold_window = Window_MyGold.new
@mygold_window.visible = @mygold_window.active = false
@mygold_window.x = (544-@mygold_window.width)/2
@mygold_window.y = ((416-@mygold_window.height)/2)-56
@waregold_window = Window_WareGold.new
@waregold_window.visible = @waregold_window.active = false
@waregold_window.x = (544-@waregold_window.width)/2
@waregold_window.y = ((416-@waregold_window.height)/2)+56
end
def update
super
update_menu_background
@description_delay -= 1 if @description_delay > 0
@command_window.update
@item_window.update
@warehouse_window.update
@help_window.update
@mygold_window.update
@waregold_window.update
@typegold_window.update if @typegold_window.active
if @command_window.active
update_selection
elsif @item_window.active
update_store
elsif @warehouse_window.active
update_whitedraw
elsif @typegold_window.active and @store_gold
update_store_gold
elsif @typegold_window.active and @withdraw_gold
update_whitdraw_gold
end
end
def terminate
super
dispose_menu_background
@command_window.dispose
@item_window.dispose
@warehouse_window.dispose
@help_window.dispose
@typegold_window.dispose
@mygold_window.dispose
@waregold_window.dispose
end
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
Sound.play_decision
@command_window.visible = @command_window.active = false
case @command_window.index
when 0
@item_window.visible = @item_window.active = true
@help_window.visible = @help_window.active = true
@warehouse_window.visible = @warehouse_window.active = false
when 1
@item_window.visible = @item_window.active = false
@help_window.visible = @help_window.active = true
@warehouse_window.visible = @warehouse_window.active = true
when 2
@store_gold = true
@withdraw_gold = false
@typegold_window.visible = @typegold_window.active = true
@mygold_window.visible = @mygold_window.active = true
@waregold_window.visible = @waregold_window.active = true
when 3
@store_gold = false
@withdraw_gold = true
@typegold_window.visible = @typegold_window.active = true
@mygold_window.visible = @mygold_window.active = true
@waregold_window.visible = @waregold_window.active = true
when 4
$scene = Scene_Map.new
end
end
end
def update_store
if Input.trigger?(Input::B)
Sound.play_cancel
@item_window.visible = @item_window.active = false
@help_window.visible = @help_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
if @item_window.item == nil
Sound.play_buzzer
elsif @item_window.item.note.include?(\"Dont\'t Store\")
Sound.play_buzzer
else
Sound.play_decision
$game_party.lose_item(@item_window.item, 1)
$game_party.store_item(@item_window.item, 1)
@item_window.refresh
@warehouse_window.refresh
@description_delay = 90
end
end
end
def update_whitedraw
if Input.trigger?(Input::B)
Sound.play_cancel
@warehouse_window.visible = @warehouse_window.active = false
@help_window.visible = @help_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
if @warehouse_window.item == nil
Sound.play_buzzer
else
Sound.play_decision
$game_party.gain_item(@warehouse_window.item, 1)
$game_party.withdraw_item(@warehouse_window.item, 1)
@item_window.refresh
@warehouse_window.refresh
@description_delay = 90
end
end
end
def update_store_gold
if Input.trigger?(Input::B)
Sound.play_cancel
@typegold_window.visible = @typegold_window.active = false
@typegold_window.reset
@mygold_window.visible = @mygold_window.active = false
@waregold_window.visible = @waregold_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
return if @typegold_window.commands.to_s.to_i <= 0
if $game_party.gold < @typegold_window.commands.to_s.to_i
Sound.play_buzzer
else
Sound.play_shop
$game_party.lose_gold(@typegold_window.commands.to_s.to_i)
$game_party.store_gold(@typegold_window.commands.to_s.to_i)
@mygold_window.refresh
@waregold_window.refresh
end
end
end
def update_whitdraw_gold
if Input.trigger?(Input::B)
Sound.play_cancel
@typegold_window.visible = @typegold_window.active = false
@typegold_window.reset
@mygold_window.visible = @mygold_window.active = false
@waregold_window.visible = @waregold_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
return if @typegold_window.commands.to_s.to_i <= 0
if $game_party.wgold < @typegold_window.commands.to_s.to_i
Sound.play_buzzer
else
Sound.play_shop
$game_party.withdraw_gold(@typegold_window.commands.to_s.to_i)
$game_party.gain_gold(@typegold_window.commands.to_s.to_i)
@mygold_window.refresh
@waregold_window.refresh
end
end
end
end
-
Es gibt ne Code Funktion, die sollte man auch benutzen bei Codes ;)
Ääähm... Ich musste ein bisschen suchen, da Vlad (der Vampyr Coder) anscheinend seine Website und vieles mehr gelöscht hat O.o
Naja, hier der Code müsste klappen.
#==============================================================================
# Vampyr Warehouse
#==============================================================================
class Game_Party < Game_Unit
alias vampyr_warehouse_initialize initialize
attr_reader :wgold
def initialize
vampyr_warehouse_initialize
@witems = {}
@wweapons = {}
@warmors = {}
@wgold = 0
end
def witems
result = []
for i in @witems.keys.sort
result.push($data_items[i]) if @witems[i] > 0
end
for i in @wweapons.keys.sort
result.push($data_weapons[i]) if @wweapons[i] > 0
end
for i in @warmors.keys.sort
result.push($data_armors[i]) if @warmors[i] > 0
end
return result
end
def store_gold(n)
@wgold = [[@wgold + n, 0].max, 9999999].min
end
def withdraw_gold(n)
store_gold(-n)
end
def witem_number(item)
case item
when RPG::Item
number = @witems[item.id]
when RPG::Weapon
number = @wweapons[item.id]
when RPG::Armor
number = @warmors[item.id]
end
return number == nil ? 0 : number
end
def store_item(item, n)
number = witem_number(item)
case item
when RPG::Item
@witems[item.id] = [[number + n, 0].max, 99].min
when RPG::Weapon
@wweapons[item.id] = [[number + n, 0].max, 99].min
when RPG::Armor
@warmors[item.id] = [[number + n, 0].max, 99].min
end
n += number
end
def withdraw_item(item, n)
store_item(item, -n)
end
end
#------------------------------------------------------------------------------
class Window_Warehouse < Window_Selectable
def initialize(x, y, width, height)
super(x, y, width, height)
@column_max = 2
self.index = 0
refresh
end
def item
return @data[self.index]
end
def refresh
@data = []
$game_party.witems.each { |i| @data.push(i) }
@item_max = @data.size
create_contents
for i in 0...@item_max
draw_item(i)
end
end
def draw_item(index)
rect = item_rect(index)
self.contents.clear_rect(rect)
item = @data[index]
if item != nil
number = $game_party.witem_number(item)
rect.width -= 4
draw_item_name(item, rect.x, rect.y)
self.contents.draw_text(rect, sprintf(":%2d", number), 2)
end
end
def update_help
if $scene.is_a?(Scene_VampyrWarehouse) and $scene.description_delay > 0
@help_window.set_text("Item Retirado!")
else
@help_window.set_text(item == nil ? "" : item.description)
end
end
end
#------------------------------------------------------------------------------
class Window_Item < Window_Selectable
def update_help
if $scene.is_a?(Scene_VampyrWarehouse) and $scene.description_delay > 0
@help_window.set_text("Item Depositado!")
else
@help_window.set_text(item == nil ? "" : item.description)
end
end
end
#------------------------------------------------------------------------------
class Window_MyGold < Window_Base
def initialize
super(0, 0, 256, 56)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(contents.rect, "Meu #{Vocab.gold}:")
self.contents.font.color = normal_color
self.contents.draw_text(contents.rect, $game_party.gold, 2)
end
end
#------------------------------------------------------------------------------
class Window_WareGold < Window_Base
def initialize
super(0, 0, 256, 56)
refresh
end
def refresh
self.contents.clear
self.contents.font.color = system_color
self.contents.draw_text(contents.rect, "#{Vocab.gold} do Baú:")
self.contents.font.color = normal_color
self.contents.draw_text(contents.rect, $game_party.wgold, 2)
end
end
#------------------------------------------------------------------------------
class Window_TypeGold < Window_Command
attr_reader :value
attr_reader :commands
def initialize
super(256, ["0", "0", "0", "0", "0", "0", "0"], 7, 0, 0)
@index = 6
end
def reset
for i in 0...@commands.size
@commands[i] = "0"
end
refresh
end
def update
super
value = @commands[@index].to_i
if Input.press?(Input::UP) and Graphics.frame_count % 7 <= 0
Sound.play_cursor
@commands[@index] = (value < 9 ? value+1 : 9).to_s
refresh
elsif Input.press?(Input::DOWN) and Graphics.frame_count % 7 <= 0
Sound.play_cursor
@commands[@index] = (value > 0 ? value-1 : 0).to_s
refresh
end
end
end
#------------------------------------------------------------------------------
class Scene_VampyrWarehouse < Scene_Base
attr_reader :description_delay
def start
super
create_menu_background
@description_delay = 0
@store_gold = false
@withdraw_gold = false
s1 = "Depositar Itens "
s2 = "Retirar Itens"
s3 = "Depositar Dinheiro"
s4 = "Retirar Dinheiro"
s5 = "Cancelar"
@command_window = Window_Command.new(208, [s1, s2, s3, s4, s5])
@command_window.x = (544-@command_window.width)/2
@command_window.y = (416-@command_window.height)/2
@command_window.visible = @command_window.active = true
@help_window = Window_Help.new
@help_window.visible = @help_window.active = false
@item_window = Window_Item.new(0, 56, 544, 360)
@item_window.help_window = @help_window
@item_window.visible = @item_window.active = false
@warehouse_window = Window_Warehouse.new(0, 56, 544, 360)
@warehouse_window.help_window = @help_window
@warehouse_window.visible = @warehouse_window.active = false
@typegold_window = Window_TypeGold.new
@typegold_window.x = (544-@typegold_window.width)/2
@typegold_window.y = ((416-@typegold_window.height)/2)
@typegold_window.visible = @typegold_window.active = false
@mygold_window = Window_MyGold.new
@mygold_window.visible = @mygold_window.active = false
@mygold_window.x = (544-@mygold_window.width)/2
@mygold_window.y = ((416-@mygold_window.height)/2)-56
@waregold_window = Window_WareGold.new
@waregold_window.visible = @waregold_window.active = false
@waregold_window.x = (544-@waregold_window.width)/2
@waregold_window.y = ((416-@waregold_window.height)/2)+56
end
def update
super
update_menu_background
@description_delay -= 1 if @description_delay > 0
@command_window.update
@item_window.update
@warehouse_window.update
@help_window.update
@mygold_window.update
@waregold_window.update
@typegold_window.update if @typegold_window.active
if @command_window.active
update_selection
elsif @item_window.active
update_store
elsif @warehouse_window.active
update_whitedraw
elsif @typegold_window.active and @store_gold
update_store_gold
elsif @typegold_window.active and @withdraw_gold
update_whitdraw_gold
end
end
def terminate
super
dispose_menu_background
@command_window.dispose
@item_window.dispose
@warehouse_window.dispose
@help_window.dispose
@typegold_window.dispose
@mygold_window.dispose
@waregold_window.dispose
end
def update_selection
if Input.trigger?(Input::B)
Sound.play_cancel
$scene = Scene_Map.new
elsif Input.trigger?(Input::C)
Sound.play_decision
@command_window.visible = @command_window.active = false
case @command_window.index
when 0
@item_window.visible = @item_window.active = true
@help_window.visible = @help_window.active = true
@warehouse_window.visible = @warehouse_window.active = false
when 1
@item_window.visible = @item_window.active = false
@help_window.visible = @help_window.active = true
@warehouse_window.visible = @warehouse_window.active = true
when 2
@store_gold = true
@withdraw_gold = false
@typegold_window.visible = @typegold_window.active = true
@mygold_window.visible = @mygold_window.active = true
@waregold_window.visible = @waregold_window.active = true
when 3
@store_gold = false
@withdraw_gold = true
@typegold_window.visible = @typegold_window.active = true
@mygold_window.visible = @mygold_window.active = true
@waregold_window.visible = @waregold_window.active = true
when 4
$scene = Scene_Map.new
end
end
end
def update_store
if Input.trigger?(Input::B)
Sound.play_cancel
@item_window.visible = @item_window.active = false
@help_window.visible = @help_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
if @item_window.item == nil
Sound.play_buzzer
elsif @item_window.item.note.include?("Dont't Store")
Sound.play_buzzer
else
Sound.play_decision
$game_party.lose_item(@item_window.item, 1)
$game_party.store_item(@item_window.item, 1)
@item_window.refresh
@warehouse_window.refresh
@description_delay = 90
end
end
end
def update_whitedraw
if Input.trigger?(Input::B)
Sound.play_cancel
@warehouse_window.visible = @warehouse_window.active = false
@help_window.visible = @help_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
if @warehouse_window.item == nil
Sound.play_buzzer
else
Sound.play_decision
$game_party.gain_item(@warehouse_window.item, 1)
$game_party.withdraw_item(@warehouse_window.item, 1)
@item_window.refresh
@warehouse_window.refresh
@description_delay = 90
end
end
end
def update_store_gold
if Input.trigger?(Input::B)
Sound.play_cancel
@typegold_window.visible = @typegold_window.active = false
@typegold_window.reset
@mygold_window.visible = @mygold_window.active = false
@waregold_window.visible = @waregold_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
return if @typegold_window.commands.to_s.to_i <= 0
if $game_party.gold < @typegold_window.commands.to_s.to_i
Sound.play_buzzer
else
Sound.play_shop
$game_party.lose_gold(@typegold_window.commands.to_s.to_i)
$game_party.store_gold(@typegold_window.commands.to_s.to_i)
@mygold_window.refresh
@waregold_window.refresh
end
end
end
def update_whitdraw_gold
if Input.trigger?(Input::B)
Sound.play_cancel
@typegold_window.visible = @typegold_window.active = false
@typegold_window.reset
@mygold_window.visible = @mygold_window.active = false
@waregold_window.visible = @waregold_window.active = false
@command_window.visible = @command_window.active = true
elsif Input.trigger?(Input::C)
return if @typegold_window.commands.to_s.to_i <= 0
if $game_party.wgold < @typegold_window.commands.to_s.to_i
Sound.play_buzzer
else
Sound.play_shop
$game_party.withdraw_gold(@typegold_window.commands.to_s.to_i)
$game_party.gain_gold(@typegold_window.commands.to_s.to_i)
@mygold_window.refresh
@waregold_window.refresh
end
end
end
end
MfG
-
Cool danke Colonios es klappt einwand frei :D