Message an admins zusätzlich senden

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
  • Hallo Community,


    ich möchte nachdem der /desk befehl von usern ausgeführt wurde an alle Admins also wo der rang höher als 0 ist also 1und höher eine nachricht senden


    was darein kommt schaffe ich selber hier mal der befehl
    ich habe einfach mal probiert aber der zweck ist nicht hundert prozent erfüllt also nachricht an alle die adminlevel über 0 haben
    if(strcmp(cmdtext,"/desk", true ) == 0)
    {
    if(PlayerInfo[playerid][pAdmin]==0)
    {
    SendClientMessage(playerid,GREEN,"Du hast das Desktop-freeze verlassen .");
    TogglePlayerControllable(playerid,0);
    return 1;
    }

    return 1;
    }

  • stock SendMessageToAdmins(color,string[])
    {
    new i;
    for(; i != MAX_PLAYERS; ++i)if(PlayerInfo[i][pAdmin])SendClientMessage(i,color,string);
    return 1;
    }


    if(!strcmp(cmdtext,"/desk", true ))
    {
    SendClientMessage(playerid,GREEN,"Du hast das Desktop-freeze verlassen .");
    TogglePlayerControllable(playerid,0);
    return SendMessageToAdmins(-1,"Ein Spieler hat den Desktop-freeze verlassen");
    }



    Was ihr da oben schreibt hat nix mit seiner Problemstellung zu tun. Er möchte, dass eine Nachricht an die Admins kommt, wenn der Spieler den Befehl eingibt.

  • Frage 1 wozu if(!strcmp(cmdtext,"/desk", true ))---dort das ! bei (!strcmp


    Das ! prüft in einer if-Abfrage ob der Wert 0 ist.


    Frage 2 wie leite ich zusätzlich die Spielerid/Spielernamen weiter also einzeln oder am besten beides


    Naja, einfach so:


    if(!strcmp(cmdtext,"/desk", true ))
    {
    SendClientMessage(playerid,GREEN,"Du hast das Desktop-freeze verlassen .");
    TogglePlayerControllable(playerid,0);
    new string[35 + MAX_PLAYER_NAME],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,MAX_PLAYER_NAME);
    format(string,sizeof string,"%s hat den Desktop-freeze verlassen!",name);
    return SendMessageToAdmins(-1,string);
    }


    mfg. :thumbup:

    ast2ufdyxkb1.png


    Leute, lernt scripten und versucht mal lieber etwas selber zu schreiben, als es aus einem GF zu kopieren. :S

  • Frage 1 wozu if(!strcmp(cmdtext,"/desk", true ))---dort das ! bei (!strcmp


    Frage 2 wie leite ich zusätzlich die Spielerid/Spielernamen weiter also einzeln oder am besten beides


    Danke für den bisherigen support



    Wenn du diesen wiki Eintrag anschaust


    http://wiki.sa-mp.com/wiki/Strcmp


    wirst du sehen welche werte strcmp zurück gibt


    Zitat

    -1 if string1 comes before string2
    1 if string1 comes after string2
    0 if the strings are the same (for the matched length).


    Wie man hier sehen kann wird 0 zurück gegeben wenn der string gleich ist
    daher bedeutet "(!strcmp" wenn strcmp alles außer 1 zurück gibt trifft die Bedingung zu, du kannst beide möglichkeiten verwenden du wo ich dir gepostet habe
    und was du nutzt. Im übertragenen ist dies, dass selbe.


    2. du formatierst den string einfach mit format

    new str[64], pName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,pName,MAX_PLAYER_NAME);
    format(str,64,"[%d] %s ist nun wieder da",playerid,pName);