[Ajuda] comando bugado!
#1

PHP код:
CMD:punirl(playeridparams[])
{
    if(
IsPlayerAdmin(playerid) || pInfo[playerid][Administrador] == true || pInfo[playerid][Corregedor] == true || pInfo[playerid][Moderador] == true || pInfo[playerid][Oculto] == true)
    {
        new 
idlevelplevelpid[MAX_PLAYER_NAME], Mensagem[100], Mensagem2[100], motivo[74];
        
GetPlayerName(idpidsizeof(pid));
        if(
sscanf(params"rus[74]"idlevelmotivo)) return SendClientMessage(playerid0xFFFFFFAA"[ ERRO ]Use: /punirl [ id ] [ leveis ] [ MOTIVO: ]");
        if(!
IsPlayerConnected(id)) return SendClientMessage(playerid0xFFFFFFAA"[ ERRO ]O(a) jogador(a) nгo esta conectado!");
        
levelp GetPlayerScore(id level);
        
pInfo[playerid][pLevel] = levelp;
        if(
pInfo[playerid][Moderador] == true)
        {
            
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]O moderador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]"Pname(playerid), pidlevelmotivo);
            
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel);
            
SendClientMessage(playerid, -1Mensagem2);
            
SendClientMessageToAll(-1Mensagem);
        }
        if(
pInfo[playerid][Corregedor] == true)
        {
            
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]O Corregedor %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]"Pname(playerid), pidlevelmotivo);
            
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel);
            
SendClientMessage(playerid, -1Mensagem2);
            
SendClientMessageToAll(-1Mensagem);
        }
        if(
pInfo[playerid][Administrador] == true)
        {
            
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]"Pname(playerid), pidlevelmotivo);
            
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel);
            
SendClientMessage(playerid, -1Mensagem2);
            
SendClientMessageToAll(-1Mensagem);
        }
        if(
IsPlayerAdmin(playerid))
        {
            
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]"Pname(playerid), pidlevelmotivo);
            
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel);
            
SendClientMessage(playerid, -1Mensagem2);
            
SendClientMessageToAll(-1Mensagem);
        }
        if(
pInfo[playerid][Oculto] == true)
        {
            
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]o admin puniu o jogador %s com %d leveis![ MOTIVO: %s]"Pname(playerid), pidlevelmotivo);
            
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel);
            
SendClientMessage(playerid, -1Mensagem2);
            
SendClientMessageToAll(-1Mensagem);
        }
    }
    return 
1;

esse comando tira o level do player todo e manda que eu retirei 65 mil de leveis, alguem poderia em ajudar?
Reply
#2

Vocк estб passando como argumento para a funзгo GetPlayerScore, a variбvel id subtraнda com a variбvel level.
Para o que vocк quer fazer, isso aqui faz sentido algum: GetPlayerScore(id - level);
O argumento que deve ser passado na funзгo й o id do jogador... Exemplo: GetPlayerScore(playerid);
Reply
#3

como assim?
Reply
#4

Troque
PHP код:
levelp GetPlayerScore(id level); 
por
PHP код:
SetPlayerScore(id, (GetPlayerScore(id)-level)); 
Obs: da para melhorar a estйtica de seu cуdigo e eliminar algumas linhas inъteis:

1- Vocк sу precisar formatar isto uma vez, jб que a mensagem й igual para todas as comparaзхes.
PHP код:
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel);
SendClientMessage(playerid, -1Mensagem2); 
2- A mensagem formatada й a mesma, pode-se usar operadores e fazer isto em apenas uma comparaзгo:
PHP код:
if(pInfo[playerid][Administrador] == true

    
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]"Pname(playerid), pidlevelmotivo); 
    
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel); 
    
SendClientMessage(playerid, -1Mensagem2); 
    
SendClientMessageToAll(-1Mensagem); 

if(
IsPlayerAdmin(playerid)) 

    
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]"Pname(playerid), pidlevelmotivo); 
    
format(Mensagem2sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!"pidlevel); 
    
SendClientMessage(playerid, -1Mensagem2); 
    
SendClientMessageToAll(-1Mensagem); 

PHP код:
if(pInfo[playerid][Administrador]  || IsPlayerAdmin(playerid)) { 
    
format(Mensagemsizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]"Pname(playerid), pidlevelmotivo);     

PS: Vocк utiliza apenas um SendClientMessageToAll apуs a ъltima chave que fecha as comparaзхes/condiзхes.

3- Vocк pode usar else if para que, quando o comando for executado nгo precisar comparar tudo que hб no comando, sу irб comparar um else if caso a comparaзгo inicial for false.
Ex:
PHP код:
if(IsPlayerAdmin(playerid)) {
    
SendClientMessaget(playerid, -1"Vocк й um rcon.");
}
else if(
pInfo[playerid][Administrador]) {
    
SendClientMessage(playerid, -1"Vocк й um administrador.");
}
else if(
pInfo[playerid][Corregedor]) {
    
SendClientMessage(playerid, -1"Vocк й um corregedor.");

Reply
#5

Existem vбrios erros no seu cуdigo, alйm dos citados acima, dк uma olhada no cуdigo abaixo(teoricamente certo) e compare com o que vocк fez/pegou, bons estudos!!

Код:
CMD:punirl(playerid, params[]) 
{ 
    if(IsPlayerAdmin(playerid) || pInfo[playerid][Administrador] == true || pInfo[playerid][Corregedor] == true || pInfo[playerid][Moderador] == true || pInfo[playerid][Oculto] == true) 
    { 
		new id, level, nick[MAX_PLAYER_NAME], Mensagem[144], Mensagem2[144], motivo[74]; 
		if(sscanf(params, "uds[74]", id, level, motivo)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ ERRO ]Use: /punirl [ id ] [ leveis ] [ MOTIVO: ]"); 
		if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xFFFFFFAA, "[ ERRO ]O(a) jogador(a) nгo esta conectado!"); 
        GetPlayerName(id, nick, sizeof(nick)); 
		pInfo[id][pLevel] -= level;
        SetPlayerScore(id, pInfo[id][pLevel]); 
		
		if(pInfo[playerid][Oculto] == true) format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]o admin puniu o jogador %s com %d leveis![ MOTIVO: %s]", nick, level, motivo); 
        else if(IsPlayerAdmin(playerid)) format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), nick, level, motivo); 
        else if(pInfo[playerid][Administrador] == true) format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), nick, level, motivo); 
		else if(pInfo[playerid][Corregedor] == true) format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O Corregedor %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), nick, level, motivo); 
		else if(pInfo[playerid][Moderador] == true) format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O moderador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), nick, level, motivo); 
			
		format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", nick, level); 
        SendClientMessage(playerid, -1, Mensagem2); 
        SendClientMessageToAll(-1, Mensagem);  
    } 
    return 1; 
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)