Jump to content

TEDERIs

Members
  • Posts

    153
  • Joined

  • Last visited

  • Days Won

    2

Everything posted by TEDERIs

  1. Если я правильно понял, тебе нужно удалять действующий таймер перед созданием нового: local hudTimer function onstart() showPlayerHudComponent ( "ammo", false ) showPlayerHudComponent ( "weapon", false ) end addEventHandler ( "onClientResourceStart", getRootElement ( ), onstart ) function showHud() showPlayerHudComponent ( "ammo", true ) showPlayerHudComponent ( "weapon", true ) if hudTimer then killTimer ( hudTimer ) end hudTimer = setTimer ( hideHud, 5000, 1 ) end addEventHandler ( "onClientPlayerWeaponSwitch", getRootElement(), showHud ) function hideHud() showPlayerHudComponent ( "ammo", false ) showPlayerHudComponent ( "weapon", false ) hudTimer = nil end
  2. Вот например так можно сделать для локального игрока: local camState addCommandHandler ( "cam", function ( ) if camState then removeEventHandler ( "onClientPreRender", root, camUpdate ) camState = nil return end addEventHandler ( "onClientPreRender", root, camUpdate, false ) camState = true end ) function camUpdate ( ) local x, y, z = getElementPosition ( localPlayer ) setCameraMatrix ( x, y, z + 10, x, y, z ) -- Вид сверху end
  3. TEDERIs

    TCT: FlowEditor

    I want to show an example of creating a simple behavior graph with FlowEditor. Watch in 720p or 1080p. Other screenshots: http://postimage.org/image/6srqbd3p7/ http://postimage.org/image/fkmtr6k93/
  4. Я думаю имеет смысл добавить в твой конфиг строку 0.
  5. Думаю что стоит попробовать сделать вот так: local startPos = { -2405, -598, 132.6 } local endPos = { -2412.8, -602.2, 132.5 } local object = createObject ( 1491, startPos [ 1 ], startPos [ 2 ], startPos [ 3 ] ) local scrollbar = guiCreateScrollBar ( 400, 400, 100, 10, true, false ) addEventHandler ( "onClientGUIScroll", scrollbar, function ( scrolled ) local progress = guiScrollBarGetScrollPosition ( scrolled ) / 100 local x, y, z = interpolateBetween ( startPos [ 1 ], startPos [ 2 ], startPos [ 3 ], endPos [ 1 ], endPos [ 2 ], endPos [ 3 ], progress, "Linear" ) moveObject ( object, 1000, x, y, z ) end , false ) Клиентская сторона. Я бы не стал управлять таким образом серверным объектом.
  6. "Step-by-step" execution of script to control the bots. Because of bad sync vehicles are not yet able to move without the player.
  7. Part of my future gamemode.
  8. TEDERIs

    [REL] TCT

    TCT TEDERIs Construction Tools The constructor is a convenient way of working with in-game objects. Moving and creating objects is due to the position player, which gives greater accuracy and speed in construction. The player is offered a menu with a list of available objects and tools. This is an open-source resource that aspires to simplify the development of new projects. Download from community Thanks.
  9. Я не знаю сколько пройдет времени, пока я закончу этот проект. Поэтому я решил сейчас выложить чистую версию конструктора. Она включает в себя всего несколько инструментов. Я особо не тестировал ничего, поэтому предоставляю ресурс как есть. Код открыт, вы можете использовать существующие наработки как угодно, в любых своих проектах. Вы всегда сможете добавить новые инструменты сами, по аналогии с уже существующими. Впоследствии отдельно выложу Wire и Inline. Если найдете проблемы в ресурсе, сообщите мне. https://community.multitheftauto.com/index.php?p= ... ls&id=4746 viewtopic.php?f=108&t=43145
  10. Проект развивается не так быстро, как этого хотел бы я. Мне пригодятся люди для поиска проблемных мест. Для этого будет открыт отдельный сервер. Когда все для этого будет готово, адрес для подключения появится в моей подписи. Что на данный момент готово: Создание практических всех типов элементов, которые могут быть отображены на экране Сохранение в .map файл всех игровых данных Wire компоненты. Создание компонентов, которые могут быть связаны вместе с помощью проводов. Сейчас доступно порядка десяти разных компонентов, не считая гейтов. Около 10 различных инструментов для работы с объектами Что нужно сделать: Научить Wire компоненты работать с незарезервированными точками входа Добавить инструмент Inline. Для прикрепления кода к объектам в виде компонентов Выпадающие формы на панели инструментов Пофиксить обнаруженные игроками проблемы Мне очень приятно, что за проектом кто то следит.
  11. Да это старые видео конструктора. В конце недели могу выложить видео, показать работу новых инструментов. Все что осталось сделать, чтобы отпустить проект, это дописать одну большую часть и перевести на англ. несколько инструкций. Ждите релиза в этом месяце, очень надеюсь что успею.
  12. Не ждал от юзеров такой реакции. Когда все будет готово, ссылки появятся в разделе ресурсов. Я не могу сказать точно когда он появится, я над ним работаю. Вы можете оценить конструктор по видео на моем канале на YouTube. Он претерпел много изменений.
  13. Не редактор, скорее конструктор. Вы можете проверять коммьюнити. Когда все будет готово, загружу ресурс в исходном виде и краткую справку.
  14. Давно реализованный проект. Игроки на моем сервере знакомы с ним уже больше двух лет. Работа сведена к использованию инструментов. Это полный комплект средств, для WYSIWYG построения игровых режимов. Если кого то заинтересовало, могу открыть проект для всех.
  15. Почему бы не попытаться узнать положение объекта из расстояния между точками? Например: local x, y, z = 100, 100, 100 local ex, ey, ez = getElementPosition ( element ) if math.floor ( getDistanceBetweenPoints3D ( ex, ey, ez, x, y, z ) ) == 0 then --Код end Результат не будет точным, погрешность до 1 юнита из за округления вниз.
  16. Создаем блип по срабатыванию onPlayerVehicleEnter. Серверная сторона. Например: local SKIN = 23 addEventHandler ( "onPlayerVehicleEnter", root, function ( ) local blip = createBlipAttachedTo ( source, 56 ) clearElementVisibleTo ( blip ) for _, player in ipairs ( getElementsByType ( "player" ) ) do if getElementModel ( player ) == SKIN then setElementVisibleTo ( blip, player, true ) end end end ) Код нужно дописать и добавить проверки например на созданный ранее блип.
  17. Конвертируем строку в число с помощью функции tonumber. Например: function use_ExeWed () if source == btnExit then DestroyExeWedGUI() end if (source == btnOK) then local code = guiGetText(password) outputChatBox("Введи: ".. pass, 255, 120, 0, true) if tonumber ( code ) == pass then outputChatBox("Access Accepted") else outputChatBox("Access Denied") end end end addEventHandler("onClientGUIClick",getRootElement(),use_ExeWed)
  18. Правильно, все дочерние элементы удаляются вместе с родительским.
  19. неа стиль не меняет - остаётся нубский Таймер начинает работать только после входа игрока в игру. Можно переделать на комманду: addCommandHandler ( "afstyle", function ( player ) if not getElementData ( player, "fightingStyle" ) then setPedFightingStyle ( player, 4 ) setElementData ( player, "fightingStyle", 4 ) setTimer ( resetFightingStyle, 4000, 1, player ) else outputChatBox ( "Вы уже применили эту комманду", player ) end end ) function resetFightingStyle ( player ) if isElement ( player ) then local style = getElementData ( player, "fightingStyle" ) if type ( style ) ~= "number" then return end style = style + 1 if style > 7 then style = 4 end setPedFightingStyle ( player, style ) setElementData ( player, "fightingStyle", style ) setTimer ( resetFightingStyle, 4000, 1, player ) end end После ввода /afstyle запускается таймер смены режима борьбы. Что очень важно, это серверный скрипт.
  20. Function0 не может получить аргументы thePlayer и id от события onResourceStart. Также 4-й тамер прикреплен к несуществующей функции. Попробуй так: addEventHandler ( "onPlayerJoin", root, function ( ) setPedFightingStyle ( source, 4 ) setElementData ( source, "fightingStyle", 4 ) setTimer ( resetFightingStyle, 4000, 1, source ) end ) function resetFightingStyle ( player ) if isElement ( player ) then local style = getElementData ( player, "fightingStyle" ) if type ( style ) ~= "number" then return end style = style + 1 if style > 7 then style = 4 end setPedFightingStyle ( player, style ) setElementData ( player, "fightingStyle", style ) setTimer ( resetFightingStyle, 4000, 1, player ) end end
  21. Чем тебя resourceRoot или эквивалентный ему getResourceRootElement ( ) не устраивает? Нельзя на resource цеплять обработчик.
  22. el_motoblock, например так: addEventHandler("onResourceStart", resourceRoot, function() resetMapInfo() for i,player in ipairs(getElementsByType("player")) do spawn(player) end end ) function spawn(player) if not isElement(player) then return end repeat until spawnPlayer ( player, -1972.3438+math.random(1,5), 138.147+math.random(5,9), 27.69, 270.0, math.random(9,288), 0, 0) fadeCamera(player, true) setCameraTarget(player, player) showChat(player, true) end function respawn(player, skin) if not isElement(player) then return end repeat until spawnPlayer ( player, -1972.3438+math.random(1,5), 138.147+math.random(5,9), 27.69, 270.0, skin, 0, 0) fadeCamera(player, true) setCameraTarget(player, player) showChat(player, true) end addEventHandler("onPlayerJoin", root, function() spawn(source) end ) addEventHandler("onPlayerWasted", root, function() setTimer(respawn, 1800, 1, source, getElementModel(source)) end ) Но лучше все в одну функцию поместить: addEventHandler("onResourceStart", resourceRoot, function() resetMapInfo() for i,player in ipairs(getElementsByType("player")) do spawn(player) end end ) function spawn(player, skin) if not isElement(player) then return end repeat until spawnPlayer ( player, -1972.3438+math.random(1,5), 138.147+math.random(5,9), 27.69, 270.0, skin or math.random(9,288), 0, 0) fadeCamera(player, true) setCameraTarget(player, player) showChat(player, true) end addEventHandler("onPlayerJoin", root, function() spawn(source) end ) addEventHandler("onPlayerWasted", root, function() setTimer(spawn, 1800, 1, source, getElementModel(source)) end )
  23. Одно из решений for _, player in ipairs ( getElementsByType ( "player" ) ) do local playerAccount = getPlayerAccount ( player ) if isGuestAccount ( playerAccount ) ~= true then local accountName = getAccountName ( playerAccount ) if isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "Admin" ) ) or isObjectInACLGroup ( "user." .. accountName, aclGetGroup ("SuperModerator" ) ) or isObjectInACLGroup ( "user." .. accountName, aclGetGroup ( "Moderator" ) ) then outputChatBox ( "Text", player ) end end end
  24. Конечно можно addCommandHandler ( "attach", function ( player, command, playername, model ) if playername then local targetPlayer = getPlayerFromName ( playername ) if targetPlayer then local targetVehicle = getPedOccupiedVehicle ( targetPlayer ) if targetVehicle then model = tonumber ( model ) if model then if model == 0 then for _, attachedElement in ipairs ( getAttachedElements ( targetVehicle ) ) do if isElement ( attachedElement ) and getElementType ( attachedElement ) == "object" then destroyElement ( attachedElement ) end end else local x, y, z = getElementPosition ( targetVehicle ) local object = createObject ( model, x, y + 5, z ) if object then attachElements ( object, targetVehicle, 0, 5, 0, 0, 0, 0 ) else outputChatBox ( "Вы не можете создать объект с такой моделью", player ) end end else outputChatBox ( "Вы должны указать модель объекта или 0 для его удаления", player ) end else outputChatBox ( "Игрок должен находиться в автомобиле", player ) end else outputChatBox ( "Игрока с таким именем не существует", player ) end else outputChatBox ( "Вы должены указать имя игрока", player ) end end ) local l_root = getRootElement ( ) function destroyAttachedObjects ( ) if getElementType ( source ) == "vehicle" then for _, attachedElement in ipairs ( getAttachedElements ( source ) ) do if isElement ( attachedElement ) and getElementType ( attachedElement ) == "object" then destroyElement ( attachedElement ) end end end end addEventHandler ( "onVehicleExplode", l_root, destroyAttachedObjects ) addEventHandler ( "onElementDestroy", l_root, destroyAttachedObjects )
×
×
  • Create New...