[Ajuda] CMD: Nгo executa
#1

pawn Код:
CMD:admins(playerid)
{
    for(new i; i < MAX_PLAYERS; i++)
        {
            if(DOF2_GetInt(Registro(i), "pAdmin") > 0)
                {
                    new hd[128], adm[64], cargo[64];
                    if(DOF2_GetInt(Registro(i), "pAdmin") == 1) return cargo = "Administrador [Nнvel 1]";
                    if(DOF2_GetInt(Registro(i), "pAdmin") == 2) return cargo = "Administrador [Nнvel 2]";
                    if(DOF2_GetInt(Registro(i), "pAdmin") == 3) return cargo = "Administrador [Nнvel 3]";
                    GetPlayerName(i, adm, sizeof(adm));
                    format(hd, sizeof(hd), "{FFFF00}%s {FFFFFF}- {1E90FF}%s", adm, cargo);
                    SendClientMessage(playerid, -1, "{1E90FF}|____________[{FFFF00}Administradores Online{1E90FF}]____________|");
                    SendClientMessage(playerid, -1, hd);
            }
        }
    return 1;
}
Eu tentei fazer um comando para ver os Admins online, mas nem chega a executar o /admins.
Eu coloquei:
pawn Код:
CMD:admins(playerid)
{
    SendClientMessage(playerid, -1, "Teste");
    return 1;
}
Mas nem assim ele chamou o comando. Estou meio perdido, ajudem por favor.

@Edit

Esqueci de avisar que nгo retorna nenhum erro no server_log e nem quando vou compilar.
Meus Includes estгo atualizados.
Nгo hб outros cуdigos que usam loop no meu GM, esse seria o primeiro.
_____________________
Reply
#2

O ъnico erro que consigo pensar й isso CMD:admins(playerid, params[])
Reply
#3

Quote:
Originally Posted by SaDaN
Посмотреть сообщение
O ъnico erro que consigo pensar й isso CMD:admins(playerid, params[])
Eu nгo consigo imaginar erro algum, pois ele nгo estб a utilizar parвmetros!
Reply
#4

Quote:
Originally Posted by SaDaN
Посмотреть сообщение
O ъnico erro que consigo pensar й isso CMD:admins(playerid, params[])
Mesmo sem estar usando parвmetros, eu jб testei colocar CMD:admins(playerid, params[]), mas nгo adiantou.

Nгo tem uma outra forma de executar aquele loop? Eu realmente nгo sei nada sobre loops, esse й o mais bбsico que eu achei ..
Reply
#5

Se vc diz que de qualquer maneira, com ou sem loop, nгo executa comando algum... muito estranho!
Reply
#6

PHP код:
if(DOF2_GetInt(Registro(i), "pAdmin") == 1) return cargo "Administrador [Nнvel 1]";
if(
DOF2_GetInt(Registro(i), "pAdmin") == 2) return cargo "Administrador [Nнvel 2]";
if(
DOF2_GetInt(Registro(i), "pAdmin") == 3) return cargo "Administrador [Nнvel 3]"
O problema й que vocк estб fazendo o comando retornar. Se alguma dessas condiзхes for verdadeira, o comando vai parar antes de enviar a mensagem.

PHP код:
SendClientMessage(playerid, -1"{1E90FF}|____________[{FFFF00}Administradores Online{1E90FF}]____________|"); 
Essa mensagem deveria estar acima, fora do loop.
Reply
#7

Vк ai se funfa.

PHP код:
CMD:admins(playerid)
{
  for(new 
iMAX_PLAYERSi++)
  {
        if(
pAdmin[i] >= 1
        {
              new 
hd[128], adm[64], cargo[64];
              
GetPlayerName(iadmsizeof(adm));
              
format(hdsizeof(hd), "{FFFF00}%s {FFFFFF}- {1E90FF}%d"admpAdmin[i]);
              
SendClientMessage(playerid, -1"{1E90FF}|____________[{FFFF00}Administradores Online{1E90FF}]____________|");
              
SendClientMessage(playerid, -1hd);
        }
  }
  return 
1;

Reply
#8

Quote:
Originally Posted by zPain
Посмотреть сообщение
PHP код:
if(DOF2_GetInt(Registro(i), "pAdmin") == 1) return cargo "Administrador [Nнvel 1]";
if(
DOF2_GetInt(Registro(i), "pAdmin") == 2) return cargo "Administrador [Nнvel 2]";
if(
DOF2_GetInt(Registro(i), "pAdmin") == 3) return cargo "Administrador [Nнvel 3]"
O problema й que vocк estб fazendo o comando retornar. Se alguma dessas condiзхes for verdadeira, o comando vai parar antes de enviar a mensagem.

PHP код:
SendClientMessage(playerid, -1"{1E90FF}|____________[{FFFF00}Administradores Online{1E90FF}]____________|"); 
Essa mensagem deveria estar acima, fora do loop.
Seguindo sua dica, o comando funcionou perfeitamente. Ficou assim:
pawn Код:
CMD:admins(playerid)
{
    SendClientMessage(playerid, -1, "{1E90FF}|____________[{FFFF00}Administradores Online{1E90FF}]____________|");
    for(new i; i < MAX_PLAYERS; i++)
        {
            if(DOF2_GetInt(Registro(i), "pAdmin") > 0)
                {
                    new hd[128], adm[64], cargo[64];
                    if(DOF2_GetInt(Registro(i), "pAdmin") == 1)
                        {
                            cargo = "Administrador [Nнvel 1]";
                        }
                    if(DOF2_GetInt(Registro(i), "pAdmin") == 2)
                        {
                            cargo = "Administrador [Nнvel 2]";
                        }
                    if(DOF2_GetInt(Registro(i), "pAdmin") == 3)
                        {
                            cargo = "Administrador [Nнvel 3]";
                        }
                    GetPlayerName(i, adm, sizeof(adm));
                    format(hd, sizeof(hd), "{FFFF00}%s {FFFFFF}- {1E90FF}%s", adm, cargo);
                    SendClientMessage(playerid, -1, hd);
             }
        }
    return 1;
}
Mas para ver se eu entendi, deixa eu tentar explicar o que eu fiz.
Quando eu retorno algum valor dentro do loop, ele forзa um break e o comando nгo й processado. Й isso?

Enfim, obrigado a todos pela atenзгo.

RESOLVIDO

________________
Reply
#9

Quote:
Originally Posted by Ermanhaut
Посмотреть сообщение
Seguindo sua dica, o comando funcionou perfeitamente. Ficou assim:
Mas para ver se eu entendi, deixa eu tentar explicar o que eu fiz.
Quando eu retorno algum valor dentro do loop, ele forзa um break e o comando nгo й processado. Й isso?

Enfim, obrigado a todos pela atenзгo.

RESOLVIDO

________________
Sim, precisamente. Obviamente, existe diferenзa entre interromper o loop com break e com return.

PHP код:
CMD:comando(playerid) {
    for(new 
010; ++i) {
        if(
== 5) {
           break;
        }
    }
    
SendClientMessage(playerid, -1"O loop parou em 5."); // Esta linha serб executada
    
return 1;

PHP код:
CMD:comando(playerid) {
    for(new 
010; ++i) {
        if(
== 5) {
            return 
1;
        }
    }
    
SendClientMessage(playerid, -1"O loop parou em 5."); // Esta linha nгo serб executada
    
return 1;

Enquanto break encerra apenas o loop, return - a grosso modo - encerra a funзгo como um todo.
Reply
#10

Quote:
Originally Posted by zPain
Посмотреть сообщение
Sim, precisamente. Obviamente, existe diferenзa entre interromper o loop com break e com return.

PHP код:
CMD:comando(playerid) {
    for(new 
010; ++i) {
        if(
== 5) {
           break;
        }
    }
    
SendClientMessage(playerid, -1"O loop parou em 5."); // Esta linha serб executada
    
return 1;

PHP код:
CMD:comando(playerid) {
    for(new 
010; ++i) {
        if(
== 5) {
            return 
1;
        }
    }
    
SendClientMessage(playerid, -1"O loop parou em 5."); // Esta linha nгo serб executada
    
return 1;

Enquanto break encerra apenas o loop, return - a grosso modo - encerra a funзгo como um todo.
Agora ficou mais claro. Obrigado ^^


______________
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)