使用简短的LUA脚本崩溃BizHawk

时间:2016-01-22 17:55:36

标签: lua

在BizHawk(它是模拟器)的lua控制台上使用这个非常短的脚本时,LUA控制台和BizHawk同时崩溃。 我想知道错误是来自我的脚本还是来自BizHawk,她的脚本是:(它应该做的是检查玩家是否在一段时间内没有移动[TimeoutConstant]如果他[因为他死了,卡住或者afk],脚本会加载一个名为Filename的保存状态,然后重新开始。这是脚本:

Filename = "yolo.state"
TimeoutConstant = 80
rightmost = 0
timeout = TimeoutConstant

function initializeRun()
    savestate.load(Filename)
    rightmost = 0
    timeout = TimeoutConstant
end

function getPositions()
    marioX = memory.read_s16_le(0x94)
    marioY = memory.read_s16_le(0x96)

    local layer1x = memory.read_s16_le(0x1A);
    local layer1y = memory.read_s16_le(0x1C);

    screenX = marioX-layer1x
    screenY = marioY-layer1y
end

initializeRun()

while true do
    getPositions()

    if marioX > rightmost then
        rightmost = marioX
        timeout = TimeoutConstant
    end

    if timeout <= 0 then
        initializeRun()
    end 

    timeout = timeout - 1
end

1 个答案:

答案 0 :(得分:0)

我认为“崩溃”你的意思是“冻结”,这根本不是同一件事。它很冻结,因为你的脚本正在将模拟器置于繁忙的循环中。你没有做任何事情来推动模拟器的时间。脚本的最后两行必须是:

emu.frameadvance();
end
BTW,使用模拟器lua脚本,正在编写脚本的游戏名称是必不可少的信息。