mirror of
https://github.com/cheat-engine/cheat-engine
synced 2026-08-15 02:26:08 -04:00
233 lines
7.6 KiB
ObjectPascal
Executable file
233 lines
7.6 KiB
ObjectPascal
Executable file
unit LuaAddresslist;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils, lua, lualib, lauxlib, LuaHandler, cefuncproc, commonTypeDefs;
|
|
|
|
procedure initializeLuaAddresslist;
|
|
|
|
implementation
|
|
|
|
uses luaclass, memscan, addresslist, MemoryRecordUnit, LuaWinControl;
|
|
|
|
|
|
function addresslist_getCount(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
begin
|
|
addresslist:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, addresslist.Count);
|
|
result:=1;
|
|
end;
|
|
|
|
function addresslist_getSelectedRecords(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
i: integer;
|
|
begin
|
|
result:=0;
|
|
addresslist:=luaclass_getClassObject(L);
|
|
if addresslist.SelCount>0 then
|
|
begin
|
|
lua_newtable(L);
|
|
result:=1;
|
|
|
|
for i:=0 to addresslist.Count-1 do
|
|
begin
|
|
if addresslist[i].isSelected then
|
|
begin
|
|
lua_pushinteger(L, i+1);
|
|
luaclass_newClass(L, addresslist[i]);
|
|
lua_settable(L, -3);
|
|
end;
|
|
end;
|
|
|
|
end;
|
|
|
|
|
|
end;
|
|
|
|
function addresslist_getMemoryRecord(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
index: integer;
|
|
s: string;
|
|
begin
|
|
result:=0;
|
|
addresslist:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
if lua_isnumber(L,-1) then
|
|
begin
|
|
index:=lua_tointeger(L,-1);
|
|
luaclass_newClass(L, addresslist.MemRecItems[index]);
|
|
end
|
|
else
|
|
begin
|
|
s:=Lua_ToString(L,-1);
|
|
luaclass_newClass(L, addresslist.getRecordWithDescription(s));
|
|
end;
|
|
result:=1;
|
|
end;
|
|
end;
|
|
|
|
function addresslist_getMemoryRecordByDescription(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
description: string;
|
|
paramstart, paramcount: integer;
|
|
begin
|
|
result:=0;
|
|
addresslist:=luaclass_getClassObject(L, @paramstart, @paramcount);
|
|
if paramcount>=1 then
|
|
begin
|
|
description:=Lua_ToString(L,paramstart);
|
|
luaclass_newClass(L, addresslist.getRecordWithDescription(description));
|
|
result:=1;
|
|
end;
|
|
end;
|
|
|
|
function addresslist_getMemoryRecordByID(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
id: integer;
|
|
begin
|
|
result:=0;
|
|
addresslist:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
id:=lua_tointeger(L,-1);
|
|
luaclass_newClass(L, addresslist.getRecordWithID(id));
|
|
result:=1;
|
|
end;
|
|
end;
|
|
|
|
function addresslist_createMemoryRecord(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
begin
|
|
addresslist:=luaclass_getClassObject(L);
|
|
luaclass_newClass(L, addresslist.addaddress(rsPluginAddress, '0', [], 0, vtDword));
|
|
result:=1;
|
|
end;
|
|
|
|
function addresslist_doDescriptionChange(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TAddresslist(luaclass_getClassObject(L)).doDescriptionChange;
|
|
|
|
end;
|
|
|
|
function addresslist_doAddressChange(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TAddresslist(luaclass_getClassObject(L)).doAddressChange;
|
|
end;
|
|
|
|
function addresslist_doTypeChange(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TAddresslist(luaclass_getClassObject(L)).doTypeChange;
|
|
end;
|
|
|
|
function addresslist_disableAllWithoutExecute(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TAddresslist(luaclass_getClassObject(L)).disableAllWithoutExecute;
|
|
end;
|
|
|
|
function addresslist_rebuildDescriptionCache(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TAddresslist(luaclass_getClassObject(L)).rebuildDescriptionCache;
|
|
end;
|
|
|
|
|
|
|
|
|
|
function addresslist_doValueChange(L: PLua_State): integer; cdecl;
|
|
begin
|
|
result:=0;
|
|
TAddresslist(luaclass_getClassObject(L)).doValueChange;
|
|
end;
|
|
|
|
function addresslist_getSelectedRecord(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
begin
|
|
addresslist:=luaclass_getClassObject(L);
|
|
luaclass_newClass(L, addresslist.SelectedRecord);
|
|
result:=1;
|
|
end;
|
|
|
|
function addresslist_setSelectedRecord(L: PLua_State): integer; cdecl;
|
|
var
|
|
addresslist: TAddresslist;
|
|
r: TMemoryRecord;
|
|
begin
|
|
result:=0;
|
|
addresslist:=luaclass_getClassObject(L);
|
|
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
r:=lua_toceuserdata(L,-1);
|
|
addresslist.selectedRecord:=r;
|
|
end;
|
|
end;
|
|
|
|
procedure addresslist_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
begin
|
|
wincontrol_addMetaData(L, metatable, userdata);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getCount', addresslist_getCount);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getMemoryRecord', addresslist_getMemoryRecord);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getMemoryRecordByDescription', addresslist_getMemoryRecordByDescription);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getMemoryRecordByID', addresslist_getMemoryRecordByID);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'createMemoryRecord', addresslist_createMemoryRecord);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getSelectedRecords', addresslist_getSelectedRecords);
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'doDescriptionChange', addresslist_doDescriptionChange);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'doAddressChange', addresslist_doAddressChange);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'doTypeChange', addresslist_doTypeChange);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'doValueChange', addresslist_doValueChange);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getSelectedRecord', addresslist_getSelectedRecord);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'setSelectedRecord', addresslist_setSelectedRecord);
|
|
|
|
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'disableAllWithoutExecute', addresslist_disableAllWithoutExecute);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'rebuildDescriptionCache', addresslist_rebuildDescriptionCache);
|
|
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Count', addresslist_getCount, nil);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'SelectedRecord', addresslist_getSelectedRecord, addresslist_setSelectedRecord);
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'MemoryRecord', addresslist_getMemoryRecord, nil);
|
|
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'MemoryRecord', addresslist_getMemoryRecord, nil);
|
|
luaclass_setDefaultArrayProperty(L, metatable, userdata, addresslist_getMemoryRecord, nil);
|
|
luaclass_setDefaultStringArrayProperty(L, metatable, userdata, addresslist_getMemoryRecordByDescription, nil);
|
|
|
|
end;
|
|
|
|
procedure initializeLuaAddresslist;
|
|
begin
|
|
Lua_register(LuaVM, 'addresslist_getCount', addresslist_getCount);
|
|
Lua_register(LuaVM, 'addresslist_getMemoryRecord', addresslist_getMemoryRecord);
|
|
Lua_register(LuaVM, 'addresslist_getMemoryRecordByDescription', addresslist_getMemoryRecordByDescription);
|
|
Lua_register(LuaVM, 'addresslist_getMemoryRecordByID', addresslist_getMemoryRecordByID);
|
|
Lua_register(LuaVM, 'addresslist_createMemoryRecord', addresslist_createMemoryRecord);
|
|
Lua_register(LuaVM, 'addresslist_getSelectedRecords', addresslist_getSelectedRecords);
|
|
|
|
Lua_register(LuaVM, 'addresslist_doDescriptionChange', addresslist_doDescriptionChange);
|
|
Lua_register(LuaVM, 'addresslist_doAddressChange', addresslist_doAddressChange);
|
|
Lua_register(LuaVM, 'addresslist_doTypeChange', addresslist_doTypeChange);
|
|
Lua_register(LuaVM, 'addresslist_doValueChange', addresslist_doValueChange);
|
|
Lua_register(LuaVM, 'addresslist_getSelectedRecord', addresslist_getSelectedRecord);
|
|
Lua_register(LuaVM, 'addresslist_setSelectedRecord', addresslist_setSelectedRecord);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(TAddresslist, addresslist_addMetaData);
|
|
|
|
end.
|
|
|