Advertisement
Guest User

Untitled

a guest
Dec 20th, 2014
150
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. AddCSLuaFile("cl_init.lua")
  2. AddCSLuaFile("shared.lua")
  3. include("shared.lua")
  4. /*_________________________________________________
  5. Configs!
  6. _________________________________________________*/
  7. MethSystemCookingTime = 10 -- How long time it takes for the meth to finish cooking [DEFAULT : 300]
  8. MethSystemHealth = 50 -- How long much the health the meth has. [DEFAULT : 50]
  9.  
  10. //OverCooking
  11. MethSystemOverCookLowSeconds = 90 -- The lowest amount of seconds there has to go by, before it can explode by over cooking. [DEFAULT : 90]
  12. MethSystemOverCookMaxSeconds = 180 -- The highest amount of seconds there has to go by before it can explode by over cooking. [DEFAULT : 180]
  13. // Amount of money it drops
  14. MethSystemMoneyDropLowAmount = 200 -- Lowest amount of money it can drop when you cooked your meth. [DEFAULT : 500]
  15. MethSystemMoneyDropMaxAmount = 500 -- Highest amount of money it can drop, when you cooked your meth. [DEFAULT : 2000]
  16. MethSystemMinRadius = 150 -- The minimum radius of the explosion of the meth. [DEFUALT : 150]
  17. MethSystemMaxRadius = 350 -- The maximum radius of the explosion of the meth. [DEFAULT : 350]
  18.  
  19. ENT.SeizeReward = 200 -- The reward police will get for destroying this meth. [DEFAULT 1000]
  20. function ENT:Initialize()
  21. self:SetModel("models/props_c17/oildrum001.mdl")
  22. self:PhysicsInit(SOLID_VPHYSICS)
  23. self:SetMaterial("models/debug/debugwhite")
  24. self:SetColor(Color(150,150,150))
  25. self:SetMoveType(MOVETYPE_VPHYSICS)
  26. self:SetSolid(SOLID_VPHYSICS)
  27. self:SetUseType(SIMPLE_USE)
  28. self.damage = MethSystemHealth
  29. self:SetMethTimer(MethSystemCookingTime)
  30.  
  31. local phys = self:GetPhysicsObject()
  32. phys:Wake()
  33. end
  34.  
  35. function ENT:OnTakeDamage(dmg)
  36.  
  37. self.damage = (self.damage) - dmg:GetDamage()
  38. if self.damage < 1 then
  39. self:Explode()
  40. end
  41. end
  42.  
  43. function ENT:StartTouch(ent)
  44. if ent:IsValid() and ent:GetClass() == "meth_stove" then
  45. self.IsCooking = true
  46. if !self.TimeOn then
  47. self:StartTimer()
  48. end
  49. end
  50. end
  51.  
  52. function ENT:OverCook()
  53. if self.IsDone and self.IsCooking then
  54. timer.Create("Explode"..tostring(self:EntIndex()),math.random(MethSystemOverCookLowSeconds,MethSystemOverCookMaxSeconds), 1, function()
  55. self:Explode()
  56. end)
  57. end
  58. end
  59.  
  60. function ENT:EndTouch(entt)
  61.  
  62. if entt:IsValid() and entt:GetClass() == "meth_stove" then
  63. self.TimeOn = false
  64. self.Cooking = false
  65. timer.Pause("countdown"..tostring(self:EntIndex()))
  66. timer.Pause("Explode"..tostring(self:EntIndex()))
  67. end
  68. end
  69.  
  70. function ENT:StartTimer()
  71. self.TimeOn = true
  72.  
  73. if self:GetMethTimer() < 1 then
  74. self.IsDone = true
  75. self:OverCook()
  76. return end
  77.  
  78. timer.Create("countdown"..tostring(self:EntIndex()), 1, 1, function()
  79. if self.IsDone then
  80. self:SetMethTimer(0)
  81. return end
  82.  
  83. self:SetMethTimer(self:GetMethTimer() - 1)
  84. self:StartTimer()
  85. end)
  86.  
  87. end
  88.  
  89. function ENT:Use(ply)
  90. local moneyrnd = math.random(MethSystemMoneyDropLowAmount,MethSystemMoneyDropMaxAmount)
  91. if self.IsDone then
  92. self:Remove()
  93.  
  94. ply:SendLua(
  95. [[
  96. chat.AddText( Color(255,0,0), "[Meth System]", Color(255,255,255), " You have sold your meth for $]] .. moneyrnd .. [[.")]])
  97.  
  98. money = ents.Create("spawned_money")
  99. money:SetPos(self:GetPos())
  100. money:Setamount(moneyrnd)
  101. money:Spawn()
  102. else
  103. ply:SendLua(
  104. [[
  105. chat.AddText( Color(255,0,0), "[Meth System]", Color(255,255,255), " The meth has not been cooked, place the meth on a stove to cook it.")]])
  106.  
  107.  
  108. end
  109. end
  110.  
  111. function ENT:Destruct()
  112. local vPoint = self:GetPos()
  113. local effectdata = EffectData()
  114. effectdata:SetStart(vPoint)
  115. effectdata:SetOrigin(vPoint)
  116. effectdata:SetScale(1000000000)
  117. util.Effect("Explosion", effectdata)
  118.  
  119. local effectdata1 = EffectData()
  120. effectdata1:SetStart(vPoint)
  121. effectdata1:SetOrigin(vPoint)
  122. effectdata1:SetScale(1000000000)
  123. util.Effect("HelicopterMegaBomb", effectdata)
  124.  
  125. local effectdata2 = EffectData()
  126. effectdata2:SetStart(self:GetPos() + self:GetAngles():Up() * 600)
  127. effectdata2:SetOrigin(self:GetPos() + self:GetAngles():Up() * 600)
  128. effectdata2:SetScale(1000000000)
  129. util.Effect("HelicopterMegaBomb", effectdata)
  130. end
  131.  
  132.  
  133. function ENT:Explode()
  134. local dist = math.random(MethSystemMinRadius, MethSystemMaxRadius) -- Explosion radius
  135. self:Destruct()
  136. for k, v in pairs(ents.FindInSphere(self:GetPos(), dist)) do
  137. if not v:IsPlayer() and not v:IsWeapon() and v:GetClass() ~= "predicted_viewmodel" then
  138. v:Ignite(math.random(15, 30), 0)
  139. elseif v:IsPlayer() then
  140. local distance = v:GetPos():Distance(self:GetPos())
  141. v:TakeDamage(distance / dist * 150, self, self)
  142. v:Ignite(math.random(8, 25), 0)
  143. end
  144. end
  145. self:Remove()
  146. end
  147.  
  148. function ENT:OnRemove()
  149. timer.Stop("countdown"..tostring(self:EntIndex()))
  150. timer.Stop("Explode"..tostring(self:EntIndex()))
  151. self:SetMethTimer(0)
  152. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement