RPGVX.net

  RPG-Maker VX => VX Technik [Frageforum] => Thema gestartet von: BlaBlaDieBlu am August 13, 2010, 15:57:16

Titel: Item in Tuhen legen.
Beitrag 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?
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 15:59:49
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
Titel: Re: Item in Tuhen legen.
Beitrag von: BlaBlaDieBlu am August 13, 2010, 16:01:29
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 ? ^^
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 16:04:18
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
Titel: Re: Item in Tuhen legen.
Beitrag von: rayman am August 13, 2010, 16:04:34
Ich glaube du meinst so etwas wie ein Bank-System, oder?

EDIT: Zu spät xD
Titel: Re: Item in Tuhen legen.
Beitrag von: BlaBlaDieBlu am August 13, 2010, 16:08:02
@ 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
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 16:15:14
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 ;)
Titel: Re: Item in Tuhen legen.
Beitrag von: BlaBlaDieBlu am August 13, 2010, 16:17:43
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
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 16:43:55
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
Titel: Re: Item in Tuhen legen.
Beitrag von: Colonios am August 13, 2010, 16:59:23
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
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 17:02:47
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
Titel: Re: Item in Tuhen legen.
Beitrag von: Colonios am August 13, 2010, 17:12:38
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
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 17:18:11
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
Titel: Re: Item in Tuhen legen.
Beitrag von: Colonios am August 13, 2010, 17:20:47
Jo, super :D

Fehlt nur noch der Teil 1 und das wäre etwas anderes... Wesentlich komplexer...
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 17:29:17
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
Titel: Re: Item in Tuhen legen.
Beitrag von: PDM am August 13, 2010, 17:48:53
Das mit dem Ablagezeug kannst du mit dem Vampyr Warehouse Script machen. Googles einfach mal.
Titel: Re: Item in Tuhen legen.
Beitrag von: BlaBlaDieBlu am August 13, 2010, 18:01:12
@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
Titel: Re: Item in Tuhen legen.
Beitrag von: Sk!p am August 13, 2010, 18:07:01
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
Titel: Re: Item in Tuhen legen.
Beitrag von: BlaBlaDieBlu am August 13, 2010, 18:10:38
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
Titel: Re: Item in Tuhen legen.
Beitrag von: Colonios am August 14, 2010, 01:46:25
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
Titel: Re: Item in Tuhen legen.
Beitrag von: BlaBlaDieBlu am August 14, 2010, 12:04:49
Cool danke Colonios es klappt einwand frei :D
SimplePortal 2.3.3 © 2008-2010, SimplePortal