@Echo off
cls

rem *** Lanzador TOL Sala 24x7 v0.9 (by Gunner!!!)
@Echo off
cls

Rem *** Parámetrización por defecto si quiere registrarse la sala en el MatchMaker
Rem *** Los valores entre almohadillas han de ser sustituidos por los correctos, sin almohadillas y con un literal válido (Ejemlo: ###Mi_Sala-24x7### => Mi_Sala-24x7).

Rem Nombre con que quieres que se muestre la sala en el MatchMaker (hasta 15 caracteres SIN ESPACIOS)
Set NombreSala="###Mi_Clan_24x7###"
Rem Puerto de conexión a la partida (debe estar abierto en el Router)
Set Puerto=###8888###
Rem Duracion de la partida (por defecto 30 minutos)
Set Duracion=###30###


Rem *** Inicio bucle lanzador de salas - (by Gunner!!!)
Rem ************************************************
Echo Inicio del porceso lanzador. Durmiendo 30 segundos para estabilizar el servidor
Title Lanzador TOL 24x7
timeout /t 30 >nul
Echo.


REM Tiempo en segundos que el script espera antes de verificar la conexión nuevamente (en este caso, 30 segundos)
set "intervalo=30"

:Bucle_INICIO

Rem *** Procesando Salas!!!
TIME /T
DATE /T 
Echo.

Rem *** Inicio Secuencia de salas!!!

Rem *** Sala de DeathMatch!!!
:Levantando_MP_DM_LOVEBOAT
	Echo Levantando_MP_DM_LOVEBOAT
	Echo Durmiendo 8 segundos.
	timeout /t 8 > nul
	Set Sala=MP_DM_LOVEBOAT
	MP_DM_LOVEBOAT.EXE

	Rem *** Justo cuando termina la macro de Inicio de Sala (da por supuesto que está levantada) registra la sala en el emulador de "MatchMaker"
	call :Registra-MatchMaker

	call :Esperar_FIN_PARTIDA
	
Rem Ahora levantamos otra sala!!!	

Rem *** Sala de DeathMatch por Equipos!!!
:Levantando_MP_DMT_INDUSTRIAL
	Echo Levantando_MP_DMT_INDUSTRIAL
	Echo Durmiendo 8 segundos.
	Set Sala=MP_DMT_INDUSTRIAL
	timeout /t 8 > nul
	MP_DMT_INDUSTRIAL.EXE

	Rem *** Justo cuando termina la macro de Inicio de Sala (da por supuesto que está levantada) registra la sala en el emulador de "MatchMaker"
	call :Registra-MatchMaker

	call :Esperar_FIN_PARTIDA

rem *** Para más "Salas en Bucle" bastaría añadir aquí similares secciones "Levantando_Tipo_De_Sala" adicionales

:FIN-Bucle
	rem *** Acaba el bucle y vuelve al inicio para a repetir
	goto Bucle_INICIO
	rem *** Y por si acaso un "exit"!!! ;-)
	exit

Rem Durmiendo 32 minutos (30+2 margen).
:Esperar_FIN_PARTIDA
	Rem *** Espera 32 minutos (30+2 de margen) a que termine la partida!!!
	Echo Esperando 32 minutos (30+2 de margen) termino de partida (Pulse una tecla si cierra Sala antes de tiempo convenido)!!!	
	set wait_time=1920
	set wait_count=0

	Rem Verifica que la sala está en la pantalla correcta (modo "Zombie" - Check "ErrorLevel" value) o se ha agotado el tiempo máximo!!!
	:wait_loop
	TOL-SalaON
	if not %errorlevel% ==0 goto ErrorSalaON
	set /a wait_count+=30
	echo %wait_count%
	if %wait_count% geq %wait_time% goto ErrorWaitCount
	Echo Durmiendo 30 segundos para fin partida!!!
	timeout /t 30 > nul
	goto wait_loop

:Fin-Esperar_FIN_PARTIDA

:ErrorSalaON
	echo TorrenteOnline no está en la pantalla de SALA.
	Taskkill /F /IM torrente.exe /T
	timeout /t 8 > nul
	Taskkill /F /IM torrente.exe /T

	Rem *** Elimina la sala del MatchMaker!!!
	call :Elimina-MatchMaker

	Echo Durmiendo 30 segundos antes de comenzar nuevo bucle/partida.
	timeout /t 30 > nul
	exit /b
:Fin_ErrorSalaON

:ErrorWaitCount
	Echo Han transcurrido 32 minutos.
	Taskkill /F /IM torrente.exe /T
	timeout /t 8 > nul 
	Taskkill /F /IM torrente.exe /T

	Rem *** Elimina la sala del MatchMaker!!!
	call :Elimina-MatchMaker

	Echo Durmiendo 30 segundos antes de comenzar nuevo bucle/partida.
	timeout /t 30 > nul
	exit /b
:Fin_ErrorWaitCount

:Registra-MatchMaker
	Rem *** Genera fichero de parámetros y registra la sala en el FTP
	Rem *** Inicializa fichero "Parametros.TOL" con 1ª línea, parámetro "Nombre de sala"
	echo %NombreSala%> Parametros.TOL

	Rem *** Línea 2: "Tipo de sala"
	echo %Sala%>> Parametros.TOL

	rem *** Línea 3: "Dirección IP"
	rem *** Para averiguar IP externa usa el comando "curl" (incluido en W10)
	rem *** Obtengo IP dinámica. En caso contrario sustituir las tres líneas siguientes por "echo ###Mi_Dirección_IP###>> Parametros.txt"
	curl ipinfo.io/ip>> Parametros.TOL
	rem ***El "Echo." es necesario para introducir un salto de línea
	echo.>> Parametros.TOL

	rem *** Línea 4: "Puerto de red"
	echo %Puerto%>> Parametros.TOL
	
	rem *** Línea 5 (y última): "Duración Partida"
	echo %Duracion%>> Parametros.TOL

	rem *** Registra en el FTP la definición de sala - (By ABC)!!!
	rem **********************************************************
	setlocal

	@echo off > %0.ftp
	>> %0.ftp echo open gunner.es
	>> %0.ftp echo MatchMaker
	>> %0.ftp echo TorrenteOnline1.1d
	>> %0.ftp echo mkdir
	>> %0.ftp echo %NombreSala%
	>> %0.ftp echo cd
	>> %0.ftp echo %NombreSala%
	>> %0.ftp echo put Parametros.TOL
	>> %0.ftp echo quit

	ftp -s:%0.ftp

	Rem *** Retorno subrutina
	exit /b
:Fin-Registra-MatchMaker


:Elimina-MatchMaker
	rem *** Tras terminar la partida, elimina del FTP la definición de sala - (By ABC)!!!
	rem *********************************************************************************
	setlocal
	
	@echo off > %0.ftp
	>> %0.ftp echo open gunner.es
	>> %0.ftp echo MatchMaker
	>> %0.ftp echo TorrenteOnline1.1d
	>> %0.ftp echo cd
	>> %0.ftp echo %NombreSala%
	>> %0.ftp echo delete Parametros.TOL
	>> %0.ftp echo quit

	ftp -s:%0.ftp

	Rem *** Retorno subrutina
	exit /b
:Fin-Elimina-MatchMaker
