/** * * Description: * This is a _WORKING_ real armor plugin for Counter-Strike. * * * Commands / Cvars: * Cvar: "ra_kevlar_flags" "cd" // armor flags for normal armor * Cvar: "ra_vesthelm_flags" "bcd" // armor flags for armor with vest helmet * + cvar flags: * - "a" unknown (explosion for example) * - "b" head * - "c" chest * - "d" stomatch * - "e" leftarm * - "f" rightarm * - "g" leftleg * - "h" rightleg * * * Requires: * CStrike * CSX * Fun * * * Additional Info: * Tested with amxmodx 1.8.1. But should work with some older amxx versions. * * * Notes: * + Armor scan is preformed after damage is taken so deadly hits will be the way they should (awp hit for example). * * * ChangeLog: * * + 1.1 (1114 downloads reseted) * - Fixed: When armor is set to 0 you cannot pick it up again. * - Changed: Code style. * * + 1.0 * - First release. * * * Downloads: * AMXMODX Community: http://forums.alliedmods.net/showthread.php?t=70773 * **/ #include #include #include #include #define PLUGIN_NAME "Real Armor" #define PLUGIN_VERSION "1.1" #define PLUGIN_AUTHOR "Numb" new g_iCvarP_karmor; new g_iCvarP_varmor; public plugin_init() { register_plugin(PLUGIN_NAME, PLUGIN_VERSION, PLUGIN_AUTHOR); g_iCvarP_karmor = register_cvar("ra_kevlar_flags", "cd"); g_iCvarP_varmor = register_cvar("ra_vesthelm_flags", "bcd"); } public client_damage(iAttacker, iVictim, iDamage, iWpnIndex, iHitPlace, iTA) { if( is_user_alive(iVictim) && iDamage>0 ) { static s_iArmor, CsArmorType:s_iArmorType; s_iArmor = cs_get_user_armor(iVictim, s_iArmorType); if( s_iArmor>0 && s_iArmorType!=CS_ARMOR_NONE ) { if( get_armor_cvar_flags((s_iArmorType==CS_ARMOR_VESTHELM)?true:false)&(1<iDamage ) { set_user_health(iVictim, get_user_health(iVictim)+iDamage); cs_set_user_armor(iVictim, s_iArmor-iDamage, s_iArmorType); } else { set_user_health(iVictim, get_user_health(iVictim)+s_iArmor); cs_set_user_armor(iVictim, 0, CS_ARMOR_NONE); } } } } } get_armor_cvar_flags(bool:bVestHelm) { static s_iCvarStr[32]; get_pcvar_string(bVestHelm?g_iCvarP_varmor:g_iCvarP_karmor, s_iCvarStr, 31); return read_flags(s_iCvarStr); }