Files
wnsrc/gamemodes/darkrp/plugins/cinema/sh_commands.lua
lifestorm 6a58f406b1 Upload
2024-08-04 23:54:45 +03:00

339 lines
9.8 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/
--]]
local PLUGIN = PLUGIN
ix.command.Add("MovieBars", {
description = "Adds a movie bar effect to the player screen. Run the command again with the zero radius argument to remove the effect.",
adminOnly = true,
arguments = {
ix.type.number
},
OnRun = function(self, client, radius )
PLUGIN:HandleMovieBars(client, radius)
end
})
ix.command.Add("CinematicCamera", {
description = "Sets every player in the range in the camera's perspective.",
adminOnly = true,
arguments = {
ix.type.number,
ix.type.text,
},
argumentNames = { "Range(0 for global)", "Cam ID"},
OnRun = function(self, client, range, camID)
local cameraEnts = ents.FindByClass("ix_cutscenecamera")
if !cameraEnts then
client:Notify("There aren't any cams in the map!")
end
if range == 0 then
for _, ent in ipairs(cameraEnts) do
if IsValid(ent) and ent:GetNWInt("CameraID") == camID then
for _, ply in ipairs(player.GetAll()) do
if IsValid(ply) and ply:IsPlayer() then
ply:SetViewEntity(ent)
end
end
end
end
else
local cameraEnts = ents.FindByClass("ix_cutscenecamera")
for _, ent in ipairs(cameraEnts) do
if IsValid(ent) and ent:GetNWInt("CameraID") == camID then
for _, ply in ipairs(ents.FindInSphere(ent:GetPos(), tonumber(range))) do
if IsValid(ply) and ply:IsPlayer() then
ply:SetViewEntity(ent)
end
end
break
end
end
end
end
})
ix.command.Add("CinematicCameraPlayer", {
description = "Sets a single player to a camera's ID.",
adminOnly = true,
arguments = {
ix.type.character,
ix.type.text,
},
argumentNames = { "Character", "Cam ID"},
OnRun = function(self, client, character, camID)
local cameraEnts = ents.FindByClass("ix_cutscenecamera")
local characterPly = character:GetPlayer()
if !characterPly then
client:Notify("Invalid Target!")
end
if !cameraEnts then
client:Notify("No cams in the map!")
end
local cameraEnts = ents.FindByClass("ix_cutscenecamera")
for _, ent in ipairs(cameraEnts) do
if IsValid(ent) and ent:GetNWInt("CameraID") == camID then
characterPly:SetViewEntity(ent)
break
end
end
end
})
ix.command.Add("ResetCinematicCamera", {
description = "Resets the cinematic camera for everybody",
adminOnly = true,
OnRun = function(self, client)
for _, ply in ipairs(player.GetAll()) do
if IsValid(ply) and ply:IsPlayer() then
ply:SetViewEntity(ply)
end
end
end
})
ix.command.Add("PortalNPC", {
description = "Summon an NPC at your targeted point.",
adminOnly = true,
arguments = { ix.type.string },
argumentNames = { "NPC" },
OnRun = function(self, player, npcName)
local npc = ents.Create(npcName)
if IsValid(npc) then
local trace = player:GetEyeTraceNoCursor()
if trace.Hit then
local destination = trace.HitPos + Vector(0, 0, 32)
local spawnDelay = math.Rand(1, 2)
timer.Simple(spawnDelay, function()
timer.Simple(0.2, function()
local flash = ents.Create("light_dynamic")
flash:SetKeyValue("brightness", "2")
flash:SetKeyValue("distance", "256")
flash:SetPos(destination + Vector(0, 0, 8))
flash:Fire("Color", "33 255 0")
flash:Spawn()
flash:Activate()
flash:Fire("TurnOn", "", 0)
timer.Simple(0.5, function() if IsValid(flash) then flash:Remove() end end)
util.ScreenShake(destination, 10, 100, 0.4, 1000, true)
end)
timer.Simple(0.25, function()
if IsValid(npc) then
if npc.CustomInitialize then
npc:CustomInitialize()
end
npc:SetPos(destination + Vector(0, 0, 16))
local angleToPlayer = (player:GetPos() - destination):Angle()
npc:SetAngles(Angle(0, angleToPlayer.y, 0))
local effectTeleport = VJ_HLR_Effect_PortalSpawn(destination)
effectTeleport:SetKeyValue("ParticleScale", "2")
effectTeleport:Fire("Kill", "", 1)
local dynLight = ents.Create("light_dynamic")
dynLight:SetKeyValue("brightness", "2")
dynLight:SetKeyValue("distance", "200")
dynLight:SetPos(destination)
dynLight:SetLocalAngles(Angle(0, angleToPlayer.y, 0))
dynLight:Fire("Color", "33 255 0")
dynLight:Spawn()
dynLight:Activate()
dynLight:Fire("TurnOn", "", 0)
dynLight:Fire("Kill", "", 0.3)
npc:Spawn()
npc:Activate()
end
end)
end)
else
player:Notify("Look somewhere valid!")
end
else
player:Notify(npcName.." isn't a valid NPC!")
end
end
})
ix.command.Add("PortalItem", {
description = "Summon an item at your targeted point.",
adminOnly = true,
arguments = { ix.type.text },
argumentNames = { "Item ID" },
OnRun = function(self, client, item)
local foundItem = false
for uniqueID, itemData in pairs(ix.item.list) do
if uniqueID == item then
foundItem = true
break
end
end
if foundItem then
local trace = client:GetEyeTraceNoCursor()
if trace.Hit then
local destination = trace.HitPos + Vector(0, 0, 32)
local spawnDelay = math.Rand(1, 2)
timer.Simple(spawnDelay, function()
timer.Simple(0.2, function()
local flash = ents.Create("light_dynamic")
flash:SetKeyValue("brightness", "2")
flash:SetKeyValue("distance", "256")
flash:SetPos(destination + Vector(0, 0, 8))
flash:Fire("Color", "33 255 0")
flash:Spawn()
flash:Activate()
flash:Fire("TurnOn", "", 0)
timer.Simple(0.5, function() if IsValid(flash) then flash:Remove() end end)
util.ScreenShake(destination, 10, 100, 0.4, 1000, true)
end)
timer.Simple(0.25, function()
local angleToPlayer = (client:GetPos() - destination):Angle()
local effectTeleport = VJ_HLR_Effect_PortalSpawn(destination)
effectTeleport:SetKeyValue("ParticleScale", "2")
effectTeleport:Fire("Kill", "", 1)
local dynLight = ents.Create("light_dynamic")
dynLight:SetKeyValue("brightness", "2")
dynLight:SetKeyValue("distance", "200")
dynLight:SetPos(destination)
dynLight:SetLocalAngles(Angle(0, angleToPlayer.y, 0))
dynLight:Fire("Color", "33 255 0")
dynLight:Spawn()
dynLight:Activate()
dynLight:Fire("TurnOn", "", 0)
dynLight:Fire("Kill", "", 0.3)
local itemEntity = ix.item.Spawn(item, destination, function(item, entity)
entity:SetRenderMode(RENDERMODE_TRANSCOLOR)
entity:SetColor(Color(255, 255, 255, 0))
timer.Create("portalItem"..CurTime(), 0.75, 1, function()
if IsValid(entity) then
entity:SetColor(Color(255, 255, 255, 255))
end
end)
end)
end)
end)
else
client:Notify("Look at a valid spot!")
end
else
client:Notify("You didn't put a valid item!")
end
end
})
ix.command.Add("PortalPlayer", {
description = "Summon a player to your targeted point.",
adminOnly = true,
arguments = { ix.type.character },
argumentNames = { "Nome" },
OnRun = function(self, player, character)
local target = character:GetPlayer()
local trace = player:GetEyeTraceNoCursor()
if trace.Hit then
if target then
local origin = target:GetPos()
local destination = trace.HitPos
targetPos = target:GetPos()
local flash = ents.Create("light_dynamic")
flash:SetKeyValue("brightness", "2")
flash:SetKeyValue("distance", "256")
flash:SetPos(targetPos + Vector(0, 0, 8))
flash:Fire("Color", "33 255 0")
flash:Spawn()
flash:Activate()
flash:Fire("TurnOn", "", 0)
timer.Simple(0.5, function() if IsValid(flash) then flash:Remove() end end)
util.ScreenShake(targetPos, 10, 100, 0.4, 1000, true)
local effectTeleport = VJ_HLR_Effect_PortalSpawn(targetPos + Vector(0, 0, 24))
effectTeleport:SetKeyValue("ParticleScale", "10")
effectTeleport:Fire("Kill", "", 1)
local dynLight = ents.Create("light_dynamic")
dynLight:SetKeyValue("brightness", "2")
dynLight:SetKeyValue("distance", "200")
dynLight:SetPos(targetPos + Vector(0, 0, 8))
dynLight:Fire("Color", "33 255 0")
dynLight:Spawn()
dynLight:Activate()
dynLight:Fire("TurnOn", "", 0)
dynLight:Fire("Kill", "", 0.3)
timer.Create("summonplayer_"..tostring(target:EntIndex()), 0.75, 1, function()
if IsValid(target) then
target:SetPos(destination)
local flash = ents.Create("light_dynamic")
flash:SetKeyValue("brightness", "2")
flash:SetKeyValue("distance", "256")
flash:SetPos(destination + Vector(0, 0, 24))
flash:Fire("Color", "33 255 0")
flash:Spawn()
flash:Activate()
flash:Fire("TurnOn", "", 0)
timer.Simple(0.5, function() if IsValid(flash) then flash:Remove() end end)
util.ScreenShake(destination, 10, 100, 0.4, 1000, true)
local effectTeleportExit = VJ_HLR_Effect_PortalSpawn(destination + Vector(0, 0, 100))
effectTeleportExit:SetKeyValue("ParticleScale", "10")
effectTeleportExit:Fire("Kill", "", 1)
local dynLight = ents.Create("light_dynamic")
dynLight:SetKeyValue("brightness", "2")
dynLight:SetKeyValue("distance", "200")
dynLight:SetPos(destination)
dynLight:Fire("Color", "33 255 0")
dynLight:Spawn()
dynLight:Activate()
dynLight:Fire("TurnOn", "", 0)
dynLight:Fire("Kill", "", 0.3)
end
end)
else
player:Notify(arguments[1].." is not a valid player!")
end
else
player:Notify("You're not looking at a valid place!")
end
end
})