so i got a taser code from a friend and it works great but you can only use it once then th "battery" is dead on it can someone help me make it so that you can use it more than once and that the battery just needs to recharge after each use
the code is this any help would be greatly appreciated
[CODE]if SERVER then
AddCSLuaFile( "shared.lua" )
end
SWEP.HoldType = "pistol"
if CLIENT then
SWEP.PrintName = "Taser"
SWEP.Slot = 6
SWEP.ViewModelFlip = false
SWEP.EquipMenuData = {
type = "item_weapon",
desc = "Knock someone out for 30 seconds. Only useable once. Can purchase again."
};
SWEP.Icon = "vgui/ttt/icon_skull.vmt"
end
SWEP.Base = "weapon_tttbase"
SWEP.ViewModel = "models/weapons/v_pistol.mdl"
SWEP.WorldModel = "models/weapons/w_pistol.mdl"
SWEP.DrawCrosshair = true
SWEP.Primary.Damage = 5
SWEP.Primary.ClipSize = -1
SWEP.Primary.DefaultClip = -1
SWEP.Primary.Automatic = true
SWEP.Primary.Delay = 1.1
SWEP.Primary.Ammo = "none"
SWEP.Secondary.ClipSize = -1
SWEP.Secondary.DefaultClip = -1
SWEP.Secondary.Automatic = true
SWEP.Secondary.Ammo = "none"
SWEP.Secondary.Delay = 1.4
SWEP.Kind = WEAPON_EQUIP
SWEP.CanBuy = {ROLE_DETECTIVE} -- only traitors can buy
SWEP.LimitedStock = false -- only buyable once
SWEP.WeaponID = AMMO_TASER
SWEP.IsSilent = false
-- Pull out faster than standard guns
SWEP.DeploySpeed = 2
SWEP.Used = false
local taseredrags = {}
function SWEP:Initialize()
hook.Add("TTTEndRound", "DontTaseMeBro", function()
self.Used = true
end)
end
function SWEP:PrimaryAttack()
if self.Used then
self.Owner:PrintMessage( HUD_PRINTCENTER, "Batteries Depleted. Taser Useless." )
return
end
local eyetrace = self.Owner:GetEyeTrace();
if !eyetrace.Entity:IsPlayer() then return end
self.Weapon:EmitSound( "Weapon_StunStick.Activate")
self.BaseClass.ShootEffects( self )
if not IsValid(eyetrace.Entity) or (self.Owner:EyePos():Distance(eyetrace.Entity:GetPos()) > 150) or not eyetrace.Entity:IsPlayer() then return end
if CLIENT then return end
if eyetrace.Entity:IsPlayer() then
self.Owner:PrintMessage( HUD_PRINTCENTER, "Now right click to electrocute "..eyetrace.Entity:GetName( ) )
self:tasePlayer(eyetrace.Entity) // If the it is a player then bring them down tranqPlayer()
self.Used = true
end
end
function SWEP:tasePlayer(ply)
if not ply:Alive() then return end
if ply:InVehicle() then
local vehicle = ply:GetParent()
ply:ExitVehicle()
end
ULib.getSpawnInfo( ply ) -- Collect information so we can respawn them in the same state.
local ragdoll = ents.Create( "prop_ragdoll" )
ragdoll.ragdolledPly = ply
ragdoll:SetPos( ply:GetPos() )
local velocity = ply:GetVelocity()
ragdoll:SetAngles( ply:GetAngles() )
ragdoll:SetModel( ply:GetModel() )
ragdoll:Spawn()
ragdoll:Activate()
ply:SetParent( ragdoll ) -- So their player ent will match up (position-wise) with where their ragdoll is.
-- Set velocity for each peice of the ragdoll
local j = 1
while true do -- Break inside
local phys_obj = ragdoll:GetPhysicsObjectNum( j )
if phys_obj then
phys_obj:SetVelocity( velocity )
j = j + 1
else
break
end
end
table.insert(taseredrags, ragdoll)
ply:Spectate( OBS_MODE_CHASE )
ply:SpectateEntity( ragdoll )
ply:StripWeapons() -- Otherwise they can still use the weapons.
ragdoll:DisallowDeleting( true, function( old, new ) ply.ragdoll = new end )
ply:DisallowSpawning( true )
ply.ragdoll = ragdoll
ply:PrintMessage( HUD_PRINTCENTER, "You have been tasered. 30 seconds till revival" )
timer.Create("revivedelay"..ply:UniqueID(), 30, 1, function () taserrevive( ply ) end )
end
function taserrevive(ply)
ply:DisallowSpawning( false )
ply:SetParent()
ply:UnSpectate() -- Need this for DarkRP for some reason, works fine without it in sbox
local ragdoll = ply.ragdoll
ply.ragdoll = nil -- Gotta do this before spawn or our hook catches it
if not ragdoll:IsValid() then -- Something must have removed it, just spawn
ULib.spawn( ply, true )
else
local pos = ragdoll:GetPos()
pos.z = pos.z + 10 -- So they don't end up in the ground
ULib.spawn( ply, true )
ply:SetPos( pos )
ply:SetVelocity( ragdoll:GetVelocity() )
local yaw = ragdoll:GetAngles().yaw
ply:SetAngles( Angle( 0, yaw, 0 ) )
ragdoll:DisallowDeleting( false )
ragdoll:Remove()
end
for k, v in pairs(taseredrags) do
table.remove( taseredrags, k )
end
end
function SWEP:SecondaryAttack()
if table.Count( taseredrags ) == 0 then return end
self.Owner:EmitSound( "Weapon_Pistol.Empty")
self.Owner:EmitSound( "Weapon_SMG1.Empty")
if CLIENT then return end
for k, v in pairs(taseredrags) do
local shock1 = math.random(-1200, 1200 )
local shock2 = math.random(-1200, 1200 )
local shock3 = math.random(-1200, 1200 )
if not v:IsValid() then return end
v:GetPhysicsObject():ApplyForceCenter( Vector( shock1, shock2, shock3 ) )
end
end[/CODE]
Sorry, you need to Log In to post a reply to this thread.