Hilfe bei Admin-System

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 Breadfish Forum,


    Ich bin im Moment am Scripten lernen und habe ein paar Probleme.
    Was stimmt hier nicht ?


    ocmd:admintest(playerid,params[])
    {



    if(isAdmin(playerid, 2000))
    {
    SendClientMessage(playerid, COLOR_LIGHTRED,"Info: Du scheinst wohl Admin zu sein!");
    }
    else
    {
    SendClientMessage(playerid, COLOR_LIGHTRED,"Info: Du bist wohl kein Admin!");
    }




    }




    Hier noch das isAdmin


    stock isAdmin(playerid, a_level)
    {
    if(sSpieler[playerid][AdminLevel] >= a_level)
    {
    return 1;
    }
    else
    {

    return 0;
    }


    }

    Zitat von Sir Paul McCartney: «Ich glaube an den friedlichen Protest, und keine Tiere zu essen ist ein solch gewaltfreier Protest.»



  • Es scheitert dich schon an deiner Formatierung, nein spaß bei seite ^^..


    ocmd:admintest(playerid)
    {
    if(isAdmin(playerid, 2000)) SendClientMessage(playerid, COLOR_LIGHTRED, "Info: Du scheinst wohl Admin zu sein!");
    else if(!isAdmin(playerid, 2000))SendClientMessage(playerid, COLOR_LIGHTRED, "Info: Du bist wohl kein Admin!");
    return true;
    }


    stock isAdmin(playerid, a_level)
    {
    if(sSpieler[playerid][AdminLevel] >= a_level)return true;
    return false;
    }


    Aber vielleicht veratest du uns noch was genau nicht Funktioniert.


    mfg :thumbup:

  • Naja... nehmen wir an ich habe einen Befehl und lese den Adminrang aus...


    Dann gehe ich ingame und der Befehl geht irgendwie nicht ^^

    Zitat von Sir Paul McCartney: «Ich glaube an den friedlichen Protest, und keine Tiere zu essen ist ein solch gewaltfreier Protest.»



  • Ich nehme an dort steht "Unknown Command".
    Deswegen schreibe den Befehl mal wie in meinem Beispiel!


    mfg :thumbup:



    Was habe ich da genau falsch gemacht ?


    :D



    // Edit


    Ich habe das jetzt so gemacht, wie das oben steht...
    Kommt immer noch das falsche :D

    Zitat von Sir Paul McCartney: «Ich glaube an den friedlichen Protest, und keine Tiere zu essen ist ein solch gewaltfreier Protest.»



  • Kann es sein, dass ich irgendwie sein Speicherungssystem falsch habe... ?




    stock SpielerSpeichern(playerid)
    {
    new Spieler[64],Spieler2[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname, sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    format(Spieler2,sizeof(Spieler2),"/Userdaten/%s.txt",Sname);

    if(dini_Exists(Spieler))
    {

    dini_IntSet(Spieler,"AdminLevel", sSpieler[playerid][AdminLevel]);
    dini_IntSet(Spieler,"Level", sSpieler[playerid][Level]);
    dini_IntSet(Spieler,"Fraktion", sSpieler[playerid][Fraktion]);



    }
    if(dini_Exists(Spieler2))
    {

    dini_Set(Spieler2,"RegTime", sLog[playerid][RegTime]);

    }


    return 1;


    }




    stock SpielerLaden(playerid)
    {


    new Spieler[64], Spieler2[64];
    new Sname[MAX_PLAYER_NAME];
    GetPlayerName(playerid,Sname, sizeof(Sname));
    format(Spieler,sizeof(Spieler),"/Spieler/%s.txt",Sname);
    format(Spieler2,sizeof(Spieler2),"/Userdaten/%s.txt",Sname);


    if(dini_Exists(Spieler))
    {
    SetPlayerScore(playerid, dini_Get(Spieler,"Level"));
    sSpieler[playerid][AdminLevel] = dini_Get(Spieler,"AdminLevel")
    sSpieler[playerid][Level] = dini_Get(Spieler,"Level")
    sSpieler[playerid][Fraktion] = dini_Get(Spieler,"Fraktion")


    }
    if(dini_Exists(Spieler2))
    {
    sLog[playerid][RegTime] = dini_Get(Spieler2,"RegTime")



    }



    return 1;



    }



    stock SpielerReset(playerid)
    {
    sSpieler[playerid][AdminLevel] = 0;
    sSpieler[playerid][Level] = 0;
    sSpieler[playerid][Fraktion] = 0;
    return 1;
    }


    Zitat von Sir Paul McCartney: «Ich glaube an den friedlichen Protest, und keine Tiere zu essen ist ein solch gewaltfreier Protest.»



  • Zitat

    SetPlayerScore(playerid, dini_Get(Spieler,"Level"));
    sSpieler[playerid][AdminLevel] = dini_Get(Spieler,"AdminLevel")
    sSpieler[playerid][Level] = dini_Get(Spieler,"Level")
    sSpieler[playerid][Fraktion] = dini_Get(Spieler,"Fraktion")


    Eigentlich kannst du sowas gar nicht Kompilieren.


    mfg :thumbup:

  • Ich habe dir das mal etwas ausgebessert. Vergleiche bitte meine Version mit deiner, damit du die Unterschiede erkennst und sie nächstes mal anwenden kannst.
    Achte vor allem auf die Einrückung deiner Codes.


    stock SpielerSpeichern(playerid)
    {
    new path[64], pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);

    //Pfad 1
    format(path,sizeof(path),"/Spieler/%s.txt",pname);
    if(dini_Exists(path))
    {
    dini_IntSet(path,"AdminLevel", sSpieler[playerid][AdminLevel]);
    dini_IntSet(path,"Level", sSpieler[playerid][Level]);
    dini_IntSet(path,"Fraktion", sSpieler[playerid][Fraktion]);
    }

    //Pfad 2
    format(path,sizeof(path),"/Userdaten/%s.txt",pname);
    if(dini_Exists(path))
    {
    dini_Set(path,"RegTime", sLog[playerid][RegTime]);
    }
    return 1;
    }


    stock SpielerLaden(playerid)
    {
    new path[64], pname[MAX_PLAYER_NAME];
    GetPlayerName(playerid, pname, MAX_PLAYER_NAME);

    //Pfad 1
    format(path,sizeof(path),"/Spieler/%s.txt",pname);
    if(dini_Exists(path))
    {
    SetPlayerScore(playerid, dini_Int(path,"Level"));
    sSpieler[playerid][AdminLevel] = dini_Int(path,"AdminLevel");
    sSpieler[playerid][Level] = dini_Int(path,"Level");
    sSpieler[playerid][Fraktion] = dini_Int(path,"Fraktion");
    }

    //Pfad 2
    format(path,sizeof(path),"/Userdaten/%s.txt",pname);
    if(dini_Exists(path))
    {
    format(sLog[playerid][RegTime], 11, dini_Get(path,"RegTime"));
    }
    return 1;
    }


    stock SpielerReset(playerid)
    {
    sSpieler[playerid][AdminLevel] = 0;
    sSpieler[playerid][Level] = 0;
    sSpieler[playerid][Fraktion] = 0;
    return 1;
    }


    Anschließend kannst du Folgendes verwenden:
    ocmd:admintest(playerid)
    {
    if(isAdmin(playerid, 1)) SendClientMessage(playerid, COLOR_LIGHTRED, "Info: Du scheinst wohl Admin zu sein!");
    else SendClientMessage(playerid, COLOR_LIGHTRED, "Info: Du bist wohl kein Admin!");
    return 1;
    }


    stock isAdmin(playerid, a_level)
    {
    if(sSpieler[playerid][AdminLevel] >= a_level) return 1;
    return 0;
    }


    Natürlich setze ich voraus, dass du SpielerLaden und SpielerSpeichern auch im Code aufrufst (Connect / Disconnect).