mirror of
https://github.com/cheat-engine/cheat-engine
synced 2026-08-15 02:26:08 -04:00
131 lines
3.5 KiB
ObjectPascal
131 lines
3.5 KiB
ObjectPascal
unit LuaFoundlist;
|
|
|
|
{$mode delphi}
|
|
|
|
interface
|
|
|
|
uses
|
|
Classes, SysUtils,lua, lualib, lauxlib, symbolhandler, LuaHandler, cefuncproc,
|
|
memscan, foundlisthelper;
|
|
|
|
|
|
|
|
procedure initializeFoundlist;
|
|
|
|
implementation
|
|
|
|
uses luaclass, luaobject;
|
|
|
|
resourcestring
|
|
rsCreatefoundlistNeedsAMemscanObjectAsParameter = 'createfoundlist needs a memscan object as parameter';
|
|
|
|
function createFoundList(L: Plua_State): integer; cdecl;
|
|
var
|
|
foundlist: TFoundlist;
|
|
memscan: TMemScan;
|
|
begin
|
|
result:=0;
|
|
if lua_gettop(L)=1 then
|
|
memscan:=lua_toceuserdata(L, -1)
|
|
else
|
|
raise exception.create(rsCreatefoundlistNeedsAMemscanObjectAsParameter);
|
|
|
|
foundlist:=TFoundList.create(nil, memscan);
|
|
|
|
luaclass_newClass(L, foundlist);
|
|
result:=1;
|
|
end;
|
|
|
|
function foundlist_initialize(L: Plua_State): integer; cdecl;
|
|
var
|
|
foundlist: Tfoundlist;
|
|
begin
|
|
result:=0;
|
|
foundlist:=luaclass_getClassObject(L);
|
|
foundlist.Initialize;
|
|
end;
|
|
|
|
function foundlist_deinitialize(L: Plua_State): integer; cdecl;
|
|
var
|
|
foundlist: Tfoundlist;
|
|
begin
|
|
result:=0;
|
|
foundlist:=luaclass_getClassObject(L);
|
|
foundlist.Deinitialize;
|
|
end;
|
|
|
|
|
|
function foundlist_getCount(L: PLua_State): integer; cdecl;
|
|
var
|
|
foundlist: Tfoundlist;
|
|
begin
|
|
foundlist:=luaclass_getClassObject(L);
|
|
lua_pushinteger(L, foundlist.count);
|
|
result:=1;
|
|
end;
|
|
|
|
function foundlist_getAddress(L: PLua_State): integer; cdecl;
|
|
var
|
|
foundlist: Tfoundlist;
|
|
index: integer;
|
|
begin
|
|
result:=0;
|
|
foundlist:=luaclass_getClassObject(L);
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
index:=lua_tointeger(L,-1);
|
|
lua_pushstring(L, inttohex(foundlist.GetAddress(index),8));
|
|
result:=1;
|
|
end;
|
|
end;
|
|
|
|
function foundlist_getValue(L: PLua_State): integer; cdecl;
|
|
var
|
|
parameters: integer;
|
|
foundlist: Tfoundlist;
|
|
b: dword;
|
|
value: string;
|
|
index: integer;
|
|
begin
|
|
result:=0;
|
|
foundlist:=luaclass_getClassObject(L);
|
|
|
|
if lua_gettop(L)>=1 then
|
|
begin
|
|
index:=lua_tointeger(L,-1);
|
|
foundlist.GetAddress(index, b, value);
|
|
lua_pushstring(L, value);
|
|
result:=1;
|
|
end;
|
|
end;
|
|
|
|
procedure foundlist_addMetaData(L: PLua_state; metatable: integer; userdata: integer );
|
|
begin
|
|
object_addMetaData(L, metatable, userdata);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'initialize', foundlist_initialize);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'deinitialize', foundlist_deinitialize);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getCount', foundlist_getCount);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getAddress', foundlist_getAddress);
|
|
luaclass_addClassFunctionToTable(L, metatable, userdata, 'getValue', foundlist_getValue);
|
|
|
|
|
|
luaclass_addPropertyToTable(L, metatable, userdata, 'Count', foundlist_getCount, nil);
|
|
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'Address', foundlist_getAddress, nil);
|
|
luaclass_addArrayPropertyToTable(L, metatable, userdata, 'Value', foundlist_getValue, nil);
|
|
end;
|
|
|
|
procedure InitializeFoundlist;
|
|
begin
|
|
Lua_register(LuaVM, 'createFoundList', createFoundList);
|
|
Lua_register(LuaVM, 'foundlist_initialize', foundlist_initialize);
|
|
Lua_register(LuaVM, 'foundlist_deinitialize', foundlist_deinitialize);
|
|
Lua_register(LuaVM, 'foundlist_getCount', foundlist_getCount);
|
|
Lua_register(LuaVM, 'foundlist_getAddress', foundlist_getAddress);
|
|
Lua_register(LuaVM, 'foundlist_getValue', foundlist_getValue);
|
|
end;
|
|
|
|
initialization
|
|
luaclass_register(TFoundList, foundlist_addMetaData);
|
|
|
|
end.
|
|
|