Portal SAMP
[Tutorial] Uso do Y_Hooks - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Guias e Tutoriais (https://portalsamp.com/forumdisplay.php?fid=7)
+--- Tópico: [Tutorial] Uso do Y_Hooks (/showthread.php?tid=2172)



Uso do Y_Hooks - Gomes - 06/03/2022

Um breve tutorial sobre a utilização da include y_hooks para a modularização de sistemas no SA-MP.

Repositório: https://github.com/Gomaink/Tutorial-Y-Hooks



1. Instalação

Na instalação é onde muitos se perdem, porém é algo muito simples de ser feito.

Acesse o GitHub do Y_Less e baixe a biblioteca YSI.

Link do GitHub: https://github.com/pawn-lang/YSI-Includes<br>;
Link para download direto: https://www.mediafire.com/file/koiqd2q9m2thelf/YSI-Includes.zip/file

Se optou em baixar pelo GitHub, clique em Code e depois em Download Zip como na imagem.


[Imagem: ezF5hRB.png]


Caso contrário e você tenha optado pelo mediafire, apenas clique no botão download como na imagem.


[Imagem: svJ60iA.png]


Após a instalação, extraia o arquivo após isso irá lhe dar uma pasta com o nome "YSI-Includes" ou algo parecido.


[Imagem: mHVoy3i.png]


Clique sobre a pasta, pressione o botão direito do mouse e clique em copiar, após isso vá até a pasta de seu gamemode e cole em pawno/includes.



2. Utilizando

Primeiro de tudo, precisamos criar uma pasta onde se localizará os módulos de seu Gamemode, ele deve estar na pasta principal de seu GM e não pode conter espaços ou números, você pode optar por algo como: modulos ou modules.


[Imagem: vHojpTR.png]


Após a criação da pasta, devemos criar os seus módulos, use uma extensão como .pwn/.inc/.sys.


[Imagem: ajOKS0N.png]


Dentro do arquivo criado, podemos começar definindo o uso da include y_hooks que será responsável pela modularização de seu Gamemode, use:
#include <YSI-Includes\YSI_Coding\y_hooks>


[Imagem: gBBUmHW.png]


Após isso, você precisa vincular o módulo ao Gamemode, você pode usar:

#include "../suapastademodulos/nomedoseumodulo"

Você deve fazer isso antes da main ou no final do gamemode.


[Imagem: Zx7spjj.png]


IMPORTANTE: Você deve definir a include y_hooks em todos os seus módulos!





3. Callbacks

Para a utilização de callbacks em módulos é bem simples, você deve apenas trocar o nome "public" por "hook" em seu módulo, algo como:


[Imagem: NvQCI8Q.png]


Após isso você pode utilizar a callback dentro de seu módulo sem problemas.

IMPORTANTE: A ordem em que você declara seu módulo no seu GM principal vai interferir na ordem de acontecimentos, por exemplo: Você criou um módulo onde dá pontos para uma pessoa ao matar alguém e também cria um módulo onde salva as contas ao desconectar, se você declarar o módulo de salvar ao desconectar antes do módulo de dar pontos a pessoa, não irá salvar os pontos pelo fato da ordem (Espero que isso tenha ficado claro pois é muito importante).





4. Útil

Algumas informações úteis.

Includes - Ao declarar uma include no GM principal, ela será vinculada a todos os módulos, por tanto não é necessário declarar uma include duas vezes.

Comandos - A utilização de comandos é totalmente permitida nos módulos, você pode utilizar tanto a Callback nativa quanto um processador de comandos como ZCMD ou Pawn.CMD, basta declara-lo no GM principal.

Órdem dos módulos: Já citei antes mas é importante; A ordem em que você declara seu módulo no seu GM principal vai interferir na ordem de acontecimentos, por exemplo: Você criou um módulo onde dá pontos para uma pessoa ao matar alguém e também cria um módulo onde salva as contas ao desconectar, se você declarar o módulo de salvar ao desconectar antes do módulo de dar pontos a pessoa, não irá salvar os pontos pelo fato da ordem.

Exagear - Provavelmente a biblioteca YSI não será compilada no Exagear, impossibilitando o uso da modularização pelo y_hooks Sad

Erros: Qualquer erro ortográfico ou alguma dúvida na utilização, me contate em meu discord: gomaink#3403



RE: Uso do Y_Hooks - Sr.Careca - 07/03/2022

Ensina y_timer


RE: Uso do Y_Hooks - SubiluBR - 25/03/2022

(07/03/2022 01:34)Sr.Careca Escreveu: Ensina y_timer

Poise


RE: Uso do Y_Hooks - Apelaum - 06/06/2022

O meu apareceu um erro:
error 021: symbol already defined: "DONT_USE_SCM"
Na linha do main da minha gamemode


RE: Uso do Y_Hooks - Dr Editor - 06/06/2022

(07/03/2022 01:34)Sr.Careca Escreveu: Ensina y_timer

(25/03/2022 19:36)SubiluBR Escreveu:
(07/03/2022 01:34)Sr.Careca Escreveu: Ensina y_timer

Poise

https://ysi.fandom.com/wiki/Library:YSI%5Cy_timers


RE: Uso do Y_Hooks - xbruno1000x - 06/06/2022

(06/06/2022 12:34)Apelaum Escreveu: O meu apareceu um erro:
error 021: symbol already defined: "DONT_USE_SCM"
Na linha do main da minha gamemode

Creio que seja a #define SCM SendClientMessage.


RE: Uso do Y_Hooks - Apelaum - 06/06/2022

Obrigado