mux2.4/game/data/
mux2.4/src/tools/
<?xml version="1.0"?>
<!-- startmux.wsf
For Win32 platforms, this script starts the MUX 2.x server. -->

<job>
<object id="shell" progid="WScript.Shell" />
<object id="fso" progid="Scripting.FileSystemObject" />
<script language="VBScript" src="muxconfig.vbs">
</script>
<script language="VBScript">
<![CDATA[
Option Explicit
const SW_HIDE = 0

' Given three filenames, this function (using existance and modification
' dates) positions the most recent copy in fnPresent, the next-most-recent
' copy in fnPast, and fnFuture is left vacant.
'
Function RotateFiles(fnPast, fnPresent, fnFuture)
    dim sName
    dim bExists(2)
    dim tTouched(2)
    dim i
    dim fs
    dim nExists
    dim j

    RotateFiles = False

    ' Gather Information.
    '
    sName = Array(fnPast, fnPresent, fnFuture)

    nExists = 0
    For i = 0 to 2
        bExists(i) = fso.FileExists(sName(i))
        If bExists(i) then
            Set fs = fso.GetFile(sName(i))
            tTouched(i) = fs.DateLastModified
            nExists = nExists + 1
        End If
    Next

    If nExists = 0 Then
        Exit Function
    End If

    ' Ensure that there is at least one open position by deleting
    ' the oldest file.
    '
    Dim k
    If nExists = 3 Then
        j = 0
        For i = 1 to 2
            If tTouched(i) < tTouched(j) Then
                j = i
            End If
        Next

        Set fs = fso.GetFile(sName(j))
        wscript.echo "Deleting " & sName(j)
        fs.Delete True
        bExists(j) = False
        nExists = nExists - 1
    ElseIf nExists = 1 Then

        ' There is only one file. Make it fnCurrent.
        '
        If not bExists(1) Then
            If bExists(0) Then
                k = 0
            Else
                k = 2
            End If
            Set fs = fso.GetFile(sName(k))
            wscript.echo "Moving " & sName(k) & " to " & sName(1)
            fs.Move sName(1)
        End If
        RotateFiles = True
        Exit Function

    End If

    ' There are only two files left. Which one is oldest?
    '
    j = -1
    For i = 0 to 2
        If bExists(i) Then
            If j < 0 Then
                j = i
            Else
                If tTouched(i) < tTouched(j) Then
                    j = i
                End If
            End If
        End If
    Next
    If j < 0 Then
        Exit Function
    End If

    ' Move oldest file into the fnPast position.
    '
    If j > 0 Then

        ' Do we need to move an existing file out of the way?
        '
        If bExists(0) Then
            If j = 1 Then
                k = 2
            Else
                k = 1
            End If
            Set fs = fso.GetFile(sName(0))
            wscript.echo "Moving " & sName(0) & " to " & sName(k)
            fs.Move sName(k)
            tTouched(k) = tTouched(0)
            bExists(k) = bExists(0)
            bExists(0) = False
        End If

        ' Position oldest file at fnPast
        '
        Set fs = fso.GetFile(sName(j))
        wscript.echo "Moving " & sName(j) & " to " & sName(0)
        fs.Move sName(0)
        tTouched(0) = tTouched(j)
        bExists(0) = bExists(j)
        bExists(j) = False
    End If

    ' Move the other file into the fnCurrent position.
    '
    If not bExists(1) Then
        Set fs = fso.GetFile(sName(2))
        wscript.echo "Moving " & sName(2) & " to " & sName(1)
        fs.Move sName(1)
    End If

    RotateFiles = True

End Function

Sub MoveFileIfNewer(fnSource, fnDestination)
    dim fs
    dim fd

    if fso.FileExists(fnSource) then
        set fs = fso.GetFile(fnSource)
        if fso.FileExists(fnDestination) then
            set fd = fso.GetFile(fnDestination)
            if fs.DateLastModified > fd.DateLastModified then
                wscript.Echo "Updating " & fnDestination
                fd.Delete
                fs.Move fnDestination
            else
                fs.Delete
            end if
        else
            fs.Move fnDestination
        end if
    end if
End Sub

' Execution begins here.
'
dim ret

' Verify that we are using cscript and not wscript
'
dim s
s = wscript.FullName
If instr(1, s, "wscript.exe", vbTextCompare) <> 0 Then
    MsgBox "Please run this script using cscript."
    Wscript.Quit
End If

Do
    dim fnInput
    dim fnSave
    dim fnNew

    fnInput = data & "\" & input_db
    fnSave  = data & "\" & save_db
    fnNew   = data & "\" & new_db

    dim bDone
    bDone = RotateFiles(fnSave, fnInput, fnNew)
    'If not bDone Then
    '    wscript.echo "Could not find an appropriate input file."
    '    Exit Do
    'End If

    ' Refuse to start if a CRASH database are present
    '
    dim fnCrash
    fnCrash   = data & "\" & input_db & ".CRASH"

    If fso.FileExists(fnCrash) Then
        wscript.echo "There is a CRASH database present. You should salvage what you can before"
        wscript.echo "renaming or deleting this database. This script cannot continue while this"
        wscript.echo "file exists."
        ret = 0
        Exit Do
    End If

    ' Kick off the MUX
    '
    ret = shell.run(bin & "\netmux -c " & gamename & ".conf" & " -p " & pidfile, SW_HIDE, True)
Loop While ret = 12345678

]]>
</script>
</job>