[REQUEST] Battletech

Status
Not open for further replies.

Kokuto

What is cheating?
Sep 18, 2017
4
0
1
#21
So what's the pointer for money? Not been able to properly locate it. The figures itself seem unreliable to track.
 
Sep 21, 2017
5
0
1
#22
SimGameConstants.json - BATTLETECH\BattleTech_Data\StreamingAssets\data\simGameConstants
Notepad++ - "StartingCBills" - 980000 - change - 9999999999
 

Snowz

What is cheating?
Apr 25, 2018
3
2
3
#23
Please don't subvert the staff's wishes.
Also to everyone: if you're not replying with a table/trainer that fulfills the OP's request, then you're doing it wrong. This is a request sub-forum, not a chat and share ways to hack X game sub-forum. Make a thread in the appropriate section for that.
Frankly, at this point, I'm fairly sure anyone coming here will be glad for ANY help they can get at all.
So what's the pointer for money? Not been able to properly locate it. The figures itself seem unreliable to track.
Money should be fairly easy, be on your ship, have half or a full mill or so (just not a too small, insignificant amount). Save before changing anything. Simply search for your money value in a 4 byte search. You'll probably end up with 6-10 values, simply change them all and switch screen and your value should update. This worked for me and should work for anyone, I'm a novice when it comes to using CE, but this was a pretty basic maneuver.
 

SunBeam

Trouble-Maker
Talents
Feb 4, 2018
553
295
63
#24
CE's Mono should help with finding the Telerik equivalent of the statically decompiled function. Furthermore, I suggest looking for "cheats", "developer", "debug", etc. - words - and inspect the results to determine ways to either make use of them or enable the console ;) Most Unity games come with these features-in, just disabled by developers for some random reason. Can someone upload the Assembly-CSharp.dll for me? :)
 

machida1

What is cheating?
Apr 25, 2018
1
0
1
#25
CE's Mono should help with finding the Telerik equivalent of the statically decompiled function. Furthermore, I suggest looking for "cheats", "developer", "debug", etc. - words - and inspect the results to determine ways to either make use of them or enable the console ;) Most Unity games come with these features-in, just disabled by developers for some random reason. Can someone upload the Assembly-CSharp.dll for me? :)
https://mega.nz/#!VnICzRiJ!d3gblcATnsVzVEUoyidP99weVin1yyNIz8sbuT7iVFA
 

SunBeam

Trouble-Maker
Talents
Feb 4, 2018
553
295
63
#26
I didn't even start the game and..



Enable Mono in CE, open Memory Viewer, then go to BattleTech.UI::CombatDebugHUD::Update function. I don't have all the libraries, therefore not all the references are resolved:

C++:
if (DebugConsole.DebugCommandsUnlocked && Input.GetKeyDown(92))
But.. in Memory Viewer, close to the top of the function, you should find something like:

NASM:
mov eax,[instance_ptr] // or "call func" which already gets instance ptr in eax
cmp [eax+offset],0
jne @f
  push 92d_key_equivalent
  call GetAsyncKeyState
  test ax,ax
  jne short @f
    //
@@;
If DebugCommandsUnlocked BOOL is 1, you can then find all its uses and what you can enable with the various key presses. The above location seems to fiddle with AIMood.SensorLocking:

C++:
for (int i = 0; i < this.combatState.AllMechs.Count; i++)
{
    Mech item = this.combatState.AllMechs[i];
    AIMood behaviorTree = item.BehaviorTree.mood;
    if (behaviorTree == AIMood.Defensive)
    {
        str = "DEF";
    }
    else
    {
        str = (behaviorTree == AIMood.SensorLocking ? "SLK" : "OFF");
    }
    if (item.DynamicUnitRole == UnitRole.Undefined || item.IsDead)
    {
        UnitRole dynamicUnitRole = item.DynamicUnitRole;
        string str1 = string.Format("no role [{1}]", dynamicUnitRole.ToString(), str);
        AIUtil.ShowAIDebugUnitFloatie(item, str1);
    }
    else
    {
        UnitRole unitRole = item.DynamicUnitRole;
        string str2 = string.Format("{0} [{1}]", unitRole.ToString(), str);
        AIUtil.ShowAIDebugUnitFloatie(item, str2);
    }
}
List<ICombatant> allCombatants = this.combatState.GetAllCombatants();
for (int j = 0; j < allCombatants.Count; j++)
{
    ICombatant combatant = allCombatants[j];
    AIUtil.ShowAIDebugUnitFloatie(combatant, string.Format("Tags: [{0}]", combatant.EncounterTags));
}
EncounterLayerParent.showTagsInGame = !EncounterLayerParent.showTagsInGame;
Post automatically merged:

Here's some more:



Head to HBS.DebugConsole::Initialize. While here:

C++:
private void Initialize()
{
    DebugConsole.DebugCommandsUnlocked = (DebugBridge.TestToolsEnabled ? true : PlayerPrefs.GetInt("last_debug_state", 0) == 1); // here
    this.consoleWindowID = GUIUtility.GetControlID(2);
    string[] strArrays = PlayerPrefs.GetString("Console.CommandHistory", string.Empty).Split(new char[] { '\n' });
    for (int i = 0; i < (int)strArrays.Length && i < this.historyBufferSize; i++)
    {
        if (!string.IsNullOrEmpty(strArrays[i].Trim()))
        {
            this.history.AddLast(strArrays[i]);
        }
    }
    this.historyNode = null;
}
Notice you need DebugBridge.TestToolsEnabled BOOL to be set to 1.

Then there's also this:

C++:
protected override void Update()
{
    base.Update();
    if (DebugConsole.DebugCommandsUnlocked)
    {
        if (BTInput.Instance.Toggle_DebugHUD().get_WasPressed()) // here
        {
            base.Visible = !base.Visible;
            if (this.combatDebugHUD != null)
            {
                this.combatDebugHUD.Visible = base.Visible;
            }
        }
        if (BTInput.Instance.DEBUG_ResetAchievement().get_WasPressed())
        {
            this.DEBUG_ClearAchievements();
        }
    }
}
That code, if debugged a bit, would give you an idea how to get Toggle_DebugHUD working :p

Last use of that debug BOOL is here:

C++:
protected override void Update()
{
    base.Update();
    if (DebugConsole.DebugCommandsUnlocked && Input.GetKeyUp(118) && (Input.GetKey(304) || Input.GetKey(303)) && (Input.GetKey(306) || Input.GetKey(305))) // here
    {
        base.Visible = !base.Visible;
    }
}
So, if that BOOL is 1 and you press a combination of keys (I'll check MSDN), something will show. Perhaps the debug HUD or console :p

BR,
Sun
 

NomuNomu

What is cheating?
Mar 3, 2017
1
4
3
#27
Left Ctrl + Shift (Either side) + Enter, then type 'hbsrocks' and hit Enter again. After that you should be able pop open the console with Ctrl + ~ (Useless since I think there are no commands registered) or Ctrl + Shift + Minus to pop open the Debug UI menu during combat (This one has the fun buttons, including one to SPEED UP MECH ANIMATION SPEED).
 

SunBeam

Trouble-Maker
Talents
Feb 4, 2018
553
295
63
#28
And some more:

C++:
else if (_current.get_keyCode() == 27)
{
    this.secretCodeBuffer = string.Empty;
    if (!_current.get_shift())
    {
        DebugConsole.logger.Log("::-->> CURRENT ENTRY CLEARED");
    }
    else
    {
        DebugConsole.logger.Log("::-->> DEBUG COMMANDS UNLOCK CODE CLOSING INPUT");
        this.scanForUnlockCode = false;
    }
}
else if (_current.get_keyCode() == 271 || _current.get_keyCode() == 13)
{
    if (this.secretCodeBuffer != "hbsrocks") // here
    {
        DebugConsole.logger.Log(string.Concat("::-->> INCORRECT DEBUG COMMANDS UNLOCK CODE ENTERED: ", this.secretCodeBuffer));
    }
    else
    {
        DebugConsole.logger.Log("::-->> DEBUG COMMANDS UNLOCKED");
        DebugConsole.DebugCommandsUnlocked = true;
        PlayerPrefs.SetInt("last_debug_state", 1);
        this.scanForUnlockCode = false;
    }
    this.secretCodeBuffer = string.Empty;
}
_current.Use();
@NomuNomu: You got ahead of me :p LOL
Post automatically merged:

If the DEBUG_ functions aren't linked to any activator, then simply either remap Unity key-checks to those functions OR write a CreateThread hook that would do something like this (taken from my AC4 script):

CEA:
[ENABLE]

alloc( KeyHandlerThread, 0x1000, your_game.exe )
registersymbol( KeyHandlerThread )
CreateThread( KeyHandlerThread )
label( KeyHandlerOff )
registersymbol( KeyHandlerOff )
label( ExitKeyHandler )

KeyHandlerThread:
push A
call kernel32.Sleep

cmp [KeyHandlerOff],1
jne short @f
  mov [KeyHandlerOff],2
  ret
@@:
push 60 //VK_NUMPAD0
call GetAsyncKeyState
test ax,ax
je @f

  call Test
  push C8
  call kernel32.Sleep

@@:
jmp KeyHandlerThread

Test:
// add here your test code
call BattleTech.UI::CombatDebugHUD::DEBUG_ClearAchievements
// add here your test code
ret

KeyHandlerOff:
dd 0

[DISABLE]

{$lua}

if( syntaxcheck == false ) then --actual execution
  local starttime = getTickCount()

if readInteger( "KeyHandlerOff" ) == 0 then --could be 2 already
  writeInteger( "KeyHandlerOff", 1 ) --tell the thread to kill itself
end

while( getTickCount() < starttime + 1000 ) and ( readInteger( "KeyHandlerOff" ) ~= 2 ) do --wait till it has finished
  sleep( 20 )
end

if( getTickCount() > starttime + 1000 ) then --could happen when the window is shown
  showMessage( 'Disabling the thread failed!' )
  error( 'Thread disabling failed!' )
end
  sleep( 1 )
end

{$asm}

unregistersymbol( KeyHandlerOff )
unregistersymbol( KeyHandlerThread )
dealloc( KeyHandlerThread )
Change your_game.exe to the name of your game; press Numpad 0 to test/debug break. Then play with these functions (note not all of them can be called directly, as you may need additional parameters; just so I don't hear you bitch about crashes):



BR,
Sun
Post automatically merged:

Game looks nice - at least from the screenshots; will see if it has the same crappy Unity GFX feel - I'll give it a try later on today. Can't guarantee I'll fetch the same version, as I don't plan to buy it. But at least will let you know if the DEBUG_ functions need any parameters or work by default.
 
Last edited:

Scanner

What is cheating?
May 23, 2017
1
0
1
#29
Ah, okay.
You have to search 4bytes 1 time with... 980000 (your actual cbills). Then you have shown some result.
Just change all to... eq 150000000. That´s all.

With xp it didnt work and I didnt find out how. Next try is using floating and range.
(tested - didn´t work. with range I found one result but editing didnt work).

Number of parts/weapons/ammunition should be work like cbills, without problems.
 
Last edited:

STN

Pleb
Staff member
Administrator
Mar 2, 2017
3,028
60
48
#30
BattleTech.UI:CombatDebugHUD:Update+92 - 48 0FB6 00 - movzx rax,byte ptr [rax]

Change that (DebugConsole.DebugCommandsUnlocked) to 1 to enable bringing up of the debug ui.
 

nemesisssu

What is cheating?
Apr 14, 2017
2
0
1
#32
I have found out how to modify your mechs (tonnage, number of guns, armor etc.). You have to change them individually. Go to BATTLETECH\BattleTech_Data\StreamingAssets\data\chassis and have fun.
 

theknyte

What is cheating?
Apr 25, 2018
2
3
3
#33
I have found out how to modify your mechs (tonnage, number of guns, armor etc.). You have to change them individually. Go to BATTLETECH\BattleTech_Data\StreamingAssets\data\chassis and have fun.
Keep in mind, if you change the mechs or the weapons stats, it will work for the AI units as well.
 

Snowz

What is cheating?
Apr 25, 2018
3
2
3
#34
Keep in mind, if you change the mechs or the weapons stats, it will work for the AI units as well.
Well, I'd wager, all mech you encounter are some kind of a preset loadout.
So as long as you only change stats like chassis tonnage or weapon slots, I don't think that will ever benefit the AI.
Changing armor stats, or weapon stats will obviously go both ways.
 

radekplug120

What is cheating?
Nov 2, 2017
2
1
3
#35
Left Ctrl + Shift (Either side) + Enter, then type 'hbsrocks' and hit Enter again. After that you should be able pop open the console with Ctrl + ~ (Useless since I think there are no commands registered) or Ctrl + Shift + Minus to pop open the Debug UI menu during combat (This one has the fun buttons, including one to SPEED UP MECH ANIMATION SPEED).
where i must write in game menu or on ship where exacly this metod work
 

jungletek

Reality Bytes
Oct 17, 2017
155
6
18
#36
Some people can't read, so this thread is closed until we sort out discussion threads for particular games.

Good job.
 
Status
Not open for further replies.
Top Bottom