• Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта NetZONA.org: https://netzona.org/help/public-offer/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами использования Ваших файлов cookie на Проекте NetZONA.org: https://netzona.org/help/cookies/

  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с Политикой конфиденциальности Проекта NetZONA.org: https://netzona.org/pages/privacy-policy/

  • Ответы на основные вопросы: https://netzona.org/threads/populjarnye-voprosy-i-otvety-na-nix.6122/

  • Приветствуем на сайте, Гость! Приобрести (купить) Информационную услугу (в том числе группу "Проверенный") на Проекте NetZONA.org: https://netzona.org/account/upgrades

[GLUA] Выполнение функции при перемещении на конкретную позицию

SylvanaTasty

Пользователь
Регистрация
5 Ноя 2019
Сообщения
7
Реакции
0
Баллы
14
Доброго времени суток.
Прошу помочь с мини-системой, когда при перемещении игрока на какую либо точку(позицию), выполнялась функция. Например - ply:Kill()

Жду знатоков в этом деле ;)
 
Сделай
If ply:GetPos == (Координаты Х, координаты Z, координаты Y)then
ply:Kill()
end

Надеюсь, что не перепутал Z и Y, а то точный порядок не помню
Сообщение автоматически объединено:

А, ну и естесна хук Think
 
Сверху приведён одна из возможностей реализации того, что ты хочешь. Но если точек будет больше одной то, создавать множество условий - это не правильный выход.
Так же хочу дополнить, что если игрок сам сможет добраться до этой позиции, то велика вероятность, что не попадёт на неё, поэтому лучше использовать какой либо из циклов по поиску в определённом радиусе (ents.FindInBox, ents.FindInSphere).
Реализацию сие действа я давать не буду, иначе как ты будешь развиваться в кодинге?
 
Сверху приведён одна из возможностей реализации того, что ты хочешь. Но если точек будет больше одной то, создавать множество условий - это не правильный выход.
Так же хочу дополнить, что если игрок сам сможет добраться до этой позиции, то велика вероятность, что не попадёт на неё, поэтому лучше использовать какой либо из циклов по поиску в определённом радиусе (ents.FindInBox, ents.FindInSphere).
Реализацию сие действа я давать не буду, иначе как ты будешь развиваться в кодинге?
Лучше DistToSqr, потому что эти две функции довольно прожорливые, но если не вызывать внутри Think/Tick, то сойдут и эти две функции.
DistToSqr как оптимизация выступает.

Lua:
if (client:GetPos() == Vector(0, 0, 0)) then
    client:Kill()
end

// 2 вариант через DistToSqr
if (client:GetPos():DistToSqr(Vector(0, 0, 0)) <= 128 * 128) then // 128 units
    client:Kill()
end
 
Главная Регистрация
Назад
Сверху