Lieber Besucher, herzlich willkommen bei: RPG Studio - Make your World real. Falls dies Ihr erster Besuch auf dieser Seite ist, lesen Sie sich bitte die Hilfe durch. Dort wird Ihnen die Bedienung dieser Seite näher erläutert. Darüber hinaus sollten Sie sich registrieren, um alle Funktionen dieser Seite nutzen zu können. Benutzen Sie das Registrierungsformular, um sich zu registrieren oder informieren Sie sich ausführlich über den Registrierungsvorgang. Falls Sie sich bereits zu einem früheren Zeitpunkt registriert haben, können Sie sich hier anmelden.

1

Dienstag, 17. November 2009, 18:46

Gegner droppt MEHRERE Items?

Gudden,

Ich hätte da eine Frage: Ich will erreichen, dass ein NPC zwei Items droppt.

Der Fall ist dieser:
Ich verwende wie in Final Fantasy oder anderen Games ein Fähigkeitenbaum, auch genannt Sphärobrett. Ich habe jetzt z.B. einen Wolf, der droppt mit der eingebauten "Treasure" Funktion zu 50% Wolfsfell. Nun soll der dazu noch 2 Skillpunkte droppen, also es sollen 2 Skillpunkte ins Inventar kommen (ist halt so) und die Variable soll um 2 gesteigert werden. Nun habe ich leider keine Ahnung wie ich das erreichen kann, über die Events im Battle selbst habe ich nichts brauchbares erreicht.

Ich hoffe mir kann jemand helfen.

lg
pokusa

2

Dienstag, 17. November 2009, 19:52

Das einzige was ich auf die schnelle raten könnte wäre, dass du
das nachm Kampf per Events machst.
Voraussetzung dafür wären nat. On-Map Monster xD
Ich denke nicht, dass man das durch Random Battles machen kann.
Wie hast du das geregelt bei dir?

3

Dienstag, 17. November 2009, 20:26

Das Problem ist das nicht vorgesehen ist das ein Gegner mehr als ein Item verliehrt. Aber mit ein bisschen Basteln geht das schon.
Füge das hier unter die Scene_Battle Scripte und über dem Main Script, als neues Script ein
*Scene_Battle 2 Erweiterung angehängt*
Und ebenso dieses hier:
*EinstellungsScript angehängt*
In dem 2.Script kannst du dann einstellen welcher Gegner was droppen soll, wie das geht steht im Script - sonst frag nochmal.

Die Variable erhöhen kannst du per Battle Event - mit Control_Variables, falls man verliehrt ist es ja eh egal ob eine Variable geändert wurde.

Edit Die Formatierung ging beim Einfügen kaputt, ich habs jetzt als txt-Dokument angehängt, einfach den Code rauskopieren
Edit
»Playm« hat folgende Dateien angehängt:

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Playm« (17. November 2009, 20:35)


4

Mittwoch, 18. November 2009, 14:35

Also Scene_Battle_2_Edit UND Einstellungen in einem Script über main ober getrennt?

EDIT: OK, habs hinbekommen. Aber leider bekommt mein Held nur einen Skillpunkt, beim Wolf sollen es aber 2 sein und bei besseren gegner halt mehr - lässt sich das auch regeln?

Sonst: sehr nützliches Skript :)

lg
pokusa

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »pokusa« (18. November 2009, 14:54)


5

Mittwoch, 18. November 2009, 15:46

Ehm, wie fügst du die Skillpunkte denn hinzu?
Ich habs so verstanden das das ein Item ist, welches du hinzufügst, also fügst du 2 mal das Item 'Skillpunkte' hinzu:
Also wenn der Wolf die ID 2 hat, und das Skillpunkte-Item die ID 5 dann musst du bei den Einstellungen das einstellen:

Ruby Quellcode

1
$data_enemies[2].item_id= [5,5] 
und schon verliehrt der Wolf 2mal das Item 5.
Bedenke aber das es 2 einschränkungen gibt:
1.)Im Kampf können maximal 6 Objekte gewonnen werden, alle weiteren werden nicht hinzugefügt oder angezeigt
2.)Die Wahrscheinlichkeit die du für den Wolf eingestellt hast, zählt für die gesammt Sammlung, das heißt entweder man kriegt alle Items aus der Sammlung des Gegners oder keins.

Die erste Einschränkung kann ich zwar rausnehmen, die zweite währe aber etwas kompliziert.

6

Mittwoch, 18. November 2009, 15:53

Leuchtet ein^^ Danke.

ALSO: Skillpunkte sind bei mir Items und eine Variable. Die Items dienen dazu, dass man sieht, wie viele Punkte man hat und die Variablen benutzt man auf den Fähigkeitenbrett um zu sehen ob man genug hat.

Geht es auch, dass man nach einem gewonnen Kampf, also wenn z.B. die Gegner HP 0 ist , man einfach eine Variable um eins erhöhen kann und man ein Item SKILLPUNKTE zum Inventar hinzufügt?

Wenn das nicht geht: Immer nach einem Kampfende kommt so ein Fenster, ein PopUp, drei Zahlen stehen, warum ist das da?

lg
pokusa

7

Mittwoch, 18. November 2009, 16:07

Dieses "PopUp" ist das sogenannte "BattleResult" da werden dir gewonnene Erfahrung, gewonnenes Gold sowie die Items die man im Kampf gewonnen hat angezeigt.

Das mit den Items um die Skillpunkte anzuzeigen ist meiner Meinung nach nicht nötig - entweder du machst dir ein einzelnes Item, welches die Variable immer aktuell anzeigt(benötigt dieses Script ), oder ein extra Fenster im Menü was die vorhandenen Skillpunkte anzeigt, ähnlich wie der Stepcounter oder das Gold Window.

Zitat

Geht es auch, dass man nach einem gewonnen Kampf, also wenn z.B. die Gegner HP 0 ist , man einfach eine Variable um eins erhöhen kann und man ein Item SKILLPUNKTE zum Inventar hinzufügt?
Kommt drauf an, wenn der Kampf über Eventbefehl aufgerufen wurde kannst du es ja dirkt danach als Eventbefehl machen, wenn das aber per Encounters läuft, muss man es im Script modifizieren.

8

Mittwoch, 18. November 2009, 16:13

Dieses "PopUp" ist das sogenannte "BattleResult" da werden dir gewonnene Erfahrung, gewonnenes Gold sowie die Items die man im Kampf gewonnen hat angezeigt.
Ne eben nicht, das PopUp ist was anderes was mit dem Script zu tun hat...

das mit dem result hätte ich auch noch gewusst :s

lg
pokusa

EDIT: Ok, hat sich erledigt! Jetzt muss mir nurnoch jemand sagen wie man eine Variable nach gewonnenem Kampf erhöht, dann halt ich die Klappe.

lg
pokusa
»pokusa« hat folgendes Bild angehängt:
  • popup_1.jpg

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »pokusa« (18. November 2009, 16:29)


9

Mittwoch, 18. November 2009, 17:38

Hoppela, das "PopUp" war eine Printausgabe die ich beim testen eingefügt hatte und anscheinend nicht mehr entfernte ^^"
Und zwar etwa Zeile 28 im Scene_Battle 2 Edit, das mit p(...)
Entschuldige, die hatte ich vergessen.

Zu deiner Variablen Frage kam mir eine (wie immer umständliche) Idee:
Du hast ja noch meine Scene_Battle 2 Erweiterung, such da mal in Zeile 25 etwa - dort steht:

Ruby Quellcode

1
2
exp += enemy.exp
gold += enemy.gold
unter diese beiden Zeilen fügst du diese hier ein:

Ruby Quellcode

1
2
skill_points = $data_enemies[enemy.id].skill_points
$game_variables[ 1 ] += skill_points if skill_points != nil
nun musst du schauen welche Variable erhöht werden soll, deren ID trägst du dann in die eckigen Klammern ein, in dem Beispiel wird Variable 1 erhöht.
Wieviele Skillpunkte jeder Gegener abgibt, das stellst du im Einstellungs-Script ein, einfach zu den anderen Einstellungen noch:
$data_enemies[ ID_des_Gegners ].skill_points= Anzahl_der_Skillpunkte; zum Beispiel:

Ruby Quellcode

1
$data_enemies[ 2 ].skill_points= 25

Damit das aber auch so funktioniert musst du diese kleine Erweiterung hier, als neues Script über Main einfügen

Ruby Quellcode

1
2
3
4
5
module RPG
  class Enemy
	attr_accessor(:skill_points) # vollen zugriff auf die Variable
  end
end

Ich hoffe nun geht's =)

10

Mittwoch, 18. November 2009, 17:46

und es geht nur mit deinem script? das habe ich jetzt eigentlich schon wieder gelöscht und bin auch ganz froh darüber.

ich habe jetzt beim wolf, dass der wolf ne droprate von 70% auf das wolfsfell hat - das reicht ja. da ich ja jetzt nicht mehr als item die skillpunkte habe sondern mit dem erweiterten Namen Script ne Variable davor habe muss ich nur noch die Variable erhöhen - geht das auch mit den vorhandenen Scripts?

thx...

lg
pokusa

11

Mittwoch, 18. November 2009, 17:57

Zitat

das habe ich jetzt eigentlich schon wieder gelöscht und bin auch ganz froh darüber.
xD
Naja, ich bin ja noch am lernen ._.

Egal, das geht auch mit dem bestehenden Scene_Battle 2, such einfach die genannte Stelle, dürfte so Zeile 150 sein, und füg dort die 2 Codezeilen ein.
Zusätzlich brauchst du dann nur das hier:
Spoiler: Code
Als neues Script über Main einfügen

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Scene_Title
  #-----------------------------------------------------------------------------
  alias_method( :das_standard_main_ohne_Playms_skill_edit, :main )
  def main
	das_standard_main_ohne_Playms_skill_edit
	erstelle_skill_points
  end
  #-----------------------------------------------------------------------------
  # $data_enemies[ ID_DES_GEGNERS_IN_DER_DB ].skill_points= Anzahl_der_Punkte
  #-----------------------------------------------------------------------------
  def erstelle_skill_points
	$data_enemies[1].skill_points=25
	$data_enemies[4].skill_points= 6
  end
  #-----------------------------------------------------------------------------
end
#==Erweiterung=der=Enemy=Klasse========
module RPG
  class Enemy
	attr_accessor(:skill_points) # vollen zugriff auf die Variable
  end
end
Das alte Einstellungsscript, sowie die Scene_Battle 2 veränderung wird nichtmehr benötigt, bzw. ist sogar besser zu entfernen
zum Lesen den Text mit der Maus markieren

12

Mittwoch, 18. November 2009, 18:12

:D

also:

Quellcode

1
$data_enemies[1].skill_points=25


in die Klammer kommt die ID vom Wolf, ist schon klar, und die zahl bei skill_points erhöht dann die Variable um 25 Punkte oder wie? wo habe ich dann die Variable angegeben, also woher weiß der code wozu sie 25 zuzählen soll?

lg
pokusa

13

Mittwoch, 18. November 2009, 18:25

Das hast du, oder solltest du getan haben, im Script Scene_Battle 2, das ist bei den standard Scripten recht weit unten. Da solltest du etwa bei Zeile 150 die Zeilen die ich oben genannt habe einfügen, das sieht dann so aus

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
# Add EXP and amount of gold obtained
exp += enemy.exp
gold += enemy.gold
#--neu-eingefügt--------
skill_points = $data_enemies[enemy.id].skill_points
$game_variables[ Variablen_ID ] += skill_points if skill_points != nil
#---------------------------
# Determine if treasure appears
if rand(100) < enemy.treasure_prob
#...
Wie gesagt, stellst du dort die Variablen Nummer ein. Anstatt "Variablen_ID" schreibst du dann 1 oder 5 oder je nachdem welche Nummer die Variable hat inder die Skillpunkte gespeichert werden sollen.

14

Mittwoch, 18. November 2009, 18:51

Hm es geht nich :/
und das ärgert mich irgendwie
DAS habe ich als neues Script über Main eingefügt:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
class Scene_Title
  #-----------------------------------------------------------------------------
  alias_method( :das_standard_main_ohne_Playms_skill_edit, :main )
  def main
	das_standard_main_ohne_Playms_skill_edit
	erstelle_skill_points
  end
  #-----------------------------------------------------------------------------
  # $data_enemies[ ID_DES_GEGNERS_IN_DER_DB ].skill_points= Anzahl_der_Punkte
  #-----------------------------------------------------------------------------
  def erstelle_skill_points
	$data_enemies[34].skill_points=36
	$data_enemies[4].skill_points= 6
  end
  #-----------------------------------------------------------------------------
end
#==Erweiterung=der=Enemy=Klasse========
module RPG
  class Enemy
	attr_accessor(:skill_points) # vollen zugriff auf die Variable
  end
end


Der Wolf ist Enemie 34, so als Test habe ich mal 36 eingegeben.

Bei Scene_Battle_2 wurde folgendes geändert:

Ruby Quellcode

1
2
3
4
5
6
7
8
9
# Add EXP and amount of gold obtained
exp += enemy.exp
gold += enemy.gold
#--neu-eingefügt--------
skill_points = $data_enemies[enemy.id].skill_points
$game_variables[ 2 ] += skill_points if skill_points != nil
#---------------------------
# Determine if treasure appears
if rand(100) < enemy.treasure_prob


Hab ich etwas vergessen? Das war alles was ich geändert hatte...

15

Mittwoch, 18. November 2009, 18:58

=/ eigentlich sollte es funktionieren, bei eigenen Test tut es das.
Sicher das der Gegner den du bezwingst die ID 34 hat? Und das die Skillpunkte in Variable#2 gespeichert werden?
Drück nach einem Kampf mal F9 wenn du im Testmodus bist (Spiel vom Maker aus gestartet) und guck nach, ob die Variable 2 wirklich erhöht wurde und auch die Skill-Point Varialbe ist.

16

Mittwoch, 18. November 2009, 19:01

muss ich ne variable machen die skill_points heißt?

ich weiß, verzweiflung ...iwo muss ne lücke sein...

lg
pokusa

EDIT: Aso, ne Variable 2 wird nach dem Kampf nicht erhöht angezeigt.

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »pokusa« (18. November 2009, 19:16)


17

Freitag, 20. November 2009, 17:36

Hat sonst keiner eine Ahnung?

lg
pokusa

18

Dienstag, 24. November 2009, 14:20

>OK Die Sache hat sich erledigt :) <

Social Bookmarks