[Ajuda] Hierarquia Pra pegar players Off
#1

Bom meu sistema de hierarquia que mostra os cargos dos players da favela estб assim:
PHP код:
if(dialogid == 9999) 
{ 
    return 
ShowPlayerDialog(playerid, DIALOG_HIERARQUIA, DIALOG_STYLE_LIST, "Hierarquia Da Comunidade", 
    
"Administradores\n\ 
    Lнderes da Facзгo\n\ 
    Donos do morro\n\ 
    Frentes\n\ 
    Gerentes\n\ 
    Vapores\n\ 
    Fogueteiros\n\ 
    Radinhos\n"
, 
    
"Escolher", "Cancelar"); 
} 
if(
dialogid == DIALOG_HIERARQUIA) 
{ 
if(
response) 
{ 
new 
gStr[128], info[2048]; 
if(
listitem == 0)// Administrador 
{ 
for(new 
i; i < MAX_PLAYERS; i++) 
  { 
      if(
Player[i][pAdmin] > 0 && Player[i][pFaccoes] ==  Player[playerid][pFaccoes]) 
      { 
          
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", getPName(i)); 
          
strcat(info, gStr); 
      } 
  } 
strcat(info, " "); 
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Administradores da Comunidade", info,"Ok","Voltar"); 
return 
1; 
} 
if(
listitem == 1)// Lider 
{ 
for(new 
i; i < MAX_PLAYERS; i++) 
  { 
      if(
Player[i][pLider] > 0 && Player[i][pFaccoes] ==  Player[playerid][pFaccoes]) 
      { 
          
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", getPName(i)); 
          
strcat(info, gStr); 
      } 
  } 
strcat(info, " "); 
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Lider da Facзгo", info,"Ok","Voltar"); 
return 
1; 
} 
if(
listitem == 2)// Donos do morro 
{ 
for(new 
i; i < MAX_PLAYERS; i++) 
  { 
      if(
Player[i][pDM] > 0 && Player[i][pFaccoes] ==  Player[playerid][pFaccoes]) 
      { 
          
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", getPName(i)); 
          
strcat(info, gStr); 
      } 
  } 
strcat(info, " "); 
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Dono da Comunidade", info, "Ok","Voltar"); 
return 
1; 
} 
if(
listitem == 3)// Frentes 
{ 
for(new 
i; i < MAX_PLAYERS; i++) 
  { 
      if(
Player[i][pFrente] > 0 && Player[i][pFaccoes] ==  Player[playerid][pFaccoes]) 
      { 
               
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", getPName(i)); 
              
strcat(info, gStr); 
      } 
  } 
strcat(info, " "); 
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Frente da Comunidade", info,"Ok","Voltar"); 
return 
1; 
} 
if(
listitem == 4)// Gerentes 
{ 
for(new 
i; i < MAX_PLAYERS; i++) 
  { 
      if(
Player[i][pGerente] > 0 && Player[i][pFaccoes] ==  Player[playerid][pFaccoes]) 
      { 
          
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", getPName(i)); 
          
strcat(info, gStr); 
      } 
  } 
strcat(info, " "); 
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Gerente da Comunidade",info,"Ok","Voltar"); 
return 
1; 
} 
if(
listitem == 5)// Vaporzгo 
{ 
for(new 
i; i < MAX_PLAYERS; i++) 
  { 
      if(
Player[i][pVapor] > 0 && Player[i][pFaccoes] ==  Player[playerid][pFaccoes]) 
      { 
          
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", getPName(i)); 
          
strcat(info, gStr); 
      } 
  } 
strcat(info, " "); 
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Vapor da Comunidade", info,"Ok","Voltar"); 
return 
1; 
} 
if(
listitem == 6)// Fogueteiros 
{ 
for(new 
i; i < MAX_PLAYERS; i++) 
  { 
      if(
Player[i][pFogueteiro] > 0 && Player[i][pFaccoes] ==  Player[playerid][pFaccoes]) 
      { 
          
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", getPName(i)); 
          
strcat(info, gStr); 
      } 
  } 
strcat(info, " "); 
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Fogueteiro da Comunidade", info,"Ok","Voltar"); 
return 
1; 
} 
} 
return 
1; 
} 
Mas sу pega os players online tipo sou frente ai se eu sai do servido nгo vai mostra mais eu no cargo de frente ai se eu loga aparece ai eu queria que pega-se os players setados de algum cargo offline tambйm
Reply
#2

Vocк vai plecisar usar uma include de salvamento, DOF2, SQL, MySQL, dini...

Salve o nome do climinoso em um arquivo de dados e velifique se esse nome estб online.
Reply
#3

meu salvamento й DOF2 pode me fazer uma base?
Reply
#4

Vou tentar desclever pala vocк.

Clie um arquivo chamado faction_1.ini , nele vocк vai salvar os cargos, exemplo:

[faction_1.ini]
Lider: Belingela
Dono: Macalгo
Flente: Lalanja
Gelente: Lasanha
Vapor: Fumasa
Fogueteilo: Jacale

Depois й sу vocк usar o GET do DOF2 pala pegar os nomes.
Reply
#5

Quote:
Originally Posted by Cebolacio
Посмотреть сообщение
Vou tentar desclever pala vocк.

Clie um arquivo chamado faction_1.ini , nele vocк vai salvar os cargos, exemplo:

[faction_1.ini]
Lider: Belingela
Dono: Macalгo
Flente: Lalanja
Gelente: Lasanha
Vapor: Fumasa
Fogueteilo: Jacale

Depois й sу vocк usar o GET do DOF2 pala pegar os nomes.
Mano nгo entendi nd so entendi a parte de criar o arquivo.ini sou mt novato em programaзгo pode explicar um pouco mais fбcil?
Reply
#6

Seguinte, pelo o que eu vi vocк salva essas informaзхes no jogador, tipo qual a facзгo do player, qual cargo, etc.. Mas o ideal й que vocк crie um salvamento em DOF2 para as facзхes criminosas do seu servidor, comece com um Enum:

PHP код:
#define MAX_FACCOES 50 //Mбximo de facзхes que vocк quer ter no seu servidor, tanto faz o nъmero, vocк que manda!
enum FaccaoEnum //topo do cуdigo  
{  
 
Administrador1[MAX_PLAYER_NAME],
 
Administrador2[MAX_PLAYER_NAME],
 
Administrador3[MAX_PLAYER_NAME],
 
Lider1[MAX_PLAYER_NAME],
 
Lider2[MAX_PLAYER_NAME],
 
Lider3[MAX_PLAYER_NAME],
 
DonoComunidade1[MAX_PLAYER_NAME],
 
Frente[MAX_PLAYER_NAME],
 
CofreFaccao,
 
DrogasFaccao
 
//Por aн vai... O ъltimo item do Enum nгo tem "," no final, nгo esqueзa...
}
new 
FaccaoDados[MAX_FACCOES][FaccaoEnum]; 
Agora crie uma stock para carregar as facзхes:

PHP код:
stock CarregarFaccoes()  //final do cуdigo 
{   
    new 
Contador[50];
    for(new 
i = 0; i < MAX_FACCOES; i++)   
    {       
    
format(Contador, sizeof(Contador), PASTA_VEICULOS, i); 
    if(
DOF2_FileExists(Contador))
    {
        
strmid(FaccaoDados[i][Administrador1], DOF2_GetString(Contador, "Administrador1"), 0, strlen(DOF2_GetString(Contador, "Administrador1")), MAX_PLAYER_NAME); //Quando й texto faзa desse modo
        
strmid(FaccaoDados[i][Administrador1], DOF2_GetString(Contador, "Administrador2"), 0, strlen(DOF2_GetString(Contador, "Administrador2")), MAX_PLAYER_NAME);
        
strmid(FaccaoDados[i][Administrador1], DOF2_GetString(Contador, "Administrador3"), 0, strlen(DOF2_GetString(Contador, "Administrador3")), MAX_PLAYER_NAME);
        
strmid(FaccaoDados[i][Placa], DOF2_GetString(Contador, "Lider1"), 0, strlen(DOF2_GetString(Contador, "Lider1")), 10);
        
//etc...
        
FaccaoDados[i][CofreFaccao] = DOF2_GetInt(Contador, "CofreFaccao"); //Valores inteiros desse modo
        
FaccaoDados[i][DrogasFaccao] = DOF2_GetInt(Contador, "DrogasFaccao");
    }
    }   
    return 
1;   
} 
Reply
#7

Quote:
Originally Posted by GunnerCoder
Посмотреть сообщение
Seguinte, pelo o que eu vi vocк salva essas informaзхes no jogador, tipo qual a facзгo do player, qual cargo, etc.. Mas o ideal й que vocк crie um salvamento em DOF2 para as facзхes criminosas do seu servidor, comece com um Enum:

PHP код:
#define MAX_FACCOES 50 //Mбximo de facзхes que vocк quer ter no seu servidor, tanto faz o nъmero, vocк que manda!
enum FaccaoEnum //topo do cуdigo  
{  
 
Administrador1[MAX_PLAYER_NAME],
 
Administrador2[MAX_PLAYER_NAME],
 
Administrador3[MAX_PLAYER_NAME],
 
Lider1[MAX_PLAYER_NAME],
 
Lider2[MAX_PLAYER_NAME],
 
Lider3[MAX_PLAYER_NAME],
 
DonoComunidade1[MAX_PLAYER_NAME],
 
Frente[MAX_PLAYER_NAME],
 
CofreFaccao,
 
DrogasFaccao
 
//Por aн vai... O ъltimo item do Enum nгo tem "," no final, nгo esqueзa...
}
new 
FaccaoDados[MAX_FACCOES][FaccaoEnum]; 
Agora crie uma stock para carregar as facзхes:

PHP код:
stock CarregarFaccoes()  //final do cуdigo 
{   
    new 
Contador[50];
    for(new 
i = 0; i < MAX_FACCOES; i++)   
    {       
    
format(Contador, sizeof(Contador), PASTA_VEICULOS, i); 
    if(
DOF2_FileExists(Contador))
    {
        
strmid(FaccaoDados[i][Administrador1], DOF2_GetString(Contador, "Administrador1"), 0, strlen(DOF2_GetString(Contador, "Administrador1")), MAX_PLAYER_NAME); //Quando й texto faзa desse modo
        
strmid(FaccaoDados[i][Administrador1], DOF2_GetString(Contador, "Administrador2"), 0, strlen(DOF2_GetString(Contador, "Administrador2")), MAX_PLAYER_NAME);
        
strmid(FaccaoDados[i][Administrador1], DOF2_GetString(Contador, "Administrador3"), 0, strlen(DOF2_GetString(Contador, "Administrador3")), MAX_PLAYER_NAME);
        
strmid(FaccaoDados[i][Placa], DOF2_GetString(Contador, "Lider1"), 0, strlen(DOF2_GetString(Contador, "Lider1")), 10);
        
//etc...
        
FaccaoDados[i][CofreFaccao] = DOF2_GetInt(Contador, "CofreFaccao"); //Valores inteiros desse modo
        
FaccaoDados[i][DrogasFaccao] = DOF2_GetInt(Contador, "DrogasFaccao");
    }
    }   
    return 
1;   
} 
Mano jб uso pra salve jб tem mano mais tipo queria bota pra pegar os players offline jб tem funзгo pra pega os cargos tendeu
Reply
#8

Quote:
Originally Posted by Dimbalada
Посмотреть сообщение
Mano jб uso pra salve jб tem mano mais tipo queria bota pra pegar os players offline jб tem funзгo pra pega os cargos tendeu
Manda aн o cуdigo do seu sistema de salvamento das facзхes.
Reply
#9

Quote:
Originally Posted by GunnerCoder
Посмотреть сообщение
Manda aн o cуdigo do seu sistema de salvamento das facзхes.
PHP код:
As enum sгo
Dono
,
Lider
Cargo
, 
essas sгo as que define os cargos

A Stock que salva os dados:
PHP код:
DOF2_SetInt(PegarConta(playerid), "Lider", Player[playerid][Lider]);
DOF2_SetInt(PegarConta(playerid), "Cargo", Player[playerid][Cargo]);
DOF2_SetInt(PegarConta(playerid), "Dono", Player[playerid][Dono]); 
A Stock que carrega os dados:
PHP код:
Player[playerid][Lider] = DOF2_GetInt(PegarConta(playerid), "Lider");
Player[playerid][Cargo] = DOF2_GetInt(PegarConta(playerid), "Cargo");
Player[playerid][Dono] = DOF2_GetInt(PegarConta(playerid), "Dono"); 
Agora vou explicar sobre a definiзгo cargo tipo no gamemode a definiзгo cargo й assim:
PHP код:
CMD:setcargo(playerid, params[])
{
    new 
string[500];
    
    if(
Player[playerid][Admin] < 4)
    return 
SCM(playerid, COLOR_ORANGE, MSG_CMD_WITHOUT_PERMISSION);
    new 
id, level;
    if(
sscanf(params, "ui", id, level))
    return 
SCM(playerid, 0xa4a4a4AA, ""TAG_USOCORRETO" /setcargo [playerid] [level]");
    switch(
level)
    {
        case 
1: //Caso o level digitado seje 1 o player serб fogueteiro.
        
{
            
Player[id][Cargo] = 1;
            
SendFormattedMessage(playerid,COLOR_WHITE,""TAG_SERVER" Vocк setou %s de Fogueteiro.",Nome(id));
            
SendFormattedMessage(id,COLOR_WHITE,""TAG_SERVER" Vocк foi setado de Fogueteiro pelo %s %s.", AccountName(playerid), Nome(playerid));
            
format(string, sizeof(string),""TAG_SERVER" o %s %s setou %s de Fogueteiro.", AccountName(playerid), Nome(playerid), Nome(id));
            
MensagemAdmin(string);
            
format(string, sizeof(string), ""TAG_SERVER" O %s %s setou %s de Fogueteiro.", Nome(playerid), AccountName(playerid), Nome(id));
            
DarCargo(string);
            
SalvarDados(id);
        }
        
        case 
2: //Caso o level digitado seje 2 o player serб Vapor.
        
{
            
Player[id][Cargo] = 2;
            
SendFormattedMessage(playerid,COLOR_WHITE,""TAG_SERVER" Vocк setou %s de Vapor.",Nome(id));
            
SendFormattedMessage(id,COLOR_WHITE,""TAG_SERVER" Vocк foi setado de Vapor pelo %s %s.", AccountName(playerid), Nome(playerid));
            
format(string, sizeof(string),""TAG_SERVER" o %s %s setou %s de Vapor.", AccountName(playerid), Nome(playerid), Nome(id));
            
MensagemAdmin(string);
            
format(string, sizeof(string), ""TAG_SERVER" O %s %s setou %s de Vapor.", Nome(playerid), AccountName(playerid), Nome(id));
            
DarCargo(string);
            
SalvarDados(id);
        }
        case 
3: //Caso o level digitado seje 3 o player serб Gerente.
        
{
            
Player[id][Cargo] = 3;
            
SendFormattedMessage(playerid,COLOR_WHITE,""TAG_SERVER" Vocк setou %s de Gerente.",Nome(id));
            
SendFormattedMessage(id,COLOR_WHITE,""TAG_SERVER" Vocк foi setado de Gerente pelo %s %s.", AccountName(playerid), Nome(playerid));
            
format(string, sizeof(string),""TAG_SERVER" o %s %s setou %s de Gerente.", AccountName(playerid), Nome(playerid), Nome(id));
            
MensagemAdmin(string);
            
format(string, sizeof(string), ""TAG_SERVER" O %s %s setou %s de Gerente.", Nome(playerid), AccountName(playerid), Nome(id));
            
DarCargo(string);
            
SalvarDados(id);
        }
        case 
4: //Caso o level digitado seje 4 o player serб Frente.
        
{
            
Player[id][Cargo] = 4;
            
SendFormattedMessage(playerid,COLOR_WHITE,""TAG_SERVER" Vocк setou %s de Frente.",Nome(id));
            
SendFormattedMessage(id,COLOR_WHITE,""TAG_SERVER" Vocк foi setado de Frente pelo %s %s.", AccountName(playerid), Nome(playerid));
            
format(string, sizeof(string),""TAG_SERVER" o %s %s setou %s de Frente.", AccountName(playerid), Nome(playerid), Nome(id));
            
MensagemAdmin(string);
            
format(string, sizeof(string), ""TAG_SERVER" O %s %s setou %s de Frente.", Nome(playerid), AccountName(playerid), Nome(id));
            
DarCargo(string);
            
SalvarDados(id);
        }
        default: 
//caso o player digitou outro nъmero
        
{
            
SendClientMessage(playerid,-1,""TAG_ERRO" /setcargo [id] level de 0 a 4");
        }
    }
    return 
true;
} 
ai da pra ve mais ou menos a funзгo da definiзгo cargo na enum
Reply
#10

Quote:
Originally Posted by GunnerCoder
Посмотреть сообщение
Manda aн o cуdigo do seu sistema de salvamento das facзхes.
E este й meu codigo de hierarquia atualmente
PHP код:
if(dialogid == DIALOG_HIERARQUIA)
        {
        if(
response)
        {
        new 
gStr[128], info[2048];
        if(
listitem == 0)// Administrador
        
{
        for(new 
i; i < MAX_PLAYERS; i++)
          {
              if(
Player[i][Admin] > 0 && Player[i][Faccoes] ==  Player[playerid][Faccoes])
              {
                  
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", Nome(i));
                  
strcat(info, gStr);
              }
          }
        
strcat(info, " ");
        
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Administradores da Comunidade", info,"Ok","Voltar");
        return 
1;
        }
        if(
listitem == 1)// Lider
        
{
        for(new 
i; i < MAX_PLAYERS; i++)
          {
              if(
Player[i][Lider] > 0 && Player[i][Faccoes] ==  Player[playerid][Faccoes])
              {
                  
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", Nome(i));
                  
strcat(info, gStr);
              }
          }
        
strcat(info, " ");
        
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Lider da Facзгo", info,"Ok","Voltar");
        return 
1;
        }
        if(
listitem == 2)// Donos do morro
        
{
        for(new 
i; i < MAX_PLAYERS; i++)
          {
              if(
Player[i][Dono] > 0 && Player[i][Faccoes] ==  Player[playerid][Faccoes])
              {
                  
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", Nome(i));
                  
strcat(info, gStr);
              }
          }
        
strcat(info, " ");
        
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Dono da Comunidade", info, "Ok","Voltar");
        return 
1;
        }
        if(
listitem == 3)// Frentes
        
{
        for(new 
i; i < MAX_PLAYERS; i++)
          {
              if(
Player[i][Cargo] > 4 && Player[i][Faccoes] ==  Player[playerid][Faccoes])
              {
                       
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", Nome(i));
                       
strcat(info, gStr);
              }
          }
        
strcat(info, " ");
        
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Frente da Comunidade", info,"Ok","Voltar");
        return 
1;
        }
        if(
listitem == 4)// Gerentes
        
{
        for(new 
i; i < MAX_PLAYERS; i++)
          {
              if(
Player[i][Cargo] > 3 && Player[i][Faccoes] ==  Player[playerid][Faccoes])
              {
                  
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", Nome(i));
                  
strcat(info, gStr);
              }
          }
        
strcat(info, " ");
        
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Gerente da Comunidade",info,"Ok","Voltar");
        return 
1;
        }
        if(
listitem == 5)// Vaporzгo
        
{
        for(new 
i; i < MAX_PLAYERS; i++)
          {
              if(
Player[i][Cargo] > 2 && Player[i][Faccoes] ==  Player[playerid][Faccoes])
              {
                  
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", Nome(i));
                  
strcat(info, gStr);
              }
          }
        
strcat(info, " ");
        
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Vapor da Comunidade", info,"Ok","Voltar");
        return 
1;
        }
        if(
listitem == 6)// Fogueteiros
        
{
        for(new 
i; i < MAX_PLAYERS; i++)
          {
              if(
Player[i][Cargo] > 1 && Player[i][Faccoes] ==  Player[playerid][Faccoes])
              {
                  
format(gStr, sizeof(gStr), "{ff0000}» {ffffff}%s\n", Nome(i));
                  
strcat(info, gStr);
              }
          }
        
strcat(info, " ");
        
ShowPlayerDialog(playerid, 9999, DIALOG_STYLE_LIST,"{ff0000}» {ffffff}Fogueteiro da Comunidade", info,"Ok","Voltar");
        return 
1;
        }
        }
        return 
1;
        } 
Reply


Forum Jump:


Users browsing this thread: 1 Guest(s)