Fixed !save behaving differently from the !cp menu option.

This commit is contained in:
shavit 2018-06-23 11:36:33 +03:00
parent 74239a3639
commit 36b4ed4a94

View File

@ -1516,6 +1516,13 @@ public Action Command_Save(int client, int args)
return Plugin_Handled; return Plugin_Handled;
} }
int iMaxCPs = GetMaxCPs(client);
if(gI_CheckpointsCache[client][iCheckpoints] >= iMaxCPs)
{
return Plugin_Handled;
}
bool bSegmented = CanSegment(client); bool bSegmented = CanSegment(client);
if(!gB_Checkpoints && !bSegmented) if(!gB_Checkpoints && !bSegmented)
@ -1525,12 +1532,10 @@ public Action Command_Save(int client, int args)
return Plugin_Handled; return Plugin_Handled;
} }
int iMaxCPs = GetMaxCPs(client); int index = gI_CheckpointsCache[client][iCheckpoints];
if(args > 0) if(args > 0)
{ {
int index = 0;
char[] arg = new char[4]; char[] arg = new char[4];
GetCmdArg(1, arg, 4); GetCmdArg(1, arg, 4);
@ -1540,35 +1545,27 @@ public Action Command_Save(int client, int args)
{ {
index = (parsed - 1); index = (parsed - 1);
} }
}
if(SaveCheckpoint(client, index)) bool bSegmenting = CanSegment(client);
{ bool bSaved = false;
Shavit_PrintToChat(client, "%T", "MiscCheckpointsSaved", client, (index + 1), gS_ChatStrings[sMessageVariable], gS_ChatStrings[sMessageText]);
} if(!bSegmenting)
{
bSaved = SaveCheckpoint(client, gI_CheckpointsCache[client][iCheckpoints]);
gI_CheckpointsCache[client][iCurrentCheckpoint] = ++gI_CheckpointsCache[client][iCheckpoints];
} }
else else
{ {
bool bSaved = false; bool bOverflow = gI_CheckpointsCache[client][iCheckpoints] >= iMaxCPs;
bSaved = SaveCheckpoint(client, gI_CheckpointsCache[client][iCheckpoints], bOverflow);
gI_CheckpointsCache[client][iCurrentCheckpoint] = (bOverflow)? iMaxCPs:++gI_CheckpointsCache[client][iCheckpoints];
}
if(gI_CheckpointsCache[client][iCheckpoints] < iMaxCPs) if(bSaved)
{ {
if((bSaved = SaveCheckpoint(client, gI_CheckpointsCache[client][iCheckpoints]))) Shavit_PrintToChat(client, "%T", "MiscCheckpointsSaved", client, (index + 1), gS_ChatStrings[sMessageVariable], gS_ChatStrings[sMessageText]);
{
gI_CheckpointsCache[client][iCurrentCheckpoint] = ++gI_CheckpointsCache[client][iCheckpoints];
}
}
else if((bSaved = SaveCheckpoint(client, (iMaxCPs - 1), true)))
{
gI_CheckpointsCache[client][iCurrentCheckpoint] = iMaxCPs;
}
if(bSaved)
{
Shavit_PrintToChat(client, "%T", "MiscCheckpointsSaved", client, gI_CheckpointsCache[client][iCurrentCheckpoint],
gS_ChatStrings[sMessageVariable], gS_ChatStrings[sMessageText], gS_ChatStrings[sMessageVariable], gS_ChatStrings[sMessageText]);
}
} }
return Plugin_Handled; return Plugin_Handled;