[Tutorial] Criando uma ORG avanзada
#1

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.
Agora, entгo, temos jб uma array para guardar todas essas informaзхes bunitinhaz de cada org. Agora, vamos criar as funзхes para Salvar e Carregar as 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;
}
Agora, temos aonde carregar, e aonde salvar, as informaзхes de nossas orgs.


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.
Reply
#2

muito bom parabйns.
Reply
#3

very goood
Reply
#4

Perfect !Atй Cofre Org!Niceeee
Reply
#5

Muito bom amiga
Reply
#6

E tambem + facil de fazer infoorg com ele ahsuehsauheuase so й pegar os nomes e jogar em um dialog
Reply
#7

Quote:
Originally Posted by KevinsL
Посмотреть сообщение
E tambem + facil de fazer infoorg com ele ahsuehsauheuase so й pegar os nomes e jogar em um dialog
e agora tб massa, qualquer um pode pegar e tirar seus crйditos aushaushuasuhasuh
Reply
#8

Quote:
Originally Posted by Ricardo_lopes
Посмотреть сообщение
e agora tб massa, qualquer um pode pegar e tirar seus crйditos aushaushuasuhasuh
Tirar de onde que ai nгo tem :l

So nгo entendi como cria a org e dar lider
Reply
#9

tut em area errada, bom ...
Reply
#10

Aqui й uma бrea de discussгo, nгo de LANЗAMENTOS. ._.'


Enfim, como eu vн que muitas pessoas nгo respeitam os crйditos, entгo eu dei a base, e o resto, й com vocкs.


Obrigado pelos elogios
Reply


Forum Jump:


Users browsing this thread: 2 Guest(s)