mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
154 lines
4.2 KiB
Lua
154 lines
4.2 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 = "Machette"
|
|
ITEM.description = "La machette est un outil de coupe emblématique, à la lame longue et tranchante. Sa présence dans l'inventaire évoque l'esprit de l'aventure et de la survie en terrain sauvage. Sa lame en acier brillant est striée de marques d'utilisation, témoignant de sa résistance et de sa capacité à s'attaquer aux tâches les plus ardues. "
|
|
ITEM.model = "models/weapons/tfa_nmrih/w_me_machete.mdl"
|
|
ITEM.class = "tfa_nmrih_machete"
|
|
ITEM.isMelee = true
|
|
ITEM.baseDamage = 13
|
|
ITEM.weaponCategory = "melee"
|
|
ITEM.balanceCat = "medium"
|
|
ITEM.width = 1
|
|
ITEM.height = 4
|
|
ITEM.iconCam = {
|
|
pos = Vector(0, 200, 0),
|
|
ang = Angle(-0.01, 270.06, 0),
|
|
fov = 2.51
|
|
}
|
|
|
|
ITEM.maxDurability = 15
|
|
ITEM.isTool = true
|
|
|
|
local color_green = Color(100, 255, 100)
|
|
local color_red = Color(200, 25, 25)
|
|
|
|
if (CLIENT) then
|
|
function ITEM:PaintOver(item, w, h)
|
|
if (item:GetData("equip")) then
|
|
surface.SetDrawColor(110, 255, 110, 100)
|
|
surface.DrawRect(w - 14, h - 20, 8, 8)
|
|
end
|
|
local maxDurability = item:GetMaxDurability()
|
|
local durability = item:GetDurability()
|
|
local width = w - 8
|
|
local cellWidth = math.Round(width / maxDurability)
|
|
local color = ix.util.ColorLerp(1 - durability / maxDurability, color_green, color_red)
|
|
surface.SetDrawColor(color)
|
|
|
|
for i = 0, durability - 1 do
|
|
surface.DrawRect(5 + i * cellWidth, h - 8, cellWidth - 1, 4)
|
|
end
|
|
end
|
|
end
|
|
|
|
ITEM.functions.SetMaxDurability = {
|
|
name = "Définir durabilité max",
|
|
icon = "icon16/wrench.png",
|
|
OnClick = function(itemTable)
|
|
local client = itemTable.player
|
|
Derma_StringRequest("Définir durabilité", "Enter max durability value", itemTable:GetMaxDurability(), function(text)
|
|
local amount = tonumber(text)
|
|
|
|
if (amount and amount > 0) then
|
|
netstream.Start("ixSetToolMaxDurability", itemTable:GetID(), math.floor(amount))
|
|
else
|
|
client:Notify("Invalid number")
|
|
end
|
|
end)
|
|
end,
|
|
OnRun = function(itemTable)
|
|
return false
|
|
end,
|
|
OnCanRun = function(itemTable)
|
|
if (IsValid(itemTable.entity)) then
|
|
return false
|
|
end
|
|
|
|
if (!CAMI.PlayerHasAccess(itemTable.player, "Helix - Basic Admin Commands")) then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
}
|
|
|
|
ITEM.functions.SetDurability = {
|
|
name = "Définir durabilité",
|
|
icon = "icon16/wrench.png",
|
|
OnClick = function(itemTable)
|
|
local client = itemTable.player
|
|
Derma_StringRequest("Définir durabilité", "Enter durability value for this tool here", itemTable:GetDurability(), function(text)
|
|
local amount = tonumber(text)
|
|
|
|
if (amount and amount > 0 and amount <= itemTable:GetMaxDurability()) then
|
|
netstream.Start("ixSetToolDurability", itemTable:GetID(), math.floor(amount))
|
|
else
|
|
client:Notify("Invalid number")
|
|
end
|
|
end)
|
|
end,
|
|
OnRun = function(itemTable)
|
|
return false
|
|
end,
|
|
OnCanRun = function(itemTable)
|
|
if (IsValid(itemTable.entity)) then
|
|
return false
|
|
end
|
|
|
|
if (!CAMI.PlayerHasAccess(itemTable.player, "Helix - Basic Admin Commands")) then
|
|
return false
|
|
end
|
|
|
|
return true
|
|
end
|
|
}
|
|
|
|
function ITEM:GetDescription()
|
|
local maxDurability = self:GetMaxDurability()
|
|
local durability = self:GetDurability()
|
|
return self.description .. "\n\nDurabilité : " .. durability .. "/" .. maxDurability
|
|
end
|
|
|
|
function ITEM:OnInstanced(index, x, y, item)
|
|
self:SetData("durability", self:GetMaxDurability())
|
|
end
|
|
|
|
function ITEM:DamageDurability(amount)
|
|
self:SetData("durability", math.max(0, self:GetDurability() - 1))
|
|
|
|
if (self:GetDurability() == 0) then
|
|
self:OnBreak()
|
|
end
|
|
end
|
|
|
|
function ITEM:GetBreakSound()
|
|
return "weapons/crowbar/crowbar_impact"..math.random(1, 2)..".wav"
|
|
end
|
|
|
|
function ITEM:OnBreak()
|
|
local breakSound = self:GetBreakSound()
|
|
|
|
if (IsValid(self.player)) then
|
|
self.player:EmitSound(breakSound, 65)
|
|
elseif (IsValid(self.entity)) then
|
|
self.entity:EmitSound(breakSound, 65)
|
|
end
|
|
|
|
self:Remove()
|
|
end
|
|
|
|
function ITEM:GetDurability()
|
|
return self:GetData("durability", self:GetMaxDurability())
|
|
end
|
|
|
|
function ITEM:GetMaxDurability()
|
|
return self:GetData("maxDurability", self.maxDurability)
|
|
end |