mehrere If Anweisungen richtig kombinieren (Javascript)

07/29/2011 09:40 m4758406#1
ich suche nach einer Vereinfachung folgendes Codes

Code:
if(type == 4 && msg.indexOf(_exper + "(" + _exper_acc + ") hat unsere Welt verlassen.") != -1)
{
  ExitGame();
}
if(type == 4 && msg.indexOf(_exper + "(" + _exper_acc + ") left our world.") != -1)
{
  ExitGame();
}
if(type == 4 && msg.indexOf(_leader + "(" + _leader_acc + ") hat unsere Welt verlassen.") != -1)
{
  ExitGame();
}
if(type == 4 && msg.indexOf(_leader + "(" + _leader_acc + ") left our world.") != -1)
{
  ExitGame();
}

hier ist mir die if+Bedingungen Zeile zu lang, mich stört es wenn ich im Editor immer nach rechts scrollen muss
Code:
if(Bedingung1 || Bedingung2 || usw.) //diese Zeile wird extrem lang
{
  ExitGame();
}
wie wird ein Zeilenumbruch gemacht und dabei mitgeteilt das es keinen zeilenumbruch gibt, sondern nur die Bedingung auf mehrere Zeilen verteilt anstatt einer.
probiert hab ich es noch nicht, mit "/" ?
Code:
if(Bedingung1 || /
   Bedingung2 || /
   Bedingung3 )
{
  ExitGame();
}
vielleicht gibt es noch andere Tricks:)
07/29/2011 10:55 TheCrazy11#2
Du kannst einfach ein paar Sachen zusammenfassen wie z.B. _exper und _leader und die Leavemessages!
Weiters würde ich nicht so viele Schlagworte verwenden, ist nicht notwendig:
Code:
if(type == 4 && [COLOR="Blue"](msg.indexOf(_exper) != -1 || msg.indexOf(_leader) != -1)[/COLOR] && [COLOR="Red"](msg.indexOf("left") != -1 || msg.indexOf("verlassen") != -1)[/COLOR])
{
	ExitGame();
}
Wenn dir das jetzt noch zu lange ist, hast du einen zu kleinen Bildschirm! :D

Wegen Zeilenumbrüche:
In Javascript kannst du einfach einen Zeilenumbruch an den Stellen machen, wo ein Leerzeichen kommen kann. Brauchst keine speziellen Zeichen einfügen.
Code:
if(type == 4 &&
   (msg.indexOf(_exper) != -1 || msg.indexOf(_leader) != -1) &&
   (msg.indexOf("left") != -1 || msg.indexOf("verlassen") != -1))
{
	ExitGame();
}
Würde das gleiche machen, wie oben, in dem Fall ist keine bessere Leserlichkeit gegeben, da der Ausdruck generell schon ziemlch kurz gehalten wurde.

Was vielleicht auch noch ganz gut wäre, wenn du das Timeout noch einbaust:
Code:
if(type == 4 && (msg.indexOf(_exper) != -1 || msg.indexOf(_leader) != -1) && (msg.indexOf("left") != -1 || msg.indexOf("verlassen") != -1[COLOR="Red"] || msg.toLowerCase().indexOf("timeout") != -1[/COLOR]))
{
	ExitGame();
}
08/06/2011 10:02 m4758406#3
Danke hat mir sehr geholfen nur ich verstehe noch nicht wofür das gehört
Quote:
msg.toLowerCase().indexOf("timeout") != -1
Wenn der Char Timeout hat das Script beendet wird weil sonst würde es weiter laufen?

Woher weiss ich das "type == 4" zu dem "msg.toLowerCase" dazugehört?

Vielen Dank!
08/06/2011 15:44 Muddy Waters#4
Der Parameter type beschreibt eigentlich nur, um welche Art von Nachricht es sich handelt. Du kannst das ein stückweit mit den unterschiedlichen Farben verbinden, jedenfalls hat dieser Parameter im Falle von Join/Leave Notifications immer den Wert 4.

Die genannte Bedingung wird dann wahr, wenn es sich um eine Nachricht in goldener Schrift handelt, die den Begriff "timeout" enthält, mit anderen Worten also gerade der Nachricht:
Code:
"CharXYZ was dropped due to timeout."
LG
Muddy