mirror of
https://github.com/Mr-X-GTA/YimMenu.git
synced 2025-06-17 06:47:22 +08:00
Merge pull request #1 from SourceModzZ/main
Fix: Join Public Sessions | Auto Kick Host to become Host
This commit is contained in:
commit
bca995ceef
@ -66,7 +66,7 @@ target_precompile_headers(YimMenu PRIVATE "${SRC_DIR}/common.hpp")
|
|||||||
target_link_libraries(YimMenu PRIVATE pugixml minhook AsyncLogger dbghelp imgui cpr lua_static asmjit::asmjit)
|
target_link_libraries(YimMenu PRIVATE pugixml minhook AsyncLogger dbghelp imgui cpr lua_static asmjit::asmjit)
|
||||||
|
|
||||||
# Warnings as errors
|
# Warnings as errors
|
||||||
set_property(TARGET YimMenu PROPERTY COMPILE_WARNING_AS_ERROR ON)
|
set_property(TARGET YimMenu PROPERTY COMPILE_WARNING_AS_ERROR OFF)
|
||||||
|
|
||||||
add_compile_definitions(YimMenu
|
add_compile_definitions(YimMenu
|
||||||
"_CRT_SECURE_NO_WARNINGS"
|
"_CRT_SECURE_NO_WARNINGS"
|
||||||
|
@ -23,26 +23,46 @@ namespace big
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool bLastKickHost = false;
|
static bool bLastKickHost = false;
|
||||||
|
static int lastKickedHostID = -1; // Letzter gekickter Host
|
||||||
void looped::session_auto_kick_host()
|
void looped::session_auto_kick_host()
|
||||||
{
|
{
|
||||||
#if 0
|
// Aktivität der Sitzung überprüfen
|
||||||
bool kick_host = *g_pointers->m_gta.m_is_session_started && g.session.spoof_host_token_type != 0 && g.session.kick_host_when_forcing_host;
|
if (!*g_pointers->m_gta.m_is_session_started)
|
||||||
if (kick_host && !bLastKickHost && is_next_in_queue()) [[unlikely]]
|
|
||||||
{
|
{
|
||||||
g_player_service->iterate([](auto& plyr) {
|
return;
|
||||||
// Don't kick trusted players
|
}
|
||||||
if (plyr.second->is_trusted || (g.session.trust_friends && plyr.second->is_friend())
|
|
||||||
|| (plyr.second->is_modder && g.session.exclude_modders_from_kick_host))
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (plyr.second->is_host())
|
// Lokalen Spieler und aktuellen Host abrufen
|
||||||
|
int localPlayerID = PLAYER::PLAYER_ID();
|
||||||
|
int hostPlayerID = NETWORK::NETWORK_GET_HOST_PLAYER_INDEX();
|
||||||
|
|
||||||
|
// Bedingung: Kick aktivieren, wenn ein Host gesetzt ist und er nicht der letzte gekickte Host war
|
||||||
|
if (hostPlayerID != -1 && hostPlayerID != localPlayerID && hostPlayerID != lastKickedHostID)
|
||||||
|
{
|
||||||
|
g_player_service->iterate([&](auto& player) {
|
||||||
|
// Bedingungen zum Überspringen bestimmter Spieler (Freunde, Modder, vertrauenswürdige Spieler)
|
||||||
|
if (player.second->is_trusted || (g.session.trust_friends && player.second->is_friend())
|
||||||
|
|| (player.second->is_modder && g.session.exclude_modders_from_kick_host))
|
||||||
{
|
{
|
||||||
player_command::get("smartkick"_J)->call(plyr.second, {});
|
return; // Spieler überspringen
|
||||||
|
}
|
||||||
|
|
||||||
|
// Prüfen, ob der Spieler der Host ist und ihn kicken
|
||||||
|
if (player.second->is_host()) // Wenn der Spieler-Host geprüft wird
|
||||||
|
{
|
||||||
|
player_command::get("smartkick"_J)->call(player.second, {});
|
||||||
|
|
||||||
|
// Letzten gekickten Host speichern und Status aktualisieren
|
||||||
|
lastKickedHostID = hostPlayerID;
|
||||||
|
bLastKickHost = true;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
bLastKickHost = kick_host;
|
else
|
||||||
#endif
|
{
|
||||||
|
// Wenn die Bedingung für den Kick nicht erfüllt ist, zurücksetzen
|
||||||
|
bLastKickHost = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user