• Stunstick DarkRP
    1 replies, posted
So, I'm trying to basically have the same exact animations/sounds from the stun-stick from HL2 by editing this script, but to arrest (LMB) and unarrest (RMB). The animation doesn't work and the swing speed is nowhere near the actual stun-stick. I'm awfully new at this, so if someone could clue me in, It'd be much appreciated. :buckteeth: [CODE]if SERVER then AddCSLuaFile("shared.lua") end if CLIENT then SWEP.PrintName = "Arrest Baton" SWEP.Slot = 5 SWEP.SlotPos = 5 SWEP.DrawAmmo = false SWEP.DrawCrosshair = false end SWEP.Base = "weapon_cs_base2" SWEP.Author = "sweetbabyraysbbq" SWEP.Instructions = "Left click to unarrest\nRight click to arrest\nReload to warn" SWEP.Contact = "" SWEP.Purpose = "Arresting and Unarresting criminals" SWEP.IconLetter = "" SWEP.Category = "DarkRP" SWEP.ViewModelFOV = 62 SWEP.ViewModelFlip = false SWEP.AnimPrefix = "stunstick" SWEP.Spawnable = true SWEP.AdminSpawnable = true SWEP.AdminOnly = true SWEP.Category = "sweetbabyraysbbq" SWEP.NextStrike = 0 SWEP.ViewModel = Model("models/weapons/v_stunstick.mdl") SWEP.WorldModel = Model("models/weapons/w_stunbaton.mdl") SWEP.Sound = Sound("weapons/stunstick/stunstick_swing1.wav") SWEP.Primary.ClipSize = -1 SWEP.Primary.DefaultClip = 0 SWEP.Primary.Automatic = false SWEP.Primary.Ammo = "" SWEP.Secondary.ClipSize = -1 SWEP.Secondary.DefaultClip = 0 SWEP.Secondary.Automatic = false SWEP.Secondary.Ammo = "" function SWEP:Initialize() self:SetHoldType("normal") end function SWEP:PrimaryAttack() -- Unarresting if CurTime() < self.NextStrike then return end self:SetHoldType("melee") timer.Simple(0.3, function() if self:IsValid() then self:SetHoldType("normal") end end) self.NextStrike = CurTime() + 0.51 -- Actual delay is set later if CLIENT then return end timer.Stop(self:GetClass() .. "_idle" .. self:EntIndex()) local vm = self.Owner:GetViewModel() if IsValid(vm) then vm:ResetSequence(vm:LookupSequence("idle01")) timer.Simple(0, function() if not IsValid(self) or not IsValid(self.Owner) or not IsValid(self.Owner:GetActiveWeapon()) or self.Owner:GetActiveWeapon() ~= self then return end self.Owner:SetAnimation(PLAYER_ATTACK1) if IsValid(self.Weapon) then self.Weapon:EmitSound(self.Sound) end local vm = self.Owner:GetViewModel() if not IsValid(vm) then return end vm:ResetSequence(vm:LookupSequence("attackch")) vm:SetPlaybackRate(1 + 1/3) local duration = vm:SequenceDuration() / vm:GetPlaybackRate() timer.Create(self:GetClass() .. "_idle" .. self:EntIndex(), duration, 1, function() if not IsValid(self) or not IsValid(self.Owner) then return end local vm = self.Owner:GetViewModel() if not IsValid(vm) then return end vm:ResetSequence(vm:LookupSequence("idle01")) end) self.NextStrike = CurTime() + duration end) end self.Owner:LagCompensation(true) local trace = util.QuickTrace(self.Owner:EyePos(), self.Owner:GetAimVector() * 90, {self.Owner}) self.Owner:LagCompensation(false) if IsValid(trace.Entity) and trace.Entity.onUnArrestStickUsed then trace.Entity:onUnArrestStickUsed(self.Owner) return end local ent = self.Owner:getEyeSightHitEntity(nil, nil, function(p) return p ~= self.Owner and p:IsPlayer() and p:Alive() end) if not ent then return end if not IsValid(ent) or not ent:IsPlayer() or (self.Owner:EyePos():Distance(ent:GetPos()) > 115) or not ent:getDarkRPVar("Arrested") then return end ent:unArrest(self.Owner) DarkRP.notify(ent, 0, 4, DarkRP.getPhrase("youre_unarrested_by", self.Owner:Nick())) if self.Owner.SteamName then DarkRP.log(self.Owner:Nick().." ("..self.Owner:SteamID()..") unarrested "..ent:Nick(), Color(0, 255, 255)) end end function SWEP:SecondaryAttack() -- Arresting if CurTime() < self.NextStrike then return end self:SetHoldType("melee") timer.Simple(0.3, function() if self:IsValid() then self:SetHoldType("normal") end end) self.NextStrike = CurTime() + 0.51 -- Actual delay is set later. if CLIENT then return end timer.Stop(self:GetClass() .. "_idle" .. self:EntIndex()) local vm = self.Owner:GetViewModel() if IsValid(vm) then vm:ResetSequence(vm:LookupSequence("idle01")) timer.Simple(0, function() if not IsValid(self) or not IsValid(self.Owner) or not IsValid(self.Owner:GetActiveWeapon()) or self.Owner:GetActiveWeapon() ~= self then return end self.Owner:SetAnimation(PLAYER_ATTACK1) if IsValid(self.Weapon) then self.Weapon:EmitSound(self.Sound) end local vm = self.Owner:GetViewModel() if not IsValid(vm) then return end vm:ResetSequence(vm:LookupSequence("attackch")) vm:SetPlaybackRate(1 + 1/3) local duration = vm:SequenceDuration() / vm:GetPlaybackRate() timer.Create(self:GetClass() .. "_idle" .. self:EntIndex(), duration, 1, function() if not IsValid(self) or not IsValid(self.Owner) then return end local vm = self.Owner:GetViewModel() if not IsValid(vm) then return end vm:ResetSequence(vm:LookupSequence("idle01")) end) self.NextStrike = CurTime() + duration end) end self.Owner:LagCompensation(true) local trace = util.QuickTrace(self.Owner:EyePos(), self.Owner:GetAimVector() * 90, {self.Owner}) self.Owner:LagCompensation(false) if IsValid(trace.Entity) and trace.Entity.onArrestStickUsed then trace.Entity:onArrestStickUsed(self.Owner) return end local ent = self.Owner:getEyeSightHitEntity(nil, nil, function(p) return p ~= self.Owner and p:IsPlayer() and p:Alive() end) if not IsValid(ent) or (self.Owner:EyePos():Distance(ent:GetPos()) > 90) or (not ent:IsPlayer() and not ent:IsNPC()) then return end if ent:GetClass() == "prop_ragdoll" then for k,v in pairs(player.GetAll()) do if ent.OwnerINT and ent.OwnerINT == v:EntIndex() and GAMEMODE.KnockoutToggle then DarkRP.toggleSleep(v, true) return end end end if not GAMEMODE.Config.npcarrest and ent:IsNPC() then return end if FAdmin and ent:IsPlayer() and ent:FAdmin_GetGlobal("fadmin_jailed") then DarkRP.notify(self.Owner, 1, 5, DarkRP.getPhrase("cant_arrest_fadmin_jailed")) return end local jpc = DarkRP.jailPosCount() if not jpc or jpc == 0 then DarkRP.notify(self.Owner, 1, 4, DarkRP.getPhrase("cant_arrest_no_jail_pos")) else -- Send NPCs to Jail if ent:IsNPC() then ent:SetPos(DarkRP.retrieveJailPos()) else if not ent.Babygod then ent:arrest(nil, self.Owner) DarkRP.notify(ent, 0, 20, DarkRP.getPhrase("youre_arrested_by", self.Owner:Nick())) if self.Owner.SteamName then DarkRP.log(self.Owner:Nick().." ("..self.Owner:SteamID()..") arrested "..ent:Nick(), Color(0, 255, 255)) end else DarkRP.notify(self.Owner, 1, 4, DarkRP.getPhrase("cant_arrest_spawning_players")) end end end end function SWEP:Reload() self:SetHoldType("melee") timer.Destroy("rp_stunstick_threaten") timer.Create("rp_stunstick_threaten", 1, 1, function() if not IsValid(self) then return end self:SetHoldType("normal") end) if not SERVER then return end if self.LastReload and self.LastReload > CurTime() - 0.1 then self.LastReload = CurTime() return end self.LastReload = CurTime() self.Owner:EmitSound("weapons/stunstick/spark"..math.random(1,3)..".wav") end [/CODE]
The 'attackch' sequence doesn't exist on that stunstick, only on the darkrp batons.
Sorry, you need to Log In to post a reply to this thread.