SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

Participe do fórum, é rápido e fácil

SSGamers - 13 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 13 Anos online por você.

Gostaria de reagir a esta mensagem? Crie uma conta em poucos cliques ou inicie sessão para continuar.
Chegou o novo tema 6.5.5 - SSGamers - Servidores online de qualidade - Aproveite e entre para nossa comunidade, inscreva-se já! - Ouça nossa web radio - Veja nossas novidades - Participe dos nossos setores de jogos online - Parcerias aberta fale já com um administrador.

+2
Paulinho
Wallison_Brasil
6 participantes

    Como Criar Org[Exclusivo]

    Wallison_Brasil
    Wallison_Brasil
    --> Postador Iniciante
    --> Postador Iniciante


    Mensagens : 35
    Moedas : 4765
    Data de inscrição : 17/01/2012
    Idade : 28
    Localização : ScriptSamp

    Como Criar Org[Exclusivo] Empty Como Criar Org[Exclusivo]

    Mensagem por Wallison_Brasil Qui 15 Mar 2012 - 21:15

    [font=Arial Black]Índice

    ● Criar organizações, cargos e seus respectivos nomes.
    ● Criar cores paras orgs
    ● Criar veículos para organizações e impedindo que outros os peguem.
    ● Criar comando /membros /equipar /chatorg
    ● Criar comandos para líderes /convidar(Em dialog) /promover /demitir
    ● Banco de dados para salvamento de orgs

    Necessário

    ● Saber utilizar zcmd
    ● Saber utilizar variáveis & constantes
    ● Saber utilizar operadores
    ● Saber o mínimo sobre as funções nativas do samp.
    ● Saber utilizar manipulador de arquivos(No caso usaremos SII).

    Introdução

    Primeiramente, quero deixar claro que isto não se aplica à GF, é editável e pode ser adaptado mas você terá grandes dores de cabeça pois o GF usa um sistema de organização completamente diferente principalmente na parte de veículos.

    ● Criar organizações, cargos e seus respectivos nomes.


    Evitando a criação de varias variáveis todas com o valor MAX_PLAYERS iremos criar um enum (Enumerado ou enumérico) que utilizaremos posteriormente em uma variável aproveitando da mesma array. Neste enum colocaremos as seguintes informações

    Código:
    enum Info
    {
        Membro,    //Identifica de que organização o player é membro. 0 para civil.
        Cargo,      //Identifica qual o cargo do player. 10 para líder.
    };
    new ProgressaoInfo[MAX_PLAYERS][Info]; //Utilizaremos essa variável com arrays em conjunto com o enum



    Pra que servirá o código acima? Bom, com ele poderá ser definido e verificado à qualquer momento qual o cargo do player e a organização que ele pertence.
    Vamos definir os nomes para as organizações, eu vou criar 5 organizações para usar como exemplo, para adicionar mais é só seguir o mesmo processo.

    Código:
    pawn Code:

    new Nomeorgs[5][128] =  //[5] representa o numero de linhas iniciando do 0 e [128] o numero de caracters máximo de cada string.
    {
        "Civil",            //Org [0]: Como dito no enum, a org 0 é civil, não é propriamente uma org mas é necessário ter pois o player será automaticamente membro da org 0 caso não definido.
        "Assassinos",      //Org [1]: Assassinos por contrato, Hitmans.
        "Aeronautica"      //Org [2]: Aeronautica, controle aéreo.
        "Drifters",        //Org [3]: Drifters, corredores de derrapagem.
        "Policial Federal"  //Org [4]: Policiais Federais, casos de escala nacional.
    };



    O [5] é uma array com o valor NULL, então não pode conter um valor, a ultima array da variável não necessita de vírgula como as anteriores pois não terá um próximo valor.
    Como notaram ali coloquei [17] por um motivo simples, a string com o maior numero de caracteres é a [4] que contem 16 caracteres, 16 + o Null que é equivalente à 1 dá 17 então está ai o valor.
    Calma, em breve veremos como getar estes nomes.

    ● Criar cores paras orgs


    Temos várias maneiras de fazer isto, seja com a diretiva define, variáveis com arrays, constantes entre outros metodos, utilizaremos neste tutorial o const(Derivado de constant, um valor que não pode ser alterado posteriormente como as variáveis).
    Código:

    pawn Code:

    const C_Civil      = 0xFFFFFFFF; //Cor dos civis, branco.
    const C_Assassinos  = 0x000000FF; //Cor dos assassinos, preto.
    const C_Aeronautica = 0x1E90FF99; //Cor da aeronautica, azul.
    const C_Drifters    = 0x1E90AA99; //Cor dos drifters, verde.
    const C_PFederal    = 0x6C7B8BFF; //Cor da Policia Federal, azul escuro.

    Como podem perceber, as cores foram definidas em hexadecimal, 0x seguido do código da cor(Que são os 6 próximos caracteres) seguido da transparência da cor que são os dois últimos caracteres.

    ● Criar veículos para organizações e impedindo que outros os peguem.


    A criação de veículos exclusivos para organizações é relativamente simples apesar de um tanto chato de se fazer, eu meu sistema uso um loop que carrega os veículos da scriptfiles mas acho que não é uma boa pra este tutorial pois o tornaria um código útil, então vamos lá.
    Primeiro passo, você deve criar as variáveis de cada organização com o numero de veículos que as mesma terão.
    Exemplo:
    Código:

    pawn Code:

    new VCivil[3];      //Os Civis tem 3 veículos
    new VAssassinos[5];  //Os Assassinos tem 5 veículos.
    new VAeronautica[7]; //A Aeronautica tem 7 veículos.
    new VDrifters[4];    //Os Drifters tem 4 veículos.
    new VPFederal[6];    //A Policia Federal tem 6 veículos.

    É bom lembrar que é contado o caracter NULL, então se a org tem 3 veículos você conta à partir do 0 mas sempre deixando 1 valor à sobra. 0, 1, 2 o 3 é NULL.

    As variáveis estão criadas, vamos aplicar agora os carros à elas.
    Vocês podem fazer isso no OnGameModeInit, ou em uma callback, fica à escolha de cada um.
    Código:

    pawn Code:

    //**********************************[ Veículos Civis]*************************************************
    VCivil[0] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VCivil[1] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VCivil[2] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);

    //******************************[ Veículos dos Assassinos]*************************************************
    VAssassinos[0] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VAssassinos[1] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VAssassinos[2] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    //E assim vai até criar todos os veículos pra completar as arrays da variável.

    //******************************[ Veículos da Aeronautica]*************************************************
    VAeronautica[0] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VAeronautica[1] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VAeronautica[2] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    //E assim vai até criar todos os veículos pra completar as arrays da variável.

    //******************************[ Veículos dos Drifters]*************************************************
    VDrifters[0] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VDrifters[1] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VDrifters[2] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    //E assim vai até criar todos os veículos pra completar as arrays da variável.

    //***************************[ Veículos da Policia Federal]**********************************************
    VPFederal[0] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VPFederal[1] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    VPFederal[2] = CreateVehicle(modelo, Float:X, Float:Y, Float:Z, Float:Rotação, cor1, cor2, respawnDelay);
    //E assim vai até criar todos os veículos pra completar as arrays da variável.

    Não preenchi os parâmetros pra que possam compreender melhor, apesar de saber que vocês conhecem os parâmetros do CreateVehicle.

    Vamos ao passo seguinte, impedir que um membro de outra organização entre no veículo de sua organização, para isso poderíamos usar loop, vários comparadores em um loop entre outras coisas, mas vamos utilizar de um macro que eu fiz.
    Código:

    pawn Code:

    #define VDaOrg(%0,%1,%2) GetPlayerVehicleID(playerid) >= %0[%1] && GetPlayerVehicleID(playerid) <= %0[%2]

    Com este macro verificaremos se o veículo que o player está é o mesmo veículo de uma das arrays setadas na função, veja o exemplo abaixo.
    Código:

    pawn Code:

    public OnPlayerStateChange(playerid, newstate, oldstate) //Verificará a mudança de estado do player
    {
        if(newstate == PLAYER_STATE_DRIVER) //O novo estado do player é de motorista.
        {
            if(VDaOrg(VPCivil,0,2)) SendClientMessage(playerid, C_Civil, "Você entrou em um veículo Civil");
            if(VDaOrg(VAssassinos,0,4)  && ProgressaoInfo[playerid][Membro] != 2) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, C_Assassinos, "Você não é um Assassino");
            if(VDaOrg(VAeronautica,0,6) && ProgressaoInfo[playerid][Membro] != 3) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, C_Aeronautica, "Você não é da Aeronautica");
            if(VDaOrg(VDrifters,0,3)    && ProgressaoInfo[playerid][Membro] != 4) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, C_Drifters, "Você não é um Drifter");
            if(VDaOrg(VPFederal,0,5)    && ProgressaoInfo[playerid][Membro] != 5) return RemovePlayerFromVehicle(playerid), SendClientMessage(playerid, C_PFederal, "Você não é um Policial Federal");
        }
        return true;
    }
    No primeiro parâmetro desse macro você vai utilizar o nome da variável dos veículos da org desejada, em seguida no segundo parâmetro o numero inicial de veículos à ser comparado, no caso, 0, e no terceiro, o numero de veículos que a organização tem, começando do 0 e sem o caracter NULL.
    Como podem perceber, utilizamos as cores das organizações que criamos com o const no inicio do tutorial.

    ● Criar comando /membros /equipar /chatorg
    Bom, vamos por sequencia, começando pelo /membros, crie uma variável global com o numero de arrays considerável. Vou criar a variável Texto.
    Código:

    pawn Code:

    new Texto[256]; //Lembrando, é uma variável global, não deve ser posta dentro de qualquer estrutura que use chaves.

    Vou criar o comando em dialog e utilizar strcat, mas você poderá fazer em SendClientMessage caso queira e isso dispensaria tantas arrays na variável Texto.
    Código:

    pawn Code:

    cmd(membros, playerid, params[])
    {
        #pragma unused params //Não estamos usando parametros no comando, por isso o pragma.
        new corda[70];
        for(new i, PP = GetMaxPlayers(); i < PP; i++)
        {
            if(!IsPlayerConnected(PP)) continue;    //Caso o player não esteja conectado ele dará continuidade no loop
            if(ProgressaoInfo[i][Membro] == ProgressaoInfo[playerid][Membro]) //Caso a org do player [i] for igual a org do player [playerid] Executará o que vem abaixo.
            {
                new nome[MAX_PLAYER_NAME]; //Criará a variável que acumulará o nome do player membro da org.
                GetPlayerName(playerid, nome, sizeof(nome)); //Pegará o nome do player membro da org pra acumular na variável acima.
                format(corda, sizeof(corda), "%s membro da org %s cargo %d\n", nome, Orgnome[ProgressaoInfo[i][Membro]], ProgressaoInfo[i][Cargo]); //Formatará a string corda com o nome, cargo e nome da org pertencente.
                strcat(Texto, corda, 70);
            }
        }
        ShowPlayerDialog(playerid, 1, DIALOG_STYLE_MSGBOX, "Lista de membros online", Texto, "OK", ""); //Mostratá ao player o dialog com a lista de membros.
        strdel(Texto, 0, sizeof(Texto)); //Deletará os dados da string pra que ela possa ser reutilizada e evitando um 'bug' que repete as mensagens.
        return true;
    }

    O /equipar eu vou tentar fazer de modo simples, sendo mais compreensível.
    O processo será o seguinte, ao digitar /equipar verificará a organização do player e se ele está no local de equipamentos da organização dele, caso sim, lhe dará as armas.
    Claro, esse comando pode ficar MUITO mais complexo até com o uso de enum e loops mas creio que isso se aprende na prática se arriscando com a criatividade e não teoricamente.
    Código:

    pawn Code:

    cmd(equipar, playerid, params[])
    {
        #pragma unused params //Não estamos usando parametros no comando, por isso o pragma.
        if(ProgressaoInfo[playerid][Membro] == 1 && IsPlayerInRangeOfPoint(playerid, 3.0, Float:X, Float:Y, Float:Z)) //No X, Y e Z as coordenadas do local de equipe da org 1 = Assassinos
        {
            ResetPlayerWeapons(playerid); //Tirará as armas do player evitando que ele se equipe várias vezes pra conseguir munição infinita.
            GivePlayerWeapon(playerid, 31, 500); //Lhe equipará com uma M4 e 500 balas.
            GivePlayerWeapon(playerid, 24, 300); //Lhe equipará com uma Eagle e 300 balas.
            GivePlayerWeapon(playerid, 25, 250); //Lhe equipará com uma Shotgun e 250 balas.
            SendClientMessage(playerid, C_Assassinos, "Você foi equipado");
            return true;
        }
        else if(ProgressaoInfo[playerid][Membro] == 2 && IsPlayerInRangeOfPoint(playerid, 3.0, Float:X, Float:Y, Float:Z)) //No X, Y e Z as coordenadas do local de equipe da org 2 = Aeronautica
        {
            ResetPlayerWeapons(playerid); //Tirará as armas do player evitando que ele se equipe várias vezes pra conseguir munição infinita.
            GivePlayerWeapon(playerid, 31, 500); //Lhe equipará com uma M4 e 500 balas.
            GivePlayerWeapon(playerid, 24, 300); //Lhe equipará com uma Eagle e 300 balas.
            GivePlayerWeapon(playerid, 25, 250); //Lhe equipará com uma Shotgun e 250 balas.
            SendClientMessage(playerid, C_Aeronautica, "Você foi equipado");
            return true;
        }
        else if(ProgressaoInfo[playerid][Membro] == 2 && IsPlayerInRangeOfPoint(playerid, 3.0, Float:X, Float:Y, Float:Z)) //No X, Y e Z as coordenadas do local de equipe da org 3 = Drifters
        {
            ResetPlayerWeapons(playerid); //Tirará as armas do player evitando que ele se equipe várias vezes pra conseguir munição infinita.
            GivePlayerWeapon(playerid, 31, 500); //Lhe equipará com uma M4 e 500 balas.
            GivePlayerWeapon(playerid, 24, 300); //Lhe equipará com uma Eagle e 300 balas.
            GivePlayerWeapon(playerid, 25, 250); //Lhe equipará com uma Shotgun e 250 balas.
            SendClientMessage(playerid, C_Drifters, "Você foi equipado");
            return true;
        }
        else if(ProgressaoInfo[playerid][Membro] == 2 && IsPlayerInRangeOfPoint(playerid, 3.0, Float:X, Float:Y, Float:Z)) //No X, Y e Z as coordenadas do local de equipe da org 4 = Policia Federal
        {
            ResetPlayerWeapons(playerid); //Tirará as armas do player evitando que ele se equipe várias vezes pra conseguir munição infinita.
            GivePlayerWeapon(playerid, 31, 500); //Lhe equipará com uma M4 e 500 balas.
            GivePlayerWeapon(playerid, 24, 300); //Lhe equipará com uma Eagle e 300 balas.
            GivePlayerWeapon(playerid, 25, 250); //Lhe equipará com uma Shotgun e 250 balas.
            SendClientMessage(playerid, C_PFederal, "Você foi equipado");
            return true;
        }
        return true;
    }

    Lógico, você poderá adicionar mais armas, retirar e/ou mudar as mesmas neste código, fica à sua escolha este é apenas um exemplo.
    Chat da organização, enfim botaremos em prática o SSCANF.
    Código:

    pawn Code:

    cmd(chatorg, playerid, params[])
    {
        //Usaremos parâmetros então não precisaremos do pragma.
        new corda[128];
        if(sscanf(params, "s[128]", corda)) return SendClientMessage(playerid, GetPlayerColor(playerid), "Uso correto: /ChatOrg [Mensagem]");
        if(ProgressaoInfo[playerid][Membro] == 0) return SendClientMessage(playerid, 0xFFFFFFFF, "Civis não tem chat próprio"); //Caso o player tente utilizar chat sendo civil.
        new nome[MAX_PLAYER_NAME]; //Criamos a variável que acumulará o nome do player que está mandando a mensagem à org.
        GetPlayerName(playerid, nome, sizeof(nome)); //Getamos o nome do player e acoplamos à variável criada acima.
        format(Texto, 128, "%s[%d] diz: %s", nome, ProgressaoInfo[playerid][Cargo], corda); //Lembra da variável global chamada de Texto que criamos? Reutilizaremos ela para armazenar o texto que será mandado aos membros da org. Junto com o mandante e seu cargo.
        for(new PP, Progressao = GetMaxPlayers(); PP < Progressao; PP++)
        {
            if(!IsPlayerConnected(PP)) continue; //Caso o player do loop não esteja conectado ele dará continuidade no loop sem executar o que está abaixo.
            if(ProgressaoInfo[PP][Membro] == ProgressaoInfo[playerid][Membro]) //Verificará se o player no Loop é da mesma organização do player que mandou a mensagem à org.
            {
                SendClientMessage(PP, GetPlayerColor(playerid), Texto); //Mandará a mensagem ao player no loop com a cor do player que mandou que lógicamente será a cor da org dele.
            }
        }
        return true;
    }

    ● Criar comandos para líderes /convidar(Em dialog) /promover /demitir

    Vamos partir então para os comandos de líderes, você poderia criar um bool em nosso enum para verificar se o player é ou não Líder, ao invés de fazer isto, criei apenas o 'Cargo' e se ele tiver o cargo 10 será equivalente à líder, vamos ao código.
    Código:

    pawn Code:

    cmd(convidar, playerid, params[])
    {
        new PlayerB, nome[MAX_PLAYER_NAME]; //Criará as variáveis PlayerB que acumulará o ID do player convidado e nome que acumulará o nome de dois players(Um de cada vez, claro).
        if(sscanf(params, "d", PlayerB)) return SendClientMessage(playerid, 0x1E90FF99, "Uso correto: /convidar [id]"); //Caso o player não digite o comando completo retornará à esta mensagem.
        if(!IsPlayerConnected(PlayerB)) return SendClientMessage(playerid, 0x1E90FF99, "Este jogador não está online"); //Caso o jogador convidado não esteja online retornará à esta mensagem.
        GetPlayerName(PlayerB, nome, sizeof(nome)); //Pegará o nome do player convidado para usar ao formatar a variável Texto.
        format(Texto, 70, "Você convidou %s para sua organização", nome); //Formatará a variável texto com a mensagem e o nome do convidante.
        SendClientMessage(playerid, GetPlayerColor(playerid), Texto); //Mandará a mensagem ao convidante informando-o que ele convidou um player.
        GetPlayerName(playerid, nome, sizeof(nome)); //Pegará o nome do player convidante para usar ao formatar a variável Texto
        format(Texto, 128, "%s está lhe convidando para fazer parte da organização: %s \nDeseja aceitar?", nome, Nomeorgs[ProgressaoInfo[playerid][Membro]]); //Formatará a variável Texto com o nome do player convidante e o nome da organização
        ShowPlayerDialog(PlayerB, 100, DIALOG_STYLE_MSGBOX, "Convite para organização", Texto, "Sim", "Não"); //Mostrará ao player convidado o dialog de aceitação da org.
        SetPVarInt(PlayerB, "OrgConvidado", ProgressaoInfo[playerid][Membro]); //Setará a PVar do player convidado com o id da org que ele está sendo convidado, caso aceite, será setado.
        return true;
    }

    Antes de partir para o próximo comando vamos conferir o OnDialogResponse, afinal, é preciso determinar o que acontecerá caso o player aceite o convite para a organização.
    Código:

    pawn Code:

    public OnDialogResponse(playerid, dialogid, response, listitem, inputtext[])
    {
        if(dialogid == 100 && response) //100 é o ID do dialog que usamos no ShowPlayerDialog do comando /convidar. Response é a resposta ao primeiro botão do dialog, no caso, "Sim".
        {
            ProgressaoInfo[playerid][Membro] = GetPVarInt(playerid, "OrgConvidado"); //Setaremos a org do player = a org setada no PVar dele, que é a mesma do player que o convidou.
            ProgressaoInfo[playerid][Cargo] = 1; //Setaremos o cargo do player para 1 afinal ele acabou de entrar na nova organização.
            DeletePVar(playerid, "OrgConvidado"); //Deletaremos a PVar que usamos no comando /convidar.
            return true;
        }
        return true;
    }

    O comando /promover consiste em verificar se o player promovido é da mesma organização que o player promovedor, se o player promovedor é líder e se o player promovido está conectado.
    Código:

    pawn Code:

    cmd(promover, playerid, params[])
    {
        new PlayerB, cargo;
        if(sscanf(params, "dd", PlayerB, Cargo)) return SendClientMessage(playerid, 0x1E90FF99, "Uso correto: /Promover [id] [cargo]");
        if(ProgressaoInfo[playerid][Cargo] != 10) return SendClientMessage(playerid, 0x1E90FF99, "Você não é líder");
        if(ProgressaoInfo[PlayerB][Membro] != ProgressaoInfo[playerid][Membro]) return SendClientMessage(playerid, 0x1E90FF99, "Este jogador não é da mesma organização que você.");
        ProgressaoInfo[playerid][Cargo] = cargo;
        return true;
    }
    Criamos ali a variável PlayerB pra obter o ID do player sendo promovido a a variável Cargo pra obter o nível à qual ele será promovido, ambas são intenger, acumulam valores inteiros.
    Logo após usasse o sscanf para verificar os parametros, verifica-se se o player é líder e também se a organização do player promovido é a mesma organização do player promovente, caso um desses resultados seja falso retornará à mensagem.

    O comando demitir é o mais simples da categoria 'Líder".
    Código:

    pawn Code:

    cmd(demitir, playerid, params[])
    {
        new PlayerB;
        if(sscanf(params, "d", PlayerB)) return SendClientMessage(playerid, 0x1E90FF99, "Uso correto: /Demitir [id]");
        if(!IsPlayerConnected(PlayerB)) return SendClientMessage(playerid, 0x1E90FF99, "Este jogador não está online");
        if(ProgressaoInfo[playerid][Membro] != ProgressaoInfo[PlayerB][Membro]) return SendClientMessage(playerid, 0x1E90FF99, "Este jogador não é da sua organização");
        if(ProgressaoInfo[playerid][Cargo] != 10) return SendClientMessage(playerid, 0x1E90FF99, "Você não é líder da organização");
        ProgressaoInfo[PlayerB][Membro] = 0; //Tornará o player demitido um civil novamente.
        ProgressaoInfo[PlayerB][Cargo] = 0; //Atribuirá o cargo 0 ao player demitido, afinal, agora ele não pertence à org alguma.
        SendClientMessage(PlayerB, C_Civil, "Você foi demitido");
        SetPlayerColor(playerid, C_Civil);
        SendClientMessage(playerid, 0x1E90FF99, "Jogador demitido");
        return true;
    }

    Como nos comandos anteriores, criamos a variável intenger 'PlayerB' para acumular o valor do ID do segundo player na ação, no caso, o player demitido.
    Em baixo verificaremos se o player demitido está ou não no samp, em baixo se a organização dele é igual à organização do player demitidor e em baixo se o player demitidor é líder, caso um desses resultados seja falso será retornado à mensagem.
    Caso seja verdadeiro, setará a organização do player demitido para 0, que é equivalente à 'Civil", setará o cargo dele para 0 e mandará a mensagem ao demitidor e ao demitido informando sobre a demissão.

    ● Banco de dados para salvamento de orgs

    E agora por fim, vamos salvar a organização do Player assim como o cargo do mesmo. Para isso, usaremos SII.
    pawn Code:
    Código:

    public OnPlayerDisconnect(playerid, reason)
    {
        SalvarPlayer(playerid);
        return true;
    }

    stock SalvarPlayer(playerid)
    {
        new nome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, nome, sizeof(nome));
        format(Texto, 35, "Jogadores/%s", nome); //Formatará na variável Texto o caminho onde ficará o arquivo com os dados do player.
        INI_Open(Texto); //Abrirá o arquivo para escrever as informações, caso não exista, ele criará automaticamente.
        INI_WriteInt("Organização", ProgressaoInfo[playerid][Membro]); //Setará na TAG Organização o valor inteiro da variável Membro do playerid(No caso o ID da org dele).
        INI_WriteInt("Cargo", ProgressaoInfo[playerid][Cargo]); //Setará na TAG Cargo o valor inteiro da variável Cargo do playerid(No caso, o cargo dele na org).
        INI_Save(); //Salvar é necessário, caso não salve, não verá nada escrito no arquivo.
        INI_Close(); //Também é necessário Fechar oa rquivo aberto.
        return true;
    }

    É necessário salvar a conta do player quando ele desconecta. Ou caso prefira, sete um timer pra salvar periodicamente.
    Vamos carregar as informações salvas.
    Código:

    pawn Code:

    public OnPlayerConnect(playerid)
    {
        new nome[MAX_PLAYER_NAME];
        GetPlayerName(playerid, nome, sizeof(nome));
        format(Texto, 35, "Jogadores/%s", nome); //Formatará na variável Texto o caminho onde fica o arquivo com os dados do player.
        if(fexist(Texto)) //Verificará se o arquivo existe, caso exista executará o que vem entre as chaves abaixo.
        {
            INI_Open(Texto); //É necessário abrir o arquivo antes de tudo.
            ProgressaoInfo[playerid][Membro] = INI_ReadInt("Organização");
            ProgressaoInfo[playerid][Cargo] = INI_ReadInt("Cargo");
            INI_Close(); //É necessário apenas fechar o arquivo sem salvar, pois nada foi modificado nele.
        }
        return true;
    }

    [Creditos:Josma_cmd E A Progressão Pawn


    Última edição por Wallison_Brasil em Qui 15 Mar 2012 - 21:51, editado 3 vez(es)
    Paulinho
    Paulinho
    --> Postador Fanático
    --> Postador Fanático


    Mensagens : 472
    Moedas : 5260
    Data de inscrição : 23/02/2012

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Paulinho Qui 15 Mar 2012 - 21:19

    Por favor.

    Arrume seu tópico.
    Códigos coloque a tag [CODE*] [/CODE*] (sem os *).
    Além disso, coloque os devidos créditos.
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11644
    Moedas : 1032954
    Data de inscrição : 06/10/2011
    Idade : 29
    Localização : Brasil

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Weslley_Script Qui 15 Mar 2012 - 21:41

    nada mal o tutorial mais precisa arruma mais e coloca os creditos
    Paulinho
    Paulinho
    --> Postador Fanático
    --> Postador Fanático


    Mensagens : 472
    Moedas : 5260
    Data de inscrição : 23/02/2012

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Paulinho Qui 15 Mar 2012 - 21:43

    Não me leve a mal, mais.
    Isso vai dar uns 800 erros no minimo, hehe.

    Cadê os créditos?
    Eu sei que você copiou isso do Fórum SA-MP.
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11644
    Moedas : 1032954
    Data de inscrição : 06/10/2011
    Idade : 29
    Localização : Brasil

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Weslley_Script Qui 15 Mar 2012 - 21:46

    ai e foda neh um cara copia do forum sa-mp --' não copie crie o seu proprio
    Paulinho
    Paulinho
    --> Postador Fanático
    --> Postador Fanático


    Mensagens : 472
    Moedas : 5260
    Data de inscrição : 23/02/2012

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Paulinho Qui 15 Mar 2012 - 21:54

    Obrigado por colocar os devidos créditos.
    Não adianta me enganar a respeito de "créditos" que eu conheço cada scripter e cada código feito por ele.
    avatar
    weverton
    --> Postador Iniciante
    --> Postador Iniciante


    Mensagens : 12
    Moedas : 4757
    Data de inscrição : 04/12/2011

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por weverton Qui 15 Mar 2012 - 22:23

    Mano primeiro aprende a Fazer UMA ORG.Segundo FAÇA seu proprio tutorial.Esse da ai e copiado


    PLAGIOOOOOOOOOOOOOOOOO
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11644
    Moedas : 1032954
    Data de inscrição : 06/10/2011
    Idade : 29
    Localização : Brasil

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Weslley_Script Qui 15 Mar 2012 - 22:32

    Caralho vei da pra para de copia porra ;-> que merda
    Marceloo_Swift
    Marceloo_Swift
    --> Postador Iniciante
    --> Postador Iniciante


    Mensagens : 34
    Moedas : 4682
    Data de inscrição : 14/03/2012

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Marceloo_Swift Qui 15 Mar 2012 - 22:44

    Hm ... CTRL + C CTRL + V '-'
    Wallison_Brasil
    Wallison_Brasil
    --> Postador Iniciante
    --> Postador Iniciante


    Mensagens : 35
    Moedas : 4765
    Data de inscrição : 17/01/2012
    Idade : 28
    Localização : ScriptSamp

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Wallison_Brasil Qui 15 Mar 2012 - 22:49

    gente eu n digo que os tutos são meus olhem os creditos



    Como Criar Org[Exclusivo] 30mmpmx

    Como Criar Org[Exclusivo] T9xu7b
    Como Criar Org[Exclusivo] 50201
    Como Criar Org[Exclusivo] GNZzkC
    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11644
    Moedas : 1032954
    Data de inscrição : 06/10/2011
    Idade : 29
    Localização : Brasil

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Weslley_Script Qui 15 Mar 2012 - 22:49

    Tenso
    TazScript
    TazScript
    --> Postador Iniciante
    --> Postador Iniciante


    Mensagens : 86
    Moedas : 4808
    Data de inscrição : 13/03/2012

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por TazScript Sex 16 Mar 2012 - 14:12

    pq quase todos estão copiando e tao dificil de criar um ??? poxa cria o seu propio



    Sua Inveja e Minha Fama!!
    Paulinho
    Paulinho
    --> Postador Fanático
    --> Postador Fanático


    Mensagens : 472
    Moedas : 5260
    Data de inscrição : 23/02/2012

    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Paulinho Sex 16 Mar 2012 - 14:34

    Tópico fechado, para evitar chat.

    Conteúdo patrocinado


    Como Criar Org[Exclusivo] Empty Re: Como Criar Org[Exclusivo]

    Mensagem por Conteúdo patrocinado


      Data/hora atual: Ter 26 Nov 2024 - 15:31