A little tuned plugin DoD Drop All Weapons:rn- Tuned for Throw Knivesrnrn
rn//////////////////////////////////////////////////////////////////////////////////rn//rn// DoD Drop All Weaponsrn// - Version 1.2rn// - 09.21.2009rn// - diamond-opticrn//rn//////////////////////////////////////////////////////////////////////////////////rn//rn// Credits:rn//rn// - Dr. G: Code to enable dropping of knives/pistolsrn// - Vet(3TT3V): Used alot of code & the webley world model from dod_pistolclips (v1.4)rn//rn//////////////////////////////////////////////////////////////////rn//rn// Information:rn//rn// - Allows players to drop their knives & pistols andrn// pick up different onesrn//rn// - Players will now also drop their knife and/or pistolrn// on dying if they have onern//rn// - I have not got around to allowing nades to be dropped yetrn// ..Give me some time and I'll eventually get to itrn//rn//////////////////////////////////////////////////////////////////rn//rn// CVARs:rn//rn// dod_dropallweapons "1" //Turn ON(1)/OFF(0)rn//rn//////////////////////////////////////////////////////////////////rn//rn// Compiler Defines:rn//rn// DOD_WEAPONJAM 0 //Set to 1 if you use dod_weaponjamrn//rn//////////////////////////////////////////////////////////////////rn//rn// File Placementrn//rn// w_webley_v1.md --> ../dod/models/rn//rn//////////////////////////////////////////////////////////////////rn//rn// Changelog:rn//rn// - 09.20.2009 Version 1.0rn// Initial releasern//rn// - 09.21.2009 Version 1.1rn// Fixed a dumb mistakern//rn// - 10.04.2022 Version 1.2rn// Tuned for knifes (TheVaskov)rn//rn//////////////////////////////////////////////////////////////////////////////////rnrn#include <amxmodx>rn#include <fun>rn#include <dodx>rn#include <engine>rn#include <fakemeta>rn#include <hamsandwich>rnrnrn//Enable if running DoD Weapon Jam by diamond-opticrn#define DOD_WEAPONJAM 0rnrnrn#define VERSION "1.2"rn#define SVERSION "v1.2 - by TheVaskov"rnrn#define KNIFE 0rn#define PISTOL 1rnrn#define PISTOL_COLT 0rn#define PISTOL_WEBLEY 1rn#define PISTOL_LUGER 2rnrn#define KNIFE_ALLIES 0rn#define KNIFE_AXIS 1rn#define KNIFE_SPADE 2rnrn#define OFFSET_WPN_ID 91rn#define OFFSET_WPN_CLIP 108rn#define OFFSET_PISTOL_BPAMMO_LINUX 52rn#define OFFSET_PISTOL_BPAMMO_WIN32 53rn#define OFFSET_LINUX 4rnrnnew KNIVES_NAMES[3][] = {"weapon_amerknife","weapon_gerknife","weapon_spade"}rnnew KNIVES_MODELS[3][] = {"models/w_amerk.mdl","models/w_paraknife.mdl","models/w_spade.mdl"}rnrnnew PISTOLS_NAMES[3][] = {"weapon_colt","weapon_webley","weapon_luger"}rnnew PISTOLS_MODELS[3][] = {"models/w_colt.mdl","models/w_webley_v1.mdl","models/w_luger.mdl"}rnrnnew TEMP_CLASSNAME[] = "dropped_weapon"rnrnnew is_linux,maxplayersrnnew gMsgAmmoXrnrnnew p_pluginrnrnpublic plugin_init()rn{rn register_plugin("DoD Drop All Weapons",VERSION,"AMXX DoD Team")rn register_cvar("dod_dropallweapons_stats",SVERSION,FCVAR_SERVER|FCVAR_SPONLY)rnrn p_plugin = register_cvar("dod_dropallweapons","1")rn rn for(new i = 0; i < 3; i++)rn {rn RegisterHam(Ham_DOD_Item_CanDrop,KNIVES_NAMES[i],"func_WeaponDrop")rn // RegisterHam(Ham_DOD_Item_CanDrop,PISTOLS_NAMES[i],"func_WeaponDrop")rn }rn rn // RegisterHam(Ham_Killed,"player","func_HamKilled")rn RegisterHam(Ham_Think,"info_target","func_HamThink")rn RegisterHam(Ham_Touch,"info_target","func_HamTouch")rn rn register_event("RoundState","func_RoundState","a","1=3","1=4","1=5")rn rn gMsgAmmoX = get_user_msgid("AmmoX")rn rn register_forward(FM_CreateNamedEntity,"fwd_CreateNamedEntity",1)rn}rnrnpublic plugin_precache()rn{rn precache_model("models/w_colt.mdl")rn precache_model("models/w_luger.mdl")rn precache_model("models/w_webley_v1.mdl")rn precache_model("models/w_spade.mdl")rn}rnrnpublic plugin_cfg()rn{rn if(is_linux_server())rn is_linux = 1rn rn maxplayers = get_maxplayers()rn rn set_task(5.0,"func_FixMapGuns")rn}rnrn//////////////////////////////////////////////////////////////rn// Fix models for pre-placedrn//rnpublic func_FixMapGuns()rn{ rn new ent = -1rn while((ent = find_ent_by_class(ent,KNIVES_NAMES[2])) != 0)rn entity_set_model(ent,"models/w_spade.mdl")rn rn ent = -1rn while((ent = find_ent_by_class(ent,PISTOLS_NAMES[0])) != 0)rn entity_set_model(ent,"models/w_colt.mdl")rn rn ent = -1rn while((ent = find_ent_by_class(ent,PISTOLS_NAMES[1])) != 0)rn entity_set_model(ent,"models/w_webley_v1.mdl")rn rn ent = -1rn while((ent = find_ent_by_class(ent,PISTOLS_NAMES[2])) != 0)rn entity_set_model(ent,"models/w_luger.mdl")rn}rnrn//////////////////////////////////////////////////////////////rn// Fix models for pre-placed (respawned)rn//rnpublic fwd_CreateNamedEntity(iClassname)rn{rn static ent,szClassname[32]rn ent = get_orig_retval()rn rn engfunc(EngFunc_SzFromIndex,iClassname,szClassname,31)rn rn if(equal(szClassname,KNIVES_NAMES[2]))rn set_task(1.0,"func_FixSpade",ent)rn rn else if(equal(szClassname,PISTOLS_NAMES[0]))rn set_task(1.0,"func_FixColt",ent)rn rn else if(equal(szClassname,PISTOLS_NAMES[1]))rn set_task(1.0,"func_FixWebley",ent)rn rn else if(equal(szClassname,PISTOLS_NAMES[2]))rn set_task(1.0,"func_FixLuger",ent)rn}rnrnpublic func_FixSpade(ent)rn if(is_valid_ent(ent) && !entity_get_edict(ent,EV_ENT_owner))rn entity_set_model(ent,"models/w_spade.mdl")rnrnpublic func_FixColt(ent)rn if(is_valid_ent(ent) && !entity_get_edict(ent,EV_ENT_owner))rn entity_set_model(ent,"models/w_colt.mdl") rn rnpublic func_FixWebley(ent)rn if(is_valid_ent(ent) && !entity_get_edict(ent,EV_ENT_owner))rn entity_set_model(ent,"models/w_webley_v1.mdl")rn rnpublic func_FixLuger(ent)rn if(is_valid_ent(ent) && !entity_get_edict(ent,EV_ENT_owner))rn entity_set_model(ent,"models/w_luger.mdl")rn rn//////////////////////////////////////////////////////////////rn// Drop the weaponrn//rnpublic func_WeaponDrop(ent)rn{rn if(is_valid_ent(ent) && get_pcvar_num(p_plugin))rn {rn set_task(0.1,"func_ChangeModel",ent)rn rn SetHamReturnInteger(1)rnrn return HAM_SUPERCEDErn }rn rn return HAM_IGNOREDrn}rnrn//////////////////////////////////////////////////////////////rn// Fix model after droppingrn//rnpublic func_ChangeModel(ent)rn{rn if(is_valid_ent(ent))rn {rn new world_ent = entity_get_edict(ent,EV_ENT_owner)rn rn if(world_ent > maxplayers && is_valid_ent(world_ent))rn {rn static classname[32]rn entity_get_string(ent,EV_SZ_classname,classname,31)rn rn if(equal(classname,"weapon_colt"))rn entity_set_model(world_ent,"models/w_colt.mdl")rn else if(equal(classname,"weapon_webley"))rn entity_set_model(world_ent,"models/w_webley_v1.mdl")rn else if(equal(classname,"weapon_luger"))rn entity_set_model(world_ent,"models/w_luger.mdl")rn else if(equal(classname,"weapon_spade"))rn entity_set_model(world_ent,"models/w_spade.mdl")rn }rn }rn}rnrn//////////////////////////////////////////////////////////////rn// Drop fake weapon on deathrn//rnpublic func_HamKilled(id)rn{rn if(get_pcvar_num(p_plugin))rn {rn new wpnid,weapon_type = -1rn rn //Knifern if(user_has_weapon(id,DODW_AMERKNIFE))rn {rn wpnid = DODW_AMERKNIFErn weapon_type = KNIFE_ALLIESrn }rn else if(user_has_weapon(id,DODW_GERKNIFE))rn {rn wpnid = DODW_GERKNIFErn weapon_type = KNIFE_AXISrn }rn else if(user_has_weapon(id,DODW_SPADE))rn {rn wpnid = DODW_SPADErn weapon_type = KNIFE_SPADErn }rn rn if(weapon_type != -1)rn spawn_weapon(id,KNIFE,weapon_type,wpnid)rn rn //Pistolrn weapon_type = -1rn rn if(user_has_weapon(id,DODW_COLT))rn {rn wpnid = DODW_COLTrn weapon_type = PISTOL_COLTrn }rn else if(user_has_weapon(id,DODW_WEBLEY))rn {rn wpnid = DODW_WEBLEYrn weapon_type = PISTOL_WEBLEYrn }rn else if(user_has_weapon(id,DODW_LUGER))rn {rn wpnid = DODW_LUGERrn weapon_type = PISTOL_LUGERrn }rn rn if(weapon_type != -1)rn {rn new wpnent = dod_get_weapon_ent(id,wpnid)rn new clip = get_pdata_int(wpnent,OFFSET_WPN_CLIP,OFFSET_LINUX)rn rn new backpackrn if(is_linux)rn backpack = get_pdata_int(id,OFFSET_PISTOL_BPAMMO_LINUX,OFFSET_LINUX)rn elsern backpack = get_pdata_int(id,OFFSET_PISTOL_BPAMMO_WIN32,OFFSET_LINUX)rn rn#if DOD_WEAPONJAMrn rn new jammed = entity_get_int(wpnent,EV_INT_iuser4)rn spawn_weapon(id,PISTOL,weapon_type,wpnid,clip,backpack,jammed)rn rn#elsernrn spawn_weapon(id,PISTOL,weapon_type,wpnid,clip,backpack)rnrn#endifrn }rn rn return HAM_HANDLEDrn }rn rn return HAM_IGNOREDrn}rnrn//////////////////////////////////////////////////////////////rn// Thought process of fake weaponsrn//rnpublic func_HamThink(ent)rn{ rn static classname[32]rn entity_get_string(ent,EV_SZ_classname,classname,31)rn rn if(equal(classname,TEMP_CLASSNAME))rn {rn remove_entity(ent)rn rn return HAM_SUPERCEDErn }rn rn return HAM_IGNOREDrn}rnrn//////////////////////////////////////////////////////////////rn// Handle touching a fake weaponrn//rnpublic func_HamTouch(ent,player)rn{rn if(!is_valid_ent(ent) || !is_user_alive(player) || !get_pcvar_num(p_plugin))rn return HAM_IGNOREDrn rn static classname[32]rn entity_get_string(ent,EV_SZ_classname,classname,31)rn rn if(equal(classname,TEMP_CLASSNAME))rn {rn new type = entity_get_int(ent,EV_INT_iuser4)rn rn if(!check_weapons(player,type))rn { rn client_cmd(player,"spk weapons/ammopickup.wav")rn rn static targetname[32]rn entity_get_string(ent,EV_SZ_targetname,targetname,31)rn rn give_item(player,targetname)rn rn new wpnid = entity_get_int(ent,EV_INT_iuser1)rn rn if(wpnid == DODW_COLT || wpnid == DODW_WEBLEY || wpnid == DODW_LUGER)rn { rn new backpack = entity_get_int(ent,EV_INT_iuser3)rn rn if(is_linux)rn set_pdata_int(player,OFFSET_PISTOL_BPAMMO_LINUX,backpack,OFFSET_LINUX)rn elsern set_pdata_int(player,OFFSET_PISTOL_BPAMMO_WIN32,backpack,OFFSET_LINUX)rn rn message_begin(MSG_ONE_UNRELIABLE,gMsgAmmoX,{0,0,0},player)rn write_byte(AMMO_PISTOL)rn write_byte(backpack)rn message_end()rn rn new clip = entity_get_int(ent,EV_INT_iuser2)rn new wpnent = dod_get_weapon_ent(player,wpnid)rn set_pdata_int(wpnent,OFFSET_WPN_CLIP,clip,OFFSET_LINUX)rn rn#if DOD_WEAPONJAMrnrn new jammed = entity_get_int(ent,EV_INT_iuser1)rn entity_set_int(ent,EV_INT_iuser4,jammed)rnrn#endifrnrn }rn rn remove_entity(ent)rn rn return HAM_SUPERCEDErn }rn }rnrn return HAM_IGNOREDrn}rnrn//////////////////////////////////////////////////////////////rn// Trap the round message and handlern//rnpublic func_RoundState() rn{rn new wpnent = -1 rn while((wpnent = find_ent_by_class(wpnent,TEMP_CLASSNAME)) != 0)rn if(is_valid_ent(wpnent))rn remove_entity(wpnent)rn}rnrn//////////////////////////////////////////////////////////////rn// Spawn the weapon after dyingrn//rnrn#if DOD_WEAPONJAMrnrnstock spawn_weapon(id,wpn,type,wpnid,clip=0,backpack=0,jammed=0)rn{rnrn#elsernrnstock spawn_weapon(id,wpn,type,wpnid,clip=0,backpack=0)rn{rnrn#endifrnrn static Float:n_info[3],entrn n_info = Float:{0.0,0.0,0.0}rn rn ent = create_entity("info_target")rn rn if(ent)rn {rn if(wpn == KNIFE)rn {rn entity_set_string(ent,EV_SZ_targetname,KNIVES_NAMES[type])rn entity_set_model(ent,KNIVES_MODELS[type])rn }rn elsern {rn entity_set_string(ent,EV_SZ_targetname,PISTOLS_NAMES[type])rn entity_set_model(ent,PISTOLS_MODELS[type])rn rn entity_set_int(ent,EV_INT_iuser2,clip)rn entity_set_int(ent,EV_INT_iuser3,backpack)rn entity_set_int(ent,EV_INT_iuser4,PISTOL)rn rn#if DOD_WEAPONJAMrnrn entity_set_float(ent,EV_FL_fuser1,float(jammed))rn rn#endifrn }rn rn entity_set_string(ent,EV_SZ_classname,TEMP_CLASSNAME)rn rn entity_set_int(ent,EV_INT_iuser1,wpnid)rn rn n_info[1] = get_gametime() + 22.0rn entity_set_float(ent,EV_FL_nextthink,n_info[1])rn rn entity_set_int(ent,EV_INT_solid,SOLID_TRIGGER)rn entity_set_int(ent,EV_INT_movetype,MOVETYPE_TOSS)rn rn n_info[1] = float(random(360))rn entity_set_vector(ent,EV_VEC_angles,n_info)rn rn entity_get_vector(id,EV_VEC_origin,n_info)rn n_info[0] += (random_num(-40,40))rn n_info[1] += (random_num(-40,40))rn entity_set_origin(ent,n_info)rn }rn}rnrnstock dod_get_weapon_ent(id,wpnid)rn{rn new ent = -1,entidrnrn new Float:origin[3]rn entity_get_vector(id,EV_VEC_origin,origin)rn rn while((ent = find_ent_in_sphere(ent,origin,0.4)) != 0)rn rn {rn if(is_valid_ent(ent))rn {rn entid = get_pdata_int(ent,OFFSET_WPN_ID,OFFSET_LINUX)rn rn if(wpnid == entid)rn return entrn }rn }rn rn return 0rn}rnrnstock check_weapons(id,type)rn{rn switch(type)rn {rn case PISTOL:rn {rn if(dod_weapon_type(id,DODWT_SECONDARY))rn return 1rn else if(user_has_weapon(id,DODW_WEBLEY))rn return 1rn }rn case KNIFE: return dod_weapon_type(id,DODWT_MELEE)rn }rn rn return 0rn}rnrnrnrn
rnrn
DOD THROW KNIFE PLUGINrn - Fixed Blade orientation rn - Fixed Rotation and speedrn - Fixed Kill hud icons rn Need to FIX : Blood sprites, Fast replace model "weaponbox" to correctly knife model rn
rn////////////////////////////////////////////////////////////////////////////////////////////////////rn/*rnrnINFO:rnrnThis script makes it possible to throw your weapon at your enemy and hereby do damage to him.rnrnTo get your weapon flying u need to bind a key to throw_weapon and hit that key when you wanna throwrnyour weapon.rnrn***MG34, MG42 and 30CAL cant be thrownrnrnrnCREDIT:rnrnThe basics of this plugin was found in the request forum @ allied modders, and was original made byrnKRoTaL. In the request forum someone updated it and posted it there, but i dont know who. However rncredit to that person and KRoTaL, I cant find the thread anymore sry.rnrndiamond-optic(www.avamods.com)rnwww.dodplugins.netrnrnrnTO DO:rnrn- Trace hits and add adjustable damage for hitplacesrn- Some kinda join message maybern- Maybe add a chance that the weapon will be jammed after it have be thrown rnrnrnCHANGELOG:rnrn02-17-2009 BETA release rnrnrnrnCVARS and default settings:rnrnrndod_tw 1 // plugin on/off | 1 = on 0 = offrndod_tw_damage 15 // damage on hitrndod_tw_speed 700 // throw speedrndod_tw_time_alive 1 // how long after throwing the weapon it will hurt. in secrnrn*/rn////////////////////////////////////////////////////////////////////////////////////////////////////rn#include <amxmodx>rn#include <fakemeta>rn#include <hamsandwich>rn#include <dodx>rn#include <dodfun>rn#include <engine>rn////////////////////////////////////////////////////////////////////////////////////////////////////rn#define PLUGIN "DoD Throw knives +"rn#define VERSION "1.2"rn#define AUTHOR "TheVaskov"rn////////////////////////////////////////////////////////////////////////////////////////////////////rn// p'srnnew p_on, p_wpn_damage, p_wpn_speed, p_wpn_time_alive, wpn_idrn////////////////////////////////////////////////////////////////////////////////////////////////////rn//g'srnnew mp_friendlyfirernnew g_FhSetModelrnnew g_MessageFade,gMsgDeathMsgrnnew bool:g_can_throw[33]rnrnnew Blood;rnnew BloodSpray;rnrnnew g_dropboxclass[33]rnnew const g_szClassName[] = "thrown_weapon"rnnew const g_szOrgClassName[] = "weaponbox"rnnew const g_ThrowSound[] = "weapons/knifeswing2.wav"rnnew const g_ThrowFlySound[] = "weapons/whizz10.wav"rnnew const g_ThrowHitwallSound[] = "weapons/knife_hitwall1.wav"rnnew const g_ThrowHitHumanSound[] = "weapons/hit_grass2.wav"rn////////////////////////////////////////////////////////////////////////////////////////////////////rnstatic bool:g_i_status[33]rnpublic client_connect(i_player)rn g_i_status[i_player]=falsernrnpublic client_PreThink(i_player){rn if(pev(i_player,pev_button)&IN_ATTACK2)rn {rn if(g_i_status[i_player]==false)rn {rn g_i_status[i_player]=true // Игрок i_player послал +attack2rn //client_cmd(i_player,"throw_weapon")rn rn throw_wpn(i_player)rn rn rn PLUGIN_HANDLED;rn }rn } rn else {rn if(g_i_status[i_player]==true)rn {rn g_i_status[i_player]=false // Игрок i_player послал -attack2rn }rn }rn}rn///////////////////////////////////////////rnrnpublic plugin_precache() rn{rn rn // Blood = precache_model("sprites/axis_camera.spr");rn BloodSpray = precache_model("sprites/blood-narrow.spr");rn rn rn}rnrnrnrnpublic plugin_init()rn{rn /* reg plugin and public tracking */rn register_plugin(PLUGIN, VERSION, AUTHOR)rn register_cvar("dod_tw_stats",VERSION,FCVAR_SERVER|FCVAR_SPONLY)rn rn /* overall settings */rn p_on = register_cvar("dod_tw", "1")rn p_wpn_damage = register_cvar("dod_tw_damage", "200")rn p_wpn_speed = register_cvar("dod_tw_speed", "1100.0")rn p_wpn_time_alive = register_cvar("dod_tw_time_alive", "1.0")rn rn /* custom wpn ( name[], melee=0,logname[] ) */rn wpn_id = custom_weapon_add("thrown_weapon",0,"thrown_weapon")rn rn /* player killed */rn // RegisterHam(Ham_Killed, "player", "ham_killed", 0)rn rn /* touch.. FM... */rn register_forward(FM_Touch,"hook_touch")rn rn /* Ham cant reg it before its "real"rn new i_Ent = engfunc(EngFunc_CreateNamedEntity, g_szClassName)rn RegisterHamFromEntity(Ham_Touch, i_Ent, "hook_touch")*/rn rn /* weaponbox spawn */rn RegisterHam(Ham_Spawn, "weaponbox", "WeaponBox_Spawn", 1)rn rn /* pub.throw cmd */rn // register_clcmd("throw_weapon","throw_wpn",0,"- Throw your weapon")rn rn /* victim msg */rn g_MessageFade = get_user_msgid("ScreenFade")rn gMsgDeathMsg = get_user_msgid("DeathMsg")rn rn mp_friendlyfire = get_cvar_pointer("mp_friendlyfire")rn}rn////////////////////////////////////////////////////////////////////////////////////////////////////rnpublic throw_wpn(id)rn{rn if(is_user_alive(id) && !is_wpn_heavy(id))rn {rn g_can_throw[id]=truern rn new clip,ammorn new classbox = get_user_weapon(id, clip,ammo)rn g_dropboxclass[id] = classboxrn client_print(id,print_chat, "classbox = %d" , g_dropboxclass[id])rn rn client_cmd(id,"drop")rn }rn}rn////////////////////////////////////////////////////////////////////////////////////////////////////rnpublic WeaponBox_Spawn(iEnt)rn{rn rn g_FhSetModel = register_forward(FM_SetModel, "SetModel")rn rn}rn////////////////////////////////////////////////////////////////////////////////////////////////////rnpublic SetModel(iEnt)rn{rn new id = pev(iEnt, pev_owner)rn rn if(is_user_alive(id) && !is_wpn_heavy(id) && g_can_throw[id])rn {rn new Float:fVelocity[3]rn velocity_by_aim(id, 1800, fVelocity)rn fVelocity[2] += 30.0rn set_pev(iEnt, pev_velocity, fVelocity)rn rn /// rotation rn new Float:TumbleVector[3] rn TumbleVector[0] = random_float(-500.0,-501.0) // = 1320.0 // Wheelrn // TumbleVector[1] // = random_float(800.0,100.0) // TEArn TumbleVector[2] = random_float(-60.0,60.0) // 400.0 // = random_float(2.0,0.0) // HOURSrn rn rn new Float:f5Angles[3], Float:f5Origin[3]rn rn vector_to_angle(fVelocity, f5Angles)rn pev(id, pev_origin, f5Origin)rn rn f5Angles[0] += 55.0rn // f5Angles[1] // rn f5Angles[2] += 90.0rn rn set_pev(iEnt, pev_angles, f5Angles)rn rn set_pev(iEnt, pev_avelocity, TumbleVector)rn engfunc(EngFunc_SetSize, iEnt, Float:{-1.0, -1.0, -1.0}, Float:{1.0, 1.0, 1.0})rn set_pev(iEnt, pev_classname, g_szClassName)rn rn set_pev(iEnt, pev_solid, SOLID_TRIGGER)rn g_can_throw[id]=falsern set_task(get_pcvar_float(p_wpn_time_alive),"BackToNormal",iEnt)rn rn // thwrowspadeani(id)rn rn emit_sound(id,CHAN_BODY,g_ThrowSound,0.9,ATTN_NORM,0,PITCH_NORM)rn rn emit_sound(iEnt,CHAN_AUTO,g_ThrowFlySound,0.5,ATTN_NORM ,0,PITCH_NORM)rn rn custom_weapon_shot(wpn_id,id)rn rn rn rn }rn unregister_forward(FM_SetModel, g_FhSetModel)rn}rn////////////////////////////////////////////////////////////////////////////////////////////////////rnpublic hook_touch(iEnt,id)rn{rn if(get_pcvar_num(p_on) && is_user_connected(id) && is_user_alive(id))rn {rn static szClassName[32]rn pev(iEnt, pev_classname, szClassName, sizeof szClassName - 1)rn rn new iAttacker = pev(iEnt, pev_owner)rn rn if(!equal(szClassName, g_szClassName) rn || iAttacker == id rn || !is_user_alive(iAttacker) rn || (!get_pcvar_num(mp_friendlyfire) rn && get_user_team(iAttacker) == get_user_team(id)))rn return FMRES_IGNOREDrn rn // ExecuteHamB(Ham_TakeDamage, id, iEnt, iAttacker, 20, DMG_BULLET) /* DMG_SHOCK no effect */rn red_flash(id)rn rn // ExecuteHamB(Ham_Killed, id, iAttacker, 0)rn rn // client_print(0,print_chat, "smash is %s ", g_dropboxclass[iAttacker])rn static Float:fOrigin[3]rn pev(id, pev_origin, fOrigin)rn create_blood_dod(fOrigin)rn rn rn user_silentkill(id)rn new fragcount = dod_get_user_kills(iAttacker)rn fragcount++rn dod_set_user_kills(iAttacker, fragcount, 1)rn rn set_pev(iEnt, pev_classname, g_szOrgClassName)rn message_begin(MSG_ALL,gMsgDeathMsg,{0,0,0},0)rn write_byte(iAttacker) // killerrn write_byte(id) // victimrn write_byte(g_dropboxclass[iAttacker]) // 42 is smashrn message_end()rn rn rn rn new hitplace = random_num(0,6)rn // custom_weapon_dmg(wpn_id,iAttacker,id,get_pcvar_num(p_wpn_damage),hitplace)rn rn }rn static szClassName[32]rn pev(iEnt, pev_classname, szClassName, sizeof szClassName - 1)rn rn rn if(id == 0 && equal(szClassName, g_szClassName)){rn rn rn rn new Float:iOrigin[3]rn entity_get_vector(iEnt,EV_VEC_origin,iOrigin)rn // client_print(0,print_chat, "orogin %f , %f , %f ", iOrigin[0],iOrigin[1],iOrigin[2])rn // pev(id,pev_origin,iOrigin)rn rn new i2Origin[3]rn FVecIVec(iOrigin,i2Origin)rn rn emit_sound(iEnt,CHAN_AUTO,g_ThrowHitwallSound,0.4,ATTN_IDLE ,0,PITCH_NORM)rn rn message_begin(MSG_PVS,SVC_TEMPENTITY)rn write_byte(TE_SPARKS)rn write_coord(i2Origin[0])rn write_coord(i2Origin[1])rn write_coord(i2Origin[2])rn message_end()rn rn set_pev(iEnt, pev_velocity, Float:{100.0, 100.0, 50.0})rn rn rn emit_sound(iEnt,CHAN_WEAPON ,g_ThrowHitwallSound,0.4,ATTN_NORM,0,PITCH_NORM + 50)rn rn rn }rn return FMRES_IGNOREDrn }rn ////////////////////////////////////////////////////////////////////////////////////////////////////rn public ham_killed(id, idattacker, shouldgib)rn {rn if(get_pcvar_num(p_on) && is_user_connected(idattacker) && is_wpn_thrown(idattacker))rn {rn /*rn new steam[33], teamname[33], name[33]rn new steam2[33], teamname2[33], name2[33]rn get_user_authid(idattacker, steam, sizeof steam - 1)rn get_user_authid(id, steam2, sizeof steam2 - 1)rn dod_get_pl_teamname(idattacker, teamname, sizeof teamname - 1)rn dod_get_pl_teamname(id, teamname2, sizeof teamname2 - 1)rn get_user_name(idattacker, name, sizeof name - 1)rn get_user_name(id, name2, sizeof name2 - 1)rn new userid = get_user_userid(idattacker)rn new userid2 = get_user_userid(id)rn rn // log_message("^"%s<%d><%s><%s>^" killed ^"%s<%d><%s><%s>^" with ^"thrown_weapon^"", name, userid, steam, teamname, name2, userid2, steam2, teamname2)rn */rn // client_print(0, print_chat,"*** %s killed %s by throwing his weapon at him!", name, name2)rn } rn }rn ////////////////////////////////////////////////////////////////////////////////////////////////////rn public BackToNormal(iEnt)rn {rn if(pev_valid(iEnt) && get_pcvar_num(p_on))rn {rn static szClassName[32]rn pev(iEnt, pev_classname, szClassName, sizeof szClassName - 1)rn rn if(!equal(szClassName, g_szClassName))rn return FMRES_IGNOREDrn rn set_pev(iEnt, pev_classname, g_szOrgClassName)rn }rn return FMRES_IGNOREDrn }rn ////////////////////////////////////////////////////////////////////////////////////////////////////rn stock is_wpn_heavy(id) rn { rn new clip, ammo, rn wpn = get_user_weapon(id, clip, ammo) rn if(wpn == DODW_MORTARrn // || wpn == DODW_AMERKNIFErn // || wpn == DODW_GERKNIFErn || wpn == DODW_COLTrn || wpn == DODW_LUGERrn || wpn == DODW_GARANDrn || wpn == DODW_SCOPED_KARrn || wpn == DODW_THOMPSONrn || wpn == DODW_STG44rn || wpn == DODW_SPRINGFIELDrn || wpn == DODW_KARrn || wpn == DODW_BARrn || wpn == DODW_MP40rn || wpn == DODW_HANDGRENADErn || wpn == DODW_STICKGRENADErn || wpn == DODW_STICKGRENADE_EXrn || wpn == DODW_HANDGRENADE_EXrn || wpn == DODW_MG42rn || wpn == DODW_30_CALrn // || wpn == DODW_SPADE rn || wpn == DODW_M1_CARBINErn || wpn == DODW_MG34rn || wpn == DODW_GREASEGUNrn || wpn == DODW_FG42rn || wpn == DODW_K43rn || wpn == DODW_ENFIELDrn || wpn == DODW_STENrn || wpn == DODW_BRENrn || wpn == DODW_WEBLEYrn || wpn == DODW_BAZOOKArn || wpn == DODW_PANZERSCHRECKrn || wpn == DODW_PIATrn || wpn == DODW_SCOPED_FG42rn || wpn == DODW_KAR_BAYONETrn || wpn == DODW_SCOPED_ENFIELDrn || wpn == DODW_MILLS_BOMBrn // || wpn == DODW_BRITKNIFErn || wpn == DODW_GARAND_BUTTrn || wpn == DODW_ENFIELD_BAYONETrn || wpn == DODW_K43_BUTT)rn return 1 rn return 0rn }rn ////////////////////////////////////////////////////////////////////////////////////////////////////rn /* best stock EVER! :D */rn stock is_wpn_thrown(idattacker) rn { rn new clip, ammo, rn wpn = get_user_weapon(idattacker, clip, ammo) rn if(wpn == wpn_id) rn return 1 rn return 0rn }rn ////////////////////////////////////////////////////////////////////////////////////////////////////rn stock red_flash(id)rn {rn message_begin(MSG_ONE_UNRELIABLE, g_MessageFade , {0,0,0}, id)rn write_short(1<<10)rn write_short(1<<10)rn write_short(0x0000)rn write_byte(255)rn write_byte(0) rn write_byte(0) rn write_byte(99)rn message_end() rn }rn ////////////////////////////////////////////////////////////////////////////////////////////////////rn rn public thwrowspadeani(id)rn {rn if(!is_user_alive(id)) rn return PLUGIN_HANDLEDrn rn set_pev(id,pev_weaponanim,4)rn message_begin(MSG_ONE,SVC_WEAPONANIM,{0,0,0},id)rn write_byte(8)rn write_byte(pev(id,pev_body))rn message_end()rn return PLUGIN_HANDLEDrn }rnrnstock create_blood_dod(Float:fOrigin[3]) rn{rn message_begin(MSG_BROADCAST, SVC_TEMPENTITY);rn write_byte(TE_BLOODSTREAM);rn engfunc(EngFunc_WriteCoord, fOrigin[0]);rn engfunc(EngFunc_WriteCoord, fOrigin[1]);rn engfunc(EngFunc_WriteCoord, fOrigin[2]);rn write_coord(random_num(-50, 50));rn write_coord(random_num(-50, 50));rn write_coord(-10);rn write_byte(70);rn write_byte(random_num(50, 100));rn message_end();rn message_begin(MSG_BROADCAST, SVC_TEMPENTITY) ;rn write_byte(TE_BLOODSPRITE);rn engfunc(EngFunc_WriteCoord, fOrigin[0] + random_float(-5.0, 5.0));rn engfunc(EngFunc_WriteCoord, fOrigin[1] + random_float(-5.0, 5.0));rn engfunc(EngFunc_WriteCoord, fOrigin[2]);rn write_short(BloodSpray);rn write_short(BloodSpray);rn write_byte(70);rn write_byte(7);rn message_end();rn}rnrn