їPara quй sirve hacerle un gancho a una funciуn? - 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: Español/Spanish (
https://sampforum.blast.hk/forumdisplay.php?fid=29)
+---- Thread: їPara quй sirve hacerle un gancho a una funciуn? (
/showthread.php?tid=466041)
їPara quй sirve hacerle un gancho a una funciуn? -
Malganys - 25.09.2013
Hola a todos, como bien sabran algunos quiero saber para que sirve hacerle un gancho (hook) a una funciуn.
Re: їPara quй sirve hacerle un gancho a una funciуn? -
TheChaoz - 26.09.2013
Se utiliza cuando se crea una funcion con base en otra existente (para extenderla o realizar algo mas) y al hookearla (a la vieja funcion), se evita tener 2 funciones que realicen practicamente lo mismo y posibles bugs en algunos casos.
ej clasico:
pawn Код:
E_PLAYER_DATA
{
//...
Float:health,
//...
}
new pData[MAX_PLAYERS][E_PLAYER_DATA]
stock custom_SetPlayerHealth(playerid, Float:health)
{
pData[playerid][health] = health;
SetPlayerHealth(playerid, health);
}
#if defined SetPlayerHealth
#undef SetPlayerHealth
#endif
#define SetPlayerHealth custom_SetPlayerHealth
Respuesta: їPara quй sirve hacerle un gancho a una funciуn? -
Malganys - 26.09.2013
Bien, gracias por el ejemplo. Pero me interesarнa mucho mбs si me pudieras dar un ejemplo de como funciona y_hooks (sй que puedes hookear una funciуn en una lнnea), ya que no entiendo correctamente el funcionamiento.
Respuesta: їPara quй sirve hacerle un gancho a una funciуn? -
DesingMyCry - 26.09.2013
Chaoz, ese cуdigo no funcionaria, mostrarнa una serie de errores en el IDE.
pawn Код:
#if defined SetPlayerHealth
#undef SetPlayerHealth
#endif
Eso es uno de los errores mas graves.
Re: їPara quй sirve hacerle un gancho a una funciуn? -
TheChaoz - 27.09.2013
Perdon en el apuro de contestar por falta de tiempo hize el codigo demasiado bosquejado.
Aqui un codigo funcional:
pawn Код:
#include <a_samp>
enum E_PLAYER_DATA
{
//...
Float:pHealth,
//...
}
new pData[MAX_PLAYERS][E_PLAYER_DATA];
stock custom_SetPlayerHealth(playerid, Float:health)
{
pData[playerid][pHealth] = health;
SetPlayerHealth(playerid, health);
}
#if defined ALS_SetPlayerHealth
#undef ALS_SetPlayerHealth
#endif
#define SetPlayerHealth custom_SetPlayerHealth
#define ALS_SetPlayerHealth
public OnPlayerSpawn(playerid)
{
SetPlayerHealth(playerid, 100);
return 0;
}