From e879c365577b0cc51c48bace7cd5fb52cdc26eaa Mon Sep 17 00:00:00 2001 From: Alexander Pickering Date: Mon, 20 Jun 2016 15:33:39 -0400 Subject: Re-syncing last updated copy --- gamemode/structuresystem/common.lua | 233 +++++++++++++++++++++ gamemode/structuresystem/loadstructures.lua | 16 +- .../structures/aaaStructureExample.lua | 9 +- .../structuresystem/structures/copperfurnace.lua | 68 ++++++ gamemode/structuresystem/structures/factory.lua | 128 +++++++++++ .../structuresystem/structures/goldfurnace.lua | 48 +++++ .../structuresystem/structures/ironfurnace.lua | 82 ++++++++ .../structuresystem/structures/mithrilfactory.lua | 166 +++++++++++++++ .../structuresystem/structures/platinumfurnace.lua | 48 +++++ .../structuresystem/structures/silverfurnace.lua | 48 +++++ .../structuresystem/structures/steelfurnace.lua | 48 +++++ .../structuresystem/structures/stonefurnace.lua | 39 ++-- .../structuresystem/structures/techfurnace.lua | 48 +++++ 13 files changed, 959 insertions(+), 22 deletions(-) create mode 100644 gamemode/structuresystem/common.lua create mode 100644 gamemode/structuresystem/structures/copperfurnace.lua create mode 100644 gamemode/structuresystem/structures/factory.lua create mode 100644 gamemode/structuresystem/structures/goldfurnace.lua create mode 100644 gamemode/structuresystem/structures/ironfurnace.lua create mode 100644 gamemode/structuresystem/structures/mithrilfactory.lua create mode 100644 gamemode/structuresystem/structures/platinumfurnace.lua create mode 100644 gamemode/structuresystem/structures/silverfurnace.lua create mode 100644 gamemode/structuresystem/structures/steelfurnace.lua create mode 100644 gamemode/structuresystem/structures/techfurnace.lua (limited to 'gamemode/structuresystem') diff --git a/gamemode/structuresystem/common.lua b/gamemode/structuresystem/common.lua new file mode 100644 index 0000000..56cb355 --- /dev/null +++ b/gamemode/structuresystem/common.lua @@ -0,0 +1,233 @@ + + +local buts = 90 +local recipeWidth = buts*4 +local recipeHeight = buts*1.5 + +local function makeCraftingWindow(name) + local pw = 735 + local ph = 500 + local DermaPanel = vgui.Create( "DFrame" ) + DermaPanel:SetPos( 100, 100 ) + DermaPanel:SetSize( pw, ph ) + DermaPanel:SetTitle( name ) + DermaPanel:SetDraggable( true ) + DermaPanel:Center() + DermaPanel.Paint = function(self,w,h) + + draw.RoundedBox( 0, 0, 0, w, h, Color(86,86,86,200) ) + + end + DermaPanel.scroll = vgui.Create( "DScrollPanel", DermaPanel ) + DermaPanel.scroll:Dock(FILL) + DermaPanel.scroll:SetPos( 0, 25 ) + DermaPanel.Grid = vgui.Create("DGrid",DermaPanel.scroll) + DermaPanel.Grid:SetPos(0,0) + DermaPanel.Grid:SetColWide(recipeWidth+5) + DermaPanel.Grid:SetCols(pw / recipeWidth) + DermaPanel.Grid:SetRowHeight(recipeHeight+5) + return DermaPanel +end + +if SERVER then + util.AddNetworkString( "makerecipe" ) +end + +function genericMakeCrafting(tbl) + local oldusefunc = tbl.onUse + local overrideuse = function(self, ply) + oldusefunc(self,ply) + if SERVER or ply != LocalPlayer() then return end + + tbl.Recipes = {} + for k,v in pairs(tbl.genericRecipes) do + local mults = v.Mults + if v.SmeltAll == true and !table.HasValue(mults,-1) then table.insert(mults,-1) end + for i,j in pairs(mults) do + local thisrecipe = {} + thisrecipe.Req = {} + thisrecipe.Results = {} + thisrecipe.Ratio = v.Ratio + for l,m in pairs(v.Requirements) do + if v.SmeltAll and j == -1 then + thisrecipe.Req[l] = thisrecipe.Ratio[1] * m + break + end + thisrecipe.Req[l] = thisrecipe.Ratio[1] * j * m + end + for l,m in pairs(v.Results) do + thisrecipe.Results[l] = thisrecipe.Ratio[2] * j * m + end + thisrecipe.Name = v.Name .. " x" .. j + thisrecipe.Description = v.Description + thisrecipe.genericNum = k + thisrecipe.Image = v.Image + thisrecipe.haslevelsfor = v.CanCraft(ply) + thisrecipe.hasmatsfor = true + for l,m in pairs(thisrecipe.Req) do + if(Resources[l] == nil or Resources[l] < m) then + thisrecipe.hasmatsfor = false + break + end + end + thisrecipe.mult = j + + if j == -1 then + thisrecipe.Name = "All "..v.Name + thisrecipe.hasmatsfor = true + thisrecipe.SmeltAll = true + thisrecipe.MaxAmount = v.MaxAmount + if(Resources[v.Name] == nil or Resources[v.Name] < 1) then + thisrecipe.hasmatsfor = false + else + thisrecipe.mult = Resources[v.Name] + end + end + + table.insert(tbl.Recipes,0,thisrecipe) + end + end + + local DermaPanel = makeCraftingWindow(tbl.Name) + local infoPosX = 130 + local infoPosY = 0 + for k,v in pairs(tbl.Recipes) do + local recipeButton = vgui.Create("DButton") + local text = v.Name .. "\n" .. v.Description .. "\nRequires:" + for i,j in pairs(v.Req) do + text = text .. "\n" .. i .. " x" .. j + if v.SmeltAll then text = text .. "\nMax Amount - " ..v.MaxAmount end + end + recipeButton.text = text + recipeButton:SetText("") + recipeButton:SetSize(recipeWidth,recipeHeight) + + DermaPanel.infotext = vgui.Create("DLabel",recipeButton) + DermaPanel.infotext:SetText(text) + DermaPanel.infotext:SetPos(infoPosX,infoPosY) + DermaPanel.infotext:SetSize(recipeWidth-infoPosX,recipeHeight) + DermaPanel.infotext:SetFont( "TargetID" ) + DermaPanel.infotext:SetWrap(true) + + recipeButton.Paint = function() + //draw.RoundedBox( 8, 5, 5, w-10, h-10, Color( 0, 0, 0 ) ) + + local fillcolor = Color(255,255,255) + if v.haslevelsfor then + if v.hasmatsfor then + fillcolor = Color(23,180,23) + else + fillcolor = Color(200,0,0) + end + else + fillcolor = Color(200,200,0) + end + draw.RoundedBox(0,0,0,recipeWidth,recipeHeight,Color(48,48,48,255)) + draw.RoundedBox(0,15,15,110,recipeHeight-30,fillcolor) + draw.RoundedBox(8,20,20,100,recipeHeight-40,Color(98,98,98)) + + for t,y in pairs(v.Req) do + if v.SmeltAll and Resources[t] != nil and Resources[t] >= 1 then + v.hasmatsfor = true + break + end + if Resources[t] != nil and Resources[t] < y then + v.hasmatsfor = false + break + end + end + + end + recipeButton.DoClick = function(button) + DermaPanel.structname = tbl.Name + DermaPanel.recipeNum = v.genericNum + DermaPanel.recipeMult = v.mult + net.Start("makerecipe") + net.WriteString(DermaPanel.structname) + if tbl.uniquedata then net.WriteUInt(self:EntIndex(), GMS.NETINT_BITCOUNT) end + net.WriteUInt(DermaPanel.recipeNum, GMS.NETINT_BITCOUNT) + net.WriteUInt(DermaPanel.recipeMult, GMS.NETINT_BITCOUNT) + net.WriteTable(v.Ratio) + net.WriteBool(v.SmeltAll) + if v.SmeltAll then net.WriteUInt(v.MaxAmount, GMS.NETINT_BITCOUNT) end + net.SendToServer() + + end + + local img = vgui.Create("DImage", recipeButton) + img:SetPos(24, 20) + img:SetSize(buts, buts) + img:SetImage(v.Image) + + DermaPanel.Grid:AddItem(recipeButton) + DermaPanel:MakePopup() + end + end + tbl.onUse = overrideuse +end +net.Receive( "makerecipe", function(ln,ply) + local tblname = net.ReadString() + local tbl = GMS.Structures[tblname] + assert(tbl != nil,"Tried to make a recipe in a structure that dosen't exist!") + if tbl.uniquedata then + local entnum = net.ReadUInt(GMS.NETINT_BITCOUNT) + tbl = GMS.UniqueStructures[entnum] + end + local recipenum = net.ReadUInt(GMS.NETINT_BITCOUNT) + local mult = net.ReadUInt(GMS.NETINT_BITCOUNT) + local recipe = tbl.genericRecipes[recipenum] + local ratio = net.ReadTable() + local SmeltAll = net.ReadBool() + local maxAmount + if SmeltAll then maxAmount = net.ReadUInt(GMS.NETINT_BITCOUNT) end + + --Check that we have enough ingredients + for k,v in pairs(recipe.Requirements) do + + if SmeltAll and ply:GetResource(k) > 1 then + mult = ply:GetResource(k) + if ply:GetResource(k) > maxAmount then mult = maxAmount end + else + + if ply:GetResource(k) < ratio[1] * v * mult then + ply:SendMessage("You don't have enough!", 3, Color(255, 255, 255, 255)) + return + end + + end + end + + --Check that we're allowed to craft this + if not recipe.CanCraft(ply) then + ply:SendMessage("You can't craft that!", 3, Color(255, 255, 255, 255)) + return + end + + --We have enough resources! make it! + local prsName = "Crafting" + if recipe.Skill != nil then prsName = recipe.Skill end + local prcName = prsName + if prcName == "Weapon_Crafting" then prcName = "Crafting" end + startProcessGeneric(ply,prcName.." " .. recipe.Name, recipe.Time(ply,mult), function(player) + for k,v in pairs(recipe.Requirements) do + player:DecResource(k,ratio[1]*v*mult) + end + for k,v in pairs(recipe.Results) do + player:IncResource(k,ratio[2]*v*mult) + end + + + if recipe.Skill != nil then + if recipe.Skill == "Smelting" then player:IncXP( prsName, math.Clamp( math.Round( ( mult * 10 ) / player:GetSkill( prsName ) ), 1, 1000 ) ) + elseif recipe.Skill == "Weapon_Crafting" then player:IncXP( prsName, math.Clamp( math.Round( ( mult * 15 ) / player:GetSkill( prsName ) ), 1, 1000 ) ) + --elseif recipe.Skill == "Swimming" then player:IncXP( recipe.Skill, math.Clamp( math.Round( 100 / player:GetSkill( prsName ) ), 1, 1000 ) ) + else player:IncXP( prsName, math.Clamp( math.Round( 150 / player:GetSkill( prsName ) ), 1, 1000 ) ) end + end + end) + +end) + +function genericGiveRecipie(tbl, recipe) + tbl.genericRecipes = tbl.genericRecipes or {} + table.insert(tbl.genericRecipes, recipe) +end \ No newline at end of file diff --git a/gamemode/structuresystem/loadstructures.lua b/gamemode/structuresystem/loadstructures.lua index 858d976..820f055 100644 --- a/gamemode/structuresystem/loadstructures.lua +++ b/gamemode/structuresystem/loadstructures.lua @@ -8,27 +8,29 @@ function registerStructure(tbl) GMS.Structures[tbl.Name] = tbl end -concommand.Add("gms_spawnstructure",function(ply,cmd,args) - if !ply:IsDeveloper() then return end - assert(args[1] != "","Failed to find structure name") - assert(GMS.Structures[args[1]] != nil, "Structure \"" .. args[1] .. "\" does not exist!") +function SpawnStructure(structname, ply) + assert(structname != "","Failed to find structure name") + assert(GMS.Structures[structname] != nil, "Structure \"" .. structname .. "\" does not exist!") local tr = ply:GetEyeTrace() local e = ents.Create("gms_generic_structure") - local tbl = GMS.Structures[args[1]] + local tbl = GMS.Structures[structname] if tbl.uniquedata then tbl = table.Copy(tbl) GMS.UniqueStructures[e:EntIndex()] = tbl end for k,v in pairs(tbl) do - print("Setting " .. k .. " to") - print(v) e[k] = v end e:Spawn() e:SetPos(tr.HitPos) SPropProtection.PlayerMakePropOwner( ply, e ) --e:SetNWString("Owner",ply:Nick()) +end + +concommand.Add("gms_spawnstructure",function(ply,cmd,args) + if !ply:IsDeveloper() then return end + SpawnStructure(args[1],ply) end) diff --git a/gamemode/structuresystem/structures/aaaStructureExample.lua b/gamemode/structuresystem/structures/aaaStructureExample.lua index abe91ba..f8abb3c 100644 --- a/gamemode/structuresystem/structures/aaaStructureExample.lua +++ b/gamemode/structuresystem/structures/aaaStructureExample.lua @@ -6,11 +6,11 @@ STRUCT = {} STRUCT.Name = "Example Structure" --The model for this structure. -STRUCT.Model = "models/props/de_inferno/ClayOven.mdl" +STRUCT.Model = "models/props_combine/breendesk.mdl" --The initalize method. Called on both the server and the client STRUCT.onInitialize = function(self) - print("Initalize called!") + --print("Initalize called!") end --If this structure is not like every other structures of the same name (for example, if it has an internal inventory) @@ -18,5 +18,8 @@ STRUCT.uniquedata = false --Called when a player presses e on this structure, called on both the server and the client. Keep in mind that on the client side, ply may not be the local player! STRUCT.onUse = function(self,ply) - print("onUse called!") + --print("onUse called!") end + +--Don't forget to register the structure when you're done! +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/copperfurnace.lua b/gamemode/structuresystem/structures/copperfurnace.lua new file mode 100644 index 0000000..c115967 --- /dev/null +++ b/gamemode/structuresystem/structures/copperfurnace.lua @@ -0,0 +1,68 @@ +local STRUCT = {} + +STRUCT.Name = "Copper Furnace" +STRUCT.Model = "models/props/cs_militia/furnace01.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local irontimefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end + +local sulphurtimefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(10,STRUCT.skillease) + return time +end + +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Iron", + ["Description"] = "Smelt some iron ore into iron!", + ["Requirements"] = {["Iron Ore"] = 1}, + ["Results"] = {["Iron"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_iron.png", + ["CanCraft"] = checkfunc, + ["Time"] = irontimefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Sulphur", + ["Description"] = "Make some sulphur!", + ["Requirements"] = {["Stone"] = 2}, + ["Results"] = {["Sulphur"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/sulphur.png", + ["CanCraft"] = checkfunc, + ["Time"] = sulphurtimefunc, + ["Mults"] = {5,10}, +} + +genericGiveRecipie(STRUCT,genericRecipe) + + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/factory.lua b/gamemode/structuresystem/structures/factory.lua new file mode 100644 index 0000000..ae5b442 --- /dev/null +++ b/gamemode/structuresystem/structures/factory.lua @@ -0,0 +1,128 @@ +local STRUCT = {} + +STRUCT.Name = "Factory" +STRUCT.Model = "models/props_c17/factorymachine01.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end + +local noSkillTimeFunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(10,STRUCT.skillease) + return time +end + +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Iron", + ["Description"] = "Smelt some iron ore into iron!", + ["Requirements"] = {["Iron Ore"] = 1}, + ["Results"] = {["Iron"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_iron.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 200, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Copper", + ["Description"] = "Smelt some copper ore into copper!", + ["Requirements"] = {["Copper Ore"] = 1}, + ["Results"] = {["Copper"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_copper.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 200, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Resin", + ["Description"] = "Extracts the resin from the wood.", + ["Requirements"] = {["Water Bottles"] = 0.2, ["Wood"] = 3}, + ["Results"] = {["Resin"] = 0.2}, + ["Ratio"] = {1,1}, + ["Image"] = "items/resin.png", + ["CanCraft"] = checkfunc, + ["Time"] = noSkillTimeFunc, + ["Mults"] = {5,10,25}, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Plastic", + ["Description"] = "Solidifies the Resin, creating a natural plastic.", + ["Requirements"] = {["Resin"] = 1}, + ["Results"] = {["Plastic"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/plastic.png", + ["CanCraft"] = checkfunc, + ["Time"] = noSkillTimeFunc, + ["Mults"] = {10,25}, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Glass", + ["Description"] = "Heats sand to form glass.", + ["Requirements"] = {["Sand"] = 2.5}, + ["Results"] = {["Glass"] = 1}, + ["Ratio"] = {0.8,1}, + ["Image"] = "items/glass.png", + ["CanCraft"] = checkfunc, + ["Time"] = noSkillTimeFunc, + ["Mults"] = {10,25,50}, + ["Skill"] = "Weapon_Crafting", +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Sand", + ["Description"] = "Crushes stone to sand.", + ["Requirements"] = {["Stone"] = 1}, + ["Results"] = {["Sand"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/sand.png", + ["CanCraft"] = checkfunc, + ["Time"] = noSkillTimeFunc, + ["Mults"] = {10,25,50}, + ["Skill"] = "Weapon_Crafting", +} + +genericGiveRecipie(STRUCT,genericRecipe) + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/goldfurnace.lua b/gamemode/structuresystem/structures/goldfurnace.lua new file mode 100644 index 0000000..476758e --- /dev/null +++ b/gamemode/structuresystem/structures/goldfurnace.lua @@ -0,0 +1,48 @@ +local STRUCT = {} + +STRUCT.Name = "Gold Furnace" +STRUCT.Model = "models/props_industrial/oil_storage.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Steel", + ["Description"] = "Smelt some steel ore into steel!", + ["Requirements"] = {["Steel Ore"] = 1}, + ["Results"] = {["Steel"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_steel.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} + +genericGiveRecipie(STRUCT,genericRecipe) + + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/ironfurnace.lua b/gamemode/structuresystem/structures/ironfurnace.lua new file mode 100644 index 0000000..81b6988 --- /dev/null +++ b/gamemode/structuresystem/structures/ironfurnace.lua @@ -0,0 +1,82 @@ +local STRUCT = {} + +STRUCT.Name = "Iron Furnace" +STRUCT.Model = "models/props_c17/furniturefireplace001a.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end + +local noSkillTimeFunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(10,STRUCT.skillease) + return time +end + +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Tech", + ["Description"] = "Smelt some tech ore into tech!", + ["Requirements"] = {["Tech Ore"] = 1}, + ["Results"] = {["Tech"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_tech.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Charcoal", + ["Description"] = "Used in the production of charcoal.", + ["Requirements"] = {["Wood"] = 5}, + ["Results"] = {["Charcoal"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/coal.png", + ["CanCraft"] = checkfunc, + ["Time"] = noSkillTimeFunc, + ["Mults"] = {1,10}, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Glass", + ["Description"] = "Glass can be used for making bottles and lighting.", + ["Requirements"] = {["Sand"] = 2}, + ["Results"] = {["Glass"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/glass.png", + ["CanCraft"] = checkfunc, + ["Time"] = noSkillTimeFunc, + ["Mults"] = {1}, +} + +genericGiveRecipie(STRUCT,genericRecipe) + + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/mithrilfactory.lua b/gamemode/structuresystem/structures/mithrilfactory.lua new file mode 100644 index 0000000..aad02de --- /dev/null +++ b/gamemode/structuresystem/structures/mithrilfactory.lua @@ -0,0 +1,166 @@ +local STRUCT = {} + +STRUCT.Name = "Mithril Factory" +STRUCT.Model = "models/props_wasteland/laundry_washer001a.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Copper", + ["Description"] = "Smelt some copper ore into copper!", + ["Requirements"] = {["Copper Ore"] = 1}, + ["Results"] = {["Copper"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_copper.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Iron", + ["Description"] = "Smelt some iron ore into iron!", + ["Requirements"] = {["Iron Ore"] = 1}, + ["Results"] = {["Iron"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_iron.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Tech", + ["Description"] = "Smelt some tech ore into tech!", + ["Requirements"] = {["Tech Ore"] = 1}, + ["Results"] = {["Tech"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_tech.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Silver", + ["Description"] = "Smelt some silver ore into silver!", + ["Requirements"] = {["Silver Ore"] = 1}, + ["Results"] = {["Silver"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_silver.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Gold", + ["Description"] = "Smelt some gold ore into gold!", + ["Requirements"] = {["Gold Ore"] = 1}, + ["Results"] = {["Gold"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_gold.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Steel", + ["Description"] = "Smelt some steel ore into steel!", + ["Requirements"] = {["Steel Ore"] = 1}, + ["Results"] = {["Steel"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_steel.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Platinum", + ["Description"] = "Smelt some platinum ore into platinum!", + ["Requirements"] = {["Platinum Ore"] = 1}, + ["Results"] = {["Platinum"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_platinum.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +local genericRecipe = { + ["Name"] = "Pure Mithril", + ["Description"] = "Smelt some mithril ore into pure mithril!", + ["Requirements"] = {["Mithril Ore"] = 2}, + ["Results"] = {["Pure Mithril"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_puremithril.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 100, +} + +genericGiveRecipie(STRUCT,genericRecipe) + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/platinumfurnace.lua b/gamemode/structuresystem/structures/platinumfurnace.lua new file mode 100644 index 0000000..44f8e06 --- /dev/null +++ b/gamemode/structuresystem/structures/platinumfurnace.lua @@ -0,0 +1,48 @@ +local STRUCT = {} + +STRUCT.Name = "Platinum Furnace" +STRUCT.Model = "models/xeon133/slider/slider_stand_12x12x24.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Pure Mithril", + ["Description"] = "Smelt some mithril ore into pure mithril!", + ["Requirements"] = {["Mithril Ore"] = 2}, + ["Results"] = {["Pure Mithril"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_puremithril.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} + +genericGiveRecipie(STRUCT,genericRecipe) + + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/silverfurnace.lua b/gamemode/structuresystem/structures/silverfurnace.lua new file mode 100644 index 0000000..ecb774d --- /dev/null +++ b/gamemode/structuresystem/structures/silverfurnace.lua @@ -0,0 +1,48 @@ +local STRUCT = {} + +STRUCT.Name = "Silver Furnace" +STRUCT.Model = "models/props_wasteland/laundry_basket001.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Gold", + ["Description"] = "Smelt some gold ore into gold!", + ["Requirements"] = {["Gold Ore"] = 1}, + ["Results"] = {["Gold"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_gold.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} + +genericGiveRecipie(STRUCT,genericRecipe) + + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/steelfurnace.lua b/gamemode/structuresystem/structures/steelfurnace.lua new file mode 100644 index 0000000..9c40161 --- /dev/null +++ b/gamemode/structuresystem/structures/steelfurnace.lua @@ -0,0 +1,48 @@ +local STRUCT = {} + +STRUCT.Name = "Steel Furnace" +STRUCT.Model = "models/props_industrial/winch_deck.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Platinum", + ["Description"] = "Smelt some platinum ore into platinum!", + ["Requirements"] = {["Platinum Ore"] = 1}, + ["Results"] = {["Platinum"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_platinum.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} + +genericGiveRecipie(STRUCT,genericRecipe) + + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/stonefurnace.lua b/gamemode/structuresystem/structures/stonefurnace.lua index 84c0311..c5b4c4d 100644 --- a/gamemode/structuresystem/structures/stonefurnace.lua +++ b/gamemode/structuresystem/structures/stonefurnace.lua @@ -3,29 +3,44 @@ local STRUCT = {} STRUCT.Name = "Stone Furnace" STRUCT.Model = "models/props/de_inferno/ClayOven.mdl" -STRUCT.Structure = { - {"models/props/de_inferno/ClayOven.mdl",Vector(0,0,0),Angle(0,0,0)} -} - STRUCT.onInitialize = function(self) - print("Initalize called!") + --print("Initalize called!") end STRUCT.uniquedata = false STRUCT.onUse = function(self, ply) - print("I am the old use function!") + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") end -STRUCT.Recipes = {} - STRUCT.timemult = 0.5 STRUCT.skillease = 0.25 -genericMakeFurnace(STRUCT) -recipieForSmelt(STRUCT.Recipes,"Copper", "Smelt copper ore into copper", "Copper Ore", "Copper", {1,1}, {1,5,10}) +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Copper", + ["Description"] = "Smelt some copper ore into copper!", + ["Requirements"] = {["Copper Ore"] = 1}, + ["Results"] = {["Copper"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_copper.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} -print("stone furnace's recipies:") -PrintTable(STRUCT.Recipes) +genericGiveRecipie(STRUCT,genericRecipe) +genericMakeCrafting(STRUCT) registerStructure(STRUCT) diff --git a/gamemode/structuresystem/structures/techfurnace.lua b/gamemode/structuresystem/structures/techfurnace.lua new file mode 100644 index 0000000..fb93855 --- /dev/null +++ b/gamemode/structuresystem/structures/techfurnace.lua @@ -0,0 +1,48 @@ +local STRUCT = {} + +STRUCT.Name = "Tech Furnace" +STRUCT.Model = "models/props/cs_militia/dryer.mdl" + +STRUCT.onInitialize = function(self) + --print("Initalize called!") +end + +STRUCT.uniquedata = false + +STRUCT.onUse = function(self, ply) + if CLIENT and ply != LocalPlayer() then return end + --print("onUse called!") +end + +STRUCT.timemult = 0.5 +STRUCT.skillease = 0.25 + +local timefunc = function(ply, num) + local time = math.pow(num,STRUCT.timemult)*4 - math.pow(ply:GetSkill("Smelting"),STRUCT.skillease) + return time +end +local checkfunc = function(ply) + return true +end + +local genericRecipe = { + ["Name"] = "Silver", + ["Description"] = "Smelt some silver ore into silver!", + ["Requirements"] = {["Silver Ore"] = 1}, + ["Results"] = {["Silver"] = 1}, + ["Ratio"] = {1,1}, + ["Image"] = "items/ingot_silver.png", + ["CanCraft"] = checkfunc, + ["Time"] = timefunc, + ["Mults"] = {1,5,10,25}, + ["Skill"] = "Smelting", + ["SmeltAll"] = true, + ["MaxAmount"] = 50, +} + +genericGiveRecipie(STRUCT,genericRecipe) + + +genericMakeCrafting(STRUCT) + +registerStructure(STRUCT) -- cgit v1.2.3-70-g09d2