
Jonathan.P
Members-
Posts
110 -
Joined
-
Last visited
Everything posted by Jonathan.P
-
Спасибо! 1)Можно ли скриптом удалить все объекты определенной модели с сервера, а на их место поставить другой объект определенной модели(не замененной, а стандартной)? 2)Почему эвенты "onVehicleExit", "onPlayerVehicleExit" не срабатывают, когда игрок помирает в машине? Как с этим бороться? Что интересно, на эвенте "onPlayerWasted" игрок уже как бы не в машине, т.е. isPedInVehicle даёт false.
-
Я знал что проблема в знаках углах\позиций, стал перебирать, пробовать разные варианты. Знак больше\меньше оставил как и был сначала. А вот строчку local rotation = ( 360 - math.deg ( math.atan2 ( ( x - px ), ( y - py ) ) ) ) % 360 заменил на local rotation = ( 360 - math.deg ( math.atan2 ( ( px - x ), ( py - y ) ) ) ) % 360 И всё работает как надо! В итоге готовая функция: function isPedRotationToPoint( el, px, py, pz, accuracy ) -- назовите функцию сами if type( el ) == 'userdata' and isElement( el ) and type( px ) == 'number' and type( py ) == 'number' and type( pz ) == 'number' then local x, y, z = getElementPosition(el) local rotation = ( 360 - math.deg ( math.atan2 ( ( px - x ), ( py - y ) ) ) ) % 360 local _, _, currentRotation = getElementRotation( el ) return math.abs( currentRotation - rotation ) < accuracy and true or false end return false end Спасибо за помощь, TheNormalnij.
-
Если так, но функция возвращает true когда игрок наоборот отвёрнут от точки. Я поменял знак. Работает но не так как надо. Дело в том, что значению true соответствует огромный(!) угол, в то время когда false - совсем малый угол, т.е. когда игрок смотрит в сторону точно противоположную стороне точке(а должно быть наоборот, значению true - меньший угол(переменная accuracy)). Но мы приблизились к цели.
-
Да видел я такую функцию. Даже специально написал: Да, я знаю, придётся танцевать с бубнами.
-
Господа, нужна функция для проверки повёрнут ли игрок лицом к элементу(с погрешностью пусть 30 градусов). Я имею ввиду не камеру, не голову, а сам скин. Дано: 1)Позиция игрока 2)Поворот игрока 3)Позиция элемента Я думаю кто-то да затрагивал этот вопрос. Вроде бы простая задачка из школьного курса информатики. В Пэинте я нарисовал наглядно, как это должно выглядеть. Последнюю систему я записал логическим выражением, но оно не работает. Возможно я где-то ошибся, а может уже есть готовая функция. Картинка Ваши мысли, господа? P.S.: При вычислении тангенса я НЕ забыл перевести всё в радианы. Также дельта альфа пусть равно 30 градусам. Под ElementRotation'ом я подразумеваю поворот относительно оси Z(я знаю, что функция возвращает три значения(x,y,z)).
-
Спасибо, Jadore. Я помню про этот параметр и описание функции на вики, но всё же слегка напугался.
-
Спасибо за помощь и разъяснения! Только последнее: А как же elementData? Принцип тот же? Допустим, создан элемент на сервере, присвоена ему дата. Через некоторое время на одном из клиентов я меняю эту дату, тогда на сервере и на других клиентах она останется неизменна(первоначальная)?
-
Спасибо, а если я объявляю глобальную переменную (без local), то она будет существовать и в других скриптах, получается, тогда в каких: во всех ресурсах, или только в данном?
-
Два простых вопроса: 1)На странице вики по функции crateVehicle https://wiki.multitheftauto.com/wiki/CreateVehicle, есть заметка: Т.е. когда я создаю на клиенте например просто элемент (createElement) или маркер (createMarker), то он существует только на этом клиенте и виден только ему? и на сервере его не найти? 2)чем отличаются переменные local count = 0 и count2 = 0 если я их задаю в корне скрипта?
-
Что я понял: 1) Во втором ресурсе пикап НЕ берется, только если я его создам на клиентской стороне. Выходит что карта на этом ресурсе работает как серверная сторона, в то время как в первом ресурсе карта чудным образом работает как клиентская сторона(пикап НЕ берется) 2) Решить проблему, не удаляя пикапы из карты второго ресурса можно только отменив событие onPickupHit на серверной стороне. Пикап - кустомный(!). Сколько неясностей то в MTA. До злости.
-
Как? createPickup(-178, -34, 4, 3, 1239) Всё равно берется. В обоих ресурсах
-
Ты кажется не читал мой пост. Мне и надо, чтоб не брался, так и должно быть. А почему в другом то ресурсе берется? Евент не срабатывает при взятии, издаётся звук взятия пикапа как в сингле. Пикап отображается нормально - информационной иконкой. Самое интересное, не помогает даже код: setPickupType(pickup, 3, 1239) setElementDimension(pickup, 0) setElementInterior(pickup, 0) который выполняется при запуске ресурса на стороне сервера.
-
Что за дела?? Это чертовщина какая-то... Прописал в карте одного из ресурсов пикапы: <pickup type="custom" model="1239" posX="0" posY="0" posZ="5" /> Всё, нормально, при заходе на пикап, пикап не берётся, срабатывает евент onClientPickupHit. Всё ОК. Создал пикапы в карте другого ресурса. Код тот же. Так эти пикапы чудным образом подбираются, а onClientPickupHit не срабатывает! Разница лишь в том что в в первом случае я присваиваю уже в скрипте пикапам интерьеры и 2000-е дименшоны. И всё! Почему так вдруг, в одном ресурсе работает нормально, в другом - совсем по другому? Как исправить? Мне до сих пор кажется, что дело в моей невнимательности, но я уже что только не пробывал. P.S.: в карте организованы небольшие ветки, также небольшие EDF.
-
Синхронизируется ли функция setVehicleAdjustableProperty с сервером?(нет возможности проверить) И вообще, на будущее: если функция клиент онли, то обязательно ли она не синхронизируется?
-
Или тебя смущает, что она возвращает true на локального игрока? (тогда какой смысл понимать панику по этому поводу?) Т.е. на игроке эта функция не работает? Т.е. в МТА камеру никак не повернуть? (setCameraMatrix только фиксирует)
-
Можно код увидеть? Держи addCommandHandler("rot", function() local rot1, rot2, rot = getElementRotation(getLocalPlayer()) if setPedCameraRotation(getLocalPlayer(), rot - 180) then outputChatBox("true") else outputChatBox("false") end end ) Выводит "true"
-
Мне кто-нибудь объяснит, почему не работает setPedCameraRotation?
-
Спасибо, буду ставить эксперимент. Потом может напишу о результате. Спасибо, но не стоит меня так не дооценивать
-
Если я приаттачу колшейп к игроку, то будет ли изменяться в соответствии дименшен и интерьер колшейпа при изменении дименшена и интерьера игрока?
-
Сделал так: setCameraMatrix(x + 5 * math.sin(rot), y + 5 * math.cos(rot), z + 2, x, y, z) Всё как надо, но вот камера замораживается, а нужно чтоб замораживалась только в начале, пока игрок не двигается. Как только двинулся, камера плавно встает на дефолтное место "за спиной". Это возможно?
-
Как поставить камеру точно перед игроком и направить на него? Понятно, что setCameraMatrix(X, Y, Z, lookAtX, lookAtY, lookAtZ) C lookAt ясно: ставим координаты игрока, а вот позиция самой камеры? Я так понимаю тут надо работать с окружностью или сферой и радиус-вектором. Есть мысли?
-
if getPedSimplestTask(_local) == "TASK_SIMPLE_PLAYER_ON_FOOT" отличная замена isPedOnGround, даже в инте работает. Спасибо! То, что надо.
-
Что - то я сразу не сообразил, хех, спасибо большое, всегда помогаете
-
По поводу первого, спасибо, а вот насчет второго поподробней. У меня в инте стоит маркер выхода из него. При заходе на маркер стоит проверка isPedOnGround(чтобы игрок не прыгал на маркер) - во всех стандартных интах работает, а в моем - нет. Как тут поможет isLineOfSightClear?
-
1)Ребята, а не подскажите как присвоить объекту универсальный dimension, чтобы он находился сразу во всех, не дублируя сам объект? Создал свой интерьер, который должен будет использоваться в 17 дименшонах, а тут проблема. 2) На самодельном инте не работает проверка isPedOnGround. Как бороться? Может какие объекты помогут?