1) Use the pWorld + offset I mentioned to pause engine (if you don't want any movement at all).
I think we can even control it from LUA with the movements... For example like this:
Code: Select all
if isKeyPressed(VK_T) then
writeBytes("[pWorld]+1458", 1) -- Freeze World
end
if isKeyPressed(VK_SHIFT) and isKeyPressed(VK_T) then
writeBytes("[pWorld]+1458", 0) -- Freeze World
end
With that there is should be possible to freeze world with pressing "T", and unfreeze with pressing "Shift + T".
2) Use the two offsets set to 1 for Photo Mode (will freeze Bayek).
I'm still did not get it, but do not pay your attention for that my issue, i will see what you mean if you implement it in your own script:)
3) From the Free Cam script you can also update Bayek's coordinates: freeze engine, detach cam, move to the spot you want, update Bayek's coordinates (XYZ), resume engine, disable cam. Boom: teleport to cam position
I guess that might be pretty useful feature! Didn't know how it can be actually done after watching PREY example though, because of lack of experience:)
BTW, this is what actually does
"ACOrigins.exe"+14697F3: 0F 29 83 00 02 00 00 - movaps [rbx+00000200],xmm0 instruction. If you see what addresses this instruction access and call Senu, you will see that it store Bayek coordinates, every time in random addresses
4) As far as rendering points updating as you move: instead of NOPing that location of yours, why not swap the pointer? Let me rephrase: let the 4 addresses update with the coordinates of our camera, instead of the coordinates of Bayek. You saw how, if I put the instruction back - the movaps - XYZ updated with Bayek's XYZ
So I'll backtrace to see where we can do the swap
How i see this from my experience, we can somehow copy camera XYZ to globalalloc XYZ addresses and then move it to Render Point XYZ. I've test it yesterday with this dynamic Render addresses, works good, but no have idea how to move xmm0 values from one point of engine to another xmm0. I've google yesterday how to make your own CALL's or such JMP's, but... This is something that i need to spend some time to learn:)
Funny thing, that here is actually few more coordinates... I mean, if you fly like this between different parts of the map - you will notice that Memphis, for example, does not change it Environment to "dark style" and even on another part of the map you still can near what happen near Bayek. I mean, this is actually totally fine in my opinion. Just like some kind of lulz
Ive swapped YZ coordinates because as i saw before, in 3d software it is usually XY - gorizantal and Z vertical, but in games XZ horizontal and Y vertical and i thought that with making it like this in script should be easier, but honestly i often confuse myself with that, so if you do not move to far with your own script, here is fixed names:
Code: Select all
local camx = readFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90") -- Camera X
local camy = readFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94") -- Camera Y
local camz = readFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+98") -- Camera Z
local radh = readFloat("[[[[ACOrigins.exe+4B139F0]+A8]+0]+340]+C4") -- Horiz Rad
local mult = readFloat("speedmult")
local sinh = math.sin(radh)
local cosh = math.cos(radh)
if isKeyPressed(VK_W) then -- move Forward
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx - (sinh * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy - (cosh * mult))
end
if isKeyPressed(VK_S) then -- move Back
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx + (sinh * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy + (cosh * mult))
end
if isKeyPressed(VK_A) then -- Move Right
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx + (cosh * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy - (sinh * mult))
end
if isKeyPressed(VK_D) then -- Move Left
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx - (cosh * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy + (sinh * mult))
end
-- from here new part for semi-side moves
if isKeyPressed(VK_W) and isKeyPressed(VK_D) then -- move Forward-Right
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx - ((sinh + cosh) * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy - ((cosh - sinh) * mult))
end
if isKeyPressed(VK_W) and isKeyPressed(VK_A) then -- move Forward-Left
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx - ((sinh - cosh) * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy - ((cosh + sinh) * mult))
end
if isKeyPressed(VK_S) and isKeyPressed(VK_D) then -- move Back-Right
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx + ((sinh - cosh) * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy + ((cosh + sinh) * mult))
end
if isKeyPressed(VK_S) and isKeyPressed(VK_A) then -- move Back-Left
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+90", camx + ((sinh + cosh) * mult))
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+94", camy + ((cosh - sinh) * mult))
end
-- from here all the same
if isKeyPressed(VK_R) then -- Move Up
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+98", camz + (mult * 0.5))
end
if isKeyPressed(VK_F) then -- Move Down
writeFloat("[[[ACOrigins.exe+4B139F0]+A8]+0]+98", camz - (mult * 0.5))
end
And in my table that you used for test CameraY/Z should also swapped:)