Portal SAMP
[Ajuda] Textdraw + Hooks? não funciona? - Versão de Impressão

+- Portal SAMP (https://portalsamp.com)
+-- Fórum: SA-MP (https://portalsamp.com/forumdisplay.php?fid=5)
+--- Fórum: Área de suporte (https://portalsamp.com/forumdisplay.php?fid=6)
+--- Tópico: [Ajuda] Textdraw + Hooks? não funciona? (/showthread.php?tid=2581)



Textdraw + Hooks? não funciona? - Ryuzaki - 20/07/2022

--------------------- > EDITANDO TÓPICO PROBLEMA ANTIGO RESOLVIDO. <---------------------

Boa tarde pessoal, minha GM é toda em modulos, e eu descobri uma coisa que sinceramente não esperava e espero que tenha solução, fazendo textdraw de login para meu servidor, notei que a public quando está em 'hook' ela não funciona os clicks na textdraw, alguém sabe me dizer por que?

Exemplo:

NÃO FUNCIONA.

Citar:[font=Consolas, "Courier New", monospace]hook OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)[/font]


FUNCIONA

Citar:[font=Consolas, "Courier New", monospace]public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)[/font]



RE: Textdraw + Hooks? não funciona? - domingues93 - 20/07/2022

(20/07/2022 14:48)Ryuzaki Escreveu: --------------------- > EDITANDO TÓPICO PROBLEMA ANTIGO RESOLVIDO. <---------------------

Boa tarde pessoal, minha GM é toda em modulos, e eu descobri uma coisa que sinceramente não esperava e espero que tenha solução, fazendo textdraw de login para meu servidor, notei que a public quando está em 'hook' ela não funciona os clicks na textdraw, alguém sabe me dizer por que?

Exemplo:

NÃO FUNCIONA.

Citar:[font=Consolas, "Courier New", monospace]hook OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)[/font]


FUNCIONA

Citar:[font=Consolas, "Courier New", monospace]public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)[/font]


Use hook OnPlayerClickPlayerTD


RE: Textdraw + Hooks? não funciona? - Ryuzaki - 21/07/2022

(20/07/2022 22:26)domingues93 Escreveu:
(20/07/2022 14:48)Ryuzaki Escreveu: --------------------- > EDITANDO TÓPICO PROBLEMA ANTIGO RESOLVIDO. <---------------------

Boa tarde pessoal, minha GM é toda em modulos, e eu descobri uma coisa que sinceramente não esperava e espero que tenha solução, fazendo textdraw de login para meu servidor, notei que a public quando está em 'hook' ela não funciona os clicks na textdraw, alguém sabe me dizer por que?

Exemplo:

NÃO FUNCIONA.

Citar:[font=Consolas, "Courier New", monospace]hook OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)[/font]


FUNCIONA

Citar:[font=Consolas, "Courier New", monospace]public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)[/font]


Use hook OnPlayerClickPlayerTD


Não funcionou, quando clico na textdraw, nada acontece novamente.


RE: Textdraw + Hooks? não funciona? - Dr Editor - 21/07/2022

Tenta usar um hook convencional:

Código:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
    
    #if defined hk_OnPlayerClickPlayerTextDraw
        hk_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
    #endif
    return true;
}

#if defined _ALS_OnPlayerClickPlayerTextDra
    #undef OnPlayerClickPlayerTextDraw
#else
    #define _ALS_OnPlayerClickPlayerTextDra
#endif
#define OnPlayerClickPlayerTextDraw hk_OnPlayerClickPlayerTextDraw
#if defined hk_OnPlayerClickPlayerTextDraw
    forward hk_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
#endif



RE: Textdraw + Hooks? não funciona? - Ryuzaki - 21/07/2022

(21/07/2022 16:13)Dr Editor Escreveu: Tenta usar um hook convencional:

Código:
public OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid)
{
    
    #if defined hk_OnPlayerClickPlayerTextDraw
        hk_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
    #endif
    return true;
}

#if defined _ALS_OnPlayerClickPlayerTextDra
    #undef OnPlayerClickPlayerTextDraw
#else
    #define _ALS_OnPlayerClickPlayerTextDra
#endif
#define OnPlayerClickPlayerTextDraw hk_OnPlayerClickPlayerTextDraw
#if defined hk_OnPlayerClickPlayerTextDraw
    forward hk_OnPlayerClickPlayerTextDraw(playerid, PlayerText:playertextid);
#endif

Também não funcionou.

Agradeço a todos que me ajudaram até agora, mas tive uma ideia que resolveu meu problema na hora, caso alguém esteja tendo a mesma dificuldade e esteja programando em módulos, siga o seguintes passos.

1 - Crie uma pasta com qual quer nome dentro do servidor.
2 - Crie um arquivo .pwn ( interacoes.pwn ) foi o que eu criei.
3 - Copie toda a public OnPlayerClickPlayerTextDraw e cole dentro do seu arquivo do passo 2.
4 - Coloque a include #include <YSI\y_hooks> no arquivo e problema estará resolvido.

Obs: o passo 3 você deve manter PUBLIC e não HOOK caso ao contrario não funcionara, e depois disso não poderá em lugar nenhum na GM ter outra ( OnPlayerClickPlayerTextDraw ) você usará só a que você criou para fazer tudo.

Assim que puxa a textdraw, e você clica, como a GM está toda interligada por módulos, ele já identifica o click e abre, o único problema que talvez algumas pessoas podem não gostar, é que se o seu servidor tem muitas textdraw, com o tempo o passo 3 ficara cheio de condições, mais isso é de menos, pois 1 arquivo com apenas uma public é bem tranquilo.

Vlw pessoal.

Caso esse método possa prejudicar fiquem à-vontade para me corrigir aqui.


RE: Textdraw + Hooks? não funciona? - Device-Black - 14/12/2022

Façam assim, incluindo y_hooks varias vezes a cada gancho
Código PHP:
#include    <a_samp>

forward OnClickPlayerText(playeridPlayerText:clickedid);
public 
OnPlayerClickPlayerTextDraw(playeridPlayerText:playertextid)
{
    return 
CallLocalFunction("OnPlayerClickText""dd"playerid_:playertextid);
}

#include    <YSI_Coding\y_hooks>
hook OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"OnClickPlayerText: 1 hook");
}

#include    <YSI_Coding\y_hooks>
hook OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"OnClickPlayerText: 2 hook");
}

#include    <YSI_Coding\y_hooks>
hook OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"OnClickPlayerText: 3 hook");
}

#include    <YSI_Coding\y_hooks>
hook OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"OnClickPlayerText: 4 hook");
}

public 
OnClickPlayerText(playeridPlayerText:clickedid)
{
    
PlayerTextDrawDestroy(playeridclickedid);
    return 
1;


ou assim, sempre pondo um ou mais caracteres diferentes
Código PHP:
forward OnClickPlayerText(playeridPlayerText:clickedid);
public 
OnPlayerClickPlayerTextDraw(playeridPlayerText:playertextid)
{
    return 
CallLocalFunction("OnPlayerClickText""dd"playerid_:playertextid);
}

Hook:W_OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"(W) OnClickPlayerText: 1 hook");
}

Hook:w_OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"(w) OnClickPlayerText: 2 hook");
}

Hook:T_OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"(T) OnClickPlayerText: 3 hook");
}

Hook:t_OnClickPlayerText(playeridPlayerText:clickedid)
{
    print(
"(t) OnClickPlayerText: 4 hook");
}

public 
OnClickPlayerText(playeridPlayerText:clickedid)
{
    
PlayerTextDrawDestroy(playeridclickedid);
    return 
1;