From 690aa2ba6fe58e8badd08ced6517ba0315af37fc Mon Sep 17 00:00:00 2001 From: GenZmeY Date: Thu, 29 Jun 2023 01:39:54 +0300 Subject: [PATCH] fix the ability to kick players who are not loaded --- CVC/Classes/CVC.uc | 7 +++++++ CVC/Classes/CVC_LocalMessage.uc | 8 ++++++++ CVC/Classes/CVC_VoteCollector.uc | 10 ++++++++++ Localization/INT/CVC.int | Bin 1364 -> 1526 bytes Localization/RUS/CVC.rus | Bin 1492 -> 1670 bytes 5 files changed, 25 insertions(+) diff --git a/CVC/Classes/CVC.uc b/CVC/Classes/CVC.uc index 9037289..cc8459c 100644 --- a/CVC/Classes/CVC.uc +++ b/CVC/Classes/CVC.uc @@ -183,6 +183,13 @@ public function bool PlayerIsKickProtected(PlayerReplicationInfo PRI) return (KickProtectedPlayers.Find('Uid', PRI.UniqueId.Uid) != INDEX_NONE); } +public function bool PlayerPerkLoaded(PlayerReplicationInfo PRI) +{ + `Log_Trace(); + + return (KFPlayerReplicationInfo(PRI) != None && KFPlayerReplicationInfo(PRI).CurrentPerkClass != None); +} + public function bool PlayerIsStartWaveKickProtected(KFPlayerController KFPC) { `Log_Trace(); diff --git a/CVC/Classes/CVC_LocalMessage.uc b/CVC/Classes/CVC_LocalMessage.uc index 22207ca..9240dd5 100644 --- a/CVC/Classes/CVC_LocalMessage.uc +++ b/CVC/Classes/CVC_LocalMessage.uc @@ -10,6 +10,9 @@ var private localized String PlayerIsStartWaveKickProtected; var const String PlayerCantStartKickVoteDefault; var private localized String PlayerCantStartKickVote; +var const String PlayerPerkIsNotLoadedDefault; +var private localized String PlayerPerkIsNotLoaded; + var const String KickVoteNotEnoughPlayersDefault; var private localized String KickVoteNotEnoughPlayers; @@ -33,6 +36,7 @@ enum E_CVC_LocalMessageType CVC_PlayerIsKickProtected, CVC_PlayerIsStartWaveKickProtected, CVC_PlayerCantStartKickVote, + CVC_PlayerPerkIsNotLoaded, CVC_KickVoteNotEnoughPlayers, CVC_KickVoteStarted, @@ -88,6 +92,9 @@ public static function String GetLocalizedString( case CVC_PlayerCantStartKickVote: return ReplWaves(default.PlayerCantStartKickVote != "" ? default.PlayerCantStartKickVote : default.PlayerCantStartKickVoteDefault, String1); + case CVC_PlayerPerkIsNotLoaded: + return ReplKickee(default.PlayerPerkIsNotLoaded != "" ? default.PlayerPerkIsNotLoaded : default.PlayerPerkIsNotLoadedDefault, String1); + case CVC_KickVoteNotEnoughPlayers: return ReplWaves(default.KickVoteNotEnoughPlayers != "" ? default.KickVoteNotEnoughPlayers : default.KickVoteNotEnoughPlayersDefault, String1); @@ -136,6 +143,7 @@ defaultproperties PlayerIsKickProtectedDefault = " is protected from kick" PlayerIsStartWaveKickProtectedDefault = "You can't kick right now. He can be kicked when he plays at least wave(s)" PlayerCantStartKickVoteDefault = "You can't start kick vote now. You can start kick vote when you play at least wave(s)" + PlayerPerkIsNotLoadedDefault = "You can't kick a player who hasn't loaded yet ()" KickVoteNotEnoughPlayersDefault = "Not enough players to start vote (only players who have played at least wave(s) can vote)" KickVoteStartedDefault = " has started a vote to kick " KickVoteStartedForPlayerDefault = " started voting to kick you" diff --git a/CVC/Classes/CVC_VoteCollector.uc b/CVC/Classes/CVC_VoteCollector.uc index 2e7f53d..f38ade7 100644 --- a/CVC/Classes/CVC_VoteCollector.uc +++ b/CVC/Classes/CVC_VoteCollector.uc @@ -92,6 +92,16 @@ public function ServerStartVoteKick(PlayerReplicationInfo PRI_Kickee, PlayerRepl return; } + if (!CVC.PlayerPerkLoaded(PRI_Kickee)) + { + CVC.WriteToChatLocalized( + KFPC_Kicker, + CVC_PlayerPerkIsNotLoaded, + CfgKickVote.default.WarningColorHex, + KickeeName); + return; + } + if (CVC.PlayerIsStartWaveKickProtected(KFPC_Kickee)) { CVC.WriteToChatLocalized( diff --git a/Localization/INT/CVC.int b/Localization/INT/CVC.int index 118aaf2c1f5d9818f31a33d13e5b8d9b3ad8cadb..63745e0df26c135d78cc0ddaf2150eedd84cc975 100644 GIT binary patch delta 131 zcmcb@^^JQ&1JmRQj69M745rp2A?upu`|F`7NVl ziWQ3mixrD4i!+N8iw}zeg9VE*ivx=tP|N_xvjVc5fY^b>o5d2yH)Zi;F$L1LVA33@ m2Bg}V#T;mgHH#yQKTuAC!3Jn=CPOliOa($ahRtV~IG6!LrW(iq delta 12 TcmZqUy~4fW64T}uW+r9;Aa?{d