diff --git a/r5dev/common/callback.cpp b/r5dev/common/callback.cpp index 0b624725..59770feb 100644 --- a/r5dev/common/callback.cpp +++ b/r5dev/common/callback.cpp @@ -118,7 +118,8 @@ void Host_Kick_f(const CCommand& args) return; } - g_pBanSystem->KickPlayerByName(args.Arg(1)); + g_pBanSystem->KickPlayerByName(args.Arg(1), + args.ArgC() > 2 ? args.Arg(2) : nullptr); } /* @@ -133,7 +134,8 @@ void Host_KickID_f(const CCommand& args) return; } - g_pBanSystem->KickPlayerById(args.Arg(1)); + g_pBanSystem->KickPlayerById(args.Arg(1), + args.ArgC() > 2 ? args.Arg(2) : nullptr); } /* @@ -148,7 +150,8 @@ void Host_Ban_f(const CCommand& args) return; } - g_pBanSystem->BanPlayerByName(args.Arg(1)); + g_pBanSystem->BanPlayerByName(args.Arg(1), + args.ArgC() > 2 ? args.Arg(2) : nullptr); } /* @@ -161,7 +164,8 @@ void Host_BanID_f(const CCommand& args) if (args.ArgC() < 2) return; - g_pBanSystem->BanPlayerById(args.Arg(1)); + g_pBanSystem->BanPlayerById(args.Arg(1), + args.ArgC() > 2 ? args.Arg(2) : nullptr); } /* diff --git a/r5dev/game/shared/vscript_shared.cpp b/r5dev/game/shared/vscript_shared.cpp index 2f50b542..4afdd7a2 100644 --- a/r5dev/game/shared/vscript_shared.cpp +++ b/r5dev/game/shared/vscript_shared.cpp @@ -110,7 +110,13 @@ namespace VScriptCode SQRESULT KickPlayerByName(HSQUIRRELVM v) { SQChar* playerName = sq_getstring(v, 1); - g_pBanSystem->KickPlayerByName(playerName); + SQChar* reason = sq_getstring(v, 2); + + // Discard empty strings, this will use the default message instead. + if (!VALID_CHARSTAR(reason)) + reason = nullptr; + + g_pBanSystem->KickPlayerByName(playerName, reason); return SQ_OK; } @@ -121,7 +127,13 @@ namespace VScriptCode SQRESULT KickPlayerById(HSQUIRRELVM v) { SQChar* playerHandle = sq_getstring(v, 1); - g_pBanSystem->KickPlayerById(playerHandle); + SQChar* reason = sq_getstring(v, 2); + + // Discard empty strings, this will use the default message instead. + if (!VALID_CHARSTAR(reason)) + reason = nullptr; + + g_pBanSystem->KickPlayerById(playerHandle, reason); return SQ_OK; } @@ -132,7 +144,13 @@ namespace VScriptCode SQRESULT BanPlayerByName(HSQUIRRELVM v) { SQChar* playerName = sq_getstring(v, 1); - g_pBanSystem->BanPlayerByName(playerName); + SQChar* reason = sq_getstring(v, 2); + + // Discard empty strings, this will use the default message instead. + if (!VALID_CHARSTAR(reason)) + reason = nullptr; + + g_pBanSystem->BanPlayerByName(playerName, reason); return SQ_OK; } @@ -143,7 +161,13 @@ namespace VScriptCode SQRESULT BanPlayerById(HSQUIRRELVM v) { SQChar* playerHandle = sq_getstring(v, 1); - g_pBanSystem->BanPlayerById(playerHandle); + SQChar* reason = sq_getstring(v, 2); + + // Discard empty strings, this will use the default message instead. + if (!VALID_CHARSTAR(reason)) + reason = nullptr; + + g_pBanSystem->BanPlayerById(playerHandle, reason); return SQ_OK; } diff --git a/r5dev/networksystem/bansystem.cpp b/r5dev/networksystem/bansystem.cpp index f3c7efb3..95632fa2 100644 --- a/r5dev/networksystem/bansystem.cpp +++ b/r5dev/networksystem/bansystem.cpp @@ -200,7 +200,7 @@ void CBanSystem::KickPlayerByName(const char* playerName, const char* reason) if (!VALID_CHARSTAR(playerName)) return; - AuthorPlayerByName(playerName, false); + AuthorPlayerByName(playerName, false, reason); } //----------------------------------------------------------------------------- @@ -213,7 +213,7 @@ void CBanSystem::KickPlayerById(const char* playerHandle, const char* reason) if (!VALID_CHARSTAR(playerHandle)) return; - AuthorPlayerById(playerHandle, false); + AuthorPlayerById(playerHandle, false, reason); } //----------------------------------------------------------------------------- @@ -226,7 +226,7 @@ void CBanSystem::BanPlayerByName(const char* playerName, const char* reason) if (!VALID_CHARSTAR(playerName)) return; - AuthorPlayerByName(playerName, true); + AuthorPlayerByName(playerName, true, reason); } //----------------------------------------------------------------------------- @@ -239,7 +239,7 @@ void CBanSystem::BanPlayerById(const char* playerHandle, const char* reason) if (!VALID_CHARSTAR(playerHandle)) return; - AuthorPlayerById(playerHandle, true); + AuthorPlayerById(playerHandle, true, reason); } //----------------------------------------------------------------------------- diff --git a/r5dev/vscript/vscript.cpp b/r5dev/vscript/vscript.cpp index 9691e29a..7fc4d8fe 100644 --- a/r5dev/vscript/vscript.cpp +++ b/r5dev/vscript/vscript.cpp @@ -27,13 +27,13 @@ void Script_RegisterServerFunctions(CSquirrelVM* s) s->RegisterFunction("GetAvailableMaps", "Script_GetAvailableMaps", "Gets an array of all available maps", "array< string >", "", &VScriptCode::SHARED::GetAvailableMaps); s->RegisterFunction("GetAvailablePlaylists", "Script_GetAvailablePlaylists", "Gets an array of all available playlists", "array< string >", "", &VScriptCode::SHARED::GetAvailablePlaylists); - s->RegisterFunction("KickPlayerByName", "Script_KickPlayerByName", "Kicks a player from the server by name", "void", "string", &VScriptCode::SHARED::KickPlayerByName); - s->RegisterFunction("KickPlayerById", "Script_KickPlayerById", "Kicks a player from the server by handle or nucleus id", "void", "string", &VScriptCode::SHARED::KickPlayerById); + s->RegisterFunction("KickPlayerByName", "Script_KickPlayerByName", "Kicks a player from the server by name", "void", "string, string", &VScriptCode::SHARED::KickPlayerByName); + s->RegisterFunction("KickPlayerById", "Script_KickPlayerById", "Kicks a player from the server by handle or nucleus id", "void", "string, string", &VScriptCode::SHARED::KickPlayerById); s->RegisterFunction("BanPlayerByName", "Script_BanPlayerByName", "Bans a player from the server by name", "void", "string", &VScriptCode::SHARED::BanPlayerByName); - s->RegisterFunction("BanPlayerById", "Script_BanPlayerById", "Bans a player from the server by handle or nucleus id", "void", "string", &VScriptCode::SHARED::BanPlayerById); + s->RegisterFunction("BanPlayerById", "Script_BanPlayerById", "Bans a player from the server by handle or nucleus id", "void", "string, string", &VScriptCode::SHARED::BanPlayerById); - s->RegisterFunction("UnbanPlayer", "Script_UnbanPlayer", "Unbans a player from the server by nucleus id or ip address", "void", "string", &VScriptCode::SHARED::UnbanPlayer); + s->RegisterFunction("UnbanPlayer", "Script_UnbanPlayer", "Unbans a player from the server by nucleus id or ip address", "void", "string, string", &VScriptCode::SHARED::UnbanPlayer); s->RegisterFunction("ShutdownHostGame", "Script_ShutdownHostGame", "Shuts the local host game down", "void", "", &VScriptCode::SHARED::ShutdownHostGame);