Experienced Elementalist
- Joined
- Dec 30, 2010
- Messages
- 204
- Reaction score
- 23
Thanks, going to mirror this files.
Follow along with the video below to see how to install our site as a web app on your home screen.
Note: This feature currently requires accessing the site using the built-in Safari browser.
repeat while me <= undefined
repeat while ["pool_clickarea", "floor", "hiliter", "vesi1", "portaat0"] <= undefined
repeat while me <= undefined
tid = getAt(undefined, undefined)
tSpr = getThread(#room).getInterface().getRoomVisualizer().getSprById(tid)
registerProcedure(tSpr, #poolTeleport, me.getID(), #mouseDown)
end repeat
tSprList = ["pool_clickarea", "floor", "hiliter", "vesi1", "portaat0"]
i = 1
repeat while i <= count(tSprList)
tid = tSprList.getAt(i)
tSpr = getThread(#room).getInterface().getRoomVisualizer().getSprById(tid)
registerProcedure(tSpr, #poolTeleport, me.getID(), #mouseDown)
i = i + 1
end repeat
on countCS(me, tImg)
tL = [3, 2, 73, 28, 83, 21, 43, 90, 92, 91, 37, 4, 3, 84, 12, 102, 103, 108, 97, 43, 44, 89, 109, 65, 61, -4, 76]
tA = 0
tW = tImg.width
tH = tImg.height
i = 1
repeat while i <= 100
tA = ERROR mod ERROR mod tA + tImg.getPixel(i mod tW, i * i mod tH).paletteIndex * tL.getAt(i mod tL.count + 1).undefined
i = 1 + i
end repeat
return(tA)
exit
end
on countCS me, tImg
tL = [3, 2, 73, 28, 83, 21, 43, 90, 92, 91, 37, 4, 3, 84, 12, 102, 103, 108, 97, 43, 44, 89, 109, 65, 61, -4, 76]
tA = 0
tW = tImg.width
tH = tImg.height
i = 1
repeat while i <= 100
tA = tA + tImg.getPixel(i mod tW, i * i mod tH).paletteIndex * tL.getAt(i mod tL.count + 1) mod 85000
i = 1 + i
end repeat
return(tA)
end
on NotKeyDown(me)
-- UNK_C8 331925
-- UNK_6A 138
exit
-- UNK_AB 35330
if ERROR > ERROR or ERROR then
pStatus = #Run
jumpAction = "run"
pSpeed = 2
end if
if not voidp(pJumpData) then
if pJumpData.getProp(#char, length(pJumpData)) = "a" then
presskey = "d"
else
presskey = "a"
end if
me.MykeyDown(presskey, void(), 1)
else
pJumpData = pJumpData & "a"
end if
pJumpData = pJumpData & "0"
pJumpMode = #inactive
me.JumpingExitFrame()
exit
end
on NotKeyDown me
if the milliSeconds > pRemoveJumperTime + 45000 then
if pMyLoc.locH > pjumpBoardEnd then
pStatus = #Run
jumpAction = "run"
pSpeed = 2
end if
if not voidp(pJumpData) then
if pJumpData.getProp(#char, length(pJumpData)) = "a" then
presskey = "d"
else
presskey = "a"
end if
me.MykeyDown(presskey, void(), 1)
else
pJumpData = pJumpData & "a"
end if
else
pJumpData = pJumpData & "0"
pJumpMode = #inactive
me.JumpingExitFrame()
end if
end
This is great! Got hh_interface decrypted and fixed up all the lingo errors and syntax issues, now we can edit the dialogue windows without breaking the purse & help button among other things.
Everything seems to work, here's the link if anyone wants it: (V14 I think)
You must be registered to see links
Here's an example (not very pretty, am not an artist lol, just changed the shading a bit and made it gold)
Also, when I try to open the CST files uploaded to this thread, it says they are for a newer version? (I believe adobe director 11.5 or something worked, but couldn't get the client working after publishing the CCT files) Not really an issue though, just decrypted the supplied CCT files.
[TABLE="class: highlight tab-size js-file-line-container"]
[TR]
[TD="class: blob-num js-line-number, align: right"][/TD]
[TD="class: blob-code blob-code-inner js-file-line"][COLOR=#D73A49]if[/COLOR] _player.traceScript [COLOR=#D73A49]then[/COLOR][/TD]
[/TR]
[TR]
[TD="class: blob-num js-line-number, align: right"][/TD]
[TD="class: blob-code blob-code-inner js-file-line"] [COLOR=#D73A49]return[/COLOR]([COLOR=#005CC5]0[/COLOR])[/TD]
[/TR]
[TR]
[TD="class: blob-num js-line-number"][/TD]
[TD="class: blob-code blob-code-inner js-file-line"] end [COLOR=#D73A49]if[/COLOR][/TD]
[/TR]
[TR]
[TD="class: blob-num js-line-number, align: right"][/TD]
[TD="class: blob-code blob-code-inner js-file-line"]end [COLOR=#D73A49]if[/COLOR][/TD]
[/TR]
[/TABLE]
Finally someone achieved this! Very interesting seeing some of the techniques Sulake used to use to block us debugging crypto / client functions....
Code:[TABLE="class: highlight tab-size js-file-line-container"] [TR] [TD="class: blob-num js-line-number, align: right"][/TD] [TD="class: blob-code blob-code-inner js-file-line"][COLOR=#D73A49]if[/COLOR] _player.traceScript [COLOR=#D73A49]then[/COLOR][/TD] [/TR] [TR] [TD="class: blob-num js-line-number, align: right"][/TD] [TD="class: blob-code blob-code-inner js-file-line"] [COLOR=#D73A49]return[/COLOR]([COLOR=#005CC5]0[/COLOR])[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"][/TD] [TD="class: blob-code blob-code-inner js-file-line"] end [COLOR=#D73A49]if[/COLOR][/TD] [/TR] [TR] [TD="class: blob-num js-line-number, align: right"][/TD] [TD="class: blob-code blob-code-inner js-file-line"]end [COLOR=#D73A49]if[/COLOR][/TD] [/TR] [/TABLE]
Finally someone achieved this! Very interesting seeing some of the techniques Sulake used to use to block us debugging crypto / client functions....
Code:[TABLE="class: highlight tab-size js-file-line-container"] [TR] [TD="class: blob-num js-line-number, align: right"][/TD] [TD="class: blob-code blob-code-inner js-file-line"][COLOR=#D73A49]if[/COLOR] _player.traceScript [COLOR=#D73A49]then[/COLOR][/TD] [/TR] [TR] [TD="class: blob-num js-line-number, align: right"][/TD] [TD="class: blob-code blob-code-inner js-file-line"] [COLOR=#D73A49]return[/COLOR]([COLOR=#005CC5]0[/COLOR])[/TD] [/TR] [TR] [TD="class: blob-num js-line-number"][/TD] [TD="class: blob-code blob-code-inner js-file-line"] end [COLOR=#D73A49]if[/COLOR][/TD] [/TR] [TR] [TD="class: blob-num js-line-number, align: right"][/TD] [TD="class: blob-code blob-code-inner js-file-line"]end [COLOR=#D73A49]if[/COLOR][/TD] [/TR] [/TABLE]
The decompilation process has been improved slightly to fix order of operations decompilation.
Sums that do division/modulo/multiplication will now put brackets around such statements to indicate the correct way to interpret these statements.
Lets say you decompile "5 + (10 * 30)" it would decompile as:
5 + 10 * 30 which could give the result:
15 * 30 = 450
When it's actually 5 + (10 * 30) which is 5 + 300 which gives you 305 instead, this is why order of operations is important! :
Commit:You must be registered to see links
tTemp = ((1 * pTempPercent + pLoadedSoFar) / pCastcount)
You went a bit overkill on some of them, but hey ...
Code:tTemp = ((1 * pTempPercent + pLoadedSoFar) / pCastcount)
tTemp = ((1 * (pTempPercent + pLoadedSoFar)) / pCastcount)
Sigh, I need to update it again, in theory it should be instead:
Code:tTemp = ((1 * (pTempPercent + pLoadedSoFar)) / pCastcount)
And yes they are overkill, but that's one of the downsides of reinterpreting bytecode to ensure the sums are the same.
I have other bytecode fixes shortly, fixing more 'undefined' variables etc. :
I'm going to redo all of the source code for every Habbo version withYou must be registered to see linksas there's been improvements over my own decompiler.
Not to mention, of the improvements was a pull request recently by me as well!You must be registered to see links
Stay tuned.