  | 
				
				Cheat Engine The Official Site of Cheat Engine   
				
 
				 | 
			 
		 
		 
	
		| View previous topic :: View next topic   | 
	 
	
	
		| Author | 
		Message | 
	 
	
		etioplmld Advanced Cheater
  Reputation: 0
  Joined: 09 Feb 2021 Posts: 77
 
  | 
		
			
				 Posted: Wed Jul 07, 2021 10:39 pm    Post subject: Can Lua achieve the effect of adding pointer gui on ce? | 
				       | 
			 
			
				
  | 
			 
			
				Can Lua achieve the effect of adding pointer gui on ce? 
 
such as
 
--
 
CB = createCheckBox(f)
 
??
 
add edit
 
add edit
 
..
 
..
 
Button add offset ..Button remove offset
 
---
 
 
Used to add multiple addresses with a common base address,
 
Add a few edits,Variable createEdit。Not need to change the code every time.
 
 	  | Code: | 	 		  
 
f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=550
 
f.Height=300
 
f.Caption = 'Add addresses in Batches'
 
 
 
L1 = createLabel(f)
 
L1.Left = 26
 
L1.Top = 11
 
L1.Font.Size = 12
 
L1.Caption = 'Add description here↓'
 
 
local m1=createMemo(f)
 
m1.Height=180
 
m1.Left=10
 
m1.Top=50
 
m1.Width=240
 
m1.WordWrap=false
 
m1.ScrollBars="ssAutoBoth"
 
 
L2 = createLabel(f)
 
L2.Left = 280
 
L2.Top = 11
 
L2.Font.Size = 12
 
L2.Caption = 'Add the address corresponding to \n the description↓'
 
 
 
local m2=createMemo(f)
 
m2.Height=180
 
m2.Left=275
 
m2.Top=50
 
m2.Width=240
 
m2.WordWrap=false
 
m2.ScrollBars="ssAutoBoth"
 
 
local b=createButton(f)
 
b.Left=230
 
b.Top=260
 
b.caption="Add"
 
 
b.OnClick=function()
 
local sr1 = m1.getLines()
 
local sr2 = m2.getLines()
 
local jn = {}
 
for n = 0, sr2.Count - 1 do
 
  jn[n] = tonumber(sr2.String[n], 16)
 
  local al=getAddressList()
 
  local shc = al.createMemoryRecord()
 
  local py = jn[n] 
 
  shc.setAddress("3432C0")--Change here to target
 
  shc.setOffsetCount(2)
 
  shc.setOffset(0, py)
 
  shc.setOffset(1, 0x5F1F4)--Change here to target
 
  shc.Type = vtCustom
 
  shc.CustomTypeName = 'abc'
 
  shc.description=sr1.String[n]
 
end
 
end
 
 | 	  
 | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		ByTransient Expert Cheater
  Reputation: 5
  Joined: 05 Sep 2020 Posts: 240
 
  | 
		
			
				 Posted: Thu Jul 08, 2021 9:45 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				I didn't quite understand what you wanted, I just simulated the table generating and interacting with the gui.
 
If you want to explain a little more, I'm here.
 
 
 	  | Code: | 	 		  if f then f.Destroy() f=nil end
 
f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=700
 
f.Height=300
 
f.Caption = 'Add addresses in Batches'
 
 
L1 = createLabel(f)
 
L1.Left = 26
 
L1.Top = 11
 
L1.Font.Size = 12
 
L1.Caption = 'Add description here↓'
 
 
local m1=createMemo(f)
 
m1.Height=180
 
m1.Left=10
 
m1.Top=50
 
m1.Width=240
 
m1.WordWrap=false
 
m1.ScrollBars="ssAutoBoth"
 
 
L2 = createLabel(f)
 
L2.Left = 280
 
L2.Top = 11
 
L2.Font.Size = 12
 
L2.Caption = 'Add the address corresponding to \n the description↓'
 
 
local m2=createMemo(f)
 
m2.Height=180
 
m2.Left=260
 
m2.Top=50
 
m2.Width=240
 
m2.WordWrap=false
 
m2.ScrollBars="ssAutoBoth"
 
 
P2 = createListBox(f)
 
P2.Height=180
 
P2.Left = 510
 
P2.Top = 50
 
P2.Width=180
 
P2.Color=14671775
 
 
local b=createButton(f)
 
b.Left=230
 
b.Top=260
 
b.caption="Add"
 
 
local b1=createButton(f)
 
b1.Left=535
 
b1.Top=240
 
b1.caption="Load Address List"
 
b1.Width=140
 
 
local top1 = -15
 
local chk11={ }
 
 
function onHack(sender)
 
addresslist=getAddressList()
 
local name=sender.caption
 
--print(name)
 
  if sender.checked==true then
 
   CheatEntry=addresslist_getMemoryRecordByDescription(addresslist,name)
 
   memoryrecord_freeze(CheatEntry)
 
   else
 
 CheatEntry=addresslist_getMemoryRecordByDescription(addresslist,name)
 
   memoryrecord_unfreeze(CheatEntry)
 
  end
 
end
 
 
function addChkBox(chName)
 
--print("chName: "..chName)
 
top1=tonumber(top1) + 20
 
chk11.chName=createCheckBox(P2)
 
chk11.chName.caption=chName
 
chk11.chName.Left=5
 
chk11.chName.Top=top1
 
chk11.chName.OnChange=onHack
 
end
 
 
b.OnClick=function()
 
local sr1 = m1.getLines()
 
local sr2 = m2.getLines()
 
local jn = {}
 
for n = 0, sr1.Count - 1 do
 
  jn[n] = tonumber(sr2.String[n], 16)
 
  local al=getAddressList()
 
  local shc = al.createMemoryRecord()
 
  local py = jn[n]
 
  --shc.setAddress("3432C0")--Change here to target
 
  --shc.setOffsetCount(2)
 
  --shc.setOffset(0, py)
 
  --shc.setOffset(1, 0x5F1F4)--Change here to target
 
  name11=sr2.String[n]
 
  if name11=="" then
 
  shc.Type = 11 end --vtCustom
 
  --shc.CustomTypeName = 'abc'
 
  shc.description=sr1.String[n]
 
  addChkBox(shc.description)
 
end
 
end
 
 
b1.OnClick=function()
 
P2.Clear()
 
  al=getAddressList()
 
  for i=0, al.Count-1 do
 
  values=(al[i].Description)
 
 
  addChkBox(values)
 
  end
 
end
 
 | 	  
 | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		etioplmld Advanced Cheater
  Reputation: 0
  Joined: 09 Feb 2021 Posts: 77
 
  | 
		
			
				 Posted: Thu Jul 08, 2021 9:34 pm    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				Thank you for your answer
 
 
to add this adress
 
 
[[[abc.exe]+123]+45]+4
 
[[[abc.exe]+123]+45]+8
 
[[[abc.exe]+123]+45]+c
 
[[[abc.exe]+123]+45]+10
 
....
 
 
 
They have a common base address and pointer
 
 
Can be expressed by code
 
 	  | Code: | 	 		  
 
 shc.setAddress("abc.exe")--Change here to target
 
  shc.setOffsetCount(3)
 
  shc.setOffset(0, py)
 
  shc.setOffset(1, 0x123)--Change here to target
 
  shc.setOffset(2, 0x45)--Change here to target
 
 | 	  
 
 
4,8,c,10 can Put in Memo
 
 
Can put Same base address abc.exe and 123 in a place like ce ,ce adding pointer gui can  use lua achieve?
 
like this↓
	
  
	 
	
	
		
	 
	
		|  Description: | 
		
			
		 | 
	 
	
		|  Filesize: | 
		 66.74 KB | 
	 
	
		|  Viewed: | 
		 4745 Time(s) | 
	 
	
		
  
 
  | 
	 
	 
	 
 | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		ByTransient Expert Cheater
  Reputation: 5
  Joined: 05 Sep 2020 Posts: 240
 
  | 
		
			
				 Posted: Fri Jul 09, 2021 1:44 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				A slightly different approach. Additions can be made for other types other than pointers.
 
 
 	  | Code: | 	 		  if f then f.Destroy() f=nil end
 
f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=450
 
f.Height=260
 
f.Caption = 'Add addresses in Batches'
 
 
L2 = createLabel(f)
 
L2.Left=30 L2.Top=11 L2.Font.Size=12
 
L2.Caption='Add the address corresponding to \n and Offset (or "" (No 0x)) ↓'
 
 
L3=createLabel(f)
 
L3.Left=10 L3.Top=56 L3.Font.Size=12 L3.Caption="Description: "
 
 
L4=createLabel(f)
 
L4.Left=10 L4.Top=80 L4.Font.Size=12 L4.Caption="Address....: "
 
 
L5=createLabel(f)
 
L5.Left=10 L5.Top=104 L5.Font.Size=12 L5.Caption="Offset(0)...: "
 
 
L6=createLabel(f)
 
L6.Left=10 L6.Top=128 L6.Font.Size=12 L6.Caption="Offset(1)...: "
 
 
L7=createLabel(f)
 
L7.Left=10 L7.Top=152 L7.Font.Size=12 L7.Caption="Offset(2)...: "
 
 
L8=createLabel(f)
 
L8.Left=10 L8.Top=176 L8.Font.Size=12 L8.Caption="Offset(3)...: "
 
 
L9=createLabel(f)
 
L9.Left=10 L9.Top=200 L9.Font.Size=12 L9.Caption="Offset(4)...: "
 
 
E1=createEdit(f) E1.AutoSize=false E1.Height=20
 
E1.Left=90 E1.Top=55 E1.Font.Size=12 E1.Width=160
 
 
E2=createEdit(f) E2.AutoSize=false E2.Height=20
 
E2.Left=90 E2.Top=79 E2.Font.Size=12 E2.Width=160
 
 
E3=createEdit(f) E3.AutoSize=false E3.Height=20
 
E3.Left=110 E3.Top=103 E3.Font.Size=12 E3.Width=140
 
 
E4=createEdit(f) E4.AutoSize=false E4.Height=20
 
E4.Left=110 E4.Top=127 E4.Font.Size=12 E4.Width=140
 
 
E5=createEdit(f) E5.AutoSize=false E5.Height=20
 
E5.Left=110 E5.Top=151 E5.Font.Size=12 E5.Width=140
 
 
E6=createEdit(f) E6.AutoSize=false E6.Height=20
 
E6.Left=110 E6.Top=175 E6.Font.Size=12 E6.Width=140
 
 
E7=createEdit(f) E7.AutoSize=false E7.Height=20
 
E7.Left=110 E7.Top=199 E7.Font.Size=12 E7.Width=140
 
 
P2 = createListBox(f)
 
P2.Height=165
 
P2.Left = 260
 
P2.Top = 55
 
P2.Width=180
 
P2.Color=14671775
 
 
local b=createButton(f)
 
b.Left=10
 
b.Top=225
 
b.caption="Add"
 
b.Width=80
 
 
local b1=createButton(f)
 
b1.Left=260
 
b1.Top=225
 
b1.caption="Load Address List"
 
b1.Width=125
 
 
local b2=createButton(f)
 
b2.Left=110
 
b2.Top=225
 
b2.caption="Clear Offsets"
 
b2.Width=140
 
 
local b3=createButton(f)
 
b3.Left=390
 
b3.Top=225
 
b3.caption="Clear"
 
b3.Width=50
 
 
local top1 = -15
 
local chk11={ }
 
 
function onHack(sender)
 
addresslist=getAddressList()
 
local name=sender.caption
 
--print(name)
 
  if sender.checked==true then
 
   CheatEntry=addresslist_getMemoryRecordByDescription(addresslist,name)
 
   memoryrecord_freeze(CheatEntry)
 
   else
 
 CheatEntry=addresslist_getMemoryRecordByDescription(addresslist,name)
 
   memoryrecord_unfreeze(CheatEntry)
 
  end
 
end
 
 
function addChkBox(chName)
 
--print("chName: "..chName)
 
top1=tonumber(top1) + 20
 
chk11.chName=createCheckBox(P2)
 
chk11.chName.caption=chName
 
chk11.chName.Left=5
 
chk11.chName.Top=top1
 
chk11.chName.OnChange=onHack
 
end
 
 
local OffCount=0
 
 
function CounOffs1()
 
OffCount=0
 
if E3.Text~="" then OffCount=1 end
 
if E4.Text~="" then OffCount=2 end
 
if E5.Text~="" then OffCount=3 end
 
if E6.Text~="" then OffCount=4 end
 
if E7.Text~="" then OffCount=5 end
 
return OffCount
 
end
 
 
b.OnClick=function()
 
  local al=getAddressList()
 
  local shc = al.createMemoryRecord()
 
  CounOffs1()
 
  if E2.Text~="" then
 
  shc.setAddress(E2.Text) end
 
  shc.setOffsetCount(tonumber(OffCount))
 
  if E3.Text~="" then
 
  shc.setOffset(0, "0x"..E3.Text) end
 
  if E4.Text~="" then
 
  shc.setOffset(1, "0x"..E4.Text) end
 
  if E5.Text~="" then
 
  shc.setOffset(2, "0x"..E5.Text) end
 
  if E6.Text~="" then
 
  shc.setOffset(3, "0x"..E6.Text) end
 
  if E7.Text~="" then
 
  shc.setOffset(4, "0x"..E7.Text) end
 
  shc.Type = vtCustom
 
  shc.description=E1.Text
 
  addChkBox(shc.description)
 
end
 
 
b1.OnClick=function()
 
P2.Clear()
 
  al=getAddressList()
 
  for i=0, al.Count-1 do
 
  values=(al[i].Description)
 
 
  addChkBox(values)
 
  end
 
end
 
 
b2.OnClick=function()
 
--E1.Text=""
 
E2.Text="" E3.Text="" E4.Text="" E5.Text="" E6.Text=""
 
end
 
 
b3.OnClick=function()
 
P2.Clear()
 
end
 
 | 	  
	
  
	 
	
	
		
	 
	
		|  Description: | 
		
			
		 | 
	 
	
		|  Filesize: | 
		 63.6 KB | 
	 
	
		|  Viewed: | 
		 4727 Time(s) | 
	 
	
		
  
 
  | 
	 
	 
	 
 | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		etioplmld Advanced Cheater
  Reputation: 0
  Joined: 09 Feb 2021 Posts: 77
 
  | 
		
			
				 Posted: Mon Jul 12, 2021 12:45 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				so,as you say, Lua does not provide a function to change the form
 
another method ,But not for use,Because the text of Memo and Edit cannot be saved like the lua window.
 
 	  | Code: | 	 		  
 
f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=750
 
f.Height=300
 
f.Caption = 'Add addresses in Batches'
 
 
 
L1 = createLabel(f)
 
L1.Left = 26
 
L1.Top = 11
 
L1.Font.Size = 12
 
L1.Caption = 'Add description here↓'
 
 
local m1=createMemo(f)
 
m1.Height=180
 
m1.Left=10
 
m1.Top=50
 
m1.Width=240
 
m1.WordWrap=false
 
m1.ScrollBars="ssAutoBoth"
 
 
L2 = createLabel(f)
 
L2.Left = 280
 
L2.Top = 11
 
L2.Font.Size = 12
 
L2.Caption = 'Last offset corresponding to \n the description↓'
 
 
 
local m2=createMemo(f)
 
m2.Height=180
 
m2.Left=275
 
m2.Top=50
 
m2.Width=240
 
m2.WordWrap=false
 
m2.ScrollBars="ssAutoBoth"
 
 
 
E=createEdit(f)
 
E.Left=560
 
E.Top=11
 
E.Width=160
 
E.TextHint='base adress'
 
 
L3 = createLabel(f)
 
L3.Left = 560
 
L3.Top = 50
 
L3.Font.Size = 12
 
L3.Caption = 'Same offset↓'
 
 
local m3=createMemo(f)
 
m3.Height=180
 
m3.Left=560
 
m3.Top=80
 
m3.Width=160
 
m3.WordWrap=false
 
m3.ScrollBars="ssAutoBoth"
 
 
 
 
local b=createButton(f)
 
b.Left=230
 
b.Top=260
 
b.caption="Add"
 
 
b.OnClick=function()
 
  local sr1 = m1.getLines()
 
  local sr2 = m2.getLines()
 
  local sr3 = m3.getLines()
 
  local jn = {}
 
for n = 0, sr2.Count - 1 do
 
  jn[n] = tonumber(sr2.String[n], 16)
 
  local al=getAddressList()
 
  local shc = al.createMemoryRecord()
 
  local py = jn[n]
 
  shc.setAddress(E.Text)
 
  shc.setOffsetCount(sr3.Count+1)
 
  shc.setOffset(0,py)
 
   for b = 0,sr3.Count-1 do
 
   local sm = {}
 
   sm[b] = tonumber(sr3.String[b], 16)
 
   shc.setOffset(b+1,sm[b])
 
   end
 
  shc.Type = vtCustom
 
  shc.CustomTypeName = 'abc'
 
  shc.description=sr1.String[n]
 
 end
 
end
 
 | 	  
 | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		Dark Byte Site Admin
  Reputation: 470
  Joined: 09 May 2003 Posts: 25807 Location: The netherlands
  | 
		
			
				 Posted: Mon Jul 12, 2021 2:13 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				this code will change the form
 
 	  | Code: | 	 		  
 
function forEachAndFutureForm(classname, func)
 
  local i
 
  for i=0,getFormCount()-1 do
 
    local f
 
    f=getForm(i)
 
    if f.ClassName==classname then
 
      func(f)
 
    end
 
  end
 
 
  registerFormAddNotification(function(f)
 
    if classname==f.ClassName then
 
      f.registerFirstShowCallback(function()
 
        func(f)
 
      end)
 
    end
 
  end)
 
end
 
 
forEachAndFutureForm('TformAddressChange',function(f)
 
  local mylabel=createLabel(f)
 
  mylabel.caption='New label'
 
  mylabel.Top=f.LabelAddress.Top
 
  mylabel.Left=f.LabelAddress.Left+f.LabelAddress.Width+10
 
  mylabel.Font.Color=0xff0000
 
 
  local oldOK=f.btnOk.OnClick
 
  f.btnOk.OnClick=function(sender)
 
    if messageDialog('Are you sure this is the correct address?', mtWarning, mbYes,mbNo)==mrYes then
 
      oldOK(sendeR)
 
    end
 
  end
 
end)
 
 | 	  
 _________________
 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 | 
		 | 
	 
	
		  | 
	 
	
		etioplmld Advanced Cheater
  Reputation: 0
  Joined: 09 Feb 2021 Posts: 77
 
  | 
		
			
				 Posted: Mon Jul 12, 2021 7:04 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				Sorry for the wrong statement,but How to add an edit per click?
 
 
This is a wrong attempt
 
 	  | Code: | 	 		  
 
f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=300
 
f.Height=300
 
f.Caption = 'Add addresses in Batches'
 
 
local m1=createMemo(f)
 
m1.Height=180
 
m1.Left=10
 
m1.Top=50
 
m1.Width=240
 
m1.WordWrap=false
 
m1.ScrollBars="ssAutoBoth"
 
 
local b=createButton(f)
 
b.Left=10
 
b.Top=260
 
b.caption="Add"
 
 
local jn = {}
 
local ec = 1
 
local bp = 240
 
b.OnClick=function()
 
 f.Height = f.Height + 60
 
 b.Top = b.Top + 60
 
 jn[ec]=createEdit(f)
 
----jn[ec].Left=560//worng
 
jn[ec].Left=10--fix
 
 jn[ec].Top= b.Top - 10
 
 jn[ec].Width=160
 
 ec =ec + 1
 
end
 
 | 	  
  Last edited by etioplmld on Thu Dec 23, 2021 1:25 am; edited 2 times in total | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		ByTransient Expert Cheater
  Reputation: 5
  Joined: 05 Sep 2020 Posts: 240
 
  | 
		
			
				 Posted: Mon Jul 12, 2021 9:01 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				It is possible to do this. But you can't give functions to get "OnClick" or "Text".
 
Because "local" will always be in the last generated "Edt..ec".
 
As a result; You must create these newly produced "Edits" in the function you will use.
 
Or let me offer you an alternative code.
 
 
 	  | Code: | 	 		  f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=300
 
f.Height=260
 
f.Caption = 'Add addresses in Batches'
 
 
local m1=createMemo(f)
 
m1.Height=180
 
m1.Left=10
 
m1.Top=40
 
m1.Width=240
 
m1.WordWrap=false
 
m1.ScrollBars="ssAutoBoth"
 
 
local b=createButton(f)
 
b.Left=10
 
b.Top=f.Height - 30
 
b.caption="Add"
 
 
local jn = { }
 
local ec = 0
 
local bp = 240
 
b.OnClick=function()
 
 f.Height = f.Height + 27
 
 ec =tonumber(ec) + 1
 
 name1="edt"..ec
 
 jn.name1=createEdit(f)
 
 jn.name1.Name=name1
 
 print(jn.name1.Name)
 
 jn.name1.AutoSize=false
 
 jn.name1.Height=22
 
 jn.name1.Left=10
 
 jn.name1.Width=160
 
b.Top=f.Height - 30
 
 jn.name1.Top= b.Top - 27
 
end | 	  
 
 
EDIT: 
 
Added 5 "Edits". + 1 button (Clear) has been added.
 
 
 	  | Code: | 	 		  f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=300
 
f.Height=260
 
f.Caption = 'Add addresses in Batches'
 
 
local m1=createMemo(f)
 
m1.Height=180
 
m1.Left=10
 
m1.Top=40
 
m1.Width=240
 
m1.WordWrap=false
 
m1.ScrollBars="ssAutoBoth"
 
 
local b=createButton(f)
 
b.Left=10
 
b.Top=f.Height - 30
 
b.caption="Add"
 
 
local b1=createButton(f)
 
b1.Left=95
 
b1.Top=f.Height - 30
 
b1.caption="Clear"
 
 
local jn = { }
 
 
jn.edt1=createEdit(f)
 
jn.edt1.AutoSize=false jn.edt1.Height=22 jn.edt1.Left=10
 
jn.edt1.Width=160 jn.edt1.Top= - 60
 
 
jn.edt2=createEdit(f)
 
jn.edt2.AutoSize=false jn.edt2.Height=22 jn.edt2.Left=10
 
jn.edt2.Width=160 jn.edt2.Top= - 60
 
 
jn.edt3=createEdit(f)
 
jn.edt3.AutoSize=false jn.edt3.Height=22 jn.edt3.Left=10
 
jn.edt3.Width=160 jn.edt3.Top= - 60
 
 
jn.edt4=createEdit(f)
 
jn.edt4.AutoSize=false jn.edt4.Height=22 jn.edt4.Left=10
 
jn.edt4.Width=160 jn.edt4.Top= - 60
 
 
jn.edt5=createEdit(f)
 
jn.edt5.AutoSize=false jn.edt5.Height=22 jn.edt5.Left=10
 
jn.edt5.Width=160 jn.edt5.Top= - 60
 
 
local ec = 0
 
local ec1 = 0
 
local bp = 240
 
b.OnClick=function()
 
 if ec~=5 then
 
 f.Height = f.Height + 27
 
 ec =tonumber(ec) + 1
 
 ec1 =tonumber(ec1) + 1
 
 name1=jn["edt"..ec]
 
--name1=tostring(name1)
 
b.Top=f.Height - 30
 
b1.Top=f.Height - 30
 
 name1.Top= b.Top - 27
 
 end
 
end
 
 
b1.OnClick=function()
 
 if ec1~=0 then
 
 f.Height = f.Height - 27
 
 name1=jn["edt"..ec]
 
 ec =tonumber(ec) - 1
 
 ec1 =tonumber(ec1) - 1
 
--name1=tostring(name1)
 
b.Top=f.Height - 30
 
b1.Top=f.Height - 30
 
 name1.Top= - 60
 
 end
 
end | 	  
 | 
			 
		  | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		AylinCE Grandmaster Cheater Supreme
  Reputation: 37
  Joined: 16 Feb 2017 Posts: 1529
 
  | 
		 | 
	 
	
		| Back to top | 
		 | 
	 
	
		  | 
	 
	
		etioplmld Advanced Cheater
  Reputation: 0
  Joined: 09 Feb 2021 Posts: 77
 
  | 
		
			
				 Posted: Thu Dec 09, 2021 7:53 am    Post subject:  | 
				       | 
			 
			
				
  | 
			 
			
				 	  | Code: | 	 		  
 
f = createForm(true)
 
f.Position=poDesktopCenter
 
f.Width=300
 
f.Height=115
 
f.Caption = 'Add addresses '
 
 
local b1=createButton(f)
 
b1.Left=180
 
b1.Top=10
 
b1.caption="add address"
 
b1.Width=100
 
 
local b2=createButton(f)
 
b2.Left=180
 
b2.Top=40
 
b2.caption="add offset"
 
b2.Width=100
 
 
local b3=createButton(f)
 
b3.Left=180
 
b3.Top=70
 
b3.caption="remove offset"
 
b3.Width=100
 
 
local eb=createEdit(f)
 
eb.Left=10
 
eb.Top=10
 
eb.Width=130
 
eb.TextHint='base address'
 
 
local eb1 =createEdit(f)
 
eb1.Left=10
 
eb1.Top=40
 
eb1.Width=130
 
eb1.Text= 1
 
 
bn = 1
 
local jn = {}
 
b2.OnClick=function()
 
 jn[bn] = string.format("ex%d", bn)
 
 jn[bn]=createEdit(f)
 
 jn[bn].Left=10
 
 jn[bn].Top= 70 + 25*bn
 
 jn[bn].TextHint=string.format("offset%d", bn)
 
bn = bn + 1
 
f.Height=f.Height + 25
 
 
end
 
 
b3.OnClick=function()
 
bn= bn -1
 
jn[bn].destroy()
 
jn[bn]=nil
 
f.Height=f.Height - 25
 
end
 
 
b1.OnClick=function()
 
if( bn == 1)
 
then
 
gn=tonumber(eb1.Text,16)
 
for n=1,gn do
 
local al = getAddressList()
 
local rec = al.createMemoryRecord()
 
fl=tonumber(eb.Text)+n*4
 
kl = tostring(fl)
 
rec.setAddress(kl)
 
end
 
 
elseif( bn == 2 )
 
then
 
gn=tonumber(eb1.Text)
 
for n = 0,gn-1 do
 
local al = getAddressList()
 
local rec = al.createMemoryRecord()
 
fofst = tonumber(jn[1].Text,16)+ n*4
 
rec.setAddress(eb.Text)
 
rec.setOffsetCount(1)
 
rec.setOffset(0,fofst)
 
end
 
elseif( bn > 2 )
 
then
 
gn=tonumber(eb1.Text)
 
 
for n = 0,gn-1 do
 
local al = getAddressList()
 
local rec = al.createMemoryRecord()
 
fofst = tonumber(jn[1].Text,16)+ n*4
 
 
rec.setAddress(eb.Text)
 
rec.setOffsetCount(bn-1)
 
rec.setOffset(0,fofst)
 
for p = 1 ,bn-2 do
 
s = tonumber(jn[p+1].Text,16)
 
rec.setOffset(p,s)
 
end
 
end
 
 
else
 
print("error")
 
 
end
 
end
 
 | 	  
 
----------------
 
After trying a lot of code, this is a result 。
 | 
			 
		  | 
	 
	
		| 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
  | 
   
 
		 |