diff options
Diffstat (limited to 'entities')
| -rw-r--r-- | entities/entities/ws_alter/init.lua | 21 | ||||
| -rw-r--r-- | entities/entities/ws_barrel/init.lua | 35 | ||||
| -rw-r--r-- | entities/entities/ws_campfire/init.lua | 17 | ||||
| -rw-r--r-- | entities/entities/ws_grave/init.lua | 21 | ||||
| -rw-r--r-- | entities/entities/ws_prop/init.lua | 22 | ||||
| -rw-r--r-- | entities/entities/ws_researchtable/init.lua | 17 |
6 files changed, 116 insertions, 17 deletions
diff --git a/entities/entities/ws_alter/init.lua b/entities/entities/ws_alter/init.lua index 3830aea..8f2ba64 100644 --- a/entities/entities/ws_alter/init.lua +++ b/entities/entities/ws_alter/init.lua @@ -9,6 +9,23 @@ local ResurrectionTable = { ["Feather"] = 10,
}
+function ENT:Serialize()
+ local data = {}
+ data["Health"] = self:Health()
+ data["Items"] = self.StoredItems
+ data["Pos"] = self:GetPos()
+ data["Ang"] = self:GetAngles()
+ return util.TableToJSON(data)
+end
+
+function ENT:Deserialize(json)
+ local data = util.JSONToTable(json)
+ self:SetHealth(data["Health"])
+ self.StoredItems = data["Items"]
+ self:SetPos(data["Pos"])
+ self:SetAngles(data["Ang"])
+end
+
function ENT:Initialize()
self:SetModel("models/props_junk/wood_crate001a.mdl")
self:PhysicsInit(SOLID_VPHYSICS)
@@ -20,9 +37,9 @@ function ENT:Initialize() phys:EnableMotion(false)
phys:Sleep()
- self:SetHealth(30)
+ if self:Health() == 0 then self:SetHealth(30) end
- self.StoredItems = {}
+ self.StoredItems = self.StoredItems or {}
end
function ENT:Think()
diff --git a/entities/entities/ws_barrel/init.lua b/entities/entities/ws_barrel/init.lua index 28d8d20..82f3a9d 100644 --- a/entities/entities/ws_barrel/init.lua +++ b/entities/entities/ws_barrel/init.lua @@ -3,20 +3,37 @@ AddCSLuaFile("shared.lua") include('shared.lua')
+function ENT:Serialize()
+ local data = {}
+ data["Health"] = self:Health()
+ data["Items"] = self.StoredItems
+ data["Pos"] = self:GetPos()
+ data["Ang"] = self:GetAngles()
+ return util.TableToJSON(data)
+end
+
+function ENT:Deserialize(json)
+ local data = util.JSONToTable(json)
+ self:SetHealth(data["Health"])
+ self.StoredItems = data["Items"]
+ self:SetPos(data["Pos"])
+ self:SetAngles(data["Ang"])
+end
+
function ENT:Initialize()
self:SetModel("models/props_c17/oildrum001.mdl")
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_NONE)
self:SetSolid(SOLID_VPHYSICS)
self:SetUseType(SIMPLE_USE)
-
+
local phys = self:GetPhysicsObject()
phys:EnableMotion(false)
phys:Sleep()
-
- self:SetHealth(30)
-
- self.StoredItems = {}
+
+ if self:Health() == 0 then self:SetHealth(30) end
+
+ self.StoredItems = self.StoredItems or {}
end
function ENT:AddItem(item,quantity)
@@ -26,7 +43,7 @@ function ENT:AddItem(item,quantity) return
end
end
-
+
table.insert(self.StoredItems,{Name = item, Quantity = quantity})
end
@@ -35,9 +52,9 @@ function ENT:TakeItem(pl,item,quantity) if (v.Name == item) then
quantity = math.min(quantity,v.Quantity)
v.Quantity = v.Quantity - quantity
-
+
pl:AddItem(item,quantity)
-
+
if (v.Quantity <= 0) then table.remove(self.StoredItems,k) end
break
end
@@ -55,6 +72,6 @@ end function ENT:OnTakeDamage(dmg)
self:SetHealth(self:Health()-dmg)
-
+
if (self:Health() <= 0) then self:Remove() end
end
diff --git a/entities/entities/ws_campfire/init.lua b/entities/entities/ws_campfire/init.lua index a57ccad..e6a3f76 100644 --- a/entities/entities/ws_campfire/init.lua +++ b/entities/entities/ws_campfire/init.lua @@ -3,6 +3,21 @@ AddCSLuaFile( "shared.lua" ) include('shared.lua')
+function ENT:Serialize()
+ local data = {}
+ data["Items"] = self.StoredItems
+ data["Pos"] = self:GetPos()
+ data["Ang"] = self:GetAngles()
+ return util.TableToJSON(data)
+end
+
+function ENT:Deserialize(json)
+ local data = util.JSONToTable(json)
+ self.StoredItems = data["Items"]
+ self:SetPos(data["Pos"])
+ self:SetAngles(data["Ang"])
+end
+
function ENT:Initialize()
self:SetModel("models/props_junk/Rock001a.mdl")
self:PhysicsInit( SOLID_VPHYSICS )
@@ -16,7 +31,7 @@ function ENT:Initialize() phys:EnableMotion(false)
phys:Sleep()
- self.StoredItems = {}
+ self.StoredItems = self.StoredItems or {}
self:Ignite(1000)
end
diff --git a/entities/entities/ws_grave/init.lua b/entities/entities/ws_grave/init.lua index 814eee7..abd9c8f 100644 --- a/entities/entities/ws_grave/init.lua +++ b/entities/entities/ws_grave/init.lua @@ -3,6 +3,23 @@ AddCSLuaFile("shared.lua") include('shared.lua')
+function ENT:Serialize()
+ local data = {}
+ data["Health"] = self:Health()
+ data["Items"] = self.StoredItems
+ data["Pos"] = self:GetPos()
+ data["Ang"] = self:GetAngles()
+ return util.TableToJSON(data)
+end
+
+function ENT:Deserialize(json)
+ local data = util.JSONToTable(json)
+ self:SetHealth(data["Health"])
+ self.StoredItems = data["Items"]
+ self:SetPos(data["Pos"])
+ self:SetAngles(data["Ang"])
+end
+
function ENT:Initialize()
self:SetModel("models/props_c17/gravestone002a.mdl")
self:PhysicsInit(SOLID_VPHYSICS)
@@ -14,9 +31,9 @@ function ENT:Initialize() phys:EnableMotion(false)
phys:Sleep()
- self:SetHealth(30)
+ if self:Health() == 0 then self:SetHealth(30) end
- self.StoredItems = {}
+ self.StoredItems = self.StoredItems or {}
end
function ENT:AddItem(item,quantity)
diff --git a/entities/entities/ws_prop/init.lua b/entities/entities/ws_prop/init.lua index 51e979f..f757148 100644 --- a/entities/entities/ws_prop/init.lua +++ b/entities/entities/ws_prop/init.lua @@ -3,6 +3,24 @@ AddCSLuaFile("shared.lua") include('shared.lua')
+function ENT:Serialize()
+ local data = {}
+ data["Health"] = self:Health()
+ data["Items"] = self.StoredItems
+ data["Pos"] = self:GetPos()
+ data["Ang"] = self:GetAngles()
+ data["HP"] = self.HP
+ return util.TableToJSON(data)
+end
+
+function ENT:Deserialize(json)
+ local data = util.JSONToTable(json)
+ self:SetHealth(data["Health"])
+ self:SetPos(data["Pos"])
+ self:SetAngles(data["Ang"])
+ self.HP = data["HP"]
+end
+
function ENT:Initialize()
self:PhysicsInit(SOLID_VPHYSICS)
self:SetMoveType(MOVETYPE_NONE)
@@ -13,9 +31,9 @@ function ENT:Initialize() phys:EnableMotion(false)
phys:Sleep()
- self:SetHealth(30)
+ if self:Health() == 0 then self:SetHealth(30) end
- self.HP = 500
+ if not self.HP then self.HP = 500 end
self.MaxHP = self.HP
end
diff --git a/entities/entities/ws_researchtable/init.lua b/entities/entities/ws_researchtable/init.lua index 1a3a07b..57d2ffb 100644 --- a/entities/entities/ws_researchtable/init.lua +++ b/entities/entities/ws_researchtable/init.lua @@ -16,6 +16,21 @@ local PossibleRecipies = { {"Vine","Hitting an Antlion hill with a Sickle"},
}
+function ENT:Serialize()
+ local data = {}
+ data["Health"] = self:Health()
+ data["Pos"] = self:GetPos()
+ data["Ang"] = self:GetAngles()
+ return util.TableToJSON(data)
+end
+
+function ENT:Deserialize(json)
+ local data = util.JSONToTable(json)
+ self:SetHealth(data["Health"])
+ self:SetPos(data["Pos"])
+ self:SetAngles(data["Ang"])
+end
+
function ENT:Initialize()
self:SetModel("models/props_junk/wood_crate002a.mdl")
self:PhysicsInit(SOLID_VPHYSICS)
@@ -29,7 +44,7 @@ function ENT:Initialize() phys:Sleep()
end
- self:SetHealth(30)
+ if self:Health() == 0 then self:SetHealth(30) end
end
function ENT:Think()
|
