PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Weder IF noch ELSE??



Miikku
08.06.2007, 15:58
Hallo!

Ich habe ein Problem, zu verstehen, wieso bei einer if-abfrage bei mir weder der if, noch der else teil ausgeführt wird:


@>Conditional Branch: Script: $game_map.events[1].x == 19 and game_map.events[1].y == 8
@>Conditional Branch: Script: !$m2_bool2
@>Text: okay
@>Script: $m2_bool2 = true
: Branch End
@>
: Else
@>Conditional Branch: Script: $m2_bool2
@>Script: $m2_bool2 = false
@>
: Branch End
@>
: Branch End
@>
Das ganze läuft in einem Paralelprozess und soll überprüfen, ob das 1. Event auf den Koordinaten x=19 und y=8 ist.
Wenn dies der Fal ist, soll "okay" gesagt werden (nur 1 mal) und wenn das Event nichtmehr auf den Koordinaten ist und wieder rauf geht, soll wieder "okay" gesagt werden.

Problem: Es wird nur 1x "okay" gesagt wenn das Event das 1. mal auf das Feld geht. Danach kann es sooft daraufgehen wie es will, und nix passiert!
Warum?:confused:

Kelven
08.06.2007, 16:51
So sollte es funktionieren. Ich hab das jetzt mal als reines Script gemacht, also ohne Conditional Branch zu benutzen. Falls das "okay" nicht nur eine Debugausgabe sein soll, musst du das dann wohl doch mit Conditional Branch machen.



if $game_map.events[1].x == 19 and $game_map.events[1].y == 8
if $game_switches[1] == false
$game_switches[1] = true
p "okay"
end
else
$game_switches[1] = false
end

Fluch des Grauens
17.06.2007, 10:23
hilft manchmal nicht auch wenn man zu if auch noch then am ende der zeile hinzufügt?
also: if $game_switches[1] == true then

manchmal gehts bei mir so. weiss aber nicht genau, was dieses then auslöst.

Expresseon
17.06.2007, 10:30
hilft manchmal nicht auch wenn man zu if auch noch then am ende der zeile hinzufügt?
also: if $game_switches[1] == true then

manchmal gehts bei mir so. weiss aber nicht genau, was dieses then auslöst.

Then? Das kenne ich kaum in Ruby. Das ist eigentlich nicht nötig...

Kelven
17.06.2007, 12:44
Genau, das then ist nicht nötig, es sei denn man möchte den Ausdruck in eine Zeile schreiben.

-KD-
17.06.2007, 22:15
Man sollte vermeiden bei einem Script ein false als Rückgabewert zu haben. Aus irgendeinem mir nicht verständlichen Grund fasst der Maker dies so auf, als hätte das Script einen Fehler und müsste wiederholt werden.
Darum am Ende des Script-Befehls am besten ein

true
dranhängen, sollte der letzte Begriff ein false sein (oder man schreibt den Interpreter um).