SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

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

SSGamers - 12 Anos online por você.

#SSGamers - A Comunidade que mais crescer no brasil!

SSGamers - 12 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.

    [Tutorial] Programação modular

    Weslley_Script
    Weslley_Script
    SS - Fundador
    SS - Fundador


    Steam Steam : WeslleySSGames
    Zello : WeslleySSGames
    Mensagens : 11378
    Moedas : 1031971
    Data de inscrição : 06/10/2011
    Idade : 28
    Localização : Brasil

    [Tutorial] Programação modular Empty [Tutorial] Programação modular

    Mensagem por Weslley_Script Sex 14 Abr 2023 - 18:41

    Programação Modular


    O programa modular, também conhecido por Modularidade é um conceito onde o sistema ou software é dividido em partes distintas. O conceito de modularidade passa por criar módulos com funções diferentes e usar um módulo principal, por exemplo:
    Código PHP:

    Código:
    Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
    Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
    Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
    Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y));
    main()
    {
        Soma(2,5);
        Divisao(2,5);
        Multiplicao(2,5);
        Subtracao(2,5);


    Neste exemplo já podemos verificar a existência da modularidade, ou seja, nуs criamos funзхes responsбveis por tarefas ou algoritmos, em vez de colocarmos tudo em uma sу parte nуs separamos em pequenas partes e depois juntamos tudo.

    Com isto deu-se a criação de bibliotecas, as tais famosas #includes, fazendo com que cada biblioteca fosse responsável por uma determinada tarefa. Já quando nуs programa-mos peão temos tendкncia a escrever um cуdigo em apenas um arquivo eo que acontece й que ele torna-se grande e nуs a fim-nos por perder no meio do cуdigo em si.

    As pessoas que usam a modularidade podem-se dizer que são pessoas mais organizadas, pessoas que se preocupam com a estética do código e preocupam-se em não se perder no meio do oceano. Isto porque se separar-mos tudo é mais fácil encontrar algo e esse algo por vezes pode ser um bug.

    Um exemplo da programação modular é o Paradise City RPG , o Lуs desenvolveu o gamemode em mуdulos tornando o mesmo bastante organizado e fбcil de outros entenderem, no caso de haverem mais developers claro.

    [Tutorial] Programação modular Rq59PXL

    A ideia de como dividir o gamemode em mуdulos depende BASTANTE de cada um e nгo existe uma regra global, eu duvidosamente dividido por sistemas, ou seja, se for o sistema de carros й uma coisa, casa outra, jogador outra, por ai a diante .

    Agora claro existem questхes tйcnicas como por exemplo, tenho de definir as includes em todos os mуdulos? Nгo.

    Para que nгo saiba a funзгo #include serve apenas para incluir o cуdigo em determinado cуdigo ou seja
    calculos.inc
    Código PHP:

    Código:
    Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
    Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
    Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
    Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y)); 

    calcular.pwn
    Código PHP:

    Código:
    #include <calculos.inc>
    main()
    {
        Soma(2,5);
        Divisao(2,5);
        Multiplicao(2,5);
        Subtracao(2,5);


    Realidade:
    Código PHP:

    Código:
    Soma(x,y) return printf("%d + %d = %d",x,y,(x+y));
    Divisao(x,y) return printf("%d/%d = %d",x,y,(x/y));
    Multiplicao(x,y) return printf("%d*%d = %d",x,y(x*y));
    Subtracao(x,y) return printf("%d-%d = %d",x,y,(x-y));
    main()
    {
        Soma(2,5);
        Divisao(2,5);
        Multiplicao(2,5);
        Subtracao(2,5);


    Isso é o que acontece quando se usa o #include, então vamos agora à pergunta em si.

    Quando criamos módulos não é necessário estar a incluir os mesmos includes, o que devemos fazer é incluir as includes principais no arquivo principal (main.pwn) e depois incluir os módulos
    Código PHP:

    Código:
    #include <a_samp>
    #include <sscanf>
    #include <zcmd>
    //etc..
    //mуdulos
    #include "modulos/player.pwn"
    #include "modulos/vehs.pwn"
    #include "modulos/props.pwn"
    //etc.. 

    O que acontece é que o cуdigo juntará tudo e como sabemos os compiladores funcionam de cima para baixo, então eles iram definir o que é necessário em baixo.

    Então mas e as callbacks do sa-mp, precisa de fazer hook? Não necessariamente.

    À um tempo atrés eu tive uma conversa com o y_less sobre usar o Hook Method 7 e fazer a chamada normal das callbacks, então ele disse-me que para fazer a chamada normal das callbacks requere disciplina, ou seja, é necessário saber o que se esta a fazer para nгo causar problemas no script e segundo ele o y_hooks e os hook methods foram desenvolvidos para trabalharem em transparкncia, ou seja, eles redefinem as callbacks afim do outro programador nгo se esquecer de fazer a chamada.
    Citar:

    Postado originalmente por Y_Less
    Quero dizer, se você estiver explicitamente chamando retornos de chamada em outros arquivos, lembre-se de fazê-lo. Hooks foram desenvolvidos como a maioria dos includes usados ​​para declarar algo como:

    Citar:


    Para usar esta inclusão, adicione "Inc_OnPlayerConnect(playerid);" para "OnPlayerConnect" e "Inc_OnPlayerDisconnect (playerid, razão);" para "OnPlayerDisconnect".
    [size]

    Isso era pesado, frequentemente ignorado e a principal fonte de bugs no uso deles pela maioria das pessoas. Ganchos foram desenvolvidos para fazer isso de forma transparente.
    [/size]
    Um exemplo de chamada é o seguinte:
    main.pwn
    Código PHP:

    Código:
    public OnPlayerConnect(playerid)
    {
        player_OnPlayerConnect(playerid); //chama o mуdulo player.pwn
        return 1;


    jogador.pwn
    Código PHP:

    Código:
    public player_OnPlayerConnect(playerid)
    {
        //login / registro
        return 1;


    O que acontece é que nós chama-mos a nossa função personalizada a partir da função "mée" é como estávamos-mos a criar uma árvore onde existem o pai e os filhos. Na minha opinião não existe nenhuma necessidade de usar y_hooks ou qualquer mйtodo hooks ao desenvolver um gamemode em mуdulos isto porque sendo o programador o ъnico desenvolvedor ou a equipa os ъnicos nгo existe necessidade de trabalhar nessa transparкncia pois ambos tкm conhecimento do que estгo a fazer e por sua vez nгo se irгo esquecer de ligar o pai а filho.

    Isto também é um método bastante usado no LS-RP, por exemplo, eles quando usam funções como OnPlayerConnect, eles fazem desta forma Damian_OnPlayerConnect , Mmartin_OnPlayerConnect, etc..

    Isto é uma boa forma de organização e para quem deseja trabalhar nesta área deve levar em consideração isto pois caso contrário pode-se tornar complicado trabalhar em equipa.

    Nгo sei se o tutorial estб grande coisa, jб nгo faзo а algum tempo, mas pronto, como me fez um pedido vir aqui esclarecer umas dъvidas e expor a minha opiniгo e conhecimento, obrigado a todos!


    Creditos: Rebelox



    [Tutorial] Programação modular D07Xwqb
    [Tutorial] Programação modular Yjab9HN

      Data/hora atual: Qua 1 maio 2024 - 21:04