memory

qdIbp

Автор темы
Автор темы
Проверенный
1,434
1,174
Версия MoonLoader
.027.0-preview
вопросик такой, как с этим работать?
А точнее как получить colorID
1672900675204.png

С дистанцией вроде как разобралсяmem.getfloat(0xC7CB58+0x0030)
но не с цветом
 
Решение
вопросик такой, как с этим работать?
А точнее как получить colorID
Посмотреть вложение 184510
С дистанцией вроде как разобралсяmem.getfloat(0xC7CB58+0x0030)
но не с цветом
Мой тебе совет. Забей на эти танцы с бубном и memory.

Код ниже рендерит линии к светофорам и указывает их текущий цвет.
1672903537811.png

Lua:
local ffi = require 'ffi'
ffi.cdef[[
typedef unsigned char BYTE;

typedef struct Vector3D { float x, y, z; } RwV3D;

typedef struct CLumiousPolygon {
    RwV3D position;
    RwV3D right;
    RwV3D top;
    RwV3D at;
    float distanceToCamera;
    BYTE colorID;
    BYTE _f35;
    BYTE _f36;
    BYTE _f37;
} CLumiousPolygon;
]]

local lum_polygons = ffi.cast('CLumiousPolygon*', 0xC7CB58)
local colors = {
    [1] = { 0xFF00FF00...

Andrinall

Известный
702
518
вопросик такой, как с этим работать?
А точнее как получить colorID
Посмотреть вложение 184510
С дистанцией вроде как разобралсяmem.getfloat(0xC7CB58+0x0030)
но не с цветом
Мой тебе совет. Забей на эти танцы с бубном и memory.

Код ниже рендерит линии к светофорам и указывает их текущий цвет.
1672903537811.png

Lua:
local ffi = require 'ffi'
ffi.cdef[[
typedef unsigned char BYTE;

typedef struct Vector3D { float x, y, z; } RwV3D;

typedef struct CLumiousPolygon {
    RwV3D position;
    RwV3D right;
    RwV3D top;
    RwV3D at;
    float distanceToCamera;
    BYTE colorID;
    BYTE _f35;
    BYTE _f36;
    BYTE _f37;
} CLumiousPolygon;
]]

local lum_polygons = ffi.cast('CLumiousPolygon*', 0xC7CB58)
local colors = {
    [1] = { 0xFF00FF00, "Зелёный" },
    [2] = { 0xFFFFFF00, "Жёлтый"  },
    [3] = { 0xFFFF0000, "Красный" }
}
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    repeat wait(100) until isSampAvailable()

    local font = renderCreateFont('Tahoma', 15, 0x5)

    while true do wait(0)
        if sampIsLocalPlayerSpawned() then
            for i = 0, 31 do
                if lum_polygons[i] ~= ffi.NULL then
                    local pos = lum_polygons[i].position
                    if isPointOnScreen(pos.x, pos.y, pos.z, 300) then
                        local cx, cy, cz = getCharCoordinates(PLAYER_PED)
                        local x, y = convert3DCoordsToScreen(pos.x, pos.y, pos.z)
                        local sx, sy = convert3DCoordsToScreen(cx, cy, cz)
                        renderDrawLine(sx, sy, x, y, 2, colors[lum_polygons[i].colorID][1])
                        renderFontDrawText(font, colors[lum_polygons[i].colorID][2], x + 1, y + 4, colors[lum_polygons[i].colorID][1])
                    end
                end
            end
        end
    end
end


upd: по сути это стало таблицей и бери что хочешь)
Вот пример с дистанцией
1672904116571.png
 
Последнее редактирование:
  • Нравится
  • Злость
Реакции: chromiusj, #Northn и qdIbp

qdIbp

Автор темы
Автор темы
Проверенный
1,434
1,174
Мой тебе совет. Забей на эти танцы с бубном и memory.

Код ниже рендерит линии к светофорам и указывает их текущий цвет.
Посмотреть вложение 184520
Lua:
local ffi = require 'ffi'
ffi.cdef[[
typedef unsigned char BYTE;

typedef struct Vector3D { float x, y, z; } RwV3D;

typedef struct CLumiousPolygon {
    RwV3D position;
    RwV3D right;
    RwV3D top;
    RwV3D at;
    float distanceToCamera;
    BYTE colorID;
    BYTE _f35;
    BYTE _f36;
    BYTE _f37;
} CLumiousPolygon;
]]

local lum_polygons = ffi.cast('CLumiousPolygon*', 0xC7CB58)
local colors = {
    [1] = { 0xFF00FF00, "Зелёный" },
    [2] = { 0xFFFFFF00, "Жёлтый"  },
    [3] = { 0xFFFF0000, "Красный" }
}
function main()
    if not isSampLoaded() or not isSampfuncsLoaded() then return end
    repeat wait(100) until isSampAvailable()

    local font = renderCreateFont('Tahoma', 15, 0x5)

    while true do wait(0)
        if sampIsLocalPlayerSpawned() then
            for i = 0, 31 do
                if lum_polygons[i] ~= ffi.NULL then
                    local pos = lum_polygons[i].position
                    if isPointOnScreen(pos.x, pos.y, pos.z, 300) then
                        local cx, cy, cz = getCharCoordinates(PLAYER_PED)
                        local x, y = convert3DCoordsToScreen(pos.x, pos.y, pos.z)
                        local sx, sy = convert3DCoordsToScreen(cx, cy, cz)
                        renderDrawLine(sx, sy, x, y, 2, colors[lum_polygons[i].colorID][1])
                        renderFontDrawText(font, colors[lum_polygons[i].colorID][2], x + 1, y + 4, colors[lum_polygons[i].colorID][1])
                    end
                end
            end
        end
    end
end


upd: по сути это стало таблицей и бери что хочешь)
Вот пример с дистанцией
Посмотреть вложение 184521
Зачем ты мой бубен отбираешь 😡

Крч проблема с линией из за lum_polygons.colorID который возвращает 15 вместо 1/2/3

Код:
local colors = {
    [13] = { 0xFF00FF00, "Зелёный" },
    [14] = { 0xFFFFFF00, "Жёлтый"  },
    [15] = { 0xFFFF0000, "Красный" }
}
а пон
крч вот так как-то
 
Последнее редактирование:
  • Ха-ха
Реакции: whyega52 и Andrinall

Andrinall

Известный
702
518
Крч проблема с линией из за lum_polygons.colorID который возвращает 15 вместо 1/2/3
Просто добавь проверку на colors[lum_polygons[i].colorID] ~= nil или вручную допиши в таблицу цвет с этим индексом.
 
  • Грустно
Реакции: qdIbp