rendered paste body//*****{INCLUDES}*****#include <amxmodx>#include <amxmisc>#include <cstrike>#include <fun>#include <engine>#include <fakemeta>#define KeysNades (1<<0)|(1<<1)|(1<<2)|(1<<3)#define TE_BEAMFOLLOW 22new g_nMsgScreenFadenew bool:hastrail[33]new bool:hasglow[33]new bool:hasSMOKENADE[33]new bool:hasHENADE[33]new bool:hasFLASHNADE[33]new bool:g_has_hnade[33]new pause_entity[999]new spritepublic plugin_init(){ register_plugin("SeekNades", "1.0", "SweatyBanana") register_event("CurWeapon","event_curweapon","b") register_event("SendAudio","nade_thrown","bc","2=%!MRAD_FIREINHOLE") register_menucmd(register_menuid("Nades"), KeysNades, "PressedNades") register_event("ResetHUD","startround","be") register_cvar("amx_n", "1") register_cvar("amx_n_smokecost", "1000") register_cvar("amx_n_hecost", "1000") register_cvar("amx_n_flashcost", "1000") register_concmd("say /nadesprices", "funcwepprice") register_concmd("amx_nadesprices", "funcwepprice") register_concmd("say /nadesmenu", "ShowNades") register_concmd("amx_nadesmenu", "ShowNades") register_cvar("amx_n_hegrenade_fuse", "5") register_cvar("amx_heatseeking_hegrenade_nadespeed", "900") register_cvar("amx_heatseeking_hegrenade_launchtime", "1") register_event("ScreenFade","FlashedEvent","be","4=255","5=255","6=255","7>199") g_nMsgScreenFade = get_user_msgid("ScreenFade") register_cvar("amx_fb_mode", "1") register_cvar("amx_fb_r", "255") register_cvar("amx_fb_g", "25") register_cvar("amx_fb_b", "25") register_cvar("sv_nadefx_glow", "1"); register_cvar("sv_nadefx_trail", "2");}public plugin_precache(){ precache_model("models/nades/v_smokegrenade.mdl") precache_model("models/nades/v_flashbang.mdl") precache_model("models/nades/v_hegrenade.mdl") precache_model("models/nades/p_smokegrenade.mdl") precache_model("models/nades/p_hegrenade.mdl") precache_model("models/nades/p_flashbang.mdl") sprite = precache_model("sprites/smoke.spr")}public funcbuysmokenade(id){ if(get_cvar_num("amx_n") == 0) { client_print(id,print_chat,"This mod is disabled.") return PLUGIN_HANDLED } else { new price = get_cvar_num("amx_n_smokecost") hasSMOKENADE[id] = true hastrail[id] = true hasglow[id] = true cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("amx_n_smoke")) give_item(id,"weapon_smokegrenade") cs_set_user_bpammo(id, CSW_AK47, 1) client_print(id,print_chat,"You have bought the smoke nade for %i dollars.",price) set_hudmessage(id, 255, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 4) show_hudmessage(id, "Your have bought the smoke grenade.") } return PLUGIN_HANDLED}public funcbuyhenade(id){ if(get_cvar_num("amx_n") == 0) { client_print(id,print_chat,"This mod is disabled.") return PLUGIN_HANDLED } else { new price = get_cvar_num("amx_n_hecost") new ammo, clip new damage damage = read_data (2) hasHENADE[id] = true g_has_hnade[id] = true hastrail[id] = true hasglow[id] = true cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("amx_n_hecost")) give_item(id,"weapon_hegrenade") cs_set_user_bpammo(id, CSW_HEGRENADE, 1) client_print(id,print_chat,"You have bought the HE nade for %i dollars.",price) set_hudmessage(id, 255, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 4) show_hudmessage(id,"You have bought the Seeking HE grenade.") if(get_user_weapon(id,ammo,clip) == CSW_HEGRENADE) { damage = damage*4/3 } return PLUGIN_HANDLED } return PLUGIN_HANDLED}public funcbuyflash(id){ if(get_cvar_num("amx_n") == 0) { client_print(id,print_chat,"This mod is disabled.") return PLUGIN_HANDLED } else { new price = get_cvar_num("amx_n_flashcost") hasFLASHNADE[id] = true hastrail[id] = true hasglow[id] = true cs_set_user_money(id,cs_get_user_money(id)-get_cvar_num("amx_n_flashcost")) give_item(id,"weapon_flashbang") cs_set_user_bpammo(id, CSW_FLASHBANG, 1) client_print(id,print_chat,"You have bought the flash grenade for %i dollars.",price) set_hudmessage(id, 255, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 4) show_hudmessage(id, "Your have bought the colored flash grenade.") } return PLUGIN_HANDLED}public END_MENU(id){ return PLUGIN_HANDLED}public client_PreThink(id){ new ammo, clip if(hasSMOKENADE[id] == true && get_user_weapon(id,ammo,clip) == CSW_SMOKEGRENADE) { if(get_user_button(id) & IN_ATTACK) { entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0}) } return PLUGIN_HANDLED } if(hasHENADE[id] == true && get_user_weapon(id,ammo,clip) == CSW_HEGRENADE) { if(get_user_button(id) & IN_ATTACK) { entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0}) } return PLUGIN_HANDLED } if(hasFLASHNADE[id] == true && get_user_weapon(id,ammo,clip) == CSW_FLASHBANG) { if(get_user_button(id) & IN_ATTACK) { entity_set_vector(id, EV_VEC_punchangle, Float:{0.0, 0.0, 0.0}) } return PLUGIN_HANDLED } return PLUGIN_HANDLED}public event_curweapon(id){ new ammo, clip if(hasSMOKENADE[id] == true && get_user_weapon(id,ammo,clip) == CSW_SMOKEGRENADE) { entity_set_string(id,EV_SZ_viewmodel,"models/nades/v_smokegrenade.mdl") entity_set_string(id,EV_SZ_weaponmodel,"models/nades/p_smokegrenade.mdl") } if(hasHENADE[id] == true && get_user_weapon(id,ammo,clip) == CSW_HEGRENADE) { entity_set_string(id,EV_SZ_viewmodel,"models/nades/v_hegrenade.mdl") entity_set_string(id,EV_SZ_weaponmodel,"models/nades/p_hegrenade.mdl") } if(hasFLASHNADE[id] == true && get_user_weapon(id,ammo,clip) == CSW_FLASHBANG) { entity_set_string(id,EV_SZ_viewmodel,"models/nades/v_flashbang.mdl") entity_set_string(id,EV_SZ_weaponmodel,"models/nades/p_flashbang.mdl") }}public funcwepprice(id){ new priceSmokenade = get_cvar_num("amx_n_smokecost") new priceHenade = get_cvar_num("amx_n_hecost") new priceFlash = get_cvar_num("amx_n_flashcost") client_print(id,print_chat,"The smoke nade %i dollars, type /nadesmenu to buy one.",priceSmokenade) client_print(id,print_chat,"The HE nade cost %i dollars, type /nadesmenu to buy one.",priceHenade) client_print(id,print_chat,"The flash nade cost %i dollars, type /nadesmenu to buy one.",priceFlash) return PLUGIN_HANDLED}public ShowNades(id){ if(get_cvar_num("amx_n") == 0) { client_print(id,print_chat,"This mod is disabled.") return PLUGIN_HANDLED } if(cs_get_user_buyzone(id) != 1) { client_print(id,print_chat,"You must be in a buyzone to access the grenade menu.") return PLUGIN_HANDLED } else { show_menu(id, KeysNades, "Nades^n^n1. Buy Smoke nade^n2. Buy He nade^n3. Buy Flash nade^n4. Exit^n", -1, "Nades") return PLUGIN_HANDLED } return PLUGIN_HANDLED}public PressedNades(id, key){ switch (key) { case 0: { funcbuysmokenade(id) } case 1: { funcbuyhenade(id) } case 2: { funcbuyflash(id) } case 3: { END_MENU(id) } }}public grenade_throw(index, greindex, wId){ if(get_cvar_num("amx_n") == 1) { new id = index new grenade = greindex if(g_has_hnade[id] == true) { if(wId == CSW_HEGRENADE) { entity_set_edict(grenade, EV_ENT_owner, id) new param[1] param[0] = grenade new Float:lauchtime = get_cvar_float("amx_heatseeking_hegrenade_launchtime") set_task(lauchtime, "seek_n_destroy", 0, param, 1) } new Float:fusetime = get_cvar_float("amx_heatseeking_hegrenade_fuse") pause_entity[greindex] = 1 set_task(fusetime, "nade_explode", grenade) g_has_hnade[id] = false } } new iGrenID = greindex; new id = index if(!is_valid_ent(iGrenID)) return PLUGIN_CONTINUE; if(get_cvar_num("sv_nadefx_glow") && (hasglow[id])) { switch(wId) { case CSW_HEGRENADE: set_rendering(iGrenID, kRenderFxGlowShell, 255, 0, 0); case CSW_FLASHBANG: set_rendering(iGrenID, kRenderFxGlowShell, 0, 255, 0); case CSW_SMOKEGRENADE: set_rendering(iGrenID, kRenderFxGlowShell, 0, 0, 255); } } new iTrail = get_cvar_num("sv_nadefx_trail"); if(iTrail == 0 || (iTrail != 1 && iTrail != 2)) return PLUGIN_CONTINUE; new iTeam = get_user_team(index); new r=0,g=0,b=0; switch( iTrail ) { case 1: { switch( iTeam ) { case 1: r=0, b=255, g=0; case 2: r=255, b=0, g=0; } } case 2: { switch( wId ) { case CSW_HEGRENADE: r=255, b=0, g=0; case CSW_FLASHBANG: r=0, b=0, g=255; case CSW_SMOKEGRENADE: r=255, b=255, g=255; } } } if(hastrail[id]) { message_begin( MSG_BROADCAST, SVC_TEMPENTITY ); write_byte( TE_BEAMFOLLOW ); write_short( iGrenID ); write_short( sprite ); write_byte( 10 ); write_byte( 5 ); write_byte( r ); write_byte( g ); write_byte( b ); write_byte( 150 ); message_end(); return PLUGIN_CONTINUE; } return PLUGIN_CONTINUE}public seek_n_destroy(param[]){ new grenade = param[0] new Float:ShortestDistance = 9999.9 new NearestPlayer = 0 if(is_valid_ent(grenade)) { new grenade_owner = entity_get_edict(grenade, EV_ENT_owner) new players[32], count get_players(players, count) for(new i = 1; i < count; i++) { new vteam = get_user_team(players[i]) new ateam = get_user_team(grenade_owner) if(vteam != 3) { if(is_user_alive(players[i])) { if(grenade_owner != (players[i])) { if(vteam != ateam) { new Float:PlayerOrigin[3], Float:GrenadeOrigin[3] entity_get_vector(players[i], EV_VEC_origin, PlayerOrigin) entity_get_vector(grenade, EV_VEC_origin, GrenadeOrigin) new Float:Distance = vector_distance(PlayerOrigin, GrenadeOrigin) if(Distance <= ShortestDistance) { ShortestDistance = Distance NearestPlayer = players[i] } } } } } } } if(NearestPlayer > 0) { new param2[2] param2[0] = grenade param2[1] = NearestPlayer set_task(0.1, "fire_in_the_hole", grenade, param2, 2, "b") }}public fire_in_the_hole(param[]) { new grenade = param[0] new target = param[1] if(is_user_alive(target) && is_valid_ent(grenade)) { new Float:nadespeed = get_cvar_float("amx_heatseeking_hegrenade_nadespeed") entity_set_follow(grenade, target, nadespeed) new Float:Velocity[3] new Float:NewAngle[3] entity_get_vector(grenade, EV_VEC_velocity, Velocity) vector_to_angle(Velocity, NewAngle) entity_set_vector(grenade, EV_VEC_angles, NewAngle) message_begin(MSG_BROADCAST, SVC_TEMPENTITY) write_byte(22) write_short(grenade) write_short(sprite) write_byte(10) write_byte(5) write_byte(255) write_byte(0) write_byte(0) switch(random_num(0,2)) { case 0:write_byte(64) case 1:write_byte(128) case 2:write_byte(192) } message_end() } else { remove_task(grenade) new param3[1] param3[0] = grenade set_task(0.1, "seek_n_destroy", 0, param3, 1) }}public pfn_touch(ptr, ptd) { if(is_valid_ent(ptd) && is_valid_ent(ptr) && is_user_connected(ptd) && is_user_alive(ptd)) { new Classname[32] entity_get_string(ptr, EV_SZ_classname, Classname, 31) if(equal(Classname, "grenade")) { nade_explode(ptr) } }}public nade_explode(ent) { if(!is_valid_ent(ent)) { pause_entity[ent] = 0 return } if(get_cvar_num("amx_n") == 0) { return } pause_entity[ent] = 0 return}public fw_entity_think(ent) { if(ent < 0 || ent > sizeof(pause_entity)-1 || get_cvar_num("amx_n") == 0) { return FMRES_IGNORED } if(pause_entity[ent] == 1) { new Float:nextthink = entity_get_float(ent, EV_FL_nextthink) set_pev(ent, pev_nextthink, nextthink + 0.1) return FMRES_SUPERCEDE } return FMRES_IGNORED}stock entity_set_follow(entity, target, Float:speed) { if(!is_valid_ent(entity) || !is_valid_ent(target)) return 0 new Float:entity_origin[3], Float:target_origin[3] entity_get_vector(entity, EV_VEC_origin, entity_origin) entity_get_vector(target, EV_VEC_origin, target_origin) new Float:diff[3] diff[0] = target_origin[0] - entity_origin[0] diff[1] = target_origin[1] - entity_origin[1] diff[2] = target_origin[2] - entity_origin[2] new Float:length = floatsqroot(floatpower(diff[0], 2.0) + floatpower(diff[1], 2.0) + floatpower(diff[2], 2.0)) new Float:Velocity[3] Velocity[0] = diff[0] * (speed / length) Velocity[1] = diff[1] * (speed / length) Velocity[2] = diff[2] * (speed / length) entity_set_vector(entity, EV_VEC_velocity, Velocity) return 1}public startround(id) { hasSMOKENADE[id] = false hasHENADE[id] = false hasFLASHNADE[id] = false g_has_hnade[id] = false hastrail[id] = false hasglow[id] = false client_print(id,print_chat,"This server is using Super Nades Mod, type /nadesprices in chat to see the nades prices.") set_hudmessage(id, 255, 0, -1.0, 0.3, 0, 1.0, 5.0, 0.1, 0.2, 4) show_hudmessage(id, "This server is using Super Nade Mod, type /nadesprices in chat to see the nades prices.")}public client_connect(id) { hasSMOKENADE[id] = false hasHENADE[id] = false hasFLASHNADE[id] = false g_has_hnade[id] = false hastrail[id] = false hasglow[id] = false}public client_disconnect(id) { hasSMOKENADE[id] = false hasHENADE[id] = false hasFLASHNADE[id] = false g_has_hnade[id] = false hastrail[id] = false hasglow[id] = false}public nade_thrown(id){ hasSMOKENADE[id] = false hasHENADE[id] = false hasFLASHNADE[id] = false g_has_hnade[id] = false hastrail[id] = false hasglow[id] = false}public FlashedEvent(id, wId ) { new iMode = get_cvar_num("amx_fb_mode") if ( !iMode ) return PLUGIN_CONTINUE new iRed,iGreen,iBlue switch( iMode ) { case 1: { iRed = get_cvar_num("amx_fb_r") iGreen = get_cvar_num("amx_fb_g") iBlue = get_cvar_num("amx_fb_b") } case 2: { iRed = random_num(0,255) iGreen = random_num(0,255) iBlue = random_num(0,255) } } if ( !( iRed ) || !( iGreen ) || !( iBlue ) ) { iRed = 100 iGreen = 100 iBlue = 100 } if(hasFLASHNADE[id]) { message_begin( MSG_ONE,g_nMsgScreenFade,{0,0,0}, id) write_short( read_data( 1 ) ) // Duration write_short( read_data( 2 ) ) // Hold time write_short( read_data( 3 ) ) // Fade type write_byte ( iRed ) // Red write_byte ( iGreen ) // Green write_byte ( iBlue ) // Blue write_byte ( read_data( 7 ) ) // Alpha message_end() return PLUGIN_HANDLED } return PLUGIN_CONTINUE}