Whitelist System 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
  • Hallo zusammen, habe einen /setwhitelist Befehl:
    ocmd:setwhitelist(playerid,params[])
    {
    new name;
    new string[100];
    new string2[100];
    format(string,sizeof string,"/Accounts/%s.ini",getname(playerid));
    new white[100];
    format(white,sizeof white,"/Whitelist/%s.ini",name);
    if(dini_Int(string,"Admin") <= 3)
    {
    SendClientMessage(playerid,ROT,"Du bist kein Administrator !");
    }
    if(sscanf(params,"s",name)) return SendClientMessage(playerid,ROT,"[INFO] /setwhitelist [NAME]");
    if(dini_Bool(white,"White") == true)
    {
    SendClientMessage(playerid,ROT,"Die Person ist bereits auf der Whitelist !");
    }
    else
    {
    dini_Create(white);
    dini_BoolSet(white,"White",true);
    new text[128];
    format(text,sizeof text,"Du hast %s erfolgreich auf die Whitelist gesetzt !",name);
    SendClientMessage(playerid,BLAU,text);
    }
    return 1;
    }
    Wenn ich den dann benutze schau ich bei scriptfiles im Whitelist Ordner ist dort eine " .ini" Also ohne Namen, woran liegt das ?
    Danke im Voraus !
    MfG
    Audi

  • Ja, aber du musst von der pID den Namen doch herausfinden.
    Mach das mal so:
    ocmd:setwhitelist(playerid,params[])
    {
    new name[MAX_PLAYER_NAME],pID;
    GetPlayerName(pID,name,sizeof(name));
    new string[100];
    new string2[100];
    format(string,sizeof string,"/Accounts/%s.ini",getname(playerid));
    new white[100];
    format(white,sizeof white,"/Whitelist/%s.ini",name);
    if(dini_Int(string,"Admin") <= 3)
    {
    SendClientMessage(playerid,ROT,"Du bist kein Administrator !");
    }
    if(sscanf(params,"u",pID)) return SendClientMessage(playerid,ROT,"[INFO] /setwhitelist [Playerid]");
    if(dini_Bool(white,"White") == true)
    {
    SendClientMessage(playerid,ROT,"Die Person ist bereits auf der Whitelist !");
    }
    else
    {
    dini_Create(white);
    dini_BoolSet(white,"White",true);
    new text[128];
    format(text,sizeof text,"Du hast %s erfolgreich auf die Whitelist gesetzt !",name);
    SendClientMessage(playerid,BLAU,text);
    }
    return 1;
    }

  • Ja, aber wenn du nur new name; machst, weiß der Server erstens nicht, wie der Spieler heißt, da du es nicht ausliest. Zweitens, du musst doch eine Variable haben, die auf dem Spieler gerichtet ist, den du eintragen möchtest, oder verstehe ich da gerade was falsch?

  • Also es soll so sein: ich gebe den befehl und ein string ein und es wird dann eine .ini namens string erstellt. was soll so schwer daran zu verstehen sein. habe jetzt new name[24]; aber es geht immernoch nicht.

  • Achso, tut mir Leid, aber da muss man nicht gleich unhöflich werden, denn ich versuche dir zu helfen.


    ocmd:setwhitelist(playerid,params[])
    {
    new name[50];
    new string[100];
    new string2[100];
    format(string,sizeof string,"/Accounts/%s.ini",getname(playerid));
    new white[100];
    format(white,sizeof white,"/Whitelist/%s.ini",name);
    if(dini_Int(string,"Admin") <= 3)
    {
    SendClientMessage(playerid,ROT,"Du bist kein Administrator !");
    }
    if(sscanf(params,"s",name)) return SendClientMessage(playerid,ROT,"[INFO] /setwhitelist [NAME]");
    if(dini_Bool(white,"White") == true)
    {
    SendClientMessage(playerid,ROT,"Die Person ist bereits auf der Whitelist !");
    }
    else
    {
    dini_Create(white);
    dini_BoolSet(white,"White",true);
    new text[128];
    format(text,sizeof text,"Du hast %s erfolgreich auf die Whitelist gesetzt !",name);
    SendClientMessage(playerid,BLAU,text);
    }
    return 1;
    }

  • Ja sorry :D @ Voxa:
    Nein, es gibt kein dini_Open oder so :D Um ein Wert auszulesen einfach Dini_Int,Dini_Get,Dini_Float oder Dini_Bool
    um in etwas einzusetzen kommt einfach an Set noch dran.
    @ BaRkS ja so habe ich zurzeit mein Code:
    ocmd:setwhitelist(playerid,params[])
    {
    new name[24];
    new string[100];
    format(string,sizeof string,"/Accounts/%s.ini",getname(playerid));
    new white[100];
    format(white,sizeof white,"/Whitelist/%s.ini",name);
    if(dini_Int(string,"Admin") <= 3)
    {
    SendClientMessage(playerid,ROT,"Du bist kein Administrator !");
    }
    if(sscanf(params,"s",name)) return SendClientMessage(playerid,ROT,"[INFO] /setwhitelist [NAME]");
    if(dini_Bool(white,"White") == 1)
    {
    SendClientMessage(playerid,ROT,"Die Person ist bereits auf der Whitelist !");
    }
    else
    {
    dini_Create(white);
    dini_BoolSet(white,"White",true);
    new text[128];
    format(text,sizeof text,"Du hast %s erfolgreich auf die Whitelist gesetzt !",name);
    SendClientMessage(playerid,BLAU,text);
    }
    return 1;
    }
    Damit funktionierts nicht.

  • erst sscanf abfragen, dann auslesen, probiers so

    ocmd:setwhitelist(playerid,params[])
    {
    new name[24],string[100],white[100],text[128];
    format(string,sizeof string,"/Accounts/%s.ini",getname(playerid));
    format(white,sizeof white,"/Whitelist/%s.ini",name);
    if(dini_Int(string,"Admin") <= 3)return SendClientMessage(playerid,ROT,"Du bist kein Administrator !");
    if(sscanf(params,"s",name)) return SendClientMessage(playerid,ROT,"[INFO] /setwhitelist [NAME]");
    if(dini_Bool(white,"White") == 1)return SendClientMessage(playerid,ROT,"Die Person ist bereits auf der Whitelist !");
    dini_Create(white);
    dini_BoolSet(white,"White",true);
    format(text,sizeof text,"Du hast %s erfolgreich auf die Whitelist gesetzt !",name);
    SendClientMessage(playerid,BLAU,text);
    return 1;
    }

  • wenn du den code siehst, siehst du auch das erst den namen eingeben musst -> sscanf
    dann erst den pfad formatieren, also so

    ocmd:setwhitelist(playerid,params[])
    {
    new name[24],string[100],white[100],text[128];
    format(string,sizeof string,"/Accounts/%s.ini",getname(playerid));
    if(dini_Int(string,"Admin") <= 3)return SendClientMessage(playerid,ROT,"Du bist kein Administrator !");
    if(sscanf(params,"s",name)) return SendClientMessage(playerid,ROT,"[INFO] /setwhitelist [NAME]");
    if(dini_Bool(white,"White") == 1)return SendClientMessage(playerid,ROT,"Die Person ist bereits auf der Whitelist !");
    format(white,sizeof white,"/Whitelist/%s.ini",name);
    dini_Create(white);
    dini_BoolSet(white,"White",true);
    format(text,sizeof text,"Du hast %s erfolgreich auf die Whitelist gesetzt !",name);
    SendClientMessage(playerid,BLAU,text);
    return 1;
    }