Исходник Гайд entityRender | Рисуем сущности в mimgui

Уже давно @chapo меня заебывал просил переписать библиотеку от @imring для mimgui, и я даже начал это делать, но потом забил болт. Но вот у меня наконец-то дошли руки до этого​

Описание: Данная библиотека дает возможность рендерить сущности в mimgui. Например: педов, транспорт, объекты.
Установка: скачать файл EntityRender.dll из вложений и перенести его в папку moonloader\lib.
Видео:

Скриншот:
1738640501189.png

Доступные функции:
Lua:
entityRender.init() -- Инициализирует библиотеку. Вызывается один раз перед работой с библиотекой
ptr texturePtr = entityRender.getD3D9Texture() -- Возвращает указатель на IDirect3Texture9 для рендера ImGui::Image
entityRender.recreateTexture(int nId) -- Пересоздает текстуру по её ID
bool result = entityRender.setTexturePos(int nId, float x, float y, float z) -- Устанавливает позицию текстуре по её ID
bool result = entityRender.setTextureRotate(int nId, float x, float y, float z) -- Устанавливает поворот текстуре под её ID
bool result = entityRender.setTextureModel(int nId, int nModelId) -- Устанавливает модель текстуре по её ID
bool result = entityRender.setTextureBackground(int nId, float r, float g, float b, float a) -- Устанавливает цвет заднего фона текстуры по её ID
bool result = entityRender.setTextureVehicleColor(int nId, int nPrimary, int nSecondary) -- Устанавливает цвет транспорту по ID текстуры
bool result = entityRender.deleteTexture(int nId) -- Удаляет текстуру по её ID
entityRender.deleteAllTextures() -- Удаляет всё текстуры
bool result = entityRender.isTextureExist(int nId)
int nId = entityRender.addEntity(int nModelId, int nTextureSizeX, nTextureSizeY) -- Создает текстуру с указаной моделью и возвращает её ID
Lua:
-- Код говно, но мне похуй
local entityRender = require("EntityRender")
local imgui = require 'mimgui'
local renderWindow = imgui.new.bool(true)
local vPos = imgui.new.float[3](0.1, -2.00, 50.0)
local bgColor = imgui.new.float[4](1.0, 1.0, 1.0, 1.0)
local vRotate = imgui.new.float[3](0.0, 0.0, 0.0)
local nModel = imgui.new.int(411)
local nVehicleColor = imgui.new.int[2](0, 0)
local vPos1 = imgui.new.float[3](0.1, -2.00, 50.0)
local bgColor1 = imgui.new.float[4](1.0, 1.0, 1.0, 1.0)
local vRotate1 = imgui.new.float[3](0.0, 0.0, 0.0)
local nModel1 = imgui.new.int(411)
local nVehicleColor1 = imgui.new.int[2](0, 0)
local nTextureId = nil
local nTextureId1 = nil
function main()
    entityRender.init()
    nTextureId = entityRender.addEntity(nModel[0], 256, 256)
    nTextureId1 = entityRender.addEntity(nModel1[0], 256, 256)
end
imgui.OnInitialize(function()
    imgui.GetIO().IniFilename = nil
end)
local newFrame = imgui.OnFrame(
    function() return renderWindow[0] end,
    function(player)
        local resX, resY = getScreenResolution()
        local sizeX, sizeY = 600, 300
        imgui.SetNextWindowPos(imgui.ImVec2(resX / 2, resY / 2), imgui.Cond.FirstUseEver, imgui.ImVec2(0.5, 0.5))
        imgui.SetNextWindowSize(imgui.ImVec2(sizeX, sizeY), imgui.Cond.FirstUseEver)
        if imgui.Begin('Main Window', renderWindow, imgui.WindowFlags.AlwaysAutoResize) then
            if (entityRender.getD3D9Texture(nTextureId) ~= nil) then
                imgui.Image(entityRender.getD3D9Texture(nTextureId), imgui.ImVec2(255.0, 255.0))
            end
            if (entityRender.getD3D9Texture(nTextureId1) ~= nil) then
                imgui.SameLine()
                imgui.Image(entityRender.getD3D9Texture(nTextureId1), imgui.ImVec2(255.0, 255.0))
            end
            if (imgui.DragFloat3("pos", vPos, 0.1, -100.0, 100.0)) then
                entityRender.setTexturePos(nTextureId, vPos[0], vPos[1], vPos[2])
                entityRender.recreateTexture(nTextureId)
            end
            imgui.SameLine()
            if (imgui.DragFloat3("pos1", vPos1, 0.1, -100.0, 100.0)) then
                entityRender.setTexturePos(nTextureId1, vPos1[0], vPos1[1], vPos1[2])
                entityRender.recreateTexture(nTextureId1)
            end
            if (imgui.DragFloat3("rotate", vRotate, 0.1, -360.0, 360.0)) then
                entityRender.setTextureRotate(nTextureId, vRotate[0], vRotate[1], vRotate[2])
                entityRender.recreateTexture(nTextureId)
            end
     
            imgui.SameLine()
            if (imgui.DragFloat3("rotate1", vRotate1, 0.1, -360.0, 360.0)) then
                entityRender.setTextureRotate(nTextureId1, vRotate1[0], vRotate1[1], vRotate1[2])
                entityRender.recreateTexture(nTextureId1)
            end
            if (imgui.ColorEdit4("bg color", bgColor)) then
                entityRender.setTextureBackground(nTextureId, bgColor[0] * 255, bgColor[1] * 255, bgColor[2] * 255, bgColor[3] * 255)
                entityRender.recreateTexture(nTextureId)
            end
     
            imgui.SameLine()
            if (imgui.ColorEdit4("bg color1", bgColor1)) then
                entityRender.setTextureBackground(nTextureId1, bgColor1[0] * 255, bgColor1[1] * 255, bgColor1[2] * 255, bgColor1[3] * 255)
                entityRender.recreateTexture(nTextureId1)
            end
            imgui.InputInt2("vehicle color", nVehicleColor)
            imgui.SameLine()
            imgui.InputInt2("vehicle color1", nVehicleColor1)
            imgui.InputInt("model", nModel)
            imgui.SameLine()
            imgui.InputInt("model1", nModel1)
            if (imgui.Button("recreate")) then
                entityRender.setTextureModel(nTextureId, nModel[0])
                entityRender.setTextureVehicleColor(nTextureId, nVehicleColor[0], nVehicleColor[1])
                entityRender.recreateTexture(nTextureId)
                entityRender.setTextureModel(nTextureId1, nModel1[0])
                entityRender.setTextureVehicleColor(nTextureId1, nVehicleColor1[0], nVehicleColor1[1])
                entityRender.recreateTexture(nTextureId1)
            end
            imgui.End()
        end
    end
)

Автор: @ARMOR
Автор оригинальной библиотеки: @imring
Отдельное спасибо: @вайега52
Исходник: https://github.com/xARMORx/EntityRender
 

Вложения

  • EntityRender.dll
    170.5 KB · Просмотры: 201
Последнее редактирование модератором:

trefa

3d print
Всефорумный модератор
2,145
1,347
и ещё, у некоторых моделей транспорта есть что-то наподобие подтипов моделей, например 435 - трейлер, если его пересоздавать получается постоянно рандомная пиздобразия с разными деталями текстурки на одной и той же модели. трейлер, это как пример, подобный транспорт есть ещё - 552(меняется колличество конусов) и другие
Это экстра называется
 

ARMOR

Я креветка
Автор темы
Модератор
5,068
7,426
Для желающих: есть идея для худа, в котором будут рисоваться ганы при помощи этой библиотеки. Думал сам это сделать, но как-то забил болт на эту идею после добавления несколький оружий.

Вот как это выглядит у меня. Пытался сделать позицию и поворот оружия примерно таким же как и у обычных иконок оружия:

UP: Кстати обновления с анимациями не будет. Они жрали очень много фпс и я положил болт
 

четыреста четыре

Известный
130
21
Для желающих: есть идея для худа, в котором будут рисоваться ганы при помощи этой библиотеки. Думал сам это сделать, но как-то забил болт на эту идею после добавления несколький оружий.

Вот как это выглядит у меня. Пытался сделать позицию и поворот оружия примерно таким же как и у обычных иконок оружия:

UP: Кстати обновления с анимациями не будет. Они жрали очень много фпс и я положил болт
да хуй бы с ними, главное чтоб функциональность была аналогичной sampTextdrawSetModelRotationZoomVehColor без проблем с лодками
 

RaMero

Известный
444
137
При onD3DDeviceLost (сворачивании игры) слетают текстурки и нужно заново в onD3DDeviceReset подгружать, и в большинстве случаев - после разворачивания черный экран.
 
  • Вау
Реакции: ARMOR

Davidasme

Новичок
20
1
i love this plugin amazing work i created script all good object, vehicle, weapons, all works perfect only ped when i use ped game crash
GTA SA 1.0.0.0 US
Unhandled exception at 0x72746218 in nvd3dum.dll (+0x1256218): 0xC0000005: Access violence reading location 0xFFFFFFFF.
Register dump:
EAX: 0x72746141 EBX: 0x26FB0FA8 ECX: 0x26FB0FA8 EDX: 0x00863C40
EDI: 0x26FB0FA8 ESI: 0x75BDDC60 EBP: 0x0177F62C EIP: 0x72746218
ESP: 0x0177F5FC EFL: 0x00210207 CS: 0x00000023 SS: 0x0000002B
GS:0x0000002B FS:0x00000053 ES:0x0000002B DS:0x0000002B

Stack dump:
0x0177F5FC: 6F69190E 018485C0 0330E8E0 26FB0FA8 00000001 00805769
0x0177F614: 05380D68 00C9BC50 007FE9EA 00000018 00000014 018485C0
0x0177F62C: 0177F6C9 6F691887 26FB0FA8 018485C0 0330E8E0 0177F688
0x0177F644: 0177F658 26FB0FA8 0330E8EC 0000000A 00000000 018485C0
0x0177F65C: 0177F688 FFFFFFFF 0177F708 0330E8EC 00000000 0177F688
0x0177F674: 0053EAC9 7035F75A 0177F708 7035FC50 00000001 0177F6D0
0x0177F68C: 7035B8E9 0177F6DC 01925BC0 703B8A9C 018485C0 002A0744
0x0177F6A4: 00000000 0177F6C0 75DFE17B 00000101 00000044 C0200001
0x0177F6BC: 0177F698 0177F698 0177F6F4 703B3B40 00000001 0177F6E4
0x0177F6D4: 7035FC02 01925BD4 00000001 0177F888 0177F700 7035E267
base: 0x01580000 top: 0x0177F5FC bottom: 0x01780000

Backtrace (may be wrong):
=>0x72746218 QueryOglResource+0x9182e8 in nvd3dum.dll (+0x1256218) (0x0177F62C)
0x6F691887 in OutFit.asi (+0x1887) (0x0177F6F9)
0x74000000 InternetSetCookieEx2+0x2640 in WININET.dll (+0x330000) (0x0177F6FD)
0x460177F8 in unknown (+0x460177f8) (0x0177F701)
0xA4703602 in unknown (+0xa4703602) (0x0177F705)
0xC0703B89 in unknown (+0xc0703b89) (0x0177F709)
0x44018485 in unknown (+0x44018485) (0x0177F70D)
0xCD002A07 in unknown (+0xcd002a07) (0x0177F711)
0x00DCBAAB in gta_sa.exe (+0x9cbaab) (0x0177F715)
0x68000000 in unknown (+0x68000000) (0x0177F719)
0x850177F8 in unknown (+0x850177f8) (0x0177F71D)
0xFF703B3D in unknown (+0xff703b3d) (0x0177F721)
0x74FFFFFF in wintypes.dll (+0x1ffff) (0x0177F725)
0x000177F8 in unknown (+0x177f8) (0x0177F729)
0x88000000 in unknown (+0x88000000) (0x0177F72D)
0x1A0177F8 in unknown (+0x1a0177f8) (0x0177F731)
0x01000000 in gta_sa.exe (+0xc00000) (0x0177F735)


just now i found the problem it was OutFit.asi
 
Последнее редактирование:

TwoPillsMolly

Новичок
9
3
можно ли как то сделать так что анимированные объекты по типу 18690 были анимированны, или хотя бы показывались статично на каком то кадре?
 

Вложения

  • 1778893324116.png
    1778893324116.png
    54 KB · Просмотры: 21

Davidasme

Новичок
20
1
need update or fix tuning parts rc or bikes way too small way too dark and small and vehicle like big models dumper, busses, trucks ok but need auto adjust preview window and weapon also way smaller
 

Davidasme

Новичок
20
1
I found another problem it don't render any boat models instead it shows model ID 400 landstalk
 
Последнее редактирование: