-
Posts
619 -
Joined
-
Last visited
Everything posted by Flaker
-
Ахах) Я когда вчера зашел на форум, увидел, что ты в онлайне, так и подумал, что уже отвечаешь наверно) Ну и решил тебя обогнать Ладно, по теме: 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 сек проверяешь, нажата ли кнопка если да, то выполняешь действие...
-
triggerClientEvent для одного человека через серверную часть
Flaker replied to eclipse909's topic in Скриптинг
Велкам) -
Так вот я не собираюсь использовать getElementsByType("colshape") и перебирать кол-шейпы... Мой алгоритм в совершенно другом заключается! Согласен, не стоит спорить... Так как мы друг друга, просто напросто, не понимаем...
-
Эммм... Я понял только %30 из написанного тобой... Ты не понял совсем, что я предлагаю сделать... Какие, мать его, таблицы ты собираешь перебирать? isElementWithinColShape вернет тебе true, если игрок в зоне! Все! Этого достаточно! Тоесть, в ином случае создавать не придется? Не говори гоп... Да и не вижу я оптимальности в твоем варианте(
-
Я просто стараюсь делать нормальные алгоритмы... Не стоит считать это безвыходной ситуацией? Рассказываю значит: Есть такая функция getElementsByType... С помощью нее и isElementWithinColShape, мы можем определить находится ли игрок в зоне... Это во-первых! Во вторых, если приблизится к тому варианту, который предпочитаете вы (То есть по заходу привязывать игрока к зоне)... Сделать это можно так: В эвенте OnColShapeHit заносить игрока в массив, привязанный к этой зоне... В эвенте onColShapeLeave убирать его из массива... В таком случае, вы сможете найти всех игроков, находящихся в зоне, пройдясь по массиву... Но такой вариант, имхо, менее удобен, так как имеет множество минусов, которые придется исправлять большим кол-вом кода...
-
isElementWithinColShape отлично работает! Я не понимаю зачем вобще проверять что то при переходе! Почитай то что я написал во стором посте, на мой взгляд, это наиболее универсальный алгоритм... И он должен отлично работать, естественно при правильном использовании!
-
https://wiki.multitheftauto.com/wiki/IsElementWithinColShape Vampir, нет, ну это п**дец какой-то) Конечно можно вручную проверять по координатам, но колшейпы могут быть не только квадратные! Они вобще многоугольниками могут быть или цилиндром, или даже сферой! Так что isElementWithinColShape для этого подойдет лучше! И вобще зачем каждый ключ массива в разнобой записывать, a не сразу при инициилизации? Разве так не удобнее?: local asocArray = { ["Key1"] = "val"; ["Key2"] = "val2"; }
-
Я так понял ты делаешь систему turf war'ов... Можно конечно с помощью костылей кой-каких выправить это дело... Но вобще, проще изменить логику... Зачем тебе вобще обнулять gangid... Ведь можно избежать этого, таким образом: 1) Игрок заходит в зону, ему присваивается id этой зоны (Учитываем, что все зоны есть в глобальном массиве) При выходе из этой зоны ничего не обнуляем! Вобще ничего не делаем! 2) При начале захвата, допустим по команде /turf, идет проверка на наличие игрока в захватываемой зоне... Если игрок присутсвует, то все ок, если нет, то все не ок... При таком алгоритме тебе не страшны траблы с колшейпами
-
Пунктуация - удел слабаков? Хех... А человек который это писал, в дебаг заглядывал? (/dbugscript 3) Вобщем, этот код в корне не верен! Его не исправить(
-
triggerClientEvent для одного человека через серверную часть
Flaker replied to eclipse909's topic in Скриптинг
Ну ладно, пусть работает) А вобще вот посмотри: -- 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 ) -
Если у тебя сразу оба обработчика стоят, то неудивительно, что 2 раза показывает сообщение? Или у тебя по 2 раза каждый? Или они вобще отдельно? И еще проверь meta.xml... У тебя там не по 2 раза объявлен серверный или клиентский .lua файл?
-
Ну помоему в коде отражена попытка проверки нахождения аккаунта в ACL группе Admin... Попытка не удачная, на сколько я вижу... Вобще у тебя слова с кодом не связаны...
-
ACL это файл, из которого MTA узнает может ли этот игрок или скрипт выполнять дейстие какое либо... Например открыть аминку и тд Скрипт надо добавить в группу Admin, чтоб у него были полные права.
-
С этим модом у всех проблем куча... Там фишка в следующем: (Не говорю, что проблема именно в этом, но все же) 1) Сервер должен иметь определенное название (в Readmy файле посмотри) 2) Надо добавить в ACL скрипты А вобще он зашифрован, так что ошибки исправить не получится...
-
Тут не все так просто... Во первых, если проверять просто соответсвует ли координата X заданой, то будет телепортировать все время (Ведь не может нормальный человек вобще не съезжать с координаты)... Первое что приходит в голову: сделать колизию расположеную вдоль дороги, и проверять наличие в ней игрока... Тут тоже есть свои минусы... Второй вариант, на мой взгляд более правильный: Есть заданая координата X, вдоль которой ехать может игрок, далее, задаем погрешность, допустим 5. В рендере (С ограничением в 400мс) проверяем если модуль разности координаты X заданой и координаты X игрока больше погрешности, значит игрок съехал с дороги...
-
triggerClientEvent для одного человека через серверную часть
Flaker replied to eclipse909's topic in Скриптинг
Твой вариант не совсем то, что ты хотел... Ты не проверяешь этот ли игрок ввел команду, ты проверяешь существует ли игрок с таким ником... В варианте Vamp1r'а, есть проверка на валидность игрока... -
Спорно... Но если тебе лично удобно, то почему нет?
-
Не запускается МТА, после обновления драйвера!
Flaker replied to Chechenec's topic in Помощь / Отчеты об ошибках
Flaker а не [мат] бы ты? Именно так, раздел помощи... Стоит в любом случае относиться с уважением к людям откликнувшимся на ваш вопрос... Меня взбесила конкретно фраза "ваше дело не умничать а дать внятный ответ(если вы конечно знаете ,что ответить)."... Так как все это не комерческий проект, следовательно любая помощь на этом форуме - жест доброй воли. Темболее стоит соблюдать правила этикета, особенно если ты в первые тут... И да, Сергей, я к тебе никаких претензий вобще не предъявлял, так что твое отношение к моему посту неоправдано и не имеет смысла... -
https://wiki.multitheftauto.com/wiki/SetCameraMatrix
-
Все мы знаем давнего члена MTA комьюнити, Kenix'а... Да, да, это тот парень, с голубым ником, который помогает освоить азы скриптинга многим начинающим, да и не только начинающим... да и не только азы..) Вобщем, сегодня у нашего коллеги, товарища, и просто хорошего человека, день рождения! С чем я его и поздравляю! Желаю тебе продолжать в том же духе, с той же уверенностью в себе! Ты многого достиг, а достигнешь еще большего... Я в этом уверен) Желаю закончить Multi Game, выучить C/C++ на очень хорошем уровне, и стать, вскоре, юзером с ником красного цвета) Да и вобще, удачи в личной жизни тебе, и чтоб получалось все и сразу!
-
Windows8 чтоль? Обнови MTA до самой последней
-
Боюсь в твоем коде вобще никакой логики нет( Почитай на WIKI о addScoreboardColumn и setAccountData... Аргументы посмотри и подумай, что ты туда вобще передаешь?
-
Значит плохо пробывал( Насчет невидимости маркера: Функция createMarker имеет аргумент visibleTo, так же есть функция SetElementVisibleTo Насчет активации только при наличии определенного скина: Допустим в эвенте onMarkerHit, мы проверяем скин попавшего игрока getElementModel и если он совпадает с заданным нами, тогда активировать что то... Алгоритм примерно такой...