mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +03:00
Upload
This commit is contained in:
144
gamemodes/darkrp/plugins/wncremator/sv_hooks.lua
Normal file
144
gamemodes/darkrp/plugins/wncremator/sv_hooks.lua
Normal file
@@ -0,0 +1,144 @@
|
||||
--[[
|
||||
| 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
|
||||
|
||||
game.AddParticles("particles/fire_01.pcf")
|
||||
PrecacheParticleSystem("fire_jet_01_flame")
|
||||
|
||||
util.PrecacheSound("ambient/explosions/explode_8.wav")
|
||||
|
||||
function PLUGIN:PostPlayerLoadout(client)
|
||||
if (client:Team() == FACTION_CREMATOR and client:GetCharacter()) then
|
||||
client:SetWalkSpeed(50)
|
||||
client:SetRunSpeed(70)
|
||||
client:SetHealth(300)
|
||||
client:SetMaxHealth(300)
|
||||
|
||||
client:StripWeapon("ix_keys")
|
||||
|
||||
client:Give("immolator")
|
||||
client:SelectWeapon("immolator")
|
||||
|
||||
client:SetNetVar("fuelTankHealth", 1)
|
||||
client:SetNetVar("fuelTankWasExploded", nil)
|
||||
end
|
||||
end
|
||||
|
||||
function PLUGIN:GetPlayerPainSound(client)
|
||||
if (client:Team() == FACTION_CREMATOR) then
|
||||
return "npc/cremator/alert_object.wav"
|
||||
end
|
||||
end
|
||||
|
||||
function PLUGIN:GetPlayerDeathSound(client)
|
||||
if (client:Team() == FACTION_CREMATOR) then
|
||||
return "npc/cremator/crem_die.wav"
|
||||
end
|
||||
end
|
||||
|
||||
local walkSounds = {"npc/cremator/foot1.wav", "npc/cremator/foot2.wav", "npc/cremator/foot3.wav"}
|
||||
|
||||
function PLUGIN:PlayerFootstep(client, position, foot, soundName, volume)
|
||||
if (client:Team() == FACTION_CREMATOR) then
|
||||
client:EmitSound(walkSounds[math.random(1, #walkSounds)])
|
||||
|
||||
return true
|
||||
end
|
||||
end
|
||||
|
||||
local fuelTankBone = "Bip01 Spine2"
|
||||
|
||||
local radius = 200
|
||||
local magnitude = 10
|
||||
|
||||
local fireTrailSeconds = 5
|
||||
|
||||
function PLUGIN:PlayerTraceAttack(client, damageInfo, vector, trace)
|
||||
if (client:Team() == FACTION_CREMATOR) then
|
||||
local fuelTankHealth = client:GetNetVar("fuelTankHealth", 0)
|
||||
|
||||
local bone = trace.HitBoxBone
|
||||
|
||||
if (client:GetBoneName(bone) == fuelTankBone) then
|
||||
if (client:GetNetVar("fuelTankWasExploded")) then return end
|
||||
|
||||
if (fuelTankHealth > 0) then
|
||||
client:SetNetVar("fuelTankHealth", fuelTankHealth - damageInfo:GetDamage())
|
||||
|
||||
return
|
||||
end
|
||||
|
||||
local timerId = "ixCrematorTankExplodeTimer_" .. client:EntIndex()
|
||||
|
||||
if (timer.Exists(timerId)) then return end
|
||||
|
||||
local matrix = client:GetBoneMatrix(bone)
|
||||
local position = matrix:GetTranslation()
|
||||
local angles = matrix:GetAngles()
|
||||
|
||||
local fireTrail = ents.Create( "info_particle_system" )
|
||||
fireTrail:SetKeyValue("effect_name", "fire_jet_01_flame")
|
||||
fireTrail:SetKeyValue("start_active", "1")
|
||||
fireTrail:SetPos(position)
|
||||
fireTrail:SetAngles(angles)
|
||||
fireTrail:SetParent(client)
|
||||
fireTrail:Spawn()
|
||||
fireTrail:Activate()
|
||||
fireTrail:Fire("Kill", nil, fireTrailSeconds)
|
||||
|
||||
client:SetNetVar("fuelTankWasExploded", true)
|
||||
|
||||
timer.Create(timerId, fireTrailSeconds, 1, function()
|
||||
if (!IsValid(client)) then return end
|
||||
|
||||
local playerPosition = client:GetPos()
|
||||
|
||||
local effect = EffectData()
|
||||
effect:SetStart(playerPosition)
|
||||
effect:SetOrigin(playerPosition)
|
||||
effect:SetScale(2)
|
||||
effect:SetRadius(radius)
|
||||
effect:SetMagnitude(magnitude)
|
||||
|
||||
util.Effect("Explosion", effect, true, true)
|
||||
util.Effect("HelicopterMegaBomb", effect, true, true)
|
||||
|
||||
local explode = ents.Create("info_particle_system")
|
||||
explode:SetKeyValue("effect_name", "hl2r_explosion_rpg")
|
||||
explode:SetOwner(client)
|
||||
explode:SetPos(playerPosition)
|
||||
explode:Spawn()
|
||||
explode:Activate()
|
||||
explode:Fire("start", "", 0)
|
||||
explode:Fire("kill", "", 30)
|
||||
|
||||
local blastDamage = DamageInfo()
|
||||
blastDamage:SetInflictor(client)
|
||||
blastDamage:SetAttacker(client)
|
||||
blastDamage:SetDamage(80)
|
||||
blastDamage:SetDamageType(bit.bor(DMG_BLAST, DMG_AIRBOAT))
|
||||
|
||||
util.BlastDamageInfo(blastDamage, playerPosition, radius)
|
||||
|
||||
local explosion = ents.Create("env_physexplosion")
|
||||
explosion:SetPos(playerPosition)
|
||||
explosion:SetKeyValue("magnitude", magnitude)
|
||||
explosion:SetKeyValue("radius", radius)
|
||||
explosion:SetKeyValue("spawnflags", "19")
|
||||
explosion:Spawn()
|
||||
explosion:Fire("Explode", "", 0)
|
||||
|
||||
client:ForceSequence("Flich01")
|
||||
end)
|
||||
end
|
||||
end
|
||||
end
|
||||
Reference in New Issue
Block a user