13510
"Life Is Strange 2 freecam v1.3, idk31freecam@gmail.com"
1
13511
"1) Attach to process: "LIS2-Win64-Shipping.exe""
1
13512
"2) Set keypoll and delay to 10ms (EDIT > SETTINGS > HOTKEYS)"
1
14241
""
1
14
">> CAMERA +AR FIX [PGDN]"
FF0000
Auto Assembler Script
[ENABLE]
alloc(_camera,8)
alloc(_freecamON,4)
alloc(_slow,4)
alloc(_fast,4)
alloc(_faster,4)
alloc(_player,8)
alloc(_player2,8)
alloc(_stopFalling,4)
registersymbol(_camera)
registersymbol(_freecamON)
registersymbol(_slow)
registersymbol(_fast)
registersymbol(_faster)
registersymbol(_player)
registersymbol(_player2)
registersymbol(_stopFalling)
_slow:
dd (float)0.1
_fast:
dd (float)10
_faster:
dd (float)100
//
aobscanmodule(cameraAOB,LIS2-Win64-Shipping.exe,F2 0F 10 81 20 04 00 00 F2 0F 11 06)
alloc(newmem,$1000,cameraAOB)
label(code)
label(return)
newmem:
push rdx
mov rdx,rcx
add rdx,420
mov [_camera],rdx
pop rdx
code:
movsd xmm0,[rcx+00000420]
jmp return
cameraAOB:
jmp newmem
db 90 90 90
return:
registersymbol(cameraAOB)
//
aobscanmodule(writeCamAOB,LIS2-Win64-Shipping.exe,41 5C 41 5B 66 0F 1F 84 00 00 00 00 00)
alloc(newmem2,$1000,writeCamAOB)
label(code2)
label(return2)
newmem2:
mov rdi,rcx
and [rdx+2C],-02 //AR fix
cmp [_camera],rcx
jne code2
cmp [_freecamON],0
je code2
mov rbx,rdx
movsd xmm0,[rdx+0C]
jmp return2
code2:
movsd [rcx],xmm0 //X, Y
mov rbx,rdx
mov eax,[rdx+08]
mov [rcx+08],eax //Z
movsd xmm0,[rdx+0C]
movsd [rcx+0C],xmm0 //Pitch, Yaw
mov eax,[rdx+14]
mov [rcx+14],eax //Roll
mov eax,[rdx+18]
mov [rcx+18],eax //FOV
jmp return2
writeCamAOB+1E:
jmp newmem2
db 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90 90
return2:
registersymbol(writeCamAOB)
//
aobscanmodule(playerAOB,LIS2-Win64-Shipping.exe,48 8B 80 78 01 00 00 48 85 C0 74 09)
alloc(newmem3,$1000,playerAOB)
label(code3)
label(return3)
newmem3:
code3:
mov rax,[rax+00000178]
mov [_player],rax
jmp return3
playerAOB:
jmp newmem3
db 90 90
return3:
registersymbol(playerAOB)
//
aobscanmodule(player2AOB,LIS2-Win64-Shipping.exe,41 0F 28 BE 80 02 00 00 0F)
alloc(newmem4,$1000,player2AOB)
label(code4)
label(return4)
newmem4:
mov [_player2],r14
code4:
movaps xmm7,[r14+00000280]
jmp return4
player2AOB:
jmp newmem4
db 90 90 90
return4:
registersymbol(player2AOB)
//
aobscanmodule(velocityAOB,LIS2-Win64-Shipping.exe,F3 45 0F 58 4E 08)
alloc(newmem5,$1000,velocityAOB)
label(code5)
label(return5)
newmem5:
cmp [_stopFalling],0
je code5
mov [r14],0
mov [r14+04],0
mov [r14+08],0
code5:
addss xmm9,dword ptr [r14+08]
jmp return5
velocityAOB:
jmp newmem5
db 90
return5:
registersymbol(velocityAOB)
{$lua}
if syntaxcheck then return end
local symbolCheckT = createTimer()
symbolCheckT.Interval = 1000
symbolCheckT.OnTimer = function(sender)
if readInteger("LIS2-Win64-Shipping.exe") == nil then
sender.destroy()
return
end
-- destroy old stuff in case of crash
if checkCamKeys ~= nil then
checkCamKeys.destroy()
checkCamKeys = nil
end
if camHotkeys ~= nil then
for i,v in ipairs(camHotkeys) do v.destroy() end
camHotkeys = nil
end
-- end destroy
local function cameraBase() return readQword("_camera") end
local freecamONAD = getAddress("_freecamON")
local stopFallingAD = getAddress("_stopFalling")
-- CAMERA ADDRESSES
local function camXAD() return cameraBase() end
local function camYAD() return cameraBase()+0x4 end
local function camZAD() return cameraBase()+0x8 end
local function pitchAD() return cameraBase()+0xC end
local function yawAD() return cameraBase()+0x10 end
local function rollAD() return cameraBase()+0x14 end
local function FOVAD() return cameraBase()+0x18 end
local tarX=0; local tarY=0; local tarZ=0
local function playerBase() return readQword("_player") end
local function playerXAD() return playerBase()+0x280 end
local function playerYAD() return playerBase()+0x284 end
local function playerZAD() return playerBase()+0x288 end
local function playerBase2() return readQword("_player2") end
local function playerXAD2() return playerBase2()+0x280 end
local function playerYAD2() return playerBase2()+0x284 end
local function playerZAD2() return playerBase2()+0x288 end
-- VARIABLES
local minDolly = 2
local defaultTarDist = 6
local flySpeed = 2
local aimSpeed = 0.005
local rollSpeed = 0.1
local FOVSpeed = 0.2
local function hellaFast() return readFloat("_faster") end
local function fastMult() return readFloat("_fast") end
local function slowMult() return readFloat("_slow") end
local pitchMax = 0.495*math.pi
local useZ = true
local defaultFOV = 45
local separation3D = 6.6
local function freecamEnabled()
if readInteger(freecamONAD) == 1 then return true end
return false
end
local function gameHasFocus()
if getOpenedProcessID() == getForegroundProcess() then return true end
return false
end
local function requiredConditions()
if freecamEnabled() and gameHasFocus() then return true end
return false
end
local function toggleFreecam()
if not gameHasFocus() then return end
if freecamEnabled() then
for j=1,7,1 do camCheat[0].value[j] = readBytes(camCheat.addy[j],4,true) end
writeFloat(FOVAD(),defaultFOV)
writeInteger(freecamONAD, 0)
else
local pitch = math.pi*readFloat(pitchAD())/180
local yaw = math.pi*readFloat(yawAD())/180
tarX = readFloat(camXAD())+180*defaultTarDist*math.cos(yaw)*math.cos(pitch)/math.pi
tarY = readFloat(camYAD())+180*defaultTarDist*math.sin(yaw)*math.cos(pitch)/math.pi
tarZ = readFloat(camZAD())+180*defaultTarDist*math.sin(pitch)/math.pi
writeInteger(freecamONAD, 1)
end
end
local function toggleFalling()
if not gameHasFocus() then return end
if readInteger(stopFallingAD)==0 then writeInteger(stopFallingAD,1) return end
writeInteger(stopFallingAD,0)
end
if camCheat == nil then camCheat = {}
camCheat.addy = {camXAD(); camYAD(); camZAD(); pitchAD(); yawAD(); rollAD(); FOVAD()}
for i=0,9,1 do
camCheat[i] = {value = {}}
local set = function(sender)
if not requiredConditions() then return end
camCheat.addy = {camXAD(); camYAD(); camZAD(); pitchAD(); yawAD(); rollAD(); FOVAD()}
for j=1,7,1 do camCheat[i].value[j] = readBytes(camCheat.addy[j],4,true) end
end
if i == 0 then set(nil) else
camCheat[i].setHotkey = createHotkey(set, _G["VK_" .. i], VK_MENU)
camCheat[i].setHotkey.DelayBetweenActivate = 1000
end
local get = function(sender)
if not gameHasFocus() or #camCheat[i].value ~= 7 then return end
if not freecamEnabled() then toggleFreecam() end
camCheat.addy = {camXAD(); camYAD(); camZAD(); pitchAD(); yawAD(); rollAD(); FOVAD()}
for j=1,7,1 do
if i ~= 0 then camCheat[0].value[j] = readBytes(camCheat.addy[j],4,true) end
writeBytes(camCheat.addy[j], camCheat[i].value[j])
end
end
camCheat[i].getHotkey = createHotkey(get, _G["VK_" .. i])
camCheat[i].getHotkey.DelayBetweenActivate = 1000
end
else camCheat.addy = {camXAD(); camYAD(); camZAD(); pitchAD(); yawAD(); rollAD(); FOVAD()}
end
-- MOVEMENT SPEED MODIFIERS
local flySpeedOrig = flySpeed
local aimSpeedOrig = aimSpeed
local rollSpeedOrig = rollSpeed
local FOVSpeedOrig = FOVSpeed
local hellaFastModeEnabled = false
local fastModeEnabled = false
local slowModeEnabled = false
local didReset = true
local didSlow = false
local didFast = false
local didHellaFast = false
checkCamKeys = createTimer()
checkCamKeys.setInterval(100)
checkCamKeys.onTimer = function()
if not gameHasFocus() then return end
if isKeyPressed(VK_T) and not isKeyPressed(VK_MENU) then
if not didHellaFast then
flySpeed = flySpeedOrig*hellaFast()
aimSpeed = aimSpeedOrig*fastMult()
rollSpeed = rollSpeedOrig*fastMult()
FOVSpeed = FOVSpeedOrig*fastMult()
didReset = false
didHellaFast = true
end
elseif isKeyPressed(VK_F) and not isKeyPressed(VK_MENU) then
if not didFast then
flySpeed = flySpeedOrig*fastMult()
aimSpeed = aimSpeedOrig*fastMult()
rollSpeed = rollSpeedOrig*fastMult()
FOVSpeed = FOVSpeedOrig*fastMult()
didReset = false
didFast = true
end
elseif isKeyPressed(VK_C) and not isKeyPressed(VK_MENU) then
if not didSlow then
flySpeed = flySpeedOrig*slowMult()
aimSpeed = aimSpeedOrig*slowMult()
rollSpeed = rollSpeedOrig*slowMult()
FOVSpeed = FOVSpeedOrig*slowMult()
didReset = false
didSlow = true
end
elseif not didReset then
flySpeed = flySpeedOrig
aimSpeed = aimSpeedOrig
rollSpeed = rollSpeedOrig
FOVSpeed = FOVSpeedOrig
didHellaFast = false
didFast = false
didSlow = false
didReset = true
hellaFastModeEnabled = false
fastModeEnabled = false
slowModeEnabled = false
end
end
-- MOVEMENT SPEED TOGGLES
local function resetSpeed()
flySpeed = flySpeedOrig
aimSpeed = aimSpeedOrig
rollSpeed = rollSpeedOrig
FOVSpeed = FOVSpeedOrig
hellaFastModeEnabled = false
fastModeEnabled = false
slowModeEnabled = false
end
local function goHellaFast()
if hellaFastModeEnabled then resetSpeed()
else
flySpeed = flySpeedOrig*hellaFast()
aimSpeed = aimSpeedOrig*fastMult()
rollSpeed = rollSpeedOrig*fastMult()
FOVSpeed = FOVSpeedOrig*fastMult()
hellaFastModeEnabled = true
fastModeEnabled = false
slowModeEnabled = false
end
end
local function goFast()
if fastModeEnabled then resetSpeed()
else
flySpeed = flySpeedOrig*fastMult()
aimSpeed = aimSpeedOrig*fastMult()
rollSpeed = rollSpeedOrig*fastMult()
FOVSpeed = FOVSpeedOrig*fastMult()
hellaFastModeEnabled = false
fastModeEnabled = true
slowModeEnabled = false
end
end
local function goSlow()
if slowModeEnabled then resetSpeed()
else
flySpeed = flySpeedOrig*slowMult()
aimSpeed = aimSpeedOrig*slowMult()
rollSpeed = rollSpeedOrig*slowMult()
FOVSpeed = FOVSpeedOrig*slowMult()
hellaFastModeEnabled = false
fastModeEnabled = false
slowModeEnabled = true
end
end
-- CAMERA FUNCTIONS
local function toggleUseZ()
if not requiredConditions() then return end
if useZ then useZ = false
else useZ = true
end
end
local function move(moveDir)
if not requiredConditions() then return end
local camX = readFloat(camXAD())
local camY = readFloat(camYAD())
local camZ = readFloat(camZAD())
local Xdiff = tarX-camX
local Ydiff = tarY-camY
local Zdiff
local hypXY = math.sqrt(Xdiff*Xdiff+Ydiff*Ydiff)
if moveDir == "up" then
camZ = camZ+flySpeed
writeFloat(camZAD(), camZ)
tarZ = tarZ+flySpeed
elseif moveDir == "upCamOnly" then
camZ = camZ+flySpeed
Zdiff = tarZ-camZ
writeFloat(camZAD(), camZ)
writeFloat(pitchAD(),180*math.atan(Zdiff/hypXY)/math.pi)
elseif moveDir == "down" then
camZ = camZ-flySpeed
writeFloat(camZAD(), camZ)
tarZ = tarZ-flySpeed
elseif moveDir == "downCamOnly" then
camZ = camZ-flySpeed
Zdiff = tarZ-camZ
writeFloat(camZAD(), camZ)
writeFloat(pitchAD(),180*math.atan(Zdiff/hypXY)/math.pi)
else
local Zdiff = tarZ-camZ
local dX; local dY; local dZ
if moveDir == "right" or moveDir == "right3D" then
if moveDir == "right3D" then
dX = separation3D*Ydiff/hypXY
dY = separation3D*Xdiff/hypXY
else
dX = flySpeed*Ydiff/hypXY
dY = flySpeed*Xdiff/hypXY
end
if moveDir == "right3D" or useZ then
local roll = math.pi*readFloat(rollAD())/180
local cosRoll = math.cos(roll)
dX = dX*cosRoll
dY = dY*cosRoll
if moveDir == "right3D" then
dZ = separation3D*math.sin(roll)
else
dZ = flySpeed*math.sin(roll)
end
tarZ = tarZ-dZ
camZ = camZ-dZ
writeFloat(camZAD(), camZ)
end
tarX = tarX-dX
tarY = tarY+dY
camX = camX-dX
camY = camY+dY
writeFloat(camXAD(), camX)
writeFloat(camYAD(), camY)
return
elseif moveDir == "left" or moveDir == "left3D" then
if moveDir == "left3D" then
dX = separation3D*Ydiff/hypXY
dY = separation3D*Xdiff/hypXY
else
dX = flySpeed*Ydiff/hypXY
dY = flySpeed*Xdiff/hypXY
end
if moveDir == "left3D" or useZ then
local roll = math.pi*readFloat(rollAD())/180
local cosRoll = math.cos(roll)
dX = dX*cosRoll
dY = dY*cosRoll
if moveDir == "left3D" then
dZ = separation3D*math.sin(roll)
else
dZ = flySpeed*math.sin(roll)
end
tarZ = tarZ+dZ
camZ = camZ+dZ
writeFloat(camZAD(), camZ)
end
tarX = tarX+dX
tarY = tarY-dY
camX = camX+dX
camY = camY-dY
writeFloat(camXAD(), camX)
writeFloat(camYAD(), camY)
return
end
local hypZ = math.sqrt(Zdiff*Zdiff+hypXY*hypXY)
if useZ then
dX = flySpeed*Xdiff/hypZ
dY = flySpeed*Ydiff/hypZ
dZ = flySpeed*Zdiff/hypZ
if moveDir == "backward" then dZ = -dZ end
tarZ = tarZ+dZ
camZ = camZ+dZ
writeFloat(camZAD(), camZ)
else
dX = flySpeed*Xdiff/hypXY
dY = flySpeed*Ydiff/hypXY
dZ = flySpeed*Zdiff/hypXY
end
if moveDir == "forward" then
tarX = tarX+dX
tarY = tarY+dY
camX = camX+dX
camY = camY+dY
writeFloat(camXAD(), camX)
writeFloat(camYAD(), camY)
elseif moveDir == "backward" then
tarX = tarX-dX
tarY = tarY-dY
camX = camX-dX
camY = camY-dY
writeFloat(camXAD(), camX)
writeFloat(camYAD(), camY)
else return
end
end
end
local function orbit(orbitDir)
if not requiredConditions() then return end
local exitFunction = false
local camX = readFloat(camXAD())
local camY = readFloat(camYAD())
local Xdiff = tarX-camX
local Ydiff = tarY-camY
local hypXY = math.sqrt(Xdiff*Xdiff+Ydiff*Ydiff)
local pitch = math.pi*readFloat(pitchAD())/180
local yaw = math.pi*readFloat(yawAD())/180
if orbitDir == "left" or orbitDir == "panRight" then
yaw = yaw + aimSpeed
elseif orbitDir == "right" or orbitDir == "panLeft" then
yaw = yaw - aimSpeed
else
local camZ = readFloat(camZAD())
local Zdiff = tarZ-camZ
local hypZ = math.sqrt(Zdiff*Zdiff+hypXY*hypXY)
if orbitDir == "down" or orbitDir == "panUp" then
pitch = pitch + aimSpeed
elseif orbitDir == "up" or orbitDir == "panDown" then
pitch = pitch - aimSpeed
else return
end
if pitch>-pitchMax and pitch<pitchMax then
local R = hypZ*math.cos(pitch)/hypXY
local dX = Xdiff*R
local dY = Ydiff*R
local dZ = hypZ*math.sin(pitch)
if orbitDir == "panUp" or orbitDir == "panDown" then
tarX = camX+dX
tarY = camY+dY
tarZ = camZ+dZ
exitFunction = true
else
writeFloat(camXAD(), tarX-dX)
writeFloat(camYAD(), tarY-dY)
writeFloat(camZAD(), tarZ-dZ)
exitFunction = true
end
end
exitFunction = true
end
if not exitFunction then
local dX = hypXY*math.cos(yaw)
local dY = hypXY*math.sin(yaw)
if orbitDir == "panLeft" or orbitDir == "panRight" then
tarX = camX+dX
tarY = camY+dY
elseif orbitDir == "left" or orbitDir == "right" then
writeFloat(camXAD(), tarX-dX)
writeFloat(camYAD(), tarY-dY)
else return
end
end
writeFloat(pitchAD(),180*pitch/math.pi)
writeFloat(yawAD(),180*yaw/math.pi)
end
local function dolly(dollyDir)
if not requiredConditions() then return end
local exitFunction = false
local camX = readFloat(camXAD())
local camY = readFloat(camYAD())
local camZ = readFloat(camZAD())
local Xdiff = tarX-camX
local Ydiff = tarY-camY
local Zdiff = tarZ-camZ
local hypXY = math.sqrt(Xdiff*Xdiff+Ydiff*Ydiff)
local hypZ = math.sqrt(Zdiff*Zdiff+hypXY*hypXY)
if dollyDir == "zoomReset" then
local FOV = readFloat(FOVAD()) -- stored in degrees
local FOVr = math.pi*FOV/180 -- convert to radians
local objWidth = hypZ*2*math.tan(FOVr/2)
local FOV2 = defaultFOV
local FOVr2 = math.pi*FOV2/180
local hypZ2 = objWidth/(2*math.tan(FOVr2/2))-hypZ
local dX = hypZ2*Xdiff/hypZ
local dY = hypZ2*Ydiff/hypZ
local dZ = hypZ2*Zdiff/hypZ
writeFloat(FOVAD(), FOV2)
writeFloat(camXAD(), camX-dX)
writeFloat(camYAD(), camY-dY)
writeFloat(camZAD(), camZ-dZ)
exitFunction = true
elseif dollyDir == "closer" then
if hypZ >= minDolly then
local dX = flySpeed*Xdiff/hypZ
local dY = flySpeed*Ydiff/hypZ
local dZ = flySpeed*Zdiff/hypZ
writeFloat(camXAD(), camX+dX)
writeFloat(camYAD(), camY+dY)
writeFloat(camZAD(), camZ+dZ)
end
exitFunction = true
elseif dollyDir == "farther" then
local dX = flySpeed*Xdiff/hypZ
local dY = flySpeed*Ydiff/hypZ
local dZ = flySpeed*Zdiff/hypZ
writeFloat(camXAD(), camX-dX)
writeFloat(camYAD(), camY-dY)
writeFloat(camZAD(), camZ-dZ)
exitFunction = true
end
if not exitFunction then
local FOV = readFloat(FOVAD()) -- stored in degrees
local FOVr = math.pi*FOV/180 -- convert to radians
local dollySpeed = flySpeed*(1-FOV/180)^2
local objWidth = hypZ*2*math.tan(FOVr/2)
if dollyDir == "zoomIn" then
FOVr = 2*math.atan(objWidth/(2*(hypZ+dollySpeed)))
FOV = 180*FOVr/math.pi -- convert back to degrees
if FOV >=1.2 then
local dX = dollySpeed*Xdiff/hypZ
local dY = dollySpeed*Ydiff/hypZ
local dZ = dollySpeed*Zdiff/hypZ
writeFloat(FOVAD(), FOV)
writeFloat(camXAD(), camX-dX)
writeFloat(camYAD(), camY-dY)
writeFloat(camZAD(), camZ-dZ)
end
elseif dollyDir == "zoomOut" then
FOVr = 2*math.atan(objWidth/(2*(hypZ-dollySpeed)))
FOV = 180*FOVr/math.pi -- convert back to degrees
if FOV <= 169 then
local dX = dollySpeed*Xdiff/hypZ
local dY = dollySpeed*Ydiff/hypZ
local dZ = dollySpeed*Zdiff/hypZ
writeFloat(FOVAD(), FOV)
writeFloat(camXAD(), camX+dX)
writeFloat(camYAD(), camY+dY)
writeFloat(camZAD(), camZ+dZ)
end
else return
end
end
end
local function zoomIn()
if not requiredConditions() then return end
local FOV = readFloat(FOVAD())
writeFloat(FOVAD(), FOV+FOVSpeed)
end
local function zoomOut()
if not requiredConditions() then return end
local FOV = readFloat(FOVAD())
writeFloat(FOVAD(), FOV-FOVSpeed)
end
local function rollLeft()
if not requiredConditions() then return end
local roll = readFloat(rollAD())
writeFloat(rollAD(), roll+rollSpeed)
end
local function rollRight()
if not requiredConditions() then return end
local roll = readFloat(rollAD())
writeFloat(rollAD(), roll-rollSpeed)
end
local function rollReset()
if not requiredConditions() then return end
writeFloat(rollAD(), 0)
end
local function teleport()
if requiredConditions() then
writeFloat(playerXAD(),readFloat(camXAD()))
writeFloat(playerYAD(),readFloat(camYAD()))
writeFloat(playerZAD(),readFloat(camZAD()))
writeFloat(playerXAD2(),readFloat(camXAD()))
writeFloat(playerYAD2(),readFloat(camYAD()))
writeFloat(playerZAD2(),readFloat(camZAD()))
toggleFreecam()
end
end
local function moveForward() move("forward") end
local function moveBackward() move("backward") end
local function moveLeft() move("left") end
local function moveLeft3D() move("left3D") end
local function moveRight() move("right") end
local function moveRight3D() move("right3D") end
local function moveUp() move("up") end
local function moveDown() move("down") end
local function moveUpCamOnly() move("upCamOnly") end
local function moveDownCamOnly() move("downCamOnly") end
local function panUp() orbit("panUp") end
local function panDown() orbit("panDown") end
local function panLeft() orbit("panLeft") end
local function panRight() orbit("panRight") end
local function orbitUp() orbit("up") end
local function orbitDown() orbit("down") end
local function orbitLeft() orbit("left") end
local function orbitRight() orbit("right") end
local function dollyCloser() dolly("closer") end
local function dollyFarther() dolly("farther") end
local function dollyZoomIn() dolly("zoomIn") end
local function dollyZoomOut() dolly("zoomOut") end
local function dollyZoomReset() dolly("zoomReset") end
-- CAMERA HOTKEYS
camHotkeys = {
createHotkey(toggleFreecam, VK_NEXT),
createHotkey(toggleFalling, VK_SPACE),
createHotkey(toggleUseZ, VK_NUMPAD2),
createHotkey(goHellaFast, VK_MENU, VK_T),
createHotkey(goFast, VK_MENU, VK_F),
createHotkey(goSlow, VK_MENU, VK_C),
createHotkey(moveLeft3D, VK_MENU, VK_NUMPAD4),
createHotkey(moveRight3D, VK_MENU, VK_NUMPAD6),
createHotkey(teleport, VK_PRIOR),
createHotkey(moveForward, VK_NUMPAD8), -- small delay at index 10
createHotkey(moveBackward, VK_NUMPAD5),
createHotkey(moveLeft, VK_NUMPAD4),
createHotkey(moveRight, VK_NUMPAD6),
createHotkey(moveUp, VK_NUMPAD9),
createHotkey(moveDown, VK_NUMPAD7),
createHotkey(moveUpCamOnly, VK_NUMPAD3),
createHotkey(moveDownCamOnly, VK_NUMPAD1),
createHotkey(panUp, VK_ADD, VK_NUMPAD8),
createHotkey(panDown, VK_ADD, VK_NUMPAD5),
createHotkey(panLeft, VK_ADD, VK_NUMPAD4),
createHotkey(panRight, VK_ADD, VK_NUMPAD6),
createHotkey(rollLeft, VK_ADD, VK_NUMPAD3),
createHotkey(rollRight, VK_ADD, VK_NUMPAD1),
createHotkey(rollReset, VK_ADD, VK_NUMPAD2),
createHotkey(zoomIn, VK_ADD, VK_NUMPAD7),
createHotkey(zoomOut, VK_ADD, VK_NUMPAD9),
createHotkey(orbitUp, VK_RETURN, VK_NUMPAD5),
createHotkey(orbitDown, VK_RETURN, VK_NUMPAD8),
createHotkey(orbitLeft, VK_RETURN, VK_NUMPAD6),
createHotkey(orbitRight, VK_RETURN, VK_NUMPAD4),
createHotkey(dollyCloser, VK_RETURN, VK_NUMPAD9),
createHotkey(dollyFarther, VK_RETURN, VK_NUMPAD7),
createHotkey(dollyZoomIn, VK_RETURN, VK_NUMPAD3),
createHotkey(dollyZoomOut, VK_RETURN, VK_NUMPAD1),
createHotkey(dollyZoomReset, VK_RETURN, VK_NUMPAD2)
}
local smDelay = 10
for i=1,smDelay-1,1 do camHotkeys[i].DelayBetweenActivate = 1000 end
for i=smDelay,#camHotkeys,1 do camHotkeys[i].DelayBetweenActivate = 10 end
sender.destroy()
end
{$asm}
[DISABLE]
cameraAOB:
db F2 0F 10 81 20 04 00 00
unregistersymbol(cameraAOB)
dealloc(newmem)
writeCamAOB+1E:
db F2 0F 11 01 48 89 D3 8B 42 08 89 41 08 F2 0F 10 42 0C F2 0F 11 41 0C 8B 42 14 89 41 14 8B 42 18 89 41 18
unregistersymbol(writeCamAOB)
dealloc(newmem2)
playerAOB:
db 48 8B 80 78 01 00 00
unregistersymbol(playerAOB)
dealloc(newmem3)
player2AOB:
db 41 0F 28 BE 80 02 00 00
unregistersymbol(player2AOB)
dealloc(newmem4)
velocityAOB:
db F3 45 0F 58 4E 08
unregistersymbol(velocityAOB)
dealloc(newmem5)
{$lua}
--[[
if camCheat ~= nil then
for i=0,9,1 do
if i ~= 0 then camCheat[i].setHotkey.destroy() end
camCheat[i].getHotkey.destroy()
end
camCheat = nil
end
--]]
if checkCamKeys ~= nil then
checkCamKeys.destroy()
checkCamKeys = nil
end
if camHotkeys ~= nil then
for i,v in ipairs(camHotkeys) do v.destroy() end
camHotkeys = nil
end
Activate
34
0
14250
">> HOTKEYS"
FF0000
1
14251
"*** MOVEMENT ***"
0080FF
1
14252
"SPEED: Slow, fast, faster - C, F, T (+ALT to toggle)"
000000
1
14253
"FREECAM: On/off - Pagedown"
000000
1
14537
"TELEPORT - Pageup"
000000
1
14254
"FLY - No modifier"
0080FF
1
14255
"(Below, NUMPAD keys...)"
000000
1
14256
"MOVE: Forward, backward, left, right - 8, 5, 4, 6"
000000
1
14257
"FLY: Up, down - 9, 7 (cam only - 3, 1)"
000000
1
14258
"Height lock: On/off - 2"
000000
1
14259
"3D Capture: Step left, right - ALT+4, ALT+6"
000000
1
14260
"AIM - Hold down PLUS"
0080FF
1
14261
"(Below, NUMPAD keys...)"
000000
1
14262
"PAN: Up, down, left, right - 8, 5, 4, 6"
000000
1
14263
"ZOOM: In, out - 9, 7"
000000
1
14264
"TILT: Left, right - 1, 3 (reset: 2)"
000000
1
14265
"ROTATE - Hold down ENTER"
0080FF
1
14266
"(Below, NUMPAD keys...)"
000000
1
14267
"ROTATE: Up, down, left, right - 5, 8, 6, 4"
000000
1
14268
"MOVE: Forward, backward - 9, 7 (cam only)"
000000
1
14269
"DOLLY-ZOOM: In, out - 3, 1 (reset: 2)"
000000
1
14270
"*** SETTINGS ***"
0080FF
1
14271
"(Below, standard number keys...)"
000000
1
14272
"SAVE: Save current settings - ALT+[number 1 to 9]"
000000
1
14273
"LOAD: Load saved settings - [number 1 to 9]"
000000
1
14274
"UNDO: Load previous settings - 0 (zero)"
000000
1
14275
">> VALUES"
FF0000
1
14276
"Camera X"
Float
_camera
0
14277
"Camera Y"
Float
_camera
4
14278
"Camera Z"
Float
_camera
8
14279
"Pitch"
Float
_camera
C
14280
"Yaw"
Float
_camera
10
14281
"Roll"
Float
_camera
14
14282
"FOV"
Float
_camera
18
14534
"Player X"
Float
_player
280
14535
"Player Y"
Float
_player
284
14536
"Player Z"
Float
_player
288
14283
"Freecam on/off [PGDN]"
1:ON
0:-
4 Bytes
_freecamON
14539
"Teleport to cam [PGUP]"
1
14538
"Toggle gravity [space]"
1:OFF
0:-
4 Bytes
_stopFalling
14284
"Speed - slow [C]"
Float
_slow
14285
"Speed - fast [F]"
Float
_fast
14286
"Speed - faster [T]"
Float
_faster
17
">> GAME SPEED [F5]"
FF0000
Auto Assembler Script
[ENABLE]
alloc(_timescale,8)
alloc(_timestop,8)
alloc(_doTimestop,4)
alloc(_inPauseMenu,4)
registersymbol(_timescale)
registersymbol(_timestop)
registersymbol(_doTimestop)
registersymbol(_inPauseMenu)
//
aobscanmodule(timescaleAOB,LIS2-Win64-Shipping.exe,F3 0F 59 81 00 05 00 00)
alloc(newmem,$1000,timescaleAOB)
label(stopTime)
label(resumeTime)
label(code)
label(return)
newmem:
mov [_timescale],rcx
cmp [_inPauseMenu],0
jne code
cmp [_doTimestop],0
je resumeTime
cmp qword ptr [_timestop],0
je code
stopTime:
push rdx
mov rdx,[_timestop]
mov [rcx+520],rdx
pop rdx
jmp code
resumeTime:
mov qword ptr [rcx+520],0
code:
movss xmm0,[rcx+00000500]
jmp return
timescaleAOB:
jmp newmem
db 90 90 90
return:
registersymbol(timescaleAOB)
//
aobscanmodule(timestopAOB,LIS2-Win64-Shipping.exe,10 48 8B 86 B8 03 00 00)
alloc(newmem2,$1000,timestopAOB)
label(code2)
label(return2)
newmem2:
mov [_timestop],rax
code2:
mov rax,[rsi+000003B8]
jmp return2
timestopAOB+01:
jmp newmem2
db 90 90
return2:
registersymbol(timestopAOB)
//
aobscanmodule(pauseMenuON,LIS2-Win64-Shipping.exe,48 89 88 20 05 00 00 48 89)
alloc(newmem3,$1000,pauseMenuON)
label(code3)
label(return3)
newmem3:
mov [_inPauseMenu],1
code3:
mov [rax+00000520],rcx
jmp return3
pauseMenuON:
jmp newmem3
db 90 90
return3:
registersymbol(pauseMenuON)
//
aobscanmodule(pauseMenuOFF,LIS2-Win64-Shipping.exe,48 89 A8 20 05 00 00)
alloc(newmem4,$1000,pauseMenuOFF)
label(code4)
label(return4)
newmem4:
mov [_inPauseMenu],0
code4:
mov [rax+00000520],rbp
jmp return4
pauseMenuOFF:
jmp newmem4
db 90 90
return4:
registersymbol(pauseMenuOFF)
[DISABLE]
timescaleAOB:
db F3 0F 59 81 00 05 00 00
unregistersymbol(timescaleAOB)
dealloc(newmem)
timestopAOB+01:
db 48 8B 86 B8 03 00 00
unregistersymbol(timestopAOB)
dealloc(newmem2)
pauseMenuON:
db 48 89 88 20 05 00 00
unregistersymbol(pauseMenuON)
dealloc(newmem3)
pauseMenuOFF:
db 48 89 A8 20 05 00 00
unregistersymbol(pauseMenuOFF)
dealloc(newmem4)
Activate
116
0
13801
"Slomo [F6-F10] (def: F9)"
Float
_timescale
500
Set Value
117
0.01
1
Set Value
118
0.05
2
Set Value
119
0.2
3
Set Value
120
1
4
Set Value
121
3
5
14480
"Timestop on/off [F5]"
1:ON
0:-
4 Bytes
_doTimestop
Set Value
116
1
0
Set Value
117
0
1
Set Value
118
0
2
Set Value
119
0
3
Set Value
120
0
4
Set Value
121
0
5
14528
">> COLOR/DOF [O]"
FF0000
Auto Assembler Script
[ENABLE]
alloc(_sat,4)
alloc(_satR,4)
alloc(_satG,4)
alloc(_satB,4)
alloc(_tintR,4)
alloc(_tintG,4)
alloc(_tintB,4)
alloc(_fringe,4)
alloc(_vign,4)
alloc(_vignR,4)
alloc(_vignG,4)
alloc(_vignB,4)
alloc(_method,4)
alloc(_focaldist,4)
alloc(_fardist,4)
alloc(_neardist,4)
alloc(_fartrans,4)
alloc(_nearblur,4)
alloc(_farblur,4)
alloc(_gamma,4)
registersymbol(_sat)
registersymbol(_satR)
registersymbol(_satG)
registersymbol(_satB)
registersymbol(_tintR)
registersymbol(_tintG)
registersymbol(_tintB)
registersymbol(_fringe)
registersymbol(_vign)
registersymbol(_vignR)
registersymbol(_vignG)
registersymbol(_vignB)
registersymbol(_method)
registersymbol(_focaldist)
registersymbol(_fardist)
registersymbol(_neardist)
registersymbol(_fartrans)
registersymbol(_nearblur)
registersymbol(_farblur)
registersymbol(_gamma)
_sat:
dd (float)1.0
_satR:
dd (float)1.0
_satG:
dd (float)1.0
_satB:
dd (float)1.0
_fringe:
dd (float)0.3
_vign:
dd (float)0.5
_method:
dd 03
_focaldist:
dd (float)200.0
_fardist:
dd (float)50.0
_neardist:
dd (float)50.0
_fartrans:
dd (float)50.0
_nearblur:
dd (float)1.0
_gamma:
dd (float)2.2
//
aobscanmodule(ppAOB,LIS2-Win64-Shipping.exe,F7 42 10 00 01 00 00)
alloc(newmem,$1000,ppAOB)
label(code)
label(return)
newmem:
push rcx
//COLOR
mov ecx,[_satR]
mov [rdi+20],ecx
mov ecx,[_satG]
mov [rdi+24],ecx
mov ecx,[_satB]
mov [rdi+28],ecx
mov ecx,[_sat]
mov [rdi+2C],ecx
mov ecx,[_tintR]
mov [rdi+110],ecx
mov ecx,[_tintG]
mov [rdi+114],ecx
mov ecx,[_tintB]
mov [rdi+118],ecx
mov ecx,[_fringe]
mov [rdi+204],ecx
mov ecx,[_vign]
mov [rdi+3C0],ecx
mov ecx,[_vignR]
mov [rdi+3C4],ecx
mov ecx,[_vignG]
mov [rdi+3C8],ecx
mov ecx,[_vignB]
mov [rdi+3CC],ecx
//DOF
mov cl,[_method]
mov [rdi+430],cl
mov ecx,[_focaldist]
mov [rdi+440],ecx
mov ecx,[_fardist]
mov [rdi+44C],ecx
mov ecx,[_neardist]
mov [rdi+450],ecx
mov ecx,[_fartrans]
mov [rdi+454],ecx
mov ecx,[_nearblur]
mov [rdi+460],ecx
mov ecx,[_farblur]
mov [rdi+464],ecx
pop rcx
code:
test [rdx+10],0100
jmp return
ppAOB:
jmp newmem
db 90 90
return:
registersymbol(ppAOB)
//
{aobscanmodule(gammaAOB,LIS2-Win64-Shipping.exe,48 89 D9 41 0F 28 C3 F3 0F 5E C6 F3 0F 11 4C 24 64 F3 0F 11 44 24 68 E8)
alloc(newmem2,$1000,gammaAOB)
label(code2)
label(return2)
newmem2:
movss xmm1,[_gamma]
divss xmm1,xmm0
code2:
movaps xmm0,xmm11
divss xmm0,xmm6
jmp return2
gammaAOB+03:
jmp newmem2
db 90 90 90
return2:
registersymbol(gammaAOB)}
//
{aobscanmodule(gamma2AOB,LIS2-Win64-Shipping.exe,48 89 F1 41 0F 28 C3 F3 0F 5E C6 F3 0F 11 4C 24 34 F3 0F 11 44 24 38 E8)
alloc(newmem3,$1000,gamma2AOB)
label(code3)
label(return3)
newmem3:
movss xmm1,[_gamma]
divss xmm1,xmm0
code3:
movaps xmm0,xmm11
divss xmm0,xmm6
jmp return3
gamma2AOB+03:
jmp newmem3
db 90 90 90
return3:
registersymbol(gamma2AOB)}
[DISABLE]
ppAOB:
db F7 42 10 00 01 00 00
unregistersymbol(ppAOB)
dealloc(newmem)
{gammaAOB+03:
db 41 0F 28 C3 F3 0F 5E C6
unregistersymbol(gammaAOB)
dealloc(newmem2)}
{gamma2AOB+03:
db 41 0F 28 C3 F3 0F 5E C6
unregistersymbol(gamma2AOB)
dealloc(newmem3)}
Activate
79
0
14507
">> COLOR"
FF0000
1
14508
"Saturation (1)"
Float
_sat
14509
"Saturation - Red (1)"
Float
_satR
14510
"Saturation - Green (1)"
Float
_satG
14511
"Saturation - Blue (1)"
Float
_satB
14512
"Tint - Red (0)"
Float
_tintR
14513
"Tint - Green (0)"
Float
_tintG
14514
"Tint - Blue (0)"
Float
_tintB
14515
"Screen fringe (0.3) [ALT+B for 0]"
Float
_fringe
Set Value
18
66
0
0
14516
"Vignette (0.5)"
Float
_vign
14517
"Vignette - Red (0)"
000000
Float
_vignR
14518
"Vignette - Green (0)"
000000
Float
_vignG
14519
"Vignette - Blue (0)"
000000
Float
_vignB
14520
">> DOF"
FF0000
1
14522
"Focal distance [I/K]"
Float
_focaldist
Increase Value
73
1
0
Decrease Value
75
1
1
Set Value
79
200
2
14523
"Far distance [ALT+I/K]"
Float
_fardist
Increase Value
18
73
.2
0
Decrease Value
18
75
.2
1
Set Value
79
50
2
14524
"Near distance [ALT+I/K]"
Float
_neardist
Increase Value
18
73
.2
0
Decrease Value
18
75
.2
1
Set Value
79
50
2
14525
"Far transition [ALT+I/K]"
Float
_fartrans
Increase Value
18
73
.2
0
Decrease Value
18
75
.2
1
Set Value
79
50
2
14526
"Near blur [J/L]"
Float
_nearblur
Increase Value
74
.01
0
Decrease Value
76
.01
1
Decrease Value
78
.01
2
Increase Value
77
.01
3
Set Value
79
1
4
Set Value
18
79
0
5
14527
"Far blur [ALT+J/L]"
Float
_farblur
Increase Value
18
74
.01
0
Decrease Value
18
76
.01
1
Decrease Value
77
.01
2
Increase Value
78
.01
4
Set Value
79
0
3
Set Value
18
79
0
5
14531
"Swap focus: M/N"
1
14530
"Preset focus: O"
1
14532
"No blur: ALT+O"
1
14533
"Gamma (2.2)"
008000
Float
"LIS2-Win64-Shipping.exe"+342ED98
14306
"HUD on/off [H,G]"
FF0000
Auto Assembler Script
[ENABLE]
//
aobscanmodule(hudAOB,LIS2-Win64-Shipping.exe,83 D0 04 00 00 F3 0F 59 CD F3 0F 11 75 2C)
alloc(newmem,$1000,hudAOB)
label(code)
label(return)
newmem:
mov [rbp+2C],0
code:
//movss [rbp+2C],xmm6
jmp return
hudAOB+09:
jmp newmem
return:
registersymbol(hudAOB)
//
aobscanmodule(cursorAOB,LIS2-Win64-Shipping.exe,86 D0 04 00 00 F3 0F 59 CD F3 0F 11 75 2C F3 0F 11 5D)
alloc(newmem2,$1000,cursorAOB)
label(code2)
label(return2)
newmem2:
mov [rbp+2C],0
code2:
//movss [rbp+2C],xmm6
jmp return2
cursorAOB+09:
jmp newmem2
return2:
registersymbol(cursorAOB)
[DISABLE]
hudAOB+09:
db F3 0F 11 75 2C
unregistersymbol(hudAOB)
dealloc(newmem)
cursorAOB+09:
db F3 0F 11 75 2C
unregistersymbol(cursorAOB)
dealloc(newmem2)
Activate
72
0
Deactivate
71
1