SpielerName als Variable ? [ 1 Frage & 1 Problem ] :)

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
  • Guten Abend ;)


    Ich habe 1 Frage und 1 Problem ...


    Mein Problem


    Der Befehl:

    ocmd:makeadmin(playerid,params[])
    {
    if(IsPlayerAnAdmin(playerid,5))
    {
    new pID,level,string[128],string2[128],SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));


    if(sscanf(params,"ui",pID,level))return
    SendClientMessage(playerid,Weiß,"Benutze: /Makeadmin
    <Spielername/ID> <Level>");
    {
    if(level<0||level>5)return SendClientMessage(playerid,Rot,"Ungültiges Adminlevel!");
    {
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,"Dieser Spieler ist nicht online!");
    SpielerInfo[pID][Adminlevel] = level;
    format(string,sizeof(string),"AdmCmd: %s hat dich auf das Adminlevel %i gesetzt.",SpielerName(playerid),level);
    format(string2,sizeof(string2),"Du hast %s auf das Adminlevel %i gesetzt.",SpielerName(pID),level);
    SendClientMessage(pID,Grün,string);
    SendClientMessage(playerid,Orange,string2);
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht benutzen!");
    return 1;
    }
    }

    Fehlermeldung:

    Meine Frage
    Ist es möglich das man den SpielerNamen,AdminName,KillerNamen...
    einfach in eine Variable setzen kann und dem entsprechend benutzen???
    Beispiel:

    ocmd:computer
    {
    SendClientMessage(playerid, Rot, "Du hast den Computer von %s zerstört !", SpielerNameVomBesitzerDesZerstörtenComputers);
    return 1;
    }

    Zitat

    SpielerNameVomBesitzerDesZerstörtenComputers = die Variable


    Ich bedanke mich bei jedem der mir hilft


    Mit Freundlichen Grüßen

    Hamia aka. Homer aka. Psycho_O

  • if(sscanf(params,"ui",pID,level))return
    SendClientMessage(playerid,Weiß,"Benutze: /Makeadmin
    <Spielername/ID> <Level>");


    Das wird wohl dein Problem sein.


    So sollte es eigentlich eher aussehen
    if(sscanf(params,"ui",pID,level))return SendClientMessage(playerid,Weiß,"Benutze: /Makeadmin <Spielername/ID> <Level>");

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

    Margarete Stokowski

  • Dann kommt dieser Error:


    Die Zeilen


    public OnPlayerConnect(playerid)
    {
    Zeile 267 new SpielerName[MAX_PLAYER_NAME],path[200]; ----> Zeile 267
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    format(path,sizeof(path),"/Spieler/%s.ini",SpielerName);
    ....


    ocmd:makeadmin(playerid,params[])
    {
    if(IsPlayerAnAdmin(playerid,5))
    {
    Zeile 497 new pID,level,string[128],string2[128],SpielerName[MAX_PLAYER_NAME]; ----> Zeile 497
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));

    if(sscanf(params,"ui",pID,level))return SendClientMessage(playerid,Weiß,"Benutze: /Makeadmin <Spielername/ID> <Level>"); {
    if(level<0||level>5)return SendClientMessage(playerid,Rot,"Ungültiges Adminlevel!");
    {
    if(!IsPlayerConnected(pID))return SendClientMessage(playerid,Rot,"Dieser Spieler ist nicht online!");
    SpielerInfo[pID][Adminlevel] = level;
    Zeile 505 format(string,sizeof(string),"[Info] %s hat dich auf das Adminlevel %i gesetzt.",SpielerName(playerid),level);
    format(string2,sizeof(string2),"Du hast %s auf das Adminlevel %i gesetzt.",SpielerName(pID),level);
    SendClientMessage(pID,Grün,string);
    SendClientMessage(playerid,Orange,string2);
    return 1;
    }
    }
    }
    else
    {
    SendClientMessage(playerid,Rot,"Du kannst diesen Befehl nicht benutzen!");
    return 1;
    }
    }

  • Zitat

    local variable "SpielerName" shadows a variable at a preceding level


    Du kannst kein Abbild einer Variable Lokal erstellen, wie du es momentan versuchst.


    Du hast es momentan in etwa so


    //irgendwo Oben
    new SpielerName[MAX_PLAYERS][MAX_PLAYER_NAME];


    //weiter unten
    public OnPlayerConnect(playerid)
    {
    new SpielerName[MAX_PLAYER_NAME];
    GetPlayerName(playerid,SpielerName,sizeof(SpielerName));
    //usw
    }


    Du kannst aber keine 2. Variable mit dem gleichen Namen erstellen.


    Du hast nun aber 2 Möglichkeiten


    1. Du löscht deine Lokale Variable
    und steuerst die richtige an
    Tipp:
    SpielerName[playerid]


    2. Du benennst deine Lokale Variable um
    und benutzt sie weiterhin ;)

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

    Margarete Stokowski