82 lines
2.1 KiB
Lua
82 lines
2.1 KiB
Lua
local PLUGIN = PLUGIN
|
|
local meta = ix.meta.character
|
|
|
|
PLUGIN.name = "Inventory"
|
|
PLUGIN.author = "MediQ"
|
|
PLUGIN.description = "Adds simple stalker inventory"
|
|
|
|
ix.stalker = ix.stalker or {}
|
|
ix.stalker.slots = ix.stalker.slots or {
|
|
--["shlem"] = {2, 2},
|
|
--["armor"] = {2, 2},
|
|
--["sumka"] = {2, 2},
|
|
--["flashlight"] = {2, 2},
|
|
--["primary"] = {2, 6},
|
|
--["primary2"] = {2, 6},
|
|
--["pistol"] = {2, 2},
|
|
--["melee"] = {2, 2}
|
|
}
|
|
|
|
ix.config.Add("maxWeight", 30, "The maximum number of weight a player can take.", nil, { data = {min = 10, max = 100}, category = "characters" })
|
|
|
|
if (CLIENT) then
|
|
-- Helper function for drawing partial textured rectangles
|
|
function surface.DrawPartialTexturedRect(x, y, w, h, startX, startY, endX, endY, texW, texH)
|
|
local u1 = startX / texW
|
|
local v1 = startY / texH
|
|
local u2 = (startX + endX) / texW
|
|
local v2 = (startY + endY) / texH
|
|
|
|
surface.DrawTexturedRectUV(x, y, w, h, u1, v1, u2, v2)
|
|
end
|
|
end
|
|
|
|
function meta:GetInventorySlot(slot)
|
|
if !self then return end
|
|
slot = slot:lower()
|
|
local character_inv = self.vars.inv
|
|
|
|
if character_inv then
|
|
for slot_name, inv in pairs(character_inv) do
|
|
if inv.vars and inv.vars.isBag == slot then
|
|
return inv
|
|
end
|
|
end
|
|
end
|
|
end
|
|
|
|
if (CLIENT) then
|
|
local d = CurTime()
|
|
|
|
function PLUGIN:Think()
|
|
local c = LocalPlayer():GetCharacter()
|
|
local b = ix.gui.invframe
|
|
if input.IsKeyDown(KEY_I) && d < CurTime() then
|
|
|
|
if !c then return end
|
|
|
|
if not IsValid(ix.gui.invframe) then
|
|
local a = true
|
|
if !LocalPlayer():IsRagdoll() && !vgui.CursorVisible() && !LocalPlayer():IsTyping() && !LocalPlayer():IsFrozen() && a then
|
|
vgui.Create('NDInventory')
|
|
end
|
|
else
|
|
ix.gui.invframe:OnRemove()
|
|
end
|
|
d = CurTime() + 0.5
|
|
end
|
|
|
|
if b then
|
|
if (LocalPlayer():IsFrozen() || LocalPlayer():IsTyping() || gui.IsGameUIVisible() || (IsValid(c) && LocalPlayer():IsRagdoll())) && b:IsVisible() then
|
|
b:OnRemove()
|
|
end
|
|
end
|
|
end
|
|
else
|
|
ix.util.Include("sv_inventory.lua", "server")
|
|
end
|
|
|
|
ix.models = {}
|
|
ix.models.avatars = {}
|
|
--ix.models.avatars[FACTION_NEUTRAL] = "vgui/icons/face_3.png"
|