register_forward(FM_CmdStart,"CmdStart");
public CmdStart(id, uc_handle, seed)
{
if(!is_user_connected(id) || !is_user_alive(id))
return PLUGIN_CONTINUE;
if(ma_zmienna[id])
set_uc(uc_handle, UC_Buttons, get_uc(uc_handle, UC_Buttons) & ~IN_ATTACK);
return PLUGIN_CONTINUE;
}
Nie żebym sie czepiał, ale nienawidzę jakis niedokładności/lekkich błędów:
- to forward z fakemety, używaj więc return FMRES_*
- sprawdz czy gracz jest zywy zamiast sprawdzac czy jest podlaczony i zywy (wsadź alive do warunku nr.2)
- czy po zmienieniu czegos nie powinnismy zwrocic FMRES_HANDLED?
#define FMRES_IGNORED 1 // Calls target function, returns normal value
#define FMRES_HANDLED 2 // Tells metamod you did something, still calls target function and returns normal value
#define FMRES_OVERRIDE 3 // Supposed to still call the target function but return your value instead
// however this does not work properly with metamod; use supercede instead.
#define FMRES_SUPERCEDE 4 // Block the target call, and use your return value (if applicable)
Ja bym użył kodu Asiap, zamiast hookować forward, który się wykonuje bardzo często...