/setbadgenumber
#1

PROBLEM SOLVED
Reply
#2

Use sscanf, store the badge number in the player stats and use it each time you want.
Reply
#3

............
Reply
#4

Untested; but compiles
Change
pawn Код:
if ( !department_leader[ playerid ] )
to your own variable
pawn Код:
new
    badgeNumber[ MAX_PLAYERS ][ 7 ];

public OnPlayerConnect( playerid )
{
    badgeNumber[ playerid ][ 0 ] = EOS;
    return 1;
}

CMD:setbadgenumber( playerid, params[ ] )
{
    if ( !department_leader[ playerid ] ) // Change this to your own variable.
        return SendClientMessage( playerid, -1, "{FF3333}[ERROR]: {FFFFFF}You cannot use this command!" );
       
    if ( !strlen( params ) )
        return SendClientMessage( playerid, -1, "{FF3333}[ERROR]: {FFFFFF}/setbadgenumber <ID>" );
       
    if ( strlen( params ) > 6 )
        return SendClientMessage( playerid, -1, "{FF3333}[ERROR]: {FFFFFF}Badge ID can't be longer than 6 characters!" );
       
    badgeNumber[ playerid ][ 0 ] = EOS;
    strcat( badgeNumber[ playerid ], params );
   
    new
        fmat[ 128 ];
    format( fmat, sizeof ( fmat ), "{33FFFF}[INFO]: {FFFFFF}Badge set to %s.", badgeNumber[ playerid ] );
    SendClientMessage( playerid, -1, fmat );
   
    return 1;
}

CMD:d( playerid, params[ ] ) // Local IC chat?
{
    if ( !strlen( params ) )
        return SendClientMessage( playerid, -1, "{FF3333}[ERROR]: {FFFFFF}/d <message>" );
       
    new
        fmat[ 128 ],
        pName[ MAX_PLAYER_NAME ];
    GetPlayerName( playerid, pName, MAX_PLAYER_NAME );
   
    if ( badgeNumber[ playerid ][ 0 ] != EOS )
        format( fmat, sizeof ( fmat ), "%s [Badge number: %s]: %s", pName, badgeNumber[ playerid ], params );
    else
        format( fmat, sizeof ( fmat ), "%s: %s", pName, params );
       
    new
        Float: pPos[ 3 ];
    GetPlayerPos( playerid, pPos[ 0 ], pPos[ 1 ], pPos[ 2 ] );
       
    for ( new i; i < MAX_PLAYERS; ++ i )
    {
        if ( ( GetPlayerDistanceFromPoint( i, pPos[ 0 ], pPos[ 1 ], pPos[ 2 ] ) < 10.0 ) )
        {
            SendClientMessage( i, -1, fmat );
            continue;
        }
    }
   
    return 1;
}
Reply
#5

My attempt using zcmd, sscanf. Untested. Replace variables, colors, etc to work with your own script.
pawn Код:
CMD:setbadgeno(playerid, params[])
{
new giveplayerid, badgeno, string[126], str[128];
if(!IsLeader(playerid)) return SendClientMessage(playerid, COLOR_NOTAUTH, "Only faction leaders can use this command.");
if(sscanf(params, "ud", giveplayerid, badgeno)) return SendClientMessage(playerid, COLOR_GREY, "USAGE: /setbadgeno [id] [badge#]");
if(!IsPlayerConnected(giveplayerid)) return 1;
if(badgeno >= INVALID_BADGE_NUMBER) {
new string[64];
format(string, sizeof(string), "That badge number is too high! The biggest badge number you can use is %d.", INVALID_BADGE_NUMBER-1);
SendClientMessage(playerid, COLOR_RED, string);
return 1; }
if(IsInSameFaction(playerid, giveplayerid) {
BadgeNumber[giveplayerid] = badgeno;
format(str, sizeof(string), "Your badge number has been set to %d by %s.", badgeno, getname(playerid));
SendClientMessage(giveplayerid, COLOR_WHITE, str);
format(str, sizeof(string), "You have set %s's badge number to %d.", getname(giveplayerid), badgeno);
SendClientMessage(giveplayerid, COLOR_WHITE, str); }
return 1;
}
Reply
#6

.........
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)