下面是引用 husano896 於 2011-02-02 08:21 發表的 :
複製程式
plugin_init()
{
//這段需要用到 <amxmodx> 和 <hamsandwich>
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1", "fw_WeapAttack2", 1)
}
public fw_WeapAttack2(weapon)
{
//需用到<fakemeta>
if (!pev_valid(weapon))
return HAM_IGNORED;
//需用到 <cstrike>
if (cs_get_weapon_silen(weapon))
{
cs_set_weapon_silen(weapon,0,0)
}
client_print(id,print_center,"M4A1禁止裝消音器!")
return HAM_IGNORED;
}
以上為部分重要指令~
話說…那 client_print 後面的"id"沒指定成功吧…而且這樣寫…
在「cs_get_weapon_silen」還沒回傳"true"之前還是會有裝消音器的動作…
在裝消音器的動作持續時無法開火…等於只是將裝完消音後的M4A1強制變成沒裝消音而已…
這樣還需要「set_pdata_float(id, 83, 0.0, 5)」和「pev_weaponanim」來DEBUG了…
以下寫法…基本上不會有上述問題…請參考…
複製程式
#include <amxmodx>
#include <hamsandwich>
public plugin_init()
{
register_plugin("undefined", "1.0", "MyChat:a7811311622")
RegisterHam(Ham_Weapon_SecondaryAttack, "weapon_m4a1", "fw_SecAttack")
}
public fw_SecAttack(weapon)
{
if (pev_valid(weapon)) return HAM_SUPERCEDE;
return HAM_IGNORED;
}
不過使用「return HAM_SUPERCEDE;」時可能會讓V檔執行前一個動作…
如果覺得不正常就要再用「pev_weaponanim」DEBUG了…