Merge branch 'master' of https://git.virtit.fr/beu/TM2020-Gamemodes
This commit is contained in:
commit
dae4dbcf20
@ -4,8 +4,8 @@
|
|||||||
#Extends "Libs/Nadeo/TMNext/TrackMania/Modes/TMNextRoundsBase.Script.txt"
|
#Extends "Libs/Nadeo/TMNext/TrackMania/Modes/TMNextRoundsBase.Script.txt"
|
||||||
|
|
||||||
#Const CompatibleMapTypes "TrackMania\\TM_Race,TM_Race"
|
#Const CompatibleMapTypes "TrackMania\\TM_Race,TM_Race"
|
||||||
#Const Version "2021-06-14"
|
#Const Version "2022-03-08"
|
||||||
#Const ScriptName "Modes/TrackMania/LastManStanding.Script.txt"
|
#Const ScriptName "Modes/TM2020-Gamemodes/LastManStanding.Script.txt"
|
||||||
|
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
// Libraries
|
// Libraries
|
||||||
@ -20,14 +20,13 @@
|
|||||||
#Include "ManiaApps/Nadeo/TMxSM/Race/UIModules/ScoresTable_Server.Script.txt" as UIModules_ScoresTable
|
#Include "ManiaApps/Nadeo/TMxSM/Race/UIModules/ScoresTable_Server.Script.txt" as UIModules_ScoresTable
|
||||||
#Include "ManiaApps/Nadeo/TMxSM/Race/UIModules/PauseMenuOnline_Server.Script.txt" as UIModules_PauseMenu_Online
|
#Include "ManiaApps/Nadeo/TMxSM/Race/UIModules/PauseMenuOnline_Server.Script.txt" as UIModules_PauseMenu_Online
|
||||||
|
|
||||||
#Include "Libs/Nadeo/ModeLibs/Common/Debug.Script.txt" as Debug
|
|
||||||
|
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
// Settings
|
// Settings
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
#Setting S_ForceLapsNb 1
|
#Setting S_ForceLapsNb 1
|
||||||
#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_IntroTime 5 as "Time of the map intro"
|
||||||
#Setting S_TimeBeforeMalus 10 as "Time Before Malus"
|
#Setting S_TimeBeforeMalus 10 as "Time Before Malus"
|
||||||
#Setting S_TimeBeforeNightmare 150 as "Time Before Nightmare"
|
#Setting S_TimeBeforeNightmare 150 as "Time Before Nightmare"
|
||||||
#Setting S_MalusEveryNSecs 10 as "Roll a new Malus every N Sec"
|
#Setting S_MalusEveryNSecs 10 as "Roll a new Malus every N Sec"
|
||||||
@ -72,6 +71,11 @@
|
|||||||
12 => "25% AccelCoef", 13 => "25% Adherence", 14 => "25% Control",
|
12 => "25% AccelCoef", 13 => "25% Adherence", 14 => "25% Control",
|
||||||
15 => "25% Gravity", 99 => "NightMare"]
|
15 => "25% Gravity", 99 => "NightMare"]
|
||||||
|
|
||||||
|
#Struct K_Malus {
|
||||||
|
Integer Time;
|
||||||
|
Integer MalusIndex;
|
||||||
|
}
|
||||||
|
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
// Extends
|
// Extends
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
@ -97,6 +101,7 @@ MB_Settings_UseDefaultTimer = False;
|
|||||||
MB_Settings_UseDefaultHud = (C_HudModulePath == "");
|
MB_Settings_UseDefaultHud = (C_HudModulePath == "");
|
||||||
MB_Settings_UseDefaultPodiumSequence = False;
|
MB_Settings_UseDefaultPodiumSequence = False;
|
||||||
Rounds_Settings_UseDefaultSpawnManagement = False;
|
Rounds_Settings_UseDefaultSpawnManagement = False;
|
||||||
|
MB_Settings_UseDefaultIntroSequence = False;
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_Rules***
|
***Match_Rules***
|
||||||
@ -126,7 +131,9 @@ UIManager.UIAll.OverlayHideCountdown = True;
|
|||||||
Markers::SetDefaultMarker_HudVisibility(CUIConfigMarker::EHudVisibility::Always);
|
Markers::SetDefaultMarker_HudVisibility(CUIConfigMarker::EHudVisibility::Always);
|
||||||
UIManager.UIAll.LabelsVisibility = CUIConfig::EHudVisibility::Everything ;
|
UIManager.UIAll.LabelsVisibility = CUIConfig::EHudVisibility::Everything ;
|
||||||
|
|
||||||
SetML(Null);
|
UIModules::UnloadModules(["UIModule_Race_LapsCounter"]);
|
||||||
|
|
||||||
|
SetML();
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_Yield***
|
***Match_Yield***
|
||||||
@ -153,9 +160,6 @@ UsePvECollisions = True;
|
|||||||
StateMgr::ForcePlayersStates([StateMgr::C_State_Waiting]);
|
StateMgr::ForcePlayersStates([StateMgr::C_State_Waiting]);
|
||||||
WarmUp::SetAvailability(True);
|
WarmUp::SetAvailability(True);
|
||||||
CarRank::Reset();
|
CarRank::Reset();
|
||||||
|
|
||||||
Debug::AddFakeUsers(C_FakeUsersNb);
|
|
||||||
//Debug::SetTargetSpeed([10.0, 100.0]);
|
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_InitMap***
|
***Match_InitMap***
|
||||||
@ -173,6 +177,7 @@ declare Integer Map_RoundsPerMap;
|
|||||||
declare Text[] AccountIdsOfPlayers for This = [];
|
declare Text[] AccountIdsOfPlayers for This = [];
|
||||||
declare Integer LandmarkIndex for This = 0;
|
declare Integer LandmarkIndex for This = 0;
|
||||||
declare Integer[Text] CustomTimes for This = [];
|
declare Integer[Text] CustomTimes for This = [];
|
||||||
|
declare K_Malus[Text] MalusQueue;
|
||||||
|
|
||||||
declare Boolean ActiveMalus = False;
|
declare Boolean ActiveMalus = False;
|
||||||
declare Boolean PendingMalus = False;
|
declare Boolean PendingMalus = False;
|
||||||
@ -186,25 +191,46 @@ declare netwrite Integer Net_NextMalus for Teams[0] = -1;
|
|||||||
declare netwrite Integer Net_TimeBeforeMalus for Teams[0] = -1;
|
declare netwrite Integer Net_TimeBeforeMalus for Teams[0] = -1;
|
||||||
declare netwrite Integer Net_RoundsPerMap for Teams[0] = 0;
|
declare netwrite Integer Net_RoundsPerMap for Teams[0] = 0;
|
||||||
declare netwrite Integer Net_CurrentRoundNb for Teams[0] = 0;
|
declare netwrite Integer Net_CurrentRoundNb for Teams[0] = 0;
|
||||||
|
|
||||||
|
// Map Intro
|
||||||
|
declare Boolean MapIsCompatible;
|
||||||
|
declare CMapLandmark[] Landmarks = Map::GetFinishesAndMultilaps();
|
||||||
|
foreach (Landmark in Landmarks) {
|
||||||
|
if (Map::IsMultilap(Landmark)) {
|
||||||
|
MapIsCompatible = True;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (!MapIsCompatible) {
|
||||||
|
UIManager.UIAll.QueueMessage(3000, 1, CUIConfig::EMessageDisplay::Big, _("This map is not valid"));
|
||||||
|
MB_Sleep(3000);
|
||||||
|
MB_StopMap();
|
||||||
|
} else if (S_IntroTime > 0) {
|
||||||
|
declare netwrite Boolean Net_LMS_IsIntro for Teams[0];
|
||||||
|
Net_LMS_IsIntro = True;
|
||||||
|
StateMgr::ForcePlayersStates([StateMgr::C_State_Waiting]);
|
||||||
|
ModeUtils::PushAndApplyUISequence(UIManager.UIAll, CUIConfig::EUISequence::RollingBackgroundIntro);
|
||||||
|
declare Integer WaitingScreenDuration = 0;
|
||||||
|
while (MB_MapIsRunning() && S_IntroTime - WaitingScreenDuration > 0) {
|
||||||
|
WaitingScreenDuration = WaitingScreenDuration + 1;
|
||||||
|
MB_Sleep(1000);
|
||||||
|
}
|
||||||
|
ModeUtils::PopAndApplyUISequence(UIManager.UIAll);
|
||||||
|
Net_LMS_IsIntro = False;
|
||||||
|
}
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_StartMap***
|
***Match_StartMap***
|
||||||
***
|
***
|
||||||
// Add bot when necessary
|
|
||||||
//Users_SetNbFakeUsers(C_FakeUsersNb, 0);
|
|
||||||
Race::SetRespawnBehaviour(Race::C_RespawnBehaviour_AlwaysGiveUp);
|
Race::SetRespawnBehaviour(Race::C_RespawnBehaviour_AlwaysGiveUp);
|
||||||
|
|
||||||
CarRank::Reset();
|
CarRank::Reset();
|
||||||
|
|
||||||
// Warm up
|
|
||||||
/*UIModules_ScoresTable::SetFooterInfo(_("Warm up"));
|
|
||||||
MB_WarmUp(S_WarmUpNb, S_WarmUpDuration * 1000, S_WarmUpTimeout * 1000);*/
|
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_StartRound***
|
***Match_StartRound***
|
||||||
***
|
***
|
||||||
Scores::Clear();
|
Scores::Clear();
|
||||||
SetMalusToAll(C_Malus_Reset);
|
|
||||||
|
|
||||||
// WorkAround for longloading
|
// WorkAround for longloading
|
||||||
declare StartMapTime = Now;
|
declare StartMapTime = Now;
|
||||||
@ -226,12 +252,13 @@ Net_TimeBeforeMalus = MalusTime;
|
|||||||
Net_NextMalus = -1;
|
Net_NextMalus = -1;
|
||||||
Net_RoundsPerMap = Map_RoundsPerMap;
|
Net_RoundsPerMap = Map_RoundsPerMap;
|
||||||
Net_CurrentRoundNb = Map_ValidRoundsNb + 1;
|
Net_CurrentRoundNb = Map_ValidRoundsNb + 1;
|
||||||
|
MalusQueue = [];
|
||||||
|
|
||||||
// Spawn players for the race
|
// Spawn players for the race
|
||||||
---Rounds_CanSpawn---
|
---Rounds_CanSpawn---
|
||||||
|
|
||||||
declare Text[] AccountIdsOfPlayers for This = [];
|
declare Text[] AccountIdsOfPlayers for This = [];
|
||||||
declare CMapLandmark[] Landmarks = Map::GetFinishesAndMultilaps();
|
|
||||||
declare CMapLandmark PlayerLM;
|
declare CMapLandmark PlayerLM;
|
||||||
declare Integer LandmarkIndex for This = 0;
|
declare Integer LandmarkIndex for This = 0;
|
||||||
AccountIdsOfPlayers = [];
|
AccountIdsOfPlayers = [];
|
||||||
@ -265,6 +292,7 @@ foreach (Player in ShuffledPlayers) {
|
|||||||
}
|
}
|
||||||
Race::Start(Player, PlayerLM , StartTime);
|
Race::Start(Player, PlayerLM , StartTime);
|
||||||
AccountIdsOfPlayers.add(Player.User.WebServicesUserId);
|
AccountIdsOfPlayers.add(Player.User.WebServicesUserId);
|
||||||
|
MalusQueue[Player.User.WebServicesUserId] = GetNewMalus(C_Malus_Reset);
|
||||||
}
|
}
|
||||||
|
|
||||||
Net_NBPlayers = AccountIdsOfPlayers.count;
|
Net_NBPlayers = AccountIdsOfPlayers.count;
|
||||||
@ -274,8 +302,14 @@ StateMgr::ForcePlayersStates([StateMgr::C_State_Playing]);
|
|||||||
CarRank::Update(CarRank::C_SortCriteria_BestRace);
|
CarRank::Update(CarRank::C_SortCriteria_BestRace);
|
||||||
Race::EnableIntroDuringMatch(False);
|
Race::EnableIntroDuringMatch(False);
|
||||||
UIManager.UIAll.SendChat("$<$ff3$> Stay the most time on the structure. $<$ff9GL HF!$>");
|
UIManager.UIAll.SendChat("$<$ff3$> Stay the most time on the structure. $<$ff9GL HF!$>");
|
||||||
|
|
||||||
***
|
***
|
||||||
|
|
||||||
|
/***Match_InitPlayLoop***
|
||||||
|
***
|
||||||
|
MalusQueue = [];
|
||||||
|
***/
|
||||||
|
|
||||||
***Match_PlayLoop***
|
***Match_PlayLoop***
|
||||||
***
|
***
|
||||||
// Update CarRank & UI Interface
|
// Update CarRank & UI Interface
|
||||||
@ -310,8 +344,7 @@ if (Now < StartTime + 3000) {
|
|||||||
Race::Start(Player, PlayerLM , StartTime);
|
Race::Start(Player, PlayerLM , StartTime);
|
||||||
AccountIdsOfPlayers.add(Player.User.WebServicesUserId);
|
AccountIdsOfPlayers.add(Player.User.WebServicesUserId);
|
||||||
|
|
||||||
MB_Sleep(100);
|
MalusQueue[Player.User.WebServicesUserId] = GetNewMalus(C_Malus_Reset);
|
||||||
while (!SetMalus(Player, C_Malus_Reset)) MB_Yield();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -329,8 +362,7 @@ if (Now < StartTime + 3000) {
|
|||||||
// Manage race events
|
// Manage race events
|
||||||
declare RacePendingEvents = Race::GetPendingEvents();
|
declare RacePendingEvents = Race::GetPendingEvents();
|
||||||
foreach (Event in RacePendingEvents) {
|
foreach (Event in RacePendingEvents) {
|
||||||
//log("""Event.Type: {{{Event.Type}}} / Event.IsEndRace: {{{TL::ToText(Event.IsEndRace)}}} / Event.IsEndLap: {{{TL::ToText(Event.IsEndLap)}}} / Event.Player.User.Login: {{{Event.Player.User.Login}}}""");
|
Race::ValidEvent(Event);
|
||||||
Race::ValidEvent(Event);// TODO : Check why event not regitered in NightMare (bot?)
|
|
||||||
|
|
||||||
// Waypoint
|
// Waypoint
|
||||||
if (Event.Type == Events::C_Type_Waypoint) {
|
if (Event.Type == Events::C_Type_Waypoint) {
|
||||||
@ -426,7 +458,9 @@ if (Players.count > 0 && S_MalusDuration > 0 && MalusTime != -1 && Now > MalusTi
|
|||||||
Net_NextMalus = MalusIndex;
|
Net_NextMalus = MalusIndex;
|
||||||
Net_TimeBeforeMalus = NextStepMalusTime;
|
Net_TimeBeforeMalus = NextStepMalusTime;
|
||||||
} else if (PendingMalus && !ActiveMalus) {
|
} else if (PendingMalus && !ActiveMalus) {
|
||||||
SetMalusToAll(MalusIndex);
|
foreach (Player in Players) {
|
||||||
|
MalusQueue[Player.User.WebServicesUserId] = GetNewMalus(MalusIndex);
|
||||||
|
}
|
||||||
PendingMalus = False;
|
PendingMalus = False;
|
||||||
ActiveMalus = True;
|
ActiveMalus = True;
|
||||||
NextStepMalusTime = Now + (S_MalusDuration*1000);
|
NextStepMalusTime = Now + (S_MalusDuration*1000);
|
||||||
@ -439,7 +473,9 @@ if (Players.count > 0 && S_MalusDuration > 0 && MalusTime != -1 && Now > MalusTi
|
|||||||
Net_TimeBeforeMalus = NextStepMalusTime;
|
Net_TimeBeforeMalus = NextStepMalusTime;
|
||||||
} else if (!PendingMalus && ActiveMalus) {
|
} else if (!PendingMalus && ActiveMalus) {
|
||||||
if (MalusIndex != 99) {
|
if (MalusIndex != 99) {
|
||||||
SetMalusToAll(C_Malus_Reset);
|
foreach (Player in Players) {
|
||||||
|
MalusQueue[Player.User.WebServicesUserId] = GetNewMalus(C_Malus_Reset);
|
||||||
|
}
|
||||||
PendingMalus = False;
|
PendingMalus = False;
|
||||||
ActiveMalus = False;
|
ActiveMalus = False;
|
||||||
|
|
||||||
@ -452,15 +488,26 @@ if (Players.count > 0 && S_MalusDuration > 0 && MalusTime != -1 && Now > MalusTi
|
|||||||
Net_NextMalus = -1;
|
Net_NextMalus = -1;
|
||||||
Net_TimeBeforeMalus = NextStepMalusTime;
|
Net_TimeBeforeMalus = NextStepMalusTime;
|
||||||
} else {
|
} else {
|
||||||
SetMalusToAll(C_Malus_Nightmare);
|
foreach (Player in Players) {
|
||||||
|
MalusQueue[Player.User.WebServicesUserId] = GetNewMalus(C_Malus_Nightmare);
|
||||||
|
}
|
||||||
NextStepMalusTime = Now + (S_MalusDuration*1000);
|
NextStepMalusTime = Now + (S_MalusDuration*1000);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//Debug::Yield();
|
foreach (AccountId => Malus in MalusQueue) {
|
||||||
|
declare CSmPlayer Player = ModeUtils::GetPlayerFromAccountId(AccountId);
|
||||||
|
if (Malus.Time + 1000 < Now) { // Clear old entry
|
||||||
|
MalusQueue.removekey(AccountId);
|
||||||
|
} else if (Player != Null && (Player.SpawnStatus == CSmPlayer::ESpawnStatus::Spawned || Player.SpawnStatus == CSmPlayer::ESpawnStatus::Spawning)) {
|
||||||
|
Log::Log("[ApplyPhysics] Trying to set Event " ^ C_Malus_Name[Malus.MalusIndex] ^ " for " ^ Player.User.Name);
|
||||||
|
if (SetMalus(Player, Malus.MalusIndex)) {
|
||||||
|
MalusQueue.removekey(AccountId);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_EndRound***
|
***Match_EndRound***
|
||||||
@ -486,20 +533,30 @@ if (Round_ForceEndRound || Round_SkipPauseRound) {
|
|||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
Map_ValidRoundsNb += 1;
|
Map_ValidRoundsNb += 1;
|
||||||
Scores::SetPlayerWinner(Scores::GetBestPlayer(Race::C_Sort_RoundPoints));
|
|
||||||
Race::SortScores(Race::C_Sort_TotalPoints);
|
declare CSmScore WinnerScore <=> Scores::GetBestPlayer(Race::C_Sort_RoundPoints);
|
||||||
Scores::EndRound();
|
if (WinnerScore == Null) {
|
||||||
UIManager.UIAll.BigMessageSound = CUIConfig::EUISound::EndRound;
|
foreach (Score in Scores) {
|
||||||
UIManager.UIAll.BigMessageSoundVariant = 0;
|
if (Score.BestRaceTimes.count <= 0 && Score.User != Null && AccountIdsOfPlayers.exists(Score.User.WebServicesUserId)) {
|
||||||
|
WinnerScore <=> Score;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Scores::SetPlayerWinner(WinnerScore);
|
||||||
|
|
||||||
declare Text Message = _("|Match|Draw");
|
declare Text Message = _("|Match|Draw");
|
||||||
declare CSmScore WinnerScore <=> Scores::GetBestPlayer(Race::C_Sort_RoundPoints);
|
|
||||||
if (WinnerScore != Null) {
|
if (WinnerScore != Null) {
|
||||||
Message = TL::Compose(_("$<%1$> wins the match!"), Tools::GetNameWithClubTag(WinnerScore.User)); // TODO CHeck why display draw when someone leave
|
Message = TL::Compose(_("$<%1$> wins the match!"), Tools::GetNameWithClubTag(WinnerScore.User)); // TODO CHeck why display draw when someone leave
|
||||||
}
|
}
|
||||||
|
|
||||||
|
UIManager.UIAll.BigMessageSound = CUIConfig::EUISound::EndRound;
|
||||||
|
UIManager.UIAll.BigMessageSoundVariant = 0;
|
||||||
UIManager.UIAll.BigMessage = Message;
|
UIManager.UIAll.BigMessage = Message;
|
||||||
|
|
||||||
|
Scores::EndRound();
|
||||||
|
Race::SortScores(Race::C_Sort_TotalPoints);
|
||||||
|
|
||||||
MB_Sleep(5000);
|
MB_Sleep(5000);
|
||||||
UIManager.UIAll.BigMessage = "";
|
UIManager.UIAll.BigMessage = "";
|
||||||
UIManager.UIAll.ScoreTableVisibility = CUIConfig::EVisibility::ForcedVisible;
|
UIManager.UIAll.ScoreTableVisibility = CUIConfig::EVisibility::ForcedVisible;
|
||||||
@ -596,13 +653,20 @@ if (Round_ForceEndRound || Round_SkipPauseRound) {
|
|||||||
UIModules_ScoresTable::SetFooterInfo(Footer);
|
UIModules_ScoresTable::SetFooterInfo(Footer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
K_Malus GetNewMalus(Integer _MalusIndex) {
|
||||||
|
return K_Malus {
|
||||||
|
Time = Now,
|
||||||
|
MalusIndex = _MalusIndex
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
/** Set Malus to a specific Players
|
/** Set Malus to a specific Players
|
||||||
*
|
*
|
||||||
* @param _Player Player
|
* @param _Player Player
|
||||||
* @param _Type Malus Index
|
* @param _Type Malus Index
|
||||||
*/
|
*/
|
||||||
Boolean SetMalus(CSmPlayer _Player, Integer _Type) {
|
Boolean SetMalus(CSmPlayer _Player, Integer _Type) {
|
||||||
if (_Player.SpawnStatus == CSmPlayer::ESpawnStatus::Spawned) {
|
if (_Player.SpawnStatus == CSmPlayer::ESpawnStatus::Spawned && !SetPlayer_DelayedIsFull(_Player)) {
|
||||||
if (_Type > 0) {
|
if (_Type > 0) {
|
||||||
_Player.Dossard_Color = <1., 0., 0.>;
|
_Player.Dossard_Color = <1., 0., 0.>;
|
||||||
} else {
|
} else {
|
||||||
@ -612,66 +676,51 @@ Boolean SetMalus(CSmPlayer _Player, Integer _Type) {
|
|||||||
case C_Malus_Reset: {
|
case C_Malus_Reset: {
|
||||||
SetPlayerVehicle_ControlledByMode(_Player, False);
|
SetPlayerVehicle_ControlledByMode(_Player, False);
|
||||||
SetPlayerVehicle_ResetControlledModeValues(_Player);
|
SetPlayerVehicle_ResetControlledModeValues(_Player);
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_Reset(_Player);
|
SetPlayer_Delayed_Reset(_Player);
|
||||||
}
|
}
|
||||||
case C_Malus_ForceEngine: {
|
case C_Malus_ForceEngine: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_ForceEngine(_Player,True);
|
SetPlayer_Delayed_ForceEngine(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_NoEngine: {
|
case C_Malus_NoEngine: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_NoEngine(_Player,True);
|
SetPlayer_Delayed_NoEngine(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_BackwardOnly: {
|
case C_Malus_BackwardOnly: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_Cruise(_Player,True,-999.);
|
SetPlayer_Delayed_Cruise(_Player,True,-999.);
|
||||||
}
|
}
|
||||||
case C_Malus_NoBrakes: {
|
case C_Malus_NoBrakes: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_NoBrakes(_Player,True);
|
SetPlayer_Delayed_NoBrakes(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_NoSteer: {
|
case C_Malus_NoSteer: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_NoSteer(_Player,True);
|
SetPlayer_Delayed_NoSteer(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_SlowMotion: {
|
case C_Malus_SlowMotion: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_SlowMotion(_Player,True);
|
SetPlayer_Delayed_SlowMotion(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_BoostDown: {
|
case C_Malus_BoostDown: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_BoostDown(_Player,True);
|
SetPlayer_Delayed_BoostDown(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_BoostUp: {
|
case C_Malus_BoostUp: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_BoostUp(_Player,True);
|
SetPlayer_Delayed_BoostUp(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_Boost2Down: {
|
case C_Malus_Boost2Down: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_Boost2Down(_Player,True);
|
SetPlayer_Delayed_Boost2Down(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_Boost2Up: {
|
case C_Malus_Boost2Up: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_Boost2Up(_Player,True);
|
SetPlayer_Delayed_Boost2Up(_Player,True);
|
||||||
}
|
}
|
||||||
case C_Malus_LockPlayer: {
|
case C_Malus_LockPlayer: {
|
||||||
SetPlayerVehicle_ControlledByMode(_Player, True);
|
SetPlayerVehicle_ControlledByMode(_Player, True);
|
||||||
}
|
}
|
||||||
case C_Malus_AccelCoef25: {
|
case C_Malus_AccelCoef25: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_AccelCoef(_Player,0.25);
|
SetPlayer_Delayed_AccelCoef(_Player,0.25);
|
||||||
}
|
}
|
||||||
case C_Malus_AdherenceCoef25: {
|
case C_Malus_AdherenceCoef25: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_AdherenceCoef(_Player,0.25);
|
SetPlayer_Delayed_AdherenceCoef(_Player,0.25);
|
||||||
}
|
}
|
||||||
case C_Malus_ControlCoef25: {
|
case C_Malus_ControlCoef25: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_ControlCoef(_Player,0.25);
|
SetPlayer_Delayed_ControlCoef(_Player,0.25);
|
||||||
}
|
}
|
||||||
case C_Malus_GravityCoef25: {
|
case C_Malus_GravityCoef25: {
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_GravityCoef(_Player,0.25);
|
SetPlayer_Delayed_GravityCoef(_Player,0.25);
|
||||||
}
|
}
|
||||||
// The goal is to kill all Players
|
// The goal is to kill all Players
|
||||||
@ -679,9 +728,7 @@ Boolean SetMalus(CSmPlayer _Player, Integer _Type) {
|
|||||||
SetPlayerVehicle_ControlledByMode(_Player, True);
|
SetPlayerVehicle_ControlledByMode(_Player, True);
|
||||||
SetPlayerVehicle_TargetSpeedValue(_Player, ML::Rand(-500.,500.));
|
SetPlayerVehicle_TargetSpeedValue(_Player, ML::Rand(-500.,500.));
|
||||||
SetPlayerVehicle_SteerValue(_Player,ML::Rand(-1.,1.));
|
SetPlayerVehicle_SteerValue(_Player,ML::Rand(-1.,1.));
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_Boost2Up(_Player,True);
|
SetPlayer_Delayed_Boost2Up(_Player,True);
|
||||||
while (SetPlayer_DelayedIsFull(_Player)) MB_Yield();
|
|
||||||
SetPlayer_Delayed_AdherenceCoef(_Player,0.1);
|
SetPlayer_Delayed_AdherenceCoef(_Player,0.1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -690,25 +737,15 @@ Boolean SetMalus(CSmPlayer _Player, Integer _Type) {
|
|||||||
return False;
|
return False;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Set Malus to all Players
|
|
||||||
*
|
|
||||||
* @param _Type Malus Index
|
|
||||||
*/
|
|
||||||
Void SetMalusToAll(Integer _Type) {
|
|
||||||
foreach (Player in Players) {
|
|
||||||
SetMalus(Player, _Type);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/** Set the UI
|
/** Set the UI
|
||||||
*
|
*
|
||||||
* @param _Player Malus Index
|
* @param _Player Malus Index
|
||||||
*/
|
*/
|
||||||
Void SetML(CSmPlayer _Player) {
|
Void SetML() {
|
||||||
declare TotalWidth = 44.5;
|
declare TotalWidth = 44.5;
|
||||||
|
|
||||||
declare Text MLText = """
|
declare Text MLText = """
|
||||||
<manialink name="LMS_UI" version="3">
|
<manialink name="LMS_InfoPanel" version="3">
|
||||||
<script><!--
|
<script><!--
|
||||||
#Include "TextLib" as TL
|
#Include "TextLib" as TL
|
||||||
|
|
||||||
@ -828,13 +865,58 @@ Void SetML(CSmPlayer _Player) {
|
|||||||
|
|
||||||
</manialink>
|
</manialink>
|
||||||
""";
|
""";
|
||||||
Layers::Create("LMS_UI", MLText);
|
Layers::Create("LMS_InfoPanel", MLText);
|
||||||
Layers::SetType("LMS_UI", CUILayer::EUILayerType::Normal);
|
Layers::SetType("LMS_InfoPanel", CUILayer::EUILayerType::Normal);
|
||||||
if (_Player == Null) {
|
Layers::Attach("LMS_InfoPanel");
|
||||||
Layers::Attach("LMS_UI");
|
|
||||||
} else {
|
|
||||||
Layers::Attach("LMS_UI", _Player);
|
MLText = """
|
||||||
}
|
<manialink name="LMS_MapInfo" version="3">
|
||||||
|
<script><!--
|
||||||
|
#Include "TextLib" as TL
|
||||||
|
|
||||||
|
main() {
|
||||||
|
declare netread Boolean Net_LMS_IsIntro for Teams[0];
|
||||||
|
declare Boolean Last_IsIntro;
|
||||||
|
|
||||||
|
declare CMlFrame Frame_Global = (Page.GetFirstChild("frame-global") as CMlFrame);
|
||||||
|
declare CMlLabel Label_MapInfo_Name = (Page.GetFirstChild("label-mapinfo-name") as CMlLabel);
|
||||||
|
declare CMlLabel Label_MapInfo_Author = (Page.GetFirstChild("label-mapinfo-author") as CMlLabel);
|
||||||
|
|
||||||
|
while(True) {
|
||||||
|
yield;
|
||||||
|
|
||||||
|
if (Last_IsIntro != Net_LMS_IsIntro) {
|
||||||
|
Last_IsIntro = Net_LMS_IsIntro;
|
||||||
|
if (Last_IsIntro) {
|
||||||
|
Label_MapInfo_Name.Value = Map.MapName;
|
||||||
|
Label_MapInfo_Author.Value = "by " ^ Map.AuthorNickName;
|
||||||
|
|
||||||
|
AnimMgr.Flush(Frame_Global);
|
||||||
|
AnimMgr.Add(Frame_Global, "<anim hidden=\"0\" pos=\"0 60\"/>", 200 , CAnimManager::EAnimManagerEasing::SineInOut);
|
||||||
|
} else {
|
||||||
|
AnimMgr.Flush(Frame_Global);
|
||||||
|
AnimMgr.Add(Frame_Global, "<anim hidden=\"1\" pos=\"0 115\"/>", 200 , CAnimManager::EAnimManagerEasing::SineInOut);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
--></script>
|
||||||
|
<stylesheet>
|
||||||
|
<style class="text" textfont="GameFontBlack" textcolor="ffffffff" textsize="8" valign="center2" halign="center"/>
|
||||||
|
</stylesheet>
|
||||||
|
|
||||||
|
<frame id="frame-global" pos="0 115" hidden="1">
|
||||||
|
<quad size="150 25" halign="center" z-index="-1" bgcolor="000" opacity="0.7"/>
|
||||||
|
<label id="label-mapinfo-name" class="text" pos="0 -8" size="140 10"/>
|
||||||
|
<label id="label-mapinfo-author" class="text" pos="0 -18" size="140 10" textsize="6"/>
|
||||||
|
</frame>
|
||||||
|
|
||||||
|
</manialink>
|
||||||
|
""";
|
||||||
|
Layers::Create("LMS_MapInfo", MLText);
|
||||||
|
Layers::SetType("LMS_MapInfo", CUILayer::EUILayerType::Normal);
|
||||||
|
Layers::Attach("LMS_MapInfo");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
117
TM_EventCup.Script.txt
Normal file
117
TM_EventCup.Script.txt
Normal file
@ -0,0 +1,117 @@
|
|||||||
|
|
||||||
|
/*
|
||||||
|
* This mode uses the TMGL World Cup mode and removes all references to it
|
||||||
|
*/
|
||||||
|
#Extends "Modes/TrackMania/TM_Final86TMGL_Online.Script.txt"
|
||||||
|
// #RequireContext CSmMode
|
||||||
|
|
||||||
|
#Include "ManiaApps/Nadeo/TMNext/TrackMania/UIModules/TMGLMarkers_Server.Script.txt" as UIModules_TMGLMarkers
|
||||||
|
|
||||||
|
#Setting S_PointsLimit 100
|
||||||
|
#Setting S_RoundsPerMap 3
|
||||||
|
#Setting S_ForceLapsNb -1
|
||||||
|
#Setting S_PointsRepartition ""
|
||||||
|
#Setting S_KOCheckpointNb 0 // Number of checkpoints in lead to validate a K.O.
|
||||||
|
#Setting S_KOCheckpointTime 1500 // Advance in milliseconds to validate a K.O.
|
||||||
|
#Setting S_KOValidationDelay 1000 // Delay in milliseconds before validating a K.O.
|
||||||
|
#Setting S_EnableAmbientSound True //"Enable ambient sound"
|
||||||
|
#Setting S_WorldRecords "" // Format : {"map uid": {"AcountId": "player account id", "Time": time in milliseconds}, ...}
|
||||||
|
#Setting S_DelayBetweenRounds 0
|
||||||
|
#Setting S_ForceRoadSpectatorsNb -1 //< Force the number of spectators displayed on the border of the road
|
||||||
|
#Setting S_DecoImageUrl_Screen16x9 ""
|
||||||
|
#Setting S_DecoImageUrl_Screen8x1 ""
|
||||||
|
#Setting S_DecoImageUrl_Screen16x1 ""
|
||||||
|
#Setting S_OverridePlayerProfiles ""
|
||||||
|
|
||||||
|
#Setting S_DisplayTeamName True as "Display Marker Name on the Live Ranking Interface"
|
||||||
|
#Setting S_DisplayTeamColor False as "Display Team Color on the Live Ranking Interface"
|
||||||
|
/*
|
||||||
|
S_OverridePlayerProfiles Json format : (enpty values can be removed)
|
||||||
|
{
|
||||||
|
"56f8dd9f-8581-444e-a2ad-1e8e89eed1a4": {
|
||||||
|
"WebServicesUserId": "56f8dd9f-8581-444e-a2ad-1e8e89eed1a4",
|
||||||
|
"Nickname": "Beu",
|
||||||
|
"Flag": "",
|
||||||
|
"TeamColor": "",
|
||||||
|
"Cheers": "",
|
||||||
|
"MarkerName": "$F0FTeam Beu"
|
||||||
|
},
|
||||||
|
"iiii-jjjj-kkkk-llll": {
|
||||||
|
...
|
||||||
|
},
|
||||||
|
...
|
||||||
|
}
|
||||||
|
|
||||||
|
TeamColor is not used if S_DisplayTeamColor = False
|
||||||
|
*/
|
||||||
|
|
||||||
|
***Match_AfterLoadHud***
|
||||||
|
***
|
||||||
|
// Remove TMGL Signs
|
||||||
|
UIModules::UnloadModules(["UIModule_ChampionTMGL_InfoPanels_2x3", "UIModule_ChampionTMGL_InfoPanels_16x9", "UIModule_ChampionCup_Sign64x10_64x10_Start","UIModule_ChampionCup_Sign64x10_64x10_Finish","UIModule_ChampionCup_Sign64x10_64x10_Checkpoint","FinalTMGL_WinScreen","UIModule_Champion_Chat"]);
|
||||||
|
***
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
***Match_InitMap***
|
||||||
|
***
|
||||||
|
declare Boolean Last_DisplayTeamName;
|
||||||
|
declare Boolean Last_DisplayTeamColor;
|
||||||
|
declare Text Last_OverridePlayerProfiles;
|
||||||
|
|
||||||
|
if (Last_DisplayTeamName != S_DisplayTeamName || Last_DisplayTeamColor != S_DisplayTeamColor) {
|
||||||
|
Last_DisplayTeamName = S_DisplayTeamName;
|
||||||
|
Last_DisplayTeamColor = S_DisplayTeamColor;
|
||||||
|
UIModules_LiveRanking::DisplayTeamName(S_DisplayTeamName);
|
||||||
|
UIModules_LiveRanking::DisplayTeamColor(S_DisplayTeamColor);
|
||||||
|
}
|
||||||
|
if (Last_OverridePlayerProfiles != S_OverridePlayerProfiles) {
|
||||||
|
Last_OverridePlayerProfiles = S_OverridePlayerProfiles;
|
||||||
|
PlayerProfiles::OverridePlayerProfiles(Teams[0], S_OverridePlayerProfiles);
|
||||||
|
ResetMarkersConfig();
|
||||||
|
}
|
||||||
|
***
|
||||||
|
|
||||||
|
***Match_PlayLoop***
|
||||||
|
***
|
||||||
|
if (Last_DisplayTeamName != S_DisplayTeamName || Last_DisplayTeamColor != S_DisplayTeamColor) {
|
||||||
|
Last_DisplayTeamName = S_DisplayTeamName;
|
||||||
|
Last_DisplayTeamColor = S_DisplayTeamColor;
|
||||||
|
UIModules_LiveRanking::DisplayTeamName(S_DisplayTeamName);
|
||||||
|
UIModules_LiveRanking::DisplayTeamColor(S_DisplayTeamColor);
|
||||||
|
}
|
||||||
|
if (Last_OverridePlayerProfiles != S_OverridePlayerProfiles) {
|
||||||
|
Last_OverridePlayerProfiles = S_OverridePlayerProfiles;
|
||||||
|
PlayerProfiles::OverridePlayerProfiles(Teams[0], S_OverridePlayerProfiles);
|
||||||
|
ResetMarkersConfig();
|
||||||
|
}
|
||||||
|
***
|
||||||
|
|
||||||
|
|
||||||
|
Void ResetMarkersConfig() {
|
||||||
|
// Manialink variables
|
||||||
|
declare netwrite Text[Integer] Net_ChampionTMGL_TMGLMarkers_MarkerFrameIds for Teams[0] = [];
|
||||||
|
declare netwrite Integer Net_ChampionTMGL_TMGLMarkers_MarkerFrameIdsUpdate for Teams[0] = 0;
|
||||||
|
|
||||||
|
// TMGLMarkers Lib variables
|
||||||
|
declare Ident[Ident] LibTMGLMarkers_MarkedPlayerIds for UIManager.UIAll = [];
|
||||||
|
declare Integer[Ident] LibTMGLMarkers_MarkerFrameIds for UIManager.UIAll = [];
|
||||||
|
|
||||||
|
declare Text[Integer] MarkerToUpdate;
|
||||||
|
foreach (Key => Value in Net_ChampionTMGL_TMGLMarkers_MarkerFrameIds) {
|
||||||
|
MarkerToUpdate[Key] = "";
|
||||||
|
}
|
||||||
|
|
||||||
|
LibTMGLMarkers_MarkedPlayerIds = [];
|
||||||
|
LibTMGLMarkers_MarkerFrameIds = [];
|
||||||
|
Net_ChampionTMGL_TMGLMarkers_MarkerFrameIds = MarkerToUpdate;
|
||||||
|
Net_ChampionTMGL_TMGLMarkers_MarkerFrameIdsUpdate += 1;
|
||||||
|
|
||||||
|
|
||||||
|
// Force update at next yield
|
||||||
|
foreach (Player in Players) {
|
||||||
|
declare Boolean LibTMGLMarkers_NewPlayer for Player = True;
|
||||||
|
LibTMGLMarkers_NewPlayer = True;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
@ -246,6 +246,11 @@ MB_WarmUp(S_WarmUpNb, S_WarmUpDuration * 1000, S_WarmUpTimeout * 1000);
|
|||||||
***
|
***
|
||||||
declare netwrite Boolean Net_RoyalRounds_WarmUpUI_IsActive for Teams[0];
|
declare netwrite Boolean Net_RoyalRounds_WarmUpUI_IsActive for Teams[0];
|
||||||
Net_RoyalRounds_WarmUpUI_IsActive = True;
|
Net_RoyalRounds_WarmUpUI_IsActive = True;
|
||||||
|
|
||||||
|
foreach (Player in Players) {
|
||||||
|
declare netwrite Integer Net_RoyalRounds_WarmUpUI_SelectedSegment for Player = 1;
|
||||||
|
Player.LandmarkOrderSelector_Race = Net_RoyalRounds_WarmUpUI_SelectedSegment;
|
||||||
|
}
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_WarmUpLoop***
|
***Match_WarmUpLoop***
|
||||||
|
@ -5,7 +5,7 @@
|
|||||||
|
|
||||||
#Const CompatibleMapTypes "TrackMania\\TM_Race,TM_Race"
|
#Const CompatibleMapTypes "TrackMania\\TM_Race,TM_Race"
|
||||||
#Const Version "2021-10-16"
|
#Const Version "2021-10-16"
|
||||||
#Const ScriptName "Modes/TrackMania/TM_SeedingTimeAttack_Online.Script.txt"
|
#Const ScriptName "Modes/TM2020-Gamemodes/TM_SeedingTimeAttack_Online.Script.txt"
|
||||||
|
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
// Libraries
|
// Libraries
|
||||||
@ -17,6 +17,7 @@
|
|||||||
#Include "Libs/Nadeo/TMNext/TrackMania/Modes/TrophyRanking.Script.txt" as TrophyRanking
|
#Include "Libs/Nadeo/TMNext/TrackMania/Modes/TrophyRanking.Script.txt" as TrophyRanking
|
||||||
#Include "Libs/Nadeo/TMNext/TrackMania/Menu/Constants.Script.txt" as MenuConsts
|
#Include "Libs/Nadeo/TMNext/TrackMania/Menu/Constants.Script.txt" as MenuConsts
|
||||||
#Include "Libs/Nadeo/ModeLibs/Common/Utils.Script.txt" as ModeUtils
|
#Include "Libs/Nadeo/ModeLibs/Common/Utils.Script.txt" as ModeUtils
|
||||||
|
#Include "Libs/Nadeo/CommonLibs/Common/Semver.Script.txt" as Semver
|
||||||
|
|
||||||
// UI from Race
|
// UI from Race
|
||||||
#Include "ManiaApps/Nadeo/TMxSM/Race/UIModules/TimeGap_Server.Script.txt" as UIModules_TimeGap
|
#Include "ManiaApps/Nadeo/TMxSM/Race/UIModules/TimeGap_Server.Script.txt" as UIModules_TimeGap
|
||||||
@ -26,7 +27,6 @@
|
|||||||
#Include "ManiaApps/Nadeo/TMNext/TrackMania/TimeAttack/UIModules/EndMatchTrophy_Server.Script.txt" as UIModules_EndMatchTrophy
|
#Include "ManiaApps/Nadeo/TMNext/TrackMania/TimeAttack/UIModules/EndMatchTrophy_Server.Script.txt" as UIModules_EndMatchTrophy
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
// Settings
|
// Settings
|
||||||
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
// ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ //
|
||||||
@ -124,7 +124,7 @@ foreach (Event in PendingEvents) {
|
|||||||
StateMgr::InitializePlayer(Event.Player);
|
StateMgr::InitializePlayer(Event.Player);
|
||||||
CarRank::InitializePlayer(Event.Player);
|
CarRank::InitializePlayer(Event.Player);
|
||||||
if (Event.Player != Null) {
|
if (Event.Player != Null) {
|
||||||
Log::Log("[Match_Yield][PendingEvents] New player added: " ^ Event.Player.Name);
|
Log::Log("[Match_Yield][PendingEvents] New player added: " ^ Event.Player.User.Name);
|
||||||
declare Boolean Match_CanForceTrophyRankUpdate for This;
|
declare Boolean Match_CanForceTrophyRankUpdate for This;
|
||||||
TrophyRanking::InitializeUser(Event.Player.User, Match_CanForceTrophyRankUpdate);
|
TrophyRanking::InitializeUser(Event.Player.User, Match_CanForceTrophyRankUpdate);
|
||||||
if (Scores::GetPlayerMatchPoints(Event.Player.Score) == 0) {
|
if (Scores::GetPlayerMatchPoints(Event.Player.Score) == 0) {
|
||||||
@ -202,7 +202,7 @@ declare Boolean Map_UseTheWorstTimeForDNF;
|
|||||||
***Match_StartMap***
|
***Match_StartMap***
|
||||||
***
|
***
|
||||||
// Add bot when necessary
|
// Add bot when necessary
|
||||||
Users_SetNbFakeUsers(C_FakeUsersNb, 0);
|
if (S_ScriptEnvironment == "production") Users_SetNbFakeUsers(C_FakeUsersNb, 0);
|
||||||
|
|
||||||
// Warm up
|
// Warm up
|
||||||
UIModules_ScoresTable::SetFooterInfo(_("Warmup"));
|
UIModules_ScoresTable::SetFooterInfo(_("Warmup"));
|
||||||
@ -243,12 +243,11 @@ UpdateCustomRanking(Null);
|
|||||||
|
|
||||||
***Match_PlayLoop***
|
***Match_PlayLoop***
|
||||||
***
|
***
|
||||||
|
|
||||||
foreach (Event in PendingEvents) {
|
foreach (Event in PendingEvents) {
|
||||||
Log::Log("[PlayLoop][PendingEvents] Event.Type: " ^ Event.Type);
|
Log::Log("[PlayLoop][PendingEvents] Event.Type: " ^ Event.Type);
|
||||||
if (Event.Type == CSmModeEvent::EType::OnPlayerAdded) {
|
if (Event.Type == CSmModeEvent::EType::OnPlayerAdded) {
|
||||||
if (Event.Player != Null) {
|
if (Event.Player != Null) {
|
||||||
Log::Log("[PlayLoop][PendingEvents] New player added: " ^ Event.Player.Name);
|
Log::Log("[PlayLoop][PendingEvents] New player added: " ^ Event.Player.User.Name);
|
||||||
UpdateCustomRanking(Event.Player);
|
UpdateCustomRanking(Event.Player);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -359,8 +358,13 @@ if (EndTime > 0 && Now >= EndTime) {
|
|||||||
}
|
}
|
||||||
***
|
***
|
||||||
|
|
||||||
***Match_EndMap***
|
***Match_EndRound***
|
||||||
***
|
***
|
||||||
|
if (Semver::Compare(XmlRpc::GetApiVersion(), ">=", "2.1.1")) {
|
||||||
|
Scores::XmlRpc_SendScores(Scores::C_Section_PreEndRound, "");
|
||||||
|
}
|
||||||
|
|
||||||
|
UpdateCustomRanking(Null);
|
||||||
EndTime = -1;
|
EndTime = -1;
|
||||||
|
|
||||||
declare Integer WorstTime for This;
|
declare Integer WorstTime for This;
|
||||||
@ -378,6 +382,10 @@ CarRank::Update(CarRank::C_SortCriteria_BestRace);
|
|||||||
Race::StopSkipOutroAll();
|
Race::StopSkipOutroAll();
|
||||||
|
|
||||||
Scores::EndRound();
|
Scores::EndRound();
|
||||||
|
***
|
||||||
|
|
||||||
|
***Match_EndMap***
|
||||||
|
***
|
||||||
|
|
||||||
if (MB_GetMapCount() >= S_MapsPerMatch) {
|
if (MB_GetMapCount() >= S_MapsPerMatch) {
|
||||||
Log::Log("[Match_EndMap] Stop Match");
|
Log::Log("[Match_EndMap] Stop Match");
|
||||||
@ -676,7 +684,7 @@ Void SetML() {
|
|||||||
Void SetPlayerEntry(Integer _Index, Integer _Rank, Text _Name, Text _Login, Vec3 _PlayerNameColor, Integer _RoundPoints, Integer _MatchPoints) {
|
Void SetPlayerEntry(Integer _Index, Integer _Rank, Text _Name, Text _Login, Vec3 _PlayerNameColor, Integer _RoundPoints, Integer _MatchPoints) {
|
||||||
DevLog("[SetPlayerEntry UI] Set entry for " ^ _Name ^ " at index " ^_Index);
|
DevLog("[SetPlayerEntry UI] Set entry for " ^ _Name ^ " at index " ^_Index);
|
||||||
declare CMlFrame Frame_ParentFrame <=> (Page.GetFirstChild("player-" ^ _Index) as CMlFrame);
|
declare CMlFrame Frame_ParentFrame <=> (Page.GetFirstChild("player-" ^ _Index) as CMlFrame);
|
||||||
declare CMlQuad Quad_Bg <=> (Page.GetFirstChild("bg-player-" ^ _Index) as CMlQuad);
|
declare CMlQuad Quad_Bg <=> (Frame_ParentFrame.GetFirstChild("player-bg") as CMlQuad);
|
||||||
declare CMlLabel Label_PlayerPos <=> (Frame_ParentFrame.GetFirstChild("player-pos") as CMlLabel);
|
declare CMlLabel Label_PlayerPos <=> (Frame_ParentFrame.GetFirstChild("player-pos") as CMlLabel);
|
||||||
declare CMlLabel Label_PlayerName <=> (Frame_ParentFrame.GetFirstChild("player-name") as CMlLabel);
|
declare CMlLabel Label_PlayerName <=> (Frame_ParentFrame.GetFirstChild("player-name") as CMlLabel);
|
||||||
declare CMlLabel Label_PlayerMapTime <=> (Frame_ParentFrame.GetFirstChild("player-maptime") as CMlLabel);
|
declare CMlLabel Label_PlayerMapTime <=> (Frame_ParentFrame.GetFirstChild("player-maptime") as CMlLabel);
|
||||||
@ -701,6 +709,8 @@ Void SetML() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
main() {
|
main() {
|
||||||
|
declare CMlQuad Quad_Sep10 <=> (Page.GetFirstChild("sep-10") as CMlQuad);
|
||||||
|
|
||||||
declare netread Integer Net_SerialNeedToUpdate for Teams[0];
|
declare netread Integer Net_SerialNeedToUpdate for Teams[0];
|
||||||
declare Integer Last_SerialNeedToUpdate = -1;
|
declare Integer Last_SerialNeedToUpdate = -1;
|
||||||
declare Text Last_GUIPlayerUID;
|
declare Text Last_GUIPlayerUID;
|
||||||
@ -725,11 +735,11 @@ Void SetML() {
|
|||||||
DevLog("[PendingEvents] Toggle UI by " ^ InputPlayer.User.Login);
|
DevLog("[PendingEvents] Toggle UI by " ^ InputPlayer.User.Login);
|
||||||
ToggleUI();
|
ToggleUI();
|
||||||
}
|
}
|
||||||
} else if (Event.Type == CMlScriptEvent::Type::MouseOver && TL::Find("bg-player-", Event.ControlId, True, True) && InputPlayerIsSpectator()) {
|
} else if (Event.Type == CMlScriptEvent::Type::MouseOver && TL::Find("player-bg", Event.ControlId, True, True) && InputPlayerIsSpectator()) {
|
||||||
declare Quad <=> (Page.GetFirstChild(Event.ControlId) as CMlQuad);
|
declare Quad <=> (Event.Control as CMlQuad);
|
||||||
Quad.Opacity = 0.1;
|
Quad.Opacity = 0.1;
|
||||||
} else if (Event.Type == CMlScriptEvent::Type::MouseOut && TL::Find("bg-player-", Event.ControlId, True, True)) {
|
} else if (Event.Type == CMlScriptEvent::Type::MouseOut && TL::Find("player-bg", Event.ControlId, True, True)) {
|
||||||
declare Quad <=> (Page.GetFirstChild(Event.ControlId) as CMlQuad);
|
declare Quad <=> (Event.Control as CMlQuad);
|
||||||
Quad.Opacity = 0.;
|
Quad.Opacity = 0.;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -759,6 +769,8 @@ Void SetML() {
|
|||||||
declare CUser PreviousUser;
|
declare CUser PreviousUser;
|
||||||
declare CUser PreviousPreviousUser;
|
declare CUser PreviousPreviousUser;
|
||||||
|
|
||||||
|
Quad_Sep10.Visible = False;
|
||||||
|
|
||||||
foreach (PlayerUID => Points in PlayersMatchPoints) {
|
foreach (PlayerUID => Points in PlayersMatchPoints) {
|
||||||
declare CUser User <=> GetUserFromAccountId(PlayerUID);
|
declare CUser User <=> GetUserFromAccountId(PlayerUID);
|
||||||
if (User == Null) continue;
|
if (User == Null) continue;
|
||||||
@ -767,6 +779,7 @@ Void SetML() {
|
|||||||
if (GUIPlayer != Null && PlayerUID == GUIPlayer.User.WebServicesUserId) {
|
if (GUIPlayer != Null && PlayerUID == GUIPlayer.User.WebServicesUserId) {
|
||||||
PlayerNameColor = <0.922,0.855,0.42>; //Gold
|
PlayerNameColor = <0.922,0.855,0.42>; //Gold
|
||||||
GUIPlayerPassed = True;
|
GUIPlayerPassed = True;
|
||||||
|
if (Rank > 12 || (Rank == 12 && PlayersMatchPoints.count > 12)) Quad_Sep10.Visible = True;
|
||||||
} else if (InputPlayer != Null && PlayerUID == InputPlayer.User.WebServicesUserId) {
|
} else if (InputPlayer != Null && PlayerUID == InputPlayer.User.WebServicesUserId) {
|
||||||
PlayerNameColor = <0.431,0.98,0.627>; // Green
|
PlayerNameColor = <0.431,0.98,0.627>; // Green
|
||||||
}
|
}
|
||||||
@ -801,122 +814,35 @@ Void SetML() {
|
|||||||
<style class="text" textfont="GameFontBlack" textcolor="fff" textsize="1.5" halign="left" valign="center2" textprefix="$i$t" />
|
<style class="text" textfont="GameFontBlack" textcolor="fff" textsize="1.5" halign="left" valign="center2" textprefix="$i$t" />
|
||||||
<style class="text-suffix" textfont="GameFontBlack" textcolor="ffffff" textsize="0.7" halign="center" valign="center2" textprefix="$i$t"/>
|
<style class="text-suffix" textfont="GameFontBlack" textcolor="ffffff" textsize="0.7" halign="center" valign="center2" textprefix="$i$t"/>
|
||||||
</stylesheet>
|
</stylesheet>
|
||||||
|
<framemodel id="player-model">
|
||||||
|
<quad id="player-bg" valign="center" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
||||||
|
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="1"/>
|
||||||
|
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="1"/>
|
||||||
|
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
||||||
|
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
||||||
|
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
||||||
|
</framemodel>
|
||||||
<frame id="frame-global" pos="-160 30">
|
<frame id="frame-global" pos="-160 30">
|
||||||
<frame pos="53 -2.5" id="frame-toggle">
|
<frame pos="53 -2.5" id="frame-toggle" z-index="1" >
|
||||||
<quad id="quad-toggle" pos="0 0" size="4 4" class="quad-base" z-index="3" opacity="0.9" scriptevents="1" halign="center" valign="center" image="file://Media/Manialinks/Nadeo/TMNext/Menus/Icons/128x128/ICON_ARROW_LEFT_OBLIQUE.dds" colorize="fff"/>
|
<quad id="quad-toggle" pos="0 0" size="4 4" class="quad-base" z-index="3" opacity="0.9" scriptevents="1" halign="center" valign="center" image="file://Media/Manialinks/Nadeo/TMNext/Menus/Icons/128x128/ICON_ARROW_LEFT_OBLIQUE.dds" colorize="fff"/>
|
||||||
</frame>
|
</frame>
|
||||||
<quad pos="0 0" z-index="0" size="55 71" bgcolor="000" opacity="0.5"/>
|
|
||||||
<frame id="frame-ui" z-index="1">
|
<frame id="frame-ui" z-index="1">
|
||||||
|
<quad pos="0 0" z-index="0" size="55 69" bgcolor="000" opacity="0.5"/>
|
||||||
<label pos="27.5 -5" z-index="2" size="55 7" text="Match Ranking" textfont="GameFontBlack" textprefix="$i$t" valign="center2" halign="center" textcolor="fff"/>
|
<label pos="27.5 -5" z-index="2" size="55 7" text="Match Ranking" textfont="GameFontBlack" textprefix="$i$t" valign="center2" halign="center" textcolor="fff"/>
|
||||||
<frame pos="0 -10" z-index="2">
|
<frame pos="0 -11" z-index="2">
|
||||||
<frame hidden=1 id="player-1" pos="0 0">
|
<frameinstance pos="0 0" hidden="1" modelid="player-model" id="player-1"/>
|
||||||
<quad id="bg-player-1" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
<frameinstance pos="0 -5" hidden="1" modelid="player-model" id="player-2"/>
|
||||||
<frame pos="0 -2.7">
|
<frameinstance pos="0 -10" hidden="1" modelid="player-model" id="player-3"/>
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="1"/>
|
<frameinstance pos="0 -15" hidden="1" modelid="player-model" id="player-4"/>
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
<frameinstance pos="0 -20" hidden="1" modelid="player-model" id="player-5"/>
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
<frameinstance pos="0 -25" hidden="1" modelid="player-model" id="player-6"/>
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
<frameinstance pos="0 -30" hidden="1" modelid="player-model" id="player-7"/>
|
||||||
</frame>
|
<frameinstance pos="0 -35" hidden="1" modelid="player-model" id="player-8"/>
|
||||||
</frame>
|
<frameinstance pos="0 -40" hidden="1" modelid="player-model" id="player-9"/>
|
||||||
<frame hidden=1 id="player-2" pos="0 -5">
|
<quad id=sep-10 pos="0 -42" hidden=1 opacity="0.8" z-index="2" size="55 0.5" bgcolor="fff" />
|
||||||
<quad id="bg-player-2" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
<frameinstance pos="0 -45" hidden="1" modelid="player-model" id="player-10"/>
|
||||||
<frame pos="0 -2.7">
|
<frameinstance pos="0 -50" hidden="1" modelid="player-model" id="player-11"/>
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="2"/>
|
<frameinstance pos="0 -55" hidden="1" modelid="player-model" id="player-12"/>
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-3" pos="0 -10">
|
|
||||||
<quad id="bg-player-3" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="3"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-4" pos="0 -15">
|
|
||||||
<quad id="bg-player-4" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="4"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-5" pos="0 -20">
|
|
||||||
<quad id="bg-player-5" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="5"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-6" pos="0 -25">
|
|
||||||
<quad id="bg-player-6" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="6"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-7" pos="0 -30">
|
|
||||||
<quad id="bg-player-7" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="7"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-8" pos="0 -35">
|
|
||||||
<quad id="bg-player-8" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="8"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-9" pos="0 -40">
|
|
||||||
<quad id="bg-player-8" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="9"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-10" pos="0 -45">
|
|
||||||
<quad id="bg-player-10" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="10"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-11" pos="0 -45">
|
|
||||||
<quad id="bg-player-11" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="11"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
<frame hidden=1 id="player-12" pos="0 -45">
|
|
||||||
<quad id="bg-player-12" pos="0 0" z-index="0" size="55 5" bgcolor="999" opacity="0" scriptevents="1"/>
|
|
||||||
<frame pos="0 -2.7">
|
|
||||||
<label id="player-pos" class="text" pos="1 0" z-index="0" size="5 6" text="12"/>
|
|
||||||
<label id="player-name" class="text" pos="7 0" z-index="0" size="25 6" text=""/>
|
|
||||||
<label id="player-maptime" class="text" pos="42 0" z-index="0" size="8 6" text="--:--.---" textcolor="aaa" textsize="0.5" halign="right"/>
|
|
||||||
<label id="player-totaltimes" class="text" pos="54 0" z-index="0" size="10 6" text="--:--.---" halign="right"/>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
|
||||||
</frame>
|
</frame>
|
||||||
</frame>
|
</frame>
|
||||||
</frame>
|
</frame>
|
||||||
|
Loading…
Reference in New Issue
Block a user