Add Client side AFK Check
This commit is contained in:
parent
9b9fd4596d
commit
c59cc3f3d6
@ -28,7 +28,7 @@
|
|||||||
#Setting S_RoundsPerMap 1 as _("Number of rounds per map") ///< Number of round to play on one map before going to the next one
|
#Setting S_RoundsPerMap 1 as _("Number of rounds per map") ///< Number of round to play on one map before going to the next one
|
||||||
|
|
||||||
|
|
||||||
#Setting S_AFKIdleTime 10000 as "Time before being an AFK player will be kicked"
|
#Setting S_AFKIdleTime 120000 as "Time before being an AFK player will be kicked"
|
||||||
|
|
||||||
#Setting S_IntroTime 5 as "Time of the map intro"
|
#Setting S_IntroTime 5 as "Time of the map intro"
|
||||||
#Setting S_TimeBeforeMalus 10 as "Time Before Malus"
|
#Setting S_TimeBeforeMalus 10 as "Time Before Malus"
|
||||||
@ -243,6 +243,9 @@ CarRank::Reset();
|
|||||||
***
|
***
|
||||||
Scores::Clear();
|
Scores::Clear();
|
||||||
|
|
||||||
|
declare netwrite Integer Net_LMS_AFKIdleTime for Teams[0] = 120000;
|
||||||
|
Net_LMS_AFKIdleTime = S_AFKIdleTime;
|
||||||
|
|
||||||
// WorkAround for longloading
|
// WorkAround for longloading
|
||||||
declare StartMapTime = Now;
|
declare StartMapTime = Now;
|
||||||
while (Players.count < 2 && Now < (StartMapTime + 3000)) {
|
while (Players.count < 2 && Now < (StartMapTime + 3000)) {
|
||||||
@ -929,6 +932,62 @@ Void SetML() {
|
|||||||
Layers::Create("LMS_MapInfo", MLText);
|
Layers::Create("LMS_MapInfo", MLText);
|
||||||
Layers::SetType("LMS_MapInfo", CUILayer::EUILayerType::Normal);
|
Layers::SetType("LMS_MapInfo", CUILayer::EUILayerType::Normal);
|
||||||
Layers::Attach("LMS_MapInfo");
|
Layers::Attach("LMS_MapInfo");
|
||||||
|
|
||||||
|
MLText = """
|
||||||
|
<manialink name="LMS_AFKManager" version="3">
|
||||||
|
<script><!--
|
||||||
|
#Include "MathLib" as ML
|
||||||
|
|
||||||
|
main() {
|
||||||
|
declare CMlFrame Frame_Global = (Page.GetFirstChild("frame-global") as CMlFrame);
|
||||||
|
|
||||||
|
wait(InputPlayer != Null);
|
||||||
|
|
||||||
|
declare netread Integer Net_LMS_AFKIdleTime for Teams[0] = 120000;
|
||||||
|
declare Integer Last_AFKIdleTime;
|
||||||
|
declare Integer Last_AFKDisplayTime;
|
||||||
|
|
||||||
|
declare Integer Last_NextCheck;
|
||||||
|
|
||||||
|
while(True) {
|
||||||
|
yield;
|
||||||
|
|
||||||
|
if (Now > Last_NextCheck) {
|
||||||
|
Last_NextCheck = Now + 500;
|
||||||
|
|
||||||
|
if (Last_AFKIdleTime != Net_LMS_AFKIdleTime) {
|
||||||
|
Last_AFKIdleTime = Net_LMS_AFKIdleTime;
|
||||||
|
Last_AFKDisplayTime = Last_AFKIdleTime - ML::Clamp(ML::FloorInteger(Net_LMS_AFKIdleTime * 0.33), 3000, 20000);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Check if player is AFK or not
|
||||||
|
if (Input.TimeSinceLatestActivity > Last_AFKIdleTime) {
|
||||||
|
log("Player is AFK");
|
||||||
|
Playground.QuitServer(False);
|
||||||
|
} else if (Input.TimeSinceLatestActivity > Last_AFKDisplayTime) {
|
||||||
|
Frame_Global.Visible = True;
|
||||||
|
} else {
|
||||||
|
Frame_Global.Visible = False;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--></script>
|
||||||
|
<stylesheet>
|
||||||
|
<style class="text" textfont="GameFontBlack" textcolor="ffffffff" textsize="8" valign="center2" halign="center"/>
|
||||||
|
</stylesheet>
|
||||||
|
|
||||||
|
<frame id="frame-global" pos="0 40" hidden="1">
|
||||||
|
<quad size="150 35" halign="center" z-index="-1" bgcolor="000" opacity="0.7"/>
|
||||||
|
<label class="text" pos="0 -8" size="140 10" text="AFK Warning"/>
|
||||||
|
<label class="text" pos="0 -21.5" size="140 20" autonewline=1 textsize="4" text="Move your mouse or press a key on your keyboard or gamepad to prevent to be kicked"/>
|
||||||
|
</frame>
|
||||||
|
|
||||||
|
</manialink>
|
||||||
|
""";
|
||||||
|
Layers::Create("LMS_AFKManager", MLText);
|
||||||
|
Layers::SetType("LMS_AFKManager", CUILayer::EUILayerType::Normal);
|
||||||
|
Layers::Attach("LMS_AFKManager");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user