Jump to content

Flaker

Members
  • Posts

    619
  • Joined

  • Last visited

Everything posted by Flaker

  1. Ахах) Я когда вчера зашел на форум, увидел, что ты в онлайне, так и подумал, что уже отвечаешь наверно) Ну и решил тебя обогнать Ладно, по теме: addEventHandler("onClientKey", root, function(button, press) if ( press and button == "3" ) then setTimer( function() if ( getKeyState( "3" ) ) then --TODO end end, 2000, 1) end end ) Что то типо того...
  2. При нажатии таймер на 2 сек устанавливаешь, потом через 2 сек проверяешь, нажата ли кнопка если да, то выполняешь действие...
  3. Так вот я не собираюсь использовать getElementsByType("colshape") и перебирать кол-шейпы... Мой алгоритм в совершенно другом заключается! Согласен, не стоит спорить... Так как мы друг друга, просто напросто, не понимаем...
  4. Эммм... Я понял только %30 из написанного тобой... Ты не понял совсем, что я предлагаю сделать... Какие, мать его, таблицы ты собираешь перебирать? isElementWithinColShape вернет тебе true, если игрок в зоне! Все! Этого достаточно! Тоесть, в ином случае создавать не придется? Не говори гоп... Да и не вижу я оптимальности в твоем варианте(
  5. Я просто стараюсь делать нормальные алгоритмы... Не стоит считать это безвыходной ситуацией? Рассказываю значит: Есть такая функция getElementsByType... С помощью нее и isElementWithinColShape, мы можем определить находится ли игрок в зоне... Это во-первых! Во вторых, если приблизится к тому варианту, который предпочитаете вы (То есть по заходу привязывать игрока к зоне)... Сделать это можно так: В эвенте OnColShapeHit заносить игрока в массив, привязанный к этой зоне... В эвенте onColShapeLeave убирать его из массива... В таком случае, вы сможете найти всех игроков, находящихся в зоне, пройдясь по массиву... Но такой вариант, имхо, менее удобен, так как имеет множество минусов, которые придется исправлять большим кол-вом кода...
  6. isElementWithinColShape отлично работает! Я не понимаю зачем вобще проверять что то при переходе! Почитай то что я написал во стором посте, на мой взгляд, это наиболее универсальный алгоритм... И он должен отлично работать, естественно при правильном использовании!
  7. https://wiki.multitheftauto.com/wiki/IsElementWithinColShape Vampir, нет, ну это п**дец какой-то) Конечно можно вручную проверять по координатам, но колшейпы могут быть не только квадратные! Они вобще многоугольниками могут быть или цилиндром, или даже сферой! Так что isElementWithinColShape для этого подойдет лучше! И вобще зачем каждый ключ массива в разнобой записывать, a не сразу при инициилизации? Разве так не удобнее?: local asocArray = { ["Key1"] = "val"; ["Key2"] = "val2"; }
  8. Я так понял ты делаешь систему turf war'ов... Можно конечно с помощью костылей кой-каких выправить это дело... Но вобще, проще изменить логику... Зачем тебе вобще обнулять gangid... Ведь можно избежать этого, таким образом: 1) Игрок заходит в зону, ему присваивается id этой зоны (Учитываем, что все зоны есть в глобальном массиве) При выходе из этой зоны ничего не обнуляем! Вобще ничего не делаем! 2) При начале захвата, допустим по команде /turf, идет проверка на наличие игрока в захватываемой зоне... Если игрок присутсвует, то все ок, если нет, то все не ок... При таком алгоритме тебе не страшны траблы с колшейпами
  9. Пунктуация - удел слабаков? Хех... А человек который это писал, в дебаг заглядывал? (/dbugscript 3) Вобщем, этот код в корне не верен! Его не исправить(
  10. Ну ладно, пусть работает) А вобще вот посмотри: -- SERVER local tPlayerHasAccess = { --['PLAYER_NICK'] = true; ['Vaca'] = true; ['Lol'] = true; } function commandHandler( thePlayer, cmd, targetPlayerName ) if ( targetPlayerName and targetPlayerName ~= "" ) then local targetPlayerElem = getPlayerFromName( targetPlayerName ); if ( tPlayerHasAccess[getPlayerName( thePlayer )] and isElement(targetPlayerElem) ) then triggerClientEvent ( targetPlayerName, "clientCommandHandler", thePlayer, "Привет, Медведев!" ); else outputChatBox("Error: Игрока, с таким ником, не существует или вы не имеете доступа!", thePlayer, 255, 0, 0); end else outputChatBox("Error: Игрока, с таким ником, не существует!", thePlayer, 255, 0, 0); end end addCommandHandler ( "COMMAND_NAME", greetingCommand ) --CLIENT addEvent( "clientCommandHandler", true ) addEventHandler( "clientCommandHandler", root, function (msg) outputChatBox ( "The server says: "..msg ); end )
  11. Если у тебя сразу оба обработчика стоят, то неудивительно, что 2 раза показывает сообщение? Или у тебя по 2 раза каждый? Или они вобще отдельно? И еще проверь meta.xml... У тебя там не по 2 раза объявлен серверный или клиентский .lua файл?
  12. Ну помоему в коде отражена попытка проверки нахождения аккаунта в ACL группе Admin... Попытка не удачная, на сколько я вижу... Вобще у тебя слова с кодом не связаны...
  13. ACL это файл, из которого MTA узнает может ли этот игрок или скрипт выполнять дейстие какое либо... Например открыть аминку и тд Скрипт надо добавить в группу Admin, чтоб у него были полные права.
  14. С этим модом у всех проблем куча... Там фишка в следующем: (Не говорю, что проблема именно в этом, но все же) 1) Сервер должен иметь определенное название (в Readmy файле посмотри) 2) Надо добавить в ACL скрипты А вобще он зашифрован, так что ошибки исправить не получится...
  15. Тут не все так просто... Во первых, если проверять просто соответсвует ли координата X заданой, то будет телепортировать все время (Ведь не может нормальный человек вобще не съезжать с координаты)... Первое что приходит в голову: сделать колизию расположеную вдоль дороги, и проверять наличие в ней игрока... Тут тоже есть свои минусы... Второй вариант, на мой взгляд более правильный: Есть заданая координата X, вдоль которой ехать может игрок, далее, задаем погрешность, допустим 5. В рендере (С ограничением в 400мс) проверяем если модуль разности координаты X заданой и координаты X игрока больше погрешности, значит игрок съехал с дороги...
  16. Твой вариант не совсем то, что ты хотел... Ты не проверяешь этот ли игрок ввел команду, ты проверяешь существует ли игрок с таким ником... В варианте Vamp1r'а, есть проверка на валидность игрока...
  17. Спорно... Но если тебе лично удобно, то почему нет?
  18. Flaker а не [мат] бы ты? Именно так, раздел помощи... Стоит в любом случае относиться с уважением к людям откликнувшимся на ваш вопрос... Меня взбесила конкретно фраза "ваше дело не умничать а дать внятный ответ(если вы конечно знаете ,что ответить)."... Так как все это не комерческий проект, следовательно любая помощь на этом форуме - жест доброй воли. Темболее стоит соблюдать правила этикета, особенно если ты в первые тут... И да, Сергей, я к тебе никаких претензий вобще не предъявлял, так что твое отношение к моему посту неоправдано и не имеет смысла...
  19. Все мы знаем давнего члена MTA комьюнити, Kenix'а... Да, да, это тот парень, с голубым ником, который помогает освоить азы скриптинга многим начинающим, да и не только начинающим... да и не только азы..) Вобщем, сегодня у нашего коллеги, товарища, и просто хорошего человека, день рождения! С чем я его и поздравляю! Желаю тебе продолжать в том же духе, с той же уверенностью в себе! Ты многого достиг, а достигнешь еще большего... Я в этом уверен) Желаю закончить Multi Game, выучить C/C++ на очень хорошем уровне, и стать, вскоре, юзером с ником красного цвета) Да и вобще, удачи в личной жизни тебе, и чтоб получалось все и сразу!
  20. Windows8 чтоль? Обнови MTA до самой последней
  21. Боюсь в твоем коде вобще никакой логики нет( Почитай на WIKI о addScoreboardColumn и setAccountData... Аргументы посмотри и подумай, что ты туда вобще передаешь?
  22. Значит плохо пробывал( Насчет невидимости маркера: Функция createMarker имеет аргумент visibleTo, так же есть функция SetElementVisibleTo Насчет активации только при наличии определенного скина: Допустим в эвенте onMarkerHit, мы проверяем скин попавшего игрока getElementModel и если он совпадает с заданным нами, тогда активировать что то... Алгоритм примерно такой...
×
×
  • Create New...