I've got it working nearly - here's my save.script...
#include "scripts\base.inc"
#include "scripts\keys.inc"
self.xResult = false;
var NumSlotButtons = 8;
var NumSavegames = 100;
var ScrollOffset = 0;
var SelectedSlot = -1;
SetState();
////////////////////////////////////////////////////////////////////////////////
on "close"
{
for(var i=10; i>=1; i=i-1)
{
this.AlphaColor = MakeRGBA(255, 255, 255, 25*i);
Sleep(70);
}
this.AlphaColor = MakeRGBA(255, 255, 255, 0);
self.Close();
}
////////////////////////////////////////////////////////////////////////////////
on "up"
{
ScrollOffset = ScrollOffset - 1;
SetState();
}
////////////////////////////////////////////////////////////////////////////////
on "down"
{
ScrollOffset = ScrollOffset + 1;
SetState();
}
////////////////////////////////////////////////////////////////////////////////
on "Keypress"
{
var button;
if(Keyboard.KeyCode==VK_ESCAPE){
button = self.GetWidget("close");
button.Press();
}
}
////////////////////////////////////////////////////////////////////////////////
function SetState()
{
var BtnUp = self.GetWidget("up");
var BtnDown = self.GetWidget("down");
var Thumbnail = self.GetControl("thumbnail");
BtnUp.Disabled = (ScrollOffset <= 0);
BtnDown.Disabled = (ScrollOffset+NumSlotButtons >= NumSavegames);
for(var i=0; i<NumSlotButtons; i=i+1)
{
var SaveSlot = ScrollOffset + i;
var SlotButton = self.GetWidget(i+1);
SlotButton.Pressed = (SaveSlot==SelectedSlot);
SlotButton.Text = SaveSlot;
if(Game.IsSaveSlotUsed(SaveSlot))
SlotButton.Text = Game.GetSaveSlotDescription(SaveSlot);
else
SlotButton.Text = "...empty...";
}
}
////////////////////////////////////////////////////////////////////////////////
function DoSave(Slot)
{
var Time = new Date();
var Minutes = Time.GetMinutes();
if(Minutes < 10) Minutes = "0" + Minutes;
Game.SaveGame(Slot, Scene.Name + ", " + Time.GetDate() + "/" + Time.GetMonth() + "/" + Time.GetYear() + ", " + Time.GetHours() + ":" + Minutes);
this.xResult = true;
this.Close();
}
////////////////////////////////////////////////////////////////////////////////
on "1"
{
DoSave(1);
}
on "2"
{
DoSave(2);
}
on "3"
{
DoSave(3);
}
on "4"
{
DoSave(4);
}
on "5"
{
DoSave(5);
}
on "6"
{
DoSave(6);
}
on "7"
{
DoSave(7);
}
on "8"
{
DoSave(8);
}
Only problem now is that the game is saving on the slot underneath the one I select - so if I select slot 1, the game saves in slot 2.