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.