--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)