Fiz agorinha sem testar, entгo pode conter bugs.
Tenha isso como base e bons estudos!
pawn Код:
public OnPlayerConnect( playerid )
{
// Receba o dado do tempo VIP do jogador e atribua a variбvel PlayerInfo[ playerid ][ pTempoVip ]
if( gettime() >= PlayerInfo[ playerid ][ pTempoVip ])
{
SendClientMessage( playerid, -1, "Seu VIP acabou." );
PlayerInfo[ playerid ][ pVip ] = 0;
}
}
CMD:darvip( playerid, params[])
{
new
str[ 128 ],
nome[ MAX_PLAYER_NAME ]
;
if( sscanf( params, "udd", params[ 0 ], params[ 1 ], params[ 2 ])) return SendClientMessage( playerid, -1, "USE: /darvip [ID] [MESES] [NIVEL VIP]" );
if( params[ 0 ] == INVALID_PLAYER_ID ) return SendClientMessage( playerid, -1, "Este jogador nгo estб online." );
if( params[ 1 ] <= 0 ) return SendClientMessage( playerid, -1, "Quantidade de meses invбlida." );
if( params[ 2 ] < 0 || params[ 2 ] > 3 ) return SendClientMessage( playerid, -1, "Nнvel VIP inexistente." );
if( params[ 2 ] == 0 )
{
PlayerInfo[ params[ 0 ]][ pVip ] = 0;
PlayerInfo[ params[ 0 ]][ pTempoVip ] = 0;
GetPlayerName( playerid, nome, sizeof( nome ));
format( str, sizeof( str ), "O administrador %s retirou seu VIP.", nome );
SendClientMessage( params[ 0 ], -1, str );
GetPlayerName( params[ 0 ], nome, sizeof( nome ));
format( str, sizeof( str ), "Vocк removeu o VIP do jogador %s.", nome );
SendClientMessage( playerid, -1, str );
return 1;
}
PlayerInfo[ params[ 0 ]][ pTempoVip ] = gettime() + ( 60 * 60 * 24 * 30 * params[ 1 ]);
PlayerInfo[ params[ 0 ]][ pVip ] = params[ 2 ];
GetPlayerName( playerid, nome, sizeof( nome ));
format( str, sizeof( str ), "O administrador %s te deu VIP nнvel %d durante %d mes(es).", nome, params[ 2 ], params[ 1 ]);
SendClientMessage( params[ 0 ], -1, str );
GetPlayerName( params[ 0 ], nome, sizeof( nome ));
format( str, sizeof( str ), "Vocк deu VIP nнvel %d durante %d mes(es) para o jogador %s.", params[ 2 ], params[ 1 ], nome );
SendClientMessage( params[ 0 ], -1, str );
return 1;
}
@EDIT:
Use
ZCMD e
SSCANF2.