summaryrefslogtreecommitdiff
path: root/gamemode/itemsystem/common_dropable.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/itemsystem/common_dropable.lua')
-rw-r--r--gamemode/itemsystem/common_dropable.lua73
1 files changed, 73 insertions, 0 deletions
diff --git a/gamemode/itemsystem/common_dropable.lua b/gamemode/itemsystem/common_dropable.lua
new file mode 100644
index 0000000..94513d3
--- /dev/null
+++ b/gamemode/itemsystem/common_dropable.lua
@@ -0,0 +1,73 @@
+function genericMakeDroppable(tbl)
+ if(SERVER) then return end
+ local drop1 = function(player)
+ genericDropResource(player,tbl.Name,1)
+ end
+ local dropall = function(player)
+ PrintTable(Resources)
+ print("Ammount:" .. Resources[tbl.Name])
+ genericDropResource(player,tbl.Name,Resources[tbl.Name])
+ end
+ local drophalf = function(player)
+ genericDropResource(player,tbl.Name,math.ceil(Resources[tbl.Name]/2.0))
+ end
+ local dropx = function(player)
+ if(SERVER) then return end
+ local frame = vgui.Create( "DFrame" )
+ frame:SetSize( 400, 60 )
+ frame:Center()
+ frame:MakePopup()
+
+ local TextEntry = vgui.Create( "DTextEntry", frame ) -- create the form as a child of frame
+ TextEntry:SetPos( 20, 30 )
+ TextEntry:SetSize( 360, 20 )
+ TextEntry:SetText( "Number to drop:" )
+ TextEntry.OnEnter = function( self )
+ if(tonumber(self:GetValue(),10) == nil) then return end
+ genericDropResource(player,tbl.Name,self:GetValue())
+ frame:Close()
+ end
+
+ end
+ if(tbl.Actions == nil) then
+ tbl.Actions = {}
+ end
+ if(tbl.Actions["Drop"] == nil) then
+ tbl.Actions["Drop"] = {}
+ end
+ tbl.Actions["Drop"]["Drop 1"] = drop1
+ tbl.Actions["Drop"]["Drop Half"] = drophalf
+ tbl.Actions["Drop"]["Drop all"] = dropall
+ tbl.Actions["Drop"]["Drop X"] = dropx
+end
+
+
+if(SERVER) then
+ util.AddNetworkString( "gms_dropresources" )
+end
+function genericDropResource(player, resource, ammount)
+ if(CLIENT) then
+ net.Start("gms_dropresources")
+ net.WriteString(resource)
+ net.WriteInt(ammount,GMS.NETINT_BITCOUNT)
+ net.SendToServer()
+ end
+ if(SERVER) then
+ if(player.Resources[resource] < ammount) then
+ player:SendMessage("You don't have that many to drop!", 3, Color(255, 255, 255, 255))
+ return
+ end
+ local res = player.Resources[resource]
+
+ if ( ammount > res ) then
+ ammount = res
+ end
+ player:DropResource( resource, ammount )
+ player:DecResource( resource, ammount )
+ end
+end
+net.Receive( "gms_dropresources", function(len,pl)
+ local resourcename = net.ReadString()
+ local resourcenum = net.ReadInt(GMS.NETINT_BITCOUNT)
+ genericDropResource(pl,resourcename,resourcenum)
+end)