mirror of
https://github.com/lifestorm/wnsrc.git
synced 2025-12-17 21:53:46 +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
|
||
})
|