mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
188 lines
4.5 KiB
Lua
188 lines
4.5 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/
|
||
|
|
--]]
|
||
|
|
|
||
|
|
|
||
|
|
ITEM.name = "Workbench Base"
|
||
|
|
ITEM.description = "It is a workbench. Can only be picked up by the first person to place it."
|
||
|
|
ITEM.category = "Workbenches"
|
||
|
|
ITEM.isWorkbench = true
|
||
|
|
|
||
|
|
ITEM.functions.place = {
|
||
|
|
name = "Placer",
|
||
|
|
tip = "Place the workbench",
|
||
|
|
icon = "icon16/brick_add.png",
|
||
|
|
OnRun = function(item)
|
||
|
|
local client = item.player
|
||
|
|
|
||
|
|
if (!client:Alive()) then return false end
|
||
|
|
client:EmitSound("physics/cardboard/cardboard_box_break3.wav")
|
||
|
|
|
||
|
|
client.previousWep = client:GetActiveWeapon():GetClass()
|
||
|
|
client:Give("weapon_workbench_placer")
|
||
|
|
client:SelectWeapon("weapon_workbench_placer")
|
||
|
|
|
||
|
|
local weapon = client:GetActiveWeapon()
|
||
|
|
weapon:SetInfo(item.uniqueID, item.model)
|
||
|
|
|
||
|
|
return false
|
||
|
|
end,
|
||
|
|
OnCanRun = function(item)
|
||
|
|
return (!IsValid(item.entity))
|
||
|
|
end
|
||
|
|
}
|
||
|
|
|
||
|
|
ITEM.functions.Use = {
|
||
|
|
name = "Utiliser",
|
||
|
|
icon = "icon16/wrench.png",
|
||
|
|
OnCanRun = function(itemTable)
|
||
|
|
return IsValid(itemTable.entity)
|
||
|
|
end,
|
||
|
|
OnClick = function(itemTable)
|
||
|
|
LocalPlayer().lastSelectedSkill = itemTable.workbenchSkill
|
||
|
|
ix.gui.lastMenuTab = 3
|
||
|
|
|
||
|
|
if (!IsValid(ix.gui.menu)) then
|
||
|
|
vgui.Create("ixMenu")
|
||
|
|
end
|
||
|
|
end,
|
||
|
|
OnRun = function(itemTable)
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
}
|
||
|
|
|
||
|
|
ITEM.functions.PackUp = {
|
||
|
|
name = "Emballer",
|
||
|
|
icon = "icon16/box.png",
|
||
|
|
OnRun = function(item)
|
||
|
|
local client = item.player
|
||
|
|
local character = client and IsValid(client) and client.GetCharacter and client:GetCharacter()
|
||
|
|
local inventory = character:GetInventory()
|
||
|
|
local toolkit = inventory:HasItem("tool_toolkit")
|
||
|
|
|
||
|
|
if (!toolkit) then
|
||
|
|
client:Notify("Vous avez besoin d'une trousse à outil pour emballer cela !")
|
||
|
|
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
if (item:GetData("bolted", false)) then
|
||
|
|
client:Notify("Cette station est visée !")
|
||
|
|
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
local placerData = item:GetData("placer", false)
|
||
|
|
if placerData and character:GetID() != placerData then
|
||
|
|
client:Notify("Vous ne possédez pas cela !")
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
client:SetAction("Emballage en cours...", 10, function()
|
||
|
|
if (inventory:Add(item.uniqueID .. "_assembly")) then
|
||
|
|
toolkit:DamageDurability(1)
|
||
|
|
client:Notify("Station emballée.")
|
||
|
|
else
|
||
|
|
client:Notify("Vous n'avez pas assez de place pour emballer cela !")
|
||
|
|
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
end,
|
||
|
|
OnCanRun = function(item)
|
||
|
|
return !item.noPackUp
|
||
|
|
end
|
||
|
|
}
|
||
|
|
|
||
|
|
ITEM.functions.Bolt = {
|
||
|
|
name = "Viser",
|
||
|
|
icon = "icon16/wrench.png",
|
||
|
|
OnRun = function(item)
|
||
|
|
local client = item.player
|
||
|
|
local inventory = client:GetCharacter():GetInventory()
|
||
|
|
local toolkit = inventory:HasItem("tool_toolkit")
|
||
|
|
|
||
|
|
if (!toolkit) then
|
||
|
|
client:Notify("Vous avez besoin d'une caisse à outil !")
|
||
|
|
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
|
||
|
|
client:SetAction("Vous vissez la station.", 10, function()
|
||
|
|
item:SetData("bolted", true)
|
||
|
|
|
||
|
|
client:Notify("Vous avez visé la station.")
|
||
|
|
end)
|
||
|
|
|
||
|
|
toolkit:DamageDurability(1)
|
||
|
|
|
||
|
|
return false
|
||
|
|
end,
|
||
|
|
OnCanRun = function(itemTable)
|
||
|
|
return itemTable.entity and itemTable.entity:IsValid() and !itemTable:GetData("bolted", false)
|
||
|
|
end
|
||
|
|
}
|
||
|
|
|
||
|
|
ITEM.functions.UnBolt = {
|
||
|
|
name = "Déviser",
|
||
|
|
icon = "icon16/wrench_orange.png",
|
||
|
|
OnRun = function(item)
|
||
|
|
local client = item.player
|
||
|
|
|
||
|
|
if (client:IsAdmin()) then
|
||
|
|
item:SetData("bolted", false)
|
||
|
|
|
||
|
|
client:Notify("Table dévisée.")
|
||
|
|
else
|
||
|
|
client:Notify("Nécessite la supervision d'un Admin.")
|
||
|
|
end
|
||
|
|
|
||
|
|
return false
|
||
|
|
end,
|
||
|
|
OnCanRun = function(itemTable)
|
||
|
|
return itemTable.entity and itemTable.entity:IsValid() and itemTable:GetData("bolted", false)
|
||
|
|
end
|
||
|
|
}
|
||
|
|
|
||
|
|
ITEM.postHooks.drop = function(item, result)
|
||
|
|
if (item.player and !item:GetData("placer")) then
|
||
|
|
item:SetData("placer", item.player:GetCharacter():GetID())
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
function ITEM:CanTransfer(oldInventory, newInventory)
|
||
|
|
local placerData = self:GetData("placer", false)
|
||
|
|
local newInvOwner = newInventory and newInventory.GetOwner and newInventory:GetOwner()
|
||
|
|
|
||
|
|
if newInventory and newInvOwner then
|
||
|
|
if newInvOwner and IsValid(newInvOwner) then
|
||
|
|
if placerData and newInvOwner.GetCharacter and newInvOwner:GetCharacter():GetID() != placerData then
|
||
|
|
newInvOwner:Notify("Vous n'êtes pas le propriétaire !")
|
||
|
|
|
||
|
|
return false
|
||
|
|
end
|
||
|
|
end
|
||
|
|
end
|
||
|
|
|
||
|
|
return true
|
||
|
|
end
|
||
|
|
|
||
|
|
function ITEM:OnEntityCreated(entity)
|
||
|
|
timer.Simple(1, function()
|
||
|
|
if (IsValid(entity)) then
|
||
|
|
local physObj = entity:GetPhysicsObject()
|
||
|
|
physObj:EnableMotion(false)
|
||
|
|
end
|
||
|
|
end)
|
||
|
|
end
|
||
|
|
|
||
|
|
function ITEM:OnEntityTakeDamage(entity, damage)
|
||
|
|
return false
|
||
|
|
end
|