mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +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("Konteyner öğesi çok uzak!")
|
||
|
|
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
|
||
|
|
}
|