Trip mine is not working?


    if SERVER then
       AddCSLuaFile( "shared.lua" )
       resource.AddFile("materials/ttt/icon_tripwire.png")
    end
     
    SWEP.HoldType                           = "slam"
     
    if CLIENT then
     
       SWEP.PrintName    = "Tripwire Mine"
       SWEP.Slot         = 6
     
       SWEP.ViewModelFlip = true
       SWEP.ViewModelFOV                    = 64
       
       SWEP.EquipMenuData = {
          type = "item_weapon",
          desc = "Mine used to keep someone out of somewhere./nUse to catch them by surprise./n"
       };
     
       SWEP.Icon = "tripmine/icon_tripwire.png"
    end
SWEP.Base = "weapon_tttbase"
         
    SWEP.ViewModel                          = "models/weapons/v_slam.mdl"   -- Weapon view model
    SWEP.WorldModel                         = "models/weapons/w_slam.mdl"   -- Weapon world model
    SWEP.FiresUnderwater = false
     
    SWEP.Primary.Sound                      = Sound("")             -- Script that calls the primary fire sound
    SWEP.Primary.Delay                      = .5                    -- This is in Rounds Per Minute
    SWEP.Primary.ClipSize                   = 1             -- Size of a clip
    SWEP.Primary.DefaultClip                = 1             -- Bullets you start with
    SWEP.Primary.Automatic                  = false         -- Automatic = true; Semi Auto = false
    SWEP.Primary.Ammo                       = "slam"
       
        SWEP.NoSights = true
     
    SWEP.AllowDrop = false
    SWEP.Kind = WEAPON_EQUIP
    SWEP.CanBuy = {ROLE_TRAITOR}
     
    function SWEP:Deploy()
            self:SendWeaponAnim( ACT_SLAM_TRIPMINE_DRAW )
            return true
    end
     
    function SWEP:SecondaryAttack()
            return false
    end    
     
    function SWEP:OnRemove()
       if CLIENT and IsValid(self.Owner) and self.Owner == LocalPlayer() and self.Owner:Alive() then
          RunConsoleCommand("lastinv")
       end
    end
     
function SWEP:PrimaryAttack()
        self:TripMineStick()
        self.Weapon:EmitSound( Sound( "Weapon_SLAM.SatchelThrow" ) )
        self.Weapon:SetNextPrimaryFire(CurTime()+(self.Primary.Delay))
end
     
function SWEP:TripMineStick()
 if SERVER then
      local ply = self.Owner
      if not IsValid(ply) then return end
 
 
      local ignore = {ply, self.Weapon}
      local spos = ply:GetShootPos()
      local epos = spos + ply:GetAimVector() * 80
      local tr = util.TraceLine({start=spos, endpos=epos, filter=ignore, mask=MASK_SOLID})
 
      if tr.HitWorld then
         local mine = ents.Create("npc_tripmine")
         if IsValid(mine) then
 
            local tr_ent = util.TraceEntity({start=spos, endpos=epos, filter=ignore, mask=MASK_SOLID}, mine)
 
            if tr_ent.HitWorld then
 
               local ang = tr_ent.HitNormal:Angle()
               ang.p = ang.p + 90
 
               mine:SetPos(tr_ent.HitPos + (tr_ent.HitNormal * 3))
               mine:SetAngles(ang)
               mine:SetOwner(ply)
               mine:Spawn()
 
                                mine.fingerprints = self.fingerprints
                                                               
                                self:SendWeaponAnim( ACT_SLAM_TRIPMINE_ATTACH )
                               
                                local holdup = self.Owner:GetViewModel():SequenceDuration()
                               
                                timer.Simple(holdup,
                                function()
                                if SERVER then
                                        self:SendWeaponAnim( ACT_SLAM_TRIPMINE_ATTACH2 )
                                end    
                                end)
                                       
                                timer.Simple(holdup + .1,
                                function()
                                        if SERVER then
                                                if self.Owner == nil then return end
                                                if self.Weapon:Clip1() == 0 && self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then
                                                self.Owner:StripWeapon(self.Gun)
                                                RunConsoleCommand("lastinv")
                                                else
                                                self:Deploy()
                                                end
                                        end
                                end)
                       
                               
                                self:Remove()
                                self.Planted = true
                               
                        end
            end
         end
      end
end
 
function SWEP:Reload()
   return false
end

So this is for the tripmine and it is in /garrysmod/gamemodes/terrortown/entities/weapons/weapon_ttt_tripmine/shared.lua

But it does not let me place it?

Give us the entity code.

There is no entity code


local mine = ents.Create("npc_tripmine")

To help: uno momento while I check it over :stuck_out_tongue:

[editline]30th June 2013[/editline]

can’t find anything but, but here is mine, slightly modified:



    if SERVER then
       AddCSLuaFile( "shared.lua" )
    end
     
    SWEP.HoldType                           = "slam"
     
    if CLIENT then
     
       SWEP.PrintName    = "Tripwire Mine"
       SWEP.Slot         = 7
     
       SWEP.ViewModelFlip = true
       SWEP.ViewModelFOV                    = 64
       
       SWEP.EquipMenuData = {
          type = "item_weapon",
          desc = [[A mine, with a red laster, placeable on walls. 
		  When the red laser is crossed by innocents or 
		  detectives, the mine explodes. Can be shot and
		  destroyed by innocents and detectives.]]
       };
     
       SWEP.Icon = "VGUI/ttt/icon_tripmine"
    end
SWEP.Base = "weapon_tttbase"
	 
    SWEP.ViewModel                          = "models/weapons/v_slam.mdl"   -- Weapon view model
    SWEP.WorldModel                         = "models/weapons/w_slam.mdl"   -- Weapon world model
    SWEP.FiresUnderwater = false
     
    SWEP.Primary.Sound                      = Sound("")             -- Script that calls the primary fire sound
    SWEP.Primary.Delay                      = .5                    -- This is in Rounds Per Minute
    SWEP.Primary.ClipSize                   = 3             -- Size of a clip
    SWEP.Primary.DefaultClip                = 3             -- Bullets you start with
    SWEP.Primary.Automatic                  = false         -- Automatic = true; Semi Auto = false
    SWEP.Primary.Ammo                       = "slam"
	SWEP.LimitedStock = true
	
	SWEP.NoSights = true
     
    SWEP.AllowDrop = false
    SWEP.Kind = WEAPON_EQUIP2
    SWEP.CanBuy = {ROLE_TRAITOR}
     
    function SWEP:Deploy()
            self:SendWeaponAnim( ACT_SLAM_TRIPMINE_DRAW )
            return true
    end
     
    function SWEP:SecondaryAttack()
            return false
    end    
     
    function SWEP:OnRemove()
       if CLIENT and IsValid(self.Owner) and self.Owner == LocalPlayer() and self.Owner:Alive() then
          RunConsoleCommand("lastinv")
       end
    end
     
function SWEP:PrimaryAttack()
	self:TripMineStick()
	self.Weapon:EmitSound( Sound( "Weapon_SLAM.SatchelThrow" ) )
	self.Weapon:SetNextPrimaryFire(CurTime()+(self.Primary.Delay))
end
     
function SWEP:TripMineStick()
 if SERVER then
      local ply = self.Owner
      if not IsValid(ply) then return end
	  local ignore = {ply, self.Weapon}
      local spos = ply:GetShootPos()
      local epos = spos + ply:GetAimVector() * 80
      local tr = util.TraceLine({start=spos, endpos=epos, filter=ignore, mask=MASK_SOLID})
 
      if tr.HitWorld then
         local mine = ents.Create("npc_tripmine")
         if IsValid(mine) then
 
            local tr_ent = util.TraceEntity({start=spos, endpos=epos, filter=ignore, mask=MASK_SOLID}, mine)
 
            if tr_ent.HitWorld then
 
               local ang = tr_ent.HitNormal:Angle()
               ang.p = ang.p + 90
 
               mine:SetPos(tr_ent.HitPos + (tr_ent.HitNormal * 3))
               mine:SetAngles(ang)
               mine:SetOwner(ply)
               mine:Spawn()
 
                                mine.fingerprints = self.fingerprints
								
                                self:SendWeaponAnim( ACT_SLAM_TRIPMINE_ATTACH )
                               
                                local holdup = self.Owner:GetViewModel():SequenceDuration()
                               
                                timer.Simple(holdup,
                                function()
                                if SERVER then
                                        self:SendWeaponAnim( ACT_SLAM_TRIPMINE_ATTACH2 )
                                end    
                                end)
                                       
                                timer.Simple(holdup + .1,
                                function()
                                        if SERVER then
                                                if self.Owner == nil then return end
                                                if self.Weapon:Clip1() == 0 && self.Owner:GetAmmoCount( self.Weapon:GetPrimaryAmmoType() ) == 0 then
                                                --self.Owner:StripWeapon(self.Gun)
                                                --RunConsoleCommand("lastinv")
												self:Remove()
                                                else
                                                self:Deploy()
                                                end
                                        end
                                end)
                       

                               --self:Remove()
                                self.Planted = true
								
	self:TakePrimaryAmmo( 1 )
                               
                        end
            end
         end
      end
end

function SWEP:Reload()
   return false
end


Tested above code on my server, seems to be working 100%.

woah wait so it just creates the HL2 SLAM with a laser?

Yes. I’m going to eventually code one that uses a custom entity because the filter sucks.

Wait so how the hell are you going to make it only detect innocent and detectives and not traitors?

In any case, Swiftone’s post should be of note because it might mean that something else is fucking up your addon. Do you have any large, overbearing addons that like to interfere with others?

If currently doesn’t and that’s the problem.
OP if you could post whether it worked or not/“solved” it would be nice.

My ent I made for the tripmines. It’s kinda buggy and I haven’t gotten around to fixing it but it does check for roles and it can be destroyed. The beam can also be blocked by objects. The bugs are that it doesn’t always pick up when someone passes through it, kind of 50/50 chance there. The beam also vanishes when the ent goes off your screen.

This is heavily WIP and it’s just slapped together codes from different entities. Hope you get some use/ideas out of how to make it right.


	

    if SERVER then
       AddCSLuaFile("shared.lua")
    end
     
     
    ENT.Type = "anim"
    ENT.Model = Model("models/Items/combine_rifle_ammo01.mdl")
     
    ENT.Stuck = false
    ENT.Weaponised = false
     
    ENT.PunchMax = 6
    ENT.PunchRemaining = 6
     
     
    function ENT:Initialize()
     
           
            self.Entity:SetModel("models/Items/combine_rifle_ammo01.mdl")
            self.Entity:PhysicsInit(SOLID_VPHYSICS)
            self.Entity:SetMoveType(MOVETYPE_VPHYSICS)
            self.Entity:SetSolid(SOLID_VPHYSICS)
            self.Entity:DrawShadow(false)
            self.Entity:SetCollisionGroup(COLLISION_GROUP_WORLD)
           
            local phys = self.Entity:GetPhysicsObject():EnableMotion(false)
            self:SetColor(Color(25, 122, 21, 255))
           
            --self:StartEffects()
            --self:Explosive()
            self.Entity:EmitSound("C4.Plant")
           
         
    end
     
    local matTripmineLaser          = Material( "sprites/bluelaser1" )
    local matLight                          = Material( "models/roller/rollermine_glow" )
    local colBeam                           = Color( 100, 100, 210, 30 )
    local colLaser                          = Color( 100, 100, 240, 30 )
     
    function ENT:Think()
     
           
           
            if not self.endpos then
                    local t = {}
                    t.start = self:GetPos()
                    t.endpos = t.start + self:GetUp() * 4096
                    t.filter = self
                    local tr = util.TraceLine(t)
                    self.endpos = tr.HitPos
                    if tr.HitNonWorld then
           
            if SERVER then
    local ply = self.Owner
            local ignore = {ply, self}
         if not IsValid(ply) then return end
            for k, v in pairs(player.GetAll()) do
        if v:IsActiveTraitor() or v:IsSpec() then
            table.insert(ignore, v)
             end
            if not table.HasValue(ignore,tr.Entity) and tr.Entity:IsPlayer() then
            self:Explosive()
            self:Remove()  
    end
     
       
       end
    end
           end
      end        
                     
                   
    end
     
     
     
     
    function ENT:Draw()
     
           
                   
            if not self.endpos then
                    return
            end
     
            render.SetMaterial( matTripmineLaser )
           
            // offset the texture coords so it looks like it is scrolling
            local TexOffset = 6
           
            // Make the texture coords relative to distance so they are always a nice size
            local Distance = self.endpos:Distance( self:GetPos() )
                   
            // Draw the beam
            render.DrawBeam( self.endpos, self.Entity:GetPos(), 6, TexOffset, TexOffset+Distance, colBeam )
            render.DrawBeam( self.endpos, self.Entity:GetPos(), 3, TexOffset, TexOffset+Distance, colBeam )
           
            // Draw a quad at the hitpoint to fake the laser hitting it
            render.SetMaterial( matLight )
            local Size = math.Rand( 3, 5 )
            local Normal = (self.Entity:GetPos()-self.endpos):GetNormal() * 0.1
            render.DrawQuadEasy( self.endpos + Normal, Normal, Size, Size, colLaser, 0 )
            self.Entity:DrawModel()
           
            end
           
           
     
     function ENT:StartEffects()
      local sprite = ents.Create( "env_sprite" )
       if IsValid(sprite) then
    -- local angpos = self:GetAttachment(ball)
          -- sometimes attachments don't work (Lua-side) on dedicated servers,
          -- so have to fudge it
          local ang = self:GetAngles()
          local pos = self:GetPos() + self:GetAngles():Up() * 6
          sprite:SetPos(pos)
          sprite:SetAngles(ang)
          sprite:SetParent(self.Entity)
          sprite:SetKeyValue("spawnflags", "1")
          sprite:SetKeyValue("scale", "0.25")
          sprite:SetKeyValue("rendermode", "5")
          sprite:SetKeyValue("renderfx", "7")
     
          sprite:Spawn()
          sprite:Activate()
                   
          self.BallSprite = sprite
       end
     
       local effect = EffectData()
       effect:SetStart(self:GetPos())
       effect:SetOrigin(self:GetPos())
       effect:SetNormal(self:GetAngles():Up())
       util.Effect("ManhackSparks", effect, true, true)
       
         if SERVER then
             local ball = self:LookupAttachment("attach_ball")
          util.SpriteTrail(self.Entity, ball, Color(250, 250, 250), false, 30, 0, 1, 0.07, "trails/physbeam.vmt")
       end
    end
     
     
    function ENT:Explosive()
      local phexp = ents.Create("env_explosion")
                if IsValid(phexp) then
                   phexp:SetPos(self:GetPos())
                   phexp:SetKeyValue("magnitude", 100)
                   phexp:SetKeyValue("radius", 128)
                   phexp:SetKeyValue("spawnflags", 1 + 2)
                   phexp:Spawn()
                   phexp:Fire("Explode", "", 0)
       end
            local phyexp = ents.Create("env_physexplosion")
                           
                            phyexp:SetPos(self:GetPos())
                   phyexp:SetKeyValue("magnitude", 100)
                   phyexp:SetKeyValue("radius", 128)
                   phyexp:SetKeyValue("spawnflags", 1 + 2)
                   phyexp:Spawn()
                   phyexp:Fire("Explode", "", 0)
           
                local norm = self:GetAngles():Up() * -1
     
                util.BlastDamage(self, self:GetOwner(), self:GetPos(), 200, 50)
     
                local effect = EffectData()
                effect:SetStart(self:GetPos())
                effect:SetOrigin(self:GetPos())
                effect:SetNormal(norm * -1)
                effect:SetRadius(16)
                effect:SetScale(1)
                util.Effect("ManhackSparks", effect, true, true)
    end



The only problem with that is that his system doesn’t use an entity, it spawns the default SLAM from HL2

just place this into entities and give it a name and replace the hl2 slam in the code with the said entity.

The code is for an entity you place \gamemodes errortown\entities\entities estent\shared.lua
then in your code you replace


local mine = ents.Create("npc_tripmine")

with


local mine = ents.Create("testent")

Again, this is WIP. I will at some point finish this and release it on workshop. If anyone wants to fix it and release it as their own, go for it. I’d use it.