[Ajuda] Variбveis de Cargos
#1

Bom, estou com um problema, e nгo consegui resolver, ai vim pro Fуrum.

O Problema e que as variбveis de cargo como por exemplo:

Cargo[playerid][Admin]

Eu tenho vбrios cargos em meu servidor, mas quando adiciono um comando restrito fazendo deste jeito:

pawn Код:
if(Cargo[playerid][Admin] == 0 || Cargo[playerid][Cargo1] == 0 || Cargo[playerid][Cargo2] == 0) return SCM(playerid, -1, "Nгo tem permissгo.");
Sу funciona se a pessoa for admin, ou seja o 1° que estб no if, os demais Cargos nгo sгo contados.
Sempre que eu coloco eu para o Cargo1 ele me retorna uma a Mensagem "Nгo tem permissгo".

Eu coloco == 0 e nгo < 1 porque os cargos sу tem 1 Nнvel ou seja, se for й 1 se nгo tiver й 0.

Resumindo, eu nгo consigo colocar permissхes em comandos, sempre retorna a mensagem que nгo tenho permissгo. Mesmo eu estando setado pro Cargo 1.

#edit

Eu gostaria que vбrios cargos usassem o comando, sem restriзгo, pois se o Admin vem 1° sу ele pode efetuar o comando.

Como por exemplo:

pawn Код:
CMD:exemplo(playerid)
{
    if(Cargo[playerid][Cargo1] == 0 || Cargo[playerid][Cargo2] == 0) return SCM(playerid, -1, "Nгo tem permissгo");
    SCM(playerid, -1, "Vocк tem permissгo!");
    return 1;
}
E Os cargos1 e cargo2 sгo exemplos, nгo estгo em meu Gamemode.
Reply
#2

Interprete o seu comando.

pawn Код:
if(Cargo[playerid][Admin] == 0 || Cargo[playerid][Cargo1] == 0 || Cargo[playerid][Cargo2] == 0) return SCM(playerid, -1, "Nгo tem permissгo.");
Se ele for Admin = 0 ou Cargo 1 = 0 ou Cargo 2 = 0 vai retornar a mensagem.
Reply
#3

Verifique se vocк estб armazenado certo na variavel cargo1.
Reply
#4

Tб, o que vocк estб fazendo ai... Simples..

Resumidamente, estб assim seu code: O Cargo desse player de admin й 0.(correto) O Cargo desse player do Cargo1 й 0. O Cargo desse player do Cargo2 й 0.(errado)

Ou seja, sem lуgica. Vocк nгo estб dando valor as variбveis Cargo. Ela sempre vai ser 0. Nunca vai sair do 0.

Correto seria:

pawn Код:
Cargo[playerid][Cargos/*ou qualquer outra coisa definida no enum*/] = 1;
Cargo[playerid][Cargos] = 2;
Cargo[playerid][Cargos] = 3;

// Nas condiзхes
if(Cargo[playerid][Cargos] == 0) SendClientMessage(playerid, -1, "Vocк tem Cargo 0");
if(Cargo[playerid][Cargos] == 1) SendClientMessage(playerid, -1, "Vocк tem Cargo 1");
if(Cargo[playerid][Cargos] == 2) SendClientMessage(playerid, -1, "Vocк tem Cargo 2");
if(Cargo[playerid][Cargos] == 3) SendClientMessage(playerid, -1, "Vocк tem Cargo 3");
Por que pega o Cargo Admin? porque vocк estб fazendo o uso correto dela de acordo nisso que eu expliquei.
Reply
#5

Faz a enum desse jeito.

pawn Код:
enum Var {  
    Admin,
    Cargo
};
new Cargo[MAX_PLAYERS][Var];

/* Uso: Cargo[playerid][Admin] = 1;
   Cargo[playerid][Cargo] = 1 */
Reply
#6

Quote:
Originally Posted by xCR7
Посмотреть сообщение
Faz a enum desse jeito.

pawn Код:
enum Var {  
    Admin,
    Cargo
};
new Cargo[MAX_PLAYERS][Var];

/* Uso: Cargo[playerid][Admin] = 1;
   Cargo[playerid][Cargo] = 1 */
Nesse caso, vocк estб fazendo:

pawn Код:
new Cargo[...]
new Cargo
Ou seja, o compilador vai 'reclamar' dizendo que estб repetida a variбvel.

Uma dica й sempre diferenciar e deixar objetiva o nome das variбveis. Se nгo depois nгo entendemos o que estamos fazendo com ela.
Reply
#7

Quote:
Originally Posted by JonathanFeitosa
Посмотреть сообщение
Nesse caso, vocк estб fazendo:

pawn Код:
new Cargo[...]
new Cargo
Ou seja, o compilador vai 'reclamar' dizendo que estб repetida a variбvel.

Uma dica й sempre diferenciar e deixar objetiva o nome das variбveis. Se nгo depois nгo entendemos o que estamos fazendo com ela.
Mas nesse caso ele vai poder usar Cargo[playerid][Admin] e Cargo[playerid][Cargo].

Й sу ele excluir a enum anterior e usar desse jeito.
Reply
#8

Tente fazer dessa forma:
pawn Код:
if(!Cargo[playerid][Admin] && !Cargo[playerid][Cargo1] && !Cargo[playerid][Cargo2]) return SCM(playerid, -1, "Nгo tem permissгo.");
Reply
#9

Quote:
Originally Posted by xCR7
Посмотреть сообщение
Mas nesse caso ele vai poder usar Cargo[playerid][Admin] e Cargo[playerid][Cargo].

Й sу ele excluir a enum anterior e usar desse jeito.
Bota seu esse enum no pawno e compila. Ai vocк vai ver o que eu expliquei.

Quote:
Originally Posted by Artista
Посмотреть сообщение
Tente fazer dessa forma:
pawn Код:
if(!Cargo[playerid][Admin] && !Cargo[playerid][Cargo1] && !Cargo[playerid][Cargo2]) return SCM(playerid, -1, "Nгo tem permissгo.");
Й sempre bom economizarmos mem|уria, no caso de um GM 'gigantesco'. :P
Reply
#10

Quote:
Originally Posted by xCR7
Посмотреть сообщение
Interprete o seu comando.

pawn Код:
if(Cargo[playerid][Admin] == 0 || Cargo[playerid][Cargo1] == 0 || Cargo[playerid][Cargo2] == 0) return SCM(playerid, -1, "Nгo tem permissгo.");
Se ele for Admin = 0 ou Cargo 1 = 0 ou Cargo 2 = 0 vai retornar a mensagem.
E o que eu fiz.

Quote:
Originally Posted by MultiKill
Посмотреть сообщение
Verifique se vocк estб armazenado certo na variavel cargo1.
Sim, eu uso comandos para setar.

Quote:
Originally Posted by JonathanFeitosa
Посмотреть сообщение
Tб, o que vocк estб fazendo ai... Simples..

Resumidamente, estб assim seu code: O Cargo desse player de admin й 0.(correto) O Cargo desse player do Cargo1 й 0. O Cargo desse player do Cargo2 й 0.(errado)

Ou seja, sem lуgica. Vocк nгo estб dando valor as variбveis Cargo. Ela sempre vai ser 0. Nunca vai sair do 0.

Correto seria:

pawn Код:
Cargo[playerid][Cargos/*ou qualquer outra coisa definida no enum*/] = 1;
Cargo[playerid][Cargos] = 2;
Cargo[playerid][Cargos] = 3;

// Nas condiзхes
if(Cargo[playerid][Cargos] == 0) SendClientMessage(playerid, -1, "Vocк tem Cargo 0");
if(Cargo[playerid][Cargos] == 1) SendClientMessage(playerid, -1, "Vocк tem Cargo 1");
if(Cargo[playerid][Cargos] == 2) SendClientMessage(playerid, -1, "Vocк tem Cargo 2");
if(Cargo[playerid][Cargos] == 3) SendClientMessage(playerid, -1, "Vocк tem Cargo 3");
Por que pega o Cargo Admin? porque vocк estб fazendo o uso correto dela de acordo nisso que eu expliquei.
Bom, e quase isso que eu queria fazer, como sу existem 2 Nнveis de Nнveis, Por exemplo 0 e 1 Se a pessoa tiver com 0 nгo й do Cargo, e se ela tiver com 1 Ela й do cargo. Mas ainda sim nгo consegui.

Quote:
Originally Posted by xCR7
Посмотреть сообщение
Faz a enum desse jeito.

pawn Код:
enum Var {  
    Admin,
    Cargo
};
new Cargo[MAX_PLAYERS][Var];

/* Uso: Cargo[playerid][Admin] = 1;
   Cargo[playerid][Cargo] = 1 */
Eu tenho isso tambйm cara.



Quote:
Originally Posted by Artista
Посмотреть сообщение
Tente fazer dessa forma:
pawn Код:
if(!Cargo[playerid][Admin] && !Cargo[playerid][Cargo1] && !Cargo[playerid][Cargo2]) return SCM(playerid, -1, "Nгo tem permissгo.");
Mas ai o Jogador teria que ser os 3 Cargos ao mesmo tempo, '&&' '||', Mas ainda sim nгo resolveu a negaзгo.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)