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
Whitelist System Problem
- -audi-
- Geschlossen
- Erledigt
-
-
-
Wieso pID ? Das ist doch keine ID die er einträgt. Der muss den Namen eingeben nur den Namen.
-
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;
} -
Der Spieler, den ich als Admin auf die Whitelist eintrage, ist nicht online. Das ist doch der Sinn. Wenn man nicht auf der Whitelist ist, kommt man nicht auf den Server.
-
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;
} -
Schon mal dran gedacht das dini auch Öffnen, Schreiben und Lesen muss?
Sonst geht da garnichts -
Ja sorry @ Voxa:
Nein, es gibt kein dini_Open oder so 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. -
-
Was passiert denn? Gar nichts?
-
Wenn du es compilen kannst und ingame kommt, setz mal prints bei jedem vorgang rein.
dann können wir wissen woran es liegt. -
Mach mal ganz am Ende des Befehles:
printf("%s",name); -
Ja habe das gemacht, der Name den ich eingegeben habe wird geprintet.
-
Hast du auch ein Ordner erstellt, der "Whitelist" heißt?
-
Ja es wird ja eine .ini erstellt jedoch wird der Name davor nicht angezeigt.
-
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;
} -
Hey Funktioniert immer noch nicht. es wird eine .ini erstellt aber ohne Namen.
-
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;
} -
Vielen Dank ! Es hat funktioniert.
-
-
breadfish.de
Hat das Thema geschlossen.