SA-MP Forums Archive
[Tutorial] Programaзгo modular simples (s/ y_hooks) - Printable Version

+- SA-MP Forums Archive (https://sampforum.blast.hk)
+-- Forum: Non-English (https://sampforum.blast.hk/forumdisplay.php?fid=9)
+--- Forum: Languages (https://sampforum.blast.hk/forumdisplay.php?fid=33)
+---- Forum: Português/Portuguese (https://sampforum.blast.hk/forumdisplay.php?fid=34)
+----- Forum: Lançamentos/Releases (https://sampforum.blast.hk/forumdisplay.php?fid=56)
+----- Thread: [Tutorial] Programaзгo modular simples (s/ y_hooks) (/showthread.php?tid=645944)



Programaзгo modular simples (s/ y_hooks) - willttoonn - 07.12.2017

Programaзгo modular simples (sem y_hooks)
Й fundamental que vocк saiba organizar seu ambiente de trabalho, o seu cуdigo nгo serб diferente disto, para organizar algo grande, nada melhor do que dividi-lo em mуdulos especнficos de cada categoria do que vocк fez, nгo?

Neste tutorial, irei ensinar um mйtodo simples, sem plugins e sem includes adicionais do fуrum, para vocк criar mуdulos e facilmente gerencia-los.

- O primeiro de tudo й criar uma pasta para tais mуdulos, pode ser a sua escolha. Eu por exemplo separei sistemas especнficos no cуdigo que eu trabalho em uma pasta chamada sys/.



- Crie o arquivo .pwn ou em alguma extensгo que nгo impeзa a leitura dele. Particularmente eu utilizo a extensгo .sys para essa pasta especifica que eu criei com meus sistemas.

- Abra o arquivo e comece a escrever os cуdigos, crie as funзхes que necessitar para o seu sistema.

- Se caso vocк precise que essa funзгo esteja em uma public do sa-mp e essa public estб declarada no main-code (arquivo principal do GM) vocк pode criar uma stock ou uma public dentro do modulo e chama-lo na public desejada.

Por exemplo, necessito que uma informaзгo seja realizada quando o jogador entrar, a public que й chamada quando esse evento acontece й o OnPlayerConnect, ela jб estб declarada nativamente no meu main-code por que existe outros cуdigos dentro dela, eu irei criar uma stock com as funзхes que eu desejo nessa public. Irei declarar uma variбvel como negativa para esse evento como exemplo.
PHP код:
stock DrinkBuy_OnPlayerConnect(playerid)
{
    
AlgumaVariavel[playerid] = false;
    return 
1;

* Lembre-se que o tamanho do nome/titulo de qualquer stock, function, public ou variбvel nгo pode passar dos 32 caracteres.
* Para fins de organizaзгo, sempre tento criar a funзгo com parte do mesmo nome da nativa, diferenciando apenas o nome/abreviaзгo do nome do modulo que estou trabalhando.


Criei a stock no arquivo do modulo, agora irei atй o main-code e irei chama-la na public nativa, que й o OnPlayerConnect(playerid) e coloca-lo na posiзгo que eu julgar necessбria e relevante.

PHP код:
public OnPlayerConnect(playerid)
{
    
/*Suas funзхes e necessidades no OnPlayerConnect nativo do main-code*/
    
DrinkBuy_OnPlayerConnect(playerid);
    return 
1;

Posicionei a minha stock no final da public, ou seja, ela sу serб executada quando tudo antes dela for executado.

- Em casos de comandos, vocк pode fazer o mesmo com o OnPlayerText, se for ZCMD ou qualquer outro processador de comandos, vocк pode cria-lo normalmente no modulo que ele funcionarб normalmente.

- Em casos de variбveis que tenham a criaзгo no main-code e vocк precise de novas no modulo, crie elas diretamente no main-code para chama-las no modulo.

- Para chamar o seu arquivo ao main-code vocк deve declarar fora de qualquer funзгo uma #include, por exemplo:
PHP код:
#include "diretуrios/drinkbuy.sys" 
Se tiver dъvidas, pergunte no tуpico. Se achar algum erro, envie via MP.



Re: Programaзгo modular simples (s/ y_hooks) - CaioTJF - 07.12.2017

Poderia citar tambйm algum modo de organizaзгo das pastas, que й algo muito importante.
Acho que nгo adianta muito colocar tudo em uma pasta sу, vai ficar mais desorganizado ainda.


Re: Programaзгo modular simples (s/ y_hooks) - willttoonn - 07.12.2017

Quote:
Originally Posted by CaioTJF
Посмотреть сообщение
Poderia citar tambйm algum modo de organizaзгo das pastas, que й algo muito importante.
Acho que nгo adianta muito colocar tudo em uma pasta sу, vai ficar mais desorganizado ainda.
A organizaзгo varia de programador pra programador, o exemplo que eu citei sгo sistemas especнficos que eu criei e separei eles apenas em uma pasta, por se tratarem da mesma categoria. Faзo o mesmo com mapas, tenho dois modulos chamados exterior.map e interior.map, que guardo em uma pasta chamada maps/.


Re: Programaзгo modular simples (s/ y_hooks) - SnowBorn - 07.12.2017

Ki Linu


Re: Programaзгo modular simples (s/ y_hooks) - PT - 07.12.2017

Jб a muitos anos que uso esse mйtodo e atй hoje nгo me arrependo atй para reparar bugs e muito mais fбcil.

Bom tutorial


Re: Programaзгo modular simples (s/ y_hooks) - Marllun - 07.12.2017

Bom tutorial, porйm ainda usarei y_hooks.


Re: Programaзгo modular simples (s/ y_hooks) - Gguiz - 07.12.2017

Й importante tambйm raciocinar a leitura do compilador. Уtimo tutorial, organizaзгo й tudo na vida de quem programa.


Re: Programaзгo modular simples (s/ y_hooks) - Felipe_Freeze - 07.12.2017

Boa jovem

#AdvancedRoleplay


Re: Programaзгo modular simples (s/ y_hooks) - Dayvison_ - 07.12.2017

Deveria citar um exemplo do seu mйtodo trabalhando com retornos de chamadas, e ao meu ver isto mata totalmente o significado de "mуdulos"


Re: Programaзгo modular simples (s/ y_hooks) - Bruno13 - 08.12.2017

Bacana, mas nгo acha que poderias ter incrementado o Method ALS 7? Ele й de fбcil implementaзгo e nгo precisaria toda hora estar inserindo funзхes nas callbacks do mуdulo main, sem contar que em relaзгo ao y_hooks, ele й bem mais preciso, utiliza menos processamento, tem resposta bem mais rбpida e o tempo de compilaзгo й menor.