summaryrefslogtreecommitdiff
path: root/gamemode/itemsystem/common.lua
diff options
context:
space:
mode:
Diffstat (limited to 'gamemode/itemsystem/common.lua')
-rw-r--r--gamemode/itemsystem/common.lua46
1 files changed, 46 insertions, 0 deletions
diff --git a/gamemode/itemsystem/common.lua b/gamemode/itemsystem/common.lua
new file mode 100644
index 0000000..f7d6c72
--- /dev/null
+++ b/gamemode/itemsystem/common.lua
@@ -0,0 +1,46 @@
+--This file holds a bunch of common functions that happen in items. They're seperated out here so that they're easy to change if there's a bug somewhere.
+
+--Freezes the player, creates the loading bar, and calls ondone when the timer is up.
+function startProcessGeneric(player, string, time, ondone)
+ if(player.InProcess) then
+ self.Owner:SendMessage("You can't do that much at once!", 3, Color(255, 255, 255, 255))
+ return
+ end
+ player.InProcess = true
+ player:Freeze(true)
+ player:MakeProcessBar( string, time, false )
+ timer.Create( "process", time, 1, function()
+ player:Freeze(false)
+ player.InProcess = false
+ player:StopProcessBar()
+ ondone()
+ end)
+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 = ply:GetResource( Type )
+
+ if ( ammount > res ) then
+ ammount = res
+ end
+ ply:DropResource( Type, int )
+ ply:DecResource( Type, int )
+ end
+end
+net.Receive( "gms_dropresources", function(len,pl)
+ genericDropResource(pl,net.ReadString(),net.ReadInt(GMS.NETINT_BITCOUNT))
+end)