Dcmd Cmd möchte mich ärgern

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 ein kleines Problem und zwar möchte dieser CMD nicht gehen ich tippe in game
    /alogin ein und es passiert nix könnte jemand sagen wieso? ich bin kein noob Scripter aber dieser Cmd
    macht mir gerade echt probleme bzw ich weiß nicht woran das liegt?


    dcmd_alogin(playerid,params[])
    {
    #pragma unused params
    new string[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(PlayerInfo[playerid][Admin] >= 1)
    {
    if(Adminlogin[playerid] == 0)
    {
    ShowPlayerDialog(playerid,6,DIALOG_STYLE_INPUT,"Admin Login","Bitte gebe nun das Admin Passwort ein.","A-Login","Abbrechen");
    return 1;
    }
    if(Adminlogin[playerid] == 1)
    {
    Adminlogin[playerid] = 0;
    SendClientMessage(playerid,Grün,"Du bist nun nicht mehr als Administrator im Dienst.");
    format(string, sizeof(string), "Admin %s: ist nun nicht mehr im Dienst.",name);
    SendClientMessageToAll(Rot,string);
    }
    return 1;
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du bist kein Administrator!");
    }
    return 1;
    }


    (E) Beschreibung Neu und Besser

    Einmal editiert, zuletzt von Quini ()

  • dcmd_alogin(playerid,params[])
    {
    #pragma unused params
    new string[128],name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    if(PlayerInfo[playerid][Admin] >= 1)
    {
    if(Adminlogin[playerid] == 0)
    {
    ShowPlayerDialog(playerid,6,DIALOG_STYLE_INPUT,"Admin Login","Bitte gebe nun das Admin Passwort ein.","A-Login","Abbrechen");
    return 1;
    }
    Adminlogin[playerid] = 0;
    SendClientMessage(playerid,Grün,"Du bist nun nicht mehr als Administrator im Dienst.");
    format(string, sizeof(string), "Admin %s: ist nun nicht mehr im Dienst.",name);
    SendClientMessageToAll(Rot,string);
    return 1;
    }
    SendClientMessage(playerid,Rot,"Du bist kein Administrator!");
    return 1;
    }
    Ich bin mir nicht sicher aber das könnte an dieser Irren verzweigung an abfragen liegen
    Gehts so?

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Kein Problem ;)
    Aber an deiner Stelle würde ich dafür ein boolean benutzen da gibt es nur 0 und 1 da können nicht so leicht Fehler passieren ;)

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • @Qini weicht zwar bissel vom thema ab :D aber würde es gerne wissen...


    warum schreiben die meisten jedes mal im cmd...


    new string[128],name[MAX_PLAYER_NAME]; zb wie bei dir
    //edit wenn man es einmal oben im gm schreiben kann
    Dürfte doch eigt keine fehler verursachen und ist resorcen sparender?

  • Na da liegst du nicht ganz falsch, aber am besten ist eigentlich diese Möglichkeit


    new PlayerName[MAX_PLAYERS][MAX_PLAYER_NAME];
    und bei OnPlayerConnect

    GetPlayerName(playerid,PlayerName[playerid],MAX_PLAYER_NAME);
    aufegrufen werden kann das denn so
    PlayerName[playerid]


    Und einmal zu deinem "string128];" man kann damit Ressourcen sparen, nur ist dann jeder string 128 lang, egal ob man 5 Zeichen braucht oder 250

    "Bevor ich mir Informationen aus der "Bild" hole,
    werde ich anfangen, Wahlergebnisse danach vorauszusagen,
    neben welchen Busch unsere Katze gepinkelt hat."

    Margarete Stokowski

  • Zudem ist es generell ein unsauberer Programmier-Stil, den man sich nicht aneignen sollte. Denn auf übergeordnete Variablen, die nicht vererbt wurden, greift man nicht direkt zu. Das hat zwar nichts mit dem Objektlosem PAWN zu tun, aber wenn man sich später weiterbilden möchte, ist es besser lieber gleich sauber anzufangen. ;)

    PAWNit gratis nutzen?
    Geschenkcode: 2017VQXPKB8V3KA

    Hier könnte Ihre Werbung stehen.