• Anmelden

1

Dienstag, 21. Juli 2009, 20:58

ID des letzten verwendeten Items ermitteln

Hallo,
beim Item wird ja das Common Event hinterlegt, welches beim Verwenden des Items ausgeführt werden soll.
Ich möchte nun im Common Event eine Klassenmethode aufrufen, die die Verwendung des Items durchführt.
Wie kann ich die ID des zuletzt verwendeten Items erfahren?
Ich könnte zwar für jedes Item ein eigenes Common Event schreiben, was mir eine entsprechende Variable setzt, aber es müsste doch auch einfacher gehen, oder?

Vielen Dank für jede Hilfe.

Marco
Vielen Dank für jede Information.

Marco

2

Dienstag, 21. Juli 2009, 21:43

Mmh.. dachte das wird sogar irgendwo gespeichert habs aber grad nicht gefunden.
Wenn das Item auf der Map benutzt wird gehe ins Script Scene_Item und füge unter Zeile 189 diese Zeile ein:

Ruby Quellcode

1
$game_variables[1] = @item.id


So erhält die Spielvariable 1 die Item ID. (Frei wählbar, aber bitte vorrausstehenden 0en weglassen)

Das ganze sollte dann so aussehen:

Ruby Quellcode

1
2
3
4
5
6
7
8
if @item.common_event_id > 0
 $game_variables[1] = @item.id
 # Common event call reservation
 $game_temp.common_event_id = @item.common_event_id
 # Switch to map screen
 $scene = Scene_Map.new
 return
end


Damit das ganze auch im Kampf funktioniert musst du die Änderung noch in Scene_Battle 4 unter Zeile 379 vornehmen:

Ruby Quellcode

1
2
3
4
5
@animation1_id = @item.animation1_id
@animation2_id = @item.animation2_id
$game_variables[1] = @item.id
# Set common event ID
@common_event_id = @item.common_event_id

3

Dienstag, 21. Juli 2009, 21:53

Hallo Monsta,
Danke für die schnelle Hilfe.
Hatte es selbst grade gefunden, allerdings habe ich es unter Zeile 108 eingefügt, weil ich das Item nach Nutzung aus dem Inventar benötige.
BTW: Ich habe ja nun den Qriginal-Code von Scene_Item geändert. Ist dies für solche Zwecke die richtige Variante oder macht man das besser in einer geerbten Klasse?

Marco.
Vielen Dank für jede Information.

Marco

4

Mittwoch, 22. Juli 2009, 00:17

Da du in Ruby Klassen zur Laufzeit ändern kannst, ist das Erstellen von Subklassen für solche Fälle imo unnötigt. Subklassen würde ich wirklich nur nutzen, wenn du beide Klassen, sowohl Super- als auch Subklasse, im Programm nutzt.

Was ich dir aber raten würde: Verändere nicht die Original-Scripte des Makers. Erstelle stattdessen eigene neue Scripte und kopiere dort die jeweilige Methode rein. Dann kannst du sie verändern. Das hat den Vorteil, dass du auf den ersten Blick siehst: Welcher Code stammt von mir, welcher aus der RGSS? Wo habe ich was verändert? Und du kannst eigene Änderungen rückgängig machen, in dem du einfach das Script wieder löschst.
Bild
RMXP Grundkurs
1 2 3
Ruby/RGSS-Kurs

Social Bookmarks