[Ajuda] Erro no sistema de Administraзгo
#1

Eai galera tudo bem? espero que sim.

Bom vamos lб.

Estou fazendo minha GM do zero e estou enfrentando vбrios problemas pois sou novo em programaзгo de pawno, entгo venho aqui pedir a ajuda de vocкs.

Eu planejo ter 5 cargos de administraзгo no meu servidor, entгo fiz esse comando /setadmin aqui logo abaixo.

Код:
CMD:setadmin(playerid, params[])
{
	if(!IsPlayerAdmin(playerid) ) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Comando invalido!");
	new string[220], jogador[24], ID, level;
	if(sscanf(params, "ud", ID, level)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Use: /setadmin [id] [level]");
	if(!IsPlayerConnected(ID)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Jogador invбlido!");
	if(level < 0 || level > 5) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | O level para ADM й de 0 a 5");
	GetPlayerName(ID, jogador, 24);
	format(string, sizeof(string), "| SERVER | O(A) Admin(a) %s promoveu o jogador %s a membro da administraзгo!", GetPlayerNameEx(playerid), jogador);
	SendClientMessageToAll(0x0099CCAA, string);

	return 1;
}
Nгo sei se esta tudo correto, dentro de game ele demonstra estar tudo certinho.

Aqui esta a stock dos cargos.

Код:
stock CargoAdmin(playerid)
{
    new var[17];
    switch(pAdmin[playerid])
    {
        case 1: var = "Colaborador";
        case 2: var = "Ajudante";
        case 3: var = "Sub-mod";
        case 4: var = "Moderador(a)";
        case 5: var = "Admin";
    }
    return var;
}
Essa stock vou usar nos comandos, para separar cada comando para cada cargo por exemplo esse logo abaixo.

Код:
CMD:dargrana(playerid, params[])
{
    new id, quantidade, jogador[24], admin[24], string[128], strg[128];
	if(pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5)
	return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Comando invбlido!");
    if(sscanf(params, "dd", id, quantidade)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Use: /dargrana [id] [grana]");
    {
        if(!IsPlayerConnected(id)) return SendClientMessage(playerid, 0xF50A0EFF, "| ERRO | Jogador invбlido!");
        GetPlayerName(id, jogador, 24);
        GetPlayerName(playerid, admin, 24);
        format(string, sizeof(string), "| SERVER | O(A) %s(a) %s lhe deu R$ %d.", CargoAdmin(playerid), admin, quantidade);
        format(strg, sizeof(strg), "| INFO | Vocк deu R$ %d para %s.", quantidade, jogador);
        GivePlayerMoney(id, quantidade);
        SendClientMessage(id, 0x0099CCAA, string);
        SendClientMessage(playerid, 0x0099CCAA, strg);

	}
	return 1;
}
Os ъnicos que terгo acesso a esse comando sгo do cargo numero 3 pra cima.


Aqui esta minha public "OnPlayerText"

Код:
public OnPlayerText(playerid, text[])
{
 	switch (pAdmin[playerid]) // A variavel de Admin
	{
		case 0: // se й Level 0
		{
        	new string[256];
        	format(string,sizeof(string),"{FFFFFF}%s{FFFFFF} [%d]{FFFFFF} diz: %s ",GetPlayerNameEx(playerid), playerid,text);
        	SendClientMessageToAll(playerid,string);
    	}
	    case 1: // se й Level 1
	    {
        	new string[256];
        	format(string,sizeof(string),"%s{FFFFFF} [{FFFB00}Colaborador{FFFFFF}] [%d]{FFFFFF} diz: %s",GetPlayerNameEx(playerid), playerid,text);
        	SendClientMessageToAll(playerid,string);
    	}
    	case 2: // se й Level 2
    	{
        	new string[256];
        	format(string,sizeof(string),"%s{FFFFFF} [{F77707}Ajudante{FFFFFF}] [%d]{FFFFFF} diz: %s",GetPlayerNameEx(playerid), playerid,text);
        	SendClientMessageToAll(playerid,string);
    	}
    	case 3: // se й Level 3
    	{
        	new string[256];
        	format(string,sizeof(string),"%s{FFFFFF} [{0DA1DB}Sub-mod{FFFFFF}] [%d]{FFFFFF} diz: %s",GetPlayerNameEx(playerid), playerid,text);
        	SendClientMessageToAll(playerid,string);
    	}
    	case 4: // se й Level 4
    	{
        	new string[256];
        	format(string,sizeof(string),"%s{FFFFFF} [{DE0720}Moderador{FFFFFF}] [%d]{FFFFFF} diz: %s",GetPlayerNameEx(playerid), playerid,text);
        	SendClientMessageToAll(playerid,string);
    	}
    	case 5: // se й Level 5
    	{
        	new string[256];
        	format(string,sizeof(string),"%s{FFFFFF} [{41A310}Admin{FFFFFF}] [%d]{FFFFFF} diz: %s",GetPlayerNameEx(playerid), playerid,text);
        	SendClientMessageToAll(playerid,string);
    	}
    }
	return 0;
}

Meu erro й que quando eu entro em game e uso o /setadmin 0 1 por exemplo, o cargo nгo vai, tipo a tag no chat nгo aparece, e a tag em cima da cabeзa do chatbubble tambйm nгo aparece. No exemplo ai, eu dei colaborador pra min, e no comando que eu dei como exemplo sу pode usar do cargo 3 pra cima, eu com o cargo de colaborador (1) consigo usar o /dargrana, e quem nem mesmo logou na rcon consegue usar qualquer um dos comandos.

Nгo sei como resolver isso agradeзo se alguйm me ajudar.

Caso nгo tenham entendido posso explicar de uma maneira mais simplificada.
Reply
#2

isso?

PHP код:

CMD
:setadmin(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invalido!");
    new 
string[220], jogador[24], IDlevel;
    if(
sscanf(params"ud"IDlevel)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setadmin [id] [level]");
    if(!
IsPlayerConnected(ID)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invбlido!");
    if(
level || level 5) return SendClientMessage(playerid0xF50A0EFF"| ERRO | O level para ADM й de 0 a 5");
    
pAdmin[ID] = level;
    
GetPlayerName(IDjogador24);
    
format(stringsizeof(string), "| SERVER | O(A) Admin(a) %s promoveu o jogador %s a membro da administraзгo!"GetPlayerNameEx(playerid), jogador);
    
SendClientMessageToAll(0x0099CCAAstring);
    return 
1;

Reply
#3

Quote:
Originally Posted by Marllun
Посмотреть сообщение
isso?

PHP код:

CMD
:setadmin(playeridparams[])
{
    if(!
IsPlayerAdmin(playerid) ) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Comando invalido!");
    new 
string[220], jogador[24], IDlevel;
    if(
sscanf(params"ud"IDlevel)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Use: /setadmin [id] [level]");
    if(!
IsPlayerConnected(ID)) return SendClientMessage(playerid0xF50A0EFF"| ERRO | Jogador invбlido!");
    if(
level || level 5) return SendClientMessage(playerid0xF50A0EFF"| ERRO | O level para ADM й de 0 a 5");
    
pAdmin[ID] = level;
    
GetPlayerName(IDjogador24);
    
format(stringsizeof(string), "| SERVER | O(A) Admin(a) %s promoveu o jogador %s a membro da administraзгo!"GetPlayerNameEx(playerid), jogador);
    
SendClientMessageToAll(0x0099CCAAstring);
    return 
1;

Caraca mano, vocк sу mudou uma coisinha no comando inteiro e conseguiu resolver... Sou muito burro slc kkk
Resolveu o problema das tags, vou conferir os comandos agora mano <3. Brigadгo mesmo
Reply
#4

Entгo Marllun, as tags na cabeзa e no chat estгo perfeitas, mas os comandos nгo estгo.

Tipo, pra eu usar os comandos eu preciso colocar /setadmin 0 0 (jogador) , coloquei 1,2,3,4, e 5 e nenhum comando funcionou em nenhum cargo, e todos os comandos estгo com isso:

Код:
if(pAdmin[playerid] == 1 || pAdmin[playerid] == 2 || pAdmin[playerid] == 3 || pAdmin[playerid] == 4 || pAdmin[playerid] == 5)
Reloguei no server, e posso usar os comando sem nem mesmo logar na rcon, somente o /setadmin que aparece "Comando invбlido" , todos os outros comandos tenho acesso, mas ai quando dou algum cargo qualquer nenhum comando funciona kkk. Pode me ajudar?
Reply
#5

Nгo hб necessidades de fazer essa checagem, o cуdigo abaixo checa se o comando pode ser usado por cada level.

PHP код:
if(pAdmin[playerid] == || pAdmin[playerid] == || pAdmin[playerid] == || pAdmin[playerid] == || pAdmin[playerid] == 5
Isso sгo operadores lуgicos. Mas Guilherme quando devo usar os operados lуgicos? Simples.
Ex: Tenho um sistema de VIP em meu servidor e quero fazer com que o comando "testando" seja utilizado tanto pelos VIPS quanto pelos administradores, entгo ficaria:
PHP код:
cmd:testando(playerid)
{
   if(
APlayerData[playerid][PlayerLevel] >= || APlayerData[playerid][LevelVIP] >= 1//"APlayerData" й o nome que estб no meu enum, foi um exemplo tirado do meu servidor.
   
{
        
SendClientMessage(playerid, -1"Comando testando");
   }
   else 
SendClientMessage(playerid, -1"Vocк nгo й um administrador");

'&&' representa "AND" ou "e", e '||' representa "OR" ou "ou". Seus resultados dependeram sempre da ordem em que os valores estгo operando.

Entгo, trocando em miъdos perceba:

PHP код:
if(pAdmin[playerid] >= 1
Ou seja, sу irб pode usar o comando administradores com o level maior ou igual a 1.

Eu tenho outra maneira bem mais simples de desenvolver um sistema administrativo, caso queira estou disposta a ajudar.

Veja mais sobre os operadores nesse tutorial: Operadores

Abraзos!
Reply
#6

Quote:
Originally Posted by Gguiz
Посмотреть сообщение
Nгo hб necessidades de fazer essa checagem, o cуdigo abaixo chega se o comando pode ser usado por cada level.

PHP код:
if(pAdmin[playerid] == || pAdmin[playerid] == || pAdmin[playerid] == || pAdmin[playerid] == || pAdmin[playerid] == 5
Entгo, trocando em miъdos perceba:

PHP код:
if(pAdmin[playerid] >= 1
Ou seja, sу irб pode usar o comando administradores com o level maior ou igual a 1.

Eu tenho outra maneira bem mais simples de desenvolver um sistema administrativo, caso queira estou disposta a ajudar.

Abraзos!
Vou fazer do seu jeito <3 tomare que de certo.

Esta disposto a ajudar? (й que a maioria ajuda sу com dinheiro envolvido tlgd, "aaa sу ajudo se me pagar").

Desculpa se atingiu vocк de alguma maneira й que a maioria й assim mesmo.
Reply
#7

Continua a mesma coisa, eu logo no servidor com todos os comandos disponнveis, logo na rcon dou /setadmin e nenhum comando mais funciona kkk

Nгo sei se eu que sou burro ou sla.
Reply
#8

Me add discord eu posso ajudar.
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)