* (c) Copyright 2008 by VEN
* This file is provided as is (no warranties)
* Plugin draws dynamic status bar when player reloads his weapon.
* Idea has been taken from "Reloadbar" plugin by "NL)Ramon(NL".
* - some code improvements
// plugin's main information
new g_iFwIdRegUserMsgPost
new const g_szMsgNameWeaponList[] = "WeaponList"
stock const g_szMsgNameBarTime[] = "BarTime"
new Float:g_fPlayerReloadEndGameTime[MAX_CLIENTS + 1]
public plugin_precache() {
g_iMsgIdWeaponList = get_user_msgid(g_szMsgNameWeaponList)
g_iFwIdRegUserMsgPost = register_forward(FM_RegUserMsg, "fwRegUserMsgPost", 1)
public fwRegUserMsgPost(const szMsgName[]) {
if (!equal(szMsgName, g_szMsgNameWeaponList))
unregister_forward(FM_RegUserMsg, g_iFwIdRegUserMsgPost, 1)
g_iMsgIdWeaponList = get_orig_retval()
register_message(g_iMsgIdWeaponList, "fwMsgWeaponList")
public fwMsgWeaponList() {
static iHookedWeapons, iWeaponId, szWeaponName[32]
iWeaponId = get_msg_arg_int(WeaponList_Id)
if (iHookedWeapons & (1<<iWeaponId))
get_msg_arg_string(WeaponList_Name, szWeaponName, sizeof szWeaponName - 1)
static const szfwHamWeaponReloadPost[] = "fwHamWeaponReloadPost"
if (!(WEAPONS_SHOTGUNS_NONGUNS & (1<<iWeaponId)))
RegisterHam(Ham_Weapon_Reload, szWeaponName, szfwHamWeaponReloadPost, 1)
static const szFwHamItemDeployPost[] = "fwHamItemDeployPost"
RegisterHam(Ham_Item_Deploy, szWeaponName, szFwHamItemDeployPost, 1)
iHookedWeapons |= (1<<iWeaponId)
register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR)
g_iMsgIdBarTime = get_user_msgid(g_szMsgNameBarTime)
public fwHamWeaponReloadPost(iEnt) {
if (!IsWeaponInReload(iEnt))
static iWeaponPlayer, Float:fAttackDelay
iWeaponPlayer = GetWeaponPlayer(iEnt)
fAttackDelay = GetPlayerAttackDelay(iWeaponPlayer)
MsgBarTime(iWeaponPlayer, floatround(fAttackDelay))
g_fPlayerReloadEndGameTime[iWeaponPlayer] = get_gametime() + fAttackDelay
public fwHamItemDeployPost(iEnt) {
iWeaponPlayer = GetWeaponPlayer(iEnt)
if (g_fPlayerReloadEndGameTime[iWeaponPlayer] < get_gametime())
MsgBarTime(iWeaponPlayer, 0)
g_fPlayerReloadEndGameTime[iWeaponPlayer] = 0.0
stock MsgBarTime(iPlayer, iBarScale) {
message_begin(MSG_ONE, g_iMsgIdBarTime, _, iPlayer)