Jump to content

Вопросы и ответы по MTA.


Recommended Posts

  FranklinRoosevelt said:
Какими функциями можно задавать движение камеры? Если такие есть.

Если ты имеешь ввиду под движением камеры плавное перемещение, то тебе понадобятся эти функции:

setCameraMatrix 
interpolateBetween 

И это событие: onClientPreRender

Link to comment
  DakiLLa said:
Если лениво самому писать манипулятор камерой, можно подсмотреть вот тут:

[text]

[/text]

Жуть какая-то на объектах. Вот версия без объектов, с параметрами крена и поля обзора.

local smParams, smTime, smTimePassed 
  
local function updateMoveCamera ( timeSlice ) 
  smTimePassed = smTimePassed + timeSlice 
  if ( smTimePassed >= smTime ) then 
    smTimePassed = smTime 
    removeEventHandler ( "onClientPreRender", root, updateMoveCamera ) 
  end 
  local a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p = unpack ( smParams ) 
  local cx, cy, cz = interpolateBetween ( a, b, c, i, j, k, smTimePassed/smTime, "InOutQuad" ) 
  local lx, ly, lz = interpolateBetween ( d, e, f, l, m, n, smTimePassed/smTime, "InOutQuad" ) 
  local roll, fov = interpolateBetween ( g, h, 0, o, p, 1, smTimePassed/smTime, "InOutQuad" ) 
  setCameraMatrix ( cx, cy, cz, lx, ly, lz, roll, fov ) 
  --outputConsole ( string.format ( "timePassed: %d, cam: %.4f %.4f %.4f %.4f %.4f %.4f %.4f %.4f", smTimePassed, getCameraMatrix ( ) ) ) 
end 
  
function moveCamera ( a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, time ) 
  smParams, smTime, smTimePassed = { a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p }, time, 0 
  setCameraMatrix ( a, b, c, d, e, f, g, h ) 
  addEventHandler ( "onClientPreRender", root, updateMoveCamera, false ) 
end 
  
function stopCamera ( ) 
  removeEventHandler ( "onClientPreRender", root, updateMoveCamera ) 
end 

Link to comment
  • 5 weeks later...
  Darge said:
Вот меня мучает один вопрос - где скачать чистую сбору сервера 1.4.1 для Windows? Пока что сложно с SAMP на MTA переходить :с

на офф сайте MTA: https://mtasa.com, там кнопка DOWNLOAD, тяжело не заметить. Клиент и сервер идут в одном инсталляторе (актуально для Windows), если нужен только сервер - в установщике выбираете только сервер (снимаете галочки с клиента и т.д.)

Link to comment

Приветствую, у меня вопрос с шейдерами назрел.

Т.К. с ними вообще не знаком, использовал шейдеры с вики.

Проблема такова, при покраске опр. текстур(на авто) блик не сохраняется, как это исправить?

Link to comment

Нашел одну интересную штуку, в примере OnClientElementStreamIn

addEventHandler( "onClientElementStreamIn", getRootElement( ), 
    function ( ) 
        if getElementType( source ) == "marker" then -- это я убрал 
            local myPosTab = { getElementPosition( getLocalPlayer( ) ) }; 
            local markerPosTab = { getElementPosition( source ) }; 
            local distance = getDistanceBetweenPoints3D( unpack( myPosTab ), unpack( markerPosTab ) ); 
            outputChatBox( "A marker has just streamed in. Distance to the marker: " .. tostring( distance ) .."." ); 
        end 
    end 
); 

Хотел поэкспериментировать, но выводило мне false вместо дистанции, смотрю вроде все нормально, когда сделал так все заработало:

addEventHandler( "onClientElementStreamIn", getRootElement( ), 
    function ( ) 
        local x1, y1, z1 = getElementPosition( source )  
        local x2, y2, z2 = getElementPosition( getLocalPlayer( ) )  
        outputChatBox( getElementType( source ).." in stream. Distance: " .. tostring( getDistanceBetweenPoints3D(  x1, y1, z1, x2, y2, z2) ) .."." ) 
    end 
) 
  

В чем может быть проблема?

Ещё один вопрос, суть задания: один игрок что-то меняет на серверной стороне, и должен вызваться триггер на клиенты тех кто видит(стрим) этого игрока.

Я сделал это так, но возможно есть какой-то способ по эффективней.

-- SERVER 
function anyChange( player, type) 
    triggerClientEvent("update", player, type) 
end 
  

-- CLIENT  
addEvent("update", true) 
addEventHandler("update", root,  
    function ( type ) 
        if isElementStreamedIn (source) then 
            -- какое-то действие 
        end 
    end 
) 

Link to comment

В папке с сервером нашел прогу samp migration wizard, примерно понял ее назначение. Вопрос: Она хавает только моды от 0.2.2 версии, или можно скормить от последней? Как запустить полученный сконвертированынй мод?

Link to comment
  • Other Languages Moderators
  dannyelfman said:
В папке с сервером нашел прогу samp migration wizard, примерно понял ее назначение. Вопрос: Она хавает только моды от 0.2.2 версии, или можно скормить от последней? Как запустить полученный сконвертированынй мод?

Смысла в этом вообще нет.

Link to comment

при построении проекта возникают ошибки. Установлен VS 2008 (SP 1) и DirectX SDK. Библиотеки и инклуды соответственно подключены (скрины ниже). При запуске Multi Theft Auto.exe ничего не происходит, а в ДЗ несколько секунд висит процесс WerFault.exe, потом сворачивается. Причём одинаково, что при "Nightly", что при "Release" построениях. В окне выходных данных ошибки в файлах, изменения в которые не вносились.

  Reveal hidden contents
  Reveal hidden contents
Link to comment
  • 3 weeks later...

Всем доброе время суток, у меня возник вопрос касательно камеры относительно объектов, когда задаем положение камеры с помощью setCametaMatrix можем иметь вот такие коллизии:

  Reveal hidden contents

Есть ли какая-то альтернатива этому? Может каким-то хитрым способом обойти это? Очень наболело уже.

Сам знаю что в некоторых случаях можно создавать объект за спиной игрока (изменять его альфу на 0), который будет "держать" камеру, этим самым не давая ей "нырять" в текстуру, но это не всегда катит.

Вот какой-то скрин с инета демонстрации клео системы вида от первого лица, здесь все отлично.

  Reveal hidden contents
Link to comment
  FranklinRoosevelt said:
Всем доброе время суток, у меня возник вопрос касательно камеры относительно объектов, когда задаем положение камеры с помощью setCametaMatrix можем иметь вот такие коллизии:
  Reveal hidden contents

Есть ли какая-то альтернатива этому? Может каким-то хитрым способом обойти это? Очень наболело уже.

Сам знаю что в некоторых случаях можно создавать объект за спиной игрока (изменять его альфу на 0), который будет "держать" камеру, этим самым не давая ей "нырять" в текстуру, но это не всегда катит.

Вот какой-то скрин с инета демонстрации клео системы вида от первого лица, здесь все отлично.

  Reveal hidden contents

SetNearClipDistance

Link to comment

Ещё вопрос, как можно изменить точку куда целится игрок, если положение камеры задаются с помощью setCameraMatrix?

Пробовал через setPedAimTarget, но там для localPlayer нельзя, а мне для него и надо.

  Quote
Only peds and remote players will work; this function has no effect on the local player.
Link to comment
  FranklinRoosevelt said:
Ещё вопрос, как можно изменить точку куда целится игрок, если положение камеры задаются с помощью setCameraMatrix?

Пробовал через setPedAimTarget, но там для localPlayer нельзя, а мне для него и надо.

  Quote
Only peds and remote players will work; this function has no effect on the local player.

Надо было попробовать функцию поиска на этом форуме:

viewtopic.php?p=775523#p775523

Link to comment
  Kernell said:
Надо было попробовать функцию поиска на этом форуме:

viewtopic.php?p=775523#p775523

:lol: Спасибо ещё раз, Кернелл. Поиск я юзал, но по англ. т.к. думал что вряд ли на русскоязычной ветке что-то есть.

Ещё всю вики пересмотрел, как я мог не найти эту ф-ию?

Link to comment

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...