1.
Du müsstest die
NTTMGR_TownManager() Aufrufe entfernen bzw. auskommentieren. Sinnvoll ist dies allerdings nicht.
2.
Da passiert gar nichts, da du dort lediglich die Bedingung einer if-Anweisung gepostet hast. "Passieren" tut das, was im nachfolgenden Anweisungsblock respektive der nachfolgenden Zeile steht.
Um die ganze Zeile zu verstehen, braucht du ein bisschen Grundwissen im Bereich logischer Verknüpfungen. Auch solltest du wissen, was eine Kurzschlussauswertung ist - weniger der Begriff ist von interesse, mehr das, was er meint, nämlich dass die Auswertung boolscher Ausdrücke frühzeitig abgebrochen wird, wenn ein gesamtausdruck schon nach dem Auswerten eines Teilausdrucks eindeutig definiert ist. Klingt zunächst mal schwierig, ist es aber nicht, denn es meint ganz einfach folgendes:
Code:
var _thisIsFalse = false && true;
var _thisIsTrue = true || false;
Bei beiden Ausdrücken wird der jeweils zweite Ausdruck nicht ausgewertet werden.
Genau das gilt auch für die von dir genannte Bedingung. Die Handler Funktion bekommt als Argumente
type und
msg übergeben.
type ist hierbei ein Objekt vom Typ number, welches den Typ der Nachricht beschreibt (Chat Nachricht, Server Nachricht, etc.),
msg ist ein Objekt vom Typ string, welches die eigentliche Nachricht beinhaltet.
Kommen wir auf den Ausdurck zurück, der da war:
Code:
(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.BaalTpSafe && _msg.indexOf(MWConfig_Announcements.BaalTpSafe.toLowerCase()) > -1)
Es wird also zunächst überprüft, ob
type den Wert 0 hat, was nichts anderes heißt, dass gerade irgendein Spieler im Chatgeschrieben hat.
Ist das nicht der Fall, wird wie Auswertung schon abgebrochen (vgl. Kurzschlussauswertung) und - falls vorhanden in den else-Zweig gesprungen.
Wir nehmen jetzt der Einfachheit mal an, dass der Ausdruck true werden soll.
type ist demnach gerade 0,
_msg ist hier vermutlich der in irgendeiner Form formatierte Parameter (gewöhn dir an, Quellcode immer mit genügend Kontext zu posten),
NTConfig_Leader eine Variable vom Typ string, die den Namen des Leaders beinhaltet,
MWConfig_Announcements.BaalTpSafe ebenfalls ein Member vom Typ string, der die in der globalen Config festgelegte Nachricht bei sicherem TP beinhaltet.
Wann wird der Ausdruck also true?
Im Prinzip ganz einfach, gerade dann, wenn
type identisch 0 ist UND die Nachricht (also der String
_msg bzw.
msg) den Namen des Leaders beinhaltet UND eine Nachricht bei sicherem TP definiert ist UND die Nachricht bei sicherem TP enthalten ist. Sind alle 3 Bedingungen erfüllt, wird der im Anweisungsblock stehende Code ausgeführt.
Sofern die if-Anweisung keinen else-Zweig hat, kannst du diese übrigens durch 4 verschachtelte if-Anweisungen ersetzen, die zusammen eine äquivalente Funktion erfüllen.
Das sähe dann so aus:
Code:
if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.BaalTpSafe && _msg.indexOf(MWConfig_Announcements.BaalTpSafe.toLowerCase()) > -1)
{
// Do somethin...
}
// Erfüllt dieselbe Funktion wie:
if(type == 0)
{
if(_msg.indexOf(NTConfig_Leader.toLowerCase()) > -1)
{
if(MWConfig_Announcements.BaalTpSafe)
{
if(_msg.indexOf(MWConfig_Announcements.BaalTpSafe.toLowerCase()) > -1)
{
// Do somethin...
}
}
}
}
Ich weiß, dass gerade diese logischen Sachen am Anfang schwer sind, aber je mehr du dich damit befasst, desto leichter wird das und desto weniger muss man überhaupt noch darüber nachdenken...da passiert es dann auch schonmal, dass man eine -1 vergisst.
3.
Hast du ja schon selbst gefunden.
LG
Muddy