comando bugado! -
vitinhosamp - 01.08.2018
PHP код:
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, levelp, level, pid[MAX_PLAYER_NAME], Mensagem[100], Mensagem2[100], motivo[74];
GetPlayerName(id, pid, sizeof(pid));
if(sscanf(params, "rus[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!");
levelp = GetPlayerScore(id - level);
pInfo[playerid][pLevel] = levelp;
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), pid, level, motivo);
format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
SendClientMessageToAll(-1, Mensagem);
}
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), pid, level, motivo);
format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
SendClientMessageToAll(-1, Mensagem);
}
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), pid, level, motivo);
format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
SendClientMessageToAll(-1, Mensagem);
}
if(IsPlayerAdmin(playerid))
{
format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), pid, level, motivo);
format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
SendClientMessageToAll(-1, Mensagem);
}
if(pInfo[playerid][Oculto] == true)
{
format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]o admin puniu o jogador %s com %d leveis![ MOTIVO: %s]", Pname(playerid), pid, level, motivo);
format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
SendClientMessageToAll(-1, Mensagem);
}
}
return 1;
}
esse comando tira o level do player todo e manda que eu retirei 65 mil de leveis, alguem poderia em ajudar?
Re: comando bugado! -
FerrariL - 01.08.2018
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);
Re: comando bugado! -
vitinhosamp - 01.08.2018
como assim?
Re: comando bugado! -
InsaneBR - 01.08.2018
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(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
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(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), pid, level, motivo);
format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
SendClientMessageToAll(-1, Mensagem);
}
if(IsPlayerAdmin(playerid))
{
format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), pid, level, motivo);
format(Mensagem2, sizeof(Mensagem2), "{E40316}[ x ]Vocк puniu o jogador %s em %d leveis!", pid, level);
SendClientMessage(playerid, -1, Mensagem2);
SendClientMessageToAll(-1, Mensagem);
}
PHP код:
if(pInfo[playerid][Administrador] || IsPlayerAdmin(playerid)) {
format(Mensagem, sizeof(Mensagem), "{E40316}[ x ]O administrador %s puniu o jogador %s com %d leveis! [ MOTIVO: %s]", Pname(playerid), pid, level, motivo);
}
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.");
}
Re: comando bugado! -
JeffSantos2 - 01.08.2018
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;
}