Code: Select all
// CS Offsets#if cellbits == 32const OFFSET_CLIPAMMO = 51#elseconst OFFSET_CLIPAMMO = 65#endifconst OFFSET_LINUX_WEAPONS = 4 // Max Clip for weaponsnew const MAXCLIP[] = { -1, 13, -1, 10, 1, 7, -1, 30, 30, 1, 30, 20, 25, 30, 35, 25, 12, 20, 10, 30, 100, 8, 30, 30, 20, 2, 7, 30, 30, -1, 50 } register_message(get_user_msgid("CurWeapon"), "message_cur_weapon") public message_cur_weapon(msg_id, msg_dest, msg_entity){ if(clip[msg_entity]) { if (!is_user_alive(msg_entity) || get_msg_arg_int(1) != 1) return PLUGIN_HANDLED static weapon, clip weapon = get_msg_arg_int(2) clip = get_msg_arg_int(3) if (MAXCLIP[weapon] > 2) // skip grenades { set_msg_arg_int(3, get_msg_argtype(3), MAXCLIP[weapon]) if (clip < 2) // refill when clip is nearly empty { // Get the weapon entity static wname[32], weapon_ent get_weaponname(weapon, wname, sizeof wname - 1) weapon_ent = fm_find_ent_by_owner(-1, wname, msg_entity) // Set max clip on weapon fm_set_weapon_ammo(weapon_ent, MAXCLIP[weapon]) } } } return PLUGIN_HANDLED} stock fm_find_ent_by_owner(entity, const classname[], owner){ while ((entity = engfunc(EngFunc_FindEntityByString, entity, "classname", classname)) && pev(entity, pev_owner) != owner) {} return entity;} stock fm_set_weapon_ammo(entity, amount){ set_pdata_int(entity, OFFSET_CLIPAMMO, amount, OFFSET_LINUX_WEAPONS);}