[Ajuda] Criaзгo do /Admins
#1

Olб forum samp, eu gostaria de uma ajuda pra fazer um comando /Admins, sou novo em pawno, to comeзando agora e nгo estou conseguindo criar o comando, estou me perdendo.

enum de informaзхes:
Code:
enum InfoPlayer {

	Fundador,
	Senha,
	Skin,
	Score,
	Matou,
	Morreu,
	Dinheiro
};
Fundador й o ъnico cargo criado atualmente, se puderem me ajudar a criar um /Admins em dialog, seria uma beleza, aguardo...
Reply
#2

Quote:
Originally Posted by Hunterx157
View Post
Olб forum samp, eu gostaria de uma ajuda pra fazer um comando /Admins, sou novo em pawno, to comeзando agora e nгo estou conseguindo criar o comando, estou me perdendo.

enum de informaзхes:
Code:
enum InfoPlayer {

	Fundador,
	Senha,
	Skin,
	Score,
	Matou,
	Morreu,
	Dinheiro
};
Fundador й o ъnico cargo criado atualmente, se puderem me ajudar a criar um /Admins em dialog, seria uma beleza, aguardo...
PHP Code:
CMD:admins(playerid){
    new 
String[128],
    
Nome[24];
    
    for(new 
iMAX_PLAYERS; ++i){
        if(
IsPlayerConnected(i) && /*sua varialvel*/[i][Fundador]){
            
GetPlayerName(i,Nome,24);
            
format(String,100,"%s (id:%d) й um fundador",Nome,i);
            
SendClientMessage(playerid,-1,String);
        }
    }
    return 
1;

Reply
#3

Certo, ficou legal, mas como faзo pra adicionar novos cargos no comando?
Reply
#4

Quote:
Originally Posted by Hunterx157
View Post
Certo, ficou legal, mas como faзo pra adicionar novos cargos no comando?
Tente desб forma talvez sejб mais facil para vocк adicionar novos cargos, mas se prefirir da primeira forma eu tambem lhe explico...
PHP Code:
Player_Informacoes[][PlayerLevel] = 1//isso setarб o player de ajudante
Player_Informacoes[][PlayerLevel] = 2//isso setarб o player de Administrador
Player_Informacoes[][PlayerLevel] = 3//isso setarб o player de Gerente
Player_Informacoes[playerid][PlayerLevel] = 0;//isso serб usado para remover o adm ou setar level do adm para 0. 
PHP Code:
enum Meu_Enum  //O enum servirar para ser usado em nossa futura variavel Player_Informacoes
{
    
PlayerLevel
};
new 
Player_Informacoes[MAX_PLAYERS][Meu_Enum]; //aqui criamos a variavel Player_Informacoes para o slot maximo de playes no servidor.
CMD:admins(playerid)
{
    new 
String[128],
    
Nome[24];
    for(new 
iMAX_PLAYERS; ++i)//abrimos um loop que correrб por todos os players...
    
{
        if(
IsPlayerConnected(i))//isso vai checar se o player estб conectado, e se estiver vai dar continuidade ao loop.
        
{
            if(
Player_Informacoes[i][PlayerLevel] == 1// se o level do player for 1
            
{
                
String "Ajudante";// setarб a string que guardarб o cargo de nosso players para Ajudante.
            
}
            else if(
Player_Informacoes[i][PlayerLevel] == 2// caso nгo for e se for igual a 2 setara nossa string para Administrador
            
{
                
String "Administrador";
            }
            else if(
Player_Informacoes[i][PlayerLevel] == 3// aso nгo for e se for igual a 2 setara nossa string para Gerente
            
{
                
String "Gerente";
            }
            
            
/*se por acaso vocк quiser criar mais um  level;
            else if(Player_Informacoes[i][PlayerLevel] == 4) 
            {
                String = "Nome Cargo";
            }
            e assim sucessivamente atй criar todos leveis que vc deseja*/
            
            
GetPlayerName(i,Nome,24);//pegando o nome do admin
            
new string[128],stringa[300];
            
format(string,sizeof(string),"{33AA33}Nome\t{FF0000}ID\t{FFFF00}Cargo\n{33AA33}%s\t{FF0000}%i\t{FFFF00}%s\n",Nome,i,String);
            
strcat(stringa,string);
            
ShowPlayerDialog(playerid2345DIALOG_STYLE_TABLIST_HEADERS"Admins Online:",stringa,"Fechar",#);
        
}
    }
    return 
1;

Reply
#5

Queria que ficasse com os cargos que eu jб criei e da forma que passei no primeiro cуdigo, pois me parece mais fбcil, ainda nгo sou muito bom com isso, e nгo entendi muito bem o seu cуdigo kkjj, mas se tiver vontade de me explicar seu cуdigo eu posso usб-lo.

Olha como ficou meus cargos:
Code:
enum InfoPlayer {

	Fundador,
	Gerente,
	Admin,
	Senha,
	Skin,
	Score,
	Matou,
	Morreu,
	Dinheiro
};
Como fica o .ini da conta do Player quando ele nгo й staff:
Code:
Senha = jubileu
Score = 0
Matou = 0
Morreu = 0
Dinheiro = 0
Fundador = 0
Gerente = 0
Admin = 0
Quando ele tem um dos 3 cargos o 0 se torna 1, ficando assim:
Code:
Senha = jubileu
Score = 0
Matou = 0
Morreu = 0
Dinheiro = 0
Fundador = 1
Gerente = 1
Admin = 1
Nos comandos que eu crio pra admin fica assim:
Code:
CMD:dararma(playerid, params[])
{
	if(Player[playerid][Fundador] <= 0) return SendClientMessage(playerid, COLOR_ERRO, "[ERRO] Vocк nгo tem permissгo!"); // Se a conta for level 0 no fundador ele nгo vai conseguir usar o comando, entгo fica mais fбcil pra mim
	new id, armaid, balas;
	
	if(sscanf(params, "ddd", id, armaid, balas)) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Uso correto: /DarArma [ ID ] [ Arma ID ] [ Muniзгo ]");
	if(!IsPlayerConnected(id)) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Ninguem online com esse ID!");
	if(armaid < 1 || armaid > 46) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] ID de arma invбlida!");
	if(balas < 1 || balas > 1000) return SendClientMessage(playerid, COLOR_ERRO, "[ x ] Use no mнnimo 1 de muniзгo e no maximo 1000!");
	
	GivePlayerWeapon(id, armaid, balas);
	
	format(gStr, sizeof(gStr), "[ > ] Voce deu a arma %s com %d de municao para o(a) jogador(a) %s", GetArmaNome(armaid), balas, pNome(id));
	SendClientMessage(playerid, COLOR_AMARELO, gStr);

	format(gStr, sizeof(gStr), "[ > ] %s lhe deu a arma %s com %d de municao.", pNome(playerid), GetArmaNome(armaid), balas);
	SendClientMessage(id, COLOR_AMARELO, gStr);
	return 1;
}
Reply
#6

PHP Code:
CMD:admins(playerid)
{
    new 
String[128],
        
Nome[24],
        
string[128],
        
AdminList[400];
    
    for(new 
iMAX_PLAYERS; ++i)
    {
        if(
IsPlayerConnected(i))
        {
            if(
Player[playerid][Admin] == 1String "Administrador";
            if(
Player[playerid][Gerente] == 2String "Gerente";
            if(
Player[playerid][Fundador] == 3String "Fundador";
            
GetPlayerName(i,Nome,24);
            
format(string,sizeof(string),"{33AA33}Nome\t{FF0000}ID\t{FFFF00}Cargo\n{33AA33}%s\t{FF0000}%i\t{FFFF00}%s\n",Nome,i,String);
            
strcat(AdminList,string);
            if (
strlen(AdminList) > 0)
               
ShowPlayerDialog(playerid2345DIALOG_STYLE_TABLIST_HEADERS"# Administraзгo",AdminList,"Fechar",#);
            
else
               
SendClientMessage(playerid0xff0000ff,"[x] Nгo hб membros da administraзгo online no momento!");
            
        }
    }
    return 
1;

Reply
#7

PHP Code:
String[128
Desperdнcio de memуria...
Reply
#8

Quote:
Originally Posted by Izaque1998
View Post
PHP Code:
CMD:admins(playerid)
{
    new 
String[128],
        
Nome[24],
        
string[128],
        
AdminList[400];
    
    for(new 
iMAX_PLAYERS; ++i)
    {
        if(
IsPlayerConnected(i))
        {
            if(
Player[playerid][Admin] == 1String "Administrador";
            if(
Player[playerid][Gerente] == 2String "Gerente";
            if(
Player[playerid][Fundador] == 3String "Fundador";
            
GetPlayerName(i,Nome,24);
            
format(string,sizeof(string),"{33AA33}Nome\t{FF0000}ID\t{FFFF00}Cargo\n{33AA33}%s\t{FF0000}%i\t{FFFF00}%s\n",Nome,i,String);
            
strcat(AdminList,string);
            if (
strlen(AdminList) > 0)
               
ShowPlayerDialog(playerid2345DIALOG_STYLE_TABLIST_HEADERS"# Administraзгo",AdminList,"Fechar",#);
            
else
               
SendClientMessage(playerid0xff0000ff,"[x] Nгo hб membros da administraзгo online no momento!");
            
        }
    }
    return 
1;

Ainda nгo ficou como eu queria, eu queria o /Admins em DIALOG_STYLE_MSGBOX, mas quando mudo a forma do dialogo ele fica bugado...
Reply
#9

Tenta fazer o comando por dialog assim:

PHP Code:
CMD:Admins(playerid)
    {
        new 
STR[250], AdminONCounts;
        for(new 
0MAX_PLAYERSx++)
         {
            if(
IsPlayerConnected(x))
            {
                new 
Aname[25];
                
GetPlayerName(xAname25);
                if(
Player_Informacoes[playerid][PlayerLevel] == 1)
                {
                    
format(STR1400"{FFFFFF}%s {33AAFF}[ Administrador(a) ] {FF0000}[ %d ]\n"Anamex);
                    
AdminON++;
                }
                else if(
Player_Informacoes[playerid][PlayerLevel] == 2)
                {
                    
format(STR1400"{FFFFFF}%s {FFFF00}[ Gerente(a) ] {FF0000}[ %d ]\n"Anamex);
                     
AdminON++;
                }
                else if(
Player_Informacoes[playerid][PlayerLevel] == 3)
                {
                    
format(STR1400"{FFFFFF}%s {FF8000}[ Fundador(a) ] {FF0000}[ %d ]\n"Anamex);
                    
AdminON++;
                }
                
Counts++;
            }
            if(
AdminON == 0)
            {
                
ShowPlayerDialog(playerid5000DIALOG_STYLE_MSGBOX"Administradores:""{FF0000}Nбo hб administrador ( ADM ) online no momento!'""Fechar""");
            }
            else if(
AdminON == 1)
            {
                
ShowPlayerDialog(playerid5001DIALOG_STYLE_LIST"Administradores:"STR"Fechar""");
            }
        }
         return 
1;
    } 
Obs: o dialog nгo vai aparecer se tiver tipo: Player[playerid][Gerente] = 1; й Player[playerid][Admin] = 1;

tiverem ao mesmo tempo!
Reply
#10

Tente desta forma:
PHP Code:
CMD:admins(playerid

    new 
String[30], 
        
Nome[24], 
        
string[100], 
        
AdminList[100]; 
     
    for(new 
i<= GetPlayerPoolSize(); ++i
    { 
        if(
IsPlayerConnected(i)) 
        { 
            if(
Player[playerid][Admin] == 1String "Administrador"
            else if(
Player[playerid][Gerente] == 2String "Gerente"
            else 
String "Fundador"

            
GetPlayerName(i,Nome,24); 
            
format(string,sizeof(string),"%s %s[%d]",String,Nome,i); 
            
strcat(AdminList,string); 
        } 
    } 
    
    if (
strlen(AdminList) > 0
        
ShowPlayerDialog(playerid2345,DIALOG_STYLE_MSGBOX"# Administraзгo",AdminList,"Fechar",#); 
    
else 
        
SendClientMessage(playerid0xff0000ff,"[x] Nгo hб membros da administraзгo online no momento!"); 
        
    return 
1

Reply
#11

Tenta com esse:
Code:
COMMAND:admins(playerid, params[]) 
{ 
    new 
    String[15], Nome[MAX_PLAYER_NAME], string[50], 
        	AdminList[400]; 
     
    for(new j=GetPlayerPoolSize(),i; i!=j; ++i)
    { 
        if( IsPlayerConnected(i) && Player[i][Admin] ) 
        { 
        	GetPlayerName(i, Nome, sizeof Nome); 
        	switch(Player[ i ][Admin]) {
        		case 1:String = "Administrador";
        		case 2:String = "Gerente"; 
        		case 3:String = "Fundador"; 
        	}
        	format( string, sizeof string),"Nome %s ID %i Cargo %s\r\n", Nome, i, String); 
            strcat( AdminList, string, sizeof AdminList); 
        }
        if(!strlen(AdminList)) {
        	SendClientMessage(playerid, 0xff0000ff,"[x] Nгo hб membros da administraзгo online no momento!"); 
        }
        else { 
        	ShowPlayerDialog(playerid, 2345, DIALOG_STYLE_MSGBOX, "# Administraзгo",AdminList,"Fechar",#); 
        } 
    } 
    return 1; 
}
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)