|
-
Sambo
- Topic author, Count
 -
-
Sambo
- Topic author, Count
 - Age: 25
- Reputation: 15
- Posts: 264
- Joined: 27 Jun 2014
Post #3by Sambo » 5 May 2015, 3:58
Kevsoft wrote:Where did you get the address 0x00CB3C28? I found the address for screen width and write traced it. The pointer I found works in Cheat Engine. Kevsoft wrote:Also why do you use FIELD_BYTE for getting a pointer?
What field type should it be? I tried BYTE, WORD, and DWORD. They all caused it to crash editThe code seems to work by itself, but if I run it in addition to all my other code, it crashes SMBX. Do you think I might be telling it to do too much at once? Here is the whole script: - Spoiler
Code: Select all --Custom HUD --Coded by Sambo --User Data _G["saveData"] = Data(Data.DATA_WORLD, "Save", true) --npc counter function countNPCID(id) local npcs = findnpcs(id, -1) local count = 0 for k,v in pairs(npcs) do count = count + 1 end return count end _G ["save"] = function() saveData:set("coins", coins.. "") saveData:set("DCoins", DCoins .. "") saveData:save() end function onEvent(eventName) if runTest ~= eventName then runTest = eventName if split_route == false then if eventName == "dc-trig-1" then _G["saveData"]:set(level_code .. "-dc-1", "collected") DCoins = DCoins + 1 placeSprite(1, 7, 472 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-2" then _G["saveData"]:set(level_code .. "-dc-2", "collected") DCoins = DCoins + 1 placeSprite(1, 7, 484 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 7, 496 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-4" then _G["saveData"]:set(level_code .. "-dc-4", "collected") DCoins = DCoins + 1 placeSprite(1, 7, 508 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-5" then _G["saveData"]:set(level_code .. "-dc-5", "collected") DCoins = DCoins + 1 placeSprite(1, 7, 520 - split_screen_offset, 72) triggerEvent("dc-trig-hide") end elseif split_route == true then if eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 534 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 546 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 558 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 570 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 582 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 520 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 508 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 496 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 484 - split_screen_offset, 72) triggerEvent("dc-trig-hide") elseif eventName == "dc-trig-3" then _G["saveData"]:set(level_code .. "-dc-3", "collected") DCoins = DCoins + 1 placeSprite(1, 2, 472 - split_screen_offset, 72) triggerEvent("dc-trig-hide") end end end end function onLoad() loadImage ("../HUD/hud.bmp", 1, 0xdc00ff); loadImage("../HUD/starslot.bmp", 5, 0xdc00ff); level_cleared = 0 -- Set to 1 if the level has been cleared checkpoint = 0 -- Set to 1 if the checkpoint has been reached HUD_loaded = nil --Controls HUD loading and reloading runTest = "" coin_switch = 0 --Set to 1 if collected Dragon Coins have been turned gray --Get number of Dragon Coins _G["DCoins"] = _G["saveData"]:get("DCoins") if(DCoins == "") then _G["DCoins"] = 0 else _G["DCoins"] = tonumber(DCoins) end --Hide default HUD hud(false) coins = _G["saveData"]:get("coins") if(coins == "") then coins = 0 else coins = tonumber(coins) end end function onLoop() --Coin collection algorithm if mem(0x00b2c5a8, FIELD_WORD) ~= 0 then oneUp = oneUp + mem(0x00b2c5a8, FIELD_WORD) coins = coins + mem(0x00b2c5a8, FIELD_WORD) mem(0x00b2c5a8, FIELD_WORD, 0) end --Coin counter printText(coins.. "", 514, 14) --1up management if oneUp == nil then -- "# Comparison to nil value" bugfix oneUp = 0 end if oneUp >= 100 then mem(0x00b2c5ac, FIELD_FLOAT, mem(0x00b2c5ac, FIELD_FLOAT) + 1) --Give the player a 1up playSFX(15) -- Play 1up SFX oneUp = oneUp - 100 -- reset counter end --Save userdata if checkpoint is reached local checkpoint_count = countNPCID(192) if checkpoint_count == 0 and checkpoint == 0 then save() checkpoint = 1 end --Save userdata if level is completed if winState() ~= 0 and level_cleared == 0 then save() level_cleared = 1 end --Player Checks --Offset control for P1's Reserve Box if (player2 ~= nil) then reserve_offset_x = 20 reserve_offset_y = 4 triggerEvent("2P Item Mode") --Offset control for split-screen mode (Let's try with a pointer) if mem(mem(0x00CB3C28, FIELD_WORD) + 48, FIELD_DWORD) == 400 then split_screen_offset = 170 else split_screen_offset = 0 end else reserve_offset_x = 0 reserve_offset_y = 0 split_screen_offset = 0 -- if player2 ~= nil then -- [TEMPORARY], remove after code has been fixed -- triggerEvent("2P Item Mode") -- end --[/TEMPORARY], remove after code has been fixed end --Life counter printText(mem(0x00b2c5ac, FIELD_FLOAT).. "", 292 - split_screen_offset, 14) --Star counter printText(mem(0x00b251e0, FIELD_DWORD).. "", 292 - split_screen_offset, 44) --Dragon Coin counter printText(DCoins .. "", 514 - split_screen_offset, 44) --Reserve Box (player 1) if reserve ~= player:mem(0x158, FIELD_WORD) then reserve = player:mem(0x158, FIELD_WORD) if reserve == 0 then loadImage("NONE", 3, 0xdc00ff) elseif reserve == 184 then loadImage("../HUD/smb_shroom.bmp", 3, 0xdc00ff) elseif reserve == 182 then loadImage("../HUD/smb_flower.bmp", 3, 0xdc00ff) elseif reserve == 9 then loadImage("../HUD/smb3_shroom.bmp", 3, 0xdc00ff) elseif reserve == 14 then loadImage("../HUD/smb3_flower.bmp", 3, 0xdc00ff) elseif reserve == 34 then loadImage("../HUD/leaf.bmp", 3, 0xdc00ff) elseif reserve == 264 then loadImage("../HUD/smb3_iceflower.bmp", 3, 0xdc00ff) elseif reserve == 169 then loadImage("../HUD/tanooki_suit.bmp", 3, 0xdc00ff) elseif reserve == 170 then loadImage("../HUD/hammer_suit.bmp", 3, 0xdc00ff) elseif reserve == 248 then loadImage("../HUD/stopwatch.bmp", 3, 0xdc00ff) elseif reserve == 185 then loadImage("../HUD/smw_shroom.bmp", 3, 0xdc00ff) elseif reserve == 183 then loadImage("../HUD/smw_flower.bmp", 3, 0xdc00ff) elseif reserve == 277 then loadImage("../HUD/smw_iceflower.bmp", 3, 0xdc00ff) end placeSprite(1, 3, 384 - reserve_offset_x - split_screen_offset, 30 - reserve_offset_y) end --Reserve Box (player 2) if (player2 ~= nil) then if reserve2 ~= player2:mem(0x158, FIELD_WORD) then reserve2 = player2:mem(0x158, FIELD_WORD) if reserve2 == 0 then loadImage("NONE", 4, 0xdc00ff) elseif reserve2 == 184 then loadImage("../HUD/smb_shroom.bmp", 4, 0xdc00ff) elseif reserve2 == 182 then loadImage("../HUD/smb_flower.bmp", 4, 0xdc00ff) elseif reserve == 9 then loadImage("../HUD/smb3_shroom.bmp", 4, 0xdc00ff) elseif reserve2 == 14 then loadImage("../HUD/smb3_flower.bmp", 4, 0xdc00ff) elseif reserve2 == 34 then loadImage("../HUD/leaf.bmp", 4, 0xdc00ff) elseif reserve2 == 264 then loadImage("../HUD/smb3_iceflower.bmp", 4, 0xdc00ff) elseif reserve2 == 169 then loadImage("../HUD/tanooki_suit.bmp", 4, 0xdc00ff) elseif reserve2 == 170 then loadImage("../HUD/hammer_suit.bmp", 4, 0xdc00ff) elseif reserve2 == 248 then loadImage("../HUD/stopwatch.bmp", 4, 0xdc00ff) elseif reserve2 == 185 then loadImage("../HUD/smw_shroom.bmp", 4, 0xdc00ff) elseif reserve2 == 183 then loadImage("../HUD/smw_flower.bmp", 4, 0xdc00ff) elseif reserve2 == 277 then loadImage("../HUD/smw_iceflower.bmp", 4, 0xdc00ff) end placeSprite(1, 4, 406 - split_screen_offset, 26) end end --HUD loader (loads the HUD in a different postion if the screen splits) if (HUD_loaded ~= reserve_offset_x + split_screen_offset) then HUD_loaded = reserve_offset_x + split_screen_offset reserve, reserve2 = nil, nil _G["dc-ind-change"] = 1 --Load custom HUD placeSprite (1, 1, 174 - split_screen_offset, 10) --Load reserve box if (player2 ~= nil) then loadImage ("../HUD/2P_reserve.bmp", 2, 0xdc00ff) placeSprite (1, 2, 352 - split_screen_offset, 10) else loadImage ("../HUD/1P_reserve.bmp", 2, 0xdc00ff) placeSprite (1, 2, 364, 10) end --Load indicator image loadImage("../HUD/ind.bmp", 7, 0xdc00ff) --Show obtained dragon coins; replace collected with gray dragon coin if coin_switch == 0 then if split_route == false then if(saveData:get(level_code .. "-dc-1") == "collected") then placeSprite(1, 7, 472, 72) triggerEvent("dcc-1") end if(saveData:get(level_code .. "-dc-2") == "collected") then placeSprite(1, 7, 484, 72) triggerEvent("dcc-2") end if(saveData:get(level_code .. "-dc-3") == "collected") then placeSprite(1, 7, 496, 72) triggerEvent("dcc-3") end if(saveData:get(level_code .. "-dc-4") == "collected") then placeSprite(1, 7, 508, 72) triggerEvent("dcc-4") end if(saveData:get(level_code .. "-dc-5") == "collected") then placeSprite(1, 7, 520, 72) triggerEvent("dcc-5") end coin_switch = 1 else if (saveData:get(level_code .. "-dc-1") == "collected") then placeSprite(1, 2, 534, 72) triggerEvent("dcc-1") end if (saveData:get(level_code .. "-dc-2") == "collected") then placeSprite(1, 2, 546, 72) triggerEvent("dcc-2") end if (saveData:get(level_code .. "-dc-3") == "collected") then placeSprite(1, 2, 558, 72) triggerEvent("dcc-3") end if (saveData:get(level_code .. "-dc-4") == "collected") then placeSprite(1, 2, 570, 72) triggerEvent("dcc-4") end if (saveData:get(level_code .. "-dc-5") == "collected") then placeSprite(1, 2, 582, 72) triggerEvent("dcc-5") end if (saveData:get(level_code .. "-dc-L1") == "collected") then placeSprite(1, 2, 520, 72) triggerEvent("dcc-L1") end if (saveData:get(level_code .. "-dc-L2") == "collected") then placeSprite(1, 2, 508, 72) triggerEvent("dcc-L2") end if (saveData:get(level_code .. "-dc-L3") == "collected") then placeSprite(1, 2, 496, 72) triggerEvent("dcc-L3") end if (saveData:get(level_code .. "-dc-L4") == "collected") then placeSprite(1, 2, 484, 72) triggerEvent("dcc-L4") end if (saveData:get(level_code .. "-dc-L5") == "collected") then placeSprite(1, 2, 472, 72) triggerEvent("dcc-L5") end end coin_switch = 1 end --Show orbs that have been obtained local orb = _G["saveData"]:get("orb_lb") if(orb == "collected") then loadImage ("../HUD/orb_lb.bmp", 6, 0xdc00ff) placeSprite (1, 8, 186 - split_screen_offset, 10) end orb = _G["saveData"]:get("orb_p") if(orb == "collected") then loadImage ("../HUD/orb_p.bmp", 7, 0xdc00ff) placeSprite (1, 9, 210 - split_screen_offset, 10) end orb = _G["saveData"]:get("orb_g") if(orb == "collected") then loadImage ("../HUD/orb_g.bmp", 8, 0xdc00ff) placeSprite (1, 10, 174 - split_screen_offset, 32) end orb = _G["saveData"]:get("orb_w") if(orb == "collected") then loadImage ("../HUD/orb_w.bmp", 9, 0xdc00ff) placeSprite (1, 11, 198 - split_screen_offset, 32) end orb = _G["saveData"]:get("orb_r") if(orb == "collected") then loadImage ("../HUD/orb_r.bmp", 10, 0xdc00ff) placeSprite (1, 12, 222 - split_screen_offset, 32) end orb = _G["saveData"]:get("orb_y") if(orb == "collected") then loadImage ("../HUD/orb_y.bmp", 11, 0xdc00ff) placeSprite (1, 13, 186 - split_screen_offset, 54) end orb = _G["saveData"]:get("orb_w") if(orb == "collected") then loadImage ("../HUD/orb_db.bmp", 12, 0xdc00ff) placeSprite (1, 14, 210 - split_screen_offset, 54) end end end
 Current Project: 
| |