• point_hurt
    5 replies, posted
Can someone explain to me how point_hurt works and all its uses such as: [lua] expl:SetPos(self.Entity:GetPos()); expl:SetOwner(self.Entity); expl.Team = self.Team; expl:SetKeyValue("Damage","1"); expl:SetKeyValue("DamageRadius", "300"); expl:SetKeyValue("DamageType", "0"); expl:Spawn(); expl:Activate(); expl:Fire("Hurt", "", 0); expl:Fire("kill","",0); [/lua] I'm asking because I want to make a "poison" that does 100 dmg over 5 seconds with a delay of 20 seconds and someone recommended me to do it this way.
That's not the way to do it. Look at this instead [b][url=http://wiki.garrysmod.com/?title=Entity.TakeDamage]Entity.TakeDamage [img]http://wiki.garrysmod.com/favicon.ico[/img][/url][/b]
[QUOTE=maurits150;34198782]That's not the way to do it. Look at this instead [b][url=http://wiki.garrysmod.com/?title=Entity.TakeDamage]Entity.TakeDamage [img]http://wiki.garrysmod.com/favicon.ico[/img][/url][/b][/QUOTE] THANK YOU. I've been looking for this for awhile now but couldn't find the exact function so I asked here and someone told me to use point_hurt [editline]13th January 2012[/editline] So let's see... Would this work? : [lua] function SWEP:traceent() local pos = self.Owner:GetShootPos() local ang = self.Owner:GetAimVector() local hp=self.Owner:GetEyeTrace().HitPos local tracedata = {} tracedata.start = pos tracedata.endpos = hp tracedata.filter = self.Owner local trace = util.TraceLine(tracedata) target = trace.Entity if target==nil or not target:IsValid() then target="world" elseif target:IsWorld() then target = "world" elseif target:IsValid() then if target:GetClass()=="prop_dynamic" then target="world" end end return target end function SWEP:PrimaryAttack() targ=self:traceent() print(targ) if targ~="world" then if targ:IsPlayer() then timer.Simple(20,function () if targ~=nil then if targ:IsValid() and targ~="world" then timer.Create( "poison_hurt_" .. targ:Name(), 0.5, 10, function() targ:TakeDamage( 10, self.Owner(), "Poison" ) end ) end end end) end end end [/lua]
Are we meant to test your code for you? Take it into GMod, test it yourself, and then tell US if it works :v:
Lol I was asking if I had done that correctly. But I'll try
[QUOTE=InfernalCookie;34198916] [lua] function SWEP:traceent() local pos = self.Owner:GetShootPos() local ang = self.Owner:GetAimVector() local hp=self.Owner:GetEyeTrace().HitPos local tracedata = {} tracedata.start = pos tracedata.endpos = hp tracedata.filter = self.Owner local trace = util.TraceLine(tracedata) target = trace.Entity if target==nil or not target:IsValid() then target="world" elseif target:IsWorld() then target = "world" elseif target:IsValid() then if target:GetClass()=="prop_dynamic" then target="world" end end return target end function SWEP:PrimaryAttack() targ=self:traceent() print(targ) if targ~="world" then if targ:IsPlayer() then timer.Simple(20,function () if targ~=nil then if targ:IsValid() and targ~="world" then tempowner = LocalPlayer() timer.Create( "poison_hurt_" .. targ:Name(), 0.5, 10, function() targ:TakeDamage( 10, tempowner, "Poison" ) end ) end end end) end end end [/lua][/QUOTE] So I tested it and after a few tests and code editing got.... (P.S. The quoted code is the code I'm using now. Timer Error: [weapons\weapon_ttt_poisondart\shared.lua:113] attempt to call method 'TakeDamage' (a nil value) :S Is it because it's not in the correct world (shared/client) ?
Sorry, you need to Log In to post a reply to this thread.