|
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Do you want such options Cheat Engine? |
Absolutely, Yes! |
|
66% |
[ 2 ] |
Meh! |
|
33% |
[ 1 ] |
|
Total Votes : 3 |
|
Author |
Message |
Game Hacking Dojo Expert Cheater Reputation: 1
Joined: 17 Sep 2023 Posts: 229
|
Posted: Thu Oct 10, 2024 3:54 pm Post subject: Superior Go to Address |
|
|
Code: | -- Made by the GameHackingDojo
-- Special thanks to:
-- ParkourPenguin
-- AylinCE
local function go_to_address(type, offset)
local version = {1, 1, 2, 0}
local form_colour = 0x242424 --BGR
local bevel_colour = 0x404040 --BGR
local font_colour = 0xBBBBBB --BGR
local red_colour = 0x453ACC --BGR
local small_spacing = 4
local spacing = 8
local message_time = 2000 --Milliseconds
local default_label = "Enter an address"
-- Create main window
local form = createForm(false)
form.Caption = "Superior Go to Address by GHD"
form.AutoSize = true
form.Constraints.MaxHeight = 92
form.Constraints.MinWidth = 400
form.Constraints.MaxWidth = 1300
form.Font.Color = font_colour
--form.BorderStyle = 'bsNone'
--[[local title_bar = createPanel(form)
title_bar.Align = alTop
title_bar.Height = 26
title_bar.Color = 0x282828
title_bar.BevelColor = bevel_colour
title_bar.Color = form_colour
title_bar.OnMouseDown = function(sender, button, x, y)
if button == mbLeft then
form.dragNow()
end
end
local title_label = createLabel(title_bar)
title_label.Caption = "Go to address"
title_label.Font.Color = font_colour
title_label.Font.Size = 9
title_label.Align = asrCenter
title_label.BorderSpacing.Left = small_spacing
title_label.Alignment = "taLeft"
title_label.OnMouseDown = function(sender, button, x, y)
if button == mbLeft then
form.dragNow()
end
end]]
-- Centre to MemoryViewForm window
local form_x, form_y = getMemoryViewForm().getPosition()
form_x = form_x + getMemoryViewForm().width / 2 - form.width / 2
form_y = form_y + getMemoryViewForm().height / 2 - form.height / 2
form.setPosition(form_x, form_y)
-- Create main panel
local main_panel = createPanel(form)
main_panel.Align = alClient
main_panel.ClientHeight = form.ClientHeight
main_panel.ClientWidth = form.ClientWidth
main_panel.BevelColor = bevel_colour
-- Create label
local label = createLabel(main_panel)
label.Align = alLeft
label.Caption = default_label
label.BorderSpacing.Top = spacing
label.BorderSpacing.Left = small_spacing
label.BorderSpacing.Right = small_spacing
-- Create input box
local inputbox = createEdit(main_panel)
inputbox.Align = asrCenter
inputbox.BorderSpacing.Left = small_spacing
inputbox.BorderSpacing.Right = small_spacing
-- Create version label
local version_label = createLabel(main_panel)
version_label.Caption = "v"..version[1].."."..version[2].."."..version[3].."."..version[4]
version_label.font.Color = red_colour
version_label.font.size = 8
version_label.Align = alRight
version_label.AnchorSideTop.Control = label
version_label.BorderSpacing.Top = spacing
version_label.BorderSpacing.Left = small_spacing
version_label.BorderSpacing.Right = small_spacing
-- Create button panel
local button_panel = createPanel(form)
button_panel.ClientHeight = 40
button_panel.Align = alBottom
button_panel.BevelColor = bevel_colour
-- Create go button
local go_button = createButton(button_panel)
go_button.Caption = "Go"
go_button.Align = alRight
go_button.Constraints.MinWidth = 75
go_button.Constraints.MinHeight = 25
go_button.AutoSize = true
go_button.BorderSpacing.around = spacing
go_button.OnCLick = function()
if process == nil or process == "" and label.Caption == default_label then
label.Caption = "Not attached to process" label.Font.Color = red_colour -- error message
createTimer(message_time, function() -- revert the changes
label.Caption = default_label
label.Font.Color = font_colour
end)
return
end
if offset == true then inputbox.text = "$process+"..inputbox.text:gsub("%$process%+", "") end
inputbox.text = string.gsub(inputbox.text, ":%$", "$process") --define :$ as $process (x64dbg expression)
local address = getAddressSafe(inputbox.text) or nil
if address == nil and label.Caption == default_label then
label.Caption = "Not a valid address" label.Font.Color = red_colour -- error message
createTimer(message_time, function() -- revert the changes
label.Caption = default_label
label.Font.Color = font_colour
end)
return
end
if type == "disassembler" then getMemoryViewForm().DisassemblerView.TopAddress = address end
if type == "memory_view" then getMemoryViewForm().HexadecimalView.Address = address end
form.close()
end
-- Add OnKeyDown event for Enter key
inputbox.OnKeyDown = function(sender, key) if key == VK_RETURN then go_button.DoClick() end end
-- Create cancel button
local cancel_button = createButton(button_panel)
cancel_button.Caption = "Cancel"
cancel_button.Align = alRight
cancel_button.Constraints.MinWidth = 75
cancel_button.Constraints.MinHeight = 25
cancel_button.AutoSize = true
cancel_button.BorderSpacing.around = spacing
cancel_button.OnClick = function() form.close() end
-- Create module or symbol checkbox
local offset_checkbox = createCheckBox(button_panel)
local initial_offset_input = ""
offset_checkbox.Caption = "Go to Offset"
offset_checkbox.Align = alLeft
offset_checkbox.Constraints.MinWidth = 50
offset_checkbox.Constraints.MaxHeight = 19
offset_checkbox.BorderSpacing.around = spacing
if offset == true then offset_checkbox.state = cbChecked end
offset_checkbox.onChange = function()
if offset_checkbox.state == cbChecked then offset = true else offset = false end
inputbox.text = string.gsub(inputbox.text, ":%$", "$process") --define :$ as $process (x64dbg expression)
if offset_checkbox.state == cbChecked then
initial_offset_input = inputbox.text:gsub("%s+$", "")
else
if initial_offset_input ~= "" then inputbox.text = initial_offset_input end
end
end
-- Create module or symbol checkbox
local module_symbol_checkbox = createCheckBox(button_panel)
local initial_module_symbol_input = ""
module_symbol_checkbox.Caption = "Module or Symbol"
module_symbol_checkbox.Align = alLeft
module_symbol_checkbox.Left = 60
module_symbol_checkbox.Constraints.MinWidth = 110
module_symbol_checkbox.Constraints.MaxHeight = 19
module_symbol_checkbox.BorderSpacing.around = spacing
module_symbol_checkbox.setAllowGrayed(true)
module_symbol_checkbox.onChange = function()
inputbox.text = string.gsub(inputbox.text, ":%$", "$process") --define :$ as $process (x64dbg expression)
if getAddressSafe(inputbox.text) == nil and label.Caption == default_label then
label.Caption = "Not a valid address" label.Font.Color = red_colour -- error message
createTimer(message_time, function() -- revert the changes
label.Caption = default_label
label.Font.Color = font_colour
end)
module_symbol_checkbox.state = cbUnchecked
return
end
if module_symbol_checkbox.state ~= cbUnchecked then
if module_symbol_checkbox.state == cbGrayed then
initial_module_symbol_input = inputbox.text:gsub("%s+$", "")
if offset == true then
inputbox.text = "$process+"..inputbox.text:gsub("%$process%+", "")
offset = false
offset_checkbox.state = cbUnchecked
end
inputbox.text = getNameFromAddress(inputbox.text, true, false)
end
if module_symbol_checkbox.state == cbChecked then
if offset == true then
inputbox.text = "$process+"..inputbox.text:gsub("%$process%+", "")
offset = false
offset_checkbox.state = cbUnchecked
end
inputbox.text = getNameFromAddress(inputbox.text, true, true)
end
end
if module_symbol_checkbox.state == cbUnchecked then
inputbox.text = initial_module_symbol_input
end
end
form.showModal()
end
for i = 0, getMemoryViewForm().DisassemblerView.PopupMenu.items.count - 1 do
local item = getMemoryViewForm().DisassemblerView.PopupMenu.items[i]
if item.name == "Gotoaddress1" then
local offset_item_index = i + 1
local popup_menu = getMemoryViewForm().DisassemblerView.PopupMenu
local menu_item = createMenuItem(popup_menu)
menu_item.Caption = "Go to Offset"
menu_item.ImageIndex = 35
menu_item.ShortCut = textToShortCut("Ctrl+F")
menu_item.OnClick = function(s)
go_to_address("disassembler", true)
end
popup_menu.Items.insert(offset_item_index, menu_item)
item.OnClick = function() go_to_address("disassembler", false) end
end
end
for i = 0, getMemoryViewForm().HexadecimalView.PopupMenu.items.count - 1 do
local item = getMemoryViewForm().HexadecimalView.PopupMenu.items[i]
if item.name == "Goto1" then
local offset_item_index = i + 1
local popup_menu = getMemoryViewForm().HexadecimalView.PopupMenu
local menu_item = createMenuItem(popup_menu)
menu_item.Caption = "Go to Offset"
menu_item.ImageIndex = 35
--menu_item.ShortCut = textToShortCut("Ctrl+F")
menu_item.OnClick = function(s)
go_to_address("memory_view", true)
end
popup_menu.Items.insert(offset_item_index, menu_item)
item.OnClick = function() go_to_address("memory_view", false) end
end
end |
Last edited by Game Hacking Dojo on Sat Oct 12, 2024 4:26 pm; edited 3 times in total |
|
Back to top |
|
|
Game Hacking Dojo Expert Cheater Reputation: 1
Joined: 17 Sep 2023 Posts: 229
|
Posted: Fri Oct 11, 2024 9:28 am Post subject: |
|
|
A big update
Dark byte, can you please try it and add it to Cheat Engine? We really need this, Thank you
Description: |
|
Filesize: |
7.18 KB |
Viewed: |
3487 Time(s) |
|
Description: |
|
Download |
Filename: |
Superior Go to Address.lua |
Filesize: |
9.24 KB |
Downloaded: |
142 Time(s) |
|
|
Back to top |
|
|
Game Hacking Dojo Expert Cheater Reputation: 1
Joined: 17 Sep 2023 Posts: 229
|
Posted: Tue Nov 26, 2024 12:13 pm Post subject: |
|
|
Another Big Update
Now:
- It saves your history
- You can go to the module base if the input box is empty while the offset is checked
- You can type :$ to go to the module base. (no plus needed between the symbol and offset like in x64dbg)
- You can use hotkeys (Ctrl + F) to toggle offset on or off.
- You can use the Escape key to close the form
- The input box is filled with the selected address by default
Description: |
|
Filesize: |
7.92 KB |
Viewed: |
615 Time(s) |
|
Description: |
|
Download |
Filename: |
Superior Go to Address.lua |
Filesize: |
10.46 KB |
Downloaded: |
27 Time(s) |
|
|
Back to top |
|
|
AylinCE Grandmaster Cheater Supreme Reputation: 34
Joined: 16 Feb 2017 Posts: 1432
|
Posted: Tue Nov 26, 2024 1:35 pm Post subject: |
|
|
Need advice?
1) Avoid overused control names (like "form")
2) Make the dimensions uniform and equal for each user;
Code: | DP1=getScreenDPI()/96
form.Constraints.MaxHeight = 92*DP1
title_label.Font.Size = 9*DP1
local form_x, form_y = getMemoryViewForm().getPosition()
form_x = form_x + getMemoryViewForm().width*DP1 / 2*DP1 - form.width*DP1 / 2*DP1
form_y = form_y + getMemoryViewForm().height*DP1 / 2*DP1 - form.height*DP1 / 2*DP1
form.setPosition(form_x*DP1, form_y*DP1)
module_symbol_checkbox.Left = 60*DP1 |
_________________
|
|
Back to top |
|
|
Game Hacking Dojo Expert Cheater Reputation: 1
Joined: 17 Sep 2023 Posts: 229
|
Posted: Tue Nov 26, 2024 4:49 pm Post subject: |
|
|
Thank you for the feedback that really helps, AylinCE
And here's the update:
- Fixed history list order now shows the last address at the top
- Fixed not detecting screen dpi. (Thanks to AylinCE)
- And of course, introduced new bugs to fix later
Description: |
|
Filesize: |
7.91 KB |
Viewed: |
566 Time(s) |
|
Description: |
|
Download |
Filename: |
Superior Go to Address.lua |
Filesize: |
10.67 KB |
Downloaded: |
40 Time(s) |
|
|
Back to top |
|
|
Game Hacking Dojo Expert Cheater Reputation: 1
Joined: 17 Sep 2023 Posts: 229
|
Posted: Sat Nov 30, 2024 4:55 am Post subject: |
|
|
New update:
- Fixed not showing in the middle of the memory view form
- Tested on multiple screens and resolutions
- More safety checks added to avoid access violation
- UI improvements
- And perhaps some new bugs
Description: |
|
Filesize: |
5.8 KB |
Viewed: |
284 Time(s) |
|
Description: |
|
Download |
Filename: |
Superior Go to Address.lua |
Filesize: |
11.7 KB |
Downloaded: |
21 Time(s) |
|
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum You cannot attach files in this forum You can download files in this forum
|
|