Difference between revisions of "Lua"

From Cheat Engine
Jump to navigation Jump to search
(Screen)
 
(39 intermediate revisions by 14 users not shown)
Line 1: Line 1:
Cheat Engine comes with an extensive set of Lua functions you can use inside cheattables, trainers and standalone scripts.
+
<!-- Updated to 6.7 celua.text TheyCallMeTim13 -->
 +
[[Category:Lua]]
 +
Cheat Engine comes with an extensive set of Lua functions you can use inside cheat tables, trainers and standalone scripts.
  
  
== Functions ==
+
= Variables =
  
* [[readBytes]]: Returns the bytes at the given address. If ReturnAsTable is true it will return a table instead of multiple bytes
+
== Globals ==
* [[writeBytes]]: Write the given bytes to the given address from a table
+
* [[Lua:TrainerOrigin|TrainerOrigin]]: A variable that contains the path of the trainer that launched cheat engine (Only set when launched as a trainer)
* [[readBytesLocal]]: See readBytes but then it's for Cheat engine's memory
+
* [[Lua:process|process]]: A variable that contains the main modulename of the currently opened process
* [[writeBytesLocal]]: See writeBytes but then it's for Cheat Engine's memory
+
* [[Lua:MainForm|MainForm]]: The main Cheat Engine gui
* [[readInteger]]: Reads a integer from the specified address
+
* [[Lua:AddressList|AddressList]]: The address list of the main Cheat Engine gui
* [[readFloat]]: Reads a single precision floating point value from the specified address
 
* [[readDouble]]: Reads a double precision floating point value from the specified address
 
* [[readString]]: Reads a string from memory until it hits a 0-terminator. maxlength is just so you won't freeze for too long
 
* [[writeInteger]]: Writes an integer to the specified address
 
* [[writeFloat]]: Writes a single precision floating point to the specified address
 
* [[writeDouble]]: Writes a double precision floating point to the specified address
 
* [[writeString]]: Write a string to the specified address
 
* [[getAddress]]: Returns the address of a symbol. Can be a modulename or an export
 
* [[reinitializeSymbolhandler]]: Reinitializes the symbolhandler. E.g when new modules have been loaded
 
* [[generateAPIHookScript]]: Generates an auto assembler script which will hook the given address when executed
 
* [[autoAssemble]]: Runs the auto assembler with the given text
 
* [[showMessage]]: Shows a messagebox with the given text
 
* [[messageDialog]]: Pops up a messagebox
 
* [[sleep]]: Pauses for the number of specified milliseconds
 
* [[getOpenedProcessID]]: Returns the currently opened process
 
* [[getProcessIDFromProcessName]]: Returns a processid
 
* [[openProcess]]: Causes cheat engine to open the given processname or id
 
* [[getForegroundProcess]]: Returns the processid of the current foreground window
 
* [[pause]]: Pauses the current opened process
 
* [[unpause]]: Resumes the current opened process
 
* [[getPixel]]: Returns the rgb value of the pixel at the specific screen coordinate
 
* [[getMousePos]]: Returns the x,y coordinates of the mouse
 
* [[setMousePos]]: Sets the mouse position
 
* [[isKeyPressed]]: Returns true if the specified key is currently pressed
 
* [[keyDown]]: Causes the key to go into down state
 
* [[keyUp]]: Causes the key to go up
 
* [[doKeyPress]]: Simulates a key press
 
* [[shellExecute]]: Executes a given command
 
* [[speedhack_setSpeed]]: Enables the speedhack if it was not active yet and sets the given speed
 
* [[injectDll]]: Injects a dll
 
* [[getCheatEngineDir]]: Returns the folder Cheat Engine(Or the trainer) is located at
 
* [[allocateSharedMemory]]: Creates/reuses a shared memory object.
 
* [[beep]]: Plays the fabulous beep/ping sound!
 
* [[xmplayer_playXM]]: Plays the given filename using the xmplayer
 
* [[xmplayer_pause]]: Pauses the current xm audio file
 
* [[xmplayer_resume]]: Resumes the current xm audio file
 
* [[xmplayer_stop]]: Stops the current xm audio file
 
* [[xmplayer_isPlaying]]: Returns true if there is currenty an xm audio file being played
 
* [[writeRegionToFile]]: Writes the given region to a file. Returns the number of bytes written
 
* [[readRegionFromFile]]: Writes the given file to a specific address
 
* [[resetLuaState]]: This will create a new lua state that will be used.
 
* [[registerSymbol]]: Assign the specified symbolname to an address
 
* [[unregisterSymbol]]: Remove the name from the address
 
* [[getNameFromAddress]]: Returns the given address in string form, returning the symbol representation if possible
 
* [[inModule]]: Returns true if the given address is inside a module
 
* [[inSystemModule]]: Returns true if the given address is inside a system module
 
* [[getCommonModuleList]]: Returns the commonModuleList StringList object
 
* [[cheatEngineIs64Bit]]: Returns true if CE is 64-bit, false if 32-bit
 
* [[targetIs64Bit]]: Returns true if the target process is 64-bit, false if 32-bit
 
* [[registerCustomTypeLua]]: Registers a Custom type based on lua functions
 
* [[registerCustomTypeAutoAssembler]]: Registers a custom type based on an auto assembler script
 
* [[onAutoGuess]]: Registers an function to be called whenever autoguess is used to predict a variable type
 
* [[debugger_onBreakpoint]]: Called by CE when a breakpoint hits (userdefined)
 
* [[createProcess]]: Creates a process with or without debugging
 
* [[debugProcess]]: Debugs the currently attached process
 
* [[debug_setBreakpoint]]: Sets a breakpoint of a specific size at the given address
 
* [[debug_removeBreakpoint]]: Removes a breakpoint
 
* [[debug_continueFromBreakpoint]]: Continues the debugger when it's halted on a breakpoint
 
* [[debug_setLastBranchRecording]]: Tells the kernelmode debugger to record the last few branches before the breakpoint got hit
 
* [[debug_getMaxLastBranchRecord]]: Returns the maximum number of branch records this cpu supports
 
* [[debug_getLastBranchRecord]]: Returns the value of the Last Branch Record at the given index (when handling a breakpoint)
 
* [[closeCE]]: Closes ce
 
* [[hideAllCEWindows]]: Makes all normal ce windows invisible (e.g trainer table)
 
* [[unhideMainCEwindow]]: Shows the main cheat engine window
 
* [[getAutoAttachList]]: Returns the AutoAttach StringList object
 
* [[supportCheatEngine]]: Will show an advertising window which will help keep the development of Cheat Engine going.
 
* [[fuckCheatEngine]]: Removes the ad window if it was showing
 
* [[onOpenProcess]]: Called by CE when it opens a process (userdefined)
 
* [[debugger_onModuleLoad]]: Called by CE when the windows debugger interface loads a module (userdefined)
 
* [[disassemble]]: Disassembles the given address and returns a string in the format of "address - bytes - opcode  extra"
 
* [[splitDisassembledString]]: Returns 4 strings. The address, bytes, opcode and extra field
 
* [[getInstructionSize]]: Returns the size of an instruction
 
* [[getPreviousOpcode]]: Returns the address of the previous opcode (guess)
 
* [[dbk_initialize]]: Loads the DBK driver into memory if possible
 
* [[dbk_useKernelmodeOpenProcess]]: Switches the internal pointer of the OpenProcess api to dbk_OpenProcess
 
* [[dbk_useKernelmodeProcessMemoryAccess]]: Switches the internal pointer to the ReadProcessMemory and WriteProcessMemory apis to dbk_ReadProcessMemory and dbk_WriteProcessMemory
 
* [[dbk_useKernelmodeQueryMemoryRegions]]: Switches the internal pointer to the QueryVirtualMemory api to dbk_QueryVirtualMemory
 
* [[dbk_getPEProcess]]: Returns the pointer of the EProcess structure of the selected processid
 
* [[dbk_getPEThread]]: Gets the pointer to the EThread structure of a threadid
 
* [[dbk_readMSR]]: Reads the msr using the dbk driver
 
* [[dbk_writeMSR]]: Writes the msr using the dbk driver
 
* [[dbk_executeKernelMemory]]: Executes a routine from kernelmode (e.g a routine written there with auto assembler)
 
* [[dbvm_initialize]]: Initializes the dbvm functions
 
* [[dbvm_readMSR]]: Reads the msr using dbvm (bypasses the driver)
 
* [[dbvm_writeMSR]]: Writes the msr using dbvm (bypasses the driver)
 
* [[onAPIPointerChange]]: Registers a callback when an api pointer is changed
 
* [[setAPIPointer]]: Sets the pointer of the given api to the given address
 
* [[inheritsFromObject]]: Returns true if given any class
 
* [[inheritsFromComponent]]: Returns true if the given object inherits from the Component class
 
* [[inheritsFromControl]]: Returns true if the given object inherits from the Control class
 
* [[inheritsFromWinControl]]: Returns true if the given object inherits from the WinControl class
 
* [[getFormCount]]: Returns the total number of forms assigned to the main CE application
 
* [[getForm]]: Returns the form at the specific index
 
* [[getMemoryViewForm]]: Returns the first Memoryview form class object
 
* [[getMainForm]]: Returns the first Mainform class object
 
* [[getAddressList]]: Returns the cheat table addresslist object
 
* [[getFreezeTimer]]: Returns the Timer object responsible for freezing values
 
* [[getUpdateTimer]]: Returns the Timer object responsible for updating the value list
 
* [[AOBScan]]: Scans the currently opened process and returns a StringList object containing all the results
 
* [[getCurrentMemscan]]: Returns the currently active scan session as a MemScan object
 
  
 +
== Variables ==
 +
* [[Lua:Debug_Variables|Debug Variables]]
 +
** EFLAGS
 +
** '''32/64-bit''': EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, EIP
 +
** '''64-bit only''': RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, RIP, R8, R9, R10, R11, R12, R13, R14, R15 : The value of the register
  
Besides these functions Cheat Engine also implements some classes
+
= Functions =
  
 +
== Cheat table ==
 +
These functions help manage the cheat table.
  
== Classes ==
+
* [[Lua:getAddressList|getAddressList]]: Returns the cheat table [[Lua:Class:Addresslist|Addresslist]] object
 +
* [[Lua:findTableFile|findTableFile]]: Returns a [[Lua:Class:TableFile|TableFile]] stored in the cheat table
 +
* [[Lua:createTableFile|createTableFile]]: Add a new file to a cheat table
 +
* [[Lua:loadTable|loadTable]]: Loads a ".ct" or ".cetrainer" file or stream
 +
* [[Lua:saveTable|saveTable]]: Saves the current table
  
* [[Addresslist]]: The addresslist class is a container for memory records
+
== Trainers ==
* [[Brush]]: The brush class is part of the Canvas object. It's used to fill surfaces
+
* [[Lua:registerEXETrainerFeature|registerEXETrainerFeature]]: Adds a new feature to the exe trainer generator window, and calls your function when the user builds an .exe trainer
* [[Button]]: The button class is a visual component in the shape of a button.
+
* [[Lua:unregisterEXETrainerFeature|unregisterEXETrainerFeature]]: Unregisters the trainer feature
* [[ButtonControl]]: Common ancestor of several button like objects.
 
* [[Canvas]]: The canvas class is a graphical class. It allows you do draw lines, pictures, and text on top of other object. Usually used in onPaint events and other graphical events
 
* [[CheatComponent]]: The cheatcomponent class is the component used in Cheat Engine 5.x trainers
 
* [[CheckBox]]: The Checkbox is a visual component that lets the user click it and change state between checked, unchecked, and if possible, grayed
 
* [[Component]] : Base class for all components that need owner-owned functionality.
 
* [[Control]] : Base class for visible controls.
 
* [[Collection]]: The Collection class is an abstract class that the ListColumns class implements (And perhaps other classes as well)
 
* [[CollectionItem]]:  Basic object that is managed by a Collection class
 
* [[ComboBox]]: The Combobox is like an edit field with a ListBox attached to it
 
* [[CustomControl]]: Base class for windowed controls which paint themselves
 
* [[Disassemblerview]]: The visual disassembler used in the memory view window
 
* [[Edit]]: The Edit class is a visual component that lets the user type in data (Use control_getCaption to get the user input)
 
* [[FileStream]]: The FileStream class is a Stream class that is linked to an open file on disk
 
* [[Font]]: Class that defines a font
 
* [[Form]]: Class that defines a window
 
* [[FoundList]]: The foundlist is an companion class to MemScan. It opens the current memscan's result file and provides an interface for reading out the addresses
 
* [[GenericHotkey]]: Lets you register hotkeys to Cheat Engine's internal hotkey handler
 
* [[Graphic]]: Base class for dealing with Graphic images (Abstract)
 
* [[GraphicControl]]: Class that supports simple lightweight controls that do not need the ability to accept keyboard input or contain other controls.
 
* [[GroupBox]]: The groupbox class is like a Panel, but then has a header on top
 
* [[Hexadecimalview]]: The visual hexadecimal object used on the memory view window
 
* [[Image]]: The Image class is a visual component that lets you show an image
 
* [[Label]]: The Label class is a visual component that lets you display text
 
* [[ListBox]]: The listbox class is a visual component with a list of selectable strings
 
* [[ListColumn]]: The listcolumn class is an implemented CollectionItem class which is used by the ListColumns class of the listview class
 
* [[ListColumns]]: The ListColumns class contains the Column class objects of a ListView object
 
* [[ListItem]]: The ListItem class object is an entry in a ListView
 
* [[ListItems]]: The listItems class is a container for the ListItem class objects of a Listview
 
* [[Listview]]: The listview class lets you have a listbox like component with resizable columns
 
* [[MainMenu]]: The menu at the top of a form
 
* [[Memo]]: The Memo class is a multiline edit field
 
* [[MemScan]]: The memscan class is the memory scanner of Cheat engine
 
* [[Menu]]: Common Class ancestor for the MainMenu and PopupMenu classes
 
* [[MenuItem]]: Holds the menuitems of a Menu, PopupMenu or even another MenuItem
 
* [[MemoryRecord]]: The Memoryrecord class object describes a Cheat Table's Cheat Entry.
 
* [[MemoryRecordHotkey]]: The memoryRecordHotkey class object is part of a MemoryRecord class. It's used as an interface to each individual hotkey inside a Cheat Table
 
* [[MemoryStream]]: The memorystream class is a Stream class that is stored completely in memory. Because it's a stream there are multiple functions that can work with it
 
* [[Memoryview]]: The memoryview class is the Memory view window of Cheat Engine. Use this as a basis to access the objects inside this window
 
* [[Object]] : Most basic class. All classes inherit from this class
 
* [[Panel]]: The Panel class is like a form which can contain visual components.
 
* [[Pen]]: The Pen class is part of the Canvas object. It's used to draw lines
 
* [[Picture]]: Container for the Graphic class
 
* [[PopupMenu]]: The menu that shows when rightclicking on an object
 
* [[ProgressBar]]: The progressbar class is a visual representation for a bar that can show the current progress on something
 
* [[RadioGroup]]: The radiogroup is like a GroupBox but autopopulated using the Items(Strings object)
 
* [[SaveDialog]]: The SaveDialog class is a copy of the OpenDialog class but is used to select a file for saving
 
* [[Splitter]]: The Splitter class is a visual component that lets the user re-size neighboring components)
 
* [[Stringlist]]: Class that holds a list of strings
 
* [[Strings]]: Abstract class that some text based classes make use of
 
* [[TableFile]]: Tablefiles are files stored into a Cheat Table. You can access the data of such a file using this class
 
* [[Timer]]: The timer class is an non visual component that when active triggers an onTimer event every few milliseconds, base don the given interval
 
* [[ToggleBox]]: The togglebox is like a button, but can stay down. Use with the checkbox methods
 
* [[TrackBar]]: The trackbar class is a slider you can drag arround and read/set the state
 
* [[Wincontrol]]: Base class for controls which can contain other controls.
 
  
== Undefined Class Property Functions ==
 
  
Not all properties of all classes have been explicitly exposed to lua, but if you know the name of a property of a specific class you can still access them (assuming they are declared as published in the pascal class declaration)
+
== Protection ==
 +
* [[Lua:activateProtection|activateProtection]]: Prevents basic memory scanners from opening the cheat engine process
 +
* [[Lua:enableDRM|enableDRM]]: Prevents normal memory scanners from reading the Cheat Engine process (kernelmode)
 +
* [[Lua:encodeFunction|encodeFunction]]: Converts a given function into an encoded string that you can pass on to [[Lua:decodeFunction|decodeFunction]]
 +
* [[Lua:decodeFunction|decodeFunction]]: Converts an encoded string back into a function
 +
 
 +
 
 +
== Scanning ==
 +
These functions control Cheat Engine's scanning.
 +
 
 +
* [[Lua:AOBScan|AOBScan]]: Scans the currently opened process and returns a [[Lua:Class:StringList|StringList]] object containing all the results
 +
* [[Lua:getCurrentMemscan|getCurrentMemscan]]: Returns the currently active scan session as a [[Lua:Class:MemScan|MemScan]] object
 +
 
 +
 
 +
== Process ==
 +
* [[Lua:createProcess|createProcess]]: Creates a process with or without debugging
 +
* [[Lua:openProcess|openProcess]]: Causes cheat engine to open the given processname or id
 +
* [[Lua:onOpenProcess|onOpenProcess]]: Called by CE when it opens a process (userdefined)
 +
* [[Lua:getForegroundProcess|getForegroundProcess]]: Returns the process ID of the process that is currently on top
 +
* [[Lua:getOpenedProcessID|getOpenedProcessID]]: Returns the currently opened process
 +
* [[Lua:getProcessIDFromProcessName|getProcessIDFromProcessName]]: Returns a processid
 +
* [[Lua:openFileAsProcess|openFileAsProcess]]: Causes cheat engine to open the file with memory access as if it's a process
 +
* [[Lua:saveOpenedFile|saveOpenedFile]]: Saves the changes of the opened file
 +
* [[Lua:setPointerSize|setPointerSize]]: Sets the size cheat engine will deal with pointers in bytes. (Some 64-bit processes can only use 32-bit addresses)
 +
* [[Lua:setAssemblerMode|setAssemblerMode]]: Sets the assembler's bit size mode (0=32-bit, 1=64-bit)
 +
* [[Lua:getProcesslist|getProcesslist]]: Returns a processlist of the system
 +
* [[Lua:getWindowlist|getWindowlist]]: Returns the top-window list of the system
 +
* [[Lua:pause|pause]]: Pauses the current opened process
 +
* [[Lua:unpause|unpause]]: Resumes the current opened process
 +
* [[Lua:targetIs64Bit|targetIs64Bit]]: Returns true if the target process is 64-bit, false if 32-bit
 +
* [[Lua:enumModules|enumModules]]: Returns a table containing information about each module in the current process, or the specified process ID
 +
* [[Lua:closeRemoteHandle|closeRemoteHandle]]: Closes the handle of a process
 +
 
 +
 
 +
== Threads ==
 +
* [[Lua:getCPUCount|getCPUCount]]: Returns the number of CPU's
 +
* [[Lua:getThreadlist|getThreadlist]]: Fills a List object with the threadlist of the currently opened process
 +
* [[Lua:inMainThread|inMainThread]]: Returns true if the current code is running inside the main thread (6.4+)
 +
* [[Lua:synchronize|synchronize]]: Calls the given function from the main thread. Returns the return value of the given function
 +
* [[Lua:queue|queue]]: Calls the given function from the main thread. Does not wait for the result
 +
* [[Lua:checkSynchronize|checkSynchronize]]: Call this from an infinite loop in the main thread when using threading and synchronize calls
 +
 
 +
 
 +
== Handles ==
 +
* [[Lua:getHandleList|getHandleList]]: Returns a table with all the handles in the system
 +
 
 +
 
 +
== Addresses ==
 +
These functions help convert between memory addresses and [[symbol]]s/[[CEAddressString]]s.
 +
 
 +
* [[Lua:getAddress|getAddress]]: Returns the address of a symbol. Can be a modulename or an export
 +
* [[Lua:getAddressSafe|getAddressSafe]]: Returns the address of a symbol, or nil if not found. Similar to getAddress when errorOnLookup is false, but returns nil instead
 +
* [[Lua:getNameFromAddress|getNameFromAddress]]: Returns the given address in string form, returning the symbol representation if possible
 +
* [[Lua:registerSymbol|registerSymbol]]: Assign the specified symbolname to an address
 +
* [[Lua:unregisterSymbol|unregisterSymbol]]: Remove the name from the address
 +
* [[Lua:getSymbolInfo|getSymbolInfo]]: Returns a table as defined by the [[Lua:Class:SymbolList|SymbolList]] class object (module name, search key, address, size)
 +
* [[Lua:reinitializeSymbolhandler|reinitializeSymbolhandler]]: Reinitializes the symbolhandler. E.g when new modules have been loaded
 +
* [[Lua:inModule|inModule]]: Returns true if the given address is inside a module
 +
* [[Lua:inSystemModule|inSystemModule]]: Returns true if the given address is inside a system module
 +
* [[Lua:getModuleSize|getModuleSize]]: Returns the size of a given module (Use getAddress to get the base address)
 +
* [[Lua:errorOnLookupFailure|errorOnLookupFailure]]: Set whether address lookups will throw errors, or just return 0.
 +
* [[Lua:registerSymbolLookupCallback|registerSymbolLookupCallback]]: Registers a function to be called when a a symbol is parsed
 +
* [[Lua:unregisterSymbolLookupCallback|unregisterSymbolLookupCallback]]: Removes the callback
 +
* [[Lua:registerAddressLookupCallback|registerAddressLookupCallback]]: Registers a function to be called when the name of an address is requested
 +
* [[Lua:unregisterAddressLookupCallback|unregisterAddressLookupCallback]]: Removes the callback
 +
* [[Lua:reinitializeDotNetSymbolhandler|reinitializeDotNetSymbolhandler]]: Reinitializes only the DotNet part of the symbol list
 +
 
 +
 
 +
== Memory ==
 +
* [[Lua:allocateMemory|allocateMemory]]: Allocates some memory into the target process
 +
* [[Lua:deAlloc|deAlloc]]: Frees allocated memory
 +
* [[Lua:allocateSharedMemory|allocateSharedMemory]]: Creates a shared memory object of the given size if it doesn't exist yet
 +
* [[Lua:createSection|createSection]]: Creates a 'section' in memory
 +
* [[Lua:mapViewOfSection|mapViewOfSection]]: Maps the section to memory
 +
* [[Lua:unMapViewOfSection|unMapViewOfSection]]: Unmaps a section from memory
 +
* [[Lua:copyMemory|copyMemory]]: Copies memory from the given address to the destination address
 +
* [[Lua:allocateKernelMemory|allocateKernelMemory]]: Allocates a block of nonpaged memory and returns the address
 +
* [[Lua:freeKernelMemory|freeKernelMemory]]: Frees the given memory region
 +
* [[Lua:mapMemory|mapMemory]]: Maps a specific address to the usermode context from the given PID to the given PID
 +
* [[Lua:unmapMemory|unmapMemory]]:
 +
* [[Lua:createMemoryStream|createMemoryStream]]:
 +
 
 +
These functions read/write memory from the opened process.
 +
 
 +
=== Reading ===
 +
* [[Lua:readBytes|readBytes]]: Returns the bytes at the given address. If ReturnAsTable is true it will return a table instead of multiple bytes
 +
* [[Lua:readSmallInteger|readSmallInteger]]: Reads a 16-bit integer from the specified address.
 +
* [[Lua:readInteger|readInteger]]: Reads a 32-bit integer from the specified address.
 +
* [[Lua:readQword|readQword]]: Reads a 64-bit integer from the specified address.
 +
* [[Lua:readPointer|readPointer]]: In a 64-bit target this equals readQword, in a 32-bit target readInteger().
 +
* [[Lua:readFloat|readFloat]]: Reads a single precision floating point value from the specified address
 +
* [[Lua:readDouble|readDouble]]: Reads a double precision floating point value from the specified address
 +
* [[Lua:readString|readString]]: Reads a string from memory until it hits a 0-terminator. maxlength is just so you won't freeze for too long
 +
* [[Lua:readRegionFromFile|readRegionFromFile]]: Writes the given file to a specific address
 +
 
 +
* [[Lua:readBytesLocal|readBytesLocal]]: See readBytes but then it's for Cheat engine's memory
 +
* [[Lua:readSmallIntegerLocal|readSmallIntegerLocal]]: Reads a 16-bit integer from the specified address in CE's memory
 +
* [[Lua:readIntegerLocal|readIntegerLocal]]: Reads a 32-bit integer from the specified address in CE's memory
 +
* [[Lua:readQwordLocal|readQwordLocal]]: Reads a 64-bit integer from the specified address in CE's memory
 +
* [[Lua:readPointerLocal|readPointerLocal]]: [[Lua:ReadQwordLocal|ReadQwordLocal]]/[[Lua:ReadIntegerLocal|ReadIntegerLocal]] depending on the cheat engine build
 +
* [[Lua:readFloatLocal|readFloatLocal]]: Reads a single precision floating point value from the specified address in CE's memory
 +
* [[Lua:readDoubleLocal|readDoubleLocal]]: Reads a double precision floating point value from the specified address in CE's memory
 +
* [[Lua:readStringLocal|readStringLocal]]: Reads a string from CE's memory until it hits a 0-terminator
 +
 
 +
 
 +
=== Writing ===
 +
* [[Lua:writeBytes|writeBytes]]: Write the given bytes to the given address from a table
 +
* [[Lua:writeSmallInteger|writeSmallInteger]]: Writes a 16-bit integer to the specified address. Returns true on success.
 +
* [[Lua:writeInteger|writeInteger]]: Writes a 32-bit integer to the specified address. Returns true on success.
 +
* [[Lua:writeQword|writeQword]]: Write a 64-bit integer to the specified address. Returns true on success.
 +
* [[Lua:writeFloat|writeFloat]]: Writes a single precision floating point to the specified address. Returns true on success.
 +
* [[Lua:writeDouble|writeDouble]]: Writes a double precision floating point to the specified address. Returns true on success.
 +
* [[Lua:writeString|writeString]]: Write a string to the specified address. Returns true on success.
 +
* [[Lua:writeRegionToFile|writeRegionToFile]]: Writes the given region to a file. Returns the number of bytes written.
 +
 
 +
* [[Lua:writeSmallIntegerLocal|writeSmallIntegerLocal]]: Writes a 16-bit integer to the specified address in CE's memory. Returns true on success
 +
* [[Lua:writeIntegerLocal|writeIntegerLocal]]: Writes a 32-bit integer to the specified address in CE's memory. Returns true on success
 +
* [[Lua:writeQwordLocal|writeQwordLocal]]: Writes a 64-bit integer to the specified address in CE's memory. Returns true on success
 +
* [[Lua:writeFloatLocal|writeFloatLocal]]: Writes a single precision floating point to the specified address in CE's memory. Returns true on success
 +
* [[Lua:writeDoubleLocal|writeDoubleLocal]]: Writes a double precision floating point to the specified address in CE's memory. Returns true on success
 +
* [[Lua:writeStringLocal|writeStringLocal]]: Write a string to the specified address. Returns true on success.
 +
* [[Lua:writeBytesLocal|writeBytesLocal]]: See writeBytes but then it's for Cheat Engine's memory
 +
 
 +
** [[Lua:readSmallInteger|readSmallInteger]], [[Lua:readInteger|readInteger]], [[Lua:readSmallIntegerLocal|readSmallIntegerLocal]], [[Lua:readIntegerLocal|readIntegerLocal]] can also have second boolean parameter. If true, value will be signed.
 +
 
 +
== Conversions ==
 +
* [[Lua:ansiToUtf8|ansiToUtf8]]: Converts a string in ANSI encoding to UTF8
 +
* [[Lua:utf8ToAnsi|utf8ToAnsi]]: Converts a string in UTF8 encoding to ANSI
 +
* [[Lua:stringToMD5String|stringToMD5String]]: Returns an MD5 hash string from the provided string
 +
* [[Lua:integerToUserData|integerToUserData]]: Converts a given integer to a userdata variable
 +
* [[Lua:userDataToInteger|userDataToInteger]]: Converts a given userdata variable to an integer
 +
 
 +
=== To Byte Table ===
 +
* [[Lua:wordToByteTable|wordToByteTable]]: Converts a word to a bytetable
 +
* [[Lua:dwordToByteTable|dwordToByteTable]]: Converts a dword to a bytetable
 +
* [[Lua:qwordToByteTable|qwordToByteTable]]: Converts a qword to a bytetable
 +
* [[Lua:floatToByteTable|floatToByteTable]]: Converts a float to a bytetable
 +
* [[Lua:doubleToByteTable|doubleToByteTable]]: Converts a double to a bytetable
 +
* [[Lua:stringToByteTable|stringToByteTable]]: Converts a string to a bytetable
 +
* [[Lua:wideStringToByteTable|wideStringToByteTable]]: Converts a string to a widestring and converts that to a bytetable
 +
 
 +
=== From Byte Table ===
 +
* [[Lua:byteTableToWord|byteTableToWord]]: Converts a bytetable to a word
 +
* [[Lua:byteTableToDword|byteTableToDword]]: Converts a bytetable to a dword
 +
* [[Lua:byteTableToQword|byteTableToQword]]: Converts a bytetable to a qword
 +
* [[Lua:byteTableToFloat|byteTableToFloat]]: Converts a bytetable to a float
 +
* [[Lua:byteTableToDouble|byteTableToDouble]]: Converts a bytetable to a double
 +
* [[Lua:byteTableToString|byteTableToString]]: Converts a bytetable to a string
 +
* [[Lua:byteTableToWideString|byteTableToWideString]]: Converts a bytetable to a widestring and converts that to a string
 +
 
 +
 
 +
=== Binary ===
 +
* [[Lua:bOr|bOr]]: Binary Or
 +
* [[Lua:bXor|bXor]]: Binary Xor
 +
* [[Lua:bAnd|bAnd]]: Binary And
 +
* [[Lua:bShl|bShl]]: Binary shift left
 +
* [[Lua:bShr|bShr]]: Binary shift right
 +
* [[Lua:bNot|bNot]]: Binary not
 +
 
 +
== Input devices ==
 +
These functions get/set keyboard/mouse input.
 +
 
 +
* [[Lua:getMousePos|getMousePos]]: Returns the ''X'' and ''Y'' coordinates of the mouse
 +
* [[Lua:setMousePos|setMousePos]]: Sets the mouse position
 +
* [[Lua:isKeyPressed|isKeyPressed]]: Returns true if the specified key is currently pressed
 +
* [[Lua:keyDown|keyDown]]: Causes the key to go into down state
 +
* [[Lua:keyUp|keyUp]]: Causes the key to go up
 +
* [[Lua:doKeyPress|doKeyPress]]: Simulates a key press
 +
* [[Lua:mouse_event|mouse_event]]: The Windows' API ''"mouse_event"''. [https://msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx msdn.microsoft.com/en-us/library/windows/desktop/ms646260(v=vs.85).aspx]
 +
* [[Lua:setGlobalKeyPollInterval|setGlobalKeyPollInterval]]: Sets the global keypoll interval
 +
* [[Lua:setGlobalDelayBetweenHotkeyActivation|setGlobalDelayBetweenHotkeyActivation]]: Sets the minimum delay between the activation of the same hotey in milliseconds
 +
 
 +
=== Game Controller ===
 +
* [[Lua:getXBox360ControllerState|getXBox360ControllerState]]: Fetches the state of the connected XBox controller
 +
* [[Lua:setXBox360ControllerVibration|setXBox360ControllerVibration]]: Sets the speed of the left and right vibrating motor inside the controller
 +
 
 +
=== Clipboard ===
 +
* [[Lua:writeToClipboard|writeToClipboard]]: Writes the given text to the clipboard
 +
* [[Lua:readFromClipboard|readFromClipboard]]: Reads the text from the clipboard
 +
 
 +
 
 +
== Screen ==
 +
* [[Lua:getScreenHeight|getScreenHeight]]: Returns the screen height
 +
* [[Lua:getScreenWidth|getScreenWidth]]: Returns the screen  width
 +
* [[Lua:getScreenDPI|getScreenDPI]]: Returns the screen DPI
 +
* [[Lua:getWorkAreaHeight|getWorkAreaHeight]]: Returns the work area height
 +
* [[Lua:getWorkAreaWidth|getWorkAreaWidth]]: Returns the work area width
 +
* [[Lua:getScreenCanvas|getScreenCanvas]]: Returns a Canvas object you can use to write to the screen (Note: Not as useful as you may think)
 +
* [[Lua:getPixel|getPixel]]: Returns the RGB value of the pixel at the specific screen coordinate
 +
 
 +
== Sounds ==
 +
* [[Lua:playSound|playSound]]: Plays a sound file
 +
* [[Lua:beep|beep]]: Plays the fabulous beep/ping sound!
 +
* [[Lua:speak|speak]]: Speaks a given text using the given flags [https://msdn.microsoft.com/en-us/library/speechplatform_speakflags.aspx msdn.microsoft.com/en-us/library/speechplatform_speakflags.aspx]
 +
* [[Lua:speakEnglish|speakEnglish]]: Will try the English voice by wrapping the given text into an XML statement specifying the English voice
 +
 
 +
=== xmplayer ===
 +
* [[Lua:xmplayer_playXM|xmplayer_playXM]]: Plays the given filename using the xmplayer
 +
* [[Lua:xmplayer_pause|xmplayer_pause]]: Pauses the current xm audio file
 +
* [[Lua:xmplayer_resume|xmplayer_resume]]: Resumes the current xm audio file
 +
* [[Lua:xmplayer_stop|xmplayer_stop]]: Stops the current xm audio file
 +
* [[Lua:xmplayer_isPlaying|xmplayer_isPlaying]]: Returns true if there is currently an xm audio file being played
 +
 
 +
== Text to Speech ==
 +
* [[Lua:speak|speak]]: Speaks a given text.
 +
* [[Lua:speakEnglish|speakEnglish]]: Speaks a given text with English voice.
 +
 
 +
 
 +
== Fonts ==
 +
 
 +
* [[Lua:loadFontFromStream|loadFontFromStream]]: Loads a font from a memory stream and returns an id (handle) to the font for use with [[unloadLoadedFont]]
 +
* [[Lua:unloadLoadedFont|unloadLoadedFont]]: Unloads a font from a memory stream
 +
 
 +
 
 +
== Forms and Windows ==
 +
 
 +
* [[Lua:findWindow|findWindow]]: Finds a window with the given classname and/or windowname
 +
* [[Lua:getWindow|getWindow]]: Gets a specific window based on the given window (Check MSDN getWindow for the command description)
 +
* [[Lua:getWindowCaption|getWindowCaption]]: Returns the caption of the window
 +
* [[Lua:getWindowClassName|getWindowClassName]]: Returns the classname of the window
 +
* [[Lua:getWindowProcessID|getWindowProcessID]]: Returns the processid of the process this window belongs to
 +
* [[Lua:getForegroundWindow|getForegroundWindow]]: Returns the windowhandle of the topmost window
 +
* [[Lua:sendMessage|sendMessage]]: Sends a message to a window
 +
* [[Lua:hookWndProc|hookWndProc]]: Hooks a window's wndproc procedure
 +
* [[Lua:unhookWndProc|unhookWndProc]]: Called when done with the hook from [[Lua:hookWndProc|hookWndProc]]
 +
 
 +
 
 +
== Cheat Engine ==
 +
These functions help manage Cheat Engine itself.
 +
 
 +
* [[Lua:getCEVersion|getCEVersion]]: Returns a floating point value specifying the version of cheat engine
 +
* [[Lua:getCheatEngineFileVersion|getCheatEngineFileVersion]]: Returns the full version data of the cheat engine version. A raw integer, and a table containing major, minor, release and build
 +
* [[Lua:getFreezeTimer|getFreezeTimer]]: Returns the Timer object responsible for freezing values
 +
* [[Lua:getUpdateTimer|getUpdateTimer]]: Returns the Timer object responsible for updating the value list
 +
* [[Lua:getCommonModuleList|getCommonModuleList]]: Returns the commonModuleList [[Lua:Class:StringList|StringList]] object
 +
* [[Lua:getCheatEngineProcessID|getCheatEngineProcessID]]: Returns the processid of cheat engine
 +
* [[Lua:cheatEngineIs64Bit|cheatEngineIs64Bit]]: Returns true if Cheat Engine is 64-bit, false if 32-bit
 +
* [[Lua:closeCE|closeCE]]: Closes Cheat Engine
 +
* [[Lua:getAutoAttachList|getAutoAttachList]]: Returns the AutoAttach [[Lua:Class:StringList|StringList]] object
 +
* [[Lua:connectToCEServer|connectToCEServer]]: Connects to the given host and port. On success, most commands subsequent will be handled by the server
 +
* [[Lua:supportCheatEngine|supportCheatEngine]]: Will show an advertising window which will help keep the development of Cheat Engine going.
 +
* [[Lua:fuckCheatEngine|fuckCheatEngine]]: Removes the ad window if it was showing
 +
* [[Lua:getCheatEngineDir|getCheatEngineDir]]: Returns the folder Cheat Engine (or the trainer) is located at.
 +
* [[Lua:getComment|getComment]]: Gets the userdefined comment at the specified address
 +
* [[Lua:setComment|setComment]]: Sets a userdefined comment at the specifried address
 +
* [[Lua:getHeader|getHeader]]: Gets the userdefined header at the specified address
 +
* [[Lua:setHeader|setHeader]]: Sets the userdefined header at the specified address
 +
* [[Lua:registerBinUtil|registerBinUtil]]: Registers a binutils toolset with Cheat Engine
 +
* [[Lua:reloadSettingsFromRegistry|reloadSettingsFromRegistry]]: This will cause cheat engine to reload the settings from the registry and apply them
 +
* [[Lua:loadPlugin|loadPlugin]]: Loads the given plugin
 +
* [[Lua:getSettings|getSettings]]: Returns a settings object
 +
 
 +
=== Forms ===
 +
* [[Lua:getFormCount|getFormCount]]: Returns the total number of forms assigned to the main CE application
 +
* [[Lua:getForm|getForm]]: Returns the form at the specific index
 +
* [[Lua:getMemoryViewForm|getMemoryViewForm]]: Returns the first Memoryview form class object
 +
* [[Lua:getMainForm|getMainForm]]: Returns the first Mainform class object
 +
* [[Lua:getSettingsForm|getSettingsForm]]: Returns the main settings form
 +
* [[Lua:getLuaEngine|getLuaEngine]]: Returns the lua engine form object (Creates it if needed)
 +
* [[Lua:unhideMainCEwindow|unhideMainCEwindow]]: Shows the main Cheat Engine window
 +
* [[Lua:hideAllCEWindows|hideAllCEWindows]]: Makes all normal Cheat Engine windows invisible (e.g trainer table)
 +
* [[Lua:registerFormAddNotification|registerFormAddNotification]]: Registers a function to be called when a form is attached to Cheat Engine's form list
 +
* [[Lua:unregisterFormAddNotification|unregisterFormAddNotification]]: unregister the FormAddNotification call back
 +
 
 +
=== Messages ===
 +
* [[Lua:showMessage|showMessage]]: Shows a message box with the given text
 +
* [[Lua:messageDialog|messageDialog]]: Pops up a message box
 +
* [[Lua:outputDebugString|outputDebugString]]: Outputs a message using the windows OutputDebugString message
 +
* [[Lua:processMessages|processMessages]]: Lets the main eventhandler process the new messages (allows for new button clicks)
 +
 
 +
=== Input ===
 +
* [[Lua:inputQuery|inputQuery]]: Shows a dialog where the user can input a string. This function returns the given string, or nil on cancel  (CE6.4+)
 +
 
 +
=== Shortcuts ===
 +
* [[Lua:shortCutToText|shortCutToText]]: Returns the textual representation of the given shortcut value (integer) (6.4+)
 +
* [[Lua:textToShortCut|textToShortCut]]: Returns an shortcut integer that the given string represents.  (6.4+)
 +
* [[Lua:convertKeyComboToString|convertKeyComboToString]]: Returns a string representation of the given keys like the hot-key handler does
 +
 
 +
=== Speed Hack ===
 +
* [[Lua:speedhack_setSpeed|speedhack_setSpeed]]: Enables the speed hack if it was not active yet and sets the given speed
 +
* [[Lua:speedhack_getSpeed|speedhack_getSpeed]]: Returns the last set speed
 +
 
 +
 
 +
== Lua ==
 +
These functions help manage Lua itself.
 +
 
 +
* [[Lua:resetLuaState|resetLuaState]]: This will create a new Lua state that will be used.
 +
* [[Lua:sleep|sleep]]: Pauses for the number of specified milliseconds
 +
* [[Lua:createRef|createRef]]: Integer - Returns an integer reference that you can use with getRef
 +
* [[Lua:getRef|getRef]]: Returns whatever the reference points out
 +
* [[Lua:destroyRef|destroyRef]]: Removes the reference
 +
 
 +
 
 +
== Types ==
 +
These functions help structure a process's memory into datatypes.
 +
 
 +
* [[Lua:onAutoGuess|onAutoGuess]]: Registers an function to be called whenever autoguess is used to predict a variable type.
 +
* [[Lua:registerCustomTypeLua|registerCustomTypeLua]]: Registers a [[custom type]] based on Lua functions.
 +
* [[Lua:registerCustomTypeAutoAssembler|registerCustomTypeAutoAssembler]]: Registers a custom type based on an auto assembler script.
 +
 
 +
 
 +
== Object-oriented ==
 +
These functions determine how a Lua object fits in the class hierarchy.
 +
 
 +
* [[Lua:inheritsFromObject|inheritsFromObject]]: Returns true if given any class
 +
* [[Lua:inheritsFromComponent|inheritsFromComponent]]: Returns true if the given object inherits from the Component class
 +
* [[Lua:inheritsFromControl|inheritsFromControl]]: Returns true if the given object inherits from the Control class
 +
* [[Lua:inheritsFromWinControl|inheritsFromWinControl]]: Returns true if the given object inherits from the WinControl class
 +
 
 +
 
 +
== Assembly ==
 +
 
 +
These functions help work with the x86 machine code as assembly.
 +
 
 +
* [[Lua:autoAssemble|autoAssemble]]: Runs the auto assembler with the given text
 +
* [[Lua:autoAssembleCheck|autoAssembleCheck]]: Checks the script for syntax errors. Returns true on succes, false with an error message on failure
 +
* [[Lua:disassemble|disassemble]]: Disassembles the given address and returns a string in the format of "address - bytes - opcode  extra"
 +
* [[Lua:splitDisassembledString|splitDisassembledString]]: Returns 4 strings. The address, bytes, opcode and extra field
 +
* [[Lua:getInstructionSize|getInstructionSize]]: Returns the size of an instruction
 +
* [[Lua:getPreviousOpcode|getPreviousOpcode]]: Returns the address of the previous opcode (guess)
 +
* [[Lua:registerAssembler|registerAssembler]]: Registers a function to be called when the single line assembler is invoked to convert an instruction to a list of bytes
 +
* [[Lua:unregisterAssembler|unregisterAssembler]]: Unregisters the registered assembler
 +
 
 +
 
 +
== Auto Assembler ==
 +
* [[Lua:registerAutoAssemblerCommand|registerAutoAssemblerCommand]]: Registers an auto assembler command to call the specified function
 +
* [[Lua:unregisterAutoAssemblerCommand|unregisterAutoAssemblerCommand]]: Unregisters an auto assembler command
 +
* [[Lua:registerAutoAssemblerPrologue|registerAutoAssemblerPrologue]]: Registers a function to be called when the auto assembler is about to parse an auto assembler script
 +
* [[Lua:unregisterAutoAssemblerPrologue|unregisterAutoAssemblerPrologue]]: Unregisters an auto assembler prologue
 +
* [[Lua:fullAccess|fullAccess]]: Changes the protection of a block of memory to writable and executable
 +
 
 +
 
 +
=== Scripts ===
 +
* [[Lua:registerAutoAssemblerTemplate|registerAutoAssemblerTemplate]]: Registers a template for the auto assembler
 +
* [[Lua:unregisterAutoAssemblerTemplate|unregisterAutoAssemblerTemplate]]: Unregisters a template for the auto assembler
 +
* [[Lua:generateCodeInjectionScript|generateCodeInjectionScript]]: Adds a default code injection script to the given script
 +
* [[Lua:generateAOBInjectionScript|generateAOBInjectionScript]]: Adds an AOB injection script to the given script
 +
* [[Lua:generateFullInjectionScript|generateFullInjectionScript]]: Adds a Full Injection script to the given script
 +
* [[Lua:generateAPIHookScript|generateAPIHookScript]]: Generates an auto assembler script which will hook the given address when executed
 +
 
 +
 
 +
== Debugger ==
 +
These functions manage the debugger. See ''[[Lua Debugging]]''.
 +
 
 +
* [[Lua:debug_isDebugging|debug_isDebugging]]: Returns true if the debugger has been started
 +
* [[Lua:debug_getCurrentDebuggerInterface|debug_getCurrentDebuggerInterface]]: Returns the current debuggerinterface used (1=windows, 2=VEH 3=Kernel, nil=no debugging active)
 +
* [[Lua:debug_canBreak|debug_canBreak]]: Returns true if there is a possibility the target can stop on a breakpoint. 6.4+
 +
* [[Lua:debug_isBroken|debug_isBroken]]: Returns true if the debugger is currently halted on a thread
 +
* [[Lua:debug_getBreakpointList|debug_getBreakpointList]]: Returns a lua table containing all the breakpoint addresses
 +
* [[Lua:debugProcess|debugProcess]]: Debugs the currently attached process
 +
* [[Lua:debug_setBreakpoint|debug_setBreakpoint]]: Sets a breakpoint of a specific size at the given address
 +
* [[Lua:debugger_onBreakpoint|debugger_onBreakpoint]]: Called by CE when a breakpoint hits (userdefined)
 +
* [[Lua:debug_removeBreakpoint|debug_removeBreakpoint]]: Removes a breakpoint
 +
* [[Lua:debug_continueFromBreakpoint|debug_continueFromBreakpoint]]: Continues the debugger when it's halted on a breakpoint
 +
* [[Lua:debug_setLastBranchRecording|debug_setLastBranchRecording]]: Tells the kernelmode debugger to record the last few branches before the breakpoint got hit
 +
* [[Lua:debug_getMaxLastBranchRecord|debug_getMaxLastBranchRecord]]: Returns the maximum number of branch records this cpu supports
 +
* [[Lua:debug_getLastBranchRecord|debug_getLastBranchRecord]]: Returns the value of the Last Branch Record at the given index (when handling a breakpoint)
 +
* [[Lua:debugger_onModuleLoad|debugger_onModuleLoad]]: Called by CE when the windows debugger interface loads a module (userdefined)
 +
* [[Lua:debug_getContext|debug_getContext]] (since 6.5): Force-update the Lua variables representing the registers?
 +
* [[Lua:debug_setContext|debug_setContext]] (since 6.5[http://www.cheatengine.org/forum/viewtopic.php?p=5639331&sid=755d2d512f48af1f29382048087761b9#5639331]): Force-update the registers to the Lua variables which represent them?
 +
* [[Lua:debug_updateGUI|debug_updateGUI]]: Will refresh the userinterface to reflect the new context if the debugger was broken
 +
* [[Lua:detachIfPossible|detachIfPossible]]: Detaches the debugger from the target process (if it was attached)
 +
* [[Lua:debug_addThreadToNoBreakList|debug_addThreadToNoBreakList]]: This will cause breakpoints on the provided thread to be ignored
 +
* [[Lua:debug_removeThreadFromNoBreakList|debug_removeThreadFromNoBreakList]]: removed the threadid from the list
 +
* [[Lua:debug_getXMMPointer|debug_getXMMPointer]]: Returns the address of the specified xmm register of the thread that is currently broken
 +
* [[Lua:debugger_onModuleLoad|debugger_onModuleLoad]]: This routine is called when a module is loaded. Only works for the windows debugger
 +
 
 +
 
 +
== DBK ==
 +
* [[Lua:dbk_initialize|dbk_initialize]]: Loads the DBK driver into memory if possible
 +
* [[Lua:dbk_useKernelmodeOpenProcess|dbk_useKernelmodeOpenProcess]]: Switches the internal pointer of the OpenProcess api to dbk_OpenProcess
 +
* [[Lua:dbk_useKernelmodeProcessMemoryAccess|dbk_useKernelmodeProcessMemoryAccess]]: Switches the internal pointer to the ReadProcessMemory and WriteProcessMemory apis to dbk_ReadProcessMemory and dbk_WriteProcessMemory
 +
* [[Lua:dbk_useKernelmodeQueryMemoryRegions|dbk_useKernelmodeQueryMemoryRegions]]: Switches the internal pointer to the QueryVirtualMemory api to dbk_QueryVirtualMemory
 +
* [[Lua:dbk_getPEProcess|dbk_getPEProcess]]: Returns the pointer of the EProcess structure of the selected processid
 +
* [[Lua:dbk_getPEThread|dbk_getPEThread]]: Gets the pointer to the EThread structure of a threadid
 +
* [[Lua:dbk_readMSR|dbk_readMSR]]: Reads the msr using the dbk driver
 +
* [[Lua:dbk_writeMSR|dbk_writeMSR]]: Writes the msr using the dbk driver
 +
* [[Lua:dbk_executeKernelMemory|dbk_executeKernelMemory]]: Executes a routine from kernelmode (e.g a routine written there with auto assembler)
 +
* [[Lua:dbk_getCR0|dbk_getCR0]]: Returns Control Register 0
 +
* [[Lua:dbk_getCR3|dbk_getCR3]]: Returns Control Register 3 of the currently opened process
 +
* [[Lua:dbk_getCR4|dbk_getCR4]]: Returns Control Register 4
 +
* [[Lua:dbk_getPhysicalAddress|dbk_getPhysicalAddress]]: Returns the physical address of the given address
 +
* [[Lua:dbk_writesIgnoreWriteProtection|dbk_writesIgnoreWriteProtection]]: Set to true if you do not wish to initiate copy-on-write behaviour
 +
 
 +
 
 +
== DBVM ==
 +
* [[Lua:dbvm_initialize|dbvm_initialize]]: Initializes the dbvm functions
 +
* [[Lua:dbvm_addMemory|dbvm_addMemory]]: Adds memory to DBVM
 +
* [[Lua:dbvm_readMSR|dbvm_readMSR]]: Reads the msr using dbvm (bypasses the driver)
 +
* [[Lua:dbvm_writeMSR|dbvm_writeMSR]]: Writes the msr using dbvm (bypasses the driver)
 +
* [[Lua:dbvm_getCR4|dbvm_getCR4]]: Returns the real Control Register 4 state
 +
* [[Lua:dbvm_readPhysicalMemory|dbvm_readPhysicalMemory]]: Reads physical memory using DBVM
 +
* [[Lua:dbvm_writePhysicalMemory|dbvm_writePhysicalMemory]]: Writes physical memory using DBVM
 +
* [[Lua:dbvm_watch_writes|dbvm_watch_writes]]: Starts memory region write monitoring
 +
* [[Lua:dbvm_watch_reads|dbvm_watch_reads]]: Starts memory region read monitoring
 +
* [[Lua:dbvm_watch_retrievelog|dbvm_watch_retrievelog]]: Receives the result of memory region monitoring
 +
* [[Lua:dbvm_watch_disable|dbvm_watch_disable]]: Disables memory region monitoring
 +
* [[Lua:dbvm_cloak_activate|dbvm_cloak_activate]]: Cloak a page so changes to it will become invisible
 +
* [[Lua:dbvm_cloak_deactivate|dbvm_cloak_deactivate]]: Undo the cloak. Also undoes changes
 +
* [[Lua:dbvm_cloak_readOriginal|dbvm_cloak_readOriginal]]: Read the memory that gets executed in a cloaked region
 +
* [[Lua:dbvm_cloak_writeOriginal|dbvm_cloak_writeOriginal]]: Writes the memory that gets executed in a cloaked region
 +
* [[Lua:dbvm_changeregonbp|dbvm_changeregonbp]] : Cloaks and sets a breakpoint at the given address and change registers when executed
 +
* [[Lua:dbvm_removechangeregonbp|dbvm_removechangeregonbp]]: Removes a change reg on bp breakpoint
 +
* [[Lua:dbvm_log_cr3_start|dbvm_log_cr3_start]] : Start logging CR3 values
 +
* [[Lua:dbvm_log_cr3_stop|dbvm_log_cr3_stop]] : Stop logging CR3 values
 +
* [[Lua:dbvm_speedhack_setSpeed|dbvm_speedhack_setSpeed]] : sets the systemwide speedhack
 +
* [[Lua:dbvm_setTSCAdjust|dbvm_setTSCAdjust]] : Lets you specify what happens when a program tries to detect a virtual machine by calling rdtsc
 +
 
 +
== Translation ==
 +
* [[Lua:getTranslationFolder|getTranslationFolder]]: Returns the path of the current translation files, empty if there is no translation going on
 +
* [[Lua:loadPOFile|loadPOFile]]: Loads a ''".PO"'' file used for translation
 +
* [[Lua:translate|translate]]: Returns a translation of the string, returns the same string if it can't be found
 +
* [[Lua:translateID|translateID]]: Returns a translation of the string ID
 +
 
 +
 
 +
== Files ==
 +
* [[Lua:getFileVersion|getFileVersion]]: Returns the 64-bit file version, and a table that has split up the file version into major, minor, release and build
 +
* [[Lua:getFileList|getFileList]]: Returns an indexed table with filenames
 +
* [[Lua:getDirectoryList|getDirectoryList]]: Returns an indexed table with directory names
 +
 
 +
 
 +
== Structures ==
 +
* [[Lua:registerStructureDissectOverride|registerStructureDissectOverride]]: same as [[Lua:onAutoGuess|onAutoGuess]], but is called by the structure dissect window when the user chooses to let cheat engine guess the structure for them
 +
* [[Lua:unregisterStructureDissectOverride|unregisterStructureDissectOverride]]: unregisters the structure dissect auto guess override
 +
* [[Lua:registerStructureNameLookup|registerStructureNameLookup]]: Registers a function to be called when dissect data asks the user for the name of a new structure define
 +
* [[Lua:unregisterStructureNameLookup|unregisterStructureNameLookup]]:
 +
 
 +
 
 +
== Miscellaneous ==
 +
* [[Lua:injectDll|injectDll]]: Injects a dll
 +
* [[Lua:shellExecute|shellExecute]]: Executes a given command
 +
* [[Lua:executeCode|executeCode]]: Executes a stdcall function with 1 parameter at the given address in the target process and wait for it to return
 +
* [[Lua:executeCodeEx|executeCodeEx]]:
 +
* [[Lua:executeCodeLocal|executeCodeLocal]]: Executes a stdcall function with 1 parameter at the given address in the target process
 +
* [[Lua:executeCodeLocalEx|executeCodeLocalEx]]:
 +
* [[Lua:onAPIPointerChange|onAPIPointerChange]]: Registers a callback when an api pointer is changed
 +
* [[Lua:setAPIPointer|setAPIPointer]]: Sets the pointer of the given api to the given address
 +
* [[Lua:md5memory|md5memory]]: Returns a md5 sum calculated from the provided memory
 +
* [[Lua:md5file|md5file]]: Returns a md5 sum calculated from the file
 +
* [[Lua:getSystemMetrics|getSystemMetrics]]: Retrieves the specified system metric or system configuration setting [https://msdn.microsoft.com/en-us/library/windows/desktop/ms724385.aspx msdn.microsoft.com/en-us/library/windows/desktop/ms724385.aspx]
 +
* [[Lua:getTickCount|getTickCount]]: Returns the current tickcount since windows was started. Each tick is one millisecond
 +
* [[Lua:getUserRegistryEnvironmentVariable|getUserRegistryEnvironmentVariable]]: Returns the environment variable stored in the user registry environment
 +
* [[Lua:setUserRegistryEnvironmentVariable|setUserRegistryEnvironmentVariable]]: Sets the environment variable stored in the user registry environment
 +
* [[Lua:broadcastEnvironmentUpdate|broadcastEnvironmentUpdate]]: Call this when you've changed the environment variables in the registry
 +
* [[Lua:getApplication|getApplication]]: Returns the application object (the titlebar)
 +
* [[Lua:getInternet|getInternet]]: Returns an internet class object.  The string provided will be the name of the client provided
 +
 
 +
= Classes =
 +
Besides the above functions, Cheat Engine also implements some classes.
 +
 
 +
* [[Lua:Class:Addresslist|Addresslist]]: The addresslist class is a container for memory records
 +
* [[Lua:Class:Bitmap|Bitmap]]: Bitmap based Graphic object
 +
* [[Lua:Class:Brush|Brush]]: The brush class is part of the Canvas object. It's used to fill surfaces
 +
* [[Lua:Class:Button|Button]]: The button class is a visual component in the shape of a button.
 +
* [[Lua:Class:ButtonControl|ButtonControl]]: Common ancestor of several button like objects.
 +
* [[Lua:Class:Canvas|Canvas]]: The canvas class is a graphical class. It allows you do draw lines, pictures, and text on top of other object. Usually used in onPaint events and other graphical events
 +
* [[Lua:Class:Calendar|Calendar]]:
 +
* [[Lua:Class:CEForm|CEForm]]:
 +
* [[Lua:Class:CheatComponent|CheatComponent]]: The cheatcomponent class is the component used in Cheat Engine 5.x trainers
 +
* [[Lua:Class:CheckBox|CheckBox]]: The Checkbox is a visual component that lets the user click it and change state between checked, unchecked, and if possible, grayed
 +
* [[Lua:Class:Component|Component]] : Base class for all components that need owner-owned functionality.
 +
* [[Lua:Class:Control|Control]] : Base class for visible controls.
 +
* [[Lua:Class:Collection|Collection]]: The Collection class is an abstract class that the ListColumns class implements (And perhaps other classes as well)
 +
* [[Lua:Class:CollectionItem|CollectionItem]]:  Basic object that is managed by a Collection class
 +
* [[Lua:Class:ComboBox|ComboBox]]: The Combobox is like an edit field with a ListBox attached to it
 +
* [[Lua:Class:CriticalSection|CriticalSection]]:
 +
* [[Lua:Class:CustomControl|CustomControl]]: Base class for windowed controls which paint themselves
 +
* [[Lua:Class:CustomType|CustomType]]: The custom type is an convertor of raw data, to a human readable interpretation.
 +
* [[Lua:Class:D3DHOOK|D3DHOOK]]: The d3dhook functions provide a method to render graphics and text inside the game, as long as it is running in directx9, 10 or 11
 +
* [[Lua:Class:D3DHook_FontMap|D3DHook_FontMap]]: A fontmap is a texture that contains extra data regarding the characters
 +
* [[Lua:Class:D3DHook_Texture|D3DHook_Texture]]: This class controls the texture in memory. Without a sprite to use it, it won't show
 +
* [[Lua:Class:D3Dhook_TextContainer|D3Dhook_TextContainer]]: A d3dhook_sprite class draws a piece of text on the screen based on the used fontmap
 +
* [[Lua:Class:D3DHook_RenderObject|D3DHook_RenderObject]]: The renderobject is the abstract class used to control in what manner objects are rendered.
 +
* [[Lua:Class:D3DHook_Sprite|D3DHook_Sprite]]: A d3dhook_sprite class is a visible texture on the screen
 +
* [[Lua:Class:Disassembler|Disassembler]]:
 +
* [[Lua:Class:Disassemblerview|Disassemblerview]]: The visual disassembler used in the memory view window
 +
* [[Lua:Class:DisassemblerviewLine|DisassemblerviewLine]]:
 +
* [[Lua:Class:DissectCode|DissectCode]]:
 +
* [[Lua:Class:Edit|Edit]]: The Edit class is a visual component that lets the user type in data (Use control_getCaption to get the user input)
 +
* [[Lua:Class:Event|Event]]:
 +
* [[Lua:Class:FileStream|FileStream]]: The FileStream class is a Stream class that is linked to an open file on disk
 +
* [[Lua:Class:FileDialog|FileDialog]]:
 +
* [[Lua:Class:FindDialog|FindDialog]]:
 +
* [[Lua:Class:Font|Font]]: Class that defines a font
 +
* [[Lua:Class:Form|Form]]: Class that defines a window
 +
* [[Lua:Class:FoundList|FoundList]]: The foundlist is an companion class to MemScan. It opens the current memscan's result file and provides an interface for reading out the addresses
 +
* [[Lua:Class:GenericHotkey|GenericHotkey]]: Lets you register hotkeys to Cheat Engine's internal hotkey handler
 +
* [[Lua:Class:Graphic|Graphic]]: Base class for dealing with Graphic images (Abstract)
 +
* [[Lua:Class:GraphicControl|GraphicControl]]: Class that supports simple lightweight controls that do not need the ability to accept keyboard input or contain other controls.
 +
* [[Lua:Class:GroupBox|GroupBox]]: The groupbox class is like a Panel, but then has a header on top
 +
* [[Lua:Class:Hexadecimal|Hexadecimal]]: The visual hexadecimal object used on the memory view window
 +
* [[Lua:Class:Hexadecimalview|Hexadecimalview]]: The visual hexadecimal object used on the memory view window
 +
* [[Lua:Class:Icon|Icon]]:
 +
* [[Lua:Class:Image|Image]]: The Image class is a visual component that lets you show an image
 +
* [[Lua:Class:Internet|Internet]]:
 +
* [[Lua:Class:JpegImage|JpegImage]]:
 +
* [[Lua:Class:Label|Label]]: The Label class is a visual component that lets you display text
 +
* [[Lua:Class:LuaPipe|LuaPipe]]: Abstract class that [[Lua:Class:LuaPipeServer|LuaPipeServer]] and [[Lua:Class:LuaPipeclient|LuaPipeclient]] inherit from
 +
* [[Lua:Class:LuaPipeClient|LuaPipeClient]]: Class implementing a client that connects to a pipe
 +
* [[Lua:Class:LuaPipeServer|LuaPipeServer]]: Class launching the server side of a pipe
 +
* [[Lua:Class:ListBox|ListBox]]: The listbox class is a visual component with a list of selectable strings
 +
* [[Lua:Class:ListColumn|ListColumn]]: The listcolumn class is an implemented CollectionItem class which is used by the ListColumns class of the listview class
 +
* [[Lua:Class:ListColumns|ListColumns]]: The ListColumns class contains the Column class objects of a ListView object
 +
* [[Lua:Class:ListItem|ListItem]]: The ListItem class object is an entry in a ListView
 +
* [[Lua:Class:ListItems|ListItems]]: The listItems class is a container for the ListItem class objects of a Listview
 +
* [[Lua:Class:Listview|Listview]]: The listview class lets you have a listbox like component with resizable columns
 +
* [[Lua:Class:MainMenu|MainMenu]]: The menu at the top of a form
 +
* [[Lua:Class:Memo|Memo]]: The Memo class is a multiline edit field
 +
* [[Lua:Class:MemScan|MemScan]]: The memscan class is the memory scanner of Cheat engine
 +
* [[Lua:Class:Menu|Menu]]: Common Class ancestor for the MainMenu and PopupMenu classes
 +
* [[Lua:Class:MenuItem|MenuItem]]: Holds the menuitems of a Menu, PopupMenu or even another MenuItem
 +
* [[Lua:Class:MemoryRecord|MemoryRecord]]: The Memoryrecord class object describes a Cheat Table's Cheat Entry.
 +
* [[Lua:Class:MemoryRecordHotkey|MemoryRecordHotkey]]: The memoryRecordHotkey class object is part of a MemoryRecord class. It's used as an interface to each individual hotkey inside a Cheat Table
 +
* [[Lua:Class:MemoryStream|MemoryStream]]: The memorystream class is a Stream class that is stored completely in memory. Because it's a stream there are multiple functions that can work with it
 +
* [[Lua:Class:Memoryview|Memoryview]]: The memoryview class is the Memory view window of Cheat Engine. Use this as a basis to access the objects inside this window
 +
* [[Lua:Class:MultiReadExclusiveWriteSynchronizer|MultiReadExclusiveWriteSynchronizer]]:
 +
* [[Lua:Class:Object|Object]]: Most basic class. All classes inherit from this class
 +
* [[Lua:Class:PaintBox|PaintBox]]:
 +
* [[Lua:Class:PageControl|PageControl]]: This is an object that can hold multiple pages
 +
* [[Lua:Class:Panel|Panel]]: The Panel class is like a form which can contain visual components.
 +
* [[Lua:Class:Pen|Pen]]: The Pen class is part of the Canvas object. It's used to draw lines
 +
* [[Lua:Class:Picture|Picture]]: Container for the Graphic class
 +
* [[Lua:Class:PopupMenu|PopupMenu]]: The menu that shows when rightclicking on an object
 +
* [[Lua:Class:PortableNetworkGraphic|PortableNetworkGraphic]]:
 +
* [[Lua:Class:ProgressBar|ProgressBar]]: The progressbar class is a visual representation for a bar that can show the current progress on something
 +
* [[Lua:Class:RadioGroup|RadioGroup]]: The radiogroup is like a GroupBox but autopopulated using the Items(Strings object)
 +
* [[Lua:Class:RasterImage|RasterImage]]: Base class for some graphical controls
 +
* [[Lua:Class:RIPRelativeScanner|RIPRelativeScanner]]:
 +
* [[Lua:Class:OpenDialog|OpenDialog]]: The OpenDialog class is used for selecting files to open.
 +
* [[Lua:Class:SaveDialog|SaveDialog]]: The SaveDialog class is based on the OpenDialog class but is used to select a file for saving
 +
* [[Lua:Class:SelectDirectoryDialog|SelectDirectoryDialog]]:
 +
* [[Lua:Class:Semaphore|Semaphore]]:
 +
* [[Lua:Class:Settings|Settings]]: This class can be used to read out and set settings of cheat engine and of plugins, and store your own data
 +
* [[Lua:Class:Splitter|Splitter]]: The Splitter class is a visual component that lets the user re-size neighboring components)
 +
* [[Lua:Class:Stringlist|Stringlist]]: Class that holds a list of strings
 +
* [[Lua:Class:Strings|Strings]]: Abstract class that some text based classes make use of
 +
* [[Lua:Class:StringStream|StringStream]]:
 +
* [[Lua:Class:Structure|Structure]]:
 +
* [[Lua:Class:StructureElement|StructureElement]]:
 +
* [[Lua:Class:StructureFrm|StructureFrm]]:
 +
* [[Lua:Class:structGroup|structGroup]]:
 +
* [[Lua:Class:SymbolList|SymbolList]]: This class can be used to look up an address to a symbolname, and a symbolname to an address
 +
* [[Lua:Class:TabSheet|TabSheet]]: Part of a page control
 +
* [[Lua:Class:TableFile|TableFile]]: Tablefiles are files stored into a Cheat Table. You can access the data of such a file using this class
 +
* [[Lua:Class:Thread|Thread]]:
 +
* [[Lua:Class:Timer|Timer]]: The timer class is an non visual component that when active triggers an onTimer event every few milliseconds, based on the given interval
 +
* [[Lua:Class:ToggleBox|ToggleBox]]: The togglebox is like a button, but can stay down. Use with the checkbox methods
 +
* [[Lua:Class:TrackBar|TrackBar]]: The trackbar class is a slider you can drag arround and read/set the state
 +
* [[Lua:Class:TreeNode|TreeNode]]:
 +
* [[Lua:Class:TreeNodes|TreeNodes]]:
 +
* [[Lua:Class:Treeview|Treeview]]:
 +
* [[Lua:Class:WinControl|WinControl]]: Base class for controls which can contain other controls.
 +
* [[Lua:Class:xmplayer|xmplayer]]:
 +
 
  
See:
+
== SQL Classes ==
* [[getPropertyList]] : Returns a StringList object containing all the published properties of the specified class
+
* [[Lua:SQL:CustomConnection|CustomConnection]]:  
* [[setProperty]] : Sets the value of a published property of a class (Won't work for method properties)
+
* [[Lua:SQL:Database|Database]]:  
* [[getProperty]] : Gets the value of a published property of a class (Won't work for method properties)
+
* [[Lua:SQL:SQLConnection|SQLConnection]]:  
 +
* [[Lua:SQL:SQLite3Connection|SQLite3Connection]]:
 +
* [[Lua:SQL:ODBCConnection|ODBCConnection]]:
 +
* [[Lua:SQL:DBTransaction|DBTransaction]]:
 +
* [[Lua:SQL:SQLTransaction|SQLTransaction]]:
 +
* [[Lua:SQL:Param|Param]]:
 +
* [[Lua:SQL:Params|Params]]:
 +
* [[Lua:SQL:Fields|Fields]]:
 +
* [[Lua:SQL:Dataset|Dataset]]:
 +
* [[Lua:SQL:DBDataset|DBDataset]]:
 +
* [[Lua:SQL:CustomBufDataset|CustomBufDataset]]:
 +
* [[Lua:SQL:CustomSQLQuery|CustomSQLQuery]]:
 +
* [[Lua:SQL:SQLQuery|SQLQuery]]:  
  
  
 +
== Class Helper Functions ==
 +
* [[Lua:inheritsFromObject|inheritsFromObject]]: Returns true if given any class
 +
* [[Lua:inheritsFromComponent|inheritsFromComponent]]: Returns true if the given object inherits from the Component class
 +
* [[Lua:inheritsFromControl|inheritsFromControl]]: Returns true if the given object inherits from the Control class
 +
* [[Lua:inheritsFromWinControl|inheritsFromWinControl]]: Returns true if the given object inherits from the WinControl class
 +
* [[Lua:createClass|createClass]]: Creates an object of the specified class (Assuming it's a registered class and has a default constructor)
 +
* [[Lua:createComponentClass|createComponentClass]]: Creates an object of the specified component inherited class
  
 +
== Undefined Class Property Functions ==
 +
Not all properties of all classes have been explicitly exposed to lua, but if you know the name of a property of a specific class you can still access them (assuming they are declared as published in the pascal class declaration)
  
[[File:CE6.2 Fishlogo]]
+
* [[Lua:getPropertyList|getPropertyList]]: Returns a [[Lua:Class:StringList|StringList]] object containing all the published properties of the specified class
 +
* [[Lua:setProperty|setProperty]]: Sets the value of a published property of a class (Won't work for method properties)
 +
* [[Lua:getProperty|getProperty]]: Gets the value of a published property of a class (Won't work for method properties)
 +
* [[Lua:setMethodProperty|setMethodProperty]]: Sets the method property to the specific function
 +
* [[Lua:getMethodProperty|getMethodProperty]]: Returns a function you can use to call the original function

Latest revision as of 13:51, 30 September 2023

Cheat Engine comes with an extensive set of Lua functions you can use inside cheat tables, trainers and standalone scripts.


Variables[edit]

Globals[edit]

  • TrainerOrigin: A variable that contains the path of the trainer that launched cheat engine (Only set when launched as a trainer)
  • process: A variable that contains the main modulename of the currently opened process
  • MainForm: The main Cheat Engine gui
  • AddressList: The address list of the main Cheat Engine gui

Variables[edit]

  • Debug Variables
    • EFLAGS
    • 32/64-bit: EAX, EBX, ECX, EDX, EDI, ESI, EBP, ESP, EIP
    • 64-bit only: RAX, RBX, RCX, RDX, RDI, RSI, RBP, RSP, RIP, R8, R9, R10, R11, R12, R13, R14, R15 : The value of the register

Functions[edit]

Cheat table[edit]

These functions help manage the cheat table.

Trainers[edit]


Protection[edit]

  • activateProtection: Prevents basic memory scanners from opening the cheat engine process
  • enableDRM: Prevents normal memory scanners from reading the Cheat Engine process (kernelmode)
  • encodeFunction: Converts a given function into an encoded string that you can pass on to decodeFunction
  • decodeFunction: Converts an encoded string back into a function


Scanning[edit]

These functions control Cheat Engine's scanning.


Process[edit]


Threads[edit]

  • getCPUCount: Returns the number of CPU's
  • getThreadlist: Fills a List object with the threadlist of the currently opened process
  • inMainThread: Returns true if the current code is running inside the main thread (6.4+)
  • synchronize: Calls the given function from the main thread. Returns the return value of the given function
  • queue: Calls the given function from the main thread. Does not wait for the result
  • checkSynchronize: Call this from an infinite loop in the main thread when using threading and synchronize calls


Handles[edit]

  • getHandleList: Returns a table with all the handles in the system


Addresses[edit]

These functions help convert between memory addresses and symbols/CEAddressStrings.


Memory[edit]

These functions read/write memory from the opened process.

Reading[edit]

  • readBytes: Returns the bytes at the given address. If ReturnAsTable is true it will return a table instead of multiple bytes
  • readSmallInteger: Reads a 16-bit integer from the specified address.
  • readInteger: Reads a 32-bit integer from the specified address.
  • readQword: Reads a 64-bit integer from the specified address.
  • readPointer: In a 64-bit target this equals readQword, in a 32-bit target readInteger().
  • readFloat: Reads a single precision floating point value from the specified address
  • readDouble: Reads a double precision floating point value from the specified address
  • readString: Reads a string from memory until it hits a 0-terminator. maxlength is just so you won't freeze for too long
  • readRegionFromFile: Writes the given file to a specific address


Writing[edit]

  • writeBytes: Write the given bytes to the given address from a table
  • writeSmallInteger: Writes a 16-bit integer to the specified address. Returns true on success.
  • writeInteger: Writes a 32-bit integer to the specified address. Returns true on success.
  • writeQword: Write a 64-bit integer to the specified address. Returns true on success.
  • writeFloat: Writes a single precision floating point to the specified address. Returns true on success.
  • writeDouble: Writes a double precision floating point to the specified address. Returns true on success.
  • writeString: Write a string to the specified address. Returns true on success.
  • writeRegionToFile: Writes the given region to a file. Returns the number of bytes written.
  • writeSmallIntegerLocal: Writes a 16-bit integer to the specified address in CE's memory. Returns true on success
  • writeIntegerLocal: Writes a 32-bit integer to the specified address in CE's memory. Returns true on success
  • writeQwordLocal: Writes a 64-bit integer to the specified address in CE's memory. Returns true on success
  • writeFloatLocal: Writes a single precision floating point to the specified address in CE's memory. Returns true on success
  • writeDoubleLocal: Writes a double precision floating point to the specified address in CE's memory. Returns true on success
  • writeStringLocal: Write a string to the specified address. Returns true on success.
  • writeBytesLocal: See writeBytes but then it's for Cheat Engine's memory

Conversions[edit]

To Byte Table[edit]

From Byte Table[edit]


Binary[edit]

Input devices[edit]

These functions get/set keyboard/mouse input.

Game Controller[edit]

Clipboard[edit]


Screen[edit]

Sounds[edit]

xmplayer[edit]

Text to Speech[edit]


Fonts[edit]


Forms and Windows[edit]


Cheat Engine[edit]

These functions help manage Cheat Engine itself.

Forms[edit]

Messages[edit]

Input[edit]

  • inputQuery: Shows a dialog where the user can input a string. This function returns the given string, or nil on cancel (CE6.4+)

Shortcuts[edit]

  • shortCutToText: Returns the textual representation of the given shortcut value (integer) (6.4+)
  • textToShortCut: Returns an shortcut integer that the given string represents. (6.4+)
  • convertKeyComboToString: Returns a string representation of the given keys like the hot-key handler does

Speed Hack[edit]


Lua[edit]

These functions help manage Lua itself.

  • resetLuaState: This will create a new Lua state that will be used.
  • sleep: Pauses for the number of specified milliseconds
  • createRef: Integer - Returns an integer reference that you can use with getRef
  • getRef: Returns whatever the reference points out
  • destroyRef: Removes the reference


Types[edit]

These functions help structure a process's memory into datatypes.


Object-oriented[edit]

These functions determine how a Lua object fits in the class hierarchy.


Assembly[edit]

These functions help work with the x86 machine code as assembly.

  • autoAssemble: Runs the auto assembler with the given text
  • autoAssembleCheck: Checks the script for syntax errors. Returns true on succes, false with an error message on failure
  • disassemble: Disassembles the given address and returns a string in the format of "address - bytes - opcode extra"
  • splitDisassembledString: Returns 4 strings. The address, bytes, opcode and extra field
  • getInstructionSize: Returns the size of an instruction
  • getPreviousOpcode: Returns the address of the previous opcode (guess)
  • registerAssembler: Registers a function to be called when the single line assembler is invoked to convert an instruction to a list of bytes
  • unregisterAssembler: Unregisters the registered assembler


Auto Assembler[edit]


Scripts[edit]


Debugger[edit]

These functions manage the debugger. See Lua Debugging.


DBK[edit]


DBVM[edit]

Translation[edit]

  • getTranslationFolder: Returns the path of the current translation files, empty if there is no translation going on
  • loadPOFile: Loads a ".PO" file used for translation
  • translate: Returns a translation of the string, returns the same string if it can't be found
  • translateID: Returns a translation of the string ID


Files[edit]

  • getFileVersion: Returns the 64-bit file version, and a table that has split up the file version into major, minor, release and build
  • getFileList: Returns an indexed table with filenames
  • getDirectoryList: Returns an indexed table with directory names


Structures[edit]


Miscellaneous[edit]

Classes[edit]

Besides the above functions, Cheat Engine also implements some classes.

  • Addresslist: The addresslist class is a container for memory records
  • Bitmap: Bitmap based Graphic object
  • Brush: The brush class is part of the Canvas object. It's used to fill surfaces
  • Button: The button class is a visual component in the shape of a button.
  • ButtonControl: Common ancestor of several button like objects.
  • Canvas: The canvas class is a graphical class. It allows you do draw lines, pictures, and text on top of other object. Usually used in onPaint events and other graphical events
  • Calendar:
  • CEForm:
  • CheatComponent: The cheatcomponent class is the component used in Cheat Engine 5.x trainers
  • CheckBox: The Checkbox is a visual component that lets the user click it and change state between checked, unchecked, and if possible, grayed
  • Component : Base class for all components that need owner-owned functionality.
  • Control : Base class for visible controls.
  • Collection: The Collection class is an abstract class that the ListColumns class implements (And perhaps other classes as well)
  • CollectionItem: Basic object that is managed by a Collection class
  • ComboBox: The Combobox is like an edit field with a ListBox attached to it
  • CriticalSection:
  • CustomControl: Base class for windowed controls which paint themselves
  • CustomType: The custom type is an convertor of raw data, to a human readable interpretation.
  • D3DHOOK: The d3dhook functions provide a method to render graphics and text inside the game, as long as it is running in directx9, 10 or 11
  • D3DHook_FontMap: A fontmap is a texture that contains extra data regarding the characters
  • D3DHook_Texture: This class controls the texture in memory. Without a sprite to use it, it won't show
  • D3Dhook_TextContainer: A d3dhook_sprite class draws a piece of text on the screen based on the used fontmap
  • D3DHook_RenderObject: The renderobject is the abstract class used to control in what manner objects are rendered.
  • D3DHook_Sprite: A d3dhook_sprite class is a visible texture on the screen
  • Disassembler:
  • Disassemblerview: The visual disassembler used in the memory view window
  • DisassemblerviewLine:
  • DissectCode:
  • Edit: The Edit class is a visual component that lets the user type in data (Use control_getCaption to get the user input)
  • Event:
  • FileStream: The FileStream class is a Stream class that is linked to an open file on disk
  • FileDialog:
  • FindDialog:
  • Font: Class that defines a font
  • Form: Class that defines a window
  • FoundList: The foundlist is an companion class to MemScan. It opens the current memscan's result file and provides an interface for reading out the addresses
  • GenericHotkey: Lets you register hotkeys to Cheat Engine's internal hotkey handler
  • Graphic: Base class for dealing with Graphic images (Abstract)
  • GraphicControl: Class that supports simple lightweight controls that do not need the ability to accept keyboard input or contain other controls.
  • GroupBox: The groupbox class is like a Panel, but then has a header on top
  • Hexadecimal: The visual hexadecimal object used on the memory view window
  • Hexadecimalview: The visual hexadecimal object used on the memory view window
  • Icon:
  • Image: The Image class is a visual component that lets you show an image
  • Internet:
  • JpegImage:
  • Label: The Label class is a visual component that lets you display text
  • LuaPipe: Abstract class that LuaPipeServer and LuaPipeclient inherit from
  • LuaPipeClient: Class implementing a client that connects to a pipe
  • LuaPipeServer: Class launching the server side of a pipe
  • ListBox: The listbox class is a visual component with a list of selectable strings
  • ListColumn: The listcolumn class is an implemented CollectionItem class which is used by the ListColumns class of the listview class
  • ListColumns: The ListColumns class contains the Column class objects of a ListView object
  • ListItem: The ListItem class object is an entry in a ListView
  • ListItems: The listItems class is a container for the ListItem class objects of a Listview
  • Listview: The listview class lets you have a listbox like component with resizable columns
  • MainMenu: The menu at the top of a form
  • Memo: The Memo class is a multiline edit field
  • MemScan: The memscan class is the memory scanner of Cheat engine
  • Menu: Common Class ancestor for the MainMenu and PopupMenu classes
  • MenuItem: Holds the menuitems of a Menu, PopupMenu or even another MenuItem
  • MemoryRecord: The Memoryrecord class object describes a Cheat Table's Cheat Entry.
  • MemoryRecordHotkey: The memoryRecordHotkey class object is part of a MemoryRecord class. It's used as an interface to each individual hotkey inside a Cheat Table
  • MemoryStream: The memorystream class is a Stream class that is stored completely in memory. Because it's a stream there are multiple functions that can work with it
  • Memoryview: The memoryview class is the Memory view window of Cheat Engine. Use this as a basis to access the objects inside this window
  • MultiReadExclusiveWriteSynchronizer:
  • Object: Most basic class. All classes inherit from this class
  • PaintBox:
  • PageControl: This is an object that can hold multiple pages
  • Panel: The Panel class is like a form which can contain visual components.
  • Pen: The Pen class is part of the Canvas object. It's used to draw lines
  • Picture: Container for the Graphic class
  • PopupMenu: The menu that shows when rightclicking on an object
  • PortableNetworkGraphic:
  • ProgressBar: The progressbar class is a visual representation for a bar that can show the current progress on something
  • RadioGroup: The radiogroup is like a GroupBox but autopopulated using the Items(Strings object)
  • RasterImage: Base class for some graphical controls
  • RIPRelativeScanner:
  • OpenDialog: The OpenDialog class is used for selecting files to open.
  • SaveDialog: The SaveDialog class is based on the OpenDialog class but is used to select a file for saving
  • SelectDirectoryDialog:
  • Semaphore:
  • Settings: This class can be used to read out and set settings of cheat engine and of plugins, and store your own data
  • Splitter: The Splitter class is a visual component that lets the user re-size neighboring components)
  • Stringlist: Class that holds a list of strings
  • Strings: Abstract class that some text based classes make use of
  • StringStream:
  • Structure:
  • StructureElement:
  • StructureFrm:
  • structGroup:
  • SymbolList: This class can be used to look up an address to a symbolname, and a symbolname to an address
  • TabSheet: Part of a page control
  • TableFile: Tablefiles are files stored into a Cheat Table. You can access the data of such a file using this class
  • Thread:
  • Timer: The timer class is an non visual component that when active triggers an onTimer event every few milliseconds, based on the given interval
  • ToggleBox: The togglebox is like a button, but can stay down. Use with the checkbox methods
  • TrackBar: The trackbar class is a slider you can drag arround and read/set the state
  • TreeNode:
  • TreeNodes:
  • Treeview:
  • WinControl: Base class for controls which can contain other controls.
  • xmplayer:


SQL Classes[edit]


Class Helper Functions[edit]

Undefined Class Property Functions[edit]

Not all properties of all classes have been explicitly exposed to lua, but if you know the name of a property of a specific class you can still access them (assuming they are declared as published in the pascal class declaration)

  • getPropertyList: Returns a StringList object containing all the published properties of the specified class
  • setProperty: Sets the value of a published property of a class (Won't work for method properties)
  • getProperty: Gets the value of a published property of a class (Won't work for method properties)
  • setMethodProperty: Sets the method property to the specific function
  • getMethodProperty: Returns a function you can use to call the original function