From 4368d67f6e129274e21163c270a283987082009f Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Fri, 21 Oct 2016 12:20:43 -0400 Subject: [PATCH 1/5] disable_clearance_checks and disable_support_limits in console --- src/interface/console.c | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/interface/console.c b/src/interface/console.c index 8ed875e56a..ee031e16e8 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -665,6 +665,12 @@ static int cc_get(const utf8 **argv, int argc) else if (strcmp(argv[0], "render_weather_gloom") == 0) { console_printf("render_weather_gloom %d", gConfigGeneral.render_weather_gloom); } + else if (strcmp(argv[0], "disable_clearance_checks") == 0) { + console_printf("disable_clearance_checks %d", gCheatsDisableClearanceChecks); + } + else if (strcmp(argv[0], "disable_support_limits") == 0) { + console_printf("disable_support_limits %d", gCheatsDisableSupportLimits); + } else { console_writeline_warning("Invalid variable."); } @@ -847,6 +853,14 @@ static int cc_set(const utf8 **argv, int argc) config_save_default(); console_execute_silent("get render_weather_gloom"); } + else if (strcmp(argv[0], "disable_clearance_checks") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { + gCheatsDisableClearanceChecks = (int_val[0] != 0); + console_execute_silent("get disable_clearance_checks"); + } + else if (strcmp(argv[0], "disable_support_limits") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { + gCheatsDisableSupportLimits = (int_val[0] != 0); + console_execute_silent("get disable_support_limits"); + } else if (invalidArgs) { console_writeline_error("Invalid arguments."); } @@ -1033,6 +1047,8 @@ utf8* console_variable_table[] = { "window_limit", "render_weather_effects", "render_weather_gloom", + "disable_clearance_checks", + "disable_support_limits", }; utf8* console_window_table[] = { "object_selection", From 369b85fc5182f14495bd06dc1209abe4726eccd2 Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Mon, 24 Oct 2016 13:11:36 -0400 Subject: [PATCH 2/5] Sync cheats in console across multiplayer, add "sandbox_mode" --- src/interface/console.c | 31 +++++++++++++++++++++++++++++-- 1 file changed, 29 insertions(+), 2 deletions(-) diff --git a/src/interface/console.c b/src/interface/console.c index ee031e16e8..9b8da6e824 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -27,6 +27,7 @@ #include "../game.h" #include "../input.h" #include "../network/twitch.h" +#include "../network/network.h" #include "../object.h" #include "../object/ObjectManager.h" #include "../object/ObjectRepository.h" @@ -665,6 +666,9 @@ static int cc_get(const utf8 **argv, int argc) else if (strcmp(argv[0], "render_weather_gloom") == 0) { console_printf("render_weather_gloom %d", gConfigGeneral.render_weather_gloom); } + else if (strcmp(argv[0], "sandbox_mode") == 0) { + console_printf("sandbox_mode %d", gCheatsSandboxMode); + } else if (strcmp(argv[0], "disable_clearance_checks") == 0) { console_printf("disable_clearance_checks %d", gCheatsDisableClearanceChecks); } @@ -853,12 +857,34 @@ static int cc_set(const utf8 **argv, int argc) config_save_default(); console_execute_silent("get render_weather_gloom"); } + else if (strcmp(argv[0], "sandbox_mode") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { + if (network_get_mode() == NETWORK_MODE_CLIENT && !network_can_perform_command(network_get_current_player_group_index(), GAME_COMMAND_CHEAT)) { + console_writeline_error("Network error: Permission denied!"); + } + else if (gCheatsSandboxMode != (int_val[0] != 0)) { + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0); + gCheatsSandboxMode = (int_val[0] != 0); + } + console_execute_silent("get sandbox_mode"); + } else if (strcmp(argv[0], "disable_clearance_checks") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gCheatsDisableClearanceChecks = (int_val[0] != 0); + if (network_get_mode() == NETWORK_MODE_CLIENT && !network_can_perform_command(network_get_current_player_group_index(), GAME_COMMAND_CHEAT)) { + console_writeline_error("Network error: Permission denied!"); + } + else if (gCheatsDisableClearanceChecks != (int_val[0] != 0)) { + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, 0, GAME_COMMAND_CHEAT, 0, 0); + gCheatsDisableClearanceChecks = (int_val[0] != 0); + } console_execute_silent("get disable_clearance_checks"); } else if (strcmp(argv[0], "disable_support_limits") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - gCheatsDisableSupportLimits = (int_val[0] != 0); + if (network_get_mode() == NETWORK_MODE_CLIENT && !network_can_perform_command(network_get_current_player_group_index(), GAME_COMMAND_CHEAT)) { + console_writeline_error("Network error: Permission denied!"); + } + else if (gCheatsDisableSupportLimits != (int_val[0] != 0)) { + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, 0, GAME_COMMAND_CHEAT, 0, 0); + gCheatsDisableSupportLimits = (int_val[0] != 0); + } console_execute_silent("get disable_support_limits"); } else if (invalidArgs) { @@ -1047,6 +1073,7 @@ utf8* console_variable_table[] = { "window_limit", "render_weather_effects", "render_weather_gloom", + "sandbox_mode", "disable_clearance_checks", "disable_support_limits", }; From 102af2f8ca2c5124c9a0f81a0dde95b24df299be Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Fri, 4 Nov 2016 10:01:52 -0400 Subject: [PATCH 3/5] rewrite to use value returned from game_do_command --- src/interface/console.c | 45 ++++++++++++++++++++++++----------------- 1 file changed, 27 insertions(+), 18 deletions(-) diff --git a/src/interface/console.c b/src/interface/console.c index 9b8da6e824..6a938b5640 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -858,32 +858,41 @@ static int cc_set(const utf8 **argv, int argc) console_execute_silent("get render_weather_gloom"); } else if (strcmp(argv[0], "sandbox_mode") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - if (network_get_mode() == NETWORK_MODE_CLIENT && !network_can_perform_command(network_get_current_player_group_index(), GAME_COMMAND_CHEAT)) { - console_writeline_error("Network error: Permission denied!"); - } - else if (gCheatsSandboxMode != (int_val[0] != 0)) { - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0); - gCheatsSandboxMode = (int_val[0] != 0); + if (gCheatsSandboxMode != (int_val[0] != 0)) { + if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { + //Change it locally so it shows the accurate value in the + //"console_execute_silent("get sandbox_mode")" line when in network client mode + gCheatsSandboxMode = (int_val[0] != 0); + } + else { + console_writeline_error("Network error: Permission denied!"); + } } console_execute_silent("get sandbox_mode"); } else if (strcmp(argv[0], "disable_clearance_checks") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - if (network_get_mode() == NETWORK_MODE_CLIENT && !network_can_perform_command(network_get_current_player_group_index(), GAME_COMMAND_CHEAT)) { - console_writeline_error("Network error: Permission denied!"); - } - else if (gCheatsDisableClearanceChecks != (int_val[0] != 0)) { - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, 0, GAME_COMMAND_CHEAT, 0, 0); - gCheatsDisableClearanceChecks = (int_val[0] != 0); + if (gCheatsDisableClearanceChecks != (int_val[0] != 0)) { + if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, 0, GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { + //Change it locally so it shows the accurate value in the + //"console_execute_silent("get disable_clearance_checks")" line when in network client mode + gCheatsDisableClearanceChecks = (int_val[0] != 0); + } + else { + console_writeline_error("Network error: Permission denied!"); + } } console_execute_silent("get disable_clearance_checks"); } else if (strcmp(argv[0], "disable_support_limits") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { - if (network_get_mode() == NETWORK_MODE_CLIENT && !network_can_perform_command(network_get_current_player_group_index(), GAME_COMMAND_CHEAT)) { - console_writeline_error("Network error: Permission denied!"); - } - else if (gCheatsDisableSupportLimits != (int_val[0] != 0)) { - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, 0, GAME_COMMAND_CHEAT, 0, 0); - gCheatsDisableSupportLimits = (int_val[0] != 0); + if (gCheatsDisableSupportLimits != (int_val[0] != 0)) { + if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, 0, GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { + //Change it locally so it shows the accurate value in the + //"console_execute_silent("get disable_support_limits")" line when in network client mode + gCheatsDisableSupportLimits = (int_val[0] != 0); + } + else { + console_writeline_error("Network error: Permission denied!"); + } } console_execute_silent("get disable_support_limits"); } From 28773b4c406288d894646bac0cc623f354e5816c Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Sat, 5 Nov 2016 05:08:00 -0400 Subject: [PATCH 4/5] Change sandbox mode, clearance check, and support limit cheats to take parameter as value --- src/cheats.c | 6 +++--- src/interface/console.c | 6 +++--- src/network/network.h | 2 +- src/windows/cheats.c | 2 +- src/windows/top_toolbar.c | 6 +++--- 5 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/cheats.c b/src/cheats.c index 8c5aed2b6d..7efa8955c7 100644 --- a/src/cheats.c +++ b/src/cheats.c @@ -392,9 +392,9 @@ void game_command_cheat(int* eax, int* ebx, int* ecx, int* edx, int* esi, int* e int cheat = *ecx; if (*ebx & GAME_COMMAND_FLAG_APPLY) { switch (cheat) { - case CHEAT_SANDBOXMODE: gCheatsSandboxMode = !gCheatsSandboxMode; window_invalidate_by_class(WC_MAP); window_invalidate_by_class(WC_FOOTPATH); break; - case CHEAT_DISABLECLEARANCECHECKS: gCheatsDisableClearanceChecks = !gCheatsDisableClearanceChecks; break; - case CHEAT_DISABLESUPPORTLIMITS: gCheatsDisableSupportLimits = !gCheatsDisableSupportLimits; break; + case CHEAT_SANDBOXMODE: gCheatsSandboxMode = *edx != 0; window_invalidate_by_class(WC_MAP); window_invalidate_by_class(WC_FOOTPATH); break; + case CHEAT_DISABLECLEARANCECHECKS: gCheatsDisableClearanceChecks = *edx != 0; break; + case CHEAT_DISABLESUPPORTLIMITS: gCheatsDisableSupportLimits = *edx != 0; break; case CHEAT_SHOWALLOPERATINGMODES: gCheatsShowAllOperatingModes = !gCheatsShowAllOperatingModes; break; case CHEAT_SHOWVEHICLESFROMOTHERTRACKTYPES: gCheatsShowVehiclesFromOtherTrackTypes = !gCheatsShowVehiclesFromOtherTrackTypes; break; case CHEAT_FASTLIFTHILL: gCheatsFastLiftHill = !gCheatsFastLiftHill; break; diff --git a/src/interface/console.c b/src/interface/console.c index 6a938b5640..8ac0322f4c 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -859,7 +859,7 @@ static int cc_set(const utf8 **argv, int argc) } else if (strcmp(argv[0], "sandbox_mode") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { if (gCheatsSandboxMode != (int_val[0] != 0)) { - if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { + if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { //Change it locally so it shows the accurate value in the //"console_execute_silent("get sandbox_mode")" line when in network client mode gCheatsSandboxMode = (int_val[0] != 0); @@ -872,7 +872,7 @@ static int cc_set(const utf8 **argv, int argc) } else if (strcmp(argv[0], "disable_clearance_checks") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { if (gCheatsDisableClearanceChecks != (int_val[0] != 0)) { - if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, 0, GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { + if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { //Change it locally so it shows the accurate value in the //"console_execute_silent("get disable_clearance_checks")" line when in network client mode gCheatsDisableClearanceChecks = (int_val[0] != 0); @@ -885,7 +885,7 @@ static int cc_set(const utf8 **argv, int argc) } else if (strcmp(argv[0], "disable_support_limits") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { if (gCheatsDisableSupportLimits != (int_val[0] != 0)) { - if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, 0, GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { + if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { //Change it locally so it shows the accurate value in the //"console_execute_silent("get disable_support_limits")" line when in network client mode gCheatsDisableSupportLimits = (int_val[0] != 0); diff --git a/src/network/network.h b/src/network/network.h index 7d1b62f0ca..da98a6f8dc 100644 --- a/src/network/network.h +++ b/src/network/network.h @@ -55,7 +55,7 @@ extern "C" { // This define specifies which version of network stream current build uses. // It is used for making sure only compatible builds get connected, even within // single OpenRCT2 version. -#define NETWORK_STREAM_VERSION "16" +#define NETWORK_STREAM_VERSION "17" #define NETWORK_STREAM_ID OPENRCT2_VERSION "-" NETWORK_STREAM_VERSION #ifdef __cplusplus diff --git a/src/windows/cheats.c b/src/windows/cheats.c index 03da1fdfe9..2a53671baa 100644 --- a/src/windows/cheats.c +++ b/src/windows/cheats.c @@ -662,7 +662,7 @@ static void window_cheats_misc_mouseup(rct_window *w, int widgetIndex) game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_UNLOCKALLPRICES, 0, GAME_COMMAND_CHEAT, 0, 0); break; case WIDX_SANDBOX_MODE: - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0); + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, !gCheatsSandboxMode, GAME_COMMAND_CHEAT, 0, 0); // To prevent tools from staying active after disabling cheat //tool_cancel(); break; diff --git a/src/windows/top_toolbar.c b/src/windows/top_toolbar.c index 7b8b122cb0..3c7ef474ff 100644 --- a/src/windows/top_toolbar.c +++ b/src/windows/top_toolbar.c @@ -583,13 +583,13 @@ static void window_top_toolbar_dropdown(rct_window *w, int widgetIndex, int drop window_cheats_open(); break; case DDIDX_ENABLE_SANDBOX_MODE: - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, 0, GAME_COMMAND_CHEAT, 0, 0); + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, !gCheatsSandboxMode, GAME_COMMAND_CHEAT, 0, 0); break; case DDIDX_DISABLE_CLEARANCE_CHECKS: - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, 0, GAME_COMMAND_CHEAT, 0, 0); + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, !gCheatsDisableClearanceChecks, GAME_COMMAND_CHEAT, 0, 0); break; case DDIDX_DISABLE_SUPPORT_LIMITS: - game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, 0, GAME_COMMAND_CHEAT, 0, 0); + game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, !gCheatsDisableSupportLimits, GAME_COMMAND_CHEAT, 0, 0); break; } break; From 410ce9fd66e36b366680a7d091b5b989f00f1e99 Mon Sep 17 00:00:00 2001 From: wolfreak99 Date: Sat, 5 Nov 2016 05:11:03 -0400 Subject: [PATCH 5/5] prefix console commands with "cheat_" --- src/interface/console.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/src/interface/console.c b/src/interface/console.c index 8ac0322f4c..f03196fdc8 100644 --- a/src/interface/console.c +++ b/src/interface/console.c @@ -666,14 +666,14 @@ static int cc_get(const utf8 **argv, int argc) else if (strcmp(argv[0], "render_weather_gloom") == 0) { console_printf("render_weather_gloom %d", gConfigGeneral.render_weather_gloom); } - else if (strcmp(argv[0], "sandbox_mode") == 0) { - console_printf("sandbox_mode %d", gCheatsSandboxMode); + else if (strcmp(argv[0], "cheat_sandbox_mode") == 0) { + console_printf("cheat_sandbox_mode %d", gCheatsSandboxMode); } - else if (strcmp(argv[0], "disable_clearance_checks") == 0) { - console_printf("disable_clearance_checks %d", gCheatsDisableClearanceChecks); + else if (strcmp(argv[0], "cheat_disable_clearance_checks") == 0) { + console_printf("cheat_disable_clearance_checks %d", gCheatsDisableClearanceChecks); } - else if (strcmp(argv[0], "disable_support_limits") == 0) { - console_printf("disable_support_limits %d", gCheatsDisableSupportLimits); + else if (strcmp(argv[0], "cheat_disable_support_limits") == 0) { + console_printf("cheat_disable_support_limits %d", gCheatsDisableSupportLimits); } else { console_writeline_warning("Invalid variable."); @@ -857,44 +857,44 @@ static int cc_set(const utf8 **argv, int argc) config_save_default(); console_execute_silent("get render_weather_gloom"); } - else if (strcmp(argv[0], "sandbox_mode") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { + else if (strcmp(argv[0], "cheat_sandbox_mode") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { if (gCheatsSandboxMode != (int_val[0] != 0)) { if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_SANDBOXMODE, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { //Change it locally so it shows the accurate value in the - //"console_execute_silent("get sandbox_mode")" line when in network client mode + //"console_execute_silent("get cheat_sandbox_mode")" line when in network client mode gCheatsSandboxMode = (int_val[0] != 0); } else { console_writeline_error("Network error: Permission denied!"); } } - console_execute_silent("get sandbox_mode"); + console_execute_silent("get cheat_sandbox_mode"); } - else if (strcmp(argv[0], "disable_clearance_checks") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { + else if (strcmp(argv[0], "cheat_disable_clearance_checks") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { if (gCheatsDisableClearanceChecks != (int_val[0] != 0)) { if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLECLEARANCECHECKS, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { //Change it locally so it shows the accurate value in the - //"console_execute_silent("get disable_clearance_checks")" line when in network client mode + //"console_execute_silent("get cheat_disable_clearance_checks")" line when in network client mode gCheatsDisableClearanceChecks = (int_val[0] != 0); } else { console_writeline_error("Network error: Permission denied!"); } } - console_execute_silent("get disable_clearance_checks"); + console_execute_silent("get cheat_disable_clearance_checks"); } - else if (strcmp(argv[0], "disable_support_limits") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { + else if (strcmp(argv[0], "cheat_disable_support_limits") == 0 && invalidArguments(&invalidArgs, int_valid[0])) { if (gCheatsDisableSupportLimits != (int_val[0] != 0)) { if (game_do_command(0, GAME_COMMAND_FLAG_APPLY, CHEAT_DISABLESUPPORTLIMITS, (int_val[0] != 0), GAME_COMMAND_CHEAT, 0, 0) != MONEY32_UNDEFINED) { //Change it locally so it shows the accurate value in the - //"console_execute_silent("get disable_support_limits")" line when in network client mode + //"console_execute_silent("get cheat_disable_support_limits")" line when in network client mode gCheatsDisableSupportLimits = (int_val[0] != 0); } else { console_writeline_error("Network error: Permission denied!"); } } - console_execute_silent("get disable_support_limits"); + console_execute_silent("get cheat_disable_support_limits"); } else if (invalidArgs) { console_writeline_error("Invalid arguments."); @@ -1082,9 +1082,9 @@ utf8* console_variable_table[] = { "window_limit", "render_weather_effects", "render_weather_gloom", - "sandbox_mode", - "disable_clearance_checks", - "disable_support_limits", + "cheat_sandbox_mode", + "cheat_disable_clearance_checks", + "cheat_disable_support_limits", }; utf8* console_window_table[] = { "object_selection",