• 1 Hit Kill Knife not working
    11 replies, posted
My 1 hit knife used to work but since the update its been acting weird. after every map change it will go back to 2 hits. I have restarted, synced fastdl, all that stoof but it still won't work [code] if SERVER then AddCSLuaFile( "shared.lua" ) end SWEP.HoldType = "knife" if CLIENT then SWEP.PrintName = "knife_name" SWEP.Slot = 6 SWEP.ViewModelFlip = false SWEP.EquipMenuData = { type = "item_weapon", desc = "knife_desc" }; SWEP.Icon = "vgui/ttt/icon_knife" end SWEP.Base = "weapon_tttbase" SWEP.UseHands = true SWEP.ViewModelFlip = false SWEP.ViewModelFOV = 54 SWEP.ViewModel = "models/weapons/cstrike/c_knife_t.mdl" SWEP.WorldModel = "models/weapons/w_knife_t.mdl" SWEP.DrawCrosshair = false SWEP.Primary.Damage = 2000 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_TRAITOR} -- only traitors can buy SWEP.LimitedStock = true -- only buyable once SWEP.WeaponID = AMMO_KNIFE SWEP.IsSilent = true -- Pull out faster than standard guns SWEP.DeploySpeed = 2 function SWEP:PrimaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) self.Weapon:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) if not IsValid(self.Owner) then return end self.Owner:LagCompensation(true) local spos = self.Owner:GetShootPos() local sdest = spos + (self.Owner:GetAimVector() * 70) local kmins = Vector(1,1,1) * -10 local kmaxs = Vector(1,1,1) * 10 local tr = util.TraceHull({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL, mins=kmins, maxs=kmaxs}) -- Hull might hit environment stuff that line does not hit if not IsValid(tr.Entity) then tr = util.TraceLine({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL}) end local hitEnt = tr.Entity -- effects if IsValid(hitEnt) then self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER ) local edata = EffectData() edata:SetStart(spos) edata:SetOrigin(tr.HitPos) edata:SetNormal(tr.Normal) edata:SetEntity(hitEnt) if hitEnt:IsPlayer() or hitEnt:GetClass() == "prop_ragdoll" then util.Effect("BloodImpact", edata) end else self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER ) end if SERVER then self.Owner:SetAnimation( PLAYER_ATTACK1 ) end if SERVER and tr.Hit and tr.HitNonWorld and IsValid(hitEnt) then if hitEnt:IsPlayer() then -- knife damage is never karma'd, so don't need to take that into -- account we do want to avoid rounding error strangeness caused by -- other damage scaling, causing a death when we don't expect one, so -- when the target's health is close to kill-point we just kill if hitEnt:Health() < (self.Primary.Damage + 10) then self:StabKill(tr, spos, sdest) else local dmg = DamageInfo() dmg:SetDamage(self.Primary.Damage) dmg:SetAttacker(self.Owner) dmg:SetInflictor(self.Weapon or self) dmg:SetDamageForce(self.Owner:GetAimVector() * 5) dmg:SetDamagePosition(self.Owner:GetPos()) dmg:SetDamageType(DMG_SLASH) hitEnt:DispatchTraceAttack(dmg, spos + (self.Owner:GetAimVector() * 3), sdest) end end end self.Owner:LagCompensation(false) end function SWEP:StabKill(tr, spos, sdest) local target = tr.Entity local dmg = DamageInfo() dmg:SetDamage(2000) dmg:SetAttacker(self.Owner) dmg:SetInflictor(self.Weapon or self) dmg:SetDamageForce(self.Owner:GetAimVector()) dmg:SetDamagePosition(self.Owner:GetPos()) dmg:SetDamageType(DMG_SLASH) -- now that we use a hull trace, our hitpos is guaranteed to be -- terrible, so try to make something of it with a separate trace and -- hope our effect_fn trace has more luck -- first a straight up line trace to see if we aimed nicely local retr = util.TraceLine({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL}) -- if that fails, just trace to worldcenter so we have SOMETHING if retr.Entity != target then local center = target:LocalToWorld(target:OBBCenter()) retr = util.TraceLine({start=spos, endpos=center, filter=self.Owner, mask=MASK_SHOT_HULL}) end -- create knife effect creation fn local bone = retr.PhysicsBone local pos = retr.HitPos local norm = tr.Normal local ang = Angle(-28,0,0) + norm:Angle() ang:RotateAroundAxis(ang:Right(), -90) pos = pos - (ang:Forward() * 7) local prints = self.fingerprints local ignore = self.Owner target.effect_fn = function(rag) -- we might find a better location local rtr = util.TraceLine({start=pos, endpos=pos + norm * 40, filter=ignore, mask=MASK_SHOT_HULL}) if IsValid(rtr.Entity) and rtr.Entity == rag then bone = rtr.PhysicsBone pos = rtr.HitPos ang = Angle(-28,0,0) + rtr.Normal:Angle() ang:RotateAroundAxis(ang:Right(), -90) pos = pos - (ang:Forward() * 10) end local knife = ents.Create("prop_physics") knife:SetModel("models/weapons/w_knife_t.mdl") knife:SetPos(pos) knife:SetCollisionGroup(COLLISION_GROUP_DEBRIS) knife:SetAngles(ang) knife.CanPickup = false knife:Spawn() local phys = knife:GetPhysicsObject() if IsValid(phys) then phys:EnableCollisions(false) end constraint.Weld(rag, knife, bone, 0, 0, true) -- need to close over knife in order to keep a valid ref to it rag:CallOnRemove("ttt_knife_cleanup", function() SafeRemoveEntity(knife) end) end -- seems the spos and sdest are purely for effects/forces? target:DispatchTraceAttack(dmg, spos + (self.Owner:GetAimVector() * 3), sdest) -- target appears to die right there, so we could theoretically get to -- the ragdoll in here... self:Remove() end function SWEP:SecondaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) self.Weapon:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER ) if SERVER then local ply = self.Owner if not IsValid(ply) then return end ply:SetAnimation( PLAYER_ATTACK1 ) local ang = ply:EyeAngles() if ang.p < 90 then ang.p = -10 + ang.p * ((90 + 10) / 90) else ang.p = 360 - ang.p ang.p = -10 + ang.p * -((90 + 10) / 90) end local vel = math.Clamp((90 - ang.p) * 5.5, 550, 800) local vfw = ang:Forward() local vrt = ang:Right() local src = ply:GetPos() + (ply:Crouching() and ply:GetViewOffsetDucked() or ply:GetViewOffset()) src = src + (vfw * 1) + (vrt * 3) local thr = vfw * vel + ply:GetVelocity() local knife_ang = Angle(-28,0,0) + ang knife_ang:RotateAroundAxis(knife_ang:Right(), -90) local knife = ents.Create("ttt_knife_proj") if not IsValid(knife) then return end knife:SetPos(src) knife:SetAngles(knife_ang) knife:Spawn() knife.Damage = self.Primary.Damage k
The shared.lua system for TTT is no longer used. Go to gamemodes/terrortown/entities/weapons and put your code in the knife lua file there.
[QUOTE=code_gs;44470158]The shared.lua system for TTT is no longer used. Go to gamemodes/terrortown/entities/weapons and put your code in the knife lua file there.[/QUOTE] Since when, what.
thanks [editline]6th April 2014[/editline] [QUOTE=rbreslow;44470178]Since when, what.[/QUOTE] since the update. hurrr.
Also make sure to change AddCSLuaFile("shared.lua") to the proper name.
I just edited the file that was there.
just go to gamemode/terrortown/entities/weapons open knife.lua(or whatever your knife .lua file is called) and change SWEP.Primary.Damage = 50 to SWEP.Primary.Damage = 100 thats all you got to do rly works on my server just fine. This is exact copy of my code that works and makes my knife do 1hit killl AddCSLuaFile() SWEP.HoldType = "knife" if CLIENT then SWEP.PrintName = "knife_name" SWEP.Slot = 6 SWEP.ViewModelFlip = false SWEP.EquipMenuData = { type = "item_weapon", desc = "knife_desc" }; SWEP.Icon = "VGUI/ttt/icon_knife" end SWEP.Base = "weapon_tttbase" SWEP.UseHands = true SWEP.ViewModelFlip = false SWEP.ViewModelFOV = 54 SWEP.ViewModel = "models/weapons/cstrike/c_knife_t.mdl" SWEP.WorldModel = "models/weapons/w_knife_t.mdl" SWEP.DrawCrosshair = false SWEP.Primary.Damage = 100 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_TRAITOR} -- only traitors can buy SWEP.LimitedStock = true -- only buyable once SWEP.WeaponID = AMMO_KNIFE SWEP.IsSilent = true -- Pull out faster than standard guns SWEP.DeploySpeed = 2 function SWEP:PrimaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) self.Weapon:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) if not IsValid(self.Owner) then return end self.Owner:LagCompensation(true) local spos = self.Owner:GetShootPos() local sdest = spos + (self.Owner:GetAimVector() * 70) local kmins = Vector(1,1,1) * -10 local kmaxs = Vector(1,1,1) * 10 local tr = util.TraceHull({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL, mins=kmins, maxs=kmaxs}) -- Hull might hit environment stuff that line does not hit if not IsValid(tr.Entity) then tr = util.TraceLine({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL}) end local hitEnt = tr.Entity -- effects if IsValid(hitEnt) then self.Weapon:SendWeaponAnim( ACT_VM_HITCENTER ) local edata = EffectData() edata:SetStart(spos) edata:SetOrigin(tr.HitPos) edata:SetNormal(tr.Normal) edata:SetEntity(hitEnt) if hitEnt:IsPlayer() or hitEnt:GetClass() == "prop_ragdoll" then util.Effect("BloodImpact", edata) end else self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER ) end if SERVER then self.Owner:SetAnimation( PLAYER_ATTACK1 ) end if SERVER and tr.Hit and tr.HitNonWorld and IsValid(hitEnt) then if hitEnt:IsPlayer() then -- knife damage is never karma'd, so don't need to take that into -- account we do want to avoid rounding error strangeness caused by -- other damage scaling, causing a death when we don't expect one, so -- when the target's health is close to kill-point we just kill if hitEnt:Health() < (self.Primary.Damage + 10) then self:StabKill(tr, spos, sdest) else local dmg = DamageInfo() dmg:SetDamage(self.Primary.Damage) dmg:SetAttacker(self.Owner) dmg:SetInflictor(self.Weapon or self) dmg:SetDamageForce(self.Owner:GetAimVector() * 5) dmg:SetDamagePosition(self.Owner:GetPos()) dmg:SetDamageType(DMG_SLASH) hitEnt:DispatchTraceAttack(dmg, spos + (self.Owner:GetAimVector() * 3), sdest) end end end self.Owner:LagCompensation(false) end function SWEP:StabKill(tr, spos, sdest) local target = tr.Entity local dmg = DamageInfo() dmg:SetDamage(2000) dmg:SetAttacker(self.Owner) dmg:SetInflictor(self.Weapon or self) dmg:SetDamageForce(self.Owner:GetAimVector()) dmg:SetDamagePosition(self.Owner:GetPos()) dmg:SetDamageType(DMG_SLASH) -- now that we use a hull trace, our hitpos is guaranteed to be -- terrible, so try to make something of it with a separate trace and -- hope our effect_fn trace has more luck -- first a straight up line trace to see if we aimed nicely local retr = util.TraceLine({start=spos, endpos=sdest, filter=self.Owner, mask=MASK_SHOT_HULL}) -- if that fails, just trace to worldcenter so we have SOMETHING if retr.Entity != target then local center = target:LocalToWorld(target:OBBCenter()) retr = util.TraceLine({start=spos, endpos=center, filter=self.Owner, mask=MASK_SHOT_HULL}) end -- create knife effect creation fn local bone = retr.PhysicsBone local pos = retr.HitPos local norm = tr.Normal local ang = Angle(-28,0,0) + norm:Angle() ang:RotateAroundAxis(ang:Right(), -90) pos = pos - (ang:Forward() * 7) local prints = self.fingerprints local ignore = self.Owner target.effect_fn = function(rag) -- we might find a better location local rtr = util.TraceLine({start=pos, endpos=pos + norm * 40, filter=ignore, mask=MASK_SHOT_HULL}) if IsValid(rtr.Entity) and rtr.Entity == rag then bone = rtr.PhysicsBone pos = rtr.HitPos ang = Angle(-28,0,0) + rtr.Normal:Angle() ang:RotateAroundAxis(ang:Right(), -90) pos = pos - (ang:Forward() * 10) end local knife = ents.Create("prop_physics") knife:SetModel("models/weapons/w_knife_t.mdl") knife:SetPos(pos) knife:SetCollisionGroup(COLLISION_GROUP_DEBRIS) knife:SetAngles(ang) knife.CanPickup = false knife:Spawn() local phys = knife:GetPhysicsObject() if IsValid(phys) then phys:EnableCollisions(false) end constraint.Weld(rag, knife, bone, 0, 0, true) -- need to close over knife in order to keep a valid ref to it rag:CallOnRemove("ttt_knife_cleanup", function() SafeRemoveEntity(knife) end) end -- seems the spos and sdest are purely for effects/forces? target:DispatchTraceAttack(dmg, spos + (self.Owner:GetAimVector() * 3), sdest) -- target appears to die right there, so we could theoretically get to -- the ragdoll in here... self:Remove() end function SWEP:SecondaryAttack() self.Weapon:SetNextPrimaryFire( CurTime() + self.Primary.Delay ) self.Weapon:SetNextSecondaryFire( CurTime() + self.Secondary.Delay ) self.Weapon:SendWeaponAnim( ACT_VM_MISSCENTER ) if SERVER then local ply = self.Owner if not IsValid(ply) then return end ply:SetAnimation( PLAYER_ATTACK1 ) local ang = ply:EyeAngles() if ang.p < 90 then ang.p = -10 + ang.p * ((90 + 10) / 90) else ang.p = 360 - ang.p ang.p = -10 + ang.p * -((90 + 10) / 90) end local vel = math.Clamp((90 - ang.p) * 5.5, 550, 800) local vfw = ang:Forward() local vrt = ang:Right() local src = ply:GetPos() + (ply:Crouching() and ply:GetViewOffsetDucked() or ply:GetViewOffset()) src = src + (vfw * 1) + (vrt * 3) local thr = vfw * vel + ply:GetVelocity() local knife_ang = Angle(-28,0,0) + ang knife_ang:RotateAroundAxis(knife_ang:Right(), -90) local knife = ents.Create("ttt_knife_proj") if not IsValid(knife) then return end knife:SetPos(src) knife:SetAngles
[QUOTE=IHateEffects;44472956]I just edited the file that was there.[/QUOTE] You need to update TTT if your shared.lua files are in a folder. Actually you shouldn't have shared.lua at all. [editline]7th April 2014[/editline] [QUOTE=snakethetroll;44478185]bunch of crap[/QUOTE] Please for the love of god, use the damn [ code] & [ /code] tags...
[QUOTE=snakethetroll;44478185]just go to gamemode/terrortown/entities/weapons open knife.lua(or whatever your knife .lua file is called) and change SWEP.Primary.Damage = 50 to SWEP.Primary.Damage = 100 thats all you got to do rly works on my server just fine. This is exact copy of my code that works and makes my knife do 1hit killl -terrible shit- [/QUOTE] Die in a hole and get banned pls <3 your re-iteration of the solution 2 posts above are not appreciated. [editline]7th April 2014[/editline] [QUOTE=_Jacob;44479427]You need to update TTT if your shared.lua files are in a folder. Actually you shouldn't have shared.lua at all. [/QUOTE] an update can only replace and create files. It won't delete old ones. So no, I don't need to update TTT, and no, I should have shared.lua files. Please stop shit bumping this thread everyone. (mildly ironic)
[QUOTE=_Jacob;44479427]Please for the love of god, use the damn [ code] & [ /code] tags...[/QUOTE] For future reference, you can display tags without parsing them by using [noparse][noparse][/noparse]. Ex. [noparse][code][/code][/noparse]
[QUOTE=code_gs;44470158]The shared.lua system for TTT is no longer used. Go to gamemodes/terrortown/entities/weapons and put your code in the knife lua file there.[/QUOTE] I've done this and changed the AddCSLuaFile("shared.lua") to AddCSLuaFile("knife.lua") and it still doesn't work?
[QUOTE=spocksgirl94;44554598]I've done this and changed the AddCSLuaFile("shared.lua") to AddCSLuaFile("knife.lua") and it still doesn't work?[/QUOTE] You need to move your code to the correct file. Also, it should just be AddCSLuaFile(). If you don't see the right file, reinstall your TTT.
Sorry, you need to Log In to post a reply to this thread.