Easterdie Posted August 3, 2015 Share Posted August 3, 2015 по циклу прибавлять альфу, а после какого-то значения минусовать. Link to comment
Kernell Posted August 4, 2015 Share Posted August 4, 2015 Всем хай! Вопрос скорее туповатый но все же никак не додумаюсь... Как можно заставить мигать dxDrawRectangle? Ну есть самый примитивный код local alpha = 0 local atype = 'up' addEventHandler('onClientRender', root, function () if (alpha >= 0 and atype == 'up') then alpha = alpha + 5 elseif (alpha <= 200 and atype == 'down') then alpha = alpha - 5 end if (alpha == 0) then atype = 'up' elseif (alpha == 200) then atype = 'down' end dxDrawRectangle(x, y, w, h, tocolor(150, 0, 0, alpha)) end) Работает, но я бы предпочел без atype переменной, нельзя использовать саму alpha переменную? UPD: if (alpha >= 0 and alpha ~= 200) then alpha = alpha + 5 elseif (alpha <= 200 and alpha ~= 1) then alpha = alpha - 5 end Эт тоже не помогло Такие вещи лучше делать с привязкой ко времени. Иначе при разном FPS мигание будет с разной скоростью. Простой пример как это делается: local alpha = 0; local alphaTarget = 255; local time = 5000; local timeEnd = getTickCount() + time; addEventHandler( "onClientRender", root, function() local progress = 1.0 - ( timeEnd - getTickCount() ) / time; alpha = math.lerp( alpha, alphaTarget, progress ); end ); function math.lerp( from, to, f ) return from + ( to - from ) * math.max( math.min( f, 1.0 ), 0.0 ); end Что по твоему вопросу - без проверки и доп.переменной не вижу решения. В данном примере можно добавить проверку на alpha когда она достигает нужного значения, менять targetAlpha на другое и обновлять timeEnd. P.S. Можно кстати добавить Easing функции в пример, для изменения плавности анимации Link to comment
FranklinRoosevelt Posted August 4, 2015 Share Posted August 4, 2015 Такие вещи лучше делать с привязкой ко времени. Иначе при разном FPS мигание будет с разной скоростью. Простой пример как это делается: local alpha = 0; local alphaTarget = 255; local time = 5000; local timeEnd = getTickCount() + time; addEventHandler( "onClientRender", root, function() local progress = 1.0 - ( timeEnd - getTickCount() ) / time; alpha = math.lerp( alpha, alphaTarget, progress ); end ); function math.lerp( from, to, f ) return from + ( to - from ) * math.max( math.min( f, 1.0 ), 0.0 ); end Что по твоему вопросу - без проверки и доп.переменной не вижу решения. В данном примере можно добавить проверку на alpha когда она достигает нужного значения, менять targetAlpha на другое и обновлять timeEnd. P.S. Можно кстати добавить Easing функции в пример, для изменения плавности анимации А что на счет изменения угла поворота игрока аналогичным способом, я видел раньше ты обсуждал уже эту тему, но там конкрентого решения я не нашел? Link to comment
iAxel Posted August 4, 2015 Share Posted August 4, 2015 Такие вещи лучше делать с привязкой ко времени. Иначе при разном FPS мигание будет с разной скоростью. Простой пример как это делается: local alpha = 0; local alphaTarget = 255; local time = 5000; local timeEnd = getTickCount() + time; addEventHandler( "onClientRender", root, function() local progress = 1.0 - ( timeEnd - getTickCount() ) / time; alpha = math.lerp( alpha, alphaTarget, progress ); end ); function math.lerp( from, to, f ) return from + ( to - from ) * math.max( math.min( f, 1.0 ), 0.0 ); end Что по твоему вопросу - без проверки и доп.переменной не вижу решения. В данном примере можно добавить проверку на alpha когда она достигает нужного значения, менять targetAlpha на другое и обновлять timeEnd. P.S. Можно кстати добавить Easing функции в пример, для изменения плавности анимации Пример не до конца?) Спасибо большое) Link to comment
Kernell Posted August 4, 2015 Share Posted August 4, 2015 А что на счет изменения угла поворота игрока аналогичным способом, я видел раньше ты обсуждал уже эту тему, но там конкрентого решения я не нашел? Конкретнее? Я не помню уже.. Пример не до конца?) Спасибо большое) Да, это пример, а не готовое решение заточенное под тебя. Пожалуйста. Link to comment
FranklinRoosevelt Posted August 4, 2015 Share Posted August 4, 2015 Конкретнее? Я не помню уже.. Суть задачи, чтобы угол поворота педа = уголу поворота камеры, но вот если вставить в рендер и на каждый кадр задавать вращение педа исходя от угла камеры тогда FPS будет влиять на скорость, да? А я хочу сделать плавный поворот. local camera = getCamera() function updateCamera() local _, _, rx = getElementRotation(camera) setPedRotation(localPlayer, rx) end addEventHandler ( "onClientPreRender", root, updateCamera ) Ты тогда что-то такое придумал: -- Пример для onClientPreRender -- current - текущий угол поворота игрока -- target - угол поворота к которому нужно повернуться -- timeSlice - аргумент возвращаемый onClientPreRender setPedRotation( localPlayer, current + math.sin( math.rad( target - current ) ) * ( timeSlice * .5 ) ); Link to comment
K1parik Posted August 5, 2015 Share Posted August 5, 2015 Написал себе первый скрипт сам только вот проблема. при старте/рестарте любого ресурса из админ панели этот мой скрипт тоже сам перезапускается. из-за чего это происходит? сервер warPosCar = { { 623.29998779297, -2498.6000976563, 5.4 }, { -1469.2001953125, 1489.599609375, 10 }, { 3194.6000976563, 2240.1000976563, 4.7 }, } function werCarPos () if isElement ( warCar ) then destroyElement ( warCar ) end if isElement ( blipWarCar ) then destroyElement ( blipWarCar ) end randomWarCar = math.random ( #warPosCar ) if randomWarCar then ropX, dropY, dropZ = warPosCar[randomWarCar][1], warPosCar[randomWarCar][2], warPosCar[randomWarCar][3] carId = math.random ( 1, 2 ) if carId == 1 then carIdRes = "520" carName = "Hydra" else carIdRes = "425" carName = "Hunter" end warCar = createVehicle ( carIdRes, ropX, dropY, dropZ ) blipWarCar = createBlipAttachedTo ( warCar, 56, 1, 255, 255, 255, 255, 100 ) outputChatBox ( "-- Обнаружен #FF0000"..carName.."#FFFFFF. Он отмечен на карте желтым кружком.", getRootElement(), 255, 255, 255, true ) end setTimer ( function() if isElement ( warCar ) then if getElementHealth ( warCar ) < 10 then destroyElement ( warCar ) destroyElement ( blipWarCar ) setTimer ( werCarPosTwo, 1000, 1) end end end, 28800000, 1 ) --outputDebugString("Заспавнен "..carName..".", 3 ) end addEventHandler ( "onResourceStart", getRootElement(), werCarPos ) function werCarPosTwo () if isElement ( warCar ) then destroyElement ( warCar ) end if isElement ( blipWarCar ) then destroyElement ( blipWarCar ) end randomWarCar = math.random ( #warPosCar ) if randomWarCar then ropX, dropY, dropZ = warPosCar[randomWarCar][1], warPosCar[randomWarCar][2], warPosCar[randomWarCar][3] carId = math.random ( 1, 2 ) if carId == 1 then carIdRes = 520 carName = "Hydra" else carIdRes = 425 carName = "Hunter" end warCar = createVehicle ( carIdRes, ropX, dropY, dropZ ) blipWarCar = createBlipAttachedTo ( warCar, 56, 1, 255, 255, 255, 255, 100 ) outputChatBox ( "-- Обнаружен #FF0000"..carName.."#FFFFFF. Он отмечен на карте желтым кружком.", getRootElement(), 255, 255, 255, true ) end setTimer ( function() if isElement ( warCar ) then if getElementHealth ( warCar ) < 10 then destroyElement ( warCar ) destroyElement ( blipWarCar ) setTimer ( werCarPos, 1000, 1) end end end, 28800000, 1 ) --outputDebugString("Заспавнен "..carName..".", 3 ) end мета <meta> <script src="server.lua" type="server" /> </meta> Link to comment
TheNormalnij Posted August 6, 2015 Share Posted August 6, 2015 Cтрока 40, заменить на: addEventHandler ( "onResourceStart", resourceRoot, werCarPos ) Link to comment
K1parik Posted August 7, 2015 Share Posted August 7, 2015 Спасибо, очень помогло) Еще вопрос появился. Есть xml файл. и в него идет запись данных <private> <vehicle owner="Nik" model="494" pos="[ [ 229.7080078125, 1659.4375, 15.23603630065918 ] ]" rot="[ [ 2.427978515625, 4.471435546875, 315.98876953125 ] ]" color="[ [ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]" paintjob="3" upgrades="[ [ ] ]" interior="0" dimension="0" /> <vehicle owner="Nik" model="493" pos="[ [ 229.7080078125, 1659.4375, 15.23603630065918 ] ]" rot="[ [ 2.427978515625, 4.471435546875, 315.98876953125 ] ]" color="[ [ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]" paintjob="3" upgrades="[ [ ] ]" interior="0" dimension="0" /> </private> как удалить одну из эти строк? есть такая функция или что то то подобное? Link to comment
Other Languages Moderators Disinterpreter Posted August 7, 2015 Other Languages Moderators Share Posted August 7, 2015 Спасибо, очень помогло)Еще вопрос появился. Есть xml файл. и в него идет запись данных <private> <vehicle owner="Nik" model="494" pos="[ [ 229.7080078125, 1659.4375, 15.23603630065918 ] ]" rot="[ [ 2.427978515625, 4.471435546875, 315.98876953125 ] ]" color="[ [ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]" paintjob="3" upgrades="[ [ ] ]" interior="0" dimension="0" /> <vehicle owner="Nik" model="493" pos="[ [ 229.7080078125, 1659.4375, 15.23603630065918 ] ]" rot="[ [ 2.427978515625, 4.471435546875, 315.98876953125 ] ]" color="[ [ 0, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 ] ]" paintjob="3" upgrades="[ [ ] ]" interior="0" dimension="0" /> </private> как удалить одну из эти строк? есть такая функция или что то то подобное? https://wiki.multitheftauto.com/wiki/XmlDestroyNode оно? Но сразу скажу. Что сохранять машины в .xml не разумно, когда есть СУБД. Link to comment
TheNormalnij Posted August 9, 2015 Share Posted August 9, 2015 К тому же уже готовый пример есть Link to comment
iAxel Posted August 10, 2015 Share Posted August 10, 2015 Есть способы определения русского текста? Link to comment
Kenix Posted August 10, 2015 Share Posted August 10, 2015 viewtopic.php?f=141&t=33091 >>Функция: isRussianText Link to comment
Kernell Posted August 11, 2015 Share Posted August 11, 2015 Есть способы определения русского текста? pregFind( subject, "[А-Яа-я]" ) Link to comment
K1parik Posted August 11, 2015 Share Posted August 11, 2015 такая проблема. сделал на сервере зеленую зону и запретил всем в ней драться с помощью toggleControl ( hitElement, "fire", false ), но некоторые все равно иногда могут махать кулаками. как так? что то еще нужно запретить что ли? Link to comment
iAxel Posted August 11, 2015 Share Posted August 11, 2015 https://forum.multitheftauto.com/viewtopic.php?f=141&t=33091>>Функция: isRussianText Есть способы определения русского текста? pregFind( subject, "[А-Яа-я]" ) Спасибо большое Link to comment
FranklinRoosevelt Posted August 11, 2015 Share Posted August 11, 2015 такая проблема. сделал на сервере зеленую зону и запретил всем в ней драться с помощью toggleControl ( hitElement, "fire", false ), но некоторые все равно иногда могут махать кулаками. как так? что то еще нужно запретить что ли? Мне кажется что проблема в том что можно биться с помощью ЛКМ и ПКМ+F (по стандарту). Link to comment
nikitafloy Posted August 12, 2015 Share Posted August 12, 2015 Не получается вывести ID игрока в нике Через команду выводится в чат, при вызове - ошибка. client(1) dxDrawText ( getPlayerNameR(player) .. '[' .. tostring(call(getResourceFromName("gn"), 'getitIDbyName', tostring(getPlayerName(player)))) .. ']', sx+1, sy - offset+1, sx+1, sy - offset+1, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false ) client(2) function gn ( player_name ) outputChatBox(tostring(player_name)) if ( player_name ) then local sucess, value = getNameMatches ( player_name ) local player_id = getElementData ( value, "ID" ) return player_id end end meta function="gn" type="client"/> Link to comment
TheNormalnij Posted August 12, 2015 Share Posted August 12, 2015 dxDrawText ( getPlayerNameR(player) .. '[' .. tostring( getElementData( player, 'ID' ) ) .. ']', sx+1, sy - offset+1, sx+1, sy - offset+1, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false ) Link to comment
K1parik Posted August 14, 2015 Share Posted August 14, 2015 подскажите почему не работает последняя функция playerDamage? safecol = createColCuboid(2719.5852050781, -2585.7465820313, -5, 150, 272, 200) safeZoneRadar = createRadarArea(2719.5852050781, -2585.7465820313, 150, 272, 0, 255, 0, 100) setElementData (safeZoneRadar, "zombieProof", true) function enterZone(hitElement, thePlayer) setVehicleDamageProof ( hitElement, true ) if getElementType ( hitElement ) == "player" then outputChatBox("Вы вошли в зеленую зону", hitElement, 0, 255, 0) setElementData ( hitElement, 'damage', 'no' ) setElementData ( hitElement, 'weaponZZ', true ) toggleControl ( hitElement, "fire", false ) end end addEventHandler( "onColShapeHit", safecol, enterZone ) function leaveZone(hitElement, thePlayer) setVehicleDamageProof ( hitElement, false ) if getElementType ( hitElement ) == "player" then outputChatBox("Вы покинули зеленую зону", hitElement, 255, 0, 0) setElementData( hitElement, 'damage', 'yes' ) setElementData ( hitElement, 'weaponZZ', false ) toggleControl ( hitElement, "fire", true ) end end addEventHandler( "onColShapeLeave", safecol, leaveZone ) setTimer ( function () for id, player in ipairs( getElementsByType ( "player" ) ) do if getElementData ( player, 'weaponZZ' ) then local weaponID = getPedWeapon ( player ) if weaponID ~= 0 then giveWeapon ( player, 0, 1, true ) end end end end, 100, 0 ) function playerDamage ( attacker, weapon, bodypart, loss ) local killer = attacker if getElementData ( source, 'weaponZZ' ) then local playerHealth = getElementHealth ( killer ) setElementHealth ( killer, playerHealth - loss ) end end addEventHandler ( "onPlayerDamage", getRootElement (), playerDamage ) Link to comment
nikitafloy Posted August 14, 2015 Share Posted August 14, 2015 dxDrawText ( getPlayerNameR(player) .. '[' .. tostring( getElementData( player, 'ID' ) ) .. ']', sx+1, sy - offset+1, sx+1, sy - offset+1, tocolor(0,0,0,255), textscale*NAMETAG_TEXTSIZE, srfont, "center", "bottom", false, false, false ) Спасибо Link to comment
nikitafloy Posted August 14, 2015 Share Posted August 14, 2015 Как в БД в существующую таблицу добавить еще одну колонку? Link to comment
STAWR Posted August 14, 2015 Share Posted August 14, 2015 подскажите почему не работает последняя функция playerDamage? возможно потому что нет данных для этого элемента под этим ключом. А нет их из-за того, что игрок не пересекал колшейп. Link to comment
K1parik Posted August 15, 2015 Share Posted August 15, 2015 подскажите почему не работает последняя функция playerDamage? возможно потому что нет данных для этого элемента под этим ключом. А нет их из-за того, что игрок не пересекал колшейп. не, это я проверял. и заходи и выходил. оружие нормально меняется на кулак, а вот последнее не хочет работать Link to comment
Kenix Posted August 15, 2015 Share Posted August 15, 2015 Как в БД в существующую таблицу добавить еще одну колонку? ALTER TABLE http://www.mysql.ru/docs/man/ALTER_TABLE.html 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