我正在创建一个即将播放视频游戏的程序。当它读到他们是RAM值0x0016的敌人时,它需要按B.我想也许是因为我的while循环B被垃圾邮件太多了?我不确定。目前,在FCEUX上,它表示B按钮被按下,但它保持橙色。我需要按下B按钮一次。
这是我的代码:
JoypadB = {B=true}
JoypadRight = {right=true}
while (true) do
c = memory.readbyte(0x0016);
if (c == 6 ) then
joypad.set(1,JoypadB)
else
joypad.set(1,JoypadRight)
end;
gui.text(100,100,c);
emu.print(c);
emu.frameadvance();
end;
答案 0 :(得分:1)
这个问题并不是关于FCEUX的,而且它并不是真的关于lua。它只有95%的编程,但一些视频游戏常识会有所帮助。按钮被反复按下,因为0x0016重复包含6。只要有敌人,添加一个切换按钮即可实现重复拍摄。您可能需要选择不同的turbo间隔,这是在此示例中所做的:
[a]->a
或者,为了做你真正要求的事情,假设敌人只需要一次击杀,那么只需按下按钮一次,等到下一次敌人消失然后重新出现:
JoypadB = {B=true}
JoypadRight = {right=true}
toggle = 0
while (true) do
c = memory.readbyte(0x0016);
if (c == 6) then
if(toggle==0) then
joypad.set(1,JoypadB)
toggle = 1;
else
joypad.set(1,JoypadRight)
toggle = 0;
end
else
joypad.set(1,JoypadRight)
end;
emu.frameadvance();
end;