All pastes #143959 Raw Edit

Qiler's Hornet gun

public lua v1 · immutable
#143959 ·published 2006-08-22 08:17 UTC
rendered paste body
	--=== Hornet Gun by Qiler ===--	--=== DEFINES===--	MyIndex		  = 0	Owner		  = 0	Time	  	  = _CurTime();	local Hornets = {}	--===============--		--Edit this if you want	HornetMass		 = 1;	Delay			 = 0.15;	MaxHornets 		 = 10;	HornetDamage	 = 4		-- List of Npcs what for hornets, origin will be 32 units above their reall origin.	local NpcHeightMod = {	"npc_alyx",	"npc_antlionguard",	"npc_barney",	"npc_breen",	"npc_citizen",	"npc_combine_s",	"npc_combine_e",	"npc_turret_floor",	"npc_dog",	"npc_eli",	"npc_fastzombie",	"npc_gman",	"npc_kleiner",	"npc_metropolice",	"npc_monk",	"npc_mossman",	"npc_poisonzombie",	"npc_sniper",	"npc_stalker",	"npc_vortigaunt",	"npc_zombie"	}	function onInit()		_EntFire (MyIndex,"addoutput","materialoverride models/props_wasteland/dirtwall001a",0)	end	function SortEnemies (HornetID,Range)		local EnemyTable = _EntitiesFindInSphere(_EntGetPos(HornetID),Range)		local Enemies = {}		local Enemy = 0;				for E in EnemyTable do			if  EnemyTable[E] ~= Owner then				local enemy = string.lower(_EntGetType ( EnemyTable[E] ))				if enemy == "player" or string.find( enemy, "npc_" ) then					table.insert( Enemies, EnemyTable[E] );				end			end		end				if table.getn(Enemies) > 0 then			local Random = math.random(1,table.getn(Enemies))			Enemy = Enemies[Random];		end		return Enemy;	end		function MakeTrail (Entity,color) --Trail making function, i bet you will use it :P.		local Nade = _EntCreate("npc_grenade_frag");		_EntSetPos( Nade, vector3(0,0,-10000) );		_EntSpawn( Nade );				local Trails =_EntitiesFindByClass("env_spritetrail");				for t in Trails do			if _EntGetParent(Trails[t]) == Nade then				_EntSetParent( Trails[t], Entity )				_EntFire(Trails[t],"color",color,0)				_EntFire( Nade, "kill", "1", 0.1)			end		end	end	function onThink()		for i in Hornets do			if Hornets[i].Enemy ~= nil then				if not _EntExists ( Hornets[i].Enemy ) then					Hornets[i].Enemy = nil;				end			end			if not _EntExists ( Hornets[i].Id ) then				table.remove( Hornets, i );				if _swep.GetClipAmmo( MyIndex, 0 ) < 10 then					_swep.SetClipAmmo( MyIndex, 0, _swep.GetClipAmmo( MyIndex, 0 ) + 1 );				end			end		end				if _CurTime() > Time then			for H in Hornets do				if Hornets[H] ~= nil then					if _EntExists ( Hornets[H].Id ) then						if Hornets[H].Enemy == 0 or Hornets[H].Enemy == nil then							Hornets[H].Enemy = SortEnemies (Hornets[H].Id,300);						end												local EnemyPos = vector3(0,0,0)						if Hornets[H].Enemy ~= 0 and Hornets[H].Enemy ~= nil then							EnemyPos = _EntGetPos(Hornets[H].Enemy)							if _EntGetType ( Hornets[H].Enemy ) == "player" then								if not _PlayerIsKeyDown ( Hornets[H].Enemy, 4 ) then									EnemyPos.z = EnemyPos.z + 32;								else									EnemyPos.z = EnemyPos.z + 16								end							else								for npc in NpcHeightMod do									if _EntGetType ( Hornets[H].Enemy ) == NpcHeightMod[npc] then										EnemyPos.z = EnemyPos.z + 32;									end								end							end						end												if Hornets[H].Enemy ~= 0  and Hornets[H].Enemy ~= nil then							_TraceLine (_EntGetPos(Hornets[H].Id), vecNormalize(vecSub(_EntGetPos(Hornets[H].Id), EnemyPos)), -300, Hornets[H].Id)							if _TraceHitNonWorld() then								if _TraceGetEnt() == Hornets[H].Enemy then									if vecLength(vecSub(_EntGetPos(Hornets[H].Id), _TraceEndPos())) < 10 then										_TraceAttack(Hornets[H].Enemy, MyIndex, Owner, HornetDamage );										_EntRemove ( Hornets[H].Id );									else										_PhysApplyForce(Hornets[H].Id, vecMul( vecNormalize(vecSub(_EntGetPos(Hornets[H].Id), EnemyPos)), vector3(-700, -700, -700)))									end								else									Hornets[H].Enemy = 0;								end							else								Hornets[H].Enemy = 0;							end						end												if math.random( 0, 10 ) == 5 then 							_EntEmitSoundEx( Hornets[H].Id, "weapons/bugbait/bugbait_squeeze"..math.random(1,2)..".wav", 1, 2.5 ); 						end																			end				end			end			Time = _CurTime()		end	end			function onPrimaryAttack( )		if ( _PlayerInfo( Owner, "alive" ) == false ) then return; end			_EntEmitSoundEx(MyIndex, "weapons/bugbait/bugbait_squeeze"..math.random(1,2)..".wav", 1, 2);		local Hornet = _EntCreate( "prop_physics" );				local RandomColor = ("255 "..math.random(0,100).." 0")				MakeTrail(Hornet,RandomColor)		MakeTrail(Hornet,RandomColor)		MakeTrail(Hornet,RandomColor)				_EntSetOwner( Hornet, Owner );		_PhysSetMass( Hornet, HornetMass );		_EntSetPos( Hornet, vecAdd( vecAdd( _PlayerGetShootPos( Owner ), vecMul( _EntGetRightVector( Owner ), 10 ) ), vecMul( _EntGetUpVector( Owner ), -10 ) ) );		_EntSetKeyValue( Hornet, "rendermode", 10 );		_EntSetKeyValue( Hornet, "angles", math.random(0,360).." "..math.random(0,360).." "..math.random(0,360) );		_EntSetKeyValue( Hornet, "model", "models/props_junk/watermelon01_chunk02c.mdl" );		_EntSetParent( trail, particle);				_EntSpawn( Hornet );		local Htable = {}		Htable.Id = Hornet;		Htable.Enemy = 0;		table.insert(Hornets,Htable)				_PhysEnableGravity( Hornet, false )		_EntSetMoveCollide( Hornet, 3 ); 		_PhysApplyForce( Hornet, vecMul( vecAdd(_PlayerGetShootAng( Owner ),vector3((math.random()-0.5)/15,(math.random()-0.5)/15,(math.random()-0.5)/15)), vector3(5000, 5000, 5000) ) )		_PhysSetMass( Hornet, HornetMass );				_EntFire( Hornet,"addoutput","onhealthchanged !self,kill,1,1",0 )		--_EntFire( Hornet,"addoutput","onhealthchanged !self,addoutput,minhealthdmg 1000",0 )		--_EntFire( Hornet,"addoutput","onhealthchanged !self,addoutput,minhealthdmg 0,1",0 )		--_EntFire( Hornet,"addoutput","onhealthchanged !activator,removehealth,1,01",0 )		_EntFire( Hornet,"addoutput","physdamagescale 1000",0 )		_EntFire( Hornet,"kill","1", 5 )				_SWEPUseAmmo(MyIndex, 0, 1);			end	function Holster()		if _swep.GetClipAmmo( MyIndex, 0 ) == 0 then			_swep.SetClipAmmo( MyIndex, 0, 1 )		end	end	function onSecondaryAttack()		return false;	end	function onReload()	   return false;	end	function getWeaponSwapHands()		return false;		end	function getWeaponFOV()		return 65;		end	function getWeaponSlot()		return 5;		end	function getWeaponSlotPos()		return 5;		end	function getFiresUnderwater()		return true;	end	function getReloadsSingly()		return false;	end	function getDamage()		return 0;	end	function getPrimaryShotDelay()		return Delay;	end	function getSecondaryShotDelay()		return 0;	end	function getPrimaryIsAutomatic()		return true;	end	function getSecondaryIsAutomatic()		return false;	end	function getPrimaryAmmoType()		return "AirboatGun";	end	function getSecondaryAmmoType()		return "none";	end	function getMaxClipPrimary()		return MaxHornets;	end	function getMaxClipSecondary()		return -1;	end	function getDefClipPrimary()		return MaxHornets;	end	function getDefClipSecondary()		return 0;	end	function getPrimaryScriptOverride()		return 2;	end	function getSecondaryScriptOverride()		return 3;	end	function getViewModel( )		return "models/weapons/v_irifle.mdl";	end	function getWorldModel()		return "models/weapons/w_irifle.mdl";	end	function getClassName()		return "weapon_Hornet";	end	function getAnimPrefix()		return "ar2";	end	function getPrintName()		return "Hornet Gun";	end