help +rep
#1

Код:
CMD:setname(playerid,params[]){
	if(admin[playerid]<4) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFFF}You need admin level 4 to use this command");
	new id,name[28], text[500], newpw[500];
	if(sscanf(params,"uss",id,name,newpw)) return SendClientMessage(playerid,COLOR_RED,"USAGE:{FFFFFF}/setname [id] [name] [password]");
	if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFFF}Player not connected");
        new pw[129];
        WP_Hash(pw,sizeof(pw),newpw);
        if(!dini_Exists(Account(name)))
        {
        SetPlayerName(id,name);
		dini_Create(Account(id));
        dini_Set(Account(id),"password",pw);
        dini_IntSet(Account(id),"money",0);
        dini_IntSet(Account(id),"color",GetPlayerColor(playerid));
        dini_IntSet(Account(id),"score",0);
        dini_IntSet(Account(id),"admin",0);
  }
      else if(dini_Exists(Account(name)))
	  {
	  }
return 1;
}
errors on if(dini_Exists(Account(name)))
and if(!dini_Exists(Account(name))) please help

EDIT errors show only when I put (name) if I put (id) it's fine but i need name
Reply
#2

Код:
CMD:setname(playerid,params[]){
	if(admin[playerid]<4) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFFF}You need admin level 4 to use this command");
       GetPlayerName(id, name, MAX_PLAYER_NAME);
	new id,name[28], text[500], newpw[500];
	if(sscanf(params,"uss",id,name,newpw)) return SendClientMessage(playerid,COLOR_RED,"USAGE:{FFFFFF}/setname [id] [name] [password]");
	if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFFF}Player not connected");
        new pw[129];
        WP_Hash(pw,sizeof(pw),newpw);
        if(!dini_Exists(Account(name)))
        {
        SetPlayerName(id,name);
		dini_Create(Account(id));
        dini_Set(Account(id),"password",pw);
        dini_IntSet(Account(id),"money",0);
        dini_IntSet(Account(id),"color",GetPlayerColor(playerid));
        dini_IntSet(Account(id),"score",0);
        dini_IntSet(Account(id),"admin",0);
  }
      else if(dini_Exists(Account(name)))
	  {
	  }
return 1;
}
try this
Reply
#3

CMDetname(playerid,params[]){
new id ,name[28], text[500], newpw[500];
if(admin[playerid]<4) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFF F}You need admin level 4 to use this command");
GetPlayerName(id, name, MAX_PLAYER_NAME);

if(sscanf(params,"uss",id,name,newpw)) return SendClientMessage(playerid,COLOR_RED,"USAGE:{FFFFF F}/setname [id] [name] [password]");
if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFF F}Player not connected");
new pw[129];
WP_Hash(pw,sizeof(pw),newpw);

if(!dini_Exists(Account(name)))
{
SetPlayerName(id,name);
dini_Create(Account(id));
dini_Set(Account(id),"password",pw);
dini_IntSet(Account(id),"money",0);
dini_IntSet(Account(id),"color",GetPlayerColor(pla yerid));
dini_IntSet(Account(id),"score",0);
dini_IntSet(Account(id),"admin",0);
}
else if(dini_Exists(Account(name)))
{
}
return 1;}

the bold ones have error
C:\Users\John\Desktop\ESDS 0.3.7 NEW 2\gamemodes\ESDS.pwn(5645) : error 035: argument type mismatch (argument 1)
C:\Users\John\Desktop\ESDS 0.3.7 NEW 2\gamemodes\ESDS.pwn(5655) : error 035: argument type mismatch (argument 1)
Reply
#4

Been a while since I've touched DINI but that isn't how it's done.

You need to format and check the file location to see if it exists. For example:

PHP код:
new fileName[90]; 
format(fileNamesizeof(fileName), "Accounts/%s.ini"name);
if(
dini_Exists(fileName))
{
   continue...
}
else
{
   continue...

Curious, why're you checking if their file exists?

The only way to be on the server is if they're registered n their file exists, right?
Reply
#5

because if it exists, it should not allow the admin to use this command because the name would be already taken
Reply
#6

Quote:
Originally Posted by [SU]Spartan
Посмотреть сообщение
because if it exists, it should not allow the admin to use this command because the name would be already taken
You're on the right track there.
Reply
#7

Код:
CMD:setname(playerid,params[]){
	new id ,name[28], newpw[500];

	if(admin[playerid]<4) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFFF}You need admin level 4 to use this command");
    GetPlayerName(id, name, MAX_PLAYER_NAME);

	 new fileName[90];
     format(fileName, sizeof(fileName), "users/%s.ini", name);

	if(sscanf(params,"uss",id,name, newpw)) return SendClientMessage(playerid,COLOR_RED,"USAGE:{FFFFFF}/setname [id] [name] [password]");
	if(!IsPlayerConnected(id)) return SendClientMessage(playerid,COLOR_RED,"ERROR:{FFFFFF}Player not connected");

 	new pw[129];
 	WP_Hash(pw,sizeof(pw), newpw);

		if(!dini_Exists(fileName))
        {
        SetPlayerName(id,name);
		dini_Create(Account(id));
        dini_Set(Account(id),"password", pw);
        dini_IntSet(Account(id),"money",0);
        dini_IntSet(Account(id),"color",GetPlayerColor(playerid));
        dini_IntSet(Account(id),"score",0);
        dini_IntSet(Account(id),"admin",0);
 		}
	      else if(dini_Exists(fileName))
		  {
		  SCM(pid, -1, "username already taken");
		  }
return 1;}
it works, but, when I do /setname ingame it always says that the username is taken :/ please help me someone
Reply
#8

Format the file's name after you have checked if id is a valid player
Reply


Forum Jump:


Users browsing this thread: 4 Guest(s)