03/09/2021 10:49
Nesse tópico irei ensinar como criar um infoorg com sistema de salvamento proprio, somente com alguns comandos básicos!..
Primeiramente temos que ter uma Enum da ORG, a qual cada org pode-se manipular, nessa enum vai ter informações básicas sobre a org, como exemplo membros, lideres, sublíderes etc..
Porque valor [256]?
* Seria o tamanho da Array do tipo String,
\_cada variável dessa ( líder/sublíder/membro1...membro5) vai ser uma string.
temos que passar essa enum para uma Matrix ( new a[1][2][3] );
Porque OrgInfo[2]?
* Nesse tutorial será criada somente 3 organização:
[0] - Civil
[1] - Mendingos
[2] - Policia Aleatória
Porque integrar a Enum na Matris?
*para poder manipular, exemplo
OrgInfo[0][pMembro1] = "Peixe_Ssardinha";
OrgInfo[0][pMembro2] = "Amguinho_Peixe";
etc
Agora temos que criar um sistema de carregar/salvar as Orgs, utilizarei o sistema DINI(download aqui). porem é possivel utilizar dof2 ou database ( sqlite/mysql/mariadb...) tudo depende de como você quer salvar.
Carregar:
Código de carregar vai pegar todas informações da pasta "scriptfiles/Orgs/org%d";
onde o %d seria o ID da org
no caso vai ter que criar 2 arquivos MANUALMENTE, ou vai ter sujeita da gm crashar.
* Obs, pasta dentro da scriptfile
\_ com nome Orgs
exemplo: "Scriptfiles/Orgs/"
----------
nessa pasta você cria 2 arquivos ou mais. ( de acordo de quantas orgs você criou )
org1.cfg
org2.cfg
e com cada config com esses dados:
os dados dentro das cfg das Orgs, podem variar, de quanto membros você pos pra criar.
Agora devemos definir de qual ORG o player vai estar, e se ele é o lider, o certo é adicionar dentro de uma ENUM ( PlayerInfo[playerid][pOrg/pLider] ) incluso do sistema de salvamento do server...
mas nesse caso irei adicionar por variável
no inicio da GM, fora dos scopo ( callbacks )
os [50] são array de quantidade de players do servidor, recomendo botar uma #define MAX_PLAYERS!
* essas variáveis vão ser constantemente chamadas para os comandos!
Agora vamos pegar as variáveis e sentar no jogador:
* Como podes notar, os cargo das org sempre vão ser 1, devido não termos um sistema de SALVAMENTO de JOGADORES,
nesse tutorial não irei incluir, porem é extremamente recomendado ter para poder salvar os MemberORG e CargoOrg.
Na callback OnPlayerConnect(playerid)
bote essa função criada.
e na callback OnPlayerDisconnect(playerid)
reset as variaveis dos membros
usando:
Prontinho, sistema de InfoORG Criado com sucesso,
agora vamos aos comandos no proximo tutorial
pode-se notar que pode ter bugs nos code, porque é pro usuario aprender e não só COPIAR/COLAR!
o copiar e o colar está matando a comunidade samp
Primeiramente temos que ter uma Enum da ORG, a qual cada org pode-se manipular, nessa enum vai ter informações básicas sobre a org, como exemplo membros, lideres, sublíderes etc..
Código:
enum Org
{
Lider[256],
SubLider[256],
Membro1[256],
Membro2[256],
Membro3[256],
Membro4[256],
Membro5[256]
};
Porque valor [256]?
* Seria o tamanho da Array do tipo String,
\_cada variável dessa ( líder/sublíder/membro1...membro5) vai ser uma string.
temos que passar essa enum para uma Matrix ( new a[1][2][3] );
Código:
enum Org
{
Lider[256],
SubLider[256],
Membro1[256],
Membro2[256],
Membro3[256],
Membro4[256],
Membro5[256]
};
new OrgInfo[2][Org];
Porque OrgInfo[2]?
* Nesse tutorial será criada somente 3 organização:
[0] - Civil
[1] - Mendingos
[2] - Policia Aleatória
Porque integrar a Enum na Matris?
*para poder manipular, exemplo
OrgInfo[0][pMembro1] = "Peixe_Ssardinha";
OrgInfo[0][pMembro2] = "Amguinho_Peixe";
etc
Agora temos que criar um sistema de carregar/salvar as Orgs, utilizarei o sistema DINI(download aqui). porem é possivel utilizar dof2 ou database ( sqlite/mysql/mariadb...) tudo depende de como você quer salvar.
Carregar:
Código:
stock LoadOrgs()
{
new arquivo[256];
new id_org = 1;
while (id_org < sizeof(OrgInfo))
{
format(arquivo, sizeof(arquivo), "Orgs/Org%d.cfg",idx);
strmid(OrgInfo[id_org][Lider], dini_Get(arquivo,"Lider"), 0, strlen(dini_Get(arquivo,"Lider")), 255);
strmid(OrgInfo[id_org][SubLider], dini_Get(arquivo,"SubLider"), 0, strlen(dini_Get(arquivo,"SubLider")), 255);
strmid(OrgInfo[id_org][Membro1], dini_Get(arquivo,"Membro1"), 0, strlen(dini_Get(arquivo,"Membro1")), 255);
strmid(OrgInfo[id_org][Membro2], dini_Get(arquivo,"Membro2"), 0, strlen(dini_Get(arquivo,"Membro2")), 255);
strmid(OrgInfo[id_org][Membro3], dini_Get(arquivo,"Membro3"), 0, strlen(dini_Get(arquivo,"Membro3")), 255);
strmid(OrgInfo[id_org][Membro4], dini_Get(arquivo,"Membro4"), 0, strlen(dini_Get(arquivo,"Membro4")), 255);
strmid(OrgInfo[id_org][Membro5], dini_Get(arquivo,"Membro5"), 0, strlen(dini_Get(arquivo,"Membro5")), 255);
idx ++;
}
printf("%d Orgs Carregadas", idx);
return 1;
}
onde o %d seria o ID da org
no caso vai ter que criar 2 arquivos MANUALMENTE, ou vai ter sujeita da gm crashar.
* Obs, pasta dentro da scriptfile
\_ com nome Orgs
exemplo: "Scriptfiles/Orgs/"
----------
nessa pasta você cria 2 arquivos ou mais. ( de acordo de quantas orgs você criou )
org1.cfg
org2.cfg
e com cada config com esses dados:
Código:
Lider=Ninguem
SubLider=Ninguem
Membro1=Ninguem
Membro2=Ninguem
Membro3=Ninguem
Membro4=Ninguem
Membro5=Ninguem
os dados dentro das cfg das Orgs, podem variar, de quanto membros você pos pra criar.
Agora devemos definir de qual ORG o player vai estar, e se ele é o lider, o certo é adicionar dentro de uma ENUM ( PlayerInfo[playerid][pOrg/pLider] ) incluso do sistema de salvamento do server...
mas nesse caso irei adicionar por variável
no inicio da GM, fora dos scopo ( callbacks )
Código:
new MemberOrgID[50]
new CargoOrgID[50]
* essas variáveis vão ser constantemente chamadas para os comandos!
Agora vamos pegar as variáveis e sentar no jogador:
Código:
Stock LoadOrgFromPlayer(playerid)
{
if(IsPlayerConnected(playerid))
{
new Nick[256];
GetPlayerName(playerid,Nick,sizeof(Nick));
for(new i = 1; i < sizeof(OrgInfo); i++)
{
if(strcmp(Nick,OrgInfo[i][Lider],true)==0)
{
MemberOrgID[playerid] = i;
CargoOrgID[playerid] = 6
return 1;
}
if(strcmp(Nick,OrgInfo[i][SubLider],true)==0)
{
MemberOrgID[playerid] = i;
CargoOrgID[playerid] = 5
return 1;
}
if(strcmp(Nick,OrgInfo[i][Membro1],true)==0)
{
MemberOrgID[playerid] = i;
CargoOrgID[playerid] = 1
return 1;
}
if(strcmp(Nick,OrgInfo[i][Membro2],true)==0)
{
MemberOrgID[playerid] = i;
CargoOrgID[playerid] = 1
return 1;
}
if(strcmp(Nick,OrgInfo[i][Membro3],true)==0)
{
MemberOrgID[playerid] = i;
CargoOrgID[playerid] = 1
return 1;
}
if(strcmp(Nick,OrgInfo[i][Membro4],true)==0)
{
MemberOrgID[playerid] = i;
CargoOrgID[playerid] = 1
return 1;
}
if(strcmp(Nick,OrgInfo[i][Membro5],true)==0)
{
MemberOrgID[playerid] = i;
CargoOrgID[playerid] = 1
return 1;
}
}
}
return 1;
}
nesse tutorial não irei incluir, porem é extremamente recomendado ter para poder salvar os MemberORG e CargoOrg.
Na callback OnPlayerConnect(playerid)
bote essa função criada.
e na callback OnPlayerDisconnect(playerid)
reset as variaveis dos membros
usando:
Código:
MemberOrgID[playerid] = 0;
CargoOrgID[playerid] = 0
Prontinho, sistema de InfoORG Criado com sucesso,
agora vamos aos comandos no proximo tutorial
pode-se notar que pode ter bugs nos code, porque é pro usuario aprender e não só COPIAR/COLAR!
o copiar e o colar está matando a comunidade samp
Citar:
Gostou do meu conteúdo? que tal me ajudar com alguma reputação? ( Estrela )