Score being time but it's functioning like score, so
For some reason this isn't writing to the file right.
function updateBestTimes(%c)
{
%mg = %c.miniGame;
if(!isObject(%mg)) { %mg = $DefaultMiniGame; }
%startTime = %mg.raceStartTime;
if(%startTime <= 0) { %startTime = %mg.lastResetTime; }
%elapsedTime = getSimTime() - %startTime;
%elapsedTime2 = getSimTime() - %startTime;
%elapsedMS = getSubStr(%elapsedTime2,strLen(%elapsedTime2)-3,strLen(%elapsedTime2));
%elapsedTime = mFloor(%elapsedTime / 1000);
for(%i = 0; %i < $SK::numTracks; %i++)
{
%displayName = $SK::Track[%i];
%displayName = strReplace(%displayName, "Add-Ons/SpeedKart_", "");
%displayName = strReplace(%displayName, "/save.bls", "");
%displayName = strReplace(%displayName, "_", " ");
if(%i == $SK::CurrentTrack) { %filename = "config/server/SpeedKart/Times/" @ %displayName @ ".txt"; }
}
%file = new FileObject();
if(!isFile(%filename))
{
%file.openForWrite(%filename);
%file.writeLine("6000 0 N/A");
%file.writeLine("6000 0 N/A");
%file.writeLine("6000 0 N/A");
%file.writeLine("6000 0 N/A");
%file.writeLine("6000 0 N/A");
%file.close();
}
%file.openForRead(%filename);
%count = 1;
for(%i=1;%i<=5;%i++)
{
%line[%count] = %file.readline();
%time[%count] = getWord(%line[%count],0);
%msec[%count] = getWord(%line[%count],1);
%name[%count] = getWords(%line[%count],2);
echo(0 SPC %time[%count]);
%count++;
}
%line[6] = %elapsedTime SPC %elapsedMS SPC %c.getPlayerName();
%time[6] = %elapsedTime;
%msec[6] = %elapsedMS;
%name[6] = %c.getPlayerName();
for(%i=1;%i<=6;%i++) //for 1 through 6
{
%numbers[%i] = %time[%i];
if(%numbers[%i] > %highest)
{
%highest = %numbers[%i];
}
echo(1 SPC %numbers[%i] SPC %highest);
}
for(%i=1;%i<=%highest;%i++)
{
for(%j=1;%j<=6;%j++)
{
if(%numbers[%j] == %i)
{
%order[%j] = %time[%j] SPC %msec[%j] SPC %name[%j];
echo(3 SPC %order[%j]);
}
}
}
for(%i=1;%i<=5;%i++)
{
%line[%i] = %order[%i];
}
%file.close();
%file.openForWrite(%filename);
for(%i=1;%i<=5;%i++)
{
%file.writeline(%line[%i]);
}
messageAll('',"<just:center><font:Impact:30><color:ffff00>" @ %c.getPlayerName() SPC "<color:ffffff>WON THE RACE WITH A TIME OF <color:ff00ff>" @ getTimeString(%elapsedTime) @ "." @ %elapsedMS @ "!");
messageAll('',"<just:center><font:Impact:24><color:ffff00>BEST TIMES");
for(%i=1;%i<=5;%i++)
{
messageAll('',"<just:center><font:Arial Bold:20><color:ffff00>" @ getWords(%line[%i],2) @ "<color:ffffff> -- " @ getTimeString(getWord(%line[%i],0)) @ "." @ getWord(%line[%i],1));
}
messageAll('',"<just:left>");
%file.close();
%file.delete();
}
That's what is being echoed. It's in order like it should be, but in the file:
6000 0 N/A
6000 0 N/A
6000 0 N/A
6000 0 N/A
6000 0 N/A
...it never seems to write to it. What gives?
Ninja edit: I purposely only want the top 5 lines written, not 6. That isn't a mistake. It's 6 because I want it to check with the previous 5 and the new value.