This commit is contained in:
lifestorm
2024-08-04 22:55:00 +03:00
parent 8064ba84d8
commit 73479cff9e
7338 changed files with 1718883 additions and 14 deletions

View File

@@ -0,0 +1,97 @@
--[[
| 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
DEFINE_BASECLASS( "base_anim" )
ENT.Base = "base_entity"
ENT.Type = "anim"
ENT.PrintName = "Cigarette"
ENT.Author = "Fruity"
ENT.Information = "Une cigarette pour fumer."
ENT.Category = "HL2 RP"
ENT.Editable = true
ENT.Spawnable = true
ENT.AdminSpawnable = true
ENT.AdminOnly = true
ENT.smokeDelay = 0
ENT.flexIndexAshes = 1
ENT.addValueAshes = 0.05
ENT.minValueAshes = 0
ENT.maxValueAshes = 0.5
ENT.flexIndexLength = 0
ENT.addValueLength = 0.01
ENT.minValueLength = 0
ENT.maxValueLength = 1
ENT.AutomaticFrameAdvance = true -- Must be set on client
function ENT:SpawnFunction( client, tr, ClassName )
if (!client:Alive()) then return false end
local base = ents.Create( ClassName )
base:SetParent(client)
base:SetOwner(client)
return base
end
function ENT:Initialize()
end
function ENT:ChangeSkinStateTimer()
PLUGIN:ChangeSkinStateTimer(self)
end
function ENT:CreateJetLengthTimer()
PLUGIN:CreateJetLengthTimer(self)
end
-- Cigarette gets smaller over time and ashes effect
function ENT:GetAshesValue()
return PLUGIN:GetAshesValue(self)
end
function ENT:GetLengthValue(currentLength)
return PLUGIN:GetLengthValue(self, currentLength)
end
function ENT:Think()
if (SERVER) then
PLUGIN:CigaretteThink(self)
end
end
function ENT:Draw()
if (!IsValid(self) or !IsValid(self:GetParent())) then return false end
if (self:GetParent():GetMoveType() == 8) then
return false
end
if (LocalPlayer() == self:GetParent() and !ix.option.Get("firstPersonCigarette", true)) then
if ix.config.Get("thirdperson") then
if !ix.option.Get("thirdpersonEnabled", false) then
return false
end
else
return false
end
end
self:DrawModel()
end

View File

@@ -0,0 +1,194 @@
--[[
| 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 = "Cigarette"
ITEM.description = "Une simple cigarette contenant du tabac, enroulé dans du papier fin et prête à être fumée.."
ITEM.model = Model("models/willardnetworks/cigarettes/cigarette.mdl")
ITEM.category = "Drogues"
ITEM.width = 1
ITEM.height = 1
ITEM.junkCleanTime = 120
if (CLIENT) then
function ITEM:PopulateTooltip(tooltip)
local length = self:GetData("length", 0)
local panel = tooltip:AddRowAfter("name", "remaining tobacco")
panel:SetBackgroundColor(derma.GetColor("Warning", tooltip))
panel:SetText("Tabac restant : "..(math.Round(math.Remap(length, 0, 1, 100, 0), 0)).."%")
panel:SizeToContents()
end
function ITEM:PaintOver(item, w, h)
local length = item:GetData("length", 0)
surface.SetDrawColor(length >= 1 and (Color(255, 110, 110, 100)) or (length < 1 and length != 0 and Color(255, 193, 110, 100)) or (Color(110, 255, 110, 100)))
surface.DrawOutlinedRect(1, 1, w - 2, h - 2)
end
end
function ITEM:GetModelFlexes()
return {[0] = self:GetData("length", 0)}
end
function ITEM:CreateCigarette(client)
if ( SERVER ) then
PLUGIN:CreateCigarette(self, client)
end
end
function ITEM:CheckIfModelAllowed(client)
local faceIndex = client:FindBodygroupByName("face")
if string.find(client:GetModel(), "models/willardnetworks/citizens/") then
local headIndex = client:FindBodygroupByName("head")
if client:GetBodygroup(faceIndex) == 1 or client:GetBodygroup(headIndex) == 4 then
return false
end
end
if string.find(client:GetModel(), "models/willardnetworks/vortigaunt.mdl") and client:GetBodygroup(faceIndex) == 1 then
return false
end
if string.find(client:GetModel(), "models/wn7new/metropolice/") and client:GetBodygroup(client:FindBodygroupByName("Cp_Head")) > 0 then
return false
end
for _, v in pairs(PLUGIN.allowedModels) do
if string.find(client:GetModel(), v) then return true end
end
return false
end
function ITEM:OnCanRunSmoke()
local client = self.player
local length = self:GetData("length", 0)
if length >= 1 then return false end
if client and !self:CheckIfModelAllowed(client) then return false end
if math.Round(math.Remap(length, 0, 1, 100, 0), 0) == 0 then return false end
if self.entity then return false end
if client and client.cigarette and IsValid(client.cigarette) then return false end
if !self.cigaretteEnt then return true end
return false
end
function ITEM:OnRunSmoke()
local client = self.player
if !client then return false end
if (!client:Alive()) then return false end
self:CreateCigarette(client)
client:NotifyLocalized("Vous avez inséré la cigarette dans votre bouche. Utilisez un briquet pour l'allumer.")
end
function ITEM:OnRunStopSmoke(client, value, bRemove)
client = client or self.player
if !client then return false end
if (!client:Alive()) then return false end
if (value and !bRemove) then
self:SetData("length", value)
end
if IsValid(self.cigaretteEnt) and IsEntity(self.cigaretteEnt) then
if !value and !bRemove then
local length = self.cigaretteEnt:GetFlexWeight(self.cigaretteEnt.flexIndexLength)
self:SetData("length", length)
end
self.cigaretteEnt:Remove()
client.cigarette = nil
end
self.cigaretteEnt = nil
client:NotifyLocalized(self:GetData("length") == 1 and "Vous avez fini de fumer la cigarette, il ne reste que le mégot." or "Vous avez enlevé la cigarette de votre bouche.")
local itemID = self:GetID()
if bRemove then
self:Remove()
end
netstream.Start(client, "CigaretteSetClientEntity", itemID, nil, nil)
end
function ITEM:OnCanRunStopSmoke()
local length = self:GetData("length", 0)
if length >= 1 then return false end
if math.Round(math.Remap(length, 0, 1, 100, 0), 0) == 0 then return false end
if self.cigaretteEnt and IsEntity(self.cigaretteEnt) then return true end
if self.player and !self:CheckIfModelAllowed(self.player) then return false end
return false
end
function ITEM:SmokingFinished(client, value)
self:OnRunStopSmoke(client, value, true)
end
function ITEM:OnTransferred(curInv, inventory)
local client = self.player
if client and client.cigarette and IsEntity(client.cigarette) and client.cigarette.cigaretteItem and client.cigarette.cigaretteItem == self then
self:OnRunStopSmoke()
end
end
ITEM.functions.smoke = {
name = "Placez dans la bouche",
tip = "Placez la cigarette dans votre bouche.",
icon = "icon16/brick_add.png",
OnRun = function(item)
item:OnRunSmoke()
return false
end,
OnCanRun = function(item)
if item:OnCanRunSmoke() then return true end
return false
end
}
ITEM.functions.stopsmoke = {
name = "Retirer de la bouche",
tip = "Retirez la cigarette de votre bouche/éteignez-la.",
icon = "icon16/brick_add.png",
OnRun = function(item)
item:OnRunStopSmoke()
return false
end,
OnCanRun = function(item)
if item:OnCanRunStopSmoke() then return true end
return false
end
}
if (CLIENT) then
netstream.Hook("CigaretteSetClientEntity", function(itemID, entIndex, isLit)
if itemID and ix.item.instances[itemID] then
ix.item.instances[itemID].cigaretteEnt = entIndex or nil
end
LocalPlayer().cigarette = entIndex or nil
if !LocalPlayer().cigarette then return end
LocalPlayer().cigarette.isLit = isLit or nil
end)
end

View File

@@ -0,0 +1,62 @@
--[[
| 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 = "Lighter"
ITEM.base = "base_tools"
ITEM.category = "Outils"
ITEM.model = Model("models/willardnetworks/cigarettes/lighter.mdl")
ITEM.width = 1
ITEM.height = 1
ITEM.description = "Handheld device designed to spark a flame to light things on fire."
function ITEM:OnRunLight()
local client = self.player
if !client then return end
if !client:Alive() then return end
if client.cigarette and IsEntity(client.cigarette) and client.cigarette.cigaretteItem and
client.cigarette.cigaretteItem.GetID and ix.item.instances[client.cigarette.cigaretteItem:GetID()] then
client.cigarette.isLit = true
netstream.Start(client, "CigaretteSetClientEntity", client.cigarette.cigaretteItem:GetID(), client.cigarette, true)
end
client:NotifyLocalized("Vous commencez à fumer une cigarette.")
client:EmitSound(self.useSound)
self:DamageDurability(1)
end
function ITEM:OnCanRunLight()
local client = self.player
if !client then return end
if !client:Alive() then return end
if client.cigarette and !client.cigarette.isLit then return true end
return false
end
ITEM.functions.light = {
name = "Allumer une cigarette",
tip = "Allumer une cigarette",
icon = "icon16/brick_add.png",
OnRun = function(item)
item:OnRunLight()
return false
end,
OnCanRun = function(item)
if item:OnCanRunLight() then return true end
return false
end
}

View File

@@ -0,0 +1,13 @@
--[[
| 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 = "Cigarette"
ITEM.description = "Une fine tige de papier enroulée sur elle-même, remplie d'un mélange de tabac finement coupé et d'autres substances, souvent enrobée d'un filtre en papier ou en cellulose. Lorsqu'allumée, elle produit de la fumée inhalée par l'utilisateur."

View File

@@ -0,0 +1,22 @@
--[[
| 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 = "Cigares Goodfella"
ITEM.category = "Drogues"
ITEM.model = Model("models/willardnetworks/cigarettes/cigarette_pack_goodfella.mdl")
ITEM.description = "Un paquet de cigares de haute qualité emballés dans du papier à tabac à grammage élevé contenant jusqu'à 8 cigares."
ITEM.allowNesting = true
ITEM.restriction = {"cigarette"}
ITEM.noEquip = true
function ITEM:OnBagInitialized(inventory)
inventory:Add("cigarette", 8)
end

View File

@@ -0,0 +1,34 @@
--[[
| 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 = "Paquet de cigarettes"
ITEM.model = Model("models/willardnetworks/cigarettes/cigarette_pack_1.mdl")
ITEM.category = "Drogues"
ITEM.description = "Le paquet de cigarettes est enveloppé d'un papier fin et doux au toucher, avec le motif de l'Union coloré. Sur la face avant, le logo de l'Union est imprimé en caractères gras et noirs, tandis que des avertissements sanitaires sont inscrits sur la face arrière. En le tenant dans votre main, vous pouvez sentir le poids léger du paquet, ainsi que l'odeur distincte et forte du tabac qui en émane."
ITEM.allowNesting = true
ITEM.restriction = {"cigarette"}
ITEM.noEquip = true
function ITEM:GetName()
return self:GetData("relabeled", false) and "Paquet de cigarettes réétiqueté" or "Paquet de cigarettes - Edition Bienfaiteur"
end
function ITEM:GetDescription()
return self:GetData("relabeled", false) and "Un paquet de cigarettes réétiqueté pouvant contenir précisément 8 cigarettes" or "Un paquet de cigarettes délivré par l'Union et pouvant contenir précisément 8 cigarettes"
end
function ITEM:GetModel()
return self:GetData("relabeled", false) and "models/willardnetworks/cigarettes/cigarette_pack_1.mdl" or "models/willardnetworks/cigarettes/cigarette_pack.mdl"
end
function ITEM:OnBagInitialized(inventory)
inventory:Add("cigarette", 8)
end

View File

@@ -0,0 +1,16 @@
--[[
| 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 = "Briquet en plastique"
ITEM.model = Model("models/willardnetworks/cigarettes/lighter.mdl")
ITEM.description = "Un petit briquet en plastique avec une surface légèrement texturée pour une meilleure prise en main. Le couvercle s'ouvre facilement pour révéler une petite flamme prête à être allumée."
ITEM.useSound = "willardnetworks/cigarettes/normal.wav"
ITEM.category = "Outils"
ITEM.maxDurability = 8

View File

@@ -0,0 +1,22 @@
--[[
| 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 = "Briquet Zippo"
ITEM.model = Model("models/willardnetworks/cigarettes/zippo.mdl")
ITEM.description = "Le briquet Zippo est un classique intemporel. Avec son design élégant en métal, il est facilement reconnaissable grâce à son fameux 'clic' caractéristique. Il est simple à utiliser : il suffit d'ouvrir le capot, de frotter la pierre contre la molette et de regarder la flamme s'allumer. Pratique et élégant, c'est l'accessoire parfait pour les amateurs de cigares et les fumeurs de cigarettes."
ITEM.useSound = "willardnetworks/cigarettes/zippo.wav"
ITEM.maxDurability = 24
ITEM.width = 1
ITEM.height = 1
ITEM.iconCam = {
pos = Vector(-509.64, -427.61, 310.24),
ang = Angle(24.98, 400.03, 0),
fov = 0.29
}

View File

@@ -0,0 +1,47 @@
--[[
| 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 ix = ix
local PLUGIN = PLUGIN
PLUGIN.name = "Cigarettes"
PLUGIN.author = "Fruity"
PLUGIN.description = "Adds non PAC3 cigarettes."
ix.util.Include("sv_plugin.lua")
PLUGIN.allowedModels = {
[1] = "models/willardnetworks/citizens/",
[2] = "models/willardnetworks/vortigaunt.mdl",
[3] = "models/wn7new/metropolice/"
}
if (CLIENT) then
ix.option.Add("firstPersonCigarette", ix.type.bool, true, {
category = "Cigarettes"
})
end
ix.lang.AddTable("english", {
optFirstPersonCigarette = "Montrer la cigarette à la première personne",
optdFirstPersonCigarette = "Bascule si vous voulez que la cigarette s'affiche à la première personne ou non."
})
ix.lang.AddTable("french", {
optFirstPersonCigarette = "Montrer la cigarette à la première personne",
optdFirstPersonCigarette = "Bascule si vous voulez que la cigarette s'affiche à la première personne ou non."
})
ix.lang.AddTable("spanish", {
optFirstPersonCigarette = "Mostrar el Cigarro en Primera Persona",
optdFirstPersonCigarette = "Alterna si quieres que el cigarro se muestre en primera persona o no."
})

View File

@@ -0,0 +1,246 @@
--[[
| 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 ents = ents
local tonumber = tonumber
local netstream = netstream
local timer = timer
local IsValid = IsValid
local IsEntity = IsEntity
local string = string
local tostring = tostring
local math = math
local Vector = Vector
local CurTime = CurTime
local PLUGIN = PLUGIN
function PLUGIN:CreateCigarette(item, client)
local entity = ents.Create("ix_cigarette")
entity:SetOwner(client)
entity:SetParent(client)
entity:Fire("SetParentAttachment", "cigarette", 0.01)
entity:SetModel( "models/willardnetworks/cigarettes/cigarette.mdl" )
entity:SetModelScale(0.7)
entity:CreateJetLengthTimer()
entity:ChangeSkinStateTimer()
entity:Spawn()
local length = item:GetData("length", 0)
entity:SetFlexWeight(entity.flexIndexLength, tonumber(length))
client.cigarette = entity
item.cigaretteEnt = entity
entity.cigaretteItem = item
netstream.Start(client, "CigaretteSetClientEntity", item:GetID(), entity, false)
end
function PLUGIN:CreateCigaretteSmoke(entity)
entity.smoke = ents.Create( "env_smokestack" )
entity.smoke:SetParent(entity:GetParent())
entity.smoke:Fire("SetParentAttachment", "cigarette_glow", 0.01)
entity.smoke:SetKeyValue("InitialState", "1")
entity.smoke:SetKeyValue("WindAngle", "90 0 0")
entity.smoke:SetKeyValue("WindSpeed", "0.6")
entity.smoke:SetKeyValue("rendercolor", "162 162 162")
entity.smoke:SetKeyValue("renderamt", "6") -- alpha
entity.smoke:SetKeyValue("SmokeMaterial", "particle/smokesprites_0001.vmt")
entity.smoke:SetKeyValue("BaseSpread", "0.2")
entity.smoke:SetKeyValue("SpreadSpeed", "0.4")
entity.smoke:SetKeyValue("Speed", "1.4")
entity.smoke:SetKeyValue("StartSize", "0.3")
entity.smoke:SetKeyValue("EndSize", "1.5")
entity.smoke:SetKeyValue("roll", "32")
entity.smoke:SetKeyValue("Rate", "24")
entity.smoke:SetKeyValue("twist", "32")
entity:DeleteOnRemove(entity.smoke)
entity.smoke:Spawn()
entity.smoke:Activate()
timer.Simple(0.25, function()
if !IsValid(entity) then return end
if !IsEntity(entity) then return end
if entity.cigaretteItem and entity.cigaretteItem.GetID and ix.item.instances[entity.cigaretteItem:GetID()] then
local lastSmokePos = tonumber(string.Right(tostring(math.Round(entity:GetFlexWeight(entity.flexIndexLength), 2)), 2))
if entity.cigaretteItem:GetData("length", 0) > 0 then
self:ChangeSmokePos(entity, entity:GetParent(), lastSmokePos)
end
end
end)
end
function PLUGIN:ChangeSkinStateTimer(entity)
if timer.Exists("ChangeSkinStateCigarette_"..entity:EntIndex()) then timer.Remove("ChangeSkinStateCigarette_"..entity:EntIndex()) end
timer.Create("ChangeSkinStateCigarette_"..entity:EntIndex(), math.random(3, 7), 0, function()
if !IsValid(entity) then timer.Remove("ChangeSkinStateCigarette_"..entity:EntIndex()) return end
local parent = entity:GetParent()
if !IsValid(parent) then timer.Remove("ChangeSkinStateCigarette_"..entity:EntIndex()) return end
if parent.Alive and !parent:Alive() then timer.Remove("ChangeSkinStateCigarette_"..entity:EntIndex()) return end
if !entity.state then entity.state = 1 end
if (entity.state or 0) != 2 then
timer.Adjust("ChangeSkinStateCigarette_"..entity:EntIndex(), 2, 0, nil)
else
timer.Adjust("ChangeSkinStateCigarette_"..entity:EntIndex(), math.random(3, 7), 0, nil)
end
entity.state = ((entity.state or 0) > 1 and 1 or 2)
entity:SetSkin(entity.state)
if entity.cigaretteItem and entity.cigaretteItem.GetID and ix.item.instances[entity.cigaretteItem:GetID()] then
local length = entity:GetFlexWeight(entity.flexIndexLength)
entity.cigaretteItem:SetData("length", length)
end
end)
end
function PLUGIN:CreateJetLengthTimer(entity)
if timer.Exists("ChangeJetLengthCigarette_"..entity:EntIndex()) then timer.Remove("ChangeJetLengthCigarette_"..entity:EntIndex()) end
timer.Create("ChangeJetLengthCigarette_"..entity:EntIndex(), 0.2, 0, function()
if !IsValid(entity) then timer.Remove("ChangeJetLengthCigarette_"..entity:EntIndex()) return end
local parent = entity:GetParent()
if !IsValid(parent) then timer.Remove("ChangeJetLengthCigarette_"..entity:EntIndex()) return end
if parent.Alive and !parent:Alive() then timer.Remove("ChangeJetLengthCigarette_"..entity:EntIndex()) return end
if IsValid(entity.smoke) and parent:GetMoveType() == 8 then entity.smoke:Remove() return end
if IsValid(entity) and (!IsValid(entity.smoke) or (IsValid(entity.smoke) and !entity.smoke:GetInternalVariable("JetLength"))) then
if parent.cigarette and parent.cigarette.isLit then self:CreateCigaretteSmoke(entity) return end
end
if IsValid(entity.smoke) then
if parent:GetVelocity():Length2D() > parent:GetWalkSpeed() then
if math.Round(tonumber(entity.smoke:GetInternalVariable("JetLength")), 1) != 0.2 then entity.smoke:SetKeyValue("JetLength", "0.2") end
else
if tonumber(entity.smoke:GetInternalVariable("JetLength")) != 10 then entity.smoke:SetKeyValue("JetLength", "10") end
end
end
if entity.cigaretteItem and entity.cigaretteItem.GetID and ix.item.instances[entity.cigaretteItem:GetID()] then
if !parent then return end
if !entity.cigaretteItem:CheckIfModelAllowed(parent) then entity.cigaretteItem:OnRunStopSmoke(parent) end
end
end)
end
function PLUGIN:ChangeSmokePos(entity, parent, fixedPos)
if (IsValid(entity) and IsEntity(entity) and entity) then
if (entity.smoke and IsEntity(entity.smoke) and parent and IsValid(parent)) then
if parent:GetMoveType() != 8 then
if fixedPos then
fixedPos = (fixedPos * 0.001) * 10
entity.smoke:SetPos(entity.smoke:GetPos() + Vector(-fixedPos * parent:GetForward(), 0, 0))
return
end
entity.smoke:SetPos(entity.smoke:GetPos() + Vector(-0.001 * parent:GetForward(), 0, 0))
end
end
end
end
function PLUGIN:CigaretteThink(entity)
local currentWeightLength = entity:GetFlexWeight( entity.flexIndexLength )
local parent = entity:GetParent()
if !parent.cigarette then return end
if !parent.cigarette.isLit then return end
if currentWeightLength >= entity.maxValueLength then
if (SERVER) then
if IsValid(entity) and IsEntity(entity) then
if entity.cigaretteItem and entity.cigaretteItem.SmokingFinished then
entity.cigaretteItem:SmokingFinished(entity:GetParent(), 1)
end
end
end
return
end
if CurTime() < entity.smokeDelay then return end
if parent and parent:GetMoveType() == 8 then return end
if parent and !parent:Alive() or !parent then
if (SERVER) then
if IsValid(entity) and IsEntity(entity) then
entity:Remove()
end
end
return
end
self:ChangeSmokePos(entity, parent)
-- Length
entity:SetFlexWeight( entity.flexIndexLength, entity:GetLengthValue(currentWeightLength) )
-- Ashes
entity:SetFlexWeight( entity.flexIndexAshes, entity:GetAshesValue() )
entity.smokeDelay = CurTime() + 3
entity:NextThink( CurTime() ) -- Set the next think to run as soon as possible, i.e. the next frame.
return true -- Apply NextThink call
end
-- Cigarette gets smaller over time and ashes effect
function PLUGIN:GetAshesValue(entity)
local currentWeightAshes = entity:GetFlexWeight( entity.flexIndexAshes )
if currentWeightAshes < 0.5 or currentWeightAshes < 0.1 then
return math.Clamp( currentWeightAshes + entity.addValueAshes, entity.minValueAshes, entity.maxValueAshes)
else
return 0.1
end
end
function PLUGIN:GetLengthValue(entity, currentLength)
return math.Clamp( currentLength + entity.addValueLength, entity.minValueLength, entity.maxValueLength )
end
function PLUGIN:PlayerDisconnected(client)
if (client.cigarette) then
local cigaretteItem = client.cigarette.cigaretteItem
if cigaretteItem then
cigaretteItem:OnRunStopSmoke()
end
end
end
function PLUGIN:CanPlayerUseCharacter(client, character)
if (client.cigarette and IsValid(client.cigarette)) then
return false, "Vous avez actuellement une cigarette dans la bouche, vous ne pouvez pas changer de personnage tout en l'ayant !"
end
end
function PLUGIN:PlayerDeath(client)
if (client.cigarette) then
local cigaretteItem = client.cigarette.cigaretteItem
if (cigaretteItem) then
cigaretteItem:OnRunStopSmoke()
if (cigaretteItem.cigaretteEnt) then cigaretteItem.cigaretteEnt:Remove() end
if (client.cigarette) then client.cigarette = nil end
end
end
end