SA-MP Forums Archive
[Ajuda] Hook pode fazer isso? - 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)
+---- Thread: [Ajuda] Hook pode fazer isso? (/showthread.php?tid=468184)



Hook pode fazer isso? - Juniiro3 - 06.10.2013

Bem, estou querendo adicionar um parвmetro em uma callback nativa do SAMP, isso й possнvel usando um Hook? Ou serб necessбrio criar uma outra callback e adapta-la?


Re: Hook pode fazer isso? - WLSF - 06.10.2013

Quote:
Originally Posted by Juniiro3
Посмотреть сообщение
Bem, estou querendo adicionar um parвmetro em uma callback nativa do SAMP, isso й possнvel usando um Hook? Ou serб necessбrio criar uma outra callback e adapta-la?
Й possнvel sim, mas vocк terб de tratar esse parвmetro na mгo, dependendo do que vocк queira fazer com ele.

Eu posso te ajudar com isso, explicando, o que vocк pretende ?


Re: Hook pode fazer isso? - Juniiro3 - 06.10.2013

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Й possнvel sim, mas vocк terб de tratar esse parвmetro na mгo, dependendo do que vocк queira fazer com ele.

Eu posso te ajudar com isso, explicando, o que vocк pretende ?
Na verdade й um projeto meu: Um processador de comandos (nгo sei se serб divulgado aqui na board, estou fazendo mais como estudos e para ver como ficaria a velocidade dele).

Para isso eu iria hookear e modificar (na minha include) a OnPlayerCommandText para ser usada na include e ter o parвmetro "success" que serб 0 ou 1 (Meio уbvio o que ele faz nй? rs), entгo a callback ficaria assim:

public OnPlayerCommandText ( playerid , cmdtext[] , success )


Respuesta: Hook pode fazer isso? - ipsBruno - 06.10.2013

Obvio que dб.



Exemplo

PHP код:
public OnGameModeInit() {
    new 
param 1;    
    return 
UAEUEAUEUA_OnGame(param);
}
#define OnGameModeInit UAEUEAUEUA_OnGame
foward OnGameModeInit (param); 
entao usas

pawn Код:
public OnGameModeInit (param)
{
   printf("%d", param);
}



Re: Hook pode fazer isso? - WLSF - 06.10.2013

Й bem bбsico a questгo do hook, sу que no seu caso vocк nem sabe se vai receber o comando ainda, entгo vocк vai ter de descartar a nativa OnPlayerCommandText, o cara pode atй usar no GM...
Mas nгo vai ser a mesma, ela vai esperar uma chamada da original apenas...

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!!!strcmp(cmdtext, "/cmd"))
        return funcidx("_w@OnPlayerCommandText") != -1 ? CallLocalFunction("_w@OnPlayerCommandText", "iii", playerid, cmdtext, 1) : 0;
       
    return 0;
}

#undef OnPlayerCommandText
#define OnPlayerCommandText _w@OnPlayerCommandText
forward _w@OnPlayerCommandText
Nesse exemplo, tu botaria na comparaзгo do /cmd

as condiзхes pro comando retornar success = 1, entende ?


Re: Hook pode fazer isso? - Juniiro3 - 06.10.2013

Quote:
Originally Posted by Willian_Luigi
Посмотреть сообщение
Й bem bбsico a questгo do hook, sу que no seu caso vocк nem sabe se vai receber o comando ainda, entгo vocк vai ter de descartar a nativa OnPlayerCommandText, o cara pode atй usar no GM...
Mas nгo vai ser a mesma, ela vai esperar uma chamada da original apenas...

pawn Код:
public OnPlayerCommandText(playerid, cmdtext[])
{
    if (!!!strcmp(cmdtext, "/cmd"))
        return funcidx("_w@OnPlayerCommandText") != -1 ? CallLocalFunction("_w@OnPlayerCommandText", "iii", playerid, cmdtext, 1) : 0;
       
    return 0;
}

#undef OnPlayerCommandText
#define OnPlayerCommandText _w@OnPlayerCommandText
forward _w@OnPlayerCommandText
Nesse exemplo, tu botaria na comparaзгo do /cmd

as condiзхes pro comando retornar success = 1, entende ?
Ah ok obrigado Willian e Bruno


Re: Hook pode fazer isso? - Schocc - 07.10.2013

Willian esta certo? "iii"
pawn Код:
"iii", playerid, cmdtext, 1



Re: Hook pode fazer isso? - zSuYaNw - 07.10.2013

segundo parвmetro da callback tem que ser string ...


Re: Hook pode fazer isso? - WLSF - 07.10.2013

Obrigado pela correзгo, eu nem me toquei.