Files
2026-03-15 14:54:49 +03:00

104 lines
2.9 KiB
Lua

local isnil = fn.Curry(fn.Eq, 2)(nil)
local validFood = {"name", model = isstring, "energy", "price", onEaten = fn.FOr{isnil, isfunction}}
FoodItems = {}
function DarkRP.createFood(name, mdl, energy, price)
local foodItem = istable(mdl) and mdl or {model = mdl, energy = energy, price = price}
foodItem.name = name
if DarkRP.DARKRP_LOADING and DarkRP.disabledDefaults["food"][name] then return end
for k, v in pairs(validFood) do
local isFunction = isfunction(v)
if (isFunction and not v(foodItem[k])) or (not isFunction and foodItem[v] == nil) then
ErrorNoHalt("Corrupt food \"" .. (name or "") .. "\": element " .. (isFunction and k or v) .. " is corrupt.\n")
end
end
table.insert(FoodItems, foodItem)
end
AddFoodItem = DarkRP.createFood
DarkRP.getFoodItems = fp{fn.Id, FoodItems}
function DarkRP.removeFoodItem(i)
local food = FoodItems[i]
FoodItems[i] = nil
hook.Run("onFoodItemRemoved", i, food)
end
local plyMeta = FindMetaTable("Player")
plyMeta.isCook = fn.Compose{fn.Curry(fn.GetValue, 2)("cook"), plyMeta.getJobTable}
--[[
Valid members:
model = string, -- the model of the food item
energy = int, -- how much energy it restores
price = int, -- the price of the food
requiresCook = boolean, -- whether only cooks can buy this food
customCheck = function(ply) return boolean end, -- customCheck on purchase function
customCheckMessage = string -- message to people who cannot buy it because of the customCheck
]]
DarkRP.DARKRP_LOADING = true
DarkRP.registerDarkRPVar("Energy", net.WriteFloat, net.ReadFloat)
DarkRP.createFood("Banana", {
model = "models/props/cs_italy/bananna.mdl",
energy = 10,
price = 10
})
DarkRP.createFood("Bunch of bananas", {
model = "models/props/cs_italy/bananna_bunch.mdl",
energy = 20,
price = 20
})
DarkRP.createFood("Melon", {
model = "models/props_junk/watermelon01.mdl",
energy = 20,
price = 20
})
DarkRP.createFood("Glass bottle", {
model = "models/props_junk/GlassBottle01a.mdl",
energy = 20,
price = 20
})
DarkRP.createFood("Pop can", {
model = "models/props_junk/PopCan01a.mdl",
energy = 5,
price = 5
})
DarkRP.createFood("Plastic bottle", {
model = "models/props_junk/garbage_plasticbottle003a.mdl",
energy = 15,
price = 15
})
DarkRP.createFood("Milk", {
model = "models/props_junk/garbage_milkcarton002a.mdl",
energy = 20,
price = 20
})
DarkRP.createFood("Bottle 1", {
model = "models/props_junk/garbage_glassbottle001a.mdl",
energy = 10,
price = 10
})
DarkRP.createFood("Bottle 2", {
model = "models/props_junk/garbage_glassbottle002a.mdl",
energy = 10,
price = 10
})
DarkRP.createFood("Bottle 3", {
model = "models/props_junk/garbage_glassbottle003a.mdl",
energy = 10,
price = 10
})
DarkRP.createFood("Orange", {
model = "models/props/cs_italy/orange.mdl",
energy = 20,
price = 20
})
DarkRP.DARKRP_LOADING = nil