/changename with ZCMD and sscanf
#1

Know everyone how to make a /changename cmd with ZCMD and SSCANF, and that only admins can use it?
Reply
#2

lol its easy

pawn Код:
CMD:setname(playerid.params[])
{
        if(pInfo[playerid][Admin] >= 0 || IsPlayerAdmin(playerid)) // replace pinfo and admin by ur admin scripts admin var ...
    {
        new player1 = strval(params);
        new name[24];
        if(sscanf(params,"us",player1,name))return SendClientMessage(playerid,Red,"[Useage]: {FFFFFF}/setname [playerid] [name]");
        new string[200];
        format(string,sizeof(string),"{F30000}You Have Set The Name Of Player %s(Id: %d) To %s(Id: %d).",Playername(player1),player1,name,player1);
        SendClientMessage(playerid,White,string);
        SendClientMessage(playerid,White,"{F30000}The player will automatically register..");
        format(string,sizeof(string),"{F30000}Admin %s(Id: %d) Has Set Your Name To %s(Id: %d).",Playername(playerid),playerid,name,player1);
        SendClientMessage(player1,White,string);
        SendClientMessage(player1,White,"{F30000}You need to register!");
        return SetPlayerName(player1,name);
     }
     else return SendClientMessage(playerid,0xFF00FFFF,"You ARe Not Admin!");
}
 

//At end of ur script        
stock Playername(playerid)
{
    new pname[70];
    GetPlayerName(playerid,pname,sizeof(pname));
    return pname;
}
Reply
#3

When i add that the Pawn Compiler crashed, i save the Playerfiles in a .txt file in "scriptfiles". Know everyone a other Answer?
Reply
#4

pawn Код:
CMD:changename( playerid, params[ ] )
{
    new
        id,
        new_name[ MAX_PLAYER_NAME ],
        string[ 128 ]
    ;
    if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1, "You are not admin!" );
    if( sscanf( params, "us", id, new_name ) ) return SendClientMessage( playerid, -1, "Usage: /changename <ID/Part Of Name> <New Name>" );
    switch( SetPlayerName( id, new_name ) )
    {
        case -1:
        {
            format( string, sizeof( string ), "Unable to change his/her name, someone else is known as %s already.", new_name );
            SendClientMessage( playerid, -1, string );
        }
        case 0:
        {
            format( string, sizeof( string ), "That player is already known as %s", new_name );
            SendClientMessage( playerid, -1, string );
        }
        case 1:
        {
            format( string, sizeof( string ), "That player is now known as %s", new_name );
            SendClientMessage( playerid, -1, string );
        }
    }
    return 1;
}
Reply
#5

Please post such requests on Script Request Thread. Here's a command anyway.
You must have zcmd include and sscanf2 include+plugin.
pawn Код:
CMD:changename(playerid, params[])
{
 if(!IsPlayerAdmin(playerid)) //You can replace this with your admin script.
 return SendClientMessage(playerid, 0xFF0000FF, "You must login as RCON to use this command.");
 new p2;
 new name[24];
 new Lname[MAX_PLAYER_NAME];
 GetPlayerName(playerid, Lname, sizeof(Lname));
 if(sscanf(params,"us[24]", p2, name)) return SendClientMessage(playerid, 0xFF0000FF, "Usage: /changename [playerid] [new name]");
 new pName[MAX_PLAYER_NAME];
 GetPlayerName(p2, pName, sizeof(pName));
 if(strlen(name < 3)) return SendClientMessage(playerid, 0xFF0000FF, "Low character level. Minimum:3");
 if(strlen(name > 24)) return SendClientMessage(playerid, 0xFF0000FF, "High character level. Maximum:24");
 SetPlayerName(p2, name);
 new str[128][2];
 format(str[0],sizeof(str[0]), "Your name has been set to %s by %s", name, Lname);
 format(str[1],sizeof(str[1], "You have set %s's name to %s", pName, name);
 SendClientMessage(p2, 0xFF0000, str[0]);
 SendClientMessage(playerid, 0xFF0000, str[1]);
 return 1;
}
Edit:late..
Reply
#6

Quote:
Originally Posted by Dwane
Посмотреть сообщение
pawn Код:
CMD:changename( playerid, params[ ] )
{
    new
        id,
        new_name[ MAX_PLAYER_NAME ],
        string[ 128 ]
    ;
    if( !IsPlayerAdmin( playerid ) ) return SendClientMessage( playerid, -1, "You are not admin!" );
    if( sscanf( params, "us", id, new_name ) ) return SendClientMessage( playerid, -1, "Usage: /changename <ID/Part Of Name> <New Name>" );
    switch( SetPlayerName( id, new_name ) )
    {
        case -1:
        {
            format( string, sizeof( string ), "Unable to change his/her name, someone else is known as %s already.", new_name );
            SendClientMessage( playerid, -1, string );
        }
        case 0:
        {
            format( string, sizeof( string ), "That player is already known as %s", new_name );
            SendClientMessage( playerid, -1, string );
        }
        case 1:
        {
            format( string, sizeof( string ), "That player is now known as %s", new_name );
            SendClientMessage( playerid, -1, string );
        }
    }
    return 1;
}
But when Player reconnect with the new Name, he must register again, and the new Name saved not, can you help me?
Reply
#7

The command I made above, it changes the player's name for temporary.
If you would like to save his name under the older one, you have to set it to your file/database.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)