AHK: Автообновление оффсетов в отдельном файле

В этой теме я покажу, как написать на AHK скрипт для обновления файла с оффсетами для любых AHK "читов" на примере hezedumper для CS:GO.

Шаг #1 - Страница с исходным кодом для его полного копирования / скачивания (Raw)

Для этого нам нужен hazedumper: https://github.com/frk1/hazedumper
Переходим в hazedumper > csgo.json, справа сверху над блоком кода нажимаем на Raw: изображение
Нас переадресовывает на данную страницу: https://raw.githubusercontent.com/frk1/hazedumper/master/csgo.json
Вот она нам и нужна для обновления файла оффсетов.

Шаг #2 - Участок кода для скачивания в .json файл и изменение содержимого файла

• Скачиваем содержимое raw страницы:

URLDownloadToFile, https://raw.githubusercontent.com/frk1/hazedumper/master/csgo.json, download.json

• Редактирование содержимого по шаблону, изменение файла offsets:
filename=offsets.ahk
FileDelete, %filename%
FileAppend,class offsets`n, %filename%
FileAppend,{`n, %filename%
loop, Read, download.json
{
	curloop:=a_index
	parts:=StrSplit(A_LoopReadLine, " ")
	for k,v in parts
	{
		val := makePlain(v)
		if(val)
		{
			
			if val is not integer
			{
				if(val!="{" and val!="{" and v!="}," and val!="}")
				{
					valVal:=makePlain(parts[k+1])
					valReal := int2hex(valVal)
					strtowrite:= "static " . val . " = " . valReal
					FileAppend, %strtowrite%`n, %filename%
				}
			}
		}
	}
}
FileAppend, static entityLoopDistance:=0x10`n, %filename%
FileAppend, }, %filename%

makePlain(val)
{
	val:=StrReplace(val, "`,")
	val:=StrReplace(val, """")
	val:=StrReplace(val, ":")
	val:=StrReplace(val, " ")
	val:=StrReplace(val, "	")
	return val
}

Шаг #3 - Изменение значений из 10-й в 16-ю систему счисления

• Изменяем:

int2hex(int)
{
    HEX_INT := 8
    while (HEX_INT--)
    {
        n := (int >> (HEX_INT * 4)) & 0xf
        ret .= n > 9 ? chr(55 + n) : n
        if (HEX_INT == 0 && HEX_INT//2 == 0)
        ret .= " "
    }
    return "0x" ret
}

Готовый код

#NoEnv
SendMode Input
SetWorkingDir %A_ScriptDir%
#SingleInstance force
URLDownloadToFile, https://raw.githubusercontent.com/frk1/hazedumper/master/csgo.json, download.json
filename=offsets.ahk
FileDelete, %filename%
FileAppend,class offsets`n, %filename%
FileAppend,{`n, %filename%
loop, Read, download.json
{
    curloop:=a_index
    parts:=StrSplit(A_LoopReadLine, " ")
    for k,v in parts
    {
        val := makePlain(v)
        if(val)
        {
            
            if val is not integer
            {
                if(val!="{" and val!="{" and v!="}," and val!="}")
                {
                    valVal:=makePlain(parts[k+1])
                    valReal := int2hex(valVal)
                    strtowrite:= "static " . val . " = " . valReal
                    FileAppend, %strtowrite%`n, %filename%
                }
            }
        }
    }
}
FileAppend, static entityLoopDistance:=0x10`n, %filename%
FileAppend, }, %filename%

makePlain(val)
{
    val:=StrReplace(val, "`,")
    val:=StrReplace(val, """")
    val:=StrReplace(val, ":")
    val:=StrReplace(val, " ")
    val:=StrReplace(val, "    ")
    return val
}

int2hex(int)
{
    HEX_INT := 8
    while (HEX_INT--)
    {
        n := (int >> (HEX_INT * 4)) & 0xf
        ret .= n > 9 ? chr(55 + n) : n
        if (HEX_INT == 0 && HEX_INT//2 == 0)
            ret .= " "
    }
    return "0x" ret
}
2 Likes

полезно !

Но когда будет тема как написать за 5 минут winX?

Научится кодить на проф.уровне.

Бро эт рофл.

Брат, теперь без рофлов.image

Снимок экрана (116)

Оффтоп прекратите :slight_smile:
Для этого есть #offtop

Забанят же.

А чего не сделаешь просто автообновления оффсетов через память? https://forum.ezcheats.ru/t/ahk-avtoobnovlenie-offsetov-dlya-ahk-chitov/176005/1.