#include #include #include #define CHAN_DISPLAY 5 new usehud = 0; new blood[33]; new olddeadflag[33]; // Plugin initation public plugin_init() { register_plugin("VampireMode","0.10","Avalanche"); register_concmd("amx_vampmode_enable","cmd_vampmode",ADMIN_BAN,"<0|1> - turns VampireMode on or off"); register_event("Damage","event_damage","b","2>0"); if(get_user_msgid("ResetHUD")) { usehud = 1; register_event("ResetHUD","event_resethud","b"); register_clcmd("fullupdate","stop"); } register_cvar("vampmode_enable","0"); // vampire mode on or off register_cvar("vampmode_bloodthirst","0.8"); // rate of blood decay register_cvar("vampmode_maxblood","121"); // max blood someone can have register_cvar("vampmode_spawnblood","101"); // how much blood you spawn with register_cvar("vampmode_killreward","30"); // how much blood you get for a kill (x1.5 for headshots) register_cvar("vampmode_damage","5.0"); // damage every tick when you are out of blood register_cvar("vampmode_msgcolor","255 255 255"); // color of messages register_cvar("vampmode_msgx","0.915"); // x coord for messages register_cvar("vampmode_msgy","1.0"); // y coord for messages } // prethink public client_PreThink(id) { new deadflag = entity_get_int(id,EV_INT_deadflag); if(olddeadflag[id] && !deadflag && usehud == 0) { client_spawn(id); } olddeadflag[id] = deadflag; } // resethud public event_resethud(id) { set_task(0.1,"client_spawn",id); } // user spawns public client_spawn(id) { if(task_exists(id)) { remove_task(id); } blood[id] = get_cvar_num("vampmode_spawnblood"); if(get_cvar_num("vampmode_enable")) { set_task(get_cvar_float("vampmode_bloodthirst"),"bleed",id); } } // player takes damage public event_damage(id) { new weapon, hitplace, attacker = get_user_attacker(id,weapon,hitplace); //client_print(id,print_chat,"* You got hit by %i with %i in %i",attacker,weapon,hitplace); // make sure victim is dead if(get_user_health(id) > 0) { return PLUGIN_CONTINUE; } // if attacker is still alive if(is_user_alive(attacker)) { new amt = get_cvar_num("vampmode_killreward"); // extra blood for headshots if(hitplace == HIT_HEAD) { amt = floatround(1.5 * float(amt)); } // if team kill, take blood away if(get_user_team(id) == get_user_team(attacker)) { blood[attacker] -= amt; if(blood[attacker] < 0) { blood[attacker] = 0; } display_blood(id); } else { blood[attacker] += amt; if(blood[attacker] > get_cvar_num("vampmode_maxblood")) { blood[attacker] = get_cvar_num("vampmode_maxblood"); } display_blood(id); } } return PLUGIN_CONTINUE; } // I'm BAHLEEDING! public bleed(id) { if(!get_cvar_num("vampmode_enable") || !is_user_alive(id)) { return; } blood[id] -= 1; if(blood[id] < 0) { blood[id] = 0; fakedamage(id,"bloodthirst",get_cvar_float("vampmode_damage"),0); } display_blood(id); set_task(get_cvar_float("vampmode_bloodthirst"),"bleed",id); return; } // display blood public display_blood(id) { new color[24], r[8], g[8], b[8]; get_cvar_string("vampmode_msgcolor",color,23); parse(color,r,7,g,7,b,7); set_hudmessage(str_to_num(r),str_to_num(g),str_to_num(b),get_cvar_float("vampmode_msgx"),get_cvar_float("vampmode_msgy"),0,6.0,get_cvar_float("vampmode_bloodthirst")+1.0,0.1,0.1,CHAN_DISPLAY); show_hudmessage(id,"Blood: %d",blood[id]); } // Stop a command public stop() { return PLUGIN_HANDLED; } // Turn VampireMode on or off public cmd_vampmode(id,level,cid) { if(!cmd_access(id,level,cid,2)) { return PLUGIN_HANDLED; } new data[10]; read_args(data,9); set_cvar_num("vampmode_enable",(str_to_num(data) >= 1) ? 1 : 0); console_print(id,"VampireMode is now %s",(str_to_num(data) >= 1) ? "ON" : "OFF"); new players[32], num, i; get_players(players,num); for(i=0;i