change name?
#1

is there any way to change the name from the database?

like using /changename command players get his changed name instantly and also his name in mysql database also get change.

I am using this format on register.

pawn Код:
format(Query, sizeof Query, "SELECT * FROM `accounts` WHERE `Name` = '%s' LIMIT 1", pName);
thank you.
Reply
#2

UPDATE `accounts` SET `Name` = 'OLD_NAME' WHERE `Name` = 'NEW_NAME'
Reply
#3

pawn Код:
"UPDATE `accounts` SET `Name` = '%s' WHERE `Name` = '%s' LIMIT 1"
That should work, though if you load an (registered) ID, you could replace it.
Reply
#4

and how we can use the above format in the below code ?

pawn Код:
CMD:changename(playerid, params[])
{
    new targetid,name[128];
    if(PInfo[playerid][Level] < 2 || !IsPlayerAdmin(playerid)) return 0;
    else if (sscanf(params,"us",targetid,name))SendClientMessage(playerid,RED,"Usage: /changename [Playerid] [New name]");
    else if(!IsPlayerConnected(targetid))SendClientMessage(playerid,RED,"Error: Player is not connected!");
    else {
        new string[128],n[MAX_PLAYER_NAME];
        GetPlayerName(targetid,n,sizeof(n));
        SetPlayerName(targetid,name);
        format(string,sizeof(string),"Admin %s [ID:%d] Has set %s [ID:%d] name to %s",Name(playerid),playerid,n,targetid,name);
        SendClientMessageToAll(YELLOW,string);
        format(string,sizeof(string),"Your Name has been set to %s by Admin %s[ID:%d]",Name(targetid),n,playerid);
        SendClientMessage(playerid,GREEN,string);
    }
    return 1;
}
thank you.
Reply
#5

pawn Код:
CMD:changename(playerid, params[])
{
    new targetid,name[128],query[100];
    if(PInfo[playerid][Level] < 2 || !IsPlayerAdmin(playerid)) return 0;
    else if (sscanf(params,"us",targetid,name))SendClientMessage(playerid,RED,"Usage: /changename [Playerid] [New name]");
    else if(!IsPlayerConnected(targetid))SendClientMessage(playerid,RED,"Error: Player is not connected!");
    else {
        new string[128],n[MAX_PLAYER_NAME];
        GetPlayerName(targetid,n,sizeof(n));
        format(query,sizeof(query),"UPDATE `accounts` SET `Name` = '%s' WHERE `Name` = '%s'",name,n);
        mysql_query(query);
        SetPlayerName(targetid,name);
        format(string,sizeof(string),"Admin %s [ID:%d] Has set %s [ID:%d] name to %s",Name(playerid),playerid,n,targetid,name);
        SendClientMessageToAll(YELLOW,string);
        format(string,sizeof(string),"Your Name has been set to %s by Admin %s[ID:%d]",Name(targetid),n,playerid);
        SendClientMessage(playerid,GREEN,string);
    }
    return 1;
}
Reply
#6

thank you. i will test it.

+rep for all

thank you once again.
Reply
#7

You should use the size on "s" specifier in sscanf. You can reduce the name to 24 (max player's name lenght) instead of 128.
pawn Код:
CMD:changename(playerid, params[])
{
    new targetid,name[MAX_PLAYER_NAME];
    if(PInfo[playerid][Level] < 2 || !IsPlayerAdmin(playerid)) return 0;
    if (sscanf(params,"us[24]",targetid,name))SendClientMessage(playerid,RED,"Usage: /changename [Playerid] [New name]");
    if(!IsPlayerConnected(targetid))SendClientMessage(playerid,RED,"Error: Player is not connected!");
    new string[128],n[MAX_PLAYER_NAME];
    GetPlayerName(targetid,n,sizeof(n));
    SetPlayerName(targetid,name);
    format(string,sizeof(string),"Admin %s [ID:%d] Has set %s [ID:%d] name to %s",Name(playerid),playerid,n,targetid,name);
    SendClientMessageToAll(YELLOW,string);
    format(string,sizeof(string),"Your Name has been set to %s by Admin %s[ID:%d]",Name(targetid),n,playerid);
    SendClientMessage(playerid,GREEN,string);
    format(string, sizeof string, "UPDATE `accounts` SET `Name` = '%s' WHERE `Name` = '%s' LIMIT 1", name, n);
    //mysql_query(string); // Non-threaded queries
    //mysql_tquery( connectionHandle, string, "", "" ); // Threaded queries
    return 1;
}
Reply
#8

Quote:
Originally Posted by Konstantinos
Посмотреть сообщение
You use use the size on "s" specifier in sscanf.
pawn Код:
CMD:changename(playerid, params[])
{
    new targetid,name[MAX_PLAYER_NAME];
    if(PInfo[playerid][Level] < 2 || !IsPlayerAdmin(playerid)) return 0;
    if (sscanf(params,"us[24]",targetid,name))SendClientMessage(playerid,RED,"Usage: /changename [Playerid] [New name]");
    if(!IsPlayerConnected(targetid))SendClientMessage(playerid,RED,"Error: Player is not connected!");
    new string[128],n[MAX_PLAYER_NAME];
    GetPlayerName(targetid,n,sizeof(n));
    SetPlayerName(targetid,name);
    format(string,sizeof(string),"Admin %s [ID:%d] Has set %s [ID:%d] name to %s",Name(playerid),playerid,n,targetid,name);
    SendClientMessageToAll(YELLOW,string);
    format(string,sizeof(string),"Your Name has been set to %s by Admin %s[ID:%d]",Name(targetid),n,playerid);
    SendClientMessage(playerid,GREEN,string);
    format(string, sizeof string, "UPDATE `accounts` SET `Name` = '%s' WHERE `Name` = '%s' LIMIT 1", name, n);
    //mysql_query(string); // Non-threaded queries
    //mysql_tquery( connectionHandle, string, "", "" ); // Threaded queries
    return 1;
}
If 's' has no size, it's set to 32 by default.

Quote:
Originally Posted by ******
Note that disabling prints is a VERY bad idea when developing code as you open yourself up to unreported buffer overflows when no length is specified on strings less than 32 cells (the default length).
Reply
#9

i will test your too.

thanks for such a fast help
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)