From 5c4ebc932d8c02522802c842d43d863d89aca162 Mon Sep 17 00:00:00 2001 From: Apickx Date: Mon, 28 Dec 2015 19:10:44 -0500 Subject: Initial commit --- gamemode/shared/system_water.lua | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100644 gamemode/shared/system_water.lua (limited to 'gamemode/shared/system_water.lua') diff --git a/gamemode/shared/system_water.lua b/gamemode/shared/system_water.lua new file mode 100644 index 0000000..f55dd53 --- /dev/null +++ b/gamemode/shared/system_water.lua @@ -0,0 +1,53 @@ + +local meta = FindMetaTable("Player") + +if (SERVER) then + util.AddNetworkString("SetWater") + + local Tick = CurTime() + + function meta:SetWater(s) + if (s > 100) then self:TakeDamage(s-100) s = 100 end + s = math.Clamp(s,0,100) + + self.Water = s + + net.Start("SetWater") + net.WriteUInt(s,8) + net.Send(self) + end + + function meta:AddWater(s) + self:SetWater(self:GetWater()+s) + end + + hook.Add("Tick","Water",function() + if (Tick < CurTime()) then + for k,v in pairs(player.GetAllHumans()) do + v:AddWater(1) + end + + Tick = CurTime()+3.5 + end + end) + + hook.Add("KeyPress","FindWater",function(pl,key) + if (key == IN_USE) then + local tr = util.TraceLine({start=pl:GetShootPos(),endpos=pl:GetShootPos()+pl:GetAimVector()*200,filter=pl}) + local A = util.PointContents( tr.HitPos ) + + if (A == CONTENTS_WATER or A == CONTENTS_WATER+CONTENTS_TRANSLUCENT ) then + pl:AddWater(-20) + end + end + end) +else + net.Receive("SetWater",function() + LocalPlayer().Water = net.ReadUInt(8) + end) +end + +function meta:GetWater() + return self.Water or 0 +end + \ No newline at end of file -- cgit v1.2.3-70-g09d2