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
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.
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.
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.
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.
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.
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.
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.