Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


CE Unique Aobs Generator

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Tutorials -> LUA Tutorials
View previous topic :: View next topic  
Author Message
AylinCE
Grandmaster Cheater Supreme
Reputation: 36

Joined: 16 Feb 2017
Posts: 1499

PostPosted: Sat Jan 25, 2025 2:27 pm    Post subject: CE Unique Aobs Generator Reply with quote

A unique aob code creation tool that reads aobs (Hex) codes taken from addresses (or pasted into the Memo box) and places a wildcard "??" character in different bytes.

You can create a list in 3 ways;
1) From Foundlist addresses (with the Found List button)
2) From the Address List (with the Address List button)
3) Copy and paste your Aobs codes into the Memo box.

You can also write any length of bytes you want for options 1 and 2.
If the box is empty, the default length will be 40 bytes.

If you want this to be an add-on in the CE menu and can't, let me know in the comments.

Otherwise, it's just released as a code sample.

Code:
if aobFrm1 then aobFrm1.Destroy() aobFrm1=nil end
DP1=getScreenDPI()/96
aobFrm1=createForm()
aobFrm1.height=300*DP1 aobFrm1.width=700*DP1 aobFrm1.left=440*DP1 aobFrm1.top=109*DP1
aobFrm1.PopupMode=0 aobFrm1.caption="AylinCE Trainers (2025)"
aobFrm1.Position="poDesktopCenter" aobFrm1.ShowInTaskBar="stAlways"
aobFrm1.BorderStyle="bsNone"
aobFrm1.setLayeredAttributes(0x000100, 255, LWA_COLORKEY | LWA_ALPHA )
aobFrm1.Color=0x000100

-------------------------
local ftb = {}
----------------------- ftb.mnPnl1 ----- 
ftb.mnPnl1=createPanel(aobFrm1)
ftb.mnPnl1.AutoSize=false
ftb.mnPnl1.height=34*DP1 ftb.mnPnl1.width=690*DP1 ftb.mnPnl1.left=5*DP1 ftb.mnPnl1.top=5*DP1
ftb.mnPnl1.caption="Unique Aobs Generator"
ftb.mnPnl1.Color=8882055 ftb.mnPnl1.BevelWidth=4
ftb.mnPnl1.Font.Style="fsBold" ftb.mnPnl1.Font.Size=14*DP1
ftb.mnPnl1.OnMouseDown=function() aobFrm1.DragNow() end ftb.mnPnl1.Cursor = -22
-----------------------
----------------------- ftb.btPnl1 ----- 
ftb.btPnl1=createPanel(ftb.mnPnl1)
ftb.btPnl1.AutoSize=false
ftb.btPnl1.height=24*DP1 ftb.btPnl1.width=25*DP1 ftb.btPnl1.left=5*DP1 ftb.btPnl1.top=5*DP1
-----------------------
----------------------- ftb.btPnl2 ----- 
ftb.btPnl2=createPanel(ftb.mnPnl1)
ftb.btPnl2.AutoSize=false
ftb.btPnl2.height=24*DP1 ftb.btPnl2.width=25*DP1 ftb.btPnl2.left=660*DP1 ftb.btPnl2.top=5*DP1
-----------------------
----------------------- ftb.mnPnl2 ----- 
ftb.mnPnl2=createPanel(aobFrm1)
ftb.mnPnl2.AutoSize=false
ftb.mnPnl2.height=255*DP1 ftb.mnPnl2.width=690*DP1 ftb.mnPnl2.left=5*DP1 ftb.mnPnl2.top=40*DP1
ftb.mnPnl2.BevelWidth=4
ftb.mnPnl2.Color=8882055
-----------------------
----------------------- ftb.btPnl3 ----- 
ftb.btPnl3=createPanel(ftb.mnPnl2)
ftb.btPnl3.AutoSize=false
ftb.btPnl3.height=25*DP1 ftb.btPnl3.width=105*DP1 ftb.btPnl3.left=10*DP1 ftb.btPnl3.top=10*DP1
-----------------------
----------------------- ftb.btPnl4 ----- 
ftb.btPnl4=createPanel(ftb.mnPnl2)
ftb.btPnl4.AutoSize=false
ftb.btPnl4.height=25*DP1 ftb.btPnl4.width=110*DP1 ftb.btPnl4.left=125*DP1 ftb.btPnl4.top=10*DP1
-----------------------
----------------------- ftb.btPnl5 ----- 
ftb.btPnl5=createPanel(ftb.mnPnl2)
ftb.btPnl5.AutoSize=false
ftb.btPnl5.height=25*DP1 ftb.btPnl5.width=100*DP1 ftb.btPnl5.left=580*DP1 ftb.btPnl5.top=10*DP1
-----------------------
----------------------- ftb.btMm1 ----- 
ftb.btMm1=createMemo(ftb.mnPnl2)
ftb.btMm1.AutoSize=false
ftb.btMm1.height=150*DP1 ftb.btMm1.width=670*DP1 ftb.btMm1.left=10*DP1 ftb.btMm1.top=40*DP1
ftb.btMm1.Color=14737632
ftb.btMm1.Font.Style="fsBold" ftb.btMm1.Font.Size=0*DP1
ftb.btMm1.ScrollBars="ssAutoBoth" ftb.btMm1.wordWrap=false
-----------------------
----------------------- ftb.btEdt1 ----- 
ftb.btEdt1=createEdit(ftb.mnPnl2)
ftb.btEdt1.AutoSize=true
ftb.btEdt1.height=23*DP1 ftb.btEdt1.width=670*DP1 ftb.btEdt1.left=10*DP1 ftb.btEdt1.top=225*DP1
ftb.btEdt1.text=""
ftb.btEdt1.Color=14737632
ftb.btEdt1.Font.Style="fsBold" ftb.btEdt1.Font.Size=0*DP1
-----------------------
----------------------- ftb.btPnl6 ----- 
ftb.btPnl6=createPanel(ftb.mnPnl2)
ftb.btPnl6.AutoSize=false
ftb.btPnl6.height=25*DP1 ftb.btPnl6.width=110*DP1 ftb.btPnl6.left=290*DP1 ftb.btPnl6.top=196*DP1
-----------------------
----------------------- ftb.btLbl1 ----- 
ftb.btLbl1=createLabel(ftb.mnPnl2)
ftb.btLbl1.AutoSize=false
ftb.btLbl1.height=22*DP1 ftb.btLbl1.width=75*DP1 ftb.btLbl1.left=245*DP1 ftb.btLbl1.top=12*DP1
ftb.btLbl1.caption="Byte Leng: "
ftb.btLbl1.alignment="taLeftJustify"
ftb.btLbl1.Font.Style="fsBold" ftb.btLbl1.Font.Size=10*DP1
-----------------------
----------------------- ftb.btEdt2 ----- 
ftb.btEdt2=createEdit(ftb.mnPnl2)
ftb.btEdt2.AutoSize=false
ftb.btEdt2.height=22*DP1 ftb.btEdt2.width=30*DP1 ftb.btEdt2.left=315*DP1 ftb.btEdt2.top=10*DP1
ftb.btEdt2.text=""
ftb.btEdt2.Color=14737632
ftb.btEdt2.Font.Style="fsBold" ftb.btEdt2.Font.Size=0*DP1
-----------------------

--############################################################################--
--############################################################################--

function panelClickEffect(item2, fsize, text, thint)
--local item2 = item2
item2.Color=4342338
item2.BevelColor=clDefault
item2.Font.Size=fsize item2.BevelInner="bvRaised" item2.BevelWidth=3 item2.Font.Color="0x000000"
item2.Font.Style="fsBold" item2.Hint=thint item2.ShowHint=true item2.OptimalFill=true
item2.Font.Name="Georgia" item2.Cursor=-21 item2.Font.Color="0xffffff"
item2.caption = text

item2.OnMouseMove=function() item2.BevelColor=65280 end
item2.OnMouseLeave=function() item2.BevelColor=clDefault end

item2.OnMouseDown=function() item2.Color=10395294 end
item2.OnMouseUp=function() item2.Color=4342338 end
end

panelClickEffect(ftb.btPnl1, 16*DP1, "-", "")
panelClickEffect(ftb.btPnl2, 12*DP1, "X", "")
panelClickEffect(ftb.btPnl3, 10*DP1, "Found List", "")
panelClickEffect(ftb.btPnl4, 10*DP1, "Address List", "")
panelClickEffect(ftb.btPnl5, 10*DP1, "Clear List", "")
panelClickEffect(ftb.btPnl6, 10*DP1, "Format List", "")

--############################################################################--
--############################################################################--

ftb.btPnl1.OnClick=function() aobFrm1.WindowState = "wsMinimized" end
ftb.btPnl2.OnClick=function() aobFrm1.Close() end

--############################################################################--
--############################################################################--
function getByteString1(address, bytecount)
 local bytes = readBytes(address, bytecount, true)
 if bytes then
 local result = ""
 for i = 1, #bytes do
 if #result > 0 then result = result .. " " end
 result = result .. string.format("%02X", bytes[i]) end
 return result end
end

ftb.btPnl3.OnClick=function()
local fnlst = MainForm.Foundlist3.Items
local leng1 = tonumber(ftb.btEdt2.Text)
 if leng1==nil then leng1=40 end
  if fnlst.Count~=0 then
    for i=0, fnlst.Count -1 do
      addr1 = fnlst[i].Caption
      ftb.btMm1.Lines.Add(getByteString1(addr1, leng1))
    end
  end
end

ftb.btPnl4.OnClick=function()
local al = getAddressList()
local leng1 = tonumber(ftb.btEdt2.Text)
 if leng1==nil then leng1=40 end
  if al.Count~=0 then
    for i=0, al.Count -1 do
      if al[i].Type ~= vtAutoAssembler and al[i].getCurrentAddress() ~= 0
        and al[i].Value ~= "??" then
        addr1 = al[i].Address
        ftb.btMm1.Lines.Add(getByteString1(addr1, leng1))
      end
    end
  end
end

ftb.btPnl5.OnClick=function() ftb.btMm1.Clear() end

ftb.btEdt1.OnClick=function()
  txt = ftb.btEdt1.Text
  writeToClipboard(txt)
end

----------------------------------- Filters ------------------------------------

function compareHexCodes(hexTable)
    local result = {}
    local byteTables = {}

    for _, hex in ipairs(hexTable) do
        local bytes = {}
        for byte in hex:gmatch("%S+") do
            table.insert(bytes, byte)
        end
        table.insert(byteTables, bytes)
    end
    for i = 1, #byteTables[1] do
        local byte = byteTables[1][i]
        local allEqual = true
        for j = 2, #byteTables do
            if byteTables[j][i] ~= byte then
                allEqual = false
                break
            end
        end
        if allEqual then
            table.insert(result, byte)
        else
            table.insert(result, "??")
        end
    end
    return table.concat(result, " ")
end

ftb.btPnl6.OnClick=function()
  if ftb.btMm1.Lines.Text~="" then
    local outTbl = {}
     for i = 0, ftb.btMm1.Lines.Count - 1 do
       local outs = ftb.btMm1.Lines[i]
       table.insert(outTbl, outs)
     end
    local result = compareHexCodes(outTbl)
    ftb.btEdt1.Text=result
  end
end


As always; Happy coding, until we meet on a different topic.

Here is a result image:

_________________
Hi Hitler Different Trainer forms for you!
https://forum.cheatengine.org/viewtopic.php?t=619279
Enthusiastic people: Always one step ahead
Do not underestimate me Master: You were a beginner in the past
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Tutorials -> LUA Tutorials All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
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 cannot download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites