Advertisement
Guest User

init.lua

a guest
Jan 24th, 2018
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 13.14 KB | None | 0 0
  1. AddCSLuaFile("cl_init.lua")
  2. AddCSLuaFile("shared.lua")
  3. include('shared.lua')
  4.  
  5. function ENT:SpawnFunction(ply, tr)
  6.     if (!tr.Hit) then return end
  7.     local SpawnPos = tr.HitPos + tr.HitNormal * 20
  8.     local ent = ents.Create("drugfactory")
  9.     ent:SetPos(SpawnPos)
  10.     ent:Spawn()
  11.     ent:Activate()
  12.     return ent
  13. end
  14.  
  15. util.AddNetworkString("building")
  16. function ENT:Initialize()
  17.     local pl = self.Owner
  18.     if (IsValid(pl)) then
  19.         self.Entity:SetModel("models/props_c17/furniturestove001a.mdl")
  20.         self.Entity:PhysicsInit(SOLID_VPHYSICS)
  21.         self.Entity:SetMoveType(MOVETYPE_VPHYSICS)
  22.         self.Entity:SetSolid(SOLID_VPHYSICS)
  23.         self.Entity:SetUseType(SIMPLE_USE)
  24.         local phys = self.Entity:GetPhysicsObject()
  25.         if(phys:IsValid()) then
  26.             phys:Wake()
  27.         end
  28.         self.Entity:SetNWBool("sparking",false)
  29.         self.Entity:SetNWInt("damage",250)
  30.         self.Entity:SetNWInt("maxhealth",250)
  31.         self.Entity:SetNWInt("upgrade", 0)
  32.         pl:SetNWInt("max" .. self:GetClass(),pl:GetNWInt("max" .. self:GetClass()) + 1)
  33.         net.Start("building")
  34.         net.WriteString(self.Entity:EntIndex())
  35.         net.Send(pl)
  36.         self.LastUsed = CurTime()
  37.         self.Booze = 0
  38.         self.Drugs = 0
  39.         self.RandomDrugs = 0
  40.         self.SOffense = 0
  41.         self.SDefense = 0
  42.         self.SWeapmod = 0
  43.         self.Uber = 0
  44.         self.Entity:SetNWInt("power",0)
  45.         self.Refmode = 0
  46.         self.Payout = 600
  47.         hook.Add("PlayerDisconnected",tostring(self.Entity) .. "playerdisconnect", function(ply)
  48.             if (ply == self.Owner) then
  49.                 timer.Create(tostring(self.Entity) .. "disconnected",300,1,function()
  50.                     if (IsValid(self)) then
  51.                         if (!IsValid(self.Owner)) then
  52.                             self:Remove()
  53.                         end
  54.                     end
  55.                 end)
  56.             end
  57.         end)
  58.        
  59.         hook.Add("PlayerInitialSpawn",tostring(self.Entity) .. "playerspawn", function(ply)
  60.             timer.Create(tostring(self.Entity) .. "spawn",3,1,function()
  61.                 local entity = self.Entity
  62.                 if (IsValid(entity)) then
  63.                     local steamid = entity.OwnerID
  64.                     if (IsValid(ply)) then
  65.                         if (ply:SteamID() == steamid) then
  66.                             entity.Owner = ply
  67.                             net.Start("building")
  68.                             net.WriteString(self.Entity:EntIndex())
  69.                             net.Send(ply)
  70.                             ply:SetNWInt("max" .. self:GetClass(),ply:GetNWInt("max" .. self:GetClass()) + 1)
  71.                         end
  72.                     end
  73.                 end
  74.             end)
  75.         end)
  76.     else
  77.         self.Entity:Remove()
  78.     end
  79. end
  80.  
  81. util.AddNetworkString("drugfactorygui")
  82. function ENT:Use(activator,caller)
  83.     local ply = self.Owner
  84.     if (IsValid(ply) && IsValid(activator)) then
  85.         if self.LastUsed > CurTime() then
  86.             self.LastUsed = CurTime() + 0.3
  87.             return
  88.         end
  89.         self.LastUsed = CurTime() + 0.3
  90.         net.Start("drugfactorygui")
  91.         net.WriteString(tostring(self.Entity:GetNWInt("upgrade")))
  92.         net.WriteString(tostring(self.Entity:EntIndex()))
  93.         net.WriteString(tostring(self.Booze))
  94.         net.WriteString(tostring(self.Drugs))
  95.         net.WriteString(tostring(self.RandomDrugs))
  96.         net.WriteString(tostring(self.SDefense))
  97.         net.WriteString(tostring(self.SOffense))
  98.         net.WriteString(tostring(self.SWeapmod))
  99.         net.WriteString(tostring(self.Uber))
  100.         net.WriteString(tostring(self.Refmode))
  101.         net.Send(activator)
  102.     end
  103. end
  104.  
  105. function ENT:Think()
  106.    
  107. end
  108.  
  109. function ENT:CalcBooze(gun)
  110.     if (self.Booze + 1 >= self.MaxBooze) then
  111.         self.Booze = 0
  112.         self.Entity:CalcDrug(gun)
  113.     else
  114.         self.Booze = self.Booze + 1
  115.         if (IsValid(gun)) then
  116.             gun:ResetTime()
  117.             gun:Remove()
  118.         end
  119.     end
  120. end
  121.  
  122. function ENT:CalcDrug(gun)
  123.     if (self.Drugs + 1 > self.MaxDrug) then
  124.         self.Drugs = 0
  125.         self.Entity:CalcRandom(gun)
  126.     else
  127.         self.Drugs = self.Drugs + 1
  128.         if (IsValid(gun)) then
  129.             gun:ResetTime()
  130.             gun:Remove()
  131.         end
  132.     end
  133. end
  134.  
  135. function ENT:CalcRandom(gun)
  136.     if (self.RandomDrugs + 1 > self.MaxRandom) then
  137.         self.RandomDrugs = 0
  138.         self.Entity:CalcSuper(gun,0)
  139.     else
  140.         self.RandomDrugs = self.RandomDrugs + 1
  141.         if (IsValid(gun)) then
  142.             gun:ResetTime()
  143.             gun:Remove()
  144.         end
  145.     end
  146. end
  147.  
  148. function ENT:CalcSuper(gun,type)
  149.     local ply = self.Owner
  150.     if (IsValid(ply)) then
  151.         if (type == 0) then
  152.             if self.Refmode == 0 then
  153.                 Notify(ply,6,3,"Gained $" .. AddComma(10000) .. " from refining drugs")
  154.                 ply:AddMoney(10000)
  155.             elseif self.Refmode == 1 then
  156.                 if (self.SOffense + 1 > self.MaxSOffense) then
  157.                     Notify(ply,1,3,"Drug Refinery Superdrug Offense overloaded!")
  158.                     if (IsValid(gun)) then
  159.                         gun:ResetTime()
  160.                         gun:Remove()
  161.                     end
  162.                     local drug = ents.Create("item_superdrugoffense")
  163.                     drug:SetPos(self.Entity:GetPos()+Vector(50,0,50))
  164.                     drug:Spawn()
  165.                 else
  166.                     self.SOffense = self.SOffense + 1
  167.                     if (IsValid(gun)) then
  168.                         gun:ResetTime()
  169.                         gun:Remove()
  170.                     end
  171.                 end
  172.             elseif self.Refmode == 2 then
  173.                 if (self.SDefense + 1 > self.MaxSDefense) then
  174.                     Notify(ply,1,3,"Drug Refinery Superdrug Defense overloaded!")
  175.                     if (IsValid(gun)) then
  176.                         gun:ResetTime()
  177.                         gun:Remove()
  178.                     end
  179.                     local drug = ents.Create("item_superdrugdefense")
  180.                     drug:SetPos(self.Entity:GetPos()+Vector(50,0,50))
  181.                     drug:Spawn()
  182.                 else
  183.                     self.SDefense = self.SDefense + 1
  184.                     if (IsValid(gun)) then
  185.                         gun:ResetTime()
  186.                         gun:Remove()
  187.                     end
  188.                 end
  189.             elseif self.Refmode == 3 then
  190.                 if (self.SWeapmod + 1 > self.MaxSWeapmod) then
  191.                     Notify(ply,1,3,"Drug Refinery Superdrug Weapon Mod overloaded!")
  192.                     if (IsValid(gun)) then
  193.                         gun:ResetTime()
  194.                         gun:Remove()
  195.                     end
  196.                     local drug = ents.Create("item_superdrugweapmod")
  197.                     drug:SetPos(self.Entity:GetPos()+Vector(50,0,50))
  198.                     drug:Spawn()
  199.                 else
  200.                     self.SWeapmod = self.SWeapmod + 1
  201.                     if (IsValid(gun)) then
  202.                         gun:ResetTime()
  203.                         gun:Remove()
  204.                     end
  205.                 end
  206.             end
  207.         else
  208.             if (type == 1) then
  209.                 if (self.SOffense + 1 > self.MaxSOffense) then
  210.                     Notify(ply,1,3,"Drug Refinery Superdrug Offense overloaded!")
  211.                     if (IsValid(gun)) then
  212.                         gun:ResetTime()
  213.                         gun:Remove()
  214.                     end
  215.                     local drug = ents.Create("item_superdrugoffense")
  216.                     drug:SetPos(self.Entity:GetPos()+Vector(50,0,50))
  217.                     drug:Spawn()
  218.                 else
  219.                     self.SOffense = self.SOffense + 1
  220.                     if (IsValid(gun)) then
  221.                         gun:ResetTime()
  222.                         gun:Remove()
  223.                     end
  224.                 end
  225.             elseif (type == 2) then
  226.                 if (self.SDefense + 1 > self.MaxSDefense) then
  227.                     Notify(ply,1,3,"Drug Refinery Superdrug Defense overloaded!")
  228.                     if (IsValid(gun)) then
  229.                         gun:ResetTime()
  230.                         gun:Remove()
  231.                     end
  232.                     local drug = ents.Create("item_superdrugdefense")
  233.                     drug:SetPos(self.Entity:GetPos()+Vector(50,0,50))
  234.                     drug:Spawn()
  235.                 else
  236.                     self.SDefense = self.SDefense + 1
  237.                     if (IsValid(gun)) then
  238.                         gun:ResetTime()
  239.                         gun:Remove()
  240.                     end
  241.                 end
  242.             elseif (type == 3) then
  243.                 if (self.SWeapmod + 1 > self.MaxSWeapmod) then
  244.                     Notify(ply,1,3,"Drug Refinery Superdrug Weapon Mod overloaded!")
  245.                     if (IsValid(gun)) then
  246.                         gun:ResetTime()
  247.                         gun:Remove()
  248.                     end
  249.                     local drug = ents.Create("item_superdrugweapmod")
  250.                     drug:SetPos(self.Entity:GetPos()+Vector(50,0,50))
  251.                     drug:Spawn()
  252.                 else
  253.                     self.SWeapmod = self.SWeapmod + 1
  254.                     if (IsValid(gun)) then
  255.                         gun:ResetTime()
  256.                         gun:Remove()
  257.                     end
  258.                 end
  259.             else
  260.                 gun:ResetTime()
  261.                 gun:Remove()
  262.             end
  263.         end
  264.     end
  265. end
  266.  
  267. function ENT:CalcUber(gun)
  268.     if (self.Uber + 1 > self.MaxUber) then
  269.         Notify(ply,1,3,"Drug Refinery Uberdrug is at limit!")
  270.         if (!IsValid(gun)) then
  271.             local drug = ents.Create("item_uberdrug")
  272.             drug:SetPos(self.Entity:GetPos()+Vector((i*10)-10,10,50))
  273.             drug:Spawn()
  274.         else
  275.             local x,y = gun:GetPos()
  276.             gun:SetPos(x+10,y+10)
  277.         end
  278.         self.Entity:EmitSound("ambient/alarms/klaxon1.wav")
  279.     else
  280.         self.Uber = self.Uber + 1
  281.         if (IsValid(gun)) then
  282.             gun:ResetTime()
  283.             gun:Remove()
  284.         end
  285.     end
  286. end
  287.  
  288. function ENT:EjectSuperDrugs()
  289.     if (self.SOffense > 0) then
  290.         for i=1,self.SOffense,1 do
  291.             local drug = ents.Create("item_superdrugoffense")
  292.             drug:SetPos(self.Entity:GetPos()+Vector((i*10)-10,10,50))
  293.             drug:Spawn()
  294.         end
  295.         self.SOffense = 0
  296.     end
  297.     if (self.SDefense > 0) then
  298.         for i=1,self.SDefense,1 do
  299.             local drug = ents.Create("item_superdrugdefense")
  300.             drug:SetPos(self.Entity:GetPos()+Vector((i*10)-10,0,50))
  301.             drug:Spawn()
  302.         end
  303.         self.SDefense = 0
  304.     end
  305.     if (self.SWeapmod > 0) then
  306.         for i=1,self.SWeapmod,1 do
  307.             local drug = ents.Create("item_superdrugweapmod")
  308.             drug:SetPos(self.Entity:GetPos()+Vector((i*10)-10,-10,50))
  309.             drug:Spawn()
  310.         end
  311.         self.SWeapmod = 0
  312.     end
  313. end
  314.  
  315. function ENT:EjectUberDrug()
  316.     if (self.Uber > 0) then
  317.         for i=1,self.Uber,1 do
  318.             local drug = ents.Create("item_uberdrug")
  319.             drug:SetPos(self.Entity:GetPos()+Vector((i*10)-10,10,50))
  320.             drug:Spawn()
  321.         end
  322.         self.Uber = 0
  323.     end
  324. end
  325.  
  326. function ENT:DropSuperUberDrug()
  327.     local drug = ents.Create("item_superuberdrug")
  328.     drug:SetPos(self.Entity:GetPos()+Vector(0,0,50))
  329.     drug:Spawn()
  330. end
  331.  
  332. util.AddNetworkString("updatedrugs")
  333. function ENT:Touch(gun)
  334.     if self.Entity:IsPowered() then
  335.         local upgrade = self.Entity:GetNWInt("upgrade")
  336.        
  337.         local boozeamt = {}
  338.         boozeamt[0] = 50
  339.         boozeamt[1] = 25
  340.         boozeamt[2] = 15
  341.         boozeamt[3] = 10
  342.        
  343.         local drugamt = {}
  344.         drugamt[0] = 100
  345.         drugamt[1] = 75
  346.         drugamt[2] = 50
  347.         drugamt[3] = 25
  348.        
  349.         self.MaxBooze = boozeamt[upgrade]
  350.         self.MaxDrug = drugamt[upgrade]
  351.         self.MaxRandom = 10
  352.         self.MaxSOffense = 3
  353.         self.MaxSDefense = 3
  354.         self.MaxSWeapmod = 3
  355.         self.MaxUber = 3
  356.        
  357.         if (gun:GetClass() == "item_booze" || gun:GetClass() == "item_drug" || gun:GetClass() == "item_random" || gun:GetClass() == "item_superdrugoffense" || gun:GetClass() == "item_superdrugdefense" || gun:GetClass() == "item_superdrugweapmod" || gun:GetClass() == "item_uberdrug") then
  358.             net.Start("updatedrugs")
  359.             net.WriteString(tostring(self.Entity:EntIndex()))
  360.             net.WriteString(tostring(self.Booze))
  361.             net.WriteString(tostring(self.Drugs))
  362.             net.WriteString(tostring(self.RandomDrugs))
  363.             net.WriteString(tostring(self.SOffense))
  364.             net.WriteString(tostring(self.SDefense))
  365.             net.WriteString(tostring(self.SWeapmod))
  366.             net.WriteString(tostring(self.Uber))
  367.             net.Send()
  368.         end
  369.        
  370.         if (gun:GetClass() == "item_booze" && gun:GetTime() < CurTime() - 1) then
  371.             self.Entity:CalcBooze(gun) 
  372.         elseif (gun:GetClass() == "item_drug" && gun:GetTime() < CurTime() - 1) then
  373.             self.Entity:CalcDrug(gun)  
  374.         elseif (gun:GetClass() == "item_random" && upgrade >= 1 && gun:GetTime() < CurTime() - 1) then
  375.             self.Entity:CalcRandom(gun)
  376.         end
  377.         if upgrade >= 2 then
  378.             if (gun:GetClass() == "item_superdrugoffense" && gun:GetTime() < CurTime() - 1) then
  379.                 self.Entity:CalcSuper(gun,1)
  380.             elseif (gun:GetClass() == "item_superdrugdefense" && gun:GetTime() < CurTime() - 1) then
  381.                 self.Entity:CalcSuper(gun,2)
  382.             elseif (gun:GetClass() == "item_superdrugweapmod" && gun:GetTime() < CurTime() - 1) then
  383.                 self.Entity:CalcSuper(gun,3)
  384.             end
  385.         end
  386.         if upgrade >= 3 then
  387.             if (gun:GetClass() == "item_uberdrug" && gun:GetTime() < CurTime() - 1) then
  388.                 self.Entity:CalcUber(gun)
  389.             end
  390.         end
  391.     end
  392. end
  393.  
  394. function ENT:CanRefine(mode,callingply)
  395.     local upgrade = self.Entity:GetNWInt("upgrade")
  396.     local ply = self.Owner
  397.     if (IsValid(ply)) then
  398.         if callingply != ply && mode != "eject" then
  399.             return "Only the owner of this Drug Refinery can change settings."
  400.         end
  401.         if !self.Entity:IsPowered() then
  402.             return "Low power."
  403.         end
  404.         if mode == "eject" || mode == "money" then return true end
  405.         if (mode == "offense" || mode == "defense" || mode == "weapmod") then
  406.             if upgrade >= 1 then
  407.                 return true
  408.             else
  409.                 return "This Refinery is not upgraded enough."
  410.             end
  411.         end
  412.         if mode == "uber" then
  413.             if upgrade >= 2 then
  414.                 if self.SOffense >= 3 && self.SDefense >= 3 && self.SWeapmod >= 3 then
  415.                     return true
  416.                 else
  417.                     return "Not enough Superdrugs."
  418.                 end
  419.             else
  420.                 return "This Refinery is not upgraded enough."
  421.             end
  422.         end
  423.         if mode == "suber" then
  424.             if upgrade >= 3 then
  425.                 if self.Uber >= 3 then
  426.                     return true
  427.                 else
  428.                     return "Not enough Uber drugs."
  429.                 end
  430.             else
  431.                 return "This Refinery is not upgraded enough."
  432.             end
  433.         end
  434.         return "You're doing it wrong."
  435.     end
  436. end
  437.  
  438. function ENT:SetMode(mode)
  439.     if mode == "eject" then
  440.         self.Entity:EjectSuperDrugs()
  441.         self.Entity:EjectUberDrug()
  442.     end
  443.     if mode == "money" then
  444.         self.Refmode = 0
  445.     elseif mode == "offense" then
  446.         self.Refmode = 1
  447.     elseif mode == "defense" then
  448.         self.Refmode = 2
  449.     elseif mode == "weapmod" then
  450.         self.Refmode = 3
  451.     elseif mode == "uber" then
  452.         self.Entity:CalcUber()
  453.         self.SOffense = 0
  454.         self.SDefense = 0
  455.         self.SWeapmod = 0
  456.         UberDrugExists()
  457.     elseif mode == "suber" then
  458.         self.Entity:DropSuperUberDrug()
  459.         self.Uber = 0
  460.         SuperUberDrugExists()
  461.     end
  462. end
  463.  
  464. util.AddNetworkString( "removebuilding" )
  465. function ENT:OnRemove()
  466.     timer.Destroy(tostring(self.Entity))
  467.     local ply = self.Owner
  468.     if IsValid(ply) then
  469.         net.Start("removebuilding")
  470.         net.WriteString(self.Entity:EntIndex())
  471.         net.Send(ply)
  472.         ply:SetNWInt("max" .. self:GetClass(),ply:GetNWInt("max" .. self:GetClass()) - 1)
  473.     end
  474.    
  475.     umsg.Start("remove_refinery_panel")
  476.     umsg.Short(self.Entity:EntIndex())
  477.     umsg.End()
  478.    
  479.     timer.Destroy(tostring(self.Entity) .. "disconnected")
  480.     hook.Remove("PlayerDisconnected",tostring(self.Entity) .. "playerdisconnect")
  481.     hook.Remove("PlayerInitialSpawn",tostring(self.Entity) .. "playerspawn")
  482. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement