Cheat Engine Forum Index Cheat Engine
The Official Site of Cheat Engine
 
 FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 


{$lua} error

 
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Lua Scripting
View previous topic :: View next topic  
Author Message
theblueflame
How do I cheat?
Reputation: 0

Joined: 21 Sep 2022
Posts: 1

PostPosted: Wed Sep 21, 2022 4:11 pm    Post subject: {$lua} error Reply with quote

i would get an error when running this it will tell me lua error in the script at line 2 (this is line to " {$lua} ") and one more error of " StardewValley.Game1::Update not available yet. Please try again later " so i dont know whats wrong with the code.
and also i cant seem to find DotNetDataCollector in task manager so i dont know if that means its not working

this is the code

[ENABLE]
{$lua}
if syntaxcheck then
return
end

-- thanks to aSwedishMagyar
function getStructureByName(structName)
local numStructs = getStructureCount() - 1
for i = 0,numStructs do
local struct = getStructure(i)
if struct.Name == structName then return struct end
end
return nil
end

function checkDotNetSymbol(hook)
errorOnLookupFailure(false)
if getAddress(hook)==0 then
reinitializeDotNetSymbolhandler()

if getAddress(hook)==0 then
showMessage(hook .. ' is not available yet. Please try again later')
error()
return false
end
end
return true
end


local function checkPointer(p)
local a = getAddressSafe(p)
if a == nil or a == 0 then
--print(p .. ' not found')
return -1
end

a = getAddressSafe('[' .. p .. ']')
if a == nil or a == 0 then
--print(p .. ' is 0')
return 0
end
return 1
end


local Offsetable = {}
Offsetable.__index = Offsetable

function Offsetable.get(s)
local r = s.extended
s.extended = s.base
return r
end

function Offsetable.add(s, m)
s.extended = '[' .. s.extended .. '+' .. m .. ']'
return s
end

function Offsetable.new(base)
local s = {}
s.base = '[' .. base .. ']'
s.extended = s.base
return setmetatable(s, Offsetable)
end


StructResolver = {}
StructResolver.__index = StructResolver
StructResolver.queue = {}
StructResolver.timer = nil

function StructResolver.resolve(_this)
if _this.done == true then
return true
end

if checkPointer(_this.base) ~= 1 then
return false
end

local o = Offsetable.new(_this.base)

for i=1,#_this.structs do
for j=1,#_this.structs[i].offsets do
o = o:add(_this.structs[i].offsets[j])
end

local a = getAddressSafe(o:get())

if a == nil or a == 0 then
return false
end

local struct = getStructureByName(_this.structs[i].name)

if struct then
struct.removeFromGlobalStructureList()
end

struct = createStructure(_this.structs[i].name)

struct.addToGlobalStructureList()
struct.fillFromDotNetAddress(a,false)
print('Updated struct ' .. _this.structs[i].name)
end

_this.done = true
return true
end

function StructResolver.resolveOrError(_this)
if _this:resolve() == false then
error()
end
end

function StructResolver.onTimer(timer)
for i=1,#StructResolver.queue do
StructResolver.queue[i]:resolve()
end

for i=1,#StructResolver.queue do
if StructResolver.queue[i].done == false then
return
end
end

writeBytes(getAddress('struct_update_status'), 1)
timer.destroy()
if StructResolver.timer ~= nil then
StructResolver.timer = nil
end
print('ok')
end

function StructResolver.async(base, structs)
for i=1,#StructResolver.queue do
if StructResolver.queue[i].base == base then
return false
end
end

table.insert(StructResolver.queue, StructResolver.new(base, structs))

if StructResolver.timer == nil then
StructResolver.timer = createTimer()
StructResolver.timer.Interval = 1000
StructResolver.timer.OnTimer = StructResolver.onTimer
end

return true
end

function StructResolver.clear()
while getStructureCount() > 0 do
getStructure(0).removeFromGlobalStructureList()
end
end

function StructResolver.shutdown()
if StructResolver.timer ~= nil then
StructResolver.timer.destroy()
StructResolver.timer = nil
writeBytes(getAddress('struct_update_status'), -1)
end
end

function StructResolver.new(base, structs)
local r = {}

r.base = base
r.structs = structs
r.done = false

return setmetatable(r, StructResolver)
end

_subscripts = {
'_hook_game1_',
'_hook_chatbox_',
'_hook_melee_weapon_',
}

local symbols = {
'StardewValley.Game1::Update',
'StardewValley.Game1::get_player',
'StardewValley.Game1::UpdateChatBox',
'StardewValley.Tools.MeleeWeapon::tickUpdate',
}

for i=1,#symbols do
if not checkDotNetSymbol(symbols[i]) then
return
end
end

local al = getAddressList()
if not al then
showMessage('Failed to get address list')
error()
end

for i=1,#_subscripts do
local mr = al.getMemoryRecordByDescription(_subscripts[i])
if not mr then
showMessage(string.format('failed to enable subscript %i (%s)', i, _subscripts[i]))
error()
end
mr.Active = true
end

StructResolver.async('game1_base_ptr', {
{ name = 'Game1', offsets = {} },
})

StructResolver.async('farmer_base_ptr', {
{ name = 'Farmer', offsets = {} },
{ name = 'teamRoot', offsets = {'farmer.teamRoot'} },
{ name = 'Team', offsets = {'farmer.teamRoot', 'teamRoot.value'} },
{ name = 'netInt', offsets = {'farmer.netSpeed'} },
{ name = 'netIntList', offsets = {'farmer.professions'} },
{ name = 'netDouble', offsets = {'farmer.teamRoot', 'teamRoot.value', 'Team.sharedDailyLuck'} },
{ name = 'netBool', offsets = {'farmer.Exhausted'} },
{ name = 'netString', offsets = {'farmer.name'} },
{ name = 'String', offsets = {'farmer.name', 'netString.value'} },
{ name = 'netFloat', offsets = {'farmer.scale'} },
})

StructResolver.async('wateringcan_base_ptr', {
{ name = 'WateringCan', offsets = {} },
})

StructResolver.async('chatbox_base_ptr', {
{ name = 'ChatBox', offsets = {} },
})

StructResolver.async('abigailgame_base_ptr', {
{ name = 'AbigailGame', offsets = {} },
})

StructResolver.async('minecartgame_base_ptr', {
{ name = 'MinecartGame',offsets = {} },
})

StructResolver.async('crop_base_ptr', {
{ name = 'Crop', offsets = {} },
})

StructResolver.async('object_base_ptr', {
{ name = 'Object', offsets = {} },
})

StructResolver.async('tool_base_ptr', {
{ name = 'Tool', offsets = {} },
})

StructResolver.async('melee_weapon_base_ptr', {
{ name = 'Weapon', offsets = {} },
})

{$asm}
globalalloc(struct_update_status,1)

struct_update_status:
db 0

[DISABLE]
{$lua}
if syntaxcheck then return end
StructResolver.shutdown()
StructResolver.clear()

local al = getAddressList()
if al then
for i=1,#_subscripts do
local mr = al.getMemoryRecordByDescription(_subscripts[i])
if mr then
mr.Active = false
end
end
end

{$asm}
Back to top
View user's profile Send private message
Display posts from previous:   
Post new topic   Reply to topic    Cheat Engine Forum Index -> Cheat Engine Lua Scripting All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum
You cannot attach files in this forum
You can download files in this forum


Powered by phpBB © 2001, 2005 phpBB Group

CE Wiki   IRC (#CEF)   Twitter
Third party websites