Figured it out. Try it! Example: setGamemodeByName("Freebuild", "Internet", "Freebuild!", "", 20);
I did figure out that there are a few bugs with the server name and the internet type, which only puts it to Singleplayer.
Overall it still works. You could probably put a tutorial button on the main menu and just do: setGamemodeByName("Tutorial");
function setGamemodeByName(%name, %internetType, %serverName, %serverPassword, %maxPlayers)
{
GameModeGui.PopulateGameModeList();
if($GameModeGui::GameModeCount $= "" || $GameModeGui::GameModeCount <= 0)
{
warn("setGamemodeByName() - No GameModes are available!");
return;
}
%gamemode = "Add-Ons/GameMode_" @ %name @ "/gamemode.txt";
for(%i = 0; %i < $GameModeGui::GameModeCount; %i++)
{
%gamemodeFile = $GameModeGui::GameMode[%i];
echo(%gamemodeFile $= %gamemode);
if(%gamemodeFile $= %gamemode)
{
%foundGamemode = %gamemodeFile;
%foundGamemodeIdx = %i;
break;
}
}
if(%foundGamemode $= "" || %foundGamemodeIdx $= "")
{
warn("setGamemodeByName() - Invalid gamemode GameMode_" @ %name @ "!");
return;
}
switch$(%internetType)
{
case "Internet":
$Pref::Net::ServerType = "Internet";
$ServerSettingsGui::ServerType = "Internet";
case "Lan":
$Pref::Net::ServerType = "Lan";
$ServerSettingsGui::ServerType = "Lan";
default:
$Pref::Net::ServerType = "Singleplayer";
$ServerSettingsGui::ServerType = "Singleplayer";
}
if(%serverName $= "")
%serverName = "Blockland server";
%maxPlayers = mFloor(%maxPlayers);
if(%maxPlayers <= 0)
%maxPlayers = 8;
$Pref::Server::Name = %serverName;
$Server::Name = %serverName;
$ServerSettingsGui::ServerName = %serverName;
$Pref::Server::Password = %serverPassword;
$ServerSettingsGui::JoinPassword = %serverPassword;
$Pref::Server::MaxPlayers = %maxPlayers;
$Server::MaxPlayers = %maxPlayers;
$ServerSettingsGui::MaxPlayers = %maxPlayers;
$ServerSettingsGui::AdminPassword = $Pref::Server::AdminPassword;
$GameModeGui::CurrGameModeIdx = %foundGamemodeIdx;
$GameModeArg = %gamemodeFile;
ServerSettingsGui.clickLaunchGame();
}