dobrograd-13-06-2022/garrysmod/addons/admin-sg/lua/plugins/ttt/sh_commands.lua
Jonny_Bro (Nikita) e4d5311906 first commit
2023-11-16 15:01:19 +05:00

178 lines
No EOL
5.2 KiB
Lua

--[[
© 2017 Thriving Ventures Limited do not share, re-distribute or modify
without permission of its author (gustaf@thrivingventures.com).
]]
local plugin = plugin;
local command = {};
command.help = "Add autoslays to a player.";
command.command = "aslay";
command.arguments = {"player"};
command.optionalArguments = {"amount", "reason"};
command.bSingleTarget = true;
command.immunity = SERVERGUARD.IMMUNITY.LESS;
command.aliases = {"slaynr", "autoslay"};
command.permissions = "SlayNR";
function command:OnPlayerExecute(player, target, arguments)
local clamped = nil;
arguments[2] = arguments[2] or 1;
clamped = math.Clamp((target.sg_autoslays or 0) + arguments[2], 0, 99);
target.sg_autoslays = clamped;
local queryObj = serverguard.mysql:Select("serverguard_ttt_autoslays");
queryObj:Where("steam_id", target:SteamID());
queryObj:Limit(1);
queryObj:Callback(function(result, status, lastID)
if (type(result) == "table" and #result > 0) then
local updateObj = serverguard.mysql:Update("serverguard_ttt_autoslays");
updateObj:Update("amount", target.sg_autoslays);
updateObj:Where("steam_id", target:SteamID());
updateObj:Limit(1);
updateObj:Execute();
else
local insertObj = serverguard.mysql:Insert("serverguard_ttt_autoslays");
insertObj:Insert("steam_id", target:SteamID());
insertObj:Insert("amount", target.sg_autoslays);
insertObj:Execute();
end;
end);
queryObj:Execute();
return true;
end;
function command:OnNotify(player, targets, arguments)
return SGPF("command_aslay", serverguard.player:GetName(player), arguments[2], util.GetNotifyListForTargets(targets), table.concat(arguments, " ", 3));
end;
plugin:AddCommand(command);
local command = {};
command.help = "Remove autoslays from a player.";
command.command = "raslay";
command.arguments = {"player"};
command.optionalArguments = {"amount"};
command.bSingleTarget = true;
command.immunity = SERVERGUARD.IMMUNITY.ANY;
command.aliases = {"raslaynr", "rslaynr"};
command.permissions = "Remove SlayNR";
function command:OnPlayerExecute(player, target, arguments)
local clamped = nil;
arguments[2] = arguments[2] or 1;
clamped = math.Clamp((target.sg_autoslays or 0) - arguments[2], 0, 99);
target.sg_autoslays = clamped;
local updateObj = serverguard.mysql:Update("serverguard_ttt_autoslays");
updateObj:Update("amount", target.sg_autoslays);
updateObj:Where("steam_id", target:SteamID());
updateObj:Limit(1);
updateObj:Execute();
return true;
end;
function command:OnNotify(player, targets, arguments)
return SGPF("command_raslay", serverguard.player:GetName(player), arguments[2], util.GetNotifyListForTargets(targets));
end;
plugin:AddCommand(command);
local command = {};
command.help = "Set a player's karma.";
command.command = "setkarma";
command.arguments = {"player"};
command.optionalArguments = {"amount"};
command.immunity = SERVERGUARD.IMMUNITY.LESS;
command.aliases = {"karma"};
command.permissions = "Set Karma";
function command:OnPlayerExecute(player, target, arguments)
arguments[2] = tonumber(arguments[2]) or 1000;
target:SetBaseKarma(arguments[2]);
target:SetLiveKarma(arguments[2]);
return true;
end;
function command:OnNotify(player, targets, arguments)
return SGPF("command_setkarma", serverguard.player:GetName(player), util.GetNotifyListForTargets(targets, true), arguments[2]);
end;
plugin:AddCommand(command);
local command = {};
command.help = "Set a player's credits.";
command.command = "setcredits";
command.arguments = {"player", "amount"};
command.immunity = SERVERGUARD.IMMUNITY.ANY;
command.aliases = {"credits"};
command.permissions = "Set Credits";
function command:OnPlayerExecute(player, target, arguments)
arguments[2] = tonumber(arguments[2]);
if (arguments[2]) then
arguments[2] = math.Clamp(arguments[2], 0, 200);
target:SetCredits(arguments[2]);
return true;
end;
serverguard.Notify(player, SGPF("invalid_number"));
end;
function command:OnNotify(player, targets, arguments)
return SGPF("command_setcredits", serverguard.player:GetName(player), util.GetNotifyListForTargets(targets, true), arguments[2]);
end;
plugin:AddCommand(command);
local command = {};
command.help = "Set a player's role.";
command.command = "setrole";
command.arguments = {"player", "role"};
command.immunity = SERVERGUARD.IMMUNITY.LESS;
command.bSingleTarget = true;
command.aliases = {"role", "setteam", "team"};
command.permissions = "Set Role";
function command:OnPlayerExecute(player, target, arguments)
local role = plugin.roles[string.lower(arguments[2])];
if (role) then
target:SetRole(role);
SendFullStateUpdate();
return true;
end;
serverguard.Notify(player, SGPF("invalid_role"));
end;
function command:OnNotify(player, targets, arguments)
return SGPF("command_setrole", serverguard.player:GetName(player), util.GetNotifyListForTargets(targets, true), arguments[2]);
end;
plugin:AddCommand(command);
local command = {};
command.help = "Restart the round.";
command.command = "restartround";
command.aliases = {"roundrestart"};
command.permissions = "Restart Round";
function command:Execute(player, silent, arguments)
RunConsoleCommand("ttt_roundrestart");
serverguard.Notify(nil, SGPF("command_restartround", serverguard.player:GetName(player)));
end;
plugin:AddCommand(command);