22.12.2016, 20:53
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:old, 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; }