StUNt71 Posted February 2, 2012 Share Posted February 2, 2012 Есть функция, чтобы над человеком\машиной мигала\плавала стрелочка? Link to comment
LoveFist Posted February 2, 2012 Share Posted February 2, 2012 attachElements Что значит плавала? Оо Link to comment
MX_Master Posted February 2, 2012 Share Posted February 2, 2012 attachElementsЧто значит плавала? Оо да в одиночке есть такое, объект в виде маркера над элементом двигается вверх/вниз. Надо это исправить хДКто какую музыку слушает? =) штыдно сказать, качнул ща танцевальные хиты 90-х, слушаю.. есть знакомые всем хиты.. Link to comment
Kernell Posted February 2, 2012 Share Posted February 2, 2012 Чёто я упустил один момент в своей мта-жизни.. Есть событие onClientPreRender.. есть время между кадрами, которое даёт событие.. И как с помощью этого времени сделать плавный переход цвета, например от красного к белому? Т.е. чтобы независимо от FPS, чтобы у всех одинаково (например за 5 сек). штыдно сказать, качнул ща танцевальные хиты 90-х, слушаю.. есть знакомые всем хиты.. Это сейчас.. А вообще какой стиль?) Link to comment
MX_Master Posted February 2, 2012 Share Posted February 2, 2012 стиля нет, но не металл я, кстати, делал такой плавный переход цвета за указанное время. Как бы то ни было, нужно знать текущий фпс, ну хотя бы за последнюю секунду. цвет должен быть представлен в виде RGB или RGBA отдельными числами 5 секунд * текущийФПС - это столько шагов нужно для изменения цвета разницу исходного и желаемого цвета делим на вышеуказанное - это размеры шагов и в каждом кадре прибавляешь к цвету, отнимая от кол-ва шагов, следя, чтобы за рамки 0..255 значения не выбились Link to comment
lil Toady Posted February 2, 2012 Author Share Posted February 2, 2012 Нельзя полагаться на fps, и onClientPreRender вызывается с той же частотой что и onClientRender, только перед тем как начинается прорисовываться кадр. Он нужен для плавных изменений в мире, как например смена позиции камеры, чтобы изменения не отставали на кадр. Тут надо отмерять по времени с getTickCount(). function colorLerp ( from, to, t ) -- переход, 0-1 local diff = to - from if ( t < 0 ) then t = 0 elseif ( t > 1 ) then t = 1 end return from + diff * t end local e = getTickCount () + 5000 -- закончим через 5 сек addEventHandler ( "onClientPreRender", root, function () local t = 1 + ( e - getTickCount () ) / 5000 -- сколько прошло времени от начала до конца, относительно (от 0 до 1) local color = colorLerp ( 0xFF0000, 0x0000FF, t ) -- от красного к синему end ) Что-нить в таком духе Link to comment
NioN Posted February 3, 2012 Share Posted February 3, 2012 (edited) epic file :\ Edited February 8, 2012 by Guest Link to comment
NioN Posted February 3, 2012 Share Posted February 3, 2012 а что нигде кроме русскоязычного раздела,флудильки нет х) Link to comment
StUNt71 Posted February 3, 2012 Share Posted February 3, 2012 О.о вот это да пЫ.сЫ.-а ты говоришь я здрт ,вот кто выше писал реал задроты )) Ты? Ну, ясно. Склеивай 2 сообщения в 1. да в одиночке есть такое, объект в виде маркера над элементом двигается вверх/вниз. Верно. attachElements Ну это понятно, а стандартная функция есть? Как в соседнем мультиплеере. И подскажите ID объекта стрелки. Link to comment
Kernell Posted February 3, 2012 Share Posted February 3, 2012 А чё, больше никто музыку не слушает, все деловые? =D О.о вот это да пЫ.сЫ.-а ты говоришь я здрт ,вот кто выше писал реал задроты )) Прекрати людей оскор:Oть. С чего ты взяла что они задроты? P.S. Ты хоть пиши кому отвечаешь. Link to comment
StUNt71 Posted February 3, 2012 Share Posted February 3, 2012 С чего ты взяла что они задроты? Потому что они умнее и образованнее его. И ему обидно, что он не знает того, что знают они. Link to comment
StUNt71 Posted February 3, 2012 Share Posted February 3, 2012 Не интересовался кто это, он\она. Link to comment
Kernell Posted February 3, 2012 Share Posted February 3, 2012 Судя по моим постам, можно понять кто это. Link to comment
NioN Posted February 3, 2012 Share Posted February 3, 2012 Потому что они умнее и образованнее его. И ему обидно, что он не знает того, что знают они. да канечно,в особенности ты ,самый умный :\ ой ,все кароче ,обсуждайте дальше свой гта Link to comment
MX_Master Posted February 3, 2012 Share Posted February 3, 2012 фулдилка оживилась после смены названия (: .. даже случайные прохожие тут повякивать стали Нельзя полагаться на fps, и onClientPreRender вызывается с той же частотой что и onClientRender, только перед тем как начинается прорисовываться кадр. Он нужен для плавных изменений в мире, как например смена позиции камеры, чтобы изменения не отставали на кадр. Тут надо отмерять по времени с getTickCount(). В моем словесном примере баланс между подсчетами в каждом кадре и точностью по времени. Я делал такие же подсчеты в каждом кадре, но после тестов двух вариантов стало понятно, что такая точность не нужна, когда дело касается просто визуализации. Когда промежуток времени небольшой для изменения цвета, а обычно, это так и есть, то тиками можно ничего не мерить. Потому что для всех по ощущениям этот эффект итак будет одинаков по времени. Link to comment
Kernell Posted February 3, 2012 Share Posted February 3, 2012 Просто цвет я взял за пример, а так очень важно это учитывать при плавном повороте персонажа (при низком фпс это будет очень медленно). Я пока решение вижу что-то вроде этого: -- Пример для onClientPreRender -- current - текущий угол поворота игрока -- target - угол поворота к которому нужно повернуться -- timeSlice - аргумент возвращаемый onClientPreRender setPedRotation( localPlayer, current + math.sin( math.rad( target - current ) ) * ( timeSlice * .5 ) ); Link to comment
MX_Master Posted February 3, 2012 Share Posted February 3, 2012 Тебе по времени нужна абсолютная точность? Link to comment
Kernell Posted February 3, 2012 Share Posted February 3, 2012 Где взять инфу о Module SDK ? Что-то не могу найти ничего по экспортам.. Вообще никакой инфы. Тебе по времени нужна абсолютная точность? Нет, главное чтобы на разном FPS было одинаково. Link to comment
kashtesov Posted February 4, 2012 Share Posted February 4, 2012 Почему когда меняешь самотыки, вибраторы в MTA она просто вылетает.. Я думал они просто не заменятся, есть-ли способы? Link to comment
D_SaN Posted February 4, 2012 Share Posted February 4, 2012 Почему когда меняешь самотыки, вибраторы в MTA она просто вылетает.. Я думал они просто не заменятся, есть-ли способы? У меня тоже проблема была с заменой модели tec9, при ее замене, даже на стандартную модель, просто мта крэшило, когда брал ее в руки Link to comment
MX_Master Posted February 4, 2012 Share Posted February 4, 2012 Почему когда меняешь самотыки, вибраторы в MTA она просто вылетает.. Я думал они просто не заменятся, есть-ли способы? Да, эти предметы нельзя заменить, уже проверено не один раз. На баг трекере уже есть такой вопрос. Где взять инфу о Module SDK ? Что-то не могу найти ничего по экспортам.. Вообще никакой инфы.Тебе по времени нужна абсолютная точность? Нет, главное чтобы на разном FPS было одинаково. На заметку: модули не имеют полного доступа к МТА возможностям. Поэтому Module SDK только для тех серверных инструментов, которые не лезут в сам функционал МТА, а лишь добавляют какой-то независимый функционал. На мой взгляд, проще реализовать большинство фич на уровне скриптинга. Поэтому лезть в Module SDK надо только в крайнем случае и при хорошем знании С++. Как все работает можно узнать из готовых стандартных модулей - http://code.google.com/p/multitheftauto-modules/ Насчет плавного изменения цвета с необязательной точностью.. Рабочий пример. Код оптимизирован (выдернул из своей библы с DX элементами). Хотя код и большой, но весь упор сделан на то, чтобы при каждом кадре было минимум вычислений и проверок. --[[ префиксы в названия переменных, означают тип переменной: f = function, t = table, n = number, b = boolean tColor и tNewColor должны быть таблицами вида {r,g,b,a}, например, {255,128,64,255}, {148,0,10,117} ]] local tColor = {255,0,0,255} -- текущий цвет local nFPS, nFPSCounter = 36, 0 -- для подсчета FPS local tRecolor = { -- параметры плавного измнения цвета bIsActive = false, -- активно или нет tColorStep = {}, -- шаг для каждой составляющей цвета nSteps = 0, -- кол-во шагов tTargetColor = {} -- новый цвет } -- плавное изменение цвета function fRecolor ( tNewColor, nSeconds ) tRecolor.bIsActive = false -- выключим, если было включено tRecolor.nSteps = math.ceil( nFPS * nSeconds ) -- всего шагов for n = 1, 4 do tRecolor.tColorStep[n] = ( tNewColor[n] - tColor[n] ) / tRecolor.nSteps tRecolor.tTargetColor[n] = tNewColor[n] end tRecolor.bIsActive = true end addEventHandler( 'onClientResourceStart', resourceRoot, function() -- FPS счетчик setTimer( function() nFPS = nFPSCounter; nFPSCounter = 0 end, 1000, 0 ) -- для примера плавное изменение цвета каждые 3 сек, setTimer( function() fRecolor( { math.random(0,255), -- случайный цвет math.random(0,255), math.random(0,255), math.random(0,255), }, 1.5 ) -- меняется за 1.5 сек end, 3000, 0 ) end ) addEventHandler( 'onClientRender', root, function() -- FPS счетчик nFPSCounter = nFPSCounter + 1 -- изменение цвета, если оно активно if tRecolor.bIsActive then if tRecolor.nSteps <= 0 then for n=1,4 do tColor[n] = tRecolor.tTargetColor[n] end tRecolor.bIsActive = false else for n=1,4 do tColor[n] = tColor[n] + tRecolor.tColorStep[n] end if tRecolor.nSteps <= 2 then for n = 1, 4 do if tColor[n] < 0 then tColor[n] = 0 elseif tColor[n] > 255 then tColor[n] = 255 end end end tRecolor.nSteps = tRecolor.nSteps - 1 end end -- простой квадратик для примера, у него будет меняться цвет dxDrawRectangle( 300,300, 200,200, tocolor(tColor[1],tColor[2],tColor[3],tColor[4]) ) end ) Любой код является личным мнением и решением автора на поставленную задачу. Других вариантов может быть много. Link to comment
kashtesov Posted February 4, 2012 Share Posted February 4, 2012 пилу получилось, можете сказать какие точно не меняются. Link to comment
MX_Master Posted February 5, 2012 Share Posted February 5, 2012 вибраторы, бита, катана, тек9 Link to comment
kashtesov Posted February 5, 2012 Share Posted February 5, 2012 вибраторы, бита, катана, тек9 отстой... я хотел попробовать сделать ассасинс крид мод, катану и биту на меч и булаву заменить... дерьмово. а в будущих версиях будет доступно? Link to comment
Recommended Posts
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 accountSign in
Already have an account? Sign in here.
Sign In Now