Archiv verlassen und diese Seite im Standarddesign anzeigen : Status von Monster ändern
Liebe Community,
wie kann man einem Monster vor einem Kampf einen Statusattribut verpassen?
zB. will ich, dass das Monster gleich nach dem Kampfbeginn den Status "vergiftet" hat. Wenn ich es im Kampf tue, habe ich das Problem, dass es die Statusveränderung erst nach Runde des Monster, ändert.
(Kann womöglich auch an meinem KS liegen.)
MfG Deamonic
The_Burrito
07.09.2009, 16:54
Normalerweise kannst du erreichen indem du unter "Troops" ein Event mit der Bedingung "Turn 0" machst. Turn 0 findet vor der ersten Runde statt. Wenn das nicht funktioniert, liegt es möglicherweise wirklich an dem Kampfsystem, welches du verwendest. Eventuell müsstest du da ein wenig dran basteln bis es "Turn 0" Events korrekt ausführt.
Hm, das hatte ich schon probiert.
Geht leider nicht.
Ich verwende ein KS, welches mit ATB funktioniert.
So eine Art "Runde 0" gibt es nicht bei mir.
sorata08
07.09.2009, 17:24
Welches KS verwendest du denn? Sind ja nicht gerade wenige, die ATB beinhalten. ^^;
MfG Sorata
sorata08
07.09.2009, 17:28
Ah...
Hm...
Kann man da echt keine "Runden" einstellen?
Ich verwende für Charon 2 ja auch ein ATB und da kann ich die Funktion mit nutzen, nur sind die Runden dann nicht genau abgegrenzt.
Wie wird das denn in deinem geregelt?
Hab das Skript ja nicht vor Augen.
So wichtig ist es auch wieder nicht.
Mir fällt schon eine Alternative ein.
Danke trotzdem.
Ich bin mir nicht sicher, aber du könntest das hier mal ausprobieren.
Einfach über Main einfügen und unter Troops ein Callscript erstellen,
das die methode enemy_state(enemyid,stateid) aufruft.
#===============================================================================
# wie gehts?
# einfach ein callscript aufrufen mit der folgenden methode:
#
# enemy_state(enemyid, stateid)
#
#===============================================================================
class Interpreter
def enemy_state(enemyid,stateid)
# apply state
$game_troop.enemies.each do |i|
i.add_state(stateid) if i.id == enemyid
end
# Continue
return true
end
end
Sollte es nicht klappen sag bescheid.
The_Burrito
08.09.2009, 01:54
Das Problem liegt nicht daran, dass man dem Gegner keinen Status zugewiesen bekommt. Das funktioniert mit einem einfachen Event Command. Es geht darum, dass er das zu Beginn, des Kampfes haben möchte, und mit dem Kampfsystem, dass er verwendet, gibt es da anscheinend schwierigkeiten.
Ich werde es mal über das Script ausprobieren.
Das problem ist ja, dass ich dem Monster nicht im Kampf den Status zuweisen kann. Ist ja dumm, wenn sich der Gegner ohne Grund selber vergiftet.
EDIT: Das Script funktioniert nicht
http://www.npshare.de/files/73b8d32d/fehlermeldung.png
ok, da hab ich dann was falsch verstanden, sorry.
vielleicht setz icvh mich heute abend nochmal ran.
@Deamonic
doch es tut, hast bestimmt nur was falsch gemacht... :P
Habs nochmal ausprobiert und die fehlermeldung bleibt jetzt weg, aber die Statusveränderung kommt gar nicht zustande.
nabend,
so müsste es funktionieren!
als erstes fügst du das über main ein:
#===============================================================================
# wie gehts?
# einfach ein callscript aufrufen mit der folgenden methode:
#
# $game_system.
# battle_interpreter.statez(enemyid,stateid)
# du setzt die states zurück in dem du das callscript aufrufst:
# $game_system.
# battle_interpreter.statez()
#
# der zeilenumbruch is gewollt
#===============================================================================
class Interpreter
def statez(enemyid = 0, stateid = 0)
@enemyid = enemyid
@stateid = stateid
end
def enemy_state
# apply state
$game_troop.enemies.each do |i|
i.add_state(@stateid) if i.id == @enemyid
end
# Continue
return true
end
end
danach suchst du in deinem ks nach der methode Scene_Battle#setup_battle_event
da musst du diese zeile einfügen, am besten direkt am anfang.
$game_system.battle_interpreter.enemy_state
der letzte schritt ist dann ein callscript,
$game_system.
battle_interpreter.statez(enemyid,stateid)
so klappt es, unabhängig von den bedingungen.
Es gitb bei mir keine Methode mit dem Namen "Scene Battle" sonder nur eine Klasse, aber dort komt das "setup_battle_event" vor, allerdings im ATB-Script, nicht im KS. Ich habs dir mal geschickt.
The_Burrito
09.09.2009, 11:28
Nur zur allgemeinen Info:
Normalerweise bezeichnet man Methoden mit
<Klassenname>#<Methodenname>
Also bezog sich Scene_Battle#setup_battle_event
auf die Methode setup_battle_event in der Klasse Scene_Battle.
Das sPike hat auch schon bemerkt.
Muss es noch auf die neue Art ausprobieren.
Powered by vBulletin® Version 4.2.3 Copyright ©2025 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.