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 


Cheat Engine Forum Index
PostGo back to topic
AylinCE
Grandmaster Cheater Supreme
Reputation: 37
Joined: 16 Feb 2017
Posts: 1516

PostPosted: Thu Feb 13, 2020 4:29 am    Post subject: Take control of your trainer + Register VIP members ..

The following topic is worth adding to the archive.
We covered 2 topics and we will do 3 parts coding.

Subject (1); Keep your trainer control.
Subject (2); Restrict VIP Trainer for use other than VIP members.

===================================
VERSION: V2
===================================
If you have a Google account, it is recommended to create a "Google Docs" document. (Pic: Ek1.png)
(Google Docs: https://docs.google.com/document/u/0/ )

(Note: Links in the codes are examples)

Document setting; (Pic: Ek2.png)
1) Identify the document title.
2) Sharing setting; Set to "Anyone with the link can view. No sign-in required."
3) Write a Version number. (Note: only numbers, do not use letters and special characters)

For this, we will use Computer "UUID".
See; here is the information provided by @Corroder.
https://forum.cheatengine.org/viewtopic.php?p=5758213#5758213

URL generation:
Copy the link of the Google Docs page you created.
You will have a link like this:

https://docs.google.com/document/d/131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc/edit

Copy and replace the marked places in the link below:
https://docs.google.com/document/d/131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc/edit

https://docs.google.com/document/d/18sPd1YKsPttxsWW1dmq_HWAWotHIHvGZ1pOlmn/export?format=txt
==============================
Here is Trainer.CT to see the current code in action


( See end of topic. )

As an example, I gave view and editing permission to the Google Docs page I created.
Register your own vip code there, write a name on it and run the Trainer again.
Delete a number from your own vip code on the Google Docs page, Trainer will see you as an unregistered member (ban a registered VIP member!)
Change the version number on the Google Docs page and Trainer will warn you about the version. (To disable the current Trainer. Check the Current Example page, someone else may have tried it and changed it Wink )

====================================
Below is all the code used in the Example Trainer:

Code:
----------------------------- Conrol --------------------
UDF1.CELabel2.Visible=false
UDF1.CEEdit1.visible=false
UDF1.CEButton5.visible=false
UDF1.CEGroupBox1.Visible=false
UDF1.CEGroupBox2.Visible=true
UDF1.CELabel2.caption="YourCode"
UDF1.CELabel3.caption="WELCOME!"
UDF1.CELabel1.caption="-:-Please wait-:-\n-:-Checking version!-:-"
UDF1.CEEdit1.Text=""
----------------------------- Check Timer ----------------

if VipTimer1 then VipTimer1.Destroy() VipTimer1=nil end
VipTimer1=createTimer() VipTimer1.Interval=1000 VipTimer1.Enabled=false

----------------------------- Check local -----------------
local vipTbl = { }
vipTbl.verCheck=false
vipTbl.vipCheck=false
vipTbl.Version="11223344" --version (string)
vipTbl.gameName="Cheat Engine Games1"
vipTbl.UserName=""
vipTbl.UserCode=0
vipTbl.Index=0

----------------------------- Load UUID -----------------
function WriteVipCode()
VipTimer1.Enabled=false
local function all_trim(s)
  return s:match"^%s*(.*)":match"(.-)%s*$"
end
local fh = assert(io.popen'wmic csproduct get uuid')
result = fh:read'*a'
fh:close()
result = string.gsub(result,'UUID',"")
result = all_trim(result)
rst = string.gsub(result,'%a',''):gsub('%p','')
UDF1.CEEdit1.Text=(rst)
vipTbl.UserCode=rst
VipTimer1.Enabled=true
end

------------------------------ Load and Check List ------
function loadVipList()

end

------------------------------- Resul Check --------------
VipTimer1.OnTimer=function()

end

VipTimer1.Enabled=true
----------------------------------------------------
UDF1.Show()

UDF1.CEButton5.OnClick=function()
writeToClipboard(vipTbl.UserCode)
sleep(200)
showMessage("Copy Success!")
end


As long as you have access to Google Docs;
You will determine the control of the trainer and the usage restriction.

I think a lot of people use this script.
Click the thumb icon for +1 if you believe the code is helpful to you. Wink

---------------------------------------
Knowing that there is only interaction and in terms of respect for the effort;
Give a reputation and message me to get sample Trainer and current code.
---------------------------------------

Here is a sample code!
Copy the code, paste it in CE >> Table >> Show Cheat Table Lua Script.
Just create a form (UDF1 form) to try it out, then make available the "UDF1.Hide()" and "startMyTrainer()" (under VipTimer1.OnTimer=function().) lines of code.
Click the "Execute" button and use it.


-- check save user name and key link: Since this example is the record, I left the permissions on as "Editable".
-- You, in your own list document, for the necessary registration and sharing permission; Confirm as "Anyone with the link".
-- https://docs.google.com/document/d/131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc


Code:
--############################################################################--
--############################################################################--
--############################################################################--

function startCheckForm()
if Ufrm1 then Ufrm1.Destroy() Ufrm1=nil end
DP1=getScreenDPI()/96

Ufrm1=createForm() or {}
Ufrm1.height=170*DP1 Ufrm1.width=400*DP1 Ufrm1.left=261*DP1 Ufrm1.top=98*DP1
Ufrm1.PopupMode=0 Ufrm1.caption="ByAylinCE  Trainers"
Ufrm1.Position="poDesktopCenter" Ufrm1.BorderStyle="bsNone"
Ufrm1.setLayeredAttributes(0x000100, 255, LWA_COLORKEY | LWA_ALPHA )
Ufrm1.Color=0x000100
Ufrm1.ShowInTaskBar="stAlways"
-------------------------
----------------------- Ufrm1.Upnl1 ----- 
Ufrm1.Upnl1=createPanel(Ufrm1)
Ufrm1.Upnl1.AutoSize=false
Ufrm1.Upnl1.height=36*DP1 Ufrm1.Upnl1.width=390*DP1 Ufrm1.Upnl1.left=5*DP1 Ufrm1.Upnl1.top=5*DP1
Ufrm1.Upnl1.Cursor= -22
Ufrm1.Upnl1.Font.Style="fsBold" Ufrm1.Upnl1.Font.Size=14*DP1
Ufrm1.Upnl1.OnMouseDown = function() Ufrm1.DragNow() end
-----------------------
----------------------- Ufrm1.Upnl2 ----- 
Ufrm1.Upnl2=createPanel(Ufrm1)
Ufrm1.Upnl2.AutoSize=false
Ufrm1.Upnl2.height=80*DP1 Ufrm1.Upnl2.width=390*DP1 Ufrm1.Upnl2.left=5*DP1 Ufrm1.Upnl2.top=45*DP1
Ufrm1.Upnl2.Font.Style="fsBold" Ufrm1.Upnl2.Font.Size=0*DP1
-----------------------
----------------------- Ufrm1.Upnl3 ----- 
Ufrm1.Upnl3=createPanel(Ufrm1)
Ufrm1.Upnl3.AutoSize=false
Ufrm1.Upnl3.height=36*DP1 Ufrm1.Upnl3.width=390*DP1 Ufrm1.Upnl3.left=5*DP1 Ufrm1.Upnl3.top=130*DP1
Ufrm1.Upnl3.Font.Style="fsBold" Ufrm1.Upnl3.Font.Size=0*DP1
-----------------------
----------------------- Ufrm1.Ubtn1 ----- 
Ufrm1.Ubtn1=createButton(Ufrm1.Upnl1)
Ufrm1.Ubtn1.AutoSize=false
Ufrm1.Ubtn1.height=26*DP1 Ufrm1.Ubtn1.width=30*DP1 Ufrm1.Ubtn1.left=5*DP1 Ufrm1.Ubtn1.top=5*DP1
Ufrm1.Ubtn1.caption="--"
Ufrm1.Ubtn1.Font.Style="fsBold" Ufrm1.Ubtn1.Font.Size=14*DP1
-----------------------
----------------------- Ufrm1.Ubtn2 ----- 
Ufrm1.Ubtn2=createButton(Ufrm1.Upnl1)
Ufrm1.Ubtn2.AutoSize=false
Ufrm1.Ubtn2.height=26*DP1 Ufrm1.Ubtn2.width=30*DP1 Ufrm1.Ubtn2.left=355*DP1 Ufrm1.Ubtn2.top=5*DP1
Ufrm1.Ubtn2.caption="X"
Ufrm1.Ubtn2.Font.Style="fsBold" Ufrm1.Ubtn2.Font.Size=14*DP1
-----------------------
----------------------- Ufrm1.Ubtn3 ----- 
Ufrm1.Ubtn3=createButton(Ufrm1.Upnl3)
Ufrm1.Ubtn3.AutoSize=false
Ufrm1.Ubtn3.height=26*DP1 Ufrm1.Ubtn3.width=100*DP1 Ufrm1.Ubtn3.left=285*DP1 Ufrm1.Ubtn3.top=5*DP1
Ufrm1.Ubtn3.Font.Style="fsBold" Ufrm1.Ubtn3.Font.Size=0*DP1
-----------------------
----------------------- Ufrm1.Uedt1 ----- 
Ufrm1.Uedt1=createEdit(Ufrm1.Upnl3)
Ufrm1.Uedt1.AutoSize=false
Ufrm1.Uedt1.height=24*DP1 Ufrm1.Uedt1.width=220*DP1 Ufrm1.Uedt1.left=62*DP1 Ufrm1.Uedt1.top=6*DP1
Ufrm1.Uedt1.text=""
Ufrm1.Uedt1.Font.Style="fsBold" Ufrm1.Uedt1.Font.Size=0*DP1
-----------------------
----------------------- Ufrm1.Ulbl1 ----- 
Ufrm1.Ulbl1=createLabel(Ufrm1.Upnl3)
Ufrm1.Ulbl1.AutoSize=false
Ufrm1.Ulbl1.height=20*DP1 Ufrm1.Ulbl1.width=52*DP1 Ufrm1.Ulbl1.left=5*DP1 Ufrm1.Ulbl1.top=8*DP1
Ufrm1.Ulbl1.OptimalFill=true
Ufrm1.Ulbl1.Font.Style="fsBold" Ufrm1.Ulbl1.Font.Size=-15*DP1
-----------------------
----------------------- Ufrm1.Ulbl2 ----- 
Ufrm1.Ulbl2=createLabel(Ufrm1.Upnl2)
Ufrm1.Ulbl2.AutoSize=false
Ufrm1.Ulbl2.height=65*DP1 Ufrm1.Ulbl2.width=380*DP1 Ufrm1.Ulbl2.left=2*DP1 Ufrm1.Ulbl2.top=8*DP1
Ufrm1.Ulbl2.alignment="taCenter" Ufrm1.Ulbl2.OptimalFill=true
Ufrm1.Ulbl2.Font.Style="fsBold" Ufrm1.Ulbl2.Font.Size=-23*DP1
-----------------------
--############################################################################--
--############################################################################--
--############################################################################--

function generator(length,episode)
  local capital_letters = {"A", "E", "I", "U", "W", "Q", "X"}
  local low_letters = {"B", "C", "D", "F", "G", "H", "J", "K", "L", "M", "N", "P", "R", "S", "T", "V", "Y", "Z"}
  local numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
  math.randomseed(os.time())
  local pass = ""
  local choice = 0
  local nextPass = ""

local function epsd()
  for _ = 1, length do
    choice = math.random(3)

    if choice == 1 then
      pass = pass .. capital_letters[math.random(#capital_letters)]
    elseif choice == 2 then
      pass = pass .. low_letters[math.random(#low_letters)]
    else
      pass = pass .. numbers[math.random(#numbers)]
    end
  end
  return pass
end
 if episode>1 then
  for i = 1, episode do
   pass = ""
   nextPass = nextPass .. "-" .. epsd()
  end
 else
  nextPass = epsd()
 end
 return nextPass
end


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

if VipTimer1 then VipTimer1.Destroy() VipTimer1=nil end
VipTimer1=createTimer() VipTimer1.Interval=1000 VipTimer1.Enabled=false

local userKey1 = ""
--############################################################################--

settingsKey1=getSettings('keys1')

function SaveKey(nextKey)
settingsKey1.Value['key1'] = nextKey
--print(nextKey)
end

function LoadKey()
loadKey1 = settingsKey1.Value['key1']
  if loadKey1=="" then
   loadKey1 = generator(10,1)
   SaveKey(loadKey1)
   userKey1 = loadKey1
   else
   userKey1 = loadKey1
  end
  VipTimer1.Enabled=true
end

LoadKey()
--print("loadKey1: "..loadKey1)
local reg = [[%WINDIR%/System32/reg.exe ]]
MyId = io.popen(reg..[[ query HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\SQMClient /v MachineId]])

function all_trim()
res1 = ""
 for line in MyId:lines() do
   res1 = res1.." "..line
 end
   res = (res1):match("{(.*)}") --:gsub("%a",""):gsub("-","")
   if res~=nil then
    res1 = (res):gsub("%a",""):gsub("-","")
   end
  return res1
end

userKey1 = userKey1.."-"..all_trim()

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

Ufrm1.Upnl1.Color = 0xEADE80
Ufrm1.Upnl2.Color = 0xF2EBB2
Ufrm1.Upnl3.Color = 0xEADE80
Ufrm1.Upnl3.Visible = false
Ufrm1.Upnl1.caption="Starting Trainer!"
Ufrm1.Ubtn3.caption="Copy  ID"
Ufrm1.Ulbl1.caption="Your  ID:"
Ufrm1.Ulbl2.caption="-:-Please wait-:-\n-:-Checking version!-:-"
local Version = "11223344"
local loadVers = ""
local loadIndex = 0
local myList = ""

-- Get key from url:
--https://docs.google.com/document/d/131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc/edit
--https://docs.google.com/document/d/--> 131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc <--/edit
-- key = "131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc"

function loadURL(key)
local result = ""
local url = "https://docs.google.com/document/d/"..key.."/export?format=txt"
 local http = getInternet()
 result = http.getURL(url)
 http.Destroy()
return result
end

function checkVersion()
VipTimer1.Enabled=false
myList = loadURL("131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc")
sl = createStringList()
sl.Text = myList
  for i=1, sl.Count -1 do
   loadVers = sl[1]
  end
sl.Destroy()
  if loadVers==Version then
    Ufrm1.Ulbl2.caption="The version is up to date!"
    VipTimer1.Enabled=true
  else
    Ufrm1.Ulbl2.caption="It looks like there is a new version.\nPlease contact the Admin!"
    VipTimer1.Enabled=false
  end
end

function checkUserKey()
VipTimer1.Enabled=false
Ufrm1.Ulbl2.caption="ID is being queried...\nThanks for waiting."
local res = 0
sl = createStringList()
sl.Text = myList
local username=""
  for i=1, sl.Count -1 do
   check1 = sl[i]
    if check1==userKey1 then res=1 username=sl[tonumber(i) - 1] end
  end
sl.Destroy()
  if res==1 then
    Ufrm1.Ulbl2.caption="Hello again  "..username.." \nWe wish you good games."
    VipTimer1.Enabled=true
  else
    Ufrm1.Ulbl2.caption="You are not a registered user.\nPlease click the copy button below to get the code.\nSend the code to the\nAdmin for registration application!"
    Ufrm1.Uedt1.text = userKey1
    Ufrm1.Upnl3.Visible = true
    VipTimer1.Enabled=false
  end
end
-- check save user name and key link: Since this example is the record, I left the permissions on as "Editable".
-- You, in your own list document, for the necessary registration and sharing permission; Confirm as "Anyone with the link".
-- https://docs.google.com/document/d/131YKsPttxsNH8z5lgWW1dmq_HWAWotHIHvGZ1pCoDkc

Ufrm1.Ubtn3.OnClick=function()
aatext=Ufrm1.Uedt1.text
writeToClipboard(aatext)
sleep(80)
showMessage("User ID:\n" .. aatext .. "\nCopy successful!")
sleep(180)
end
--############################################################################--
--############################################################################--
--############################################################################--

function startMyTrainer()
if VipTimer1 then VipTimer1.Destroy() VipTimer1=nil end
if Ufrm1 then Ufrm1.Destroy() Ufrm1=nil end
--your trainer name? sample: UDF1
UDF1.Show()
end

VipTimer1.OnTimer=function()
loadIndex=tonumber(loadIndex) + 1
  if loadIndex==3 then checkVersion() end
  if loadIndex==6 then checkUserKey() end
  if loadIndex==10 then
    --startMyTrainer()
    Ufrm1.Ulbl2.caption="If you've come this far,\neverything went well.\nYou can now start the main Trainer!"
    VipTimer1.Enabled=false
  end
end
end

--hide your Trainer.. Start check user form!
--your trainer name? sample: UDF1

--UDF1.Hide()
startCheckForm()


( To use it, put the code at the beginning of the Trainer lua code.
And yes, you can customize the test form in the example. )


See you again with different ideas.
Enjoy it.
_________________
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


Last edited by AylinCE on Thu Aug 17, 2023 2:25 pm; edited 3 times in total
Back to top
View user's profile Send private message Visit poster's website MSN Messenger
Post reviews:   Approve 1
Author Review
Oxijen
Review: Approve
Post reference:
ReviewPosted: Sun May 31, 2020 8:10 am

Thanks man!!
Back to top
View user's profile Send private message
Display:  
Cheat Engine Forum Index


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites