fakerz

assbutt2

Jun 3rd, 2013
37
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.71 KB | None | 0 0
  1. if SERVER then
  2. AddCSLuaFile("shared.lua")
  3. end
  4.  
  5.  
  6. ENT.Type = "anim"
  7. ENT.Model = Model("models/Items/combine_rifle_ammo01.mdl")
  8.  
  9. ENT.Stuck = false
  10. ENT.Weaponised = false
  11.  
  12. ENT.PunchMax = 6
  13. ENT.PunchRemaining = 6
  14.  
  15.  
  16. function ENT:Initialize()
  17.  
  18.  
  19. self.Entity:SetModel("models/Items/combine_rifle_ammo01.mdl")
  20. self.Entity:PhysicsInit(SOLID_VPHYSICS)
  21. self.Entity:SetMoveType(MOVETYPE_VPHYSICS)
  22. self.Entity:SetSolid(SOLID_VPHYSICS)
  23. self.Entity:DrawShadow(false)
  24. self.Entity:SetCollisionGroup(COLLISION_GROUP_WORLD)
  25.  
  26. local phys = self.Entity:GetPhysicsObject():EnableMotion(false)
  27. self:SetColor(Color(25, 122, 21, 255))
  28.  
  29. --self:StartEffects()
  30. --self:Explosive()
  31. self.Entity:EmitSound("C4.Plant")
  32.  
  33.  
  34. end
  35.  
  36. local matTripmineLaser = Material( "sprites/bluelaser1" )
  37. local matLight = Material( "models/roller/rollermine_glow" )
  38. local colBeam = Color( 100, 100, 210, 30 )
  39. local colLaser = Color( 100, 100, 240, 30 )
  40.  
  41. function ENT:Think()
  42.  
  43.  
  44.  
  45. if not self.endpos then
  46. local t = {}
  47. t.start = self:GetPos()
  48. t.endpos = t.start + self:GetUp() * 4096
  49. t.filter = self
  50. local tr = util.TraceLine(t)
  51. self.endpos = tr.HitPos
  52. if tr.HitNonWorld then
  53.  
  54. if SERVER then
  55. local ply = self.Owner
  56. local ignore = {ply, self}
  57. if not IsValid(ply) then return end
  58. for k, v in pairs(player.GetAll()) do
  59. if v:IsActiveTraitor() or v:IsSpec() then
  60. table.insert(ignore, v)
  61. end
  62. if not table.HasValue(ignore,tr.Entity) and tr.Entity:IsPlayer() then
  63. self:Explosive()
  64. self:Remove()
  65. end
  66.  
  67.  
  68. end
  69. end
  70. end
  71. end
  72.  
  73.  
  74. end
  75.  
  76.  
  77.  
  78.  
  79. function ENT:Draw()
  80.  
  81.  
  82.  
  83. if not self.endpos then
  84. return
  85. end
  86.  
  87. render.SetMaterial( matTripmineLaser )
  88.  
  89. // offset the texture coords so it looks like it is scrolling
  90. local TexOffset = 6
  91.  
  92. // Make the texture coords relative to distance so they are always a nice size
  93. local Distance = self.endpos:Distance( self:GetPos() )
  94.  
  95. // Draw the beam
  96. render.DrawBeam( self.endpos, self.Entity:GetPos(), 6, TexOffset, TexOffset+Distance, colBeam )
  97. render.DrawBeam( self.endpos, self.Entity:GetPos(), 3, TexOffset, TexOffset+Distance, colBeam )
  98.  
  99. // Draw a quad at the hitpoint to fake the laser hitting it
  100. render.SetMaterial( matLight )
  101. local Size = math.Rand( 3, 5 )
  102. local Normal = (self.Entity:GetPos()-self.endpos):GetNormal() * 0.1
  103. render.DrawQuadEasy( self.endpos + Normal, Normal, Size, Size, colLaser, 0 )
  104. self.Entity:DrawModel()
  105.  
  106. end
  107.  
  108.  
  109.  
  110. function ENT:StartEffects()
  111. local sprite = ents.Create( "env_sprite" )
  112. if IsValid(sprite) then
  113. -- local angpos = self:GetAttachment(ball)
  114. -- sometimes attachments don't work (Lua-side) on dedicated servers,
  115. -- so have to fudge it
  116. local ang = self:GetAngles()
  117. local pos = self:GetPos() + self:GetAngles():Up() * 6
  118. sprite:SetPos(pos)
  119. sprite:SetAngles(ang)
  120. sprite:SetParent(self.Entity)
  121. sprite:SetKeyValue("spawnflags", "1")
  122. sprite:SetKeyValue("scale", "0.25")
  123. sprite:SetKeyValue("rendermode", "5")
  124. sprite:SetKeyValue("renderfx", "7")
  125.  
  126. sprite:Spawn()
  127. sprite:Activate()
  128.  
  129. self.BallSprite = sprite
  130. end
  131.  
  132. local effect = EffectData()
  133. effect:SetStart(self:GetPos())
  134. effect:SetOrigin(self:GetPos())
  135. effect:SetNormal(self:GetAngles():Up())
  136. util.Effect("ManhackSparks", effect, true, true)
  137.  
  138. if SERVER then
  139. local ball = self:LookupAttachment("attach_ball")
  140. util.SpriteTrail(self.Entity, ball, Color(250, 250, 250), false, 30, 0, 1, 0.07, "trails/physbeam.vmt")
  141. end
  142. end
  143.  
  144.  
  145. function ENT:Explosive()
  146. local phexp = ents.Create("env_explosion")
  147. if IsValid(phexp) then
  148. phexp:SetPos(self:GetPos())
  149. phexp:SetKeyValue("magnitude", 100)
  150. phexp:SetKeyValue("radius", 128)
  151. phexp:SetKeyValue("spawnflags", 1 + 2)
  152. phexp:Spawn()
  153. phexp:Fire("Explode", "", 0)
  154. end
  155. local phyexp = ents.Create("env_physexplosion")
  156.  
  157. phyexp:SetPos(self:GetPos())
  158. phyexp:SetKeyValue("magnitude", 100)
  159. phyexp:SetKeyValue("radius", 128)
  160. phyexp:SetKeyValue("spawnflags", 1 + 2)
  161. phyexp:Spawn()
  162. phyexp:Fire("Explode", "", 0)
  163.  
  164. local norm = self:GetAngles():Up() * -1
  165.  
  166. util.BlastDamage(self, self:GetOwner(), self:GetPos(), 200, 50)
  167.  
  168. local effect = EffectData()
  169. effect:SetStart(self:GetPos())
  170. effect:SetOrigin(self:GetPos())
  171. effect:SetNormal(norm * -1)
  172. effect:SetRadius(16)
  173. effect:SetScale(1)
  174. util.Effect("ManhackSparks", effect, true, true)
  175. end
Advertisement
Add Comment
Please, Sign In to add comment