Files
wnsrc/gamemodes/darkrp/plugins/tfahl2sweps/items/tfaweapons/sh_machete.lua
lifestorm 73479cff9e Upload
2024-08-04 22:55:00 +03:00

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