diff --git a/src/network/network.cpp b/src/network/network.cpp index eef553901a..458cb0cfe4 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -1360,8 +1360,17 @@ int Network::Server_Handle_GAMECMD(NetworkConnection& connection, NetworkPacket& playerid = connection.player->id; } packet >> tick >> args[0] >> args[1] >> args[2] >> args[3] >> args[4] >> args[5] >> args[6] >> callback; - Server_Send_GAMECMD(args[0], args[1], args[2], args[3], args[4], args[5], args[6], playerid, callback); - game_do_command(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + + int commandCommand = args[4]; + + // Don't let clients send pause or quit + if (commandCommand != GAME_COMMAND_TOGGLE_PAUSE && + commandCommand != GAME_COMMAND_LOAD_OR_QUIT + ) { + Server_Send_GAMECMD(args[0], args[1], args[2], args[3], args[4], args[5], args[6], playerid, callback); + game_do_command(args[0], args[1], args[2], args[3], args[4], args[5], args[6]); + } + return 1; } diff --git a/src/windows/top_toolbar.c b/src/windows/top_toolbar.c index 7366514a26..28d63574ad 100644 --- a/src/windows/top_toolbar.c +++ b/src/windows/top_toolbar.c @@ -286,7 +286,9 @@ static void window_top_toolbar_mouseup(rct_window *w, int widgetIndex) switch (widgetIndex) { case WIDX_PAUSE: - game_do_command(0, 1, 0, 0, GAME_COMMAND_TOGGLE_PAUSE, 0, 0); + if (network_get_mode() != NETWORK_MODE_CLIENT) { + game_do_command(0, 1, 0, 0, GAME_COMMAND_TOGGLE_PAUSE, 0, 0); + } break; case WIDX_ZOOM_OUT: if ((mainWindow = window_get_main()) != NULL)