Author Topic: Start Gamemode Clientsided  (Read 1145 times)

Does anyone know a way to start a gamemode via code (clientsided)? I've searched with trace(); for a while and either I'm stuff at looking or it just isn't there.

Would that even be possible? Seems like it'd be risky for gamemodes - something that is applied server-wide to everyone - to be controlled clientside in any way. Seeing that singleplayer games aren't really structured differently than an online game, I don't think it'd be possible in either. Could be wrong though.

Definitely possible but I don't know the commands to do it. It's not as easy because it's a lot .click(); stuff with indexes

do you want it to be an internet game or a single player game

Single player

Basically, think of it like you choose a gamemode, select single player, and start a game.

edit: grammar since my phone is ass
« Last Edit: August 15, 2016, 08:04:57 PM by Hawt »

Definitely possible but I don't know the commands to do it. It's not as easy because it's a lot .click(); stuff with indexes
If this is possible I definitely want to know how. :o

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");
Code: [Select]
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();
}
« Last Edit: August 16, 2016, 12:31:32 AM by Kyuande »

Thank you! I would never have figured that out myself.