 |
Cheat Engine The Official Site of Cheat Engine
|
| View previous topic :: View next topic |
| Author |
Message |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 211
|
Posted: Wed Mar 18, 2026 10:09 am Post subject: Some suggestions for CE |
|
|
Here are some suggestions for CE:
1) recent files list: It would be nice to be able to change the number of files (from 20 to 50) in the recent files list in the settings. Some users need more files in the list.
2) recent files list: global / local. It would be good to have options in settings to use global or local recent files list. And use separate list in each CE folder if local recent files list is set in settings.
Explanation: sometimes we need to use a global list, sometimes a local one.
3) Have ability to drop .lua file in the lua engine
4) copy bytes as text in Hexview (copy as ASCII text in Memory View)
Explanation: we will be able to copy text from games, such as Item descriptions.
5) Show text as ASCII + offset on the right side of Hexview.
Explanation: Some games like Final Fantasy 7 use text as ASCII + 0x20. But, for example if byte value will be = 0xF0; then 0xF0 + 0x20 = 0x110, more than 1 byte.
Then use formula to display text: (0xF0 + 0x20) & 0xFF = 0x10.
This will give us ability to see and copy text from many games.
6) Have ability to disable Zero-Terminate string for all selected memory records.
7) Add 16 or 0x10 to the value of the selected memory records, in string or number format. Primarily for the string format.
Explanation: if we need to change the offsets (string hex value in memory records) for a different version of the game in a lua script that was saved in txt format. We will be able to convert the trainer for another version of the game where the offsets are slightly different.
For example: we need to convert many different offsets 0x9E00XX to 0x9E00XX + 0x20. It will take a long time to manually add 0x20 to 1000 different offsets in the text file, but if we can add 0x20 to string value for selected memory records, it will be much faster.
8 ) Add a step value when we change the value for selected memory records. This will set different values for selected memory records.
For example: we are searching for an unknown value and found 1000 memory records. To find the value faster, we can set the value to 1 and the step value to 1 for 1000 selected memory records. This will set a value from 1 to 1000 for each memory record (memory record 1.value = 1, memory record 2.value = 2, ...) If the value we are looking for, shows for example 55 in the game, then we will immediately know which memory record is correct.
9) Form Designer, CEEdit: number property. Allow user to input only numbers in CEEdit.
10) Form Designer, CEEdit: hexadecimal property. Display value in hexadecimal format in CEEdit.
Last edited by Razi on Wed Mar 18, 2026 3:44 pm; edited 1 time in total |
|
| Back to top |
|
 |
Dark Byte Site Admin
Reputation: 472
Joined: 09 May 2003 Posts: 25896 Location: The netherlands
|
Posted: Wed Mar 18, 2026 12:08 pm Post subject: |
|
|
4; if you start the copy from the text section it'll be in textformat
_________________
Do not ask me about online cheats. I don't know any and wont help finding them.
Like my help? Join me on Patreon so i can keep helping |
|
| Back to top |
|
 |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 211
|
Posted: Wed Mar 18, 2026 4:18 pm Post subject: |
|
|
| Didn't know that. It copies the text up to the first 00-1F value. If only there was an option to ignore 00-1F and replace the 00-1F with a space " " or something else. And copy the entire selection as text, then we could copy large sections of text at once.
|
|
| Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 37
Joined: 16 Feb 2017 Posts: 1558
|
Posted: Thu Mar 19, 2026 11:29 am Post subject: |
|
|
Workaround for options 9 and 10:
| Code: | if frm1 then frm1.Destroy() frm1=nil end
DP1=getScreenDPI()/96
frm1=createForm()
frm1.height=245*DP1 frm1.width=221*DP1 frm1.left=293*DP1 frm1.top=105*DP1
frm1.PopupMode=0 frm1.caption="frm1"
frm1.Position="poDesktopCenter" frm1.ShowInTaskBar="stAlways"
frm1.BorderStyle="bsSingle"
--[==[
frm1.BorderStyle="bsNone"
frm1.setLayeredAttributes(0x000100, 255, LWA_COLORKEY | LWA_ALPHA )
frm1.Color=0x000100
Object.OnMouseDown=function() frm1.DragNow() end
--]==]
-------------------------
local frm2 = {}
----------------------- frm2.edt1 -----
frm2.edt1=createEdit(frm1)
frm2.edt1.AutoSize=true
frm2.edt1.height=25*DP1 frm2.edt1.width=160*DP1 frm2.edt1.left=30*DP1 frm2.edt1.top=15*DP1
frm2.edt1.text=""
frm2.edt1.alignment="taLeftJustify"
frm2.edt1.Font.Style="fsBold" frm2.edt1.Font.Size=0*DP1
-----------------------
----------------------- frm2.edt2 -----
frm2.edt2=createEdit(frm1)
frm2.edt2.AutoSize=true
frm2.edt2.height=25*DP1 frm2.edt2.width=160*DP1 frm2.edt2.left=30*DP1 frm2.edt2.top=71*DP1
frm2.edt2.text=""
frm2.edt2.alignment="taLeftJustify"
frm2.edt2.Font.Style="fsBold" frm2.edt2.Font.Size=0*DP1
-----------------------
----------------------- frm2.edt3 -----
frm2.edt3=createEdit(frm1)
frm2.edt3.AutoSize=true
frm2.edt3.height=25*DP1 frm2.edt3.width=160*DP1 frm2.edt3.left=30*DP1 frm2.edt3.top=127*DP1
frm2.edt3.text=""
frm2.edt3.alignment="taLeftJustify"
frm2.edt3.Font.Style="fsBold" frm2.edt3.Font.Size=0*DP1
-----------------------
----------------------- frm2.edt4 -----
frm2.edt4=createEdit(frm1)
frm2.edt4.AutoSize=true
frm2.edt4.height=25*DP1 frm2.edt4.width=160*DP1 frm2.edt4.left=30*DP1 frm2.edt4.top=183*DP1
frm2.edt4.text=""
frm2.edt4.alignment="taLeftJustify"
frm2.edt4.Font.Style="fsBold" frm2.edt4.Font.Size=0*DP1
-----------------------
frm1.OnClose=function()
return caFree
end
--############################################################################--
--############################################################################--
function enableSmartFilter(editBox, filterOption)
-- Backup the user's existing OnChange function
local originalUserOnChange = editBox.OnChange
-- Take control of the EditBox's OnChange event
editBox.OnChange = function(sender)
local rawText = sender.Text
local cleaned = rawText -- Default: keep the text as is
-- Filter Logic based on filterOption
if filterOption == 1 then -- NUMERIC: Allows 0-9, dot (.), and comma (,)
cleaned = rawText:gsub("[^0-9%.,]", "")
elseif filterOption == 2 then -- ALPHA: Allows letters (a-z, A-Z), dot, and comma
cleaned = rawText:gsub("[^%a%.,]", "")
elseif filterOption == 3 then -- HEX/AOB: Allows 0-9, A-F, question marks (?), and spaces
cleaned = rawText:gsub("[^0-9a-fA-F%?%s]", "")
elseif filterOption == 0 then -- NONE: No filter applied
cleaned = rawText
end
-- If the text contains invalid characters, clean it
if rawText ~= cleaned then
sender.Text = cleaned
sender.SelStart = #cleaned -- Move cursor to the end
-- Prevent executing the original function with "dirty" data
return
end
-- If the text is clean, execute the user's original function (if any)
if originalUserOnChange then
originalUserOnChange(sender)
end
end
end
-- Note: First, enable the OnChange function of the editbox (if any), then assign the filter.
-- USAGE EXAMPLES:
frm2.edt2.OnChange=function(sender) print(sender.Text) end
enableSmartFilter(frm2.edt1, 1) -- Numeric only
enableSmartFilter(frm2.edt2, 2) -- Letters only
enableSmartFilter(frm2.edt3, 3) -- Hex/AOB pattern
enableSmartFilter(frm2.edt4, 0) -- Normal - Default |
_________________
|
|
| 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
|
|