updateTextLabels(), updateTextDraws 0.3.DL Convert

murakami

Известный
Автор темы
131
13
// 0.3.7
updateTextDraws() {
if (!checkHandles())
return false

if (textDrawTick + 1000 > A_TickCount)
return true

oTextDraws := []
if (!(dwTextDraws := __DWORD(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTDRAW])))
return false

Loop, % SAMP_MAX_TEXTDRAWS {
if (!__DWORD(hGTA, dwTextDraws, [(A_Index - 1) * 4]) || !(dwAddress := __DWORD(hGTA, dwTextDraws, [(A_Index - 1) * 4 + (4 * (SAMP_MAX_PLAYERTEXTDRAWS + SAMP_MAX_TEXTDRAWS))])))
continue

oTextDraws.Push(Object("TYPE", "Global", "ID", A_Index - 1, "TEXT", __READSTRING(hGTA, dwAddress, [0x0], 800)))
}

Loop, % SAMP_MAX_PLAYERTEXTDRAWS {
if (!__DWORD(hGTA, dwTextDraws, [(A_Index - 1) * 4 + SAMP_MAX_TEXTDRAWS * 4]) || !(dwAddress := __DWORD(hGTA, dwTextDraws, [(A_Index - 1) * 4 + (4 * (SAMP_MAX_PLAYERTEXTDRAWS + SAMP_MAX_TEXTDRAWS * 2))])))
continue

oTextDraws.Push(Object("TYPE", "Player", "ID", A_Index - 1, "TEXT", __READSTRING(hGTA, dwAddress, [0x0], 800)))
}

textDrawTick := A_TickCount
return true
}

// 0.3.7
updateTextLabels() {
if (!checkHandles())
return false

if (textLabelTick + 200 > A_TickCount)
return true

oTextLabels := []
dwTextLabels := __DWORD(hGTA, dwSAMP, [SAMP_INFO_PTR, SAMP_POOLS, SAMP_POOL_TEXTLABEL])
if (!dwTextLabels)
return false

Loop, % SAMP_MAX_TEXTLABELS {
i := A_Index - 1

if (!__DWORD(hGTA, dwTextLabels, [0xE800 + i * 4]))
continue

dwAddress := __DWORD(hGTA, dwTextLabels, [i * 0x1D])
if (!dwAddress)
continue

string := __READSTRING(hGTA, dwAddress, [0x0], 256)
if (string == "")
string := __READSTRING(hGTA, dwAddress, [0x0], getDialogTextSize(dwAddress))

if (string == "")
continue

fX := __READMEM(hGTA, dwTextLabels, [i * 0x1D + 0x8], "Float")
fY := __READMEM(hGTA, dwTextLabels, [i * 0x1D + 0xC], "Float")
fZ := __READMEM(hGTA, dwTextLabels, [i * 0x1D + 0x10], "Float")
wVehicleID := __READMEM(hGTA, dwTextLabels, [i * 0x1D + 0x1B], "UShort")
wPlayerID := __READMEM(hGTA, dwTextLabels, [i * 0x1D + 0x19], "UShort")

oTextLabels.Push(Object("ID", i, "TEXT", string, "XPOS", fX, "YPOS", fY, "ZPOS", fZ, "VEHICLEID", wVehicleID, "PLAYERID"
, wPlayerID, "VISIBLE", __READMEM(hGTA, dwTextLabels, [i * 0x1D + 0x18], "UChar"), "DISTANCE", __READMEM(hGTA, dwTextLabels, [i * 0x1D + 0x14], "Float")))
}

textLabelTick := A_TickCount
return true
}

Привет. Пожалуйста, поймите, что я пишу с помощью переводчика.
Приведенные ниже функции были найдены на сайте выше. https://github.com/Icii2q/SAMP_API/blob/master/API.ahk

Две указанные выше функции предназначены для версии 0.3.7.

Прежде всего, я попытался преобразовать updateTextDraws() в 0.3.DL.
Прежде всего, адрес 0.3.DL SAMP_INFO_PTR = 0x21A0F8 / SAMP_INFO_PTR = 0x3DE
Вам необходимо знать адрес 0.3.DL SAMP_POOL_TEXTDRAW. Но искал, но не нашел.


Теперь давайте объясним updateTextLabels().
На этот раз не удалось найти адрес SAMP_POOL_TEXTLABEL.

Can someone provide me with a nicely converted script to use the above two functions in 0.3.DL ?
 
  • Нравится
Реакции: scroll.