Benutzerinformationen überspringen
Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.
Mehr Beute Skript
Hallo zusammen,
Nachdem ich erfolgreich meinen ersten Skript geschrieben habe (
) , will ich mich
sofort an den nächsten begeben. Ich hatte da einen ,,Mehr Loot Skript" im Hinterkopf.
Mich nervt es ein wenig, dass man beim Maker pro Monster nur 1 Item einstellen kann, dass als Beute
fallen kann, deswegen kam ich auf die Idee.
Gedacht hatte ich das so, dass man in einer Art Array die MonsterIDs eingibt (nur von den Monstern, die auch Beute
fallen lassen). Außerdem werden in dem Array die Items und deren Dropchance angegeben (beliebig viele Items).
So z.B.
ID, Item1ID, Item1Wahr. , Item2ID, Item2Wahr. , ... usw.
Allerdings habe ich noch nichts gescriptet, was nichts mit Fenster bzw. Menüs zu tun habe.
Deshalb weiß ich erst garnicht wie ich anfangen soll und bräuchte "ein wenig" Hilfe
Ich verwende das RTAB Kampfscript, aber ich denke, dass es nicht allzuviel zu sagen hat, geht ja nur um die Beute.
RTAB-New Battle Script | RPG Studio
In Zeile 772 im KS beginnt die Lootausgabe.
Nachdem ich erfolgreich meinen ersten Skript geschrieben habe (
) , will ich michsofort an den nächsten begeben. Ich hatte da einen ,,Mehr Loot Skript" im Hinterkopf.
Mich nervt es ein wenig, dass man beim Maker pro Monster nur 1 Item einstellen kann, dass als Beute
fallen kann, deswegen kam ich auf die Idee.
Gedacht hatte ich das so, dass man in einer Art Array die MonsterIDs eingibt (nur von den Monstern, die auch Beute
fallen lassen). Außerdem werden in dem Array die Items und deren Dropchance angegeben (beliebig viele Items).
So z.B.
ID, Item1ID, Item1Wahr. , Item2ID, Item2Wahr. , ... usw.
Allerdings habe ich noch nichts gescriptet, was nichts mit Fenster bzw. Menüs zu tun habe.
Deshalb weiß ich erst garnicht wie ich anfangen soll und bräuchte "ein wenig" Hilfe

Ich verwende das RTAB Kampfscript, aber ich denke, dass es nicht allzuviel zu sagen hat, geht ja nur um die Beute.
RTAB-New Battle Script | RPG Studio
In Zeile 772 im KS beginnt die Lootausgabe.
Mitsch93
-
Projekte -
Tutorials & Hilfreiches aus der Eventtechnik
[Tutorial] Skills, Stats und Bosse - So erstellt ihr einen guten Bosskampf
[Tutorial] Kampf - Unendlich Gegner erscheinen lassen
[Tutorial] Kämpfe, Klassen und Balancing
[Tutorial] Entwickler Talk: Skalierungen

NPC verfolgt Held durch Türen

Pokemon- Fangskript

Monstergruppenführer

Automatisches prioritätsgesteuertes Anordnen von Bildern

Doppelte Eventfunktionen auf Map

Objekte schieben & ziehen
Die Werte einfach so hintereinander in einen Array füllen würde ich persönlich nicht.
Im RPG Maker VX, bzw. RGSS2 gibt es eine Klasse RPG::Enemy::DropItem
So eine könntest du dir auch anlegen, um die Art des "DropItem"s zu speichern und die Wahrscheinlichkeit (1-100) mit der man es bekommt.
Diese Instanzen könntest du dann wiederum in einem Array speichern, falls du mehrere haben möchtest.
Und den Array mit der EnemyID des Gegners in Verbindung setzen, zum Beispiel in einem Hash.
Und schon könntest du einfach in Scene_Battle darauf zugreifen, prüfen ob Items eingestellt sind, welcher Art, gegen die Wahrscheinlichkeit testen und so weiter.
Oder du machst es ganz anders, es gibt viele Möglichkeiten =)
Aber zu einer eigenen kleinen Klasse, um die DropItems zu speichern würde ich persönlich schon raten.
Im RPG Maker VX, bzw. RGSS2 gibt es eine Klasse RPG::Enemy::DropItem
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
module RPG class Enemy class DropItem def initialize @kind = 0 # Type of the drop item (0: none, 1: item, 2: weapon, 3: armor). @item_id = 1 # The item ID, when kind == 1. @weapon_id = 1 # The weapon ID, when kind == 2. @armor_id = 1 # The armor ID, when kind == 3. @denominator = 1 # N of the probability 1/N. end attr_accessor( :kind, :item_id, :weapon_id, :armor_id, :denominator ) end end end |
So eine könntest du dir auch anlegen, um die Art des "DropItem"s zu speichern und die Wahrscheinlichkeit (1-100) mit der man es bekommt.
Diese Instanzen könntest du dann wiederum in einem Array speichern, falls du mehrere haben möchtest.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 |
drop_items = [] drop_items[0] = RPG::Enemy::DropItem.new drop_items[0].kind = 1 drop_items[0].item_id = 1 drop_items[0].denominator = 50 drop_items[1] = RPG::Enemy::DropItem.new drop_items[1].kind = 1 drop_items[1].item_id = 2 drop_items[1].denominator = 20 |
Und den Array mit der EnemyID des Gegners in Verbindung setzen, zum Beispiel in einem Hash.
|
|
Ruby Quellcode |
1 |
Enemy_ItemDrop = { 4 => drop_items } |
Oder du machst es ganz anders, es gibt viele Möglichkeiten =)
Aber zu einer eigenen kleinen Klasse, um die DropItems zu speichern würde ich persönlich schon raten.
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.
Öhm... ich unwissendes Wesen kann mich irren, aber willst du nicht einfach multiple Drops haben?
Google sagte, Blizzards Tons of Add-Ons würde helfen.
>Hier Klicken<
Habe gerade ins Script geschaut, und das soll wohl auch kompatibel mit dem RTAB sein.
(Musst nur das Zeug in Scriptpart 2 auf true stellen.)
Gruß,
Ryouko
Google sagte, Blizzards Tons of Add-Ons würde helfen.
>Hier Klicken<
Habe gerade ins Script geschaut, und das soll wohl auch kompatibel mit dem RTAB sein.
(Musst nur das Zeug in Scriptpart 2 auf true stellen.)
Gruß,
Ryouko
Benutzerinformationen überspringen
Motto: Aufgeben ist es, was den Menschen tötet. Nur der Mensch, der sich weigert aufzugeben, hat sich das Recht verdient, auf dem glanzvollen Pfad der Menschheit zu wandeln.
Ich hab mir gerade mal die Addonsammlung angeguckt, scheint ziemlich viel drin zu sein und ist sehr komplex.
Leider kommen da Unmengen an Fehlermeldungen bei mir.
Aber trotzdem danke, der Skript sieht sehr interessant aus, vllt kann man da das ein oder andere herausbasteln.
@Playm:
Zum Verständnis: Mit folgendem Code könnte ich dann dem Monster zwei Items zuweisen?
Leider kommen da Unmengen an Fehlermeldungen bei mir.
Aber trotzdem danke, der Skript sieht sehr interessant aus, vllt kann man da das ein oder andere herausbasteln.
@Playm:
Zum Verständnis: Mit folgendem Code könnte ich dann dem Monster zwei Items zuweisen?
|
|
Quellcode |
1 2 3 4 5 6 7 8 |
drop_items[1] = RPG::Enemy::DropItem.new drop_items[1].kind = 1 drop_items[1].item_id = 2 drop_items[1].denominator = 20 drop_items[1] = RPG::Enemy::DropItem.new drop_items[1].kind = 2 drop_items[1].item_id = 3 drop_items[1].denominator = 50 |
Mitsch93
-
Projekte -
Tutorials & Hilfreiches aus der Eventtechnik
[Tutorial] Skills, Stats und Bosse - So erstellt ihr einen guten Bosskampf
[Tutorial] Kampf - Unendlich Gegner erscheinen lassen
[Tutorial] Kämpfe, Klassen und Balancing
[Tutorial] Entwickler Talk: Skalierungen

NPC verfolgt Held durch Türen

Pokemon- Fangskript

Monstergruppenführer

Automatisches prioritätsgesteuertes Anordnen von Bildern

Doppelte Eventfunktionen auf Map

Objekte schieben & ziehen
Nein, mit dem Code steckst zu zwei Instanzen der Klasse RPG::Enemy::DropItem an Position 1 des Arrays der in der Variable drop_items gespeichert ist.
Ich habe dir jetzt kein fertigen Code gegeben, sondern nur ein paar Hinweise wie du es selber machen könntest. Ich habe das "ein wenig hilfe" so verstanden, dass du ein bisschen weißt und nur ein paar Tipps brauchst, wie man es angehen könnte.
Wenn du den Quellcode, der die Klasse RPG::Enemy::DropItem definiert in deinem Script Editor einfügst kannst du sie verwenden - das weißt du ja vermutlich schon. Diese Klasse wurde dafür ausgelegt ein Item, welches ein Gegner fallen lässt, zu speichern sowie die Wahrscheinlichkeit mit der dies geschieht.
Du kannst im Scripteditor dir nun eine Instanz dieser Klasse, also ein RPG::Enemy::DropItem-Objekt anlegen, so wie du ein Fensterobjekt erzeugen würdest:
Die Klasse RPG::Enemy::DropItem braucht beim Initialisieren keine Parameter im Gegensatz zur Klasse Window_Base. Die Attribute der Klasse (kind,item_id,denominator,...) stellst du später über dafür bereitgestellte getter- und setter-Methoden ein. Diese wurden in der Klasse durch attr_accessor(...) definiert.
Das Verwenden der DopItem Klasse, anstatt die Werte einfach so in einen Array zu schreiben hat den Vorteil der Übersichtlichkeit.
Bei einem Array würdest du mit eckigen Klammern auf den Wert zugreifen, und auf den ersten Blick erkennt man nicht was abgefragt wird, wenn du diesen Array dann nochmal in einen Array steckst, hast du zwei Klammerterme hintereinander was nicht sehr übersichtlich ist.
Bei der Verwendung der Klasse schreibst du einfach drop_item_objekt.kind und weißt, dass du abfragst welche Itemart fallengelassen wurde (Item/Weapon/Armor).
Du könntest die RPG::Enemy::DropItem Klasse auch verändern, dass du beim Initialisieren die Attribute festlegst.
Mit einer so veränderten Klasse, kannst du dann ein DropItem, welches einen großen Heiltrank darstellt (mit 75%) so erstellen:
Ansonsten würdest du es halt so machen:
Aber egal wie du es machst - dieses Item kannst du dir dann speichern.
Da es sich um eine konstante Speicherung handelt, würde ich zu einer Konstante raten (trivial). Da es aber etwas umständlich ist, für jeden Gegner in der Database eine eigene Konstante anzulegen, würde sich ein Array anbieten, wo die GegnerID der Index wäre (Also Gegner#1 hat an Indexposition 1 seine DropItems gespeichert und so weiter) - es seiden diese extra DropItems gelten nicht für alle, sondern nur für einige wenige Gegner - dann wäre ein Hash besser, der aber von aussen fast genauso zu benutzen ist wie ein Array.
Also legst du irgendwo im ScriptEditor ein Script an, wo du diese Zuweisungen speicherst:
Somit hast du nun schonmal die Werte - allerdings hast du jetzt wieder jedem Gegner nur ein Item zugewiesen. Du wolltest aber mehrere, dafür kann man wieder einen Array nehmen, bzw. einen pro Enemy:
In der Scene_Battle, phase5 müsstest du dann erstmal pro Gegner auf die für den Gegner abgelegten Items zugreifen, indem du Enemys_ItemDrop als Index die EnemyID gibst, und dann durch den Array iterieren, und dann mit den Werten arbeiten.
Naja, keine Ahnung in wie weit dir das hilft ._." das ist jetzt nur eine Lösungsmöglichkeit die mir vorhin eingefallen war.
Du speicherst halt was fallen gelassen wird (am besten in einer eigenen Klasse, bzw. einer Instanz dieser), und irgendwo speicherst du halt wer das fallen lässt in einer Variable. Wenn ein Gegner mehreres falle lässt, dann speicher die mehreren Objekte am besten in einem Array.
Bei der vergabe der Kampfbeute guckst du halt nach, ob in der Variable für diese Gegner mehrere Gegenstände gespeichert sind, und gibst sie dann der Party.
Wenn du dir in Ruby noch unsicher bist, es gibt im
Scientia-Wiki einen guten Rubykurs von KaiD sowie eine recht brauchbare RGSS Dokumentation.
Ich habe dir jetzt kein fertigen Code gegeben, sondern nur ein paar Hinweise wie du es selber machen könntest. Ich habe das "ein wenig hilfe" so verstanden, dass du ein bisschen weißt und nur ein paar Tipps brauchst, wie man es angehen könnte.
Wenn du den Quellcode, der die Klasse RPG::Enemy::DropItem definiert in deinem Script Editor einfügst kannst du sie verwenden - das weißt du ja vermutlich schon. Diese Klasse wurde dafür ausgelegt ein Item, welches ein Gegner fallen lässt, zu speichern sowie die Wahrscheinlichkeit mit der dies geschieht.
Du kannst im Scripteditor dir nun eine Instanz dieser Klasse, also ein RPG::Enemy::DropItem-Objekt anlegen, so wie du ein Fensterobjekt erzeugen würdest:
|
|
Ruby Quellcode |
1 2 3 |
neues_fenster = Window_Base.new( 0, 0, 320, 240 ) # analog neues_drop_item = RPG::Enemy::DropItem.new() |
Das Verwenden der DopItem Klasse, anstatt die Werte einfach so in einen Array zu schreiben hat den Vorteil der Übersichtlichkeit.
Bei einem Array würdest du mit eckigen Klammern auf den Wert zugreifen, und auf den ersten Blick erkennt man nicht was abgefragt wird, wenn du diesen Array dann nochmal in einen Array steckst, hast du zwei Klammerterme hintereinander was nicht sehr übersichtlich ist.
Bei der Verwendung der Klasse schreibst du einfach drop_item_objekt.kind und weißt, dass du abfragst welche Itemart fallengelassen wurde (Item/Weapon/Armor).
Du könntest die RPG::Enemy::DropItem Klasse auch verändern, dass du beim Initialisieren die Attribute festlegst.
|
|
Ruby Quellcode |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
module RPG class Enemy class DropItem def initialize( arg_kind=0, arg_id=1, arg_denominator=1) @kind = arg_kind # Type of the drop item (0: none, 1: item, 2: weapon, 3: armor). @item_id = (arg_kind == 1) ? arg_id : 1 # Trage hier die ID ein, wenn kind == 1 ist. Ansonsten trage 1 ein. @weapon_id = (arg_kind == 2) ? arg_id : 1 # Trage hier die ID ein, wenn kind == 2 ist. Ansonsten trage 1 ein. @armor_id = (arg_kind == 3) ? arg_id : 1 # Trage hier die ID ein, wenn kind == 3 ist. Ansonsten trage 1 ein. @denominator = arg_denominator # Wahrscheinlichkeit end attr_accessor( :kind, :item_id, :weapon_id, :armor_id, :denominator ) end end end |
zum Lesen den Text mit der Maus markieren
|
|
Ruby Quellcode |
1 |
neues_drop_item = RPG::Enemy::DropItem.new( 1, 3, 75 ) |
|
|
Ruby Quellcode |
1 2 3 4 |
neues_drop_item = RPG::Enemy::DropItem.new() neues_drop_item.kind = 1 neues_drop_item.item_id = 3 neues_drop_item.denominator = 75 |
Aber egal wie du es machst - dieses Item kannst du dir dann speichern.
Da es sich um eine konstante Speicherung handelt, würde ich zu einer Konstante raten (trivial). Da es aber etwas umständlich ist, für jeden Gegner in der Database eine eigene Konstante anzulegen, würde sich ein Array anbieten, wo die GegnerID der Index wäre (Also Gegner#1 hat an Indexposition 1 seine DropItems gespeichert und so weiter) - es seiden diese extra DropItems gelten nicht für alle, sondern nur für einige wenige Gegner - dann wäre ein Hash besser, der aber von aussen fast genauso zu benutzen ist wie ein Array.
Also legst du irgendwo im ScriptEditor ein Script an, wo du diese Zuweisungen speicherst:
|
|
Ruby Quellcode |
1 2 3 4 5 |
Enemys_ItemDrop = Array.new() Enemys_ItemDrop[ 1 ] = RPG::Enemy::DropItem.new( 2, 1,100 ) # BronzeSword, 100% Wahrscheinlichkeit Enemys_ItemDrop[ 2 ] = RPG::Enemy::DropItem.new( 1, 3, 75 ) # großer Heiltrank, 75% Wahrscheinlichkeit Enemys_ItemDrop[ 3 ] = RPG::Enemy::DropItem.new( 0 ) # kein Item # und so weiter |
Somit hast du nun schonmal die Werte - allerdings hast du jetzt wieder jedem Gegner nur ein Item zugewiesen. Du wolltest aber mehrere, dafür kann man wieder einen Array nehmen, bzw. einen pro Enemy:
|
|
Ruby Quellcode |
1 2 3 4 5 |
Enemys_ItemDrop = Array.new() Enemys_ItemDrop[ 1 ] = [ RPG::Enemy::DropItem.new( 2, 1,100 ), RPG::Enemy::DropItem.new( 3, 1,100 ) ] Enemys_ItemDrop[ 2 ] = [ RPG::Enemy::DropItem.new( 1, 3, 75 ), RPG::Enemy::DropItem.new( 1, 3, 60 ) ] Enemys_ItemDrop[ 3 ] = [ RPG::Enemy::DropItem.new( 0 ) ] # kein Item # und so weiter |
In der Scene_Battle, phase5 müsstest du dann erstmal pro Gegner auf die für den Gegner abgelegten Items zugreifen, indem du Enemys_ItemDrop als Index die EnemyID gibst, und dann durch den Array iterieren, und dann mit den Werten arbeiten.
Naja, keine Ahnung in wie weit dir das hilft ._." das ist jetzt nur eine Lösungsmöglichkeit die mir vorhin eingefallen war.
Du speicherst halt was fallen gelassen wird (am besten in einer eigenen Klasse, bzw. einer Instanz dieser), und irgendwo speicherst du halt wer das fallen lässt in einer Variable. Wenn ein Gegner mehreres falle lässt, dann speicher die mehreren Objekte am besten in einem Array.
Bei der vergabe der Kampfbeute guckst du halt nach, ob in der Variable für diese Gegner mehrere Gegenstände gespeichert sind, und gibst sie dann der Party.
Wenn du dir in Ruby noch unsicher bist, es gibt im
Das große Scientia Wiki zur Spielentwicklung 
Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs
Musik von Shabraxxx für euch
Guide zu den Audioformaten
Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.

Was ist das RGSS ? RGSS-Dokumentation auf Sc
Kyoshiros Makerkurs

Musik von Shabraxxx für euch
Guide zu den Audioformaten

Skripte von mir (Auswahl):
Atmungssystem
| Streichholzsystem
| Animiert durch Bücher blättern
Random : Marktsystem für Kardor
| Staterelated Battlergraphic
| Hinweis auf mögliche Aktionen
SelfSwitchExpirationtimer Skript - Gameplayerweiterung für Pilzesammler und Farmspiele
Meine Skripte werden gerade hier gesammelt.Ähnliche Themen
-
RGSS 1 Probleme & Talk »-
Frage zum Rataime Sprite Reflection Script. (Neues Problem)
(27. Juli 2011, 12:52)
-
RGSS 1 Probleme & Talk »-
Problem mit Array
(9. August 2011, 19:31)
-
Maker-Talk »-
Stadtmauern und Begehbarkeit
(8. August 2011, 15:59)
-
RGSS 1 Probleme & Talk »-
Skript erweitern?
(14. Juli 2011, 18:32)
-
RGSS 1 Probleme & Talk »-
Argument Error und Modifikation von 1-Scene CMS
(5. Juli 2011, 18:18)
