Help [+Rep]
#1

This my code changename it having little problem i using it fine but i must enter name 3 times to change name :-/
Sorry i bad english

I mean if players use this command must be 3 times to enter and it will change players name i want only 1 time enter name and change it.

example:
/changename PlayerGod Enter 1 time not work
/changename PlayerGod Enter 2 time not work
/changename PlayerGod Enter 3 time working

So i want only 1 time to changename pleas check this code below, Thank you.

pawn Код:
CMD:changename(playerid, params[])
{
    new newname[24], newnamecheck[128], oldnamecheck[128];
    new invnameold[128], invnamenew[128];
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login to use this.");
    if(Player[playerid][pCash] < 10) return SendClientMessage(playerid, 0x4186B0AA, "You cannot afford to change name. (Cost: $10.00)");
    if(sscanf(params,"s[24]", newname)) return SendClientMessage(playerid, COLOR_BLUE5, "Usage: /changename [new name]");
    if(strlen(newname) < 3 )
    {
        SendClientMessage(playerid, COLOR_BLUE5, "New name must be between 3 and 24 characters.");
        return 1;
    }
    if(strlen(newname) > 24)
    {
        SendClientMessage(playerid, COLOR_BLUE5, "New name must be between 3 and 24 characters.");
        return 1;
    }
    format(oldnamecheck, sizeof(oldnamecheck), "Users/%s.ini", pName(playerid));
    if(fexist(oldnamecheck)) return fremove(oldnamecheck);
    format(newnamecheck, sizeof(newnamecheck), "Users/%s.ini", newname);
    if(fexist(newnamecheck)) return SendClientMessage(playerid,  COLOR_BLUE5, "This name is already taken. Please choose another.");
    frename(oldnamecheck, newnamecheck);
    format(invnameold, sizeof(invnameold), "Inventory/%s.ini", pName(playerid));
    if(fexist(invnameold)) return fremove(invnameold);
    format(invnamenew, sizeof(invnamenew), "Inventory/%s.ini", newname);
    if(fexist(invnamenew)) return SendClientMessage(playerid,  COLOR_BLUE5, "This name is already taken. Please choose another");
    frename(invnameold, invnamenew);
   
    Newname[playerid] = 1;
    Player[playerid][pQuit] = 0;
    Player[playerid][pCash] -= 10;
    GivePlayerMoneyEx(playerid, -10);
    for(new m = 0; m < 9; m++) SendClientMessage(playerid, 0xFFFFFFAA, " ");
    SendClientMessage(playerid, -1, "PROCESSING SERVER SIDE");
    SendClientMessage(playerid, COLOR_BLUELIGHT, "- Your market stall has been transferred.");
    SendClientMessage(playerid, COLOR_BLUELIGHT, "Your player name has changed.");
    SendClientMessage(playerid, COLOR_ORANGE, "Please log in with your new name to complete the process.");
    SetPlayerName(playerid, newname);
    SetTimerEx("KickTime", 1500, false, "i", playerid);
    return 1;
}
Reply
#2

No body help ?
Reply
#3

pawn Код:
CMD:changename(playerid, params[])
{
    new newname[24], newnamecheck[128], oldnamecheck[128];
    new invnameold[128], invnamenew[128];
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login to use this.");
    if(Player[playerid][pCash] < 10) return SendClientMessage(playerid, 0x4186B0AA, "You cannot afford to change name. (Cost: $10.00)");
    if(sscanf(params,"s[24]", newname)) return SendClientMessage(playerid, COLOR_BLUE5, "Usage: /changename [new name]");
    if(strlen(newname) < 3 )
    {
        SendClientMessage(playerid, COLOR_BLUE5, "New name must be between 3 and 24 characters.");
        return 1;
    }
    if(strlen(newname) > 24)
    {
        SendClientMessage(playerid, COLOR_BLUE5, "New name must be between 3 and 24 characters.");
        return 1;
    }
    format(oldnamecheck, sizeof(oldnamecheck), "Users/%s.ini", pName(playerid));
    if(fexist(oldnamecheck)) return fremove(oldnamecheck);
    format(newnamecheck, sizeof(newnamecheck), "Users/%s.ini", newname);
    if(fexist(newnamecheck)) return SendClientMessage(playerid,  COLOR_BLUE5, "This name is already taken. Please choose another.");
    frename(oldnamecheck, newnamecheck);
    format(invnameold, sizeof(invnameold), "Inventory/%s.ini", pName(playerid));
    if(fexist(invnameold)) return fremove(invnameold);
    format(invnamenew, sizeof(invnamenew), "Inventory/%s.ini", newname);
    if(fexist(invnamenew)) return SendClientMessage(playerid,  COLOR_BLUE5, "This name is already taken. Please choose another");
   
    Newname[playerid] = 1;
    Player[playerid][pQuit] = 0;
    Player[playerid][pCash] -= 10;
    GivePlayerMoneyEx(playerid, -10);
    for(new m = 0; m < 9; m++) SendClientMessage(playerid, 0xFFFFFFAA, " ");
    SendClientMessage(playerid, -1, "PROCESSING SERVER SIDE");
    SendClientMessage(playerid, COLOR_BLUELIGHT, "- Your market stall has been transferred.");
    SendClientMessage(playerid, COLOR_BLUELIGHT, "Your player name has changed.");
    SendClientMessage(playerid, COLOR_ORANGE, "Please log in with your new name to complete the process.");
    frename(invnameold, invnamenew);  
    SetPlayerName(playerid, newname);
    SetTimerEx("KickTime", 1500, false, "i", playerid);
    return 1;
}
Try this I don't see any problem in the code hope this work. I am working on it from start.
Reply
#4

Try this code hope it works.
pawn Код:
CMD:changename(playerid, params[])
{
    new newname[24], newnamecheck[128], oldnamecheck[128];
    new invnameold[128], invnamenew[128];
    if(!IsPlayerLoggedIn(playerid)) return SendClientMessage(playerid, COLOR_LIGHTRED, "You need to login to use this.");
    if(Player[playerid][pCash] < 10) return SendClientMessage(playerid, 0x4186B0AA, "You cannot afford to change name. (Cost: $10.00)");
    if(sscanf(params,"s[24]", newname)) return SendClientMessage(playerid, COLOR_BLUE5, "Usage: /changename [new name]");
    if(strlen(newname) < 3 )
    {
        SendClientMessage(playerid, COLOR_BLUE5, "New name must be between 3 and 24 characters.");
        return 1;
    }
    if(strlen(newname) > 24)
    {
        SendClientMessage(playerid, COLOR_BLUE5, "New name must be between 3 and 24 characters.");
        return 1;
    }
    format(oldnamecheck, sizeof(oldnamecheck), "Users/%s.ini", pName(playerid));
    format(newnamecheck, sizeof(newnamecheck), "Users/%s.ini", newname);
    format(invnameold, sizeof(invnameold), "Inventory/%s.ini", pName(playerid));
    if(!fexist(newnamecheck))//You forgot to check if its not exists (!fexist)
    {
        frename(oldnamecheck, newnamecheck);
        format(invnamenew, sizeof(invnamenew), "Inventory/%s.ini", pName(playerid));
        frename(invnameold, newnamecheck);
    }
    else return SendClientMessage(playerid,BLUE5,"This name is already taken. Please choose another.");
    Newname[playerid] = 1;
    Player[playerid][pQuit] = 0;
    Player[playerid][pCash] -= 10;
    GivePlayerMoneyEx(playerid, -10);
    for(new m = 0; m < 9; m++) SendClientMessage(playerid, 0xFFFFFFAA, " ");
    SendClientMessage(playerid, -1, "PROCESSING SERVER SIDE");
    SendClientMessage(playerid, COLOR_BLUELIGHT, "- Your market stall has been transferred.");
    SendClientMessage(playerid, COLOR_BLUELIGHT, "Your player name has changed.");
    SendClientMessage(playerid, COLOR_ORANGE, "Please log in with your new name to complete the process.");
    SetPlayerName(playerid, newname);
    SetTimerEx("KickTime", 1500, false, "i", playerid);
    return 1;
}
EDIT: From what i see from your old code the problem was you deleted the file before modifying it to the new name. and that will delete the old player stats.
Reply
#5

Thank you, Worked.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)