If - Abfragen

Wichtiger Hinweis: Bitte ändert nicht manuell die Schriftfarbe auf schwarz sondern belasst es bei der Standardeinstellung. Somit tragt ihr dazu bei dass euer Text auch bei Verwendung unseren dunklen Forenstils noch lesbar ist!

Tipp: Ihr wollt längere Codeausschnitte oder Logfiles bereitstellen? Benutzt unseren eigenen PasteBin-Dienst Link
  • Ich habe gerade ein /leave Command erstellt, nun habe ich aber mit der Message Verteilung ein Problem ^^
    Problem:

    Spoiler anzeigen
    Also
    [Derby Join] > [/leave] > [Nachricht: Du hast ein Derby verlassen | Nachricht: Du bist in keinem Death Match |[Info]La_Koka hat ein Derby verlassen.]
    [DM Join] > [/leave] > [Nachricht: Du hast ein DM verlassen | Nachricht: Du bist in keinem Derby |[Info]La_Koka hat ein DM verlassen.]
    [/leave] > [Nachricht: Du bist in keinem DM | Nachricht: Du bist in keinem Derby]
    Das bedeutet es kommt immer 1. Nachricht zu viel an.
    Es soll so sein,
    /Derby > /leave > Nachricht: Du hast ein Derby verlassen | Nachricht: [Info]La_KoKa hat ein Derby verlassen
    Genauso mit DM.

    Code:
    if(strcmp(cmd, "/leave", true) == 0)
    {


    if(IsPlayerInDerby[playerid] == 1)
    {
    bowl[playerid]=0;
    IsPlayerInDerby[playerid]=0;
    ResetPlayerWeapons(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, 0);
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string,sizeof(string),"[INFO] %s leaved a Derby!",pName);
    format(string1,sizeof(string1),"[INFO] %s hat ein Derby verlassen!",pName);
    ClientLanguageTextToAll(COLOR_RED,string,string1);
    SetPlayerPos(playerid, 1255.0117,540.2365,207.3265);
    ClientLanguageText(playerid, COLOR_RED, "You left the Derby!", "Du hast ein Derby verlassen!");
    }
    else
    {
    ClientLanguageText(playerid, COLOR_RED, "[ERROR]You're not in a Derby!", "[ERROR]Du bist in keinem Derby!");
    }
    if(IsPlayerInDM[playerid] == 1)
    {
    ClientLanguageText(playerid, COLOR_RED, "You left the DeathMatch!", "Du hast ein DeathMatch verlassen!");
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string,sizeof(string),"[INFO] %s leaved a Deathmatch!",pName);
    format(string1,sizeof(string1),"[INFO] %s hat ein Deathmatch verlassen!",pName);
    ClientLanguageTextToAll(COLOR_RED,string,string1);
    twoedm[playerid]=0;
    minigundm[playerid]=0;
    IsPlayerInDM[playerid]=0;
    ResetPlayerWeapons(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerPos(playerid, 1255.0117,540.2365,207.3265);
    }
    else
    {
    ClientLanguageText(playerid, COLOR_RED, "[ERROR]You're not in a Death Match!", "[ERROR]Du bist in keinem Death Match!");
    }
    return 1;
    }
    Die Abfragen müssen nur anders in der Reinfolge sein, oder ?
    Wenn man nirgends drinne ist kommt ja, > Du bist in keinem Derby | Du bist in keinem DM , wie mach ich daraus noch | Du kannst /leave jetzt nicht benutzen |?
    Irgendwie so, nur grad echt kein Plan wie ich die setzen soll, paar Varianten schon getestet aber nicht die richtige dabei ^^
    Wär gut wenns einer weiß ;)


    MfG
    ED_Hardy

  • if(strcmp(cmd, "/leave", true) == 0)
    {


    if(IsPlayerInDerby[playerid] == 1)
    {
    bowl[playerid]=0;
    IsPlayerInDerby[playerid]=0;
    ResetPlayerWeapons(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, 0);
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string,sizeof(string),"[INFO] %s leaved a Derby!",pName);
    format(string1,sizeof(string1),"[INFO] %s hat ein Derby verlassen!",pName);
    ClientLanguageTextToAll(COLOR_RED,string,string1);
    SetPlayerPos(playerid, 1255.0117,540.2365,207.3265);
    ClientLanguageText(playerid, COLOR_RED, "You left the Derby!", "Du hast ein Derby verlassen!");
    return 1;
    }
    else
    {
    ClientLanguageText(playerid, COLOR_RED, "[ERROR]You're not in a Derby!", "[ERROR]Du bist in keinem Derby!");
    return 1;
    }
    if(IsPlayerInDM[playerid] == 1)
    {
    ClientLanguageText(playerid, COLOR_RED, "You left the DeathMatch!", "Du hast ein DeathMatch verlassen!");
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string,sizeof(string),"[INFO] %s leaved a Deathmatch!",pName);
    format(string1,sizeof(string1),"[INFO] %s hat ein Deathmatch verlassen!",pName);
    ClientLanguageTextToAll(COLOR_RED,string,string1);
    twoedm[playerid]=0;
    minigundm[playerid]=0;
    IsPlayerInDM[playerid]=0;
    ResetPlayerWeapons(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerPos(playerid, 1255.0117,540.2365,207.3265);
    }
    else
    {
    ClientLanguageText(playerid, COLOR_RED, "[ERROR]You're not in a Death Match!", "[ERROR]Du bist in keinem Death Match!");
    }
    return 1;
    }

  • Ja, aber nur wenn IsPlayerInDerby eintritt, Aber ich denke da gibts noch andere Probleme mit deiner Variable :wacko:

  • Welche anderen Probleme ? ^^
    Habs grade getestet, wie gesagt funktioniert nicht weil, wenn er im DM ist wird der Code unten ja gar nicht mehr genutzt/aufgerufen.
    Will einfach das er zwischen den Nachrichten je nach dem switcht.
    Wie es aussieht und es aussehen soll

    Spoiler anzeigen
    --------Soo soll es im entfekt aussehen
    Beitritt von Derby > zoggn > /leave > Du hast das Derby verlassen | [Info]La_KoKa hat ein Derby verlassen.
    Beitritt von D M > zoggen > /leave > Du hast das DM verlassen | [Info]La_KoKa hat ein DM verlassen.
    Benutzung von /leave > Zur Zeit brauchst du /leave nicht nutzen.
    --------Soo sieht es aus
    Beitritt von Derby > zoggn > /leave Du hast ein Derby verlassen | Du bist in keinem DM | [Info]La_KoKa hat ein Derby verlassen
    Beitritt von DM > zoggn > /leave Du hast ein DM verlassen | Du bist in keinem Derby | [Info]La_KoKa hat ein DM verlassen
    Benutztung von /leave > Du bist in keinem DM | Du bist in keinem Derby
    -------

    Oo Wie soll das denn mit 1Variable funktionieren bei mehreren Events ?


    MfG
    Ed_Hardy



    EDIT:
    Ich habe das jetzt mal anders gemacht und zwar so
    if(strcmp(cmd, "/leave", true) == 0)
    {
    new isevent = event[playerid];
    if(IsPlayerAL[playerid] == 0)return ClientLanguageText(playerid, COLOR_RED, "[ERROR]You can't use the /leave Command!", "[ERROR]Du kannst den Befehl nicht benutzen!");
    switch (isevent)
    {
    case IsPlayerInDM: {
    ClientLanguageText(playerid, COLOR_RED, "You left the DeathMatch!", "Du hast ein DeathMatch verlassen!");
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string,sizeof(string),"[INFO] %s leaved a Deathmatch!",pName);
    format(string1,sizeof(string1),"[INFO] %s hat ein Deathmatch verlassen!",pName);
    ClientLanguageTextToAll(COLOR_RED,string,string1);
    twoedm[playerid]=0;
    IsPlayerAL[playerid]=0;
    minigundm[playerid]=0;
    IsPlayerInDMV[playerid]=0;
    ResetPlayerWeapons(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, 0);
    SetPlayerPos(playerid, 1255.0117,540.2365,207.3265); }
    case IsPlayerInDerby: {
    ClientLanguageText(playerid, COLOR_RED, "You left the Derby!", "Du hast ein Derby verlassen!");
    bowl[playerid]=0;
    IsPlayerAL[playerid]=0;
    IsPlayerInDerbyV[playerid]=0; //Fehler
    ResetPlayerWeapons(playerid);
    SetPlayerInterior(playerid,0);
    SetPlayerVirtualWorld(playerid, 0);
    GetPlayerName(playerid, pName, sizeof(pName));
    format(string,sizeof(string),"[INFO] %s leaved a Derby!",pName);
    format(string1,sizeof(string1),"[INFO] %s hat ein Derby verlassen!",pName);
    ClientLanguageTextToAll(COLOR_RED,string,string1);
    SetPlayerPos(playerid, 1255.0117,540.2365,207.3265);}
    }
    return 1;
    }
    Soweit habe ich es hinbekommen, es funktioniert auch fast alles soweit.
    Nur da wo //Fehler steht, die Variable wird nicht auf 0 gesetzt why ?
    Weil wenn Sie 1 ist, werden die anderen Befehle geblockt...
    bei 0 gehen alle wieder nur Sie wird einfach nicht auf 0 gesetzt -.-
    Kann mir dabei wer helfen ^^ bzw sagen woran es liegen kann hmm


    MfG
    Ed_Hardy


    EDIT: Mit einer weiteren If Abfrage krieg ich das auch net hin, plz Help, Wiki und Sufu ergibt nix zumindest nix zum nicht umstellen einer Variable...
    EDIT2: Irgendwer muss doch dazu eine Lösung haben, wiki hilft mir da irgendwie nicht weiter da ich überhaupt net weiß woran es liegt, plz HeeeLP