This is a mobile optimized page that loads fast, if you want to load the real page, click this text.

Вопрос Как сделать бан по статику, а не по ID

maltese

Новый участник
18 Дек 2023
39
2
20
Как сделать бан по статику, а не по ID:
[Command("ban", GreedyArg = true)]
public static void CMD_banTarget(Player player, int id, int time, string reason)
{
try
{
if (Main.GetPlayerByID(id) == null)
{
Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Игрок с таким ID не найден", 3000);
return;
}
Admin.banPlayer(player, Main.GetPlayerByID(id), time, reason, false);
}
catch (Exception e) { Log.Write("EXCEPTION AT \"CMD\":\n" + e.ToString(), nLog.Type.Error); }
}
Как сделать бан по статику, а не по нику:

[Command("offban", GreedyArg = true)]
public static void CMD_offlineBanTarget(Player player, string name, int time, string reason)
{
try
{
if (!Main.PlayerNames.ContainsValue(name))
{
Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Игрока с таким именем не найдено", 3000);
return;
}
Admin.offBanPlayer(player, name, time, reason, false);
}
catch (Exception e) { Log.Write("EXCEPTION AT \"CMD\":\n" + e.ToString(), nLog.Type.Error); }
}
 

Jerry (ChatGPT)

AI-powered language model
VIP
helper
17 Окт 2023
2,490
239
100
В функции CMD_banTarget используется ID игрока для бана, а в функции CMD_offlineBanTarget используется ник игрока.
Если вы хотите сделать бан по статическим данным, вы можете использовать другой идентификатор, который не изменяется для каждого игрока, например, их SteamID или IP-адрес.

Вы должны внести соответствующие изменения в код, чтобы использовать статический идентификатор вместо ника или ID.
 

maltese

Новый участник
18 Дек 2023
39
2
20
public static void CMD_banTarget(Player player, int uuid, int time, string reason)
{
try
{
if (Main.GetPlayerByUUID(uuid) == null)
{
Notify.Send(player, NotifyType.Error, NotifyPosition.BottomCenter, $"Игрок с таким статиком не найден", 3000);
return;
}
Admin.banPlayer(player, Main.GetPlayerByUUID(uuid), time, reason, false);
}
catch (Exception e) { Log.Write("EXCEPTION AT \"CMD\":\n" + e.ToString(), nLog.Type.Error); }
}
Верно изменил?
 

Mi-Zaft

Гений
VIP
9 Окт 2020
1,894
486
175
Ты у бота спрашиваешь, он тебе не ответит. Возьми, да проверь.
 

Mi-Zaft

Гений
VIP
9 Окт 2020
1,894
486
175
Я не шарпист конечно, но я сомневаюсь, что можно так просто заменить Main.GetPlayerByUUID(id) на Main.GetPlayerByUUID(uuid) и радоваться жизни. Ты хоть открой метод GetPlayerByUUID и посмотри его реализацию...
 

Mi-Zaft

Гений
VIP
9 Окт 2020
1,894
486
175

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
этот метод смотрит только в онлайн игроках

ты ничего не проверил, эта ошибка говорит о том, что формат данных в аргументах неверный
 

mippoosedev

Гуру
BackEnd developer
2 Мар 2021
292
127
100
Не подскажешь как сделать бан по статику? Не понимаю ....
Ну ты всё правильно вроде сделал на первый взгляд (если учитывать, что это бан онлайн игрока по статику). Только ты при вводе команды используешь строку 1s(подразумевая 1 секунду). Но твоя команда принимает только число, попробуй заменить 1s на что-то вроде 60 и отпиши результат
 

maltese

Новый участник
18 Дек 2023
39
2
20
Ничего не происходит, пытался себя в бан кинуть. Даже в чат не написало что нельзя выдать бан.. В консоль и в чат ничего не пишет
 

Sinage

Участник портала
Мошенник
17 Дек 2021
72
20
73
Потому что скорее всего в методе Admin.banPlayer идёт проверка player == target и поэтому ты не можешь сам себя забанить