Ok, hai sa le luam pe bucati, nu are rost sa faci schimbari pe care nu le intelegi.
FM_CmdStart e chemat in fiecare frame ca sa verifice daca o comanda a fost initiata. Nu stiu ce vrei sa zici cu "isi da automat unregister fwd". Fakemeta doar da hook unor functii din joc, nu face nimic mai mult, practic e un punct de acces pentru tine catre functia respectiva(in cazul asta se numeste pfnCmdStart). WeaponIdle e chemat cat timp arma e in idle state, fix momentul cand tu vrei sa verifici pentru butoane. Si vrei sa verifici doar cat timp are arma respectiva in mana, deci intervalul de timp dintre Deploy(arma apare in maini) si Holster(arma se intoarce in invetar si alta arma apare in mana). Poti sa faci ceva de genul:
Code: Select all
#include <amxmodx>
#include <hamsandwich>
#include <fakemeta>
new HamHook:HookCBaseEntity_KnifeIdle
public plugin_init()
{
RegisterHam(Ham_Item_Deploy, "weapon_knife", "CBasePlayer_ItemDeploy", false)
RegisterHam(Ham_Item_Holster, "weapon_knife", "CBasePlayer_ItemHolster", false)
HookCBaseEntity_KnifeIdle = RegisterHam(Ham_Weapon_WeaponIdle, "weapon_knife", "CBaseEntity_KnifeIdle", true)
DisableHamForward(HookCBaseEntity_KnifeIdle)//momentan nu ne trebuie
}
public CBasePlayer_ItemDeploy(Ent)
{
//acum ne trebuie
EnableHamForward(HookCBaseEntity_KnifeIdle)
}
public CBasePlayer_ItemHolster(Ent)
{
//si acum nu ne mai trebuie :))
DisableHamForward(HookCBaseEntity_KnifeIdle)
}
public CBaseEntity_KnifeIdle(Ent)
{
new id = pev(Ent, pev_owner)
//restul codului tau din CmdStart
}
Asa cum am zis si in cod, pui ce aveai in CmdStart in KnifeIdle. Eu am numit functiile CBase_ pentru ca astea sunt numele lor reale in joc, dar le poti denumi asa cum vrei tu.
Sa inteleg ca ingrijorarea ta legata de hud este ca nu se va updata imediat. La un task de 1.0 secunde nu se va simti o diferenta, crede-ma, PreThink e overkill pentru asa ceva. E ilogic sa il tot reafisezi de 100 de ori / secunda, spamezi clientul cu mesaje inutile.
Legat de Deploy, nu exista niciun bug, ceva ai facut gresit, poate nu ai pus clasa corecta a armei in RegisterHam sau ai dat hook ca pre nu ca post(0 in loc de 1 in RegisterHam). Ham da hook unor functii virtuale din mod, deci nu are ce bug sa fie. Daca metoda asta de setare modele functioneaza pentru CS va functiona si pentru pluginul tau. In Entities Resources Replacement folosesc Deploy si nu am nicio problema.
Eu zic ca e destul atat, daca mai ai intrebari te ascult. Daca nu, dupa ce schimbi chestiile astea continuam cu restul modificarilor.
Daca vreti ajutorul meu, nu dati bump la topic, fara intrebari de genu "cat mai dureaza/mai astept mult?".