Witam, stworzyłem klasę na CodMod. Klasa powinna mieć 1/2 szansy na natychmiastowe zabicie z granatu wybuchowego.
Jak w temacie ów natychmiastowe zabicie nie chce działać.
#include <amxmodx> #include <amxmisc> #include <codmod> #include <engine> #include <hamsandwich> #include <cstrike> #include <fakemeta> #include <fun> #define DMG_BULLET (1<<1) #define DMG_HEGRENADE (1<<24) new const nazwa[] = "Piekielny [Unikalna]"; new const opis[] = "Natychmiastowe zabicie ze scouta, 1/2 szansy na natychmiastowe zabicie z HE, +10dmg z Aug, dodatkowe 3 skoki"; new const bronie = 1<<CSW_SCOUT | 1<<CSW_AUG | 1<<CSW_HEGRENADE; new const zdrowie = 85; new const kondycja = 100; new const inteligencja = 30; new const wytrzymalosc = 85; new ma_klase[33]; new skoki[33]; public plugin_init() { register_plugin(nazwa, "1.0", "Hagis"); cod_register_class(nazwa, opis, bronie, zdrowie, kondycja, inteligencja, wytrzymalosc); register_forward(FM_CmdStart, "fwCmdStart_MultiJump"); RegisterHam(Ham_TakeDamage, "player", "TakeDamage"); } public cod_class_enabled(id) { if(!(get_user_flags(id) & ADMIN_LEVEL_A)) { client_print(id, print_chat, "[Piekielny] Nie masz uprawnien, aby uzywac tej klasy.") return COD_STOP; } give_item(id, "weapon_hegrenade"); cs_set_user_defuse(id, 1); ma_klase[id] = true; return COD_CONTINUE; } public cod_class_disabled(id) { ma_klase[id] = false; } public fwCmdStart_MultiJump(id, uc_handle) { if(!is_user_alive(id) || !ma_klase[id]) return FMRES_IGNORED; new flags = pev(id, pev_flags); if((get_uc(uc_handle, UC_Buttons) & IN_JUMP) && !(flags & FL_ONGROUND) && !(pev(id, pev_oldbuttons) & IN_JUMP) && skoki[id]) { skoki[id]--; new Float:velocity[3]; pev(id, pev_velocity,velocity); velocity[2] = random_float(265.0,285.0); set_pev(id, pev_velocity,velocity); } else if(flags & FL_ONGROUND) skoki[id] = 3; return FMRES_IGNORED; } public TakeDamage(this, idinflictor, idattacker, Float:damage, damagebits) { if(!is_user_connected(idattacker)) return HAM_IGNORED; if(!ma_klase[idattacker]) return HAM_IGNORED; if(!(damagebits & DMG_BULLET)) return HAM_IGNORED; if(get_user_weapon(idattacker) == CSW_SCOUT) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits); if(get_user_weapon(idattacker) == CSW_AUG && damagebits & DMG_BULLET) cod_inflict_damage(idattacker, this, 10.0, 0.0, idinflictor, damagebits); if(damagebits & DMG_HEGRENADE && get_user_team(this) != get_user_team(idattacker)) cod_inflict_damage(idattacker, this, 801.0-damage, 1.0, idinflictor, damagebits); //////////////////////////////////////////////////////////////////////////////////////////////////////////////////// return HAM_IGNORED; } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1045\\ f0\\ fs16 \n\\ par } */
Długo się z tym bawiłem, ostatecznie skopiowałem kod z perku, który daje 1/1 z HE. W perku działa - tu nie.
Próbowałem też tak:
if(get_user_weapon(idattacker) == CSW_HEGRENADE) cod_inflict_damage(idattacker, this, float(get_user_health(this))-damage+1.0, 0.0, idinflictor, damagebits);
I oczywiście też skucha.
Oraz próbowałem zamienić
float(get_user_health(this))-damage+1.0
na 2000.0 i oczywiście też lipa.