Day of Defeat Plugins Community
This site is an archive — everything is readable and downloadable, nothing can be posted. Admin

DoD Drop All Weapons (v1.1)

by diamond-optic · 2009-09-21 · 7 replies · 8577 views · 208 downloads

Read the thread (8 posts)

From the first post

DoD Drop All Weapons
n- Version 1.1
n- 09.21.2009
n- diamond-optic
n
nCredits:
n
- Dr. G: Code to enable dropping of knives/pistolsn- Vet(3TT3V): Used alot of code & the webley world model from dod_pistolclips (v1.4)
Information:
n
- Allows players to drop their knives & pistols andn pick up different onesnn- Players will now also drop their knife and/or pistoln on dying if they have onenn- I have not got around to allowing nades to be dropped yetn ..Give me some time and I'll eventually get to itnn- Server List: [URL]http://www.game-monitor.com/search.php?rulename=dod_dropallweapons_stats[/URL]
CVARs:
n
dod_dropallweapons "1"        //Turn ON(1)/OFF(0)
Compiler Defines:
n
DOD_WEAPONJAM 0            //Set to 1 if you use dod_weaponjam
File Placement:
n
w_webley_v1.mdl --> ../dod/models/
Change Log:
n
- 09.20.2009 Version 1.0n        Initial releasen        n- 09.21.2009 Version 1.1n        Fixed a dumb mistake
DOWNLOAD MIRROR: http://www.avamods.com/download.php?view.178

Files

dod_dropallweapons.sma Plugin Source 12 KB 107 dl Download Compile
dod_dropallweapons-files.zip Archive 322 KB 101 dl Download

The thread

All 8 posts from 5 people on DoD Drop All Weapons (v1.1), kept as they were written.

diamond-optic
started this thread
Posts: 2,068
Threads: 103
Joined: May 2005
09-20-2009, 11:12 PM #1

DoD Drop All Weaponsn- Version 1.1n- 09.21.2009n- diamond-opticnnCredits:n

n- Dr. G: Code to enable dropping of knives/pistolsn- Vet(3TT3V): Used alot of code & the webley world model from dod_pistolclips (v1.4)n
Information:n
n- Allows players to drop their knives & pistols andn pick up different onesnn- Players will now also drop their knife and/or pistoln on dying if they have onenn- I have not got around to allowing nades to be dropped yetn ..Give me some time and I'll eventually get to itnn- Server List: http://www.game-monitor.com/search.php?rulename=dod_dropallweapons_statsn
CVARs:n
ndod_dropallweapons "1"        //Turn ON(1)/OFF(0)n
Compiler Defines:n
nDOD_WEAPONJAM 0            //Set to 1 if you use dod_weaponjamn
File Placement:n
nw_webley_v1.mdl --> ../dod/models/n
Change Log:n
n- 09.20.2009 Version 1.0n        Initial releasen        n- 09.21.2009 Version 1.1n        Fixed a dumb mistaken
DOWNLOAD MIRROR: http://www.avamods.com/download.php?view.178

Ba5ic
posted here
Posts: 181
Threads: 26
Joined: Nov 2005
09-21-2009, 04:03 AM #2

Nice plugin D-O, just installed it on my Linux Server, no problem dropping knife or pistol and picking up again, however it will not let me pick up team mates or axis knives or or pistols?.nnThanks in advancenn**UPDATE**nnOK, i can see and hear the knife and or pistol being picked up, but when you cycle through the weapons, they do not show.nnRunning debug - Nothing showing in error logs

Dr.G
posted here
Posts: 776
Threads: 75
Joined: Nov 2007
09-21-2009, 07:41 AM #3

WOW credit! :D

N netmad
posted here
Posts: 24
Threads: 5
Joined: May 2009
09-21-2009, 08:51 AM #4

alive player cant drop pistols , and how to can pick enemy pistol? rnI very want to get reset maxclip of weapon plugins. but I write code myself ...dont work. PLZ help me.

diamond-optic
started this thread
Posts: 2,068
Threads: 103
Joined: May 2005
09-21-2009, 09:55 AM #5

ahh shit.. idk what i did lol.. i 'cleaned' a few parts up before i released it and now i see its not working for me either hahah.. GG to me :Pnnits a stupid mistake but i just cant upload a fixed version right now, so... when i get home today ill fix it lol

diamond-optic
started this thread
Posts: 2,068
Threads: 103
Joined: May 2005
09-21-2009, 07:04 PM #6

ok it should be working now.. sorry bout that :(nnn

n- 09.21.2009 Version 1.1n        Fixed a dumb mistaken
Ba5ic
posted here
Posts: 181
Threads: 26
Joined: Nov 2005
09-22-2009, 03:17 AM #7

Working perfectly - many thanks D-O

T TheVaskov
posted here
Posts: 8
Threads: 3
Joined: Oct 2021
04-10-2022, 11:52 AM #8

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
rnrnDOD 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
DoD Plugins Archive · Repository · Old Forum Threads · Maps · Admin · built 14 Sep 2026 00:34 UTC