mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
114 lines
3.1 KiB
Lua
114 lines
3.1 KiB
Lua
--[[
|
||
| This file was obtained through the combined efforts
|
||
| of Madbluntz & Plymouth Antiquarian Society.
|
||
|
|
||
| Credits: lifestorm, Gregory Wayne Rossel JR.,
|
||
| Maloy, DrPepper10 @ RIP, Atle!
|
||
|
|
||
| Visit for more: https://plymouth.thetwilightzone.ru/
|
||
--]]
|
||
|
||
|
||
local PLUGIN = PLUGIN
|
||
|
||
ITEM.name = "Container"
|
||
ITEM.description = "Container."
|
||
ITEM.category = "Containers"
|
||
ITEM.model = "models/props_junk/wood_crate001a.mdl"
|
||
ITEM.width = 1
|
||
ITEM.height = 1
|
||
|
||
ITEM.colorAppendix = {["red"] = "Contact an admin to convert this into a container. Requires a group of minimum 5 members.", ["blue"] = "We have a limit of 2 small OR 1 medium personal container per player.\nGroups may also get 3 large containers."}
|
||
ITEM.maxStackSize = 1
|
||
|
||
if (CLIENT) then
|
||
function ITEM:PaintOver(item, width, height)
|
||
local client = LocalPlayer()
|
||
local info = client:GetLocalVar("containerToPlaceInfo")
|
||
|
||
if (info and info.itemID == item.id) then
|
||
surface.SetDrawColor(110, 255, 110, 100)
|
||
surface.DrawRect(width - 14, height - 14, 8, 8)
|
||
end
|
||
end
|
||
else
|
||
function ITEM:OnTransferred(oldInv, newInv)
|
||
local oldOwner = oldInv.GetOwner and oldInv:GetOwner() or nil
|
||
local oldOwnerInfo = IsValid(oldOwner) and oldOwner:GetLocalVar("containerToPlaceInfo")
|
||
|
||
if (oldOwnerInfo and oldOwnerInfo.itemID == self.id) then
|
||
oldOwner:SetLocalVar("containerToPlaceInfo", nil)
|
||
end
|
||
end
|
||
end
|
||
|
||
ITEM:Hook("drop", function(item)
|
||
local client = item.player
|
||
local info = IsValid(client) and client:GetLocalVar("containerToPlaceInfo")
|
||
|
||
if (info and info.itemID == item.id) then
|
||
client:SetLocalVar("containerToPlaceInfo", nil)
|
||
end
|
||
end)
|
||
|
||
ITEM.functions.Place = {
|
||
name = "Place",
|
||
tip = "placeTip",
|
||
icon = "icon16/arrow_down.png",
|
||
OnRun = function(item)
|
||
local client = item.player
|
||
local entity = item.entity
|
||
|
||
if (IsValid(entity)) then
|
||
local clientPos = client:GetPos()
|
||
local entityPos = entity:GetPos()
|
||
|
||
if (clientPos:DistToSqr(entityPos) <= 100 * 100) then
|
||
PLUGIN:CreateContainer(client, entity:GetPos(), entity:GetAngles(), item.model, item.name, item.invType)
|
||
|
||
return
|
||
else
|
||
client:Notify("Сontainer item is too far!")
|
||
end
|
||
else
|
||
local info = {}
|
||
info.itemID = item.id
|
||
info.name = item.name
|
||
info.model = item.model
|
||
|
||
client:SetLocalVar("containerToPlaceInfo", info)
|
||
client:SelectWeapon("ix_keys")
|
||
end
|
||
|
||
return false
|
||
end,
|
||
OnCanRun = function(item)
|
||
local client = item.player
|
||
|
||
return isstring(item.model) and isstring(item.invType) and
|
||
IsValid(client) and !client:GetLocalVar("containerToPlaceInfo") and
|
||
hook.Run("CanPlayerEquipItem", client, item) != false
|
||
end
|
||
}
|
||
|
||
ITEM.functions.PlaceCancel = {
|
||
name = "Cancel Place",
|
||
tip = "placeCancelTip",
|
||
icon = "icon16/arrow_up.png",
|
||
OnRun = function(item)
|
||
local client = item.player
|
||
|
||
client:SetLocalVar("containerToPlaceInfo", nil)
|
||
|
||
return false
|
||
end,
|
||
OnCanRun = function(item)
|
||
local client = item.player
|
||
local info = IsValid(client) and client:GetLocalVar("containerToPlaceInfo")
|
||
|
||
return isstring(item.model) and isstring(item.invType) and
|
||
!IsValid(item.entity) and info != nil and info.itemID == item.id and
|
||
hook.Run("CanPlayerUnequipItem", client, item) != false
|
||
end
|
||
}
|