Jump to content

TheNormalnij

MTA Contributors
  • Posts

    684
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by TheNormalnij

  1. local messages = {} addEvent ( "livetext", true ) local function removePlayerMessage( player ) messages[player] = nil end local function onPlayerQuitWithMessage( ) removePlayerMessage( source ) end addEventHandler ( "livetext",root, function( ) messages[source] = getElementData( source, 'mess' ) addEventHandler( 'onClientPlayerQuit', source, onPlayerQuitWithMessage ) setTimer( removePlayerMessage, 6000, 1, source ) end ) addEventHandler( "onClientRender", root, function( ) local x,y,z = getElementPosition( localPlayer ) for player, text in pairs( messages ) local px,py,pz = getElementPosition( player ) local distance = getDistanceBetweenPoints3D ( x,y,z,px,py,pz ) if distance <= 10 then local sx,sy = getScreenFromWorldPosition ( x, y, z+0.95, 0.06 ) if not sx then return end -- local scale = --1/(0.3 * (distance / 30)) dxDrawBorderedText ( text, sx, sy - 30, sx, sy - 30, tocolor(255,255,255,255), 1.5, "arial", "center", "bottom", false, false, false ) end end end ) Я предположил, что надо создать над игроком-источником события 'livetext' какой-то текст. Т.е. на серверной стороне указать игрока. Текст сообщения правильно было бы указывать в событии, а не элемент дате. Выравнивать сообщеняи можно с dxGetTextWidth.
  2. Текст не элемент, его через attachElement нельзя прицепить. Во-вторых, используются глобальные переменные, которые могут использоваться в нескольких копиях обработчика onClientRender. Вот пример, как я раньше рисовал текст над авто. local carsCost = {} local renderState = false addEvent( 'showCarCost', true ) addEventHandler( 'showCarCost', root, function() carsCost[source] = tostring( getElementData( source, 'cost' ) ) if not renderState then renderState = true addEventHandler( 'onClientRender', root, renderCarCost ) end end ) function renderCarCost() local x, y, z = getElementPosition( localPlayer ) renderState = false for car, cost in pairs( carsCost ) do local vX, vY, vZ = getElementPosition( car ) local sX, sY = getScreenFromWorldPosition( vX, vY, vZ + 1, 0, false ) local dis = getDistanceBetweenPoints3D( x, y, z, vX, vY, vZ ) if sX and dis < 11 then dxDrawText( cost , sX, sY, 30, 10, nil, 3, 'arial' ) elseif dis > 11 then carsCost[car] = nil end renderState = true end if not renderState then removeEventHandler( 'onClientRender', root, renderCarCost ) end end
  3. Смотря какие данные нужно запаковать. В основном надо будет использовать string.char, string.byte
  4. Lua - регистрзависимый язык. local не тоже самое, что и Local, с for так же. Максимум 255 символов, если не изменяет память. Пробуй более удобнее хранить значения, например организовав структуру и работая с бинарными данными или разделив значения, ну или используете свою дб.
  5. https://community.multitheftauto.com/index.php?p=resources&s=details&id=9207 malware DONE, USER BANNED
  6. http://pastebin.com/3uK5ixkG You can not monitor all malicious resources...
  7. Ну, как бы тут уже написано %70 кода. Осталось только перенести замену модели авто на клиент, добавить туда dxDrawText. В общем сущий пустяк.
  8. MTA до последней версии обновить во-первых. Во-вторых последнюю версию вайна. Возможно, нужна будет переустановка его, с перепиливанием библиотек.
  9. Файрфол, антивирус какой? Версия системы? Что сделали?
  10. Переустановите МТА/отключите файрфол.
  11. https://wiki.multitheftauto.com/wiki/Modules/MySQL https://wiki.multitheftauto.com/index.php?title=RU/Resources https://wiki.multitheftauto.com/index.php?title=RU/Scripting_Introduction
  12. Нет, надо заменить две модели: одна на авто, другая на башню - и скриптово создать им движение
  13. setTimer(function(source) local x,y,z = getElementPosition(source) setElementData(root, 'positionUsx', x) setElementData(root, 'positionUsy', y) setElementData(root, 'positionUsz', z) triggerClientEvent(source, 'Hello', root, source ) end, 10000, 1, thePlayer)
  14. Multi Theft Auto.exe ??? Comodo firewall" kann auch MTA blockieren.
  15. Добавить МТА в исключения фаейрфола/запустить от администратора
  16. Ну так например, как у меня, сервер держится на обычном пк, то любой чих - смерть.
  17. 1) Да, будет вызван onPlayerQuit с параметром причины Time out. 2) Если под внезапность подразумевать проблемы с питанием, то нет.
  18. Возможно( может даже подойти accname ) Ну возможности как возможности, ничего особенного. Можно использовать MySQL или SQLite =)
  19. На скрине ошибки нет. В последней версии редактора цепь чекпоинтов обозначается стрелками, они есть?
  20. Сабж есть в статьях о триггерах и элемент дате на разных языках.
  21. --server local skinMarkers = { -- синтаксис { x, y, z, skinID }; { 2594.850097653, -2176.44921875, -0.21875, 22 }; } -- создаем корневой элемент для маркеров local skinMarkerRoot = createElement( 'skinMarkerRoot' ) addEventHandler( 'onResourceStart', resourceRoot, function() -- создаем маркеры for i = 1, #skinMarkers do local x, y, z = unpack( skinMarkers[i], 1, 3 ) local skinMarker = createMarker( x, y, z, "cylinder", 1.5, 32, 163, 32, 255 ) setElementData( skinMarker, 'skinID', skinMarkers[i][4], false ) end end ) -- обработчик вешаем на корень addEventHandler( 'onMarkerHit', skinMarkerRoot, function( player ) if getElementType( player ) == 'player' then setElementModel( player, getElementData( source, 'skinID' ) ) end end ) Красиво это сделать с помощью edf, тогда вместо onResourceStart обрабатывать onMapStart
×
×
  • Create New...