I've been trying this for a while with no prevail. This code I think is the base for save duping.
%fileName = strLwr(%fileName);
if(!dupCheckString(%fileName))
{
%client.dupMsg($Duplicator::Msg::Invalid, %fileName);
return;
}
%filePath = "saves/Duplications/" @ %fileName @ ".bls";
if(isFile(%filePath))
{
%client.dupMsg($Duplicator::Msg::Exists, %fileName);
return;
}
%dupObj = %client.dupObj;
%fileObj = new fileObject();
%fileObj.openForWrite(%filePath);
%fileObj.writeLine("This is a Blockland save file. You probably shouldn't modify it cause you'll screw it up.");
%fileObj.writeLine("1");
%fileObj.writeLine("Duplicated by" SPC %client.getPlayerName() @ ".");
for(%i = 0; %i < 64; %i++)
{
%fileObj.writeLine(getColorIdTable(%i));
}
%fileObj.writeLine("Linecount" SPC %dupObj.bricks);
for(%a = 0; %a < %dupObj.bricks; %a++)
{
%fileObj.writeLine(%dupObj.brick[%a]);
for(%b = 0; %dupObj.brickData[%a, %b] !$= ""; %b++)
{
%fileObj.writeLine(%dupObj.brickData[%a, %b]);
}
}
%fileObj.close();
%fileObj.delete();
%client.dupTimeoutC = $Sim::Time + (%client.isAdmin || %client.isSuperAdmin ? $Pref::Duplicator::TimeoutC::Admin : $Pref::Duplicator::TimeoutC::NonAdmin);
%client.dupMsg($Duplicator::Msg::Saved, %fileName);
echo("\c1" @ %client.getPlayerName() @ "\c0 saved the duplication \c1" @ %fileName @ "\c0.");
}