Initial commit
This commit is contained in:
103
gamemodes/darkrp/gamemode/modules/hungermod/sv_hungermod.lua
Normal file
103
gamemodes/darkrp/gamemode/modules/hungermod/sv_hungermod.lua
Normal file
@@ -0,0 +1,103 @@
|
||||
local function HMPlayerSpawn(ply)
|
||||
ply:setSelfDarkRPVar("Energy", 100)
|
||||
end
|
||||
hook.Add("PlayerSpawn", "HMPlayerSpawn", HMPlayerSpawn)
|
||||
|
||||
local function HMThink()
|
||||
for _, v in ipairs(player.GetAll()) do
|
||||
if not v:Alive() then continue end
|
||||
v:hungerUpdate()
|
||||
end
|
||||
end
|
||||
timer.Create("HMThink", 10, 0, HMThink)
|
||||
|
||||
local function HMPlayerInitialSpawn(ply)
|
||||
ply:newHungerData()
|
||||
end
|
||||
hook.Add("PlayerInitialSpawn", "HMPlayerInitialSpawn", HMPlayerInitialSpawn)
|
||||
|
||||
local function HMAFKHook(ply, afk)
|
||||
if afk then
|
||||
ply.preAFKHunger = ply:getDarkRPVar("Energy")
|
||||
else
|
||||
ply:setSelfDarkRPVar("Energy", ply.preAFKHunger or 100)
|
||||
ply.preAFKHunger = nil
|
||||
end
|
||||
end
|
||||
hook.Add("playerSetAFK", "Hungermod", HMAFKHook)
|
||||
|
||||
local function BuyFood(ply, args)
|
||||
if args == "" then
|
||||
DarkRP.notify(ply, 1, 4, DarkRP.getPhrase("invalid_x", DarkRP.getPhrase("arguments"), ""))
|
||||
return ""
|
||||
end
|
||||
|
||||
for _, v in pairs(FoodItems) do
|
||||
if string.lower(args) ~= string.lower(v.name) then continue end
|
||||
|
||||
if (v.requiresCook == nil or v.requiresCook == true) and not ply:isCook() then
|
||||
DarkRP.notify(ply, 1, 4, DarkRP.getPhrase("unable", "/buyfood", DarkRP.getPhrase("cooks_only")))
|
||||
return ""
|
||||
end
|
||||
|
||||
if v.customCheck and not v.customCheck(ply) then
|
||||
if v.customCheckMessage then
|
||||
DarkRP.notify(ply, 1, 4, v.customCheckMessage)
|
||||
end
|
||||
return ""
|
||||
end
|
||||
|
||||
local foodTable = {
|
||||
cmd = "buyfood",
|
||||
max = GAMEMODE.Config.maxfooditems
|
||||
}
|
||||
|
||||
if ply:customEntityLimitReached(foodTable) then
|
||||
DarkRP.notify(ply, 1, 4, DarkRP.getPhrase("limit", GAMEMODE.Config.chatCommandPrefix .. "buyfood"))
|
||||
|
||||
return ""
|
||||
end
|
||||
|
||||
ply:addCustomEntity(foodTable)
|
||||
|
||||
local cost = v.price
|
||||
|
||||
if not ply:canAfford(cost) then
|
||||
DarkRP.notify(ply, 1, 4, DarkRP.getPhrase("cant_afford", DarkRP.getPhrase("food")))
|
||||
return ""
|
||||
end
|
||||
ply:addMoney(-cost)
|
||||
DarkRP.notify(ply, 0, 4, DarkRP.getPhrase("you_bought", v.name, DarkRP.formatMoney(cost), ""))
|
||||
|
||||
local trace = {}
|
||||
trace.start = ply:EyePos()
|
||||
trace.endpos = trace.start + ply:GetAimVector() * 85
|
||||
trace.filter = ply
|
||||
|
||||
local tr = util.TraceLine(trace)
|
||||
|
||||
local SpawnedFood = ents.Create("spawned_food")
|
||||
SpawnedFood.DarkRPItem = foodTable
|
||||
SpawnedFood:Setowning_ent(ply)
|
||||
SpawnedFood:SetPos(tr.HitPos)
|
||||
SpawnedFood.onlyremover = true
|
||||
SpawnedFood.SID = ply.SID
|
||||
SpawnedFood:SetModel(v.model)
|
||||
|
||||
-- for backwards compatibility
|
||||
SpawnedFood.FoodName = v.name
|
||||
SpawnedFood.FoodEnergy = v.energy
|
||||
SpawnedFood.FoodPrice = v.price
|
||||
|
||||
SpawnedFood.foodItem = v
|
||||
SpawnedFood:Spawn()
|
||||
|
||||
DarkRP.placeEntity(SpawnedFood, tr, ply)
|
||||
|
||||
hook.Call("playerBoughtFood", nil, ply, v, SpawnedFood, cost)
|
||||
return ""
|
||||
end
|
||||
DarkRP.notify(ply, 1, 4, DarkRP.getPhrase("invalid_x", DarkRP.getPhrase("arguments"), ""))
|
||||
return ""
|
||||
end
|
||||
DarkRP.defineChatCommand("buyfood", BuyFood)
|
||||
Reference in New Issue
Block a user