SA-MP Forums Archive
Problem with cmd: /changename - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: SA-MP Scripting and Plugins (https://sampforum.blast.hk/forumdisplay.php?fid=8)
+--- Forum: Scripting Help (https://sampforum.blast.hk/forumdisplay.php?fid=12)
+---- Forum: Help Archive (https://sampforum.blast.hk/forumdisplay.php?fid=89)
+---- Thread: Problem with cmd: /changename (/showthread.php?tid=105146)



Problem with cmd: /changename - kukars22 - 28.10.2009

Hello, everyone.

I got a problem with /changename command.

Код:
if(strcmp(cmd, "/changename", true) == 0)
	{
	  GetPlayerName(playerid, sendername, sizeof(sendername));
		new tmpp[256];
		tmpp = strtok(cmdtext, idx);
		if(!strlen(tmpp))
		{
			SendClientMessage(playerid, COLOR_DBLUE, "PAREIZA SINTAKSE: /changename [playerid] [new nick]");
			return 1;
		}
		giveplayerid = strval(tmpp);
		tmp = strtok(cmdtext, idx);
		GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
		GetPlayerName(playerid, sendername, sizeof(sendername));
		if(IsPlayerConnected(playerid))
		{
		  if(PlayerInfo[playerid][pAdmin] >= 1337)
		  {
		    if(IsPlayerConnected(giveplayerid))
		    {
					SetPlayerName(giveplayerid, tmp);
					format(string, sizeof(string), "AdmCMD: %s(%i) has changed Your name to %s", sendername, playerid, tmp);
					SendClientMessage(giveplayerid, COLOR_DBLUE, string);
					format(string, sizeof(string), "AdmCMD: You have changed ID %i's name to %s", giveplayerid, tmp);
					SendClientMessage(playerid, COLOR_DBLUE, string);
					format(string, 256, "AdmWarning: %s has changed %s's his name to %s.", sendername,giveplayer, tmp);
					ABroadCast(COLOR_YELLOW,string,1);
				}
				else
				{
				  format(string, sizeof(string), "%d is not an active player.", giveplayerid);
					SendClientMessage(playerid, COLOR_RED, string);
				}
			}
			else
			{
			  SendClientMessage(playerid, COLOR_RED, "Tu neesi administrators !");
			}
		}
		else
		{
		  SendClientMessage(playerid, COLOR_RED, "Tu neesi ielogojies!");
		}
	 	return 1;
	}
Here is a command, but the thing is... When I change someones name, everything seems okey at the start, but after restart in users folder is OLD name + new one, so I got 2 accounts. They are same, just other names. How to make, than it Renames this file, not create new one.




Sorry for bad english.


Re: Problem with cmd: /changename - kukars22 - 28.10.2009

Anyone?


Re: Problem with cmd: /changename - dice7 - 28.10.2009

Just use fremove to delete the old file
https://sampwiki.blast.hk/wiki/Fremove


Re: Problem with cmd: /changename - kukars22 - 28.10.2009

This is too hard for me, I even dont know in witch tags I should put that fremove.


Re: Problem with cmd: /changename - JonyAvati - 28.10.2009

Quote:
Originally Posted by kukars22
Hello, everyone.

I got a problem with /changename command.

Код:
if(strcmp(cmd, "/changename", true) == 0)
	{
	  GetPlayerName(playerid, sendername, sizeof(sendername));
		new tmpp[256];
		tmpp = strtok(cmdtext, idx);
		if(!strlen(tmpp))
		{
			SendClientMessage(playerid, COLOR_DBLUE, "PAREIZA SINTAKSE: /changename [playerid] [new nick]");
			return 1;
		}
		giveplayerid = strval(tmpp);
		tmp = strtok(cmdtext, idx);
		GetPlayerName(giveplayerid, giveplayer, sizeof(giveplayer));
		GetPlayerName(playerid, sendername, sizeof(sendername));
		if(IsPlayerConnected(playerid))
		{
		  if(PlayerInfo[playerid][pAdmin] >= 1337)
		  {
		    if(IsPlayerConnected(giveplayerid))
		    {
					SetPlayerName(giveplayerid, tmp);
					format(string, sizeof(string), "AdmCMD: %s(%i) has changed Your name to %s", sendername, playerid, tmp);
					SendClientMessage(giveplayerid, COLOR_DBLUE, string);
					format(string, sizeof(string), "AdmCMD: You have changed ID %i's name to %s", giveplayerid, tmp);
					SendClientMessage(playerid, COLOR_DBLUE, string);
					format(string, 256, "AdmWarning: %s has changed %s's his name to %s.", sendername,giveplayer, tmp);
					ABroadCast(COLOR_YELLOW,string,1);
				}
				else
				{
				  format(string, sizeof(string), "%d is not an active player.", giveplayerid);
					SendClientMessage(playerid, COLOR_RED, string);
				}
			}
			else
			{
			  SendClientMessage(playerid, COLOR_RED, "Tu neesi administrators !");
			}
		}
		else
		{
		  SendClientMessage(playerid, COLOR_RED, "Tu neesi ielogojies!");
		}
	 	return 1;
	}
Here is a command, but the thing is... When I change someones name, everything seems okey at the start, but after restart in users folder is OLD name + new one, so I got 2 accounts. They are same, just other names. How to make, than it Renames this file, not create new one.




Sorry for bad english.
Check in the functions list if there is any function to "SetFileName" or something like that.


Re: Problem with cmd: /changename - kukars22 - 28.10.2009

I found a better command:

Код:
if(!strcmp("/setname", cmd, true))
	{
	if (PlayerInfo[playerid][pAdmin] < 1337) return SendClientMessage(playerid, COLOR_GRAD2, "  Restricted");
	tmp = strtok(cmdtext,idx);
	if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /setname [id] [newname]");
	giveplayerid = ReturnUser(tmp);
	if(!IsPlayerConnected(giveplayerid)) return SendClientMessage(playerid, COLOR_GRAD2, "Invalid Playerid!");
	new str[128],gpname[MAX_PLAYER_NAME];
	GetPlayerName(giveplayerid, gpname, MAX_PLAYER_NAME);
	format(str, 128, "users/%s.ini", gpname);
	if(!fexist(str)) return SendClientMessage(playerid, COLOR_YELLOW, "The person havent an account on this server");
	tmp = strtok(cmdtext,idx);
	if(!strlen(tmp)) return SendClientMessage(playerid, COLOR_GRAD2, "USAGE: /setname [id] [newname]");
	new str2[128];
	format(str2,128,"users/%s.ini",tmp);
	frename(str,str2);
	new pname[MAX_PLAYER_NAME];
	GetPlayerName(playerid, pname, MAX_PLAYER_NAME);
	SetPlayerName(giveplayerid,tmp);
	format(string, sizeof(string), "[NameChange] %s changed name of \"%s\" to \"%s\"",pname,gpname,tmp);
	return 1;
	}
But the thing is, it shows me than frename is undefined symbol, How to define it?


Re: Problem with cmd: /changename - MadeMan - 28.10.2009

Put these functions somewhere in your script

pawn Код:
stock fcopy(oldname[],newname[])
{
    new File:ohnd,File:nhnd;
    if (!fexist(oldname))
    {
        return 0;
    }
    ohnd=fopen(oldname,io_read);
    nhnd=fopen(newname,io_write);
    new buf2[1];
    for (new i=flength(ohnd);i>0;i--)
    {
        fputchar(nhnd, fgetchar(ohnd, buf2[0],false),false);
    }
    fclose(ohnd);
    fclose(nhnd);
    return 1;
}

stock frename(oldname[],newname[])
{
    if (!fexist(oldname))
    {
        return 0;
    }
    fremove(newname);
    if (!fcopy(oldname,newname))
    {
        return 0;
    }
    fremove(oldname);
    return 1;
}



Re: Problem with cmd: /changename - (.Aztec); - 28.10.2009

There's also this one:

pawn Код:
stock frename(oldname[],newname[]) {
  if (!fexist(oldname)) return false;
  fremove(newname);
  if (!fcopy(oldname,newname)) return false;
  fremove(oldname);
  return true;
}



Re: Problem with cmd: /changename - kukars22 - 28.10.2009

Quote:
Originally Posted by sizeof(Sky));
There's also this one:

pawn Код:
stock frename(oldname[],newname[]) {
  if (!fexist(oldname)) return false;
  fremove(newname);
  if (!fcopy(oldname,newname)) return false;
  fremove(oldname);
  return true;
}
undefined symol: fcopy


Re: Problem with cmd: /changename - kukars22 - 28.10.2009

Quote:
Originally Posted by MadeMan
Put these functions somewhere in your script

pawn Код:
stock fcopy(oldname[],newname[])
{
    new File:ohnd,File:nhnd;
    if (!fexist(oldname))
    {
        return 0;
    }
    ohnd=fopen(oldname,io_read);
    nhnd=fopen(newname,io_write);
    new buf2[1];
    for (new i=flength(ohnd);i>0;i--)
    {
        fputchar(nhnd, fgetchar(ohnd, buf2[0],false),false);
    }
    fclose(ohnd);
    fclose(nhnd);
    return 1;
}

stock frename(oldname[],newname[])
{
    if (!fexist(oldname))
    {
        return 0;
    }
    fremove(newname);
    if (!fcopy(oldname,newname))
    {
        return 0;
    }
    fremove(oldname);
    return 1;
}
Thanks, its working now.