09.10.2010, 01:29
Criando sua prуpria ORG.
Muitas pessoas podem achar isso tosco, mas, o fato й que ainda hб uma percentagem de pessoas com problemas em criar/modificar uma org. Entгo, vou aqui apresentar um jeito complexo, mas muito dinвmico, de criar sua org.Vamos comeзar por criar uma array, que serгo as ORGS.
pawn Код:
new Org[MAX_PLAYERS];//Usado para identificar em que org o player se encontra.
new Cargo[MAX_PLAYERS]; //Usado para identificar o cargo do player.
enum org//Um Enumerador para "nomear" arrays dentro de arrays.
{
Lider[20], //Array para Definir o nome do lнder das orgs.
Membro1[20],//Abaixo, 10 slots para membros, contendo seu nome.
Membro2[20],
Membro3[20],
Membro4[20],
Membro5[20],
Membro6[20],
Membro7[20],
Membro8[20],
Membro9[20],
Membro10[20],
Vaga, //Para definir a vaga livre de recrutamento.
Cofre, //Um Cofre para Sacar/Depositar coisas.
Float:SpawnX,//Serб usado para definir as coordenadas X, Y, e Z, do spawn da org.
Float:SpawnY,
Float:SpawnZ,
Float:Vida, //Quanto de vida a org nascerб com.
Float:Colete, //Quanto de Colete a org nascerб com.
}
new OrgInfo[17][org]; //Agora, temos a nossa array de Organizaзхes. O 17 й a quantidade de orgs.
pawn Код:
//Vou utilizar o mйtodo Dini por ser BEM mais fбcil.
SalvarOrgs()
{
new x;
new filestr[15];
while(x < sizeof(OrgInfo))//Para dar um Loop pelas orgs.
{
format(filestr, 30, "Info Org %d", x); //Para identificar a org, e abrir o arquivo dela.
if(!fexist(filestr)) dini_Create(filestr);
dini_Set(filestr,"Lider",OrgInfo[x][Lider]);
dini_Set(filestr,"Membro1",OrgInfo[x][Membro1]);
dini_Set(filestr,"Membro2",OrgInfo[x][Membro2]);
dini_Set(filestr,"Membro3",OrgInfo[x][Membro3]);
dini_Set(filestr,"Membro4",OrgInfo[x][Membro4]);
dini_Set(filestr,"Membro5",OrgInfo[x][Membro5]);
dini_Set(filestr,"Membro6",OrgInfo[x][Membro6]);
dini_Set(filestr,"Membro7",OrgInfo[x][Membro7]);
dini_Set(filestr,"Membro8",OrgInfo[x][Membro8]);
dini_Set(filestr,"Membro9",OrgInfo[x][Membro9]);
dini_Set(filestr,"Membro10",OrgInfo[x][Membro10]);
dini_IntSet(filestr,"Vaga", OrgInfo[x][Vaga]);
dini_IntSet(filestr,"Cofre", OrgInfo[x][Cofre]);
dini_FloatSet(filestr,"SpawnX", OrgInfo[x][SpawnX]);
dini_FloatSet(filestr,"SpawnY", OrgInfo[x][SpawnY]);
dini_FloatSet(filestr,"SpawnZ", OrgInfo[x][SpawnZ]);
dini_FloatSet(filestr,"Vida", OrgInfo[x][Vida]);
dini_FloatSet(filestr,"Colete", OrgInfo[x][Colete]);
x++;
}
return 1;
}
CarregarOrgs()
{
new x;
new filestr[15];
while(x < sizeof(OrgInfo))//Para dar um Loop pelas orgs.
{
format(filestr, 30, "Info Org %d", x); //Para identificar a org, e abrir o arquivo dela.
if(!fexist(filestr)) dini_Create(filestr);
strmid(OrgInfo[x][Lider],dini_Get(filestr,"Lider"), 0, 20);
strmid(OrgInfo[x][Membro1],dini_Get(filestr,"Membro1"), 0, 20);
strmid(OrgInfo[x][Membro2],dini_Get(filestr,"Membro2"), 0, 20);
strmid(OrgInfo[x][Membro3],dini_Get(filestr,"Membro3"), 0, 20);
strmid(OrgInfo[x][Membro4],dini_Get(filestr,"Membro4"), 0, 20);
strmid(OrgInfo[x][Membro5],dini_Get(filestr,"Membro5"), 0, 20);
strmid(OrgInfo[x][Membro6],dini_Get(filestr,"Membro6"), 0, 20);
strmid(OrgInfo[x][Membro7],dini_Get(filestr,"Membro7"), 0, 20);
strmid(OrgInfo[x][Membro8],dini_Get(filestr,"Membro8"), 0, 20);
strmid(OrgInfo[x][Membro9],dini_Get(filestr,"Membro9"), 0, 20);
strmid(OrgInfo[x][Membro10],dini_Get(filestr,"Membro10"), 0, 20);
OrgInfo[x][Vaga] = dini_Int(filestr,"Vaga");
OrgInfo[x][Cofre] = dini_Int(filestr,"Cofre");
OrgInfo[x][SpawnX] = dini_Float(filestr,"SpawnX");
OrgInfo[x][SpawnY] = dini_Float(filestr,"SpawnY");
OrgInfo[x][SpawnZ] = dini_Float(filestr,"SpawnZ");
OrgInfo[x][Vida] = dini_Float(filestr,"Vida");
OrgInfo[x][Colete] = dini_Float(filestr,"Colete");
x++;
}
return 1;
}
Vamos agora para comandos simples, como o de convidar.
pawn Код:
//... Em OnPlayerCommand Text...
if(!strcmp(cmd, "/convidar", true))
{
new giveplayer[20];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USO: /convidar [playerid]");
recrutado = ReturnUser(tmp);
if(IsPlayerConnected(recrutado) && Org[playerid] > 0)
{
if(Cargo[playerid] < 6) return SendClientMessage(playerid, 0xFFFFFFFF, "ATENЗГO! Vocк nгo pode usar esse comando!");
Org[playerid] = Org[recrutado];
SendClientMessage(playerid, 0xFFFFFFFF, "Vocк convidou o player com sucesso!");
SendClientMessage(playerid, 0xFFFFFFFF, "Vocк acaba de ser convidado para uma facзгo!");
GetPlayerName(recrutado, giveplayer, 20);
switch (OrgInfo[Org[playerid]][Vaga])
{
case 0,1: { format(OrgInfo[Org[playerid]][Membro1], MAX_PLAYER_NAME, giveplayer); }
case 2: { format(OrgInfo[Org[playerid]][Membro2], MAX_PLAYER_NAME, giveplayer); }
case 3: { format(OrgInfo[Org[playerid]][Membro3], MAX_PLAYER_NAME, giveplayer); }
case 4: { format(OrgInfo[Org[playerid]][Membro4], MAX_PLAYER_NAME, giveplayer); }
case 5: { format(OrgInfo[Org[playerid]][Membro5], MAX_PLAYER_NAME, giveplayer); }
case 6: { format(OrgInfo[Org[playerid]][Membro6], MAX_PLAYER_NAME, giveplayer); }
case 7: { format(OrgInfo[Org[playerid]][Membro7], MAX_PLAYER_NAME, giveplayer); }
case 8: { format(OrgInfo[Org[playerid]][Membro8], MAX_PLAYER_NAME, giveplayer); }
case 9: { format(OrgInfo[Org[playerid]][Membro9], MAX_PLAYER_NAME, giveplayer); }
case 10: { format(OrgInfo[Org[playerid]][Membro10], MAX_PLAYER_NAME, giveplayer); }
}
SalvarOrgs();
OrgInfo[Org[playerid]][Vaga]++;
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "Vocк nгo estб em uma facзгo, ou o player nгo estб conectado!");
return 1;
}
//Agora para demitir...
if(!strcmp(cmd, "/demitir", true))
{
new giveplayer[20];
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USO: /demitir[playerid]");
recrutado = ReturnUser(tmp);
if(IsPlayerConnected(recrutado) && Org[playerid] > 0)
{
if(Cargo[playerid] < 6) return SendClientMessage(playerid, 0xFFFFFFFF, "ATENЗГO! Vocк nгo pode usar esse comando!");
Org[recrutado] = 0;
Cargo[recrutado] = 0;
SendClientMessage(playerid, 0xFFFFFFFF, "Vocк demitiu o player com sucesso!");
SendClientMessage(playerid, 0xFFFFFFFF, "Vocк acaba de ser demitido de uma facзгo!");
GetPlayerName(recrutado, giveplayer, 20);
if(OrgInfo[org][Vaga] == 1)
{
format(OrgInfo[org][Membro1], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 2)
{
format(OrgInfo[org][Membro2], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 3)
{
format(OrgInfo[org][Membro3], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 4)
{
format(OrgInfo[org][Membro4], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 5)
{
format(OrgInfo[org][Membro5], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 6)
{
format(OrgInfo[org][Membro6], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 7)
{
format(OrgInfo[org][Membro7], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 8)
{
format(OrgInfo[org][Membro8], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 9)
{
format(OrgInfo[org][Membro9], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
if(OrgInfo[org][Vaga] == 10)
{
format(OrgInfo[org][Membro10], MAX_PLAYER_NAME, "Nenhum");OrgInfo[org][Vaga]--;
}
SalvarOrgs();
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "Vocк nгo estб em uma facзгo, ou o player nгo estб conectado!");
return 1;
}
//E agora, para promover.
if(!strcmp(cmd, "/promover", true))
{
tmp = strtok(cmdtext, idx);
if(!strlen(tmp)) return SendClientMessage(playerid, 0xFFFFFFFF, "USO: /promover [playerid] [cargo 1 - 6]");
recrutado = ReturnUser(tmp);
new tmp2[128];
tmp2 = strtok(cmdtext, idx);
if(!strlen(tmp2)) return SendClientMessage(playerid, 0xFFFFFFFF, "USO: /promover [playerid] [cargo 1 - 6]");
new cargo = strval(tmp2);
if(cargo < 1 || cargo > 6) return SendClientMessage(playerid, 0xFFFFFFFF, "USO: /promover [playerid] [cargo 1 - 6]");
if(IsPlayerConnected(recrutado) && Org[playerid] > 0)
{
if(Cargo[playerid] < 6) return SendClientMessage(playerid, 0xFFFFFFFF, "ATENЗГO! Vocк nгo pode usar esse comando!");
Cargo[recrutado] = cargo;
SendClientMessage(playerid, 0xFFFFFFFF, "Vocк promoveu o player com sucesso!");
SendClientMessage(playerid, 0xFFFFFFFF, "Vocк acaba de ser promovido na sua facзгo!");
return 1;
}
else return SendClientMessage(playerid, 0xFFFFFFFF, "Vocк nгo estб em uma facзгo, ou o player nгo estб conectado!");
return 1;
}
E assim por diante. Vocк pode tambйm criar menus, para equipar as pessoas de sua org, vocк pode criar comandos para sacar/retirar dinheiro do cofre, dentre outras possiblidades!
E aн estб um infoorg tutorial completo sobre criaзгo de orgs avanзadas.
By: LeLeTe.
Recuse imitaзхes ou cуpias, mantenha o verdadeiro.