--@name Mesh loader example --@author Opti1337 --@shared -- @include /koptilnya/mesh_loader/builder.txt require("/koptilnya/mesh_loader/builder.txt") local LINK = "https://www.dropbox.com/s/k4rte84qv0s3k1d/vaz_2101_wheel.obj?dl=1" local SCALE = Vector(1) local builder = {} if SERVER then -- Создаем экземпляр MeshBuilder на сервере builder = MeshBuilder:new(LINK) builder.onObjectLoaded = function(builder, objData) --[[ Вызывается, когда .obj загружен на сервере objData {string} - Внутренности .obj ]] end builder.onObjectParsed = function(builder, objectsName) --[[ Вызывается, когда .obj разобран на сервере objectsNames {table} - Таблица с названиями объектов в .obj ]] end builder.onPlayerParsedObj = function(builder, ply) --[[ Вызывается, когда игрок разобрал .obj ply {player} - Игрок, который разобрал .obj ]] end --[[ Настраиваем конкретный меш (название_объекта, позиция, угол, размер, цвет, материал, парент, относительно_чего_позиционировать) ]] builder:build("tire", Vector(0), Angle(0), SCALE, Color(255, 255, 255), "sprops/textures/sprops_rubber", chip(), chip()) builder:build("disk", Vector(0), Angle(0), SCALE, Color(255, 255, 255), "sprops/textures/sprops_rubber", chip(), chip()) --[[ Получаем текущий результат и отправляем его по возможности клиентам. Обычно вызывается после всех вызовов build ]] builder:getResult() else -- CLIENT function init() -- Создаем экземпляр MeshBuilder на клиенте builder = MeshBuilder:new(LINK) builder.onObjLoaded = function(builder, objData) --[[ Вызывается, когда .obj загружен на клиенте objData {string} - Внутренности .obj ]] end builder.onObjParsed = function(builder, meshData, usedTriangles) --[[ Вызывается, когда .obj разобран на клиенте meshData {table} - Таблица с мешами usedTriangles {int} - Сколько использовано треугольников ]] end builder.onHologramsReceived = function(builder, objects) --[[ Вызывается, когда были получен список голограмм от сервера objects {table} - Таблица объектов name {string} - Имя объекта holo {entity} - Голограмма ]] end builder.onMeshesApplied = function(builder) --[[ Вызывается, когда меши были применены к голограммам ]] end end if hasPermission("http.get") and hasPermission("mesh") and hasPermission("entities.setRenderProperty", chip()) then init() else -- Настраиваем нужные права, если их нет setupPermissionRequest({"http.get", "mesh", "entities.setRenderProperty"}, "", true) -- Хук, который срабатывает при изменении прав hook.add("permissionrequest", "_permissionrequest", function() if permissionRequestSatisfied() then init() end end) end end