[Ajuda] O que й um hook ?
#1

Eu li alguns tуpicos de anti cheaters e a maioria deles falavam em criar um hook e talz. O problema й que eu nгo faзo a mнnima ideia do que seja um hook, eu dei uma pesquisada no ****** e nгo achei nada em portuguкs (meu inglкs й horrнvel). Se alguйm puder me explicar OU dar algum exemplo fico agradecido
Reply
#2

Eu nгo entendo disso, mas acho que nгo passa de renomear e direcionar callbacks para nгo ocorrer conflitos entre elas.
Reply
#3

Vocк tem 1 callback que faz X coisas, mas vocк nгo estб satisfeito com ela, entгo vocк quer fazer com que ela faзa Y coisas, sу que vocк nгo pode acessa-la diretamente por algum motivo...

Entгo vocк cria uma callback para fazer as Y coisas e depois vocк chama a callback original, que faz X coisas.

Esse й o conceito bбsico que eu tenho sobre hook, mas na prбtica se aplica a muitas coisas...

Include:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    //Executa as funзхes que vocк deseja
    //Em algum arquivo externo, como uma include por exemplo...
   
   

    // E depois chama a callback (original) que estб em outro script
    // qualquer, que a gente nгo pode acessar
    #if defined hook_OnPlayerCommandText
        hook_OnPlayerCommandText(playerid);
    #endif
    return 1;
}

#if defined _ALS_OnPlayerCommandText
    #undef OnPlayerCommandText
#else
    #define _ALS_OnPlayerCommandText
#endif
#define OnPlayerCommandText hook_OnPlayerCommandText
#if defined hook_OnPlayerCommandText
    forward hook_OnPlayerCommandText(playerid);
#endif
GM:
pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    //comandos do GM...
    return 1;
}
Й muito utilizado no Pawn em includes, pra fazer com que o scripter possa ter uma callback na sua include que talvez outro scripter tenha definido ela em um GM, se nгo houvesse hook, daria um erro de already defined, algo assim. Pois existiriam duas callbacks com mesmo nome...

Nesse caso vocк vai fazer uma include para uso pъblico(todos poderгo usar) e vocк precisa fazer alguma coisa na callback tal... Entгo vocк adiciona as funcionalidades dela, mas como vocк nгo sabe se o scripter que vai usar a include, adicionarб a mesma callback tal no seu script, entгo vocк faz um hook, para poder evitar erros...
Reply
#4

Para complementar o quк o Willian falou, dar uma olhada nestes links que deixei abaixo,

https://sampforum.blast.hk/showthread.php?tid=257127
https://sampforum.blast.hk/showthread.php?tid=187195
https://sampforum.blast.hk/showthread.php?tid=241446
https://sampforum.blast.hk/showthread.php?tid=387600
https://sampforum.blast.hk/showthread.php?tid=441293

Espero ter ajudado .
Reply
#5

Pra complementarІ, й um tйcnica para "renomear" uma Callback, pelo fato de quando compilado, o Compilador junta Includes e Gamemode em um arquivo sу, entгo se houver 2 Callbacks com mesmo nome, darб erro, caso nгo entenda, faзa o teste, crie uma include simples.
pawn Код:
public OnGameModeInit()
{
     print(#Gamemode Iniciado!);
     return 1;
}
salve como include.inc e vб ate seu Gamemode e adicione no topo:
pawn Код:
#include <include>
Como provavelmente seu Gamemode jб terб esta Callback ( OnGamemodeInit ), ele irб apresentar erro, entгo ai que entra o Hook, ele "renomea" a Callback da Include.
Espero que entenda meu modo "estranho" de explicar
Reply
#6

Ah ok! Obrigado a todos que responderam
Reply
#7

se souberes ingles tem aqui 1 coisa que te podera ajudar

https://sampforum.blast.hk/showthread.php?tid=392061
Reply


Forum Jump:


Users browsing this thread: