Skip to content

Commit 384572a

Browse files
committed
More Bug Fixing
1 parent 060ffba commit 384572a

File tree

6 files changed

+80
-17
lines changed

6 files changed

+80
-17
lines changed

gamemode/core/libraries/admin.lua

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -267,9 +267,11 @@ function lia.administrator.hasAccess(ply, privilege)
267267
end
268268

269269
if not lia.administrator.privileges[privilege] then
270-
lia.information(L("privilegeNotExist", privilege))
271-
if IsValid(ply) then ply:notifyLocalized("privilegeNotExist", privilege) end
272-
return getGroupLevel(grp) >= (lia.administrator.DefaultGroups.superadmin or 3)
270+
if SERVER then
271+
local playerInfo = IsValid(ply) and ply:Nick() .. " (" .. ply:SteamID() .. ")" or "Unknown"
272+
lia.log.add(ply, "missingPrivilege", privilege, playerInfo, grp)
273+
end
274+
return getGroupLevel(grp) >= (lia.administrator.DefaultGroups.admin or 3)
273275
end
274276

275277
if getGroupLevel(grp) >= (lia.administrator.DefaultGroups.superadmin or 3) then return true end

gamemode/core/libraries/logger.lua

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -741,6 +741,16 @@ lia.log.types = {
741741
func = function(client, charID) return L("logCharUnbanOffline", client:Name(), tostring(charID)) end,
742742
category = L("admin")
743743
},
744+
["missingPrivilege"] = {
745+
func = function(client, privilege, playerInfo, groupInfo)
746+
if client then
747+
return L("logMissingPrivilege", client:Name(), privilege, playerInfo or "Unknown", groupInfo or "Unknown")
748+
else
749+
return L("logMissingPrivilegeNoClient", privilege, playerInfo or "Unknown", groupInfo or "Unknown")
750+
end
751+
end,
752+
category = L("admin")
753+
},
744754
}
745755

746756
function lia.log.addType(logType, func, category)

gamemode/core/libraries/vendor.lua

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,18 @@ end
128128
function lia.vendor.addPreset(name, items)
129129
assert(isstring(name), L("vendorPresetNameString"))
130130
assert(istable(items), L("vendorPresetItemsTable"))
131-
lia.vendor.presets[string.lower(name)] = items
131+
132+
-- Filter out items that don't exist
133+
local validItems = {}
134+
for itemType, itemData in pairs(items) do
135+
if lia.item.list[itemType] then
136+
validItems[itemType] = itemData
137+
else
138+
print("[Vendor] Warning: Item '" .. itemType .. "' in preset '" .. name .. "' does not exist and will be skipped.")
139+
end
140+
end
141+
142+
lia.vendor.presets[string.lower(name)] = validItems
132143
end
133144

134145
function lia.vendor.getPreset(name)

gamemode/languages/english.lua

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -606,7 +606,7 @@ LANGUAGE = {
606606
categoryServer = "Server",
607607
mustSuperAdminStopSound = "You need the '%s' privilege to run stopsound globally.",
608608
commandConsoleOnly = "This command can only be run from the server console.",
609-
privilegeNotExist = "The privilege '%s' does not exist and has been restricted to super administrators. Please notify an administrator.",
609+
610610
resetInv = "You have cleared %s's inventory!",
611611
searchingChar = "Searching for character...",
612612
noAvailableFlags = "No available flags to give.",
@@ -2268,4 +2268,6 @@ Reload: Drop]],
22682268
adminStickCategoryUtilityDesc = "General utility commands and tools",
22692269
adminStickCategoryAdministrationDesc = "Advanced administration tools",
22702270
configReset = "All configuration values have been reset to defaults.",
2271+
logMissingPrivilege = "%s requested missing privilege '%s' (Player: %s, Group: %s)",
2272+
logMissingPrivilegeNoClient = "Missing privilege '%s' requested (Player: %s, Group: %s)",
22712273
}
Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
1-
lia.vendor.addPreset("utility_vendor", {
1+
lia.vendor.addPreset("Sample Preset 1", {
22
manhack_welder = {
3-
mode = VENDOR_SELLANDBUY
3+
mode = VENDOR_SELLANDBUY,
4+
price = 50,
45
},
5-
item_suit = {
6-
mode = VENDOR_SELLANDBUY
7-
},
8-
universalammo3 = {
9-
mode = VENDOR_SELLANDBUY
6+
weapon_flechettegun = {
7+
mode = VENDOR_SELLANDBUY,
8+
price = 0,
109
},
1110
})

gamemode/modules/inventory/submodules/vendor/entities/entities/lia_vendor/init.lua

Lines changed: 44 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
local function safeSendToReceivers(entity, netName)
1+
local function safeSendToReceivers(entity)
22
if entity.receivers and #entity.receivers > 0 then net.Send(entity.receivers) end
33
end
44

@@ -49,6 +49,11 @@ function ENT:setWelcomeMessage(value)
4949
end
5050

5151
function ENT:setStock(itemType, value)
52+
if not lia.item.list[itemType] then
53+
print("[Vendor] Warning: Cannot set stock for non-existent item '" .. itemType .. "'")
54+
return
55+
end
56+
5257
self.items[itemType] = self.items[itemType] or {}
5358
if not self.items[itemType][VENDOR_MAXSTOCK] then self:setMaxStock(itemType, value) end
5459
self.items[itemType][VENDOR_STOCK] = math.Clamp(value, 0, self.items[itemType][VENDOR_MAXSTOCK])
@@ -59,12 +64,22 @@ function ENT:setStock(itemType, value)
5964
end
6065

6166
function ENT:addStock(itemType, value)
67+
if not lia.item.list[itemType] then
68+
print("[Vendor] Warning: Cannot add stock for non-existent item '" .. itemType .. "'")
69+
return
70+
end
71+
6272
local current = self:getStock(itemType)
6373
if not current then return end
6474
self:setStock(itemType, self:getStock(itemType) + (value or 1))
6575
end
6676

6777
function ENT:takeStock(itemType, value)
78+
if not lia.item.list[itemType] then
79+
print("[Vendor] Warning: Cannot take stock for non-existent item '" .. itemType .. "'")
80+
return
81+
end
82+
6883
if not self.items[itemType] or not self.items[itemType][VENDOR_MAXSTOCK] then return end
6984
self:addStock(itemType, -(value or 1))
7085
end
@@ -133,6 +148,11 @@ function ENT:setName(name)
133148
end
134149

135150
function ENT:setTradeMode(itemType, mode)
151+
if not lia.item.list[itemType] then
152+
print("[Vendor] Warning: Cannot set trade mode for non-existent item '" .. itemType .. "'")
153+
return
154+
end
155+
136156
if not ALLOWED_MODES[mode] then mode = nil end
137157
self.items[itemType] = self.items[itemType] or {}
138158
self.items[itemType][VENDOR_MODE] = mode
@@ -143,6 +163,11 @@ function ENT:setTradeMode(itemType, mode)
143163
end
144164

145165
function ENT:setItemPrice(itemType, value)
166+
if not lia.item.list[itemType] then
167+
print("[Vendor] Warning: Cannot set price for non-existent item '" .. itemType .. "'")
168+
return
169+
end
170+
146171
if not isnumber(value) or value < 0 then value = nil end
147172
self.items[itemType] = self.items[itemType] or {}
148173
self.items[itemType][VENDOR_PRICE] = value
@@ -153,6 +178,11 @@ function ENT:setItemPrice(itemType, value)
153178
end
154179

155180
function ENT:setItemStock(itemType, value)
181+
if not lia.item.list[itemType] then
182+
print("[Vendor] Warning: Cannot set stock for non-existent item '" .. itemType .. "'")
183+
return
184+
end
185+
156186
if not isnumber(value) or value < 0 then value = nil end
157187
self.items[itemType] = self.items[itemType] or {}
158188
self.items[itemType][VENDOR_STOCK] = value
@@ -163,6 +193,11 @@ function ENT:setItemStock(itemType, value)
163193
end
164194

165195
function ENT:setItemMaxStock(itemType, value)
196+
if not lia.item.list[itemType] then
197+
print("[Vendor] Warning: Cannot set max stock for non-existent item '" .. itemType .. "'")
198+
return
199+
end
200+
166201
if not isnumber(value) or value < 0 then value = nil end
167202
self.items[itemType] = self.items[itemType] or {}
168203
self.items[itemType][VENDOR_MAXSTOCK] = value
@@ -235,10 +270,14 @@ function ENT:applyPreset(name)
235270
if not preset then return end
236271
self.items = {}
237272
for itemType, data in pairs(preset) do
238-
if data.mode ~= nil then self:setTradeMode(itemType, data.mode) end
239-
if data.price ~= nil then self:setItemPrice(itemType, data.price) end
240-
if data.maxStock ~= nil then self:setMaxStock(itemType, data.maxStock) end
241-
if data.stock ~= nil then self:setStock(itemType, data.stock) end
273+
if lia.item.list[itemType] then
274+
if data.mode ~= nil then self:setTradeMode(itemType, data.mode) end
275+
if data.price ~= nil then self:setItemPrice(itemType, data.price) end
276+
if data.maxStock ~= nil then self:setMaxStock(itemType, data.maxStock) end
277+
if data.stock ~= nil then self:setStock(itemType, data.stock) end
278+
else
279+
print("[Vendor] Warning: Skipping invalid item '" .. itemType .. "' when applying preset '" .. name .. "' to vendor.")
280+
end
242281
end
243282

244283
if self.receivers then

0 commit comments

Comments
 (0)