ocmd:makeadmin funktioniert nicht.

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
  • Tag, ich scripte gerade einen Server und bin gerade bei dem /makeadmin Befehl, jedoch klappt er nicht warum?
    ocmd:makeadmin(playerid,params[])
    {
    new string [128];
    if(!IstSpielerAdmin(playerid,5))
    {
    return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang, scheint nicht hoch genug zu sein.");
    }
    new pID, rank, sendername[MAX_PLAYER_NAME], anderername[MAX_PLAYER_NAME];
    if(sscanf(params,"ui",pID,rank))
    {
    return SendClientMessage(playerid,COLOR_RED,"Benutzung: /makeadmin [ID] [Rang]");
    }
    if(rank>5)
    {
    return SendClientMessage(playerid,COLOR_RED,"Bitte einen gültigen Rang angeben.");
    }
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,anderername,sizeof(anderername));
    SetPVarInt(pID,"Adminlevel",rank);
    format(string,sizeof(string),"Du hast %s sein Adminlevel auf %d gesetzt!",anderername,rank);
    SendClientMessage(playerid,gelb,string);
    format(string,sizeof(string),"%s hat dich dein Adminlevel auf %d gesetzt!",sendername,rank);
    SendClientMessage(playerid,gelb,string);
    SpielerSpeichern(pID);
    return 1;
    }



    Hier sind SpielerSpeichern und SpielerLaden


    stock AccountLaden(playerid)
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    SetPlayerScore(playerid,dini_Int(Playerdatei,"Level"));
    Spieler[playerid][Adminlevel] = dini_Int(Playerdatei,"Adminlevel");
    Spieler[playerid][Haus] = dini_Int(Playerdatei,"Haus");
    Spieler[playerid][Skin] = dini_Int(Playerdatei,"Skin");
    GivePlayerMoney(playerid,dini_Int(Playerdatei,"Geld"));
    SetPVarInt(playerid,"Eingeloggt",1);
    return 1;
    }


    stock SpielerSpeichern(playerid)
    {
    if(GetPVarInt(playerid,"Eingeloggt") == 1)
    {
    new Playerdatei[128];
    new name[MAX_PLAYER_NAME];
    GetPlayerName(playerid,name,sizeof(name));
    format(Playerdatei,sizeof(Playerdatei),"/Accounts/%s.ini",name);
    dini_IntSet(Playerdatei,"Level", GetPlayerScore(playerid));
    dini_IntSet(Playerdatei, "Adminlevel", Spieler[playerid][Adminlevel]);
    dini_IntSet(Playerdatei, "Haus", Spieler[playerid][Haus]);
    dini_IntSet(Playerdatei, "Skin", Spieler[playerid][Skin]);
    dini_IntSet(Playerdatei, "Geld", GetPlayerMoney(playerid));
    }
    }
    Gruß, TheDome

  • ocmd:makeadmin(playerid,params[])
    {
    new string [128];
    if(!IstSpielerAdmin(playerid,5)) //Unnötig, pls direkt mit Arrays / PVars abfragen.
    {
    return SendClientMessage(playerid,COLOR_RED,"Dein Adminrang, scheint nicht hoch genug zu sein."); //direkt hinter abfrage. (Wie ich es jetzt immer unten machen werde
    }
    new pID, rank, sendername[MAX_PLAYER_NAME], anderername[MAX_PLAYER_NAME];
    if(sscanf(params,"ui",pID,rank) return SendClientMessage(playerid,COLOR_RED,"Benutzung: /makeadmin [ID] [Rang]");
    if(rank>5) return SendClientMessage(playerid,COLOR_RED,"Bitte einen gültigen Rang angeben.");
    GetPlayerName(playerid,sendername,sizeof(sendername));
    GetPlayerName(pID,anderername,sizeof(anderername));
    SetPVarInt(pID,"Adminlevel",rank);
    format(string,sizeof(string),"Du hast %s sein Adminlevel auf %d gesetzt!",anderername,rank);
    SendClientMessage(playerid,gelb,string);
    format(string,sizeof(string),"%s hat dich dein Adminlevel auf %d gesetzt!",sendername,rank);
    return SendClientMessage(playerid,gelb,string), SpielerSpeichern(pID);
    }


    Jetzt ist natürlich die Frage, ob du irgendeine Rückanfrage bekommst.
    Sprich, bekommst du eine Nachricht, passiert gar nichts?
    -> Evnt. dann printen


    L.G. ;)

  • Da du sowieso überall dort mit Arrays arbeitest, würde ich sagen du änderst in deinem Befehl von:
    SetPVarInt(pID,"Adminlevel",rank);


    zu:
    Spieler[playerid][Adminlevel] = rank;


    L.G. ;)


    Dankeschön, hat geklappt :)
    bzw. dann ist das hier ja auch falsch
    if(strcmp(cmdtext,"/stats",true)==0)
    {
    new string[128];
    format(string,sizeof(string),"[Name: %s] [Level: %i] [Adminlevel: %i] [Geld: %i]",SpielerName(playerid),GetPlayerScore(playerid),GetPVarInt(playerid, "Adminlevel"),GetPlayerMoney(playerid));
    SendClientMessage(playerid,gelb,string);
    return 1;
    }


    Da zeit er Admin als 0 an, das hat dann ja auch was damit zu tun oder?

  • Ich bezweifel,dass das klappt.

    Spoiler anzeigen
    Zumindest dann nicht,wenn du es nicht an der selber anwendest.

    Zitat

    Spieler[playerid][Adminlevel] = rank;


    Bist du dir wirklich sicher,dass du playerid als index verwenden möchtest und nicht pID ?


    Zitat

    Da zeit er Admin als 0 an, das hat dann ja auch was damit zu tun oder?


    Ja.
    Denn:
    Spieler[ X ][Adminlevel] != GetPVarInt( X , "Adminlevel" );