- 5,068
- 7,363
Описание: Данная библиотека разрешает рендерить аксесуары на педах не через сущности, а через сами модели, тем самым не забивая игровые пуллы. Так же библиотека дает возможность подгружать кастомные модели для аксесуаров.
Функционал:
* Ptr - это указатель на CBaseModelInfo. Если вы хотите рендерить игровую модель - для этого используйте getGameBaseModel().
* Слотов 8, начиная с 0. ID костей можете взять здесь. https://sampwiki.blast.hk/wiki/Bone_IDs_RU
Исходник: https://github.com/xARMORx/BaseModelRender
Автор: @ARMOR
PS: Вообще это будет больше полезно разным проектам со своими лаунчерами, а не для луа, но да и похуй, так же будет полезно для использования с этой библиотекой от @SR_team: https://www.blast.hk/threads/220111/
Установка: скачать файл
BaseModelRender.dll из вложений и перенести его в папку moonloader\lib.Функционал:
Описание | Функция |
| Добавляет модель на игрока по его хендлу | baseModelRender.addModel(Ptr modelPtr, Handle pedHandle, int boneId, int slot) |
| Указывает масштаб модели | baseModelRender.setModelScale(Handle pedHandle, int slot, float x, float y, float z) |
| Указывает смещение от кости к модели | baseModelRender.setModelOffset(Handle pedHandle, int slot, float x, float y, float z) |
| Указывает поворот модели | baseModelRender.setModelRotate(Handle pedHandle, int slot, float x, float y, float z) |
| Указывает цвет модели | baseModelRender.setModelColor(Handle pedHandle, int slot, int r, int g, int b, int a) |
| Удаляет модель по слоту | baseModelRender.removeModel(Handle pedHandle, int slot) |
| Удаляет модели со всех слотов | baseModelRender.removeAllModels(Handle pedHandle) |
| Возвращает указатель на CBaseModelInfo игровой модели по её ID | local modelPtr = baseModelRender.getGameBaseModel(int modelIndex) |
| Подгружает кастомную модель через .txd и .dff файлы и возвращает их кастомный ID. | local customModelId = baseModelRender.loadSimpleModel(string dffPath, string txdPath) |
| Возвращает указатель на CBaseModelInfo для кастомной модели. | local customModelPtr = baseModelRender.getSimpleBaseModel(int customModelIndex) |
* Слотов 8, начиная с 0. ID костей можете взять здесь. https://sampwiki.blast.hk/wiki/Bone_IDs_RU
Пример кода с рендером игровых моделей
Пример кода с подгрузкой и рендером кастомных моделей на примере аксесуаров аризоны:
Lua:
local baseModelRender = require("BaseModelRender")
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand("guitar", function()
-- Добавляем гитару на спину
while not hasModelLoaded(19318) do
requestModel(19318)
loadAllModelsNow()
end
local pGuitarModel = baseModelRender.getGameBaseModel(19318)
if (pGuitarModel) then
baseModelRender.addModel(pGuitarModel, playerPed, 1, 0);
baseModelRender.setModelScale(playerPed, 0, 0.8, 1.0, 0.8);
baseModelRender.setModelRotate(playerPed, 0, 180.0, 50.0, 180.0);
baseModelRender.setModelOffset(playerPed, 0, 0.1, -0.1, 0.0)
baseModelRender.setModelColor(playerPed, 0, 255, 0, 0, 255)
end
end)
sampRegisterChatCommand("mask", function()
-- Добавляем маску на пиздак
while not hasModelLoaded(11704) do
requestModel(11704)
loadAllModelsNow()
end
local pMaskModel = baseModelRender.getGameBaseModel(11704)
if (pMaskModel) then
baseModelRender.addModel(pMaskModel, playerPed, 2, 1);
baseModelRender.setModelScale(playerPed, 1, 0.38, 0.5, 0.38);
baseModelRender.setModelRotate(playerPed, 1, -90.0, -90.0, -90.0);
baseModelRender.setModelOffset(playerPed, 1, 0.08, 0.1, 0.0)
baseModelRender.setModelColor(playerPed, 1, 255, 255, 255, 255)
end
end)
sampRegisterChatCommand("cleanModels", function()
baseModelRender.removeAllModels(playerPed)
end)
wait(-1)
end
Пример кода с подгрузкой и рендером кастомных моделей на примере аксесуаров аризоны:
Lua:
local baseModelRender = require("BaseModelRender")
function main()
while not isSampAvailable() do wait(0) end
sampRegisterChatCommand("set", function()
local nBackpackId = baseModelRender.loadSimpleModel("models\\obj52_narutobp.dff", "models\\obj52_1.txd");
local pBackpackModel = baseModelRender.getSimpleBaseModel(nBackpackId)
if (pBackpackModel) then
baseModelRender.addModel(pBackpackModel, playerPed, 1, 0);
baseModelRender.setModelScale(playerPed, 0, 0.8, 1.0, 0.8);
baseModelRender.setModelRotate(playerPed, 0, 0, 0, 0);
baseModelRender.setModelOffset(playerPed, 0, 0.2, -0.15, 0.0)
end
local nHatId = baseModelRender.loadSimpleModel("models\\obj84_hat2.dff", "models\\obj84.txd");
local pHatModel = baseModelRender.getSimpleBaseModel(nHatId)
if (pHatModel) then
baseModelRender.addModel(pHatModel, playerPed, 2, 1);
baseModelRender.setModelScale(playerPed, 1, 0.9, 0.9, 0.9);
baseModelRender.setModelOffset(playerPed, 1, 0.15, -0.1, 0.0)
end
local nLampId = baseModelRender.loadSimpleModel("models\\obj84_lamp.dff", "models\\obj84.txd");
local pLampModel = baseModelRender.getSimpleBaseModel(nLampId)
if (pLampModel) then
baseModelRender.addModel(pLampModel, playerPed, 6, 2);
baseModelRender.setModelScale(playerPed, 2, 0.9, 0.9, 0.9);
baseModelRender.setModelRotate(playerPed, 2, -90, 0, 180)
baseModelRender.setModelOffset(playerPed, 2, 0.2, 0.05, 0.0)
end
end)
sampRegisterChatCommand("cleanModels", function()
baseModelRender.removeAllModels(playerPed)
end)
wait(-1)
end
Автор: @ARMOR
PS: Вообще это будет больше полезно разным проектам со своими лаунчерами, а не для луа, но да и похуй, так же будет полезно для использования с этой библиотекой от @SR_team: https://www.blast.hk/threads/220111/
Вложения
Последнее редактирование модератором:
