Well i find one bat its work very weird first of all its lets use that name if its have taken second bug its if i have created two account in me library Like Name And Name2 and i login as Name and type command /changename Test this system delete Name2 acc and create Test acc. Its so weird.
Code:
stock StripNewLine(string[])
{
new len = strlen(string);
if(string[0] == 0) return;
if((string[len - 1] == '\n') || (string[len - 1] == '\r'))
{
string[len - 1] = 0;
if(string[0]==0) return ;
if((string[len - 2] == '\n') || (string[len - 2] == '\r')) string[len - 2] = 0;
}
}
stock frename(oldname[], newname[])
{
if(!fexist(oldname)) return false;
new string[128], File

ld, File:neww;
old = fopen(oldname, io_read);
neww = fopen(newname, io_write);
while(fread(old, string))
{
StripNewLine(string);
format(string, sizeof(string), "%s\r\n", string);
fwrite(neww, string);
}
fclose(old);
fclose(neww);
fremove(oldname);
return true;
}
Code:
CMD:changename(playerid, params[])
{
new newname[MAX_PLAYER_NAME], file1[128], file2[128];
if(sscanf(params, "s[24]", newname)) return SendClientMessage(playerid, GREY, "Usage: /changename [New Username]");
if(strlen(newname) < 3 || strlen(newname) > MAX_PLAYER_NAME) return SendClientMessage(playerid, GREY, "Invalid username length.");
format(file2, sizeof(file2), "/Users/%s.ini", newname);
if(fexist(file2)) return SendClientMessage(playerid, GREY, "The specified username is already taken.");
format(file1, sizeof(file1), "/ZMA/Users/%s.ini", pName(playerid));
format(file2, sizeof(file2), "/ZMA/Users/%s.ini", newname);
frename(file1, file2);
SetPlayerName(playerid, newname);
format(file1, sizeof(file1), "You have changed your name to %s.", newname);
SendClientMessage(playerid, COLOR_WHITE, file1);
return 1;
}