Difference between revisions of "Lua"

From Cheat Engine
Jump to navigation Jump to search
Line 3: Line 3:
  
  
== Functions ==
+
= Functions =
  
  
 
=== Cheat table ===
 
=== Cheat table ===
 
 
These functions help manage the cheat table.
 
These functions help manage the cheat table.
  
Line 15: Line 14:
  
 
=== Scanning ===
 
=== Scanning ===
 
 
These functions control Cheat Engine's scanning.
 
These functions control Cheat Engine's scanning.
  
Line 23: Line 21:
  
 
=== Process ===
 
=== Process ===
 
 
* [[openProcess]]: Causes cheat engine to open the given processname or id
 
* [[openProcess]]: Causes cheat engine to open the given processname or id
 
* [[onOpenProcess]]: Called by CE when it opens a process (userdefined)
 
* [[onOpenProcess]]: Called by CE when it opens a process (userdefined)
Line 45: Line 42:
  
 
=== Threads ===
 
=== Threads ===
 
 
* [[getCPUCount]]: Returns the number of CPU's
 
* [[getCPUCount]]: Returns the number of CPU's
 
* [[getThreadlist]]: Fills a List object with the threadlist of the currently opened process
 
* [[getThreadlist]]: Fills a List object with the threadlist of the currently opened process
Line 55: Line 51:
  
 
=== Addresses ===
 
=== Addresses ===
 
 
These functions help convert between memory addresses and [[symbol]]s/[[CEAddressString]]s.
 
These functions help convert between memory addresses and [[symbol]]s/[[CEAddressString]]s.
  
Line 76: Line 71:
  
 
=== Memory ===
 
=== Memory ===
 
 
* [[allocateMemory]]: Allocates some memory into the target process
 
* [[allocateMemory]]: Allocates some memory into the target process
 
* [[deAlloc]]: Frees allocated memory
 
* [[deAlloc]]: Frees allocated memory
Line 87: Line 81:
 
These functions read/write memory from the opened process.
 
These functions read/write memory from the opened process.
  
; Reading
+
==== Reading ====
 
* [[readBytes]]: Returns the bytes at the given address. If ReturnAsTable is true it will return a table instead of multiple bytes
 
* [[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.
 
* [[readSmallInteger]]: Reads a 16-bit integer from the specified address.
Line 98: Line 92:
 
* [[readRegionFromFile]]: Writes the given file to a specific address
 
* [[readRegionFromFile]]: Writes the given file to a specific address
  
; Writing
+
==== Writing ====
 
* [[writeBytes]]: Write the given bytes to the given address from a table
 
* [[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.
 
* [[writeSmallInteger]]: Writes a 16-bit integer to the specified address. Returns true on success.
Line 110: Line 104:
  
 
=== Input devices ===
 
=== Input devices ===
 
 
These functions get/set keyboard/mouse input.
 
These functions get/set keyboard/mouse input.
  
Line 123: Line 116:
 
* [[setGlobalDelayBetweenHotkeyActivation]]: Sets the minimum delay between the activation of the same hotey in milliseconds
 
* [[setGlobalDelayBetweenHotkeyActivation]]: Sets the minimum delay between the activation of the same hotey in milliseconds
  
; Game Controller
+
==== Game Controller ====
 
* [[getXBox360ControllerState]]: Fetches the state of the connected XBox controller
 
* [[getXBox360ControllerState]]: Fetches the state of the connected XBox controller
 
* [[setXBox360ControllerVibration]]: Sets the speed of the left and right vibrating motor inside the controller
 
* [[setXBox360ControllerVibration]]: Sets the speed of the left and right vibrating motor inside the controller
  
; Clipboard
+
==== Clipboard ====
 
* [[writeToClipboard]]: Writes the given text to the clipboard
 
* [[writeToClipboard]]: Writes the given text to the clipboard
 
* [[readFromClipboard]]: Reads the text from the clipboard
 
* [[readFromClipboard]]: Reads the text from the clipboard
Line 133: Line 126:
  
 
=== Screen ===
 
=== Screen ===
 
 
* [[getScreenHeight]]: Returns the screen height
 
* [[getScreenHeight]]: Returns the screen height
 
* [[getScreenWidth]]: Returns the screen  width
 
* [[getScreenWidth]]: Returns the screen  width
Line 143: Line 135:
  
 
=== Sounds ===
 
=== Sounds ===
 
 
* [[playSound]]: Plays a sound file
 
* [[playSound]]: Plays a sound file
 
* [[beep]]: Plays the fabulous beep/ping sound!
 
* [[beep]]: Plays the fabulous beep/ping sound!
Line 150: Line 141:
 
* [[speakEnglish]]: Will try the English voice by wrapping the given text into an XML statement specifying the English voice
 
* [[speakEnglish]]: Will try the English voice by wrapping the given text into an XML statement specifying the English voice
  
; xmplayer
+
==== xmplayer ====
 
* [[xmplayer_playXM]]: Plays the given filename using the xmplayer
 
* [[xmplayer_playXM]]: Plays the given filename using the xmplayer
 
* [[xmplayer_pause]]: Pauses the current xm audio file
 
* [[xmplayer_pause]]: Pauses the current xm audio file
Line 159: Line 150:
  
 
=== Text to Speech ===
 
=== Text to Speech ===
 
 
* [[speak]]: Speaks a given text.
 
* [[speak]]: Speaks a given text.
 
* [[speakEnglish]]: Speaks a given text with English voice.
 
* [[speakEnglish]]: Speaks a given text with English voice.
Line 184: Line 174:
  
 
=== Cheat Engine ===
 
=== Cheat Engine ===
 
 
These functions help manage Cheat Engine itself.
 
These functions help manage Cheat Engine itself.
  
Line 202: Line 191:
 
* [[unregisterFormAddNotification]]: unregister the FormAddNotification call back
 
* [[unregisterFormAddNotification]]: unregister the FormAddNotification call back
 
* [[connectToCEServer]]: Connects to the given host and port. On success, most commands subsequent will be handled by the server
 
* [[connectToCEServer]]: Connects to the given host and port. On success, most commands subsequent will be handled by the server
 
 
* [[unhideMainCEwindow]]: Shows the main Cheat Engine window
 
* [[unhideMainCEwindow]]: Shows the main Cheat Engine window
 
* [[hideAllCEWindows]]: Makes all normal Cheat Engine windows invisible (e.g trainer table)
 
* [[hideAllCEWindows]]: Makes all normal Cheat Engine windows invisible (e.g trainer table)
Line 211: Line 199:
 
* [[writeBytesLocal]]: writeBytes, but for Cheat Engine's own memory
 
* [[writeBytesLocal]]: writeBytes, but for Cheat Engine's own memory
  
; Messages
+
==== Messages ====
 
* [[showMessage]]: Shows a message box with the given text
 
* [[showMessage]]: Shows a message box with the given text
 
* [[messageDialog]]: Pops up a message box
 
* [[messageDialog]]: Pops up a message box
 
* [[outputDebugString]]: Outputs a message using the windows OutputDebugString message
 
* [[outputDebugString]]: Outputs a message using the windows OutputDebugString message
  
; Input
+
==== Input ====
 
* [[inputQuery]]: Shows a dialog where the user can input a string. This function returns the given string, or nil on cancel  (CE6.4+)
 
* [[inputQuery]]: Shows a dialog where the user can input a string. This function returns the given string, or nil on cancel  (CE6.4+)
  
; Shortcuts
+
==== Shortcuts ====
 
* [[shortCutToText]]: Returns the textual representation of the given shortcut value (integer) (6.4+)
 
* [[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+)
 
* [[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
 
* [[convertKeyComboToString]]: Returns a string representation of the given keys like the hot-key handler does
  
; Speed Hack
+
==== Speed Hack ====
 
* [[speedhack_setSpeed]]: Enables the speed hack if it was not active yet and sets the given speed
 
* [[speedhack_setSpeed]]: Enables the speed hack if it was not active yet and sets the given speed
 
* [[speedhack_getSpeed]]: Returns the last set speed
 
* [[speedhack_getSpeed]]: Returns the last set speed
Line 230: Line 218:
  
 
=== Lua ===
 
=== Lua ===
 
 
These functions help manage Lua itself.
 
These functions help manage Lua itself.
  
Line 238: Line 225:
  
 
=== Types ===
 
=== Types ===
 
 
These functions help structure a process's memory into datatypes.
 
These functions help structure a process's memory into datatypes.
  
Line 247: Line 233:
  
 
=== Object-oriented ===
 
=== Object-oriented ===
 
 
These functions determine how a Lua object fits in the class hierarchy.
 
These functions determine how a Lua object fits in the class hierarchy.
  
Line 268: Line 253:
 
* [[registerAssembler]]: Registers a function to be called when the single line assembler is invoked to convert an instruction to a list of bytes
 
* [[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
 
* [[unregisterAssembler]]: Unregisters the registered assembler
 +
  
 
=== Auto Assembler ===
 
=== Auto Assembler ===
 
 
* [[registerAutoAssemblerCommand]]: Registers an auto assembler command to call the specified function
 
* [[registerAutoAssemblerCommand]]: Registers an auto assembler command to call the specified function
 
* [[unregisterAutoAssemblerCommand]]: Unregisters an auto assembler command
 
* [[unregisterAutoAssemblerCommand]]: Unregisters an auto assembler command
Line 280: Line 265:
 
* [[generateAOBInjectionScript]]: Adds an AOB injection script to the given script
 
* [[generateAOBInjectionScript]]: Adds an AOB injection script to the given script
 
* [[generateFullInjectionScript]]: Adds a Full Injection script to the given script
 
* [[generateFullInjectionScript]]: Adds a Full Injection script to the given script
 
  
  
 
=== Debugger ===
 
=== Debugger ===
 
 
These functions manage the debugger. See ''[[Lua Debugging]]''.
 
These functions manage the debugger. See ''[[Lua Debugging]]''.
  
Line 301: Line 284:
  
 
=== DBK ===
 
=== DBK ===
 
 
* [[dbk_initialize]]: Loads the DBK driver into memory if possible
 
* [[dbk_initialize]]: Loads the DBK driver into memory if possible
 
* [[dbk_useKernelmodeOpenProcess]]: Switches the internal pointer of the OpenProcess api to dbk_OpenProcess
 
* [[dbk_useKernelmodeOpenProcess]]: Switches the internal pointer of the OpenProcess api to dbk_OpenProcess
Line 317: Line 299:
  
 
=== Translation ===
 
=== Translation ===
 
 
* [[getTranslationFolder]]: Returns the path of the current translation files, empty if there is no translation going on
 
* [[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
 
* [[loadPOFile]]: Loads a ''".PO"'' file used for translation
Line 325: Line 306:
  
 
=== Files ===
 
=== Files ===
 
 
* [[getFileVersion]]: Returns the 64-bit file version, and a table that has split up the file version into major, minor, release and build]]
 
* [[getFileVersion]]: Returns the 64-bit file version, and a table that has split up the file version into major, minor, release and build]]
 
* [[getDirectoryList]]: Returns an indexed table with directory names
 
* [[getDirectoryList]]: Returns an indexed table with directory names
Line 338: Line 318:
  
 
=== Miscellaneous ===
 
=== Miscellaneous ===
 
 
* [[getPixel]]: Returns the rgb value of the pixel at the specific screen coordinate
 
* [[getPixel]]: Returns the rgb value of the pixel at the specific screen coordinate
 
* [[injectDll]]: Injects a dll
 
* [[injectDll]]: Injects a dll
Line 366: Line 345:
  
  
 +
= Classes =
 
Besides the above functions, Cheat Engine also implements some classes.
 
Besides the above functions, Cheat Engine also implements some classes.
 
== Classes ==
 
  
 
* [[Addresslist]]: The addresslist class is a container for memory records
 
* [[Addresslist]]: The addresslist class is a container for memory records

Revision as of 09:11, 4 January 2018

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


Functions

Cheat table

These functions help manage the cheat table.


Scanning

These functions control Cheat Engine's scanning.


Process


Threads

  • 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


Addresses

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


Memory


These functions read/write memory from the opened process.

Reading

  • 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

  • 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.


Input devices

These functions get/set keyboard/mouse input.

Game Controller

Clipboard


Screen


Sounds

xmplayer


Text to Speech


Fonts


Forms and Windows


Cheat Engine

These functions help manage Cheat Engine itself.

Messages

Input

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

Shortcuts

  • 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


Lua

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


Types

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


Object-oriented

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


Assembly

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


Debugger

These functions manage the debugger. See Lua Debugging.


DBK


Translation

  • 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

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


Structures


Miscellaneous


Classes

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

  • Addresslist: The addresslist class is a container for memory records
  • 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
  • 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)
  • 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
  • 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, 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
  • 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)

See:

  • 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)