mirror of
https://github.com/ddnet/ddnet.git
synced 2024-09-20 01:24:18 +00:00
Merge pull request #8227 from Zwelf/pr-disable-practice-while-saving
Disallow activating /practice while save is in progress and improve messaging for when `/save`/`/load` command does nothing
This commit is contained in:
commit
da09087416
|
@ -644,6 +644,15 @@ void CGameContext::ConPractice(IConsole::IResult *pResult, void *pUserData)
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(Teams.GetSaving(Team))
|
||||||
|
{
|
||||||
|
pSelf->Console()->Print(
|
||||||
|
IConsole::OUTPUT_LEVEL_STANDARD,
|
||||||
|
"chatresp",
|
||||||
|
"Practice mode can't be enabled while team save or load is in progress");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if(Teams.IsPractice(Team))
|
if(Teams.IsPractice(Team))
|
||||||
{
|
{
|
||||||
pSelf->Console()->Print(
|
pSelf->Console()->Print(
|
||||||
|
|
|
@ -288,10 +288,17 @@ void CScore::SaveTeam(int ClientId, const char *pCode, const char *pServer)
|
||||||
return;
|
return;
|
||||||
auto *pController = GameServer()->m_pController;
|
auto *pController = GameServer()->m_pController;
|
||||||
int Team = pController->Teams().m_Core.Team(ClientId);
|
int Team = pController->Teams().m_Core.Team(ClientId);
|
||||||
|
char aBuf[512];
|
||||||
if(pController->Teams().GetSaving(Team))
|
if(pController->Teams().GetSaving(Team))
|
||||||
|
{
|
||||||
|
GameServer()->SendChatTarget(ClientId, "Team save already in progress");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
if(pController->Teams().IsPractice(Team))
|
if(pController->Teams().IsPractice(Team))
|
||||||
|
{
|
||||||
|
GameServer()->SendChatTarget(ClientId, "Team save disabled for teams in practice mode");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
auto SaveResult = std::make_shared<CScoreSaveResult>(ClientId);
|
auto SaveResult = std::make_shared<CScoreSaveResult>(ClientId);
|
||||||
SaveResult->m_SaveId = RandomUuid();
|
SaveResult->m_SaveId = RandomUuid();
|
||||||
|
@ -308,7 +315,6 @@ void CScore::SaveTeam(int ClientId, const char *pCode, const char *pServer)
|
||||||
Tmp->m_aGeneratedCode[0] = '\0';
|
Tmp->m_aGeneratedCode[0] = '\0';
|
||||||
GeneratePassphrase(Tmp->m_aGeneratedCode, sizeof(Tmp->m_aGeneratedCode));
|
GeneratePassphrase(Tmp->m_aGeneratedCode, sizeof(Tmp->m_aGeneratedCode));
|
||||||
|
|
||||||
char aBuf[512];
|
|
||||||
if(Tmp->m_aCode[0] == '\0')
|
if(Tmp->m_aCode[0] == '\0')
|
||||||
{
|
{
|
||||||
str_format(aBuf,
|
str_format(aBuf,
|
||||||
|
@ -336,7 +342,10 @@ void CScore::LoadTeam(const char *pCode, int ClientId)
|
||||||
auto *pController = GameServer()->m_pController;
|
auto *pController = GameServer()->m_pController;
|
||||||
int Team = pController->Teams().m_Core.Team(ClientId);
|
int Team = pController->Teams().m_Core.Team(ClientId);
|
||||||
if(pController->Teams().GetSaving(Team))
|
if(pController->Teams().GetSaving(Team))
|
||||||
|
{
|
||||||
|
GameServer()->SendChatTarget(ClientId, "Team load already in progress");
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
if(Team < TEAM_FLOCK || Team >= MAX_CLIENTS || (g_Config.m_SvTeam != SV_TEAM_FORCED_SOLO && Team == TEAM_FLOCK))
|
if(Team < TEAM_FLOCK || Team >= MAX_CLIENTS || (g_Config.m_SvTeam != SV_TEAM_FORCED_SOLO && Team == TEAM_FLOCK))
|
||||||
{
|
{
|
||||||
GameServer()->SendChatTarget(ClientId, "You have to be in a team (from 1-63)");
|
GameServer()->SendChatTarget(ClientId, "You have to be in a team (from 1-63)");
|
||||||
|
@ -352,6 +361,11 @@ void CScore::LoadTeam(const char *pCode, int ClientId)
|
||||||
GameServer()->SendChatTarget(ClientId, "Team can't be loaded while in team 0 mode");
|
GameServer()->SendChatTarget(ClientId, "Team can't be loaded while in team 0 mode");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if(pController->Teams().IsPractice(Team))
|
||||||
|
{
|
||||||
|
GameServer()->SendChatTarget(ClientId, "Team can't be loaded while practice is enabled");
|
||||||
|
return;
|
||||||
|
}
|
||||||
auto SaveResult = std::make_shared<CScoreSaveResult>(ClientId);
|
auto SaveResult = std::make_shared<CScoreSaveResult>(ClientId);
|
||||||
SaveResult->m_Status = CScoreSaveResult::LOAD_FAILED;
|
SaveResult->m_Status = CScoreSaveResult::LOAD_FAILED;
|
||||||
pController->Teams().SetSaving(Team, SaveResult);
|
pController->Teams().SetSaving(Team, SaveResult);
|
||||||
|
|
Loading…
Reference in a new issue