Jonathan.P
Members-
Posts
110 -
Joined
-
Last visited
Details
-
Location
Russia, Samara
Recent Profile Visitors
The recent visitors block is disabled and is not being shown to other users.
Jonathan.P's Achievements
Sucka (13/54)
0
Reputation
-
Если есть готовый скрипт или библиотека, то я бы посмотрел. Могу немного подсказать по поводу скриптового решения. Перемещение в пространстве обьекта мышью сразу по всем осям врядли возможно, а вот по каждой оси - да. Берешь ось обьекта, берешь на ней две любые точки(например 0 - центр обьекта и 1 - на единицу дальше от обьекта по оси), вычисляешь мировые значения через матрицу(getPositionFromOffsets(matrix, 0, 1, 0)), проецируешь эти значения на экран(getScreenFromWorldPosition(x, y, z)), считаешь угол получившегося отрезка на экране через арктангенс. Далее проверяем, к чему отрезок ближе: к вертикальной прямой или к горизонтальной(это один из вариантов логики драг н дроп), в зависимости от этого вычисляем точку на экране правее/левее или выше/ниже от курсора(просто прибавляем к одной из координат курсора, например 200) - получается второй отрезок на экране, с началом в точке курсора(он будет либо горизонтальным, либо вертикальным). Далее тебе понадобится функция для вычисления точки пересечения прямых(!причем в 3-х координатах!)(я её нашел в интернете в голом математическом виде и тупо перевёл в код). Вычисляем точку пересечения на экране прямой оси и прямой курсора(третью, Z - координату я поставил просто 0 - это, думаю, ясно). Вычисляем мировые точки полученной точки на экране(getWorldFromScreenPosition(cx, cy, 0) и getWorldFromScreenPosition(cx, cy, 1) - 0 значит точка будет в камере или почти в камере - этого я сам точно не знаю, лул; 1 - значит точка будет отдалена от камеры на 1, т.е. третий параметр это глубина). Получился отрезок в пространстве который выходит из камеры(и углом как у камеры) и длиной в 1. И наконец финал: вычисляем точку пересечения прямой оси и полученой прямой камеры(тут нам и понадобится третья координата для той функции) - получаем новую позицию обьекта. Возможно алгоритм можно и упростить, но я не знаю как(если кто-то обладает инфой - напишите). Надеюсь у тебя хватит сил и терпения. Удачи!
-
1. Ты не указал аргумент "игрок" функции внутри таймера, плюс не указал аргумент в функции "setTimer" 2. setPedAnimation(player, false) вроде как криво работает иногда, я не парюсь и юзаю быструю анимку везде 3. имей ввиду, что если игрок выйдет за эти 2 секунды, то при вызове функции в таймере в дебаге будет варнинг, т.к. игрока уже не будет и анимацию применять будет не к кому 4. вместо функции getRootElement() можно юзать глобальную переменную "root" addEventHandler( "onPlayerChat", root, function () setPedAnimation( source, "ped", "IDLE_chat", 1, false, true) setTimer( function(player) setPedAnimation(player, "BSKTBALL", "BBALL_idle_O", 1, false, false, true, false) end, 2000, 1, source) end ) Вопрос к знатокам: Допустим есть некоторая кустомная характеристика элемента (игрока или машины). Например, булевое значение "находится ли игрок в AFK" для игрока. Конечно, эту характеристику нужно синхронизировать для всех клиентов и сервера тоже(просто допустим, что того требует мод). Тут два способа построения системы: 1. Юзаем просто элемент дату: setElementData(player, "AFK", true) недостатки: - если будет много характеристик, элемент дата будет иметь огромное количество ключей, синхронизация которых будет кушать ресурсы, при этом не всегда важна быстрая синхронизация характеристик(например тот же афк) плюсы: - простота 2. Создаём отдельный ресурс, создаём таблицы с характеристиками на клиенте и сервере отдельно, пишем для них синхронизацию латентными триггерами(тем самым экономим ресурсы), экспортируем из него функции: afkPlayers = { -- [player1] = true, -- [player2] = false, } setPlayerAFK(player, true) --shared (client and server) isPlayerAFK(player) --shared плюсы: - более верно архитектурно (на мой взгляд) - экономия ресурсов (сомнительно, но на мой взгляд опять же) минусы: - больше кода Вопрос: что лучше и в каких случаях? Вопрос не касается самой системы AFK, а лишь архитектурной реализации системы "кустомных характеристик" на подобии встроенных "setElementModel", "setPedSkin".
-
@Fabervox, просто машина заезжает в гараж и тпхается в инт. С дименшонами тоже самое.
-
Привет. Нужно прикрепить обьект к авто на клиенте. Авто при этом серверное. Проблема в том, что при смене интерьера или измерения машины вместе с игроком, обьект остается в старом интерьере и не виден в новом, а нужно чтобы и обьект менял интерьер вместе с авто. Функция setElementParent, как я понял, не работает для элементов разных сторон(клиент и сервер). Возможно ли решение на клиенте?
-
Привет. Нету возможности проверить, поэтому задаю глупый вопрос здесь. Если я использую triggerEvent на клиенте, то он будет триггериться на всех клиентов(если я в сурсе пропишу рут) или только на текущего(на того, откуда вызывается триггер)?
-
Дайте пару советов, как сделать кустомный GUI. И если есть, порекомендуйте пожалуйста ресурсы на эту тему.
-
Есть у меня один постоянный шейдер, который я применяю к элементам при определенных обстоятельствах и при входе элемента в стрим. Если элемент выходит из стрима, то обязательно ли отменять шейдер функцией engineRemoveShaderFromWorldTexture?
-
Я так и делаю. В ресурсе создаю utils.lua и там прописываю экспортированные функции(но только те, которые нужны в данном ресе). Не совсем понял тебя. Ты предлагаешь отказаться от импорта функций и прописывать их в каждом ресе, где это нужно? Ну например есть у меня функция getPositionFromOffsets(m, offX, offY, offZ, offRX, offRY, offRZ) Которую я юзаю ну очень часто, во многих ресурсах. Ты мне предлагаешь прописывать её в каждом ресе? А если я решу изменить эту функцию? Мне придётся её изменять везде. Зачем дублировать код? Вообще вопрос был в следующем: правильно ли я импортирую функции? Просто мне не хочется постоянно писать exports.utils:getPositionFromOffsets(m, offX, offY, offZ, offRX, offRY, offRZ) Тем более, я не всегда знаю в каком ресе лежит эта функция. Хочется просто прописать функцию и чтоб она работала. Поэтому я юзаю вот такие блоки(которые я описал в первом посте).
-
Привет. У меня есть некоторый набор функций, который я часто юзаю почти во всех ресурсах. Как правильно организовать доступ к этим функциям из ресурсов? Пока что я делаю так: 1) Создаю ресурс с нужными мне функциями и прописываю их экспорт в meta.xml 2) В ресурсах, где мне нужно вызывать эти функции я создаю отдельный скрипт и прописываю в нём вызов этих функций таким образом: function getVehicleSpecialName(data) local vehUtilsResource = getResourceFromName("vehicleutils") if not(vehUtilsResource and getResourceState(vehUtilsResource) == "running") then error('cant get data from "vehicleutils" resource', 2) end return exports.vehicleutils:getVehicleSpecialName(data) end function getPositionFromOffsets(m, offX, offY, offZ, offRX, offRY, offRZ) local utilsResource = getResourceFromName("utils") if not(utilsResource and getResourceState(utilsResource) == "running") then error('cant get data from "utils" resource', 2) end return exports.utils:getPositionFromOffsets(m, offX, offY, offZ, offRX, offRY, offRZ) end Я думаю, что это не совсем правильно. Возможно нужно создавать модули? Может есть какой тутор?
-
Довольно критично. Нужно сделать подобие света и прикрепить к элементу. Ресурс - то, что нужно, но attach - функцию придётся самому писать
-
Почему маркер типа "corona" иногда как бы не создаётся? Сам элемент есть, но маркера не видно. Смена цвета и альфы не помогает. Лимит не превышаю. Маркер создаю на клиенте.
-
Стандартная база SQL (executeSQLQuery). Данные типа numeric, точнее double(несколько хэндлинг-настроек). Хотелось бы понять как повлияет на базу выборочные запросы нескольких столбцов, или всех сразу. Как я понял существенно скорость работы с базой не изменится?
-
Вопрос о производительности. В дефолтной базе есть таблица с примерно 4000 записей. Сильно ли я сэкономлю ресурсы сервера если из 36 колонок 9 я объединю в одну с помощью JSON'а?
-
Хочу реализовать интерфейс перемещения обьекта мышкой. Возможно уже есть готовый ресурс, где можно глянуть реализацию?
-
Привет. Есть некоторый отрезок(ось) в пространстве. Даны его начало, конец и повороты(на самом деле это ось обьекта, и есть его матрица). Нужно определить длину расстояния между центром отрезка и положением курсора на этом отрезке. В общем нужно спроецировать курсор на эту ось. Как решить?