#include #include #include #include #include #define PLUGIN "Knife Mod" #define VERSION "1.0" #define AUTHOR "spunko" #define TASK_INTERVAL 4.0 #define MAX_HEALTH 255 new knife_model[33] new g_Menu new g_Menu2 new g_Menu3 new CVAR_HIGHSPEED new CVAR_LOWSPEED new CVAR_LOWGRAV new CVAR_NORMGRAV new CVAR_HEALTH_ADD new CVAR_HEALTH_MAX new CVAR_DAMAGE new CVAR_NORMSPEED public plugin_init() { register_plugin(PLUGIN, VERSION, AUTHOR) register_event( "Damage", "event_damage", "be" ) register_event("CurWeapon","CurWeapon","be","1=1") g_Menu = register_menuid("knifemenu") g_Menu2 = register_menuid("rodzaj") g_Menu3 = register_menuid("vipknifemenu") register_menucmd(g_Menu, 1023, "knifemenu") register_menucmd(g_Menu2, 1023, "rodzaj") register_menucmd(g_Menu3, 1023, "vipknifemenu") register_clcmd("say /knife", "wybierz") CVAR_HIGHSPEED = register_cvar("km_highspeed","340") CVAR_LOWSPEED = register_cvar("km_lowspeed","170") CVAR_NORMSPEED = register_cvar("km_normspeed","300") CVAR_HEALTH_ADD = register_cvar("km_addhealth", "3") CVAR_HEALTH_MAX = register_cvar("km_maxhealth", "75") CVAR_DAMAGE = register_cvar("km_damage", "2") CVAR_LOWGRAV = register_cvar("km_lowgravity" , "400") CVAR_NORMGRAV = get_cvar_pointer("sv_gravity") set_task(480.0, "kmodmsg", 685200, _, _, "b") } public plugin_precache() { precache_model("models/knife-mod/v_machete.mdl") precache_model("models/knife-mod/p_machete.mdl") precache_model("models/knife-mod/v_butcher.mdl") precache_model("models/knife-mod/p_butcher.mdl") precache_model("models/knife-mod/v_bak.mdl") precache_model("models/knife-mod/p_bak.mdl") precache_model("models/knife-mod/v_pocket.mdl") precache_model("models/knife-mod/p_pocket.mdl") precache_model("models/knife-mod/v_sztylet.mdl") precache_model("models/knife-mod/p_sztylet.mdl") precache_model("models/knife-mod/v_boski.mdl") precache_model("models/knife-mod/p_boski.mdl") precache_model("models/knife-mod/v_miecz.mdl") precache_model("models/knife-mod/p_miecz.mdl") precache_model("models/knife-mod/v_lecz.mdl") precache_model("models/knife-mod/p_lecz.mdl") } public wybierz(id) { new menuBody = menu_create("Wybierz Rodzaj", "rodzaj") menu_additem(menuBody, "Zwykle Knifes", "1", 0) menu_additem(menuBody, "VIP Knifes", "2", 0) menu_setprop(menuBody, MPROP_EXIT, MEXIT_ALL) menu_display(id, menuBody, 0) } public rodzaj(id, menu, key) { switch(key) { case 0: display_knife(id) case 1: vipknife(id) default: return PLUGIN_HANDLED } return PLUGIN_HANDLED } public display_knife(id) { new menuBody = menu_create("Wybierz Noz", "knifemenu") menu_additem(menuBody, "Maczeta \y(Wiecej Damage\Mniejsza Szybkosc)", "1", 0) menu_additem(menuBody, "Cichy Noz \y(Ciche Chodzenie)", "2", 0) menu_additem(menuBody, "Maly Noz \y(Wieksza Szybkosc)", "3", 0) menu_additem(menuBody, "Lekki Noz \y(Mniejsza Grawitacja)", "4", 0) menu_additem(menuBody, "Leczniczy Noz \y(Regeneracja HP)", "5", 0) menu_setprop(menuBody, MPROP_EXIT, MEXIT_ALL) menu_display(id, menuBody, 0) menu_display(id, menuBody) } public knifemenu(id, menu, key) { switch(key) { case 0: SetKnife(id , 4) case 1: SetKnife(id , 2) case 2: SetKnife(id , 3) case 3: SetKnife(id , 1) case 4: SetKnife(id , 7) default: return PLUGIN_HANDLED } SaveData(id) return PLUGIN_HANDLED } public vipknife(id) { new menuBody = menu_create("Wybierz Noz", "vipknifemenu") menu_additem(menuBody, "\r[VIP]\w Ostry Sztylet \y(Speed + Grawitacja)", "1", ADMIN_LEVEL_H) menu_additem(menuBody, "\r[VIP]\w Boski Noz \y(Ciche Chodzenie + Reg. HP)", "2", ADMIN_LEVEL_H) menu_additem(menuBody, "\r[VIP]\w Zabojczy Miecz \y(Wieksze Damage)", "3", ADMIN_LEVEL_H) menu_setprop(menuBody, MPROP_EXIT, MEXIT_ALL) menu_display(id, menuBody, 0) menu_display(id, menuBody) } public vipknifemenu(id, menu, key) { switch(key) { case 0: SetKnife(id , 5) case 1: SetKnife(id , 6) case 2: SetKnife(id , 0) default: return PLUGIN_HANDLED } SaveData(id) return PLUGIN_HANDLED } public SetKnife(id , Knife) { knife_model[id] = Knife new Clip, Ammo, Weapon = get_user_weapon(id, Clip, Ammo) if ( Weapon != CSW_KNIFE ) return PLUGIN_HANDLED new vModel[56],pModel[56] switch(Knife) { case 0: { format(vModel,55,"models/knife-mod/v_miecz.mdl") format(pModel,55,"models/knife-mod/p_miecz.mdl") } case 1: { format(vModel,55,"models/knife-mod/v_butcher.mdl") format(pModel,55,"models/knife-mod/p_butcher.mdl") } case 2: { format(vModel,55,"models/knife-mod/v_bak.mdl") format(pModel,55,"models/knife-mod/p_bak.mdl") } case 3: { format(vModel,55,"models/knife-mod/v_pocket.mdl") format(pModel,55,"models/knife-mod/p_pocket.mdl") } case 4: { format(vModel,55,"models/knife-mod/v_machete.mdl") format(pModel,55,"models/knife-mod/p_machete.mdl") } case 5: { format(vModel,55,"models/knife-mod/v_sztylet.mdl") format(pModel,55,"models/knife-mod/p_sztylet.mdl") } case 6: { format(vModel,55,"models/knife-mod/v_boski.mdl") format(pModel,55,"models/knife-mod/p_boski.mdl") } case 7: { format(vModel,55,"models/knife-mod/v_lecz.mdl") format(pModel,55,"models/knife-mod/p_lecz.mdl") } } entity_set_string(id, EV_SZ_viewmodel, vModel) entity_set_string(id, EV_SZ_weaponmodel, pModel) return PLUGIN_HANDLED; } public event_damage( id ) { new victim_id = id; if( !is_user_connected( victim_id ) ) return PLUGIN_CONTINUE new dmg_take = read_data( 2 ); new dmgtype = read_data( 3 ); new Float:multiplier = get_pcvar_float(CVAR_DAMAGE); new Float:damage = dmg_take * multiplier; new health = get_user_health( victim_id ); new iWeapID, attacker_id = get_user_attacker( victim_id, iWeapID ); if( !is_user_connected( attacker_id ) || !is_user_alive( victim_id ) ) { return PLUGIN_HANDLED } if( iWeapID == CSW_KNIFE && knife_model[attacker_id] == 4 || iWeapID == CSW_KNIFE && knife_model[attacker_id] == 0 ) { if( floatround(damage) >= health ) { if( victim_id == attacker_id ) { return PLUGIN_CONTINUE }else{ log_kill( attacker_id, victim_id, "knife", 0 ); } return PLUGIN_CONTINUE }else { if( victim_id == attacker_id ) return PLUGIN_CONTINUE fakedamage( victim_id, "weapon_knife", damage, dmgtype ); } } return PLUGIN_CONTINUE } public CurWeapon(id) { new Weapon = read_data(2) // Set Knife Model SetKnife(id, knife_model[id]) // Task Options if(knife_model[id] == 7 && !task_exists(id) && Weapon == CSW_KNIFE || knife_model[id] == 6 && !task_exists(id) && Weapon == CSW_KNIFE) set_task(TASK_INTERVAL , "task_healing",id,_,_,"b") else if(task_exists(id)) remove_task(id) // Abilities set_user_footsteps(id , ( (knife_model[id] == 2 && Weapon == CSW_KNIFE || knife_model[id] == 6 && Weapon == CSW_KNIFE) ? 1 : 0) ) new Float:Gravity = ((knife_model[id] == 1 && Weapon == CSW_KNIFE || knife_model[id] == 5 && Weapon == CSW_KNIFE)? get_pcvar_float(CVAR_LOWGRAV) : get_pcvar_float(CVAR_NORMGRAV)) / 800.0 set_user_gravity(id , Gravity) // Speed new Float:Speed if(Weapon != CSW_KNIFE) return PLUGIN_CONTINUE else if(knife_model[id] == 0 || knife_model[id] == 1 || knife_model[id] == 2 || knife_model[id] == 6 || knife_model[id] == 7) Speed = get_pcvar_float(CVAR_NORMSPEED) else if(knife_model[id] == 3 || knife_model[id] == 5) Speed = get_pcvar_float(CVAR_HIGHSPEED) else if(knife_model[id] == 4) Speed = get_pcvar_float(CVAR_LOWSPEED) set_user_maxspeed(id, Speed) return PLUGIN_HANDLED } stock log_kill(killer, victim, weapon[],headshot) { user_silentkill( victim ); message_begin( MSG_ALL, get_user_msgid( "DeathMsg" ), {0,0,0}, 0 ); write_byte( killer ); write_byte( victim ); write_byte( headshot ); write_string( weapon ); message_end(); new kfrags = get_user_frags( killer ); set_user_frags( killer, kfrags++ ); new vfrags = get_user_frags( victim ); set_user_frags( victim, vfrags++ ); return PLUGIN_CONTINUE } public task_healing(id) { new addhealth = get_pcvar_num(CVAR_HEALTH_ADD) if (!addhealth) return new maxhealth = get_pcvar_num(CVAR_HEALTH_MAX) if (maxhealth > MAX_HEALTH) { set_pcvar_num(CVAR_HEALTH_MAX, MAX_HEALTH) maxhealth = MAX_HEALTH } new health = get_user_health(id) if (is_user_alive(id) && (health < maxhealth)) { set_user_health(id, health + addhealth) set_hudmessage(0, 255, 0, -1.0, 0.25, 0, 1.0, 2.0, 0.1, 0.1, 4) show_hudmessage(id,"<< !!Leczenie: +3HP!! >>") message_begin(MSG_ONE, get_user_msgid("ScreenFade"), {0,0,0}, id) write_short(1<<10) write_short(1<<10) write_short(0x0000) write_byte(0) write_byte(200) write_byte(0) write_byte(75) message_end() } else { if (is_user_alive(id) && (health > maxhealth)) remove_task(id) } } public client_disconnect(id) { if(task_exists(id)) remove_task(id) } public client_authorized(id) { LoadData(id) } SaveData(id) { new authid[32] get_user_authid(id, authid, 31) new vaultkey[64] new vaultdata[64] format(vaultkey, 63, "KMOD_%s", authid) format(vaultdata, 63, "%d", knife_model[id]) set_vaultdata(vaultkey, vaultdata) } LoadData(id) { new authid[32] get_user_authid(id,authid,31) new vaultkey[64], vaultdata[64] format(vaultkey, 63, "KMOD_%s", authid) get_vaultdata(vaultkey, vaultdata, 63) knife_model[id] = str_to_num(vaultdata) } /* AMXX-Studio Notes - DO NOT MODIFY BELOW HERE *{\\ rtf1\\ ansi\\ deff0{\\ fonttbl{\\ f0\\ fnil Tahoma;}}\n\\ viewkind4\\ uc1\\ pard\\ lang1033\\ f0\\ fs16 \n\\ par } */