mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 13:53:45 +03:00
677 lines
18 KiB
Lua
677 lines
18 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/
|
|||
|
|
--]]
|
|||
|
|
|
|||
|
|
do
|
|||
|
|
local COMMAND = {}
|
|||
|
|
COMMAND.arguments = ix.type.text
|
|||
|
|
|
|||
|
|
local lastDispatchCommand = 0
|
|||
|
|
|
|||
|
|
function COMMAND:OnRun(client, message)
|
|||
|
|
if (!client:IsRestricted()) then
|
|||
|
|
local doubleCommand = false
|
|||
|
|
local curTime = CurTime()
|
|||
|
|
local isVoiceCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(message), 9) == "/dispatch") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 10)
|
|||
|
|
elseif (string.Left(string.lower(message), 8) == "dispatch") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 9)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
for voiceCommand, _ in pairs(Schema.voices.stored["dispatch"]) do
|
|||
|
|
if (message:lower() == voiceCommand:lower()) then
|
|||
|
|
isVoiceCommand = true
|
|||
|
|
|
|||
|
|
break
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (!isVoiceCommand) then
|
|||
|
|
if (lastDispatchCommand < curTime) then
|
|||
|
|
lastDispatchCommand = curTime + 5
|
|||
|
|
|
|||
|
|
return "@dispatchTypoWarning"
|
|||
|
|
else
|
|||
|
|
lastDispatchCommand = 0
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/dispatch")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "dispatch", message)
|
|||
|
|
else
|
|||
|
|
return "@notNow"
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.command.Add("Dispatch", COMMAND)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
do
|
|||
|
|
local COMMAND = {}
|
|||
|
|
COMMAND.arguments = ix.type.text
|
|||
|
|
|
|||
|
|
function COMMAND:OnRun(client, message)
|
|||
|
|
if (!client:IsRestricted()) then
|
|||
|
|
local doubleCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(message), 10) == "/broadcast") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 11)
|
|||
|
|
elseif (string.Left(string.lower(message), 9) == "broadcast") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 10)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/broadcast")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "broadcast", message)
|
|||
|
|
else
|
|||
|
|
return "@notNow"
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.command.Add("Broadcast", COMMAND)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
|
|||
|
|
do
|
|||
|
|
local COMMAND = {}
|
|||
|
|
COMMAND.arguments = ix.type.text
|
|||
|
|
|
|||
|
|
function COMMAND:OnRun(client, message)
|
|||
|
|
if (!client:IsRestricted()) then
|
|||
|
|
local doubleCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(message), 12) == "/broadcastme") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 13)
|
|||
|
|
elseif (string.Left(string.lower(message), 11) == "broadcastme") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 12)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/broadcastMe")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "broadcastMe", message)
|
|||
|
|
else
|
|||
|
|
return "@notNow"
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.command.Add("BroadcastMe", COMMAND)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
do
|
|||
|
|
local COMMAND = {}
|
|||
|
|
COMMAND.arguments = ix.type.text
|
|||
|
|
|
|||
|
|
function COMMAND:OnRun(client, message)
|
|||
|
|
if (!client:IsRestricted()) then
|
|||
|
|
local doubleCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(message), 12) == "/broadcastit") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 13)
|
|||
|
|
elseif (string.Left(string.lower(message), 11) == "broadcastit") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 12)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/broadcastIt")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "broadcastIt", message)
|
|||
|
|
else
|
|||
|
|
return "@notNow"
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.command.Add("BroadcastIt", COMMAND)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.command.Add("LocalBroadcast", {
|
|||
|
|
arguments = {
|
|||
|
|
ix.type.string,
|
|||
|
|
bit.bor(ix.type.number, ix.type.optional)
|
|||
|
|
},
|
|||
|
|
OnRun = function(self, client, broadcast, range)
|
|||
|
|
local _range = range or (ix.config.Get("chatRange", 280) * 2)
|
|||
|
|
|
|||
|
|
ix.chat.classes.localbroadcast.range = _range * _range
|
|||
|
|
|
|||
|
|
local doubleCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(broadcast), 15) == "/localbroadcast") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
broadcast = string.Right(broadcast, #broadcast - 16)
|
|||
|
|
elseif (string.Left(string.lower(broadcast), 14) == "localbroadcast") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
broadcast = string.Right(broadcast, #broadcast - 15)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/LocalBroadcast")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "localbroadcast", broadcast)
|
|||
|
|
end,
|
|||
|
|
indicator = "chatPerforming"
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("LocalBroadcastMe", {
|
|||
|
|
arguments = {
|
|||
|
|
ix.type.string,
|
|||
|
|
bit.bor(ix.type.number, ix.type.optional)
|
|||
|
|
},
|
|||
|
|
OnRun = function(self, client, broadcast, range)
|
|||
|
|
local _range = range or (ix.config.Get("chatRange", 280) * 2)
|
|||
|
|
|
|||
|
|
ix.chat.classes.localbroadcastme.range = _range * _range
|
|||
|
|
|
|||
|
|
local doubleCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(broadcast), 17) == "/localbroadcastme") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
broadcast = string.Right(broadcast, #broadcast - 18)
|
|||
|
|
elseif (string.Left(string.lower(broadcast), 16) == "localbroadcastme") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
broadcast = string.Right(broadcast, #broadcast - 17)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/LocalBroadcastMe")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "localbroadcastme", broadcast)
|
|||
|
|
end,
|
|||
|
|
indicator = "chatPerforming"
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("LocalBroadcastIt", {
|
|||
|
|
arguments = {
|
|||
|
|
ix.type.string,
|
|||
|
|
bit.bor(ix.type.number, ix.type.optional)
|
|||
|
|
},
|
|||
|
|
OnRun = function(self, client, broadcast, range)
|
|||
|
|
local _range = range or (ix.config.Get("chatRange", 280) * 2)
|
|||
|
|
|
|||
|
|
ix.chat.classes.localbroadcastit.range = _range * _range
|
|||
|
|
|
|||
|
|
local doubleCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(broadcast), 17) == "/localbroadcastit") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
broadcast = string.Right(broadcast, #broadcast - 18)
|
|||
|
|
elseif (string.Left(string.lower(broadcast), 16) == "localbroadcastit") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
broadcast = string.Right(broadcast, #broadcast - 17)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/LocalBroadcastIt")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "localbroadcastit", broadcast)
|
|||
|
|
end,
|
|||
|
|
indicator = "chatPerforming"
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("Event", {
|
|||
|
|
description = "@cmdEvent",
|
|||
|
|
arguments = ix.type.text,
|
|||
|
|
privilege = "Event",
|
|||
|
|
OnRun = function(self, client, message)
|
|||
|
|
local doubleCommand = false
|
|||
|
|
|
|||
|
|
-- This could probably be done a bit smarter but I'm sure it'll do.
|
|||
|
|
if (string.Left(string.lower(message), 6) == "/event") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 7)
|
|||
|
|
elseif (string.Left(string.lower(message), 5) == "event") then
|
|||
|
|
doubleCommand = true
|
|||
|
|
|
|||
|
|
message = string.Right(message, #message - 6)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (doubleCommand) then
|
|||
|
|
client:NotifyLocalized("textDoubleCommand", "/Event")
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.chat.Send(client, "event", message)
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
do
|
|||
|
|
local COMMAND = {}
|
|||
|
|
|
|||
|
|
function COMMAND:OnRun(client, arguments)
|
|||
|
|
if (!hook.Run("CanPlayerViewObjectives", client)) then
|
|||
|
|
return "@noPerm"
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
netstream.Start(client, "ViewObjectives", Schema.CombineObjectives)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
ix.command.Add("ViewObjectives", COMMAND)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
do
|
|||
|
|
ix.command.Add("CharSearch", {
|
|||
|
|
description = "Search the player you are looking at. Will request permission to do so if they are not tied yet.",
|
|||
|
|
OnCheckAccess = function(self, client)
|
|||
|
|
if (client:IsRestricted()) then
|
|||
|
|
return false, "@notNow"
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
return true
|
|||
|
|
end,
|
|||
|
|
OnRun = function(self, client)
|
|||
|
|
local data = {}
|
|||
|
|
data.start = client:GetShootPos()
|
|||
|
|
data.endpos = data.start + client:GetAimVector() * 96
|
|||
|
|
data.filter = client
|
|||
|
|
local target = util.TraceLine(data).Entity
|
|||
|
|
local isRagdoll = false
|
|||
|
|
|
|||
|
|
if (target:IsRagdoll() and target.ixPlayer) then
|
|||
|
|
target = target.ixPlayer
|
|||
|
|
isRagdoll = true
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (IsValid(target) and target:IsPlayer()) then
|
|||
|
|
if (target:IsRestricted() or isRagdoll) then
|
|||
|
|
Schema:SearchPlayer(client, target)
|
|||
|
|
elseif (!IsValid(target.ixSearchRequest)) then
|
|||
|
|
-- first search
|
|||
|
|
-- succesful searches or searching other target clears this
|
|||
|
|
if (!client.ixLastSearchRequest or client.ixLastSearchRequest.target != target) then
|
|||
|
|
client.ixLastSearchRequest = {target = target, time = 0, count = 1}
|
|||
|
|
-- second search
|
|||
|
|
elseif (count == 1) then
|
|||
|
|
-- if it was within 15 seconds
|
|||
|
|
if (os.time() < client.ixLastSearchRequest.time) then
|
|||
|
|
client.ixLastSearchRequest.count = 2
|
|||
|
|
end
|
|||
|
|
-- third search
|
|||
|
|
elseif (count == 2) then
|
|||
|
|
-- again within 15 seconds -> deny it
|
|||
|
|
if (os.time() < client.ixLastSearchRequest.time) then
|
|||
|
|
client:NotifyLocalized("Please wait 15 seconds before sending a third request!")
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
client.ixLastSearchRequest.time = os.time() + 15
|
|||
|
|
|
|||
|
|
client:NotifyLocalized("Search request sent.")
|
|||
|
|
netstream.Start(target, "SearchRequest", client)
|
|||
|
|
target.ixSearchRequest = client
|
|||
|
|
else
|
|||
|
|
return "@notNow"
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
return "@plyNotValid"
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local applyPhrases = {
|
|||
|
|
"%s, #%s.",
|
|||
|
|
"İsmim %s ve ID numaram #%s.",
|
|||
|
|
"Ben %s ve ID numaram #%s.",
|
|||
|
|
"%s. ID numaram %s."
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
local namePhrases = {
|
|||
|
|
"%s.",
|
|||
|
|
"Ben %s.",
|
|||
|
|
"Adım %s.",
|
|||
|
|
"İsim: %s"
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
ix.command.Add("ID", {
|
|||
|
|
description = "@cmdApply",
|
|||
|
|
OnRun = function(self, client, arguments)
|
|||
|
|
local character = client:GetCharacter()
|
|||
|
|
local cid = character:GetCid()
|
|||
|
|
|
|||
|
|
if (cid) then
|
|||
|
|
ix.chat.Send(client, "ic", string.format(table.Random(applyPhrases), character:GetData("fakeName", client:GetName()), cid))
|
|||
|
|
else
|
|||
|
|
ix.chat.Send(client, "ic", string.format(table.Random(namePhrases), character:GetData("fakeName", client:GetName())))
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("CharFallOver", {
|
|||
|
|
description = "@cmdCharFallOver",
|
|||
|
|
arguments = bit.bor(ix.type.number, ix.type.optional),
|
|||
|
|
OnRun = function(self, client, time)
|
|||
|
|
-- Anti-Exploit measure. Just silently fail if near a door.
|
|||
|
|
for _, entity in ipairs(ents.FindInSphere(client:GetPos(), 50)) do
|
|||
|
|
if (entity:GetClass() == "func_door" or entity:GetClass() == "func_door_rotating" or entity:GetClass() == "prop_door_rotating") then return end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (!client:Alive() or client:GetMoveType() == MOVETYPE_NOCLIP) then
|
|||
|
|
return "@notNow"
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (hook.Run("PlayerCanFallOver", client) == false) then
|
|||
|
|
return "@notNow"
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (time and time > 0) then
|
|||
|
|
time = math.Clamp(time, 1, 60)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (!IsValid(client.ixRagdoll)) then
|
|||
|
|
client:SetRagdolled(true, time)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("CharGetUp", {
|
|||
|
|
description = "@cmdCharGetUp",
|
|||
|
|
OnRun = function(self, client, arguments)
|
|||
|
|
-- Anti-Exploit measure. Just silently fail if near a door.
|
|||
|
|
for _, entity in ipairs(ents.FindInSphere(client:GetPos(), 50)) do
|
|||
|
|
if (entity:GetClass() == "func_door" or entity:GetClass() == "func_door_rotating" or entity:GetClass() == "prop_door_rotating") then return end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local entity = client.ixRagdoll
|
|||
|
|
|
|||
|
|
if (IsValid(entity) and entity.ixGrace and entity.ixGrace < CurTime() and
|
|||
|
|
entity:GetVelocity():Length2D() < 8 and !entity.ixWakingUp) then
|
|||
|
|
entity.ixWakingUp = true
|
|||
|
|
entity:CallOnRemove("CharGetUp", function()
|
|||
|
|
client:SetAction()
|
|||
|
|
end)
|
|||
|
|
|
|||
|
|
client:SetAction("@gettingUp", 5, function()
|
|||
|
|
if (!IsValid(entity)) then
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
-- Anti-Exploit measure. Just silently fail if near a door.
|
|||
|
|
for _, entity in ipairs(ents.FindInSphere(client:GetPos(), 50)) do
|
|||
|
|
if (entity:GetClass() == "func_door" or entity:GetClass() == "func_door_rotating" or entity:GetClass() == "prop_door_rotating") then return end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
hook.Run("OnCharacterGetup", client, entity)
|
|||
|
|
entity:Remove()
|
|||
|
|
end)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("Punch", {
|
|||
|
|
description = "@cmdPunch",
|
|||
|
|
OnCheckAccess = function(self, client)
|
|||
|
|
return client:GetCharacter() and client:GetCharacter():GetFaction() == FACTION_OTA
|
|||
|
|
end,
|
|||
|
|
OnRun = function(self, client)
|
|||
|
|
local data = {}
|
|||
|
|
data.start = client:GetShootPos()
|
|||
|
|
data.endpos = data.start + client:GetAimVector() * 96
|
|||
|
|
data.filter = client
|
|||
|
|
local target = util.TraceLine(data).Entity
|
|||
|
|
|
|||
|
|
if (IsValid(target) and target:IsPlayer() and target:GetMoveType() == MOVETYPE_WALK) then
|
|||
|
|
local character = target:GetCharacter()
|
|||
|
|
|
|||
|
|
if (character and character:GetFaction() != FACTION_OTA) then
|
|||
|
|
if (!IsValid(target.ixRagdoll)) then
|
|||
|
|
target:EmitSound("physics/body/body_medium_impact_hard"..math.random(1, 6)..".wav")
|
|||
|
|
client:ForceSequence("Melee_Gunhit", function()
|
|||
|
|
if (IsValid(target)) then
|
|||
|
|
ix.log.Add(target, "knockedOut", "hit by punch command used by "..client:GetName())
|
|||
|
|
target:SetRagdolled(true, 60)
|
|||
|
|
end
|
|||
|
|
end, 0.75, true)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
client:Notify("Geçersiz hedef")
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("ListColors", {
|
|||
|
|
description = "@cmdListColors",
|
|||
|
|
OnRun = function(self, client)
|
|||
|
|
client:SendLua([[for colorName, color in pairs(Schema.colors) do MsgC(color, "██████████ " .. colorName:upper() .. "\n") end]])
|
|||
|
|
|
|||
|
|
return "@ColorsPrinted" -- Bogos Binted
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("VisorMessage", {
|
|||
|
|
description = "@cmdVisorMessage",
|
|||
|
|
arguments = {
|
|||
|
|
ix.type.string,
|
|||
|
|
bit.bor(ix.type.string, ix.type.optional),
|
|||
|
|
bit.bor(ix.type.bool, ix.type.optional)
|
|||
|
|
},
|
|||
|
|
OnCheckAccess = function(self, client)
|
|||
|
|
local character = client:GetCharacter()
|
|||
|
|
|
|||
|
|
return character and character:GetFaction() == FACTION_OTA and (character:GetClass() == CLASS_ORD or character:GetClass() == CLASS_EOW)
|
|||
|
|
end,
|
|||
|
|
OnRun = function(self, client, visorMessage, messageColor, isImportant)
|
|||
|
|
if (messageColor and Schema.colors[messageColor]) then
|
|||
|
|
messageColor = Schema.colors[messageColor]
|
|||
|
|
else
|
|||
|
|
messageColor = Color(255, 255, 255)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
local receivers = {}
|
|||
|
|
for _, player in pairs(player.GetAll()) do
|
|||
|
|
if (player:Team() == FACTION_OTA) then
|
|||
|
|
receivers[#receivers + 1] = player
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (isImportant) then
|
|||
|
|
ix.combineNotify:AddImportantNotification("MSG:// " .. visorMessage, messageColor, nil, nil, receivers)
|
|||
|
|
else
|
|||
|
|
ix.combineNotify:AddNotification("MSG:// " .. visorMessage, messageColor, nil, nil, receivers)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("PlyNotify", {
|
|||
|
|
description = "@cmdPlyNotify",
|
|||
|
|
adminOnly = true,
|
|||
|
|
arguments = {
|
|||
|
|
ix.type.player,
|
|||
|
|
ix.type.text
|
|||
|
|
},
|
|||
|
|
OnRun = function(self, client, target, notification)
|
|||
|
|
target:Notify(notification)
|
|||
|
|
|
|||
|
|
return "@notificationSent"
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("WhisperDirect", {
|
|||
|
|
alias = {"WD"},
|
|||
|
|
description = "@cmdWD",
|
|||
|
|
combineBeep = true,
|
|||
|
|
arguments = {
|
|||
|
|
ix.type.string,
|
|||
|
|
ix.type.text
|
|||
|
|
},
|
|||
|
|
OnRun = function(self, client, target, text)
|
|||
|
|
if (target == "@") then
|
|||
|
|
local traceEnt = client:GetEyeTraceNoCursor().Entity
|
|||
|
|
|
|||
|
|
if (traceEnt and traceEnt:IsPlayer()) then
|
|||
|
|
target = traceEnt
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
target = ix.util.FindPlayer(target)
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (!target or isstring(target)) then
|
|||
|
|
return "@charNoExist"
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (target:GetPos():Distance(client:GetPos()) <= ix.config.Get("chatRange", 280) * 0.25) then
|
|||
|
|
ix.chat.Send(client, "wd", text, false, {client, target}, {target = target})
|
|||
|
|
else
|
|||
|
|
return "@targetTooFar"
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("GetCWUFlags", {
|
|||
|
|
description = "@cmdGetCWUFlags",
|
|||
|
|
OnCheckAccess = function(self, client)
|
|||
|
|
return client:Team() == FACTION_WORKERS or client:Team() == FACTION_MEDICAL
|
|||
|
|
end,
|
|||
|
|
OnRun = function(self, client) -- Just going to recycle the tempflags code.
|
|||
|
|
local curTime = CurTime()
|
|||
|
|
local nextCommandUse = client:GetLocalVar("nextCWUFlags", 0)
|
|||
|
|
|
|||
|
|
if (nextCommandUse > curTime) then return "@cwuFlagsCooldown" end
|
|||
|
|
|
|||
|
|
local flags = client:GetLocalVar("tempFlags", {})
|
|||
|
|
local newTime = os.time() + 3600 -- 1 Hour
|
|||
|
|
local character = client:GetCharacter()
|
|||
|
|
local flagsToGive = "pet"
|
|||
|
|
|
|||
|
|
for i = 1, 3 do
|
|||
|
|
local flag = flagsToGive[i]
|
|||
|
|
local info = ix.flag.list[flag]
|
|||
|
|
|
|||
|
|
if (!flags[flag] and character:HasFlags(flag)) then continue end
|
|||
|
|
|
|||
|
|
flags[flag] = newTime
|
|||
|
|
|
|||
|
|
if (info.callback) then
|
|||
|
|
info.callback(client, true)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
client:SetLocalVar("tempFlags", flags)
|
|||
|
|
|
|||
|
|
for _, player in ipairs(player.GetAll()) do
|
|||
|
|
if (player:IsAdmin()) then
|
|||
|
|
player:ChatNotifyLocalized("cwuFlagsGivenAdmins", client:GetName(), client:SteamName())
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
client:NotifyLocalized("cwuFlagsGivenPlayer")
|
|||
|
|
|
|||
|
|
client:SetLocalVar("nextCWUFlags", curTime + 3600)
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("UnStuck", {
|
|||
|
|
description = "@cmdUnstuck",
|
|||
|
|
OnRun = function(self, client)
|
|||
|
|
local curTime = CurTime()
|
|||
|
|
local nextCommandUse = client:GetLocalVar("nextUnstuck", 0)
|
|||
|
|
|
|||
|
|
if (nextCommandUse > curTime) then return "@unstuckCooldown" end
|
|||
|
|
|
|||
|
|
local operators = {"+", "-", "*"}
|
|||
|
|
|
|||
|
|
local unstuckNumberOne = math.random(1, 100)
|
|||
|
|
local unstuckNumberTwo = math.random(1, 100)
|
|||
|
|
local unstuckOperator = operators[math.random(1, 3)]
|
|||
|
|
-- sorry for the spaces
|
|||
|
|
client:RequestString("Use if stuck or killed by a prop. TPs back to spawn and resets HP. Do not abuse.", " To proceed, please solve the following mathematical problem: " .. unstuckNumberOne .. " " .. unstuckOperator .. " " .. unstuckNumberTwo .. " = ? ", function(text)
|
|||
|
|
if (text) then text = tonumber(text) end
|
|||
|
|
|
|||
|
|
if (text and isnumber(text)) then
|
|||
|
|
local answer = 0
|
|||
|
|
|
|||
|
|
if (unstuckOperator == "+") then
|
|||
|
|
answer = unstuckNumberOne + unstuckNumberTwo
|
|||
|
|
elseif (unstuckOperator == "-") then
|
|||
|
|
answer = unstuckNumberOne - unstuckNumberTwo
|
|||
|
|
else
|
|||
|
|
answer = unstuckNumberOne * unstuckNumberTwo
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
if (text == answer) then
|
|||
|
|
client:RequestString("Use if stuck or killed by a prop. TPs back to spawn and resets HP. Do not abuse.", "Type below the reason why you need to run the command", function(reasontext)
|
|||
|
|
for _, player in ipairs(player.GetAll()) do
|
|||
|
|
if (player:IsAdmin()) then
|
|||
|
|
player:ChatNotifyLocalized("unstuckAdmins", client:GetName(), client:SteamName(), client:GetArea(), reasontext)
|
|||
|
|
ix.log.Add(client, "command"," /UnStuck their reason to use it was: "..reasontext)
|
|||
|
|
end
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
client:NotifyLocalized("unstuckPlayer")
|
|||
|
|
|
|||
|
|
client:Spawn()
|
|||
|
|
client:SetLocalVar("nextUnstuck", curTime + 3600)
|
|||
|
|
end, "")
|
|||
|
|
else
|
|||
|
|
client:NotifyLocalized("unstuckAnswerIncorrect")
|
|||
|
|
end
|
|||
|
|
else
|
|||
|
|
client:NotifyLocalized("unstuckAnswerInvalid")
|
|||
|
|
end
|
|||
|
|
end, "")
|
|||
|
|
end
|
|||
|
|
})
|
|||
|
|
|
|||
|
|
ix.command.Add("SetOwnName", {
|
|||
|
|
description = "Set your own character's name, if allowed.",
|
|||
|
|
arguments = ix.type.text,
|
|||
|
|
OnRun = function(self, client, name)
|
|||
|
|
if (client:Team() != FACTION_OTA) then
|
|||
|
|
client:Notify("Kendi adınızı belirlemenize izin verilmez!")
|
|||
|
|
|
|||
|
|
return
|
|||
|
|
end
|
|||
|
|
|
|||
|
|
client:GetCharacter():SetName(name)
|
|||
|
|
client:Notify("Adınızı şu şekilde ayarladınız: " .. name .. ".")
|
|||
|
|
end
|
|||
|
|
})
|