 |
Cheat Engine The Official Site of Cheat Engine
|
View previous topic :: View next topic |
Author |
Message |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Fri Mar 10, 2023 9:43 pm Post subject: View past user posts in CEF (V2). |
|
|
Yes, many users may not want this published. (Especially the masters)
I hope the site's PHP code is not deliberately hiding this. Otherwise it will not be welcome.
However, as I said in my signature; "We were (maybe still) newbies in the past")
Sometimes there are those who want to access personal archives:
( https://forum.cheatengine.org/viewtopic.php?t=620762 )
V2 Innovations:
1) A title is assigned indicating all available posts.
2) Creates link for username and profile visit. (Click and visit)
3) Lists the designated pages for all posts. (Click it and it will open that page)
4) Added browser selection. (It will open all links in the browser shown in the selection box (Combobox). If not selected, the default is Google Chrome)
5) +1 I made another edit.
I've added a box listing some of the respected craftsmen (based on reputation over 100) who contributed. Also, the first position of the box (0) can be used for manual search.
(The posts and answers of the masters in the list (8-10 more masters that can be added.) are in the nature of an archive. )
Evaluate this.
Warnings:
For old and experienced users (@Dark Byte), be a little patient. It may take a long time to list.
You can add something to the code or make a request. Feel free to comment.
I hope you use this code secretly.
( Here is a detail that went unnoticed, fixed by @Dark Byte and the code will now generate form with the same look in different Windows DPI formats.
Final code with "getScreenDPI()"; )
Code: |
DPIMultiplier=getScreenDPI()/96
if srcfrm1 then srcfrm1.Destroy() srcfrm1=nil end
srcfrm1=createForm()
srcfrm1.height=355*DPIMultiplier srcfrm1.width=320*DPIMultiplier srcfrm1.left=424*DPIMultiplier srcfrm1.top=172*DPIMultiplier
srcfrm1.PopupMode=0 srcfrm1.caption="CE Forum: View User Posts!"
srcfrm1.Position="poDesktopCenter" srcfrm1.BorderStyle=1
srcfrm1.Font.Style="" srcfrm1.Font.Size=12
-------------------------
local srcTbl = {}
----------------------- srcTbl.lbl1 -----
srcTbl.lbl1=createLabel(srcfrm1)
srcTbl.lbl1.AutoSize=true
srcTbl.lbl1.height=19*DPIMultiplier srcTbl.lbl1.width=86*DPIMultiplier srcTbl.lbl1.left=16*DPIMultiplier srcTbl.lbl1.top=15*DPIMultiplier
srcTbl.lbl1.caption="User Name: "
srcTbl.lbl1.alignment="taLeftJustify"
-----------------------
----------------------- srcTbl.edt1 -----
srcTbl.edt1=createComboBox(srcfrm1)
srcTbl.edt1.AutoSize=false
srcTbl.edt1.height=22*DPIMultiplier srcTbl.edt1.width=192*DPIMultiplier srcTbl.edt1.left=109*DPIMultiplier srcTbl.edt1.top=15*DPIMultiplier
srcTbl.edt1.ReadOnly=false srcTbl.edt1.Style="csDropDown" srcTbl.edt1.Font.Size=9
-----------------------
----------------------- srcTbl.btn1 -----
srcTbl.btn1=createButton(srcfrm1)
srcTbl.btn1.AutoSize=false
srcTbl.btn1.height=25*DPIMultiplier srcTbl.btn1.width=300*DPIMultiplier srcTbl.btn1.left=10*DPIMultiplier srcTbl.btn1.top=50*DPIMultiplier
srcTbl.btn1.caption="Open the search result in Browser!"
-----------------------
----------------------- srcTbl.lbl2 -----
srcTbl.lbl2=createLabel(srcfrm1)
srcTbl.lbl2.AutoSize=false
srcTbl.lbl2.height=24*DPIMultiplier srcTbl.lbl2.width=300*DPIMultiplier srcTbl.lbl2.left=10*DPIMultiplier srcTbl.lbl2.top=87*DPIMultiplier
srcTbl.lbl2.caption="List of available pages:"
srcTbl.lbl2.alignment="taCenter"
srcTbl.lbl2.OptimalFill=true srcTbl.lbl2.Font.Size=11
-----------------------
----------------------- srcTbl.lbl3 -----
srcTbl.lbl3=createLabel(srcfrm1)
srcTbl.lbl3.AutoSize=false
srcTbl.lbl3.height=24*DPIMultiplier srcTbl.lbl3.width=160*DPIMultiplier srcTbl.lbl3.left=10*DPIMultiplier srcTbl.lbl3.top=122*DPIMultiplier
srcTbl.lbl3.caption="Autor/User:"
srcTbl.lbl3.OptimalFill=true srcTbl.lbl3.Font.Size=11
-----------------------
----------------------- srcTbl.Cbx1 -----
srcTbl.Cbx1=createComboBox(srcfrm1)
srcTbl.Cbx1.AutoSize=true
srcTbl.Cbx1.height=27*DPIMultiplier srcTbl.Cbx1.width=130*DPIMultiplier srcTbl.Cbx1.left=180*DPIMultiplier srcTbl.Cbx1.top=120*DPIMultiplier
srcTbl.Cbx1.Font.Size=9 srcTbl.Cbx1.OptimalFill=true
srcTbl.Cbx1.ReadOnly=true srcTbl.Cbx1.Style="csDropDownList"
-----------------------
-----------------------
local nextLeft = 10*DPIMultiplier
local nextTop = 5*DPIMultiplier
local pages22= 0
local browser1 = "chrome.exe"
--srcTbl.edt1.text="mgr.inz.Player"
-----------------------
function createScrollBox(Parent)
local box = createComponentClass('TScrollBox', Parent)
box.Parent = Parent
return box
end
function LoadUrl(link)
local int=getInternet()
s=int.getURL(link)
int.destroy()
return s
end
-----------------------
srcTbl.Scrbx1=createScrollBox(srcfrm1)
srcTbl.Scrbx1.AutoSize=false
srcTbl.Scrbx1.height=180*DPIMultiplier srcTbl.Scrbx1.width=300*DPIMultiplier srcTbl.Scrbx1.left=10*DPIMultiplier srcTbl.Scrbx1.top=160*DPIMultiplier
srcTbl.Scrbx1.Color=10395294 srcTbl.Scrbx1.Font.Style="fsBold" srcTbl.Scrbx1.Font.Size=10
-----------------------
function pageClear()
nextTop=5*DPIMultiplier
nextLeft = 10*DPIMultiplier
srcTbl.Scrbx1.Destroy() srcTbl.Scrbx1=nil
srcTbl.Scrbx1=createScrollBox(srcfrm1)
srcTbl.Scrbx1.AutoSize=false
srcTbl.Scrbx1.height=180*DPIMultiplier srcTbl.Scrbx1.width=300*DPIMultiplier srcTbl.Scrbx1.left=10*DPIMultiplier srcTbl.Scrbx1.top=160*DPIMultiplier
srcTbl.Scrbx1.Color=10395294 srcTbl.Scrbx1.Font.Style="fsBold" srcTbl.Scrbx1.Font.Size=10
end
-----------------------
srcTbl.edt1.Clear()
srcTbl.edt1.Items.Add("") -- Search edit ..
srcTbl.edt1.Items.Add("Dark Byte") --443
srcTbl.edt1.Items.Add("mgr.inz.Player") --212
srcTbl.edt1.Items.Add("atom0s") --191
srcTbl.edt1.Items.Add("Recifense") --163
srcTbl.edt1.Items.Add("Zanzer") --126
srcTbl.edt1.Items.Add("ParkourPenguin") --119
srcTbl.edt1.Items.Add("++METHOS") --81
srcTbl.edt1.ItemIndex=0
------------------------
------------------------
srcTbl.Cbx1.Clear()
srcTbl.Cbx1.Items.Add("Select Browser")
srcTbl.Cbx1.Items.Add("Google Chrome")
srcTbl.Cbx1.Items.Add("Mozilla Firefox")
srcTbl.Cbx1.Items.Add("Microsoft Edge")
srcTbl.Cbx1.Items.Add("Opera")
srcTbl.Cbx1.Items.Add("Internet Explorer")
srcTbl.Cbx1.Items.Add("Maxthon")
srcTbl.Cbx1.Items.Add("Pale Moon")
srcTbl.Cbx1.ItemIndex=0
srcTbl.Cbx1.OnChange=function()
local indd1=srcTbl.Cbx1.ItemIndex
if indd1==0 then browser1 = "chrome.exe" end --default
if indd1==1 then browser1 = "chrome.exe" end
if indd1==2 then browser1 = "firefox.exe" end
if indd1==3 then browser1 = "msedge.exe" end
if indd1==4 then browser1 = "opera.exe" end
if indd1==5 then browser1 = "iexplore.exe" end
if indd1==6 then browser1 = "Maxthon.exe" end
if indd1==7 then browser1 = "palemoon.exe" end
end
function crtLabel(cpt,idx,idx2,ops)
titleLbl=createLabel(srcTbl.Scrbx1)
if nextLeft==270*DPIMultiplier then nextLeft=10*DPIMultiplier nextTop=tonumber(nextTop) + 20*DPIMultiplier end
titleLbl.Left=tonumber(nextLeft)
nextLeft = tonumber(nextLeft) + 65*DPIMultiplier
--print(nextLeft)
titleLbl.Top=nextTop
titleLbl.Caption="Page #"..idx
titleLbl.Font.Size=10
titleLbl.height=20*DPIMultiplier
titleLbl.width=660*DPIMultiplier
titleLbl.Tag=650
if ops==3 then
titleLbl.AutoSize=false
titleLbl.width=280*DPIMultiplier
titleLbl.alignment=2*DPIMultiplier
titleLbl.Caption=cpt
titleLbl.height=24*DPIMultiplier
titleLbl.Top=5*DPIMultiplier
titleLbl.OptimalFill=true
nextTop=40*DPIMultiplier
pages22=0
end
if ops==1 then
titleLbl.Font.Color=16711680
titleLbl.Font.Style="fsBold,fsUnderline"
titleLbl.Cursor = -21
name1=srcTbl.edt1.Text
titleLbl.OnClick=function()
lnk="https://forum.cheatengine.org/search.php?search_author="..name1.."&start="..idx2
shellExecute(browser1,lnk) end
end
if ops==2 then
titleLbl.Font.Color=16711680
titleLbl.Font.Style="fsBold,fsUnderline"
titleLbl.Cursor = -21
name1=srcTbl.edt1.Text
titleLbl.OnClick=function()
lnk="https://forum.cheatengine.org/search.php?search_author="..name1.."&start="..idx2
shellExecute(browser1,lnk) end
end
end
function urlFormats(str)
str = string.gsub (str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
return str
end
function search()
pgIdx = 0
pfind1 = 0
pfind2 = 0
if srcTbl.edt1.Text=="" then
showMessage("Type a username in the box and try again!")
else
url1 = LoadUrl("https://forum.cheatengine.org/search.php?search_author="..urlFormats(srcTbl.edt1.Text).."&start="..pages22)
if url1 then
url2 = (url1):gsub("&","&")
sl1=createStringList()
sl1.Text=url1
cnt1 = strings_getCount(sl1)-1
for i=0, strings_getCount(sl1)-1 do
art1=(sl1[i]):gsub(" ", ""):gsub(" ", ""):gsub(" ", ""):gsub(" ", ""):gsub(" ", "")
art22 = (art1):match([[class="maintitle">(.*)</span><br]])
if art22~=nil then
srcTbl.lbl2.caption=art22
pfind2 = tonumber((art22):match([[found (.*) matches]]))
end
art23,art24 = (art1):match([[class="name"><b><a href="(.*)">(.*)</a></b></span><br />]])
if art23~=nil then
srcTbl.lbl3.caption="Visit Profile: "..art24
srcTbl.lbl3.Font.Color=16711680
srcTbl.lbl3.Font.Style="fsBold,fsUnderline"
srcTbl.lbl3.Cursor = -21
lnk11=(art23):gsub("amp;","")
--print(art23.." - "..art24)
srcTbl.lbl3.OnClick=function()
shellExecute(browser1,[[https://forum.cheatengine.org/]]..lnk11)
end
end
art2 = (art1):match([[nav">(.*)</b></span]]) --sub(1,17)
--print(art2)
if art2~=nil then
pfind = (art2):gsub([[<b>]],""):gsub([[</b>]],"")
pfind1 = tonumber((pfind):match([[of (.*)]]))
crtLabel(pfind,0,0,3)
end
end
sl1.Destroy()
nextLeft = 10*DPIMultiplier
pages22=0
for i=1, tonumber(pfind1) do
if i==tonumber(pfind1) then
pf2 = math.floor(tonumber(pfind2) / 15)
pages22=pf2*15
crtLabel("Pages",i,pages22-15,1)
else
crtLabel("Pages",i,pages22,2)
pages22=i * 15
end
end
end
end
end
srcTbl.btn1.OnClick=function()
pageClear()
pages22 = 0
search()
end
|
Description: |
|
Filesize: |
13.05 KB |
Viewed: |
8846 Time(s) |

|
_________________
Last edited by AylinCE on Mon Mar 20, 2023 1:55 pm; edited 5 times in total |
|
Back to top |
|
 |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 205
|
Posted: Sat Mar 11, 2023 6:11 am Post subject: |
|
|
Good work. It would be nice to add a combobox with the number of available pages and go to the desired page with the combobox. And for me, it's better not to open the link when you click the Next/Prev page buttons, but add +1/-1 to the page number in Edit box with number of pages and when you click the "Open the search result in Browser" button, open the link in the browser on the displayed page in Edit box.
It would be nice to add labels that display, total number of posts and the total number of available pages.
|
|
Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Sat Mar 11, 2023 12:49 pm Post subject: |
|
|
Replace the existing execution code with the code below.
On the first page that opens (search button), the length of the page appears at the bottom of the page.
Type the page you want to go to in the box below and jump to that page.
And optional browser selection (Ignore the default browser).
Edit it ( shellExecute("scanner.exe", shellExecute(link)).
I'm not at the PC, I edited it on the phone.
Check the errors.
(Or add an edit and a button to the form and edit the code below as a reference.
When I'm at the PC, I'll edit the usable page length and extensive usage. )
Code: |
local pages1 = 1
local pages2 = 0
srcTbl.edt2.text=pages1
srcTbl.btn2.visible = false
srcTbl.btn3.caption="Jump to Page"
function search()
if srcTbl.edt1.Text=="" then
showMessage("Type a username in the box and try again!")
else
url = "https://forum.cheatengine.org/search.php?search_author="..srcTbl.edt1.Text.."&start="..pages2
shellExecute("chrome.exe", shellExecute(url))
end
end
srcTbl.btn1.OnClick=function()
---pages1 = 1
pages2 = 1
srcTbl.edt2.text=1
search()
end
srcTbl.btn3.OnClick=function()
---pages1 = srcTbl.edt2.text
pages2 = tonumber(srcTbl.edt2.text) * 15 - 1
search()
end |
_________________
|
|
Back to top |
|
 |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 205
|
Posted: Mon Mar 13, 2023 5:14 am Post subject: |
|
|
I can customize this code to suit my needs.
AylinCE wrote: | I'll edit the usable page length. |
What do you mean?
|
|
Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Mon Mar 13, 2023 5:32 am Post subject: |
|
|
For example; In your case the maximum page length is 11.
I can read this from "source" and put (11) clickable tags assigned to each page on the Trainer.
Thus, after clicking the "Search" button, all available pages will be listed.
The problem is; I'm still out of town and I can complete it when I get home in 4-5 days.
_________________
|
|
Back to top |
|
 |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 205
|
Posted: Mon Mar 13, 2023 6:33 am Post subject: |
|
|
AylinCE wrote: | For example; In your case the maximum page length is 11.
I can read this from "source" and put (11) clickable tags assigned to each page on the Trainer.
Thus, after clicking the "Search" button, all available pages will be listed | It would be nice.
AylinCE wrote: | The problem is; I'm still out of town and I can complete it when I get home in 4-5 days. |
It's not urgent, I can wait.
|
|
Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Fri Mar 17, 2023 4:26 pm Post subject: |
|
|
Updated: V2 ..
_________________
|
|
Back to top |
|
 |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 205
|
Posted: Sat Mar 18, 2023 5:35 pm Post subject: |
|
|
AylinCE wrote: | Updated: V2 .. |
Everything works as it should, only when I add a user: ++METHOS, the search does not find him.
Code: | srcTbl.edt1.Items.Add("++METHOS") |
|
|
Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Sat Mar 18, 2023 7:25 pm Post subject: |
|
|
Razi wrote: | Everything works as it should, only when I add a user: ++METHOS, the search does not find him.
Code: | srcTbl.edt1.Items.Add("++METHOS") |
|
Updated Code:
Added Url text format.
Code: | function urlFormats(str)
str = string.gsub (str, "([^0-9a-zA-Z !'()*._~-])", -- locale independent
function (c) return string.format ("%%%02X", string.byte(c)) end)
str = string.gsub (str, " ", "+")
return str
end
print(urlFormats("++METHOS")) --> "%2B%2BMETHOS"
print(urlFormats("Dark Byte")) --> "Dark+Byte" |
Description: |
|
Filesize: |
30.61 KB |
Viewed: |
8786 Time(s) |

|
_________________
|
|
Back to top |
|
 |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 205
|
Posted: Sun Mar 19, 2023 11:04 am Post subject: |
|
|
Need also to make the search work, change this line: name1=srcTbl.edt1.Text , to this one: name1=urlFormats(srcTbl.edt1.Text)
Can you also add a function so that when we click on, for example, label: Page #2, the text of the label: "Page 1 of 165" changes to "Page 2 of 165"?
I have added the code to titleLbl.OnClick=function(): srcTbl.Scrbx1.page_of_label.Caption= "Page "..idx but it only changes like this: from "Page 1 of 165" to "Page 2".
Found two errors.
1) For user: "Recifense" the search only shows 105 posts and 7 pages, but the forum shows over 3300 posts and 226 pages.
2) And when I click on label: "Page #7" of "Recifense" Pages, forum url opens on the Page 8, not on Page 7.
|
|
Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Sun Mar 19, 2023 12:52 pm Post subject: |
|
|
Of course I can list all pages with post titles and comment order (1/165.. 2/165).
But this happens with the help of a timer that enters and reads the page listing every 15 posts one by one.
This allows you to wait for the list at more intervals.
Are you sure you want this?
In addition, some users can delete posts, questions and answers that they deem unnecessary.
Even if it doesn't affect the number of interactions available (Total number of posts), the site's list gives us the final count for its remaining posts.
So if the user's total number of posts (numbers under the Profile picture) is more than the site list, it shows us that the user has done a cleanup.
And one bad thing about this code that I've published is that these changes can be exposed, I guess.
I wrote a code to list all reputations within the forum family.
I ended the study after more than 3 million people and the first 3000 people.
It looked like it would take too much time.
I would like an answer from @Dark Byte though;
Since "u=2" is @DB, who was "u=1"?
_________________
|
|
Back to top |
|
 |
Razi Expert Cheater
Reputation: 1
Joined: 17 Jan 2018 Posts: 205
|
Posted: Mon Mar 20, 2023 9:17 am Post subject: |
|
|
AylinCE wrote: | Of course I can list all pages with post titles and comment order (1/165.. 2/165).
But this happens with the help of a timer that enters and reads the page listing every 15 posts one by one.
This allows you to wait for the list at more intervals.
Are you sure you want this? |
No, I don't need it.
AylinCE wrote: | In addition, some users can delete posts, questions and answers that they deem unnecessary.
Even if it doesn't affect the number of interactions available (Total number of posts), the site's list gives us the final count for its remaining posts.
So if the user's total number of posts (numbers under the Profile picture) is more than the site list, it shows us that the user has done a cleanup. |
You are right, it shows that the topic or post does not exist.
AylinCE wrote: | And one bad thing about this code that I've published is that these changes can be exposed, I guess. |
Personally, I don't think this is a bad thing. And I do not see anything secret in the fact that the user deleted his posts.
I made the "Page 1 of 165" label always show the total number of pages.
Just need to after this line:if ops==3 then, add this line:
Code: | if idx2 == 0 then titleLbl.Name = 'page_of' end |
And after this line: shellExecute(browser1,lnk) , need to add this lines:
Code: | local totPages = string.match(srcTbl.Scrbx1.page_of.Caption, '%d+',-5)
srcTbl.Scrbx1.page_of.Caption = "Page "..idx..' of '..totPages end |
Thanks for the help
|
|
Back to top |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Mon Mar 20, 2023 9:33 am Post subject: |
|
|
Razi wrote: | Thanks for the help |
And me too; I would like to thank everyone who contributed to the development of a code or the idea in the same process.
And many of us are still novices.
Even the best of masters are as novice as the difference between its new update and its previous version.
_________________
|
|
Back to top |
|
 |
Dark Byte Site Admin
Reputation: 467
Joined: 09 May 2003 Posts: 25704 Location: The netherlands
|
Posted: Mon Mar 20, 2023 10:52 am Post subject: |
|
|
hardcoded pixel positions....
improved:
https://pastebin.com/R0w15nsa
_________________
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 |
|
 |
AylinCE Grandmaster Cheater Supreme
Reputation: 35
Joined: 16 Feb 2017 Posts: 1476
|
Posted: Mon Mar 20, 2023 2:05 pm Post subject: |
|
|
I understand ..
approach the subject; Like supporting the development of those trying to access the archives.
Thanks @DB
(And I'm still wondering who "u=1" was. PS: If you don't want everyone to know, please message me.)
_________________
|
|
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
|
|