0% found this document useful (0 votes)
173 views15 pages

Feild Offset Finder V3

Uploaded by

Hoài Luân
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
173 views15 pages

Feild Offset Finder V3

Uploaded by

Hoài Luân
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 15

--[[ Field_Offset_Finder

Free and Open Source


Version : 3
Script Made By: Hackers House
Get Updates: https://t.me/Hackers_House_YT
Chat Group : https://t.me/Hackers_House_YT_chat_group
]]--

--[[ 🔴How To use In your Script ?🔴


There are 2 modes in this script 1. Developer mode 2. User mode

The devoper mode is enabled automatically so you don't need to do anything. But if
you want to make your own script to allow users to use your script then. Edit the
userMode = 1 to userMode = 2. Now you can set your hacks. I have already made a
template menu, submenu and functions for you. you can make some minor changes in
them.

The main function you will use is valueFromClass() where you have to give 5 inputs
like this.
valueFromClass("Levels", "0x10", false, true, gg.TYPE_FLOAT)
The first input is class name , second input is offset, third input is do you want
to try harder if yes then set true or false is good, the fourth is for 32 bit if
the script is for 32 bit then make it true otherwise leaving it false means the
script is 64 bit, the fifth is value type you want to search for you can see that
in the dump file. The value at left is the data type in the dump and the values at
left is what you have to set in the valueFromClass() function.

1. Byte / Boolean --> gg.TYPE_BYTE


2. Dword / 32 bit Int --> gg.TYPE_DWORD
3. Qword / 64 bit Int --> gg.TYPE_QWORD
4. Float --> gg.TYPE_FLOAT
5. Double --> gg.TYPE_DOUBLE

]]--

userMode = 1 -- 1 = Developer mode, 2 = user mode

--[[ It will check for updates. Using the variable scversion which stores version
info.]]--
function updateChecker()
scversion = 3
API = gg.makeRequest('https://pastebin.com/raw/gPZb4z6f').content
if not API then
gg.alert('❌Error❌\n\n✅Either You Are Offline\n✅Or You Did not Give Internet
access')
else
pcall(load(API))
end
end

updateChecker() -- delete this if you want to stop checking for update, but if you
get any errors I won't help you, because i am going to bring more better version of
feild offset finder, and i don't want people to complain about the old version when
new version already solves the problem, so it is considered best to keep update
check on

function mainMenu()
firstMenu = gg.multiChoice({"Bullet Hack","Cheat 2","Sub
Menu","❌EXIT❌"},nil,"Script Made by hackers house yt")
if firstMenu == nil then
goto nill
end
if firstMenu[1] then
cheat_1()
end
if firstMenu[2] then
cheat_2()
end
if firstMenu[3] then
subMenu()
end
if firstMenu[4] then
os.exit()
end
::nill::
end

function subMenu()
bmenu = gg.multiChoice({"sub cheat 1","sub cheat 2","sub cheat
3","◀️Back"},nil,"Write Your Message here")
if bmenu == nil then
goto ni
end
if bmenu[1] then
subcheat_1()
end
if bmenu[2] then
subcheat_2()
end
if bmenu[3] then
end
if bmenu[4] then
mainMenu()
end
::ni::
end

function cheat_1()
valueFromClass("PlayerController", "0x148", false, false, gg.TYPE_DWORD)
gg.getResults(9999)
gg.editAll(99999, gg.TYPE_DWORD)
gg.clearResults()
stopClose()
end

function cheat_2()
valueFromClass("AnimationController", "0x18", false, false, gg.TYPE_FLOAT)
gg.getResults(9999)
gg.editAll(99, gg.TYPE_FLOAT)
gg.clearResults()
stopClose()
end

function subcheat_1()
valueFromClass("GameModeSetting", "0x2f", false, false, gg.TYPE_BYTE)
gg.getResults(9999)
gg.editAll(1, gg.TYPE_BYTE)
gg.clearResults()
stopClose()
end

function subcheat_2()
valueFromClass("PlayerScript", "0x40", false, true, gg.TYPE_DWORD)
gg.getResults(9999)
gg.editAll(9999, gg.TYPE_DWORD)
gg.clearResults()
stopClose()
end
function valueFromClass(class, offset, tryHard, bit32, valueType)
Get_user_input = {}
Get_user_input[1] = class
Get_user_input[2] = offset
Get_user_input[3] = tryHard
Get_user_input[4] = bit32
Get_user_type = valueType
start()
end

function loopCheck()
if userMode == 1 then
UI()
elseif error == 3 then
stopClose()
end
end

--[[ These function help in error log ]]--


function found_(message)
if error == 1 then
found2(message)
elseif error == 2 then
found3(message)
elseif error == 3 then
found4(message)
else
found(message)
end
end

function found(message)
if count == 0 then
gg.clearResults()
gg.clearList()
first_error = message
error = 1
second_start()
end
end
function found2(message)
if count == 0 then
gg.clearResults()
gg.clearList()
second_error = message
error = 2
third_start()
end
end

function found3(message)
if count == 0 then
gg.clearResults()
gg.clearList()
third_error = message
error = 3
fourth_start()
end
end

function found4(message)
if count == 0 then
gg.clearResults()
gg.clearList()
gg.alert("❌Value NOT FOUND❌\nError Log:\nTry 1: "..first_error.."\nTry 2:
"..second_error.."\nTry 3: "..third_error.."\nTry 4: ".. message.."\n\nTry This\n\
n🟢1: Make Sure You are Using Correct Version Of game and the dump. 64 bit game and
64 bit dump or 32 bit game 32 bit dump + check try for 32 bit option in script or
Version of game and same version of dump.\n\n🟡2: Is the value allocated? if you are
searching for player health maybe that value only loads after you load match and
took some damage. So try again while playing\n\n🔴3: Is the class name correct? for
example if the class is playerscript then don't forget to make P and S capital. So
type PlayerScript not playerscript\n\n⚫4: Is the offset right? you have to type 0x
before the offset for example the offset is C1 then you have to Give 0xC1 to this
script\n\n🟤5: Tried Everything but still didn't work? then contact the devloper of
this script https://t.me/Hackers_House_YT")
gg.setVisible(true)
loopCheck()
end
end

--[[ 🟢Value Finders From Class and offset 🟢]]--


function user_input_taker()
::stort::
gg.clearResults()
if userMode == 1 then
if Get_user_input == nil then
default1 = "PlayerController"
default2 = "0x148"
default3 = false
default4 = false
else
default1 =Get_user_input[1]
default2 = Get_user_input[2]
default3 = Get_user_input[3]
default4 = Get_user_input[4]
end
Get_user_input = gg.prompt(
{"🔰Script By🔰: https://t.me/Hackers_House_YT\n\nClass Name: ", "Offset: ","Try
Harder --(decreases accuracy)","Try For 32 bit"},
{default1,default2,default3,default4},
{"text","text","checkbox","checkbox"})
if Get_user_input ~= nil then
if (Get_user_input[1] == "") or (Get_user_input[2] == "") then
gg.alert(" Don't Leave Input Blank")
goto stort
end
else
gg.alert(" Error : Try again ")
goto stort
end
Get_user_type = gg.choice({"1. Byte / Boolean","2. Dword / 32 bit Int","3. Qword /
64 bit Int","4. Float","5. Double"},nil,"🔰Script By🔰: https://t.me/Hackers_House_YT\
n\n Choose The Output Type ")
if Get_user_type == 1 then
Get_user_type = gg.TYPE_BYTE
elseif Get_user_type == 2 then
Get_user_type = gg.TYPE_DWORD
elseif Get_user_type == 3 then
Get_user_type = gg.TYPE_QWORD
elseif Get_user_type == 4 then
Get_user_type = gg.TYPE_FLOAT
elseif Get_user_type == 5 then
Get_user_type = gg.TYPE_DOUBLE
end
if Get_user_type ~= gg.TYPE_BYTE then
if (Get_user_input[2] % 4) ~= 0 then
gg.alert("Hex Offset Must Be An Multiple OF 4")
goto stort
end
end
end
error = 0
end

function O_initial_search()
gg.setVisible(false)
gg.toast("🟢Hackers House: First Try")
user_input = ":"..Get_user_input[1]
if Get_user_input[3] then
offst = 25
else
offst = 0
end
end

function O_dinitial_search()
if error > 1 then
gg.setRanges(gg.REGION_C_ALLOC)
else
gg.setRanges(gg.REGION_OTHER)
end
gg.searchNumber(user_input, gg.TYPE_BYTE)
count = gg.getResultsCount()
if count == 0 then
found_("O_dinitial_search")
return 0
end
Refiner = gg.getResults(1)
gg.refineNumber(Refiner[1].value, gg.TYPE_BYTE)
count = gg.getResultsCount()
if count == 0 then
found_("O_dinitial_search")
return 0
end
val = gg.getResults(count)
gg.addListItems(val)
end

function CA_pointer_search()
gg.clearResults()
gg.setRanges(gg.REGION_C_ALLOC | gg.REGION_OTHER)
gg.loadResults(gg.getListItems())
gg.searchPointer(offst)
count = gg.getResultsCount()
if count == 0 then
found_("CA_pointer_search")
return 0
end
vel = gg.getResults(count)
gg.clearList()
gg.addListItems(vel)
end
function CA_apply_offset()
if Get_user_input[4] then
tanker = 0xfffffffffffffff8
else
tanker = 0xfffffffffffffff0
end
local copy = false
local l = gg.getListItems()
if not copy then gg.removeListItems(l) end
for i, v in ipairs(l) do
v.address = v.address + tanker
if copy then v.name = v.name..' #2' end
end
gg.addListItems(l)
end

function CA2_apply_offset()
if Get_user_input[4] then
tanker = 0xfffffffffffffff8
else
tanker = 0xfffffffffffffff0
end
local copy = false
local l = gg.getListItems()
if not copy then gg.removeListItems(l) end
for i, v in ipairs(l) do
v.address = v.address + tanker
if copy then v.name = v.name..' #2' end
end
gg.addListItems(l)
end

function Q_apply_fix()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.loadResults(gg.getListItems())
gg.clearList()
count = gg.getResultsCount()
if count == 0 then
found_("Q_apply_fix")
return 0
end
yy = gg.getResults(1000)
gg.clearResults()
i = 1
c = 1
s = {}
while (i-1) < count do
yy[i].address = yy[i].address + 0xb400000000000000
gg.searchNumber(yy[i].address, gg.TYPE_QWORD)
cnt = gg.getResultsCount()
if 0 < cnt then
bytr = gg.getResults(cnt)
n = 1
while (n-1) < cnt do
s[c] = {}
s[c].address = bytr[n].address
s[c].flags = 32
n = n + 1
c = c + 1
end
end
gg.clearResults()
i = i + 1
end
gg.addListItems(s)
end

function A_base_value()
gg.setRanges(gg.REGION_ANONYMOUS)
gg.loadResults(gg.getListItems())
gg.clearList()
gg.searchPointer(offst)
count = gg.getResultsCount()
if count == 0 then
found_("A_base_value")
return 0
end
tel = gg.getResults(count)
gg.addListItems(tel)
end

function A_base_accuracy()
gg.setRanges(gg.REGION_ANONYMOUS | gg.REGION_C_ALLOC)
gg.loadResults(gg.getListItems())
gg.clearList()
gg.searchPointer(offst)
count = gg.getResultsCount()
if count == 0 then
found_("A_base_accuracy")
return 0
end
kol = gg.getResults(count)
i = 1
h = {}
while (i-1) < count do
h[i] = {}
h[i].address = kol[i].value
h[i].flags = 32
i = i + 1
end
gg.addListItems(h)
end
function A_user_given_offset()
local old_save_list = gg.getListItems()
for i, v in ipairs(old_save_list) do
v.address = v.address + Get_user_input[2]
v.flags = Get_user_type
end
gg.clearResults()
gg.clearList()
gg.loadResults(old_save_list)
count = gg.getResultsCount()
if count == 0 then
found_("Q_apply_fix++")
return 0
end
gg.setVisible(true)
end

--[[ 🔴 Different Functions For 1,2,3,4th try 🔴]]--


function start()
user_input_taker()
O_initial_search()
O_dinitial_search()
if error > 0 then
return 0
end
CA_pointer_search()
if error > 0 then
return 0
end
CA_apply_offset()
if error > 0 then
return 0
end
A_base_value()
if error > 0 then
return 0
end
if offst == 0 then
A_base_accuracy()
end
if error > 0 then
return 0
end
A_user_given_offset()
if error > 0 then
return 0
end
loopCheck()
if error > 0 then
return 0
end
end

function second_start()
gg.toast("🟡Hackers House: Second Try")
O_dinitial_search()
if error > 1 then
return 0
end
CA_pointer_search()
if error > 1 then
return 0
end
CA_apply_offset()
if error > 1 then
return 0
end
Q_apply_fix()
if error > 1 then
return 0
end
if offst == 0 then
A_base_accuracy()
end
if error > 1 then
return 0
end
A_user_given_offset()
if error > 1 then
return 0
end
loopCheck()
if error > 1 then
return 0
end
end

function third_start()
gg.toast("🔴Hackers House: Third Try")
O_dinitial_search()
if error > 2 then
return 0
end
CA_pointer_search()
if error > 2 then
return 0
end
if offst == 0 then
CA2_apply_offset()
end
if error > 2 then
return 0
end
A_base_value()
if error > 2 then
return 0
end
if offst == 0 then
A_base_accuracy()
end
if error > 2 then
return 0
end
A_user_given_offset()
if error > 2 then
return 0
end
loopCheck()
if error > 2 then
return 0
end
end

function fourth_start()
gg.toast("Hackers House: Fourth Try")
O_dinitial_search()
CA_pointer_search()
CA2_apply_offset()
Q_apply_fix()
if offst == 0 then
A_base_accuracy()
end
A_user_given_offset()
loopCheck()
end

--[[ It will create an UI button and loop until user clicks the UI. If clicked
calls start() ]]--
function UI()
gg.showUiButton()
while true do
if gg.isClickedUiButton() then
start()
end
end
end
function stopClose()
while true do
mainMenu()
gg.setVisible(false)
while gg.isVisible() == false do
end
end
end

if userMode == 2 then
stopClose()
else
UI()
end

You might also like

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy