diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/Entity.c | 17 | ||||
-rw-r--r-- | src/EntityComponents.c | 32 | ||||
-rw-r--r-- | src/EntityComponents.h | 1 | ||||
-rw-r--r-- | src/Menus.c | 32 | ||||
-rw-r--r-- | src/Options.h | 1 |
5 files changed, 59 insertions, 24 deletions
diff --git a/src/Entity.c b/src/Entity.c index b400c85..79a8afd 100644 --- a/src/Entity.c +++ b/src/Entity.c @@ -763,6 +763,7 @@ static void LocalPlayer_Init(struct LocalPlayer* p, int index) { hacks->NoclipSlide = Options_GetBool(OPT_NOCLIP_SLIDE, false); hacks->WOMStyleHacks = Options_GetBool(OPT_WOM_STYLE_HACKS, false); hacks->FullBlockStep = Options_GetBool(OPT_FULL_BLOCK_STEP, false); + hacks->Override = Options_GetBool(OPT_HACKS_OVERRIDE, true); p->Physics.UserJumpVel = Options_GetFloat(OPT_JUMP_VELOCITY, 0.0f, 52.0f, 0.42f); p->Physics.JumpVel = p->Physics.UserJumpVel; hackPermMsgs = Options_GetBool(OPT_HACK_PERM_MSGS, true); @@ -822,7 +823,7 @@ static void LocalPlayer_DoRespawn(struct LocalPlayer* p) { /* Spawn player at highest solid position to match vanilla Minecraft classic */ /* Only when player can noclip, since this can let you 'clip' to above solid blocks */ - if (true) { // p->Hacks.CanNoclip // + if (p->Hacks.CanNoclip) { // WL - reverted // AABB_Make(&bb, &spawn, &p->Base.Size); for (y = pos.y; y <= World.Height; y++) { spawnY = Respawn_HighestSolidY(&bb); @@ -856,7 +857,7 @@ static void LocalPlayer_DoRespawn(struct LocalPlayer* p) { static cc_bool LocalPlayer_HandleRespawn(int key) { struct LocalPlayer* p = Entities.CurPlayer; - if (true) { // p->Hacks.CanRespawn // + if (p->Hacks.CanRespawn) { // WL - reverted // LocalPlayer_DoRespawn(p); return true; } else if (!p->_warnedRespawn) { @@ -868,15 +869,15 @@ static cc_bool LocalPlayer_HandleRespawn(int key) { static cc_bool LocalPlayer_HandleSetSpawn(int key) { struct LocalPlayer* p = Entities.CurPlayer; - if (true) { // p->Hacks.CanRespawn // + if (p->Hacks.CanRespawn) { // WL - reverted // - if (!true && !p->Base.OnGround) { // p->Hacks.CanNoclip // + if (!p->Hacks.CanNoclip && !p->Base.OnGround) { // WL - reverted // Chat_AddRaw("&cCannot set spawn midair when noclip is disabled"); return false; } /* Spawn is normally centered to match vanilla Minecraft classic */ - if (!true) { // p->Hacks.CanNoclip // + if (!p->Hacks.CanNoclip) { // WL - reverted // /* Don't want to use Position because it is interpolated between prev and next. */ /* This means it can be halfway between stepping up a stair and clip through the floor. */ p->Spawn = p->Base.prev.pos; @@ -895,7 +896,7 @@ static cc_bool LocalPlayer_HandleSetSpawn(int key) { static cc_bool LocalPlayer_HandleFly(int key) { struct LocalPlayer* p = Entities.CurPlayer; - if (true && p->Hacks.Enabled) { // p->Hacks.CanFly // + if (p->Hacks.CanFly && p->Hacks.Enabled) { // WL - reverted // HacksComp_SetFlying(&p->Hacks, !p->Hacks.Flying); return true; } else if (!p->_warnedFly) { @@ -908,7 +909,7 @@ static cc_bool LocalPlayer_HandleFly(int key) { static cc_bool LocalPlayer_HandleNoclip(int key) { struct LocalPlayer* p = Entities.CurPlayer; - if (true && p->Hacks.Enabled) { // p->Hacks.CanNoclip // + if (p->Hacks.CanNoclip && p->Hacks.Enabled) { // WL - reverted // if (p->Hacks.WOMStyleHacks) return true; /* don't handle this here */ if (p->Hacks.Noclip) p->Base.Velocity.y = 0; @@ -976,7 +977,7 @@ static void LocalPlayer_HookBinds(void) { } cc_bool LocalPlayer_CheckCanZoom(struct LocalPlayer* p) { - if (true) return true; // p->Hacks.CanFly // + if (p->Hacks.CanFly) return true; // WL - reverted // if (!p->_warnedZoom) { p->_warnedZoom = true; diff --git a/src/EntityComponents.c b/src/EntityComponents.c index 3cde107..9652a71 100644 --- a/src/EntityComponents.c +++ b/src/EntityComponents.c @@ -13,6 +13,7 @@ #include "Physics.h" #include "Model.h" #include "Audio.h" +#include "Options.h" /*########################################################################################################################* *----------------------------------------------------AnimatedComponent----------------------------------------------------* @@ -228,18 +229,31 @@ void HacksComp_RecheckFlags(struct HacksComp* hacks) { HacksComp_SetAll(hacks, hax); hacks->CanBePushed = true; - HacksComp_ParseFlag(hacks, "+fly", "-fly", &hacks->CanFly); - HacksComp_ParseFlag(hacks, "+noclip", "-noclip", &hacks->CanNoclip); - HacksComp_ParseFlag(hacks, "+speed", "-speed", &hacks->CanSpeed); - HacksComp_ParseFlag(hacks, "+respawn", "-respawn", &hacks->CanRespawn); - HacksComp_ParseFlag(hacks, "+push", "-push", &hacks->CanBePushed); - HacksComp_ParseFlag(hacks, "+thirdperson", "-thirdperson", &hacks->CanUseThirdPerson); - HacksComp_ParseFlag(hacks, "+names", "-names", &hacks->CanSeeAllNames); + if(Options_GetBool(OPT_HACKS_OVERRIDE, true)) { + Platform_Log("Overriding cheats", 18); + hacks->CanFly = true; + hacks->CanNoclip = true; + hacks->CanSpeed = true; + hacks->CanRespawn = true; + hacks->CanBePushed = true; + hacks->CanUseThirdPerson = true; + hacks->CanSeeAllNames = true; + } else { + Platform_Log("Not overriding cheats", 22); + HacksComp_ParseFlag(hacks, "+fly", "-fly", &hacks->CanFly); + HacksComp_ParseFlag(hacks, "+noclip", "-noclip", &hacks->CanNoclip); + HacksComp_ParseFlag(hacks, "+speed", "-speed", &hacks->CanSpeed); + HacksComp_ParseFlag(hacks, "+respawn", "-respawn", &hacks->CanRespawn); + HacksComp_ParseFlag(hacks, "+push", "-push", &hacks->CanBePushed); + HacksComp_ParseFlag(hacks, "+thirdperson", "-thirdperson", &hacks->CanUseThirdPerson); + HacksComp_ParseFlag(hacks, "+names", "-names", &hacks->CanSeeAllNames); + if (hacks->IsOp) HacksComp_ParseAllFlag(hacks, "+ophax", "-ophax"); + } - if (hacks->IsOp) HacksComp_ParseAllFlag(hacks, "+ophax", "-ophax"); hacks->BaseHorSpeed = HacksComp_ParseFlagFloat("horspeed=", hacks); hacks->MaxHorSpeed = HacksComp_ParseFlagFloat("maxspeed=", hacks); - hacks->MaxJumps = HacksComp_ParseFlagInt("jumps=", hacks) + 2; + //TODO - WL - add jump ammount to hax settings + hacks->MaxJumps = HacksComp_ParseFlagInt("jumps=", hacks); HacksComp_Update(hacks); } diff --git a/src/EntityComponents.h b/src/EntityComponents.h index 30f2882..f70be08 100644 --- a/src/EntityComponents.h +++ b/src/EntityComponents.h @@ -47,6 +47,7 @@ struct HacksComp { cc_bool FullBlockStep; /* Whether user has allowed hacks as an option. Note 'can use X' set by the server override this */ cc_bool Enabled; + cc_bool Override; cc_bool CanAnyHacks, CanUseThirdPerson, CanSpeed, CanFly; cc_bool CanRespawn, CanNoclip, CanPushbackBlocks,CanSeeAllNames; diff --git a/src/Menus.c b/src/Menus.c index 7e18b78..5ba1a71 100644 --- a/src/Menus.c +++ b/src/Menus.c @@ -510,10 +510,21 @@ static struct Widget* pause_widgets[1 + 6 + 2]; static void PauseScreen_CheckHacksAllowed(void* screen) { struct PauseScreen* s = (struct PauseScreen*)screen; + //NOTE - WL + if (Options_GetBool(OPT_HACKS_OVERRIDE, true)) { + // i think this makes you able to do hax when u turn on override + Platform_Log("enabling buttonse", 18); + Widget_SetDisabled(&s->btns[1], false); + s->dirty = true; + return; + } if (Gui.ClassicMenu) return; Widget_SetDisabled(&s->btns[1], !Entities.CurPlayer->Hacks.CanAnyHacks); /* select texture pack */ + if(!Entities.CurPlayer->Hacks.CanAnyHacks) { + Platform_Log("disabling buttons", 18); + } s->dirty = true; } @@ -3189,6 +3200,13 @@ static void HacksSettingsScreen_SetWOMHacks(const cc_string* v) { Entities.CurPlayer->Hacks.WOMStyleHacks = Menu_SetBool(v, OPT_WOM_STYLE_HACKS); } +//a +static void HacksSettingsScreen_GetOverride(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.Override); } +static void HacksSettingsScreen_SetOverride(const cc_string* v) { + HacksComp_RecheckFlags(&Entities.CurPlayer->Hacks); + Entities.CurPlayer->Hacks.Override = Menu_SetBool(v, OPT_HACKS_OVERRIDE); +} + static void HacksSettingsScreen_GetFullStep(cc_string* v) { Menu_GetBool(v, Entities.CurPlayer->Hacks.FullBlockStep); } static void HacksSettingsScreen_SetFullStep(const cc_string* v) { Entities.CurPlayer->Hacks.FullBlockStep = Menu_SetBool(v, OPT_FULL_BLOCK_STEP); @@ -3220,12 +3238,13 @@ static void HacksSettingsScreen_SetFOV(const cc_string* v) { } static void HacksSettingsScreen_CheckHacksAllowed(struct MenuOptionsScreen* s) { + PauseScreen_CheckHacksAllowed(s); struct Widget** widgets = s->widgets; struct LocalPlayer* p = Entities.CurPlayer; cc_bool disabled = !p->Hacks.Enabled; Widget_SetDisabled(widgets[3], disabled || !p->Hacks.CanSpeed); - Widget_SetDisabled(widgets[4], disabled || !p->Hacks.CanSpeed); + // Widget_SetDisabled(widgets[4], disabled || !p->Hacks.CanSpeed); Widget_SetDisabled(widgets[5], disabled || !p->Hacks.CanSpeed); Widget_SetDisabled(widgets[7], disabled || !p->Hacks.CanPushbackBlocks); MenuInputOverlay_CheckStillValid(s); @@ -3241,8 +3260,10 @@ static void HacksSettingsScreen_InitWidgets(struct MenuOptionsScreen* s) { HacksSettingsScreen_GetClipping, HacksSettingsScreen_SetClipping }, { -1, 0, "Jump height", MenuOptionsScreen_Input, HacksSettingsScreen_GetJump, HacksSettingsScreen_SetJump }, - { -1, 50, "WoM style hacks", MenuOptionsScreen_Bool, - HacksSettingsScreen_GetWOMHacks, HacksSettingsScreen_SetWOMHacks }, + // { -1, 50, "WoM style hacks", MenuOptionsScreen_Bool, + // HacksSettingsScreen_GetWOMHacks, HacksSettingsScreen_SetWOMHacks }, + { -1, 50, "Hack override", MenuOptionsScreen_Bool, + HacksSettingsScreen_GetOverride, HacksSettingsScreen_SetOverride }, { 1, -150, "Full block stepping", MenuOptionsScreen_Bool, HacksSettingsScreen_GetFullStep, HacksSettingsScreen_SetFullStep }, @@ -3263,10 +3284,7 @@ static void HacksSettingsScreen_InitWidgets(struct MenuOptionsScreen* s) { s->descriptions[2] = "&eIf &fON&e, then the third person cameras will limit\nðeir zoom distance if they hit a solid block."; s->descriptions[3] = "&eSets how many blocks high you can jump up.\n&eNote: You jump much higher when holding down the Speed key binding."; s->descriptions[4] = \ - "&eIf &fON&e, gives you a triple jump which increases speed massively,\n" \ - "&ealong with older noclip style. This is based on the \"World of Minecraft\"\n" \ - "&eclassic client mod, which popularized hacks conventions and controls\n" \ - "&ebefore ClassiCube was created."; + "&eIf &fON&e, overrides the server's hack settings and allows you to use hacks wherever\n"; s->descriptions[7] = \ "&eIf &fON&e, placing blocks that intersect your own position cause\n" \ "ðe block to be placed, and you to be moved out of the way.\n" \ diff --git a/src/Options.h b/src/Options.h index e359b3d..cb10e69 100644 --- a/src/Options.h +++ b/src/Options.h @@ -40,6 +40,7 @@ Copyright 2014-2023 ClassiCube | Licensed under BSD-3 #define OPT_WOM_STYLE_HACKS "hacks-womstylehacks" #define OPT_FULL_BLOCK_STEP "hacks-fullblockstep" #define OPT_HACK_PERM_MSGS "hacks-perm-msgs" +#define OPT_HACKS_OVERRIDE "hacks-hacksoverride" #define OPT_TAB_AUTOCOMPLETE "gui-tab-autocomplete" #define OPT_SHOW_BLOCK_IN_HAND "gui-blockinhand" |