Jump to content

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


Recommended Posts

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

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

setCameraMatrix 
interpolateBetween 

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

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

[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...
Вот меня мучает один вопрос - где скачать чистую сбору сервера 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
В папке с сервером нашел прогу samp migration wizard, примерно понял ее назначение. Вопрос: Она хавает только моды от 0.2.2 версии, или можно скормить от последней? Как запустить полученный сконвертированынй мод?

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

Link to comment

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

Компиляция...

StdInc.cpp

Compiling precompiled header.

c:\svn\vendor\tinygettext\plural_forms.hpp(53) : warning C4800: const tinygettext::PluralFunc: принудительно задано логическое значение 'true' или 'false' (предупреждение о производительности)

c:\svn\vendor\tinygettext\language.hpp(58) : warning C4800: tinygettext::LanguageSpec *const : принудительно задано логическое значение 'true' или 'false' (предупреждение о производительности)

c:\svn\mta10\sdk\gui\CGUI.h(148) : error C2065: nullptr: необъявленный идентификатор

c:\svn\mta10\sdk\gui\CGUI.h(149) : error C2065: nullptr: необъявленный идентификатор

c:\svn\mta10\sdk\core\CWebCoreInterface.h(53) : error C2039: function: не является членом "std"

c:\svn\mta10\sdk\core\CWebCoreInterface.h(53) : error C2061: синтаксическая ошибка: идентификатор "function"

c:\svn\mta10\sdk\core\CWebCoreInterface.h(53) : error C2059: синтаксическая ошибка: )

c:\svn\mta10\sdk\core\CWebCoreInterface.h(53) : fatal error C1903: не удается восстановить после предыдущих ошибок; остановка компиляции

6ad098b87fcc.png

7880de6207bd.png

Link to comment
  • 3 weeks later...

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

b5bb9cf6ec32.png

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

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

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

f54e599fb6b2.jpg

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

b5bb9cf6ec32.png

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

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

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

f54e599fb6b2.jpg

SetNearClipDistance

Link to comment

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

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

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

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

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

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

viewtopic.php?p=775523#p775523

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

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...