Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- --2024.10.12
- --首发:http://forum.cheatmaker.org/
- --显示血量.
- -- 定义内存地址和内存类型
- local playerHpAddress = 0x3A
- local playerXAddressLow = 0x360
- local playerXAddressHigh = 0x380
- local playerYAddress = 0x3C0
- local nes_screen_x = 0x25
- local memoryType = emu.memType.nesInternalRam
- -- 敌人1的内存地址
- local enemy1HpAddress = 0x49C
- local enemy1XAddressLow = 0x36C
- local enemy1XAddressHigh = 0x38C
- local enemy1YAddress = 0x3CC
- -- 敌人2的内存地址
- local enemy2HpAddress = 0x49D
- local enemy2XAddressLow = 0x36D
- local enemy2XAddressHigh = 0x38D
- local enemy2YAddress = 0x3CD
- -- 敌人状态地址
- local enemyStatusAddress = 0x031C -- 0x0: 敌人死亡, 0x80: 敌人存活
- local hpOffsetX = -6
- local hpOffsetY = -25
- emu.addEventCallback(function()
- local playerHp = emu.read(playerHpAddress, memoryType)
- local playerXLow = emu.read(playerXAddressLow, memoryType)
- local playerXHigh = emu.read(playerXAddressHigh, memoryType)
- local playerY = emu.read(playerYAddress, memoryType)
- local screen_x = emu.read(nes_screen_x, memoryType)
- local playerX
- local combinedX = playerXLow + playerXHigh * 256
- if playerXLow > screen_x then
- playerX = playerXLow - screen_x
- elseif screen_x > playerXLow then
- playerX = (playerXHigh == 1) and (combinedX - screen_x) or (playerXLow + 256 - screen_x)
- else
- playerX = playerXLow
- end
- local hpTextX = playerX + hpOffsetX
- local hpTextY = playerY + hpOffsetY
- local enemy1Hp = emu.read(enemy1HpAddress, memoryType)
- local enemy1XLow = emu.read(enemy1XAddressLow, memoryType)
- local enemy1XHigh = emu.read(enemy1XAddressHigh, memoryType)
- local enemy1Y = emu.read(enemy1YAddress, memoryType)
- local enemy1X
- local combinedX1 = enemy1XLow + enemy1XHigh * 256
- if enemy1XLow > screen_x then
- enemy1X = enemy1XLow - screen_x
- elseif screen_x > enemy1XLow then
- enemy1X = (enemy1XHigh == 1) and (combinedX1 - screen_x) or (enemy1XLow + 256 - screen_x)
- else
- enemy1X = enemy1XLow
- end
- local enemy1HpTextX = enemy1X + hpOffsetX
- local enemy1HpTextY = enemy1Y + hpOffsetY
- local enemy2Hp = emu.read(enemy2HpAddress, memoryType)
- local enemy2XLow = emu.read(enemy2XAddressLow, memoryType)
- local enemy2XHigh = emu.read(enemy2XAddressHigh, memoryType)
- local enemy2Y = emu.read(enemy2YAddress, memoryType)
- local enemy2X
- local combinedX2 = enemy2XLow + enemy2XHigh * 256
- if enemy2XLow > screen_x then
- enemy2X = enemy2XLow - screen_x
- elseif screen_x > enemy2XLow then
- enemy2X = (enemy2XHigh == 1) and (combinedX2 - screen_x) or (enemy2XLow + 256 - screen_x)
- else
- enemy2X = enemy2XLow
- end
- local enemy2HpTextX = enemy2X + hpOffsetX
- local enemy2HpTextY = enemy2Y + hpOffsetY
- local enemyStatus = emu.read(enemyStatusAddress, memoryType)
- if playerHp ~= 0 and playerHp ~= 255 then
- emu.drawString(hpTextX, hpTextY, "" .. playerHp, 0xFFFFFF, 0xFF000000)
- end
- if enemy1Hp ~= 0 and enemy1Hp < 240 and (enemy1X > 38 and enemy1X < 252) then
- emu.drawString(enemy1HpTextX, enemy1HpTextY, "" .. enemy1Hp, 0xFFFFFF, 0xFF000000)
- end
- if enemy2Hp ~= 0 and enemy2Hp < 240 and (enemy2X > 38 and enemy2X < 252) then
- emu.drawString(enemy2HpTextX, enemy2HpTextY, "" .. enemy2Hp, 0xFFFFFF, 0xFF000000)
- end
- end, emu.eventType.endFrame)
Advertisement