mirror of
https://github.com/daffyyyy/CS2-SimpleAdmin.git
synced 2026-02-17 18:39:07 +00:00
Warns - last?
- Warn list + unwarn
This commit is contained in:
@@ -11,7 +11,7 @@ using System.Collections.Concurrent;
|
||||
|
||||
namespace CS2_SimpleAdmin;
|
||||
|
||||
[MinimumApiVersion(246)]
|
||||
[MinimumApiVersion(253)]
|
||||
public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdminConfig>
|
||||
{
|
||||
public static CS2_SimpleAdmin Instance { get; private set; } = new();
|
||||
@@ -41,7 +41,7 @@ public partial class CS2_SimpleAdmin : BasePlugin, IPluginConfig<CS2_SimpleAdmin
|
||||
public override string ModuleName => "CS2-SimpleAdmin" + (Helper.IsDebugBuild ? " (DEBUG)" : " (RELEASE)");
|
||||
public override string ModuleDescription => "Simple admin plugin for Counter-Strike 2 :)";
|
||||
public override string ModuleAuthor => "daffyy & Dliix66";
|
||||
public override string ModuleVersion => "1.5.1a";
|
||||
public override string ModuleVersion => "1.5.2a";
|
||||
|
||||
public CS2_SimpleAdminConfig Config { get; set; } = new();
|
||||
|
||||
|
||||
@@ -10,9 +10,9 @@
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.247" />
|
||||
<PackageReference Include="CounterStrikeSharp.API" Version="1.0.255" />
|
||||
<PackageReference Include="Dapper" Version="2.1.35" />
|
||||
<PackageReference Include="Discord.Net.Webhook" Version="3.15.2" />
|
||||
<PackageReference Include="Discord.Net.Webhook" Version="3.15.3" />
|
||||
<PackageReference Include="MySqlConnector" Version="2.3.7" />
|
||||
<PackageReference Include="Newtonsoft.Json" Version="*" />
|
||||
</ItemGroup>
|
||||
|
||||
@@ -572,119 +572,4 @@ public partial class CS2_SimpleAdmin
|
||||
Helper.LogCommand(caller, $"css_warn {(string.IsNullOrEmpty(player.PlayerName) ? player.SteamID.ToString() : player.PlayerName)} {time} {reason}");
|
||||
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Warn, _localizer);
|
||||
}
|
||||
|
||||
/*[ConsoleCommand("css_addwarn")]
|
||||
[RequiresPermissions("@css/ban")]
|
||||
[CommandHelper(minArgs: 1, usage: "<steamid> [time in minutes/0 perm] [reason]", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
|
||||
public void OnAddWarnCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
{
|
||||
if (_database == null) return;
|
||||
|
||||
var callerName = caller == null ? "Console" : caller.PlayerName;
|
||||
|
||||
if (command.ArgCount < 2)
|
||||
return;
|
||||
if (string.IsNullOrEmpty(command.GetArg(1))) return;
|
||||
|
||||
if (!Helper.ValidateSteamId(command.GetArg(1), out var steamId) || steamId == null)
|
||||
{
|
||||
command.ReplyToCommand($"Invalid SteamID64.");
|
||||
return;
|
||||
}
|
||||
|
||||
var steamid = steamId.SteamId64.ToString();
|
||||
|
||||
var reason = _localizer?["sa_unknown"] ?? "Unknown";
|
||||
|
||||
int.TryParse(command.GetArg(2), out var time);
|
||||
|
||||
if (CheckValidBan(caller, time) == false)
|
||||
return;
|
||||
|
||||
if (command.ArgCount >= 3 && command.GetArg(3).Length > 0)
|
||||
reason = command.GetArg(3);
|
||||
|
||||
var adminInfo = new PlayerInfo
|
||||
{
|
||||
SteamId = caller?.SteamID.ToString(),
|
||||
Name = caller?.PlayerName,
|
||||
IpAddress = caller?.IpAddress?.Split(":")[0]
|
||||
};
|
||||
|
||||
var matches = Helper.GetPlayerFromSteamid64(steamid);
|
||||
if (matches.Count == 1)
|
||||
{
|
||||
var player = matches.FirstOrDefault();
|
||||
if (player != null && player.IsValid)
|
||||
{
|
||||
if (!caller!.CanTarget(player))
|
||||
{
|
||||
command.ReplyToCommand($"{player.PlayerName} is more powerful than you!");
|
||||
return;
|
||||
}
|
||||
|
||||
player.Pawn.Value!.Freeze();
|
||||
if (player.UserId.HasValue)
|
||||
AddTimer(Config.KickTime, () => Helper.KickPlayer(player.UserId.Value), CounterStrikeSharp.API.Modules.Timers.TimerFlags.STOP_ON_MAPCHANGE);
|
||||
|
||||
if (time == 0)
|
||||
{
|
||||
if (!player.IsBot && !player.IsHLTV)
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
player.PrintToCenter(_localizer!["sa_player_ban_message_perm", reason, caller == null ? "Console" : caller.PlayerName]);
|
||||
}
|
||||
if (caller == null || !SilentPlayers.Contains(caller.Slot))
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_perm",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (player is { IsBot: false, IsHLTV: false })
|
||||
using (new WithTemporaryCulture(player.GetLanguage()))
|
||||
{
|
||||
player.PrintToCenter(_localizer!["sa_player_ban_message_time", reason, time, caller == null ? "Console" : caller.PlayerName]);
|
||||
}
|
||||
|
||||
if (caller == null || !SilentPlayers.Contains(caller.Slot))
|
||||
{
|
||||
foreach (var controller in Helper.GetValidPlayers().Where(controller => controller is { IsValid: true, IsBot: false }))
|
||||
{
|
||||
if (_localizer != null)
|
||||
controller.SendLocalizedMessage(_localizer,
|
||||
"sa_admin_ban_message_time",
|
||||
callerName,
|
||||
player.PlayerName ?? string.Empty,
|
||||
reason,
|
||||
time);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _localizer);
|
||||
}
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
BanManager banManager = new(_database, Config);
|
||||
await banManager.AddBanBySteamid(steamid, adminInfo, reason, time);
|
||||
});
|
||||
|
||||
Helper.LogCommand(caller, command);
|
||||
//Helper.SendDiscordPenaltyMessage(caller, player, reason, time, Helper.PenaltyType.Ban, _discordWebhookClientPenalty, _localizer);
|
||||
if (UnlockedCommands)
|
||||
Server.ExecuteCommand($"banid 2 {steamId.SteamId3}");
|
||||
|
||||
command.ReplyToCommand($"Banned player with steamid {steamid}.");
|
||||
}*/
|
||||
}
|
||||
@@ -6,6 +6,7 @@ using CounterStrikeSharp.API.Modules.Admin;
|
||||
using CounterStrikeSharp.API.Modules.Commands;
|
||||
using CounterStrikeSharp.API.Modules.Cvars;
|
||||
using CounterStrikeSharp.API.Modules.Entities;
|
||||
using CounterStrikeSharp.API.Modules.Menu;
|
||||
using CounterStrikeSharp.API.Modules.Utils;
|
||||
using CS2_SimpleAdmin.Menus;
|
||||
using Microsoft.Extensions.Logging;
|
||||
@@ -425,6 +426,63 @@ namespace CS2_SimpleAdmin
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
[ConsoleCommand("css_warns")]
|
||||
[CommandHelper(minArgs: 1, usage: "<#userid or name>", whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
|
||||
[RequiresPermissions("@css/kick")]
|
||||
public void OnWarnsCommand(CCSPlayerController? caller, CommandInfo command)
|
||||
{
|
||||
if (_database == null) return;
|
||||
|
||||
var targets = GetTarget(command);
|
||||
if (targets == null) return;
|
||||
|
||||
Helper.LogCommand(caller, command);
|
||||
|
||||
var playersToTarget = targets.Players.Where(player => player is { IsValid: true, IsHLTV: false }).ToList();
|
||||
|
||||
if (playersToTarget.Count > 1)
|
||||
return;
|
||||
|
||||
Database.Database database = new(_dbConnectionString);
|
||||
WarnManager warnManager = new(database);
|
||||
|
||||
playersToTarget.ForEach(player =>
|
||||
{
|
||||
if (!player.UserId.HasValue) return;
|
||||
if (!caller!.CanTarget(player)) return;
|
||||
|
||||
var steamid = player.SteamID.ToString();
|
||||
|
||||
BaseMenu warnsMenu = Config.UseChatMenu
|
||||
? new ChatMenu(_localizer!["sa_admin_warns_menu_title", player.PlayerName])
|
||||
: new CenterHtmlMenu(_localizer!["sa_admin_warns_menu_title", player.PlayerName], Instance);
|
||||
|
||||
Task.Run(async () =>
|
||||
{
|
||||
var warnsList = await warnManager.GetPlayerWarns(steamid, false);
|
||||
var sortedWarns = warnsList
|
||||
.OrderBy(warn => (string)warn.status == "ACTIVE" ? 0 : 1)
|
||||
.ThenByDescending(warn => (int)warn.id)
|
||||
.ToList();
|
||||
|
||||
sortedWarns.ForEach(w =>
|
||||
{
|
||||
warnsMenu.AddMenuOption($"[{((string)w.status == "ACTIVE" ? $"{ChatColors.LightRed}X" : $"{ChatColors.Lime}✔️")}{ChatColors.Default}] {(string)w.reason}",
|
||||
(controller, option) =>
|
||||
{
|
||||
_ = warnManager.UnwarnPlayer(steamid, (int)w.id);
|
||||
player.PrintToChat(_localizer["sa_admin_warns_unwarn", player.PlayerName, (string)w.reason]);
|
||||
});
|
||||
});
|
||||
|
||||
await Server.NextFrameAsync(() =>
|
||||
{
|
||||
warnsMenu.Open(player);
|
||||
});
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
[ConsoleCommand("css_players")]
|
||||
[CommandHelper(whoCanExecute: CommandUsage.CLIENT_AND_SERVER)]
|
||||
|
||||
@@ -211,10 +211,8 @@ namespace CS2_SimpleAdmin
|
||||
[JsonPropertyName("WarnThreshold")]
|
||||
public Dictionary<int, string> WarnThreshold { get; set; } = new()
|
||||
{
|
||||
{ 1, "" },
|
||||
{ 2, "" },
|
||||
{ 3, "" },
|
||||
{ 4, "css_ban USERID 120 \"4/4 Warn\"" },
|
||||
{ 998, "css_addban STEAMID64 60 \"3/4 Warn\"" },
|
||||
{ 999, "css_ban #USERID 120 \"4/4 Warn\"" },
|
||||
};
|
||||
|
||||
[JsonPropertyName("DisableDangerousCommands")]
|
||||
|
||||
@@ -63,6 +63,38 @@ internal class WarnManager(Database.Database database)
|
||||
}
|
||||
catch { };
|
||||
}
|
||||
|
||||
public async Task<IEnumerable<dynamic>> GetPlayerWarns(string steamId, bool active = true)
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var connection = await database.GetConnectionAsync();
|
||||
|
||||
string sql;
|
||||
|
||||
if (CS2_SimpleAdmin.Instance.Config.MultiServerMode)
|
||||
{
|
||||
sql = active
|
||||
? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND status = 'ACTIVE' ORDER BY id DESC"
|
||||
: "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID ORDER BY id DESC";
|
||||
}
|
||||
else
|
||||
{
|
||||
sql = active
|
||||
? "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid AND status = 'ACTIVE' ORDER BY id DESC"
|
||||
: "SELECT * FROM sa_warns WHERE player_steamid = @PlayerSteamID AND server_id = @serverid ORDER BY id DESC";
|
||||
}
|
||||
|
||||
var parameters = new { PlayerSteamID = steamId, serverid = CS2_SimpleAdmin.ServerId };
|
||||
var warns = await connection.QueryAsync<dynamic>(sql, parameters);
|
||||
|
||||
return warns;
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
return [];
|
||||
}
|
||||
}
|
||||
|
||||
public async Task<int> GetPlayerWarnsCount(string steamId, bool active = true)
|
||||
{
|
||||
@@ -87,6 +119,24 @@ internal class WarnManager(Database.Database database)
|
||||
}
|
||||
}
|
||||
|
||||
public async Task UnwarnPlayer(string steamid, int warnId)
|
||||
{
|
||||
try
|
||||
{
|
||||
await using var connection = await database.GetConnectionAsync();
|
||||
|
||||
var sql = CS2_SimpleAdmin.Instance.Config.MultiServerMode
|
||||
? "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId"
|
||||
: "UPDATE sa_warns SET status = 'EXPIRED' WHERE status = 'ACTIVE' AND player_steamid = @steamid AND id = @warnId AND server_id = @serverid";
|
||||
|
||||
await connection.ExecuteAsync(sql, new { steamid, warnId, serverid = CS2_SimpleAdmin.ServerId });
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
CS2_SimpleAdmin._logger?.LogCritical($"Unable to remove warn + {ex}");
|
||||
}
|
||||
}
|
||||
|
||||
public async Task ExpireOldWarns()
|
||||
{
|
||||
try
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "المسؤول {lightred}{0}{default} قام بالانتقال إلى {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "المسؤول {lightred}{0}{default} قام بنقل نفسه إلى {lightred}{1}{default}!",
|
||||
"sa_admin_team_message": "المسؤول {lightred}{0}{default} قام بنقل {lightred}{1}{default} إلى {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}التحذيرات",
|
||||
"sa_admin_warns_unwarn": "{lime}تم بنجاح{default} إزالة التحذير عن {gold}{0} {default}من {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}التصويت على {gold}{0}",
|
||||
"sa_admin_vote_message": "المسؤول {lightred}{0}{default} بدأ التصويت على {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}نتائج التصويت على {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "Admin {lightred}{0}{default} hat sich zu {lightred}{1}{default} teleportiert!",
|
||||
"sa_admin_bring_message": "Admin {lightred}{0}{default} hat zu sich {lightred}{1}{default} teleportiert!",
|
||||
"sa_admin_team_message": "Admin {lightred}{0}{default} hat {lightred}{1}{default} zu {lightred}{2}{default} gewechselt!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}WARNUNGEN",
|
||||
"sa_admin_warns_unwarn": "{lime}Erfolgreich{default} Warnung von {gold}{0} {default}von {gold}{1}{default} entfernt!",
|
||||
"sa_admin_vote_menu_title": "{lime}ABSTIMMUNG FÜR {gold}{0}",
|
||||
"sa_admin_vote_message": "Admin {lightred}{0}{default} hat eine Abstimmung für {lightred}{1}{default} gestartet",
|
||||
"sa_admin_vote_message_results": "{lime}ABSTIMMUNGS ERGEBNISSE FÜR {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "Admin {lightred}{0}{default} teleported to {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "Admin {lightred}{0}{default} teleported to himself {lightred}{1}{default}!",
|
||||
"sa_admin_team_message": "Admin {lightred}{0}{default} transfered {lightred}{1}{default} to {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}WARNS",
|
||||
"sa_admin_warns_unwarn": "{lime}Successfully{default} unwarned {gold}{0} {default}for {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}VOTING FOR {gold}{0}",
|
||||
"sa_admin_vote_message": "Admin {lightred}{0}{default} started voting for {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}VOTING RESULTS FOR {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "El administrador {lightred}{0}{default} se ha teletransportado a {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "El administrador {lightred}{0}{default} se ha teletransportado a sí mismo a {lightred}{1}{default}!",
|
||||
"sa_admin_team_message": "El administrador {lightred}{0}{default} ha transferido a {lightred}{1}{default} a {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}ADVERTENCIAS",
|
||||
"sa_admin_warns_unwarn": "{lime}Exitosamente{default} advertencia eliminada de {gold}{0} {default}de {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}VOTACIÓN PARA {gold}{0}",
|
||||
"sa_admin_vote_message": "El administrador {lightred}{0}{default} ha iniciado una votación para {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}RESULTADOS DE LA VOTACIÓN PARA {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "مدیر {lightred}{0}{default} به {lightred}{1}{default} جابجا شد!",
|
||||
"sa_admin_bring_message": "مدیر {lightred}{0}{default} خودش به {lightred}{1}{default} جابجا شد!",
|
||||
"sa_admin_team_message": "مدیر {lightred}{0}{default} {lightred}{1}{default} را به {lightred}{2}{default} منتقل کرد!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}اخطارها",
|
||||
"sa_admin_warns_unwarn": "{lime}با موفقیت{default} اخطار {gold}{0} {default}از {gold}{1}{default} حذف شد!",
|
||||
"sa_admin_vote_menu_title": "{lime}رأی گیری برای {gold}{0}",
|
||||
"sa_admin_vote_message": "مدیر {lightred}{0}{default} رأی گیری برای {lightred}{1}{default} را شروع کرد",
|
||||
"sa_admin_vote_message_results": "{lime}نتایج رأی گیری برای {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "Admin {lightred}{0}{default} s'est téléporté à {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "Admin {lightred}{0}{default} s'est téléporté à lui-même à {lightred}{1}{default}!",
|
||||
"sa_admin_team_message": "Admin {lightred}{0}{default} a transféré {lightred}{1}{default} à {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}AVERTISSEMENTS",
|
||||
"sa_admin_warns_unwarn": "{lime}Réussi{default} à enlever l'avertissement de {gold}{0} {default}de {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}VOTE POUR {gold}{0}",
|
||||
"sa_admin_vote_message": "Admin {lightred}{0}{default} a lancé un vote pour {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}RÉSULTATS DU VOTE POUR {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "Admins {lightred}{0}{default} teleported uz {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "Admins {lightred}{0}{default} teleportēja sevi uz {lightred}{1}{default}!",
|
||||
"sa_admin_team_message": "Admins {lightred}{0}{default} pārveidoja {lightred}{1}{default} uz {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}BRĪDINĀJUMI",
|
||||
"sa_admin_warns_unwarn": "{lime}Veiksmīgi{default} noņemts brīdinājums no {gold}{0} {default}no {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}BALSOŠANA PAR {gold}{0}",
|
||||
"sa_admin_vote_message": "Admins {lightred}{0}{default} sāka balsošanu par {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}BALSOŠANAS REZULTĀTI PAR {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "Admin {lightred}{0}{default} teleportował się do {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "Admin {lightred}{0}{default} teleportował do siebie {lightred}{1}{default}!",
|
||||
"sa_admin_team_message": "Admin {lightred}{0}{default} przerzucił {lightred}{1}{default} do {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{lime}OSTRZEŻENIA {gold}{0}",
|
||||
"sa_admin_warns_unwarn": "{lime}Pomyślnie{default} usunięto ostrzeżenie dla {gold}{0} {default}za {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}GŁOSOWANIE NA {gold}{0}",
|
||||
"sa_admin_vote_message": "Admin {lightred}{0}{default} rozpoczął głosowanie na {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}WYNIKI GŁOSOWANIA {gold}{0}",
|
||||
|
||||
@@ -100,6 +100,8 @@
|
||||
"sa_admin_tp_message": "Admin {lightred}{0}{default} teleportou para {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "Admin {lightred}{0}{default} teleportou {lightred}{1}{default} para si mesmo!",
|
||||
"sa_admin_team_message": "Admin {lightred}{0}{default} transferiu {lightred}{1}{default} para o time {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}ADVERTÊNCIAS",
|
||||
"sa_admin_warns_unwarn": "{lime}Removido com sucesso{default} o aviso de {gold}{0} {default}de {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}VOTAÇÃO PARA {gold}{0}",
|
||||
"sa_admin_vote_message": "Admin {lightred}{0}{default} iniciou uma votação para {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}RESULTADOS DA VOTAÇÃO PARA {gold}{0}",
|
||||
|
||||
@@ -99,6 +99,8 @@
|
||||
"sa_admin_tp_message": "Администратор {lightred}{0}{default} телепортировался к {lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "Администратор {lightred}{0}{default} телепортировал {lightred}{1}{default} к себе!",
|
||||
"sa_admin_team_message": "Администратор {lightred}{0}{default} переместил {lightred}{1}{default} в команду {lightred}{2}{default}!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}ПРЕДУПРЕЖДЕНИЯ",
|
||||
"sa_admin_warns_unwarn": "{lime}Успешно{default} удалено предупреждение у {gold}{0} {default}от {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}ГОЛОСОВАНИЕ ЗА {gold}{0}",
|
||||
"sa_admin_vote_message": "Администратор {lightred}{0}{default} начал голосование за {lightred}{1}{default}",
|
||||
"sa_admin_vote_message_results": "{lime}РЕЗУЛЬТАТЫ ГОЛОСОВАНИЯ ЗА {gold}{0}",
|
||||
|
||||
@@ -99,6 +99,8 @@
|
||||
"sa_admin_tp_message": "Yönetici {lightred}{0}{default}, {lightred}{1}{default}'e teleport edildi!",
|
||||
"sa_admin_bring_message": "Yönetici {lightred}{0}{default}, {lightred}{1}{default}'yi kendine teleport etti!",
|
||||
"sa_admin_team_message": "Yönetici {lightred}{0}{default}, {lightred}{1}{default} {lightred}{2}{default} takımına transfer edildi!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}UYARILAR",
|
||||
"sa_admin_warns_unwarn": "{lime}Başarıyla{default} uyarı {gold}{0} {default}şu adresten {gold}{1}{default} kaldırıldı!",
|
||||
"sa_admin_vote_menu_title": "{lime}{0} için OYLAMA",
|
||||
"sa_admin_vote_message": "Yönetici {lightred}{0}{default}, {lightred}{1}{default} için oy vermeye başladı",
|
||||
"sa_admin_vote_message_results": "{lime}{0} için OYLAMA SONUÇLARI",
|
||||
|
||||
@@ -99,6 +99,8 @@
|
||||
"sa_admin_tp_message": "管理员{lightred}{0}{default}传送到了{lightred}{1}{default}!",
|
||||
"sa_admin_bring_message": "管理员{lightred}{0}{default}将自己传送到了{lightred}{1}{default}!",
|
||||
"sa_admin_team_message": "管理员{lightred}{0}{default}将{lightred}{1}{default}转移到了{lightred}{2}{default}队伍!",
|
||||
"sa_admin_warns_menu_title": "{gold}{0} {lime}警告",
|
||||
"sa_admin_warns_unwarn": "{lime}成功{default} 取消了 {gold}{0} {default}的警告,来自 {gold}{1}{default}!",
|
||||
"sa_admin_vote_menu_title": "{lime}投票选举{gold}{0}",
|
||||
"sa_admin_vote_message": "管理员{lightred}{0}{default}开始对{lightred}{1}{default}进行投票",
|
||||
"sa_admin_vote_message_results": "{lime}投票结果{gold}{0}",
|
||||
|
||||
Reference in New Issue
Block a user