1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
|
--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
function genericMakeDroppable(tbl)
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 dropx = function(player)
if(SERVER) then return end
local frame = vgui.Create( "DFrame" )
frame:SetSize( 400, 200 )
frame:Center()
frame:MakePopup()
local TextEntry = vgui.Create( "DTextEntry", frame ) -- create the form as a child of frame
TextEntry:SetPos( 25, 50 )
TextEntry:SetSize( 75, 85 )
TextEntry:SetText( "Sample String" )
TextEntry.OnEnter = function( self )
genericDropResource(player,tbl.Name,self:GetValue())
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 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)
print("resourcename:" .. resourcename)
print("resourcenum:" .. resourcenum)
genericDropResource(pl,resourcename,resourcenum)
end)
|