Welcome to Сообщество игровых серверов NETZONA.ORG

Присоединяйтесь к нам сейчас, чтобы получить доступ ко всем нашим функциям. Зарегистрировавшись и войдя в систему, вы сможете создавать темы, публиковать ответы в существующих темах, давать репутацию другим участникам, получать собственный личный мессенджер и многое другое. Это также быстро и совершенно бесплатно, так чего же вы ждете?
  • Приветствуем на сайте, Гость! Обязательно ознакомьтесь с условиями и правилами Публичной оферты Проекта 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()

Жду знатоков в этом деле ;)
 

RaCc0oN

Пользователь
Проверенный
Регистрация
10 Мар 2022
Сообщения
87
Реакции
0
Баллы
16
Пол
Мужской
Семейное положение
Не выбрано
Род занятий
Java dev
Сделай
If ply:GetPos == (Координаты Х, координаты Z, координаты Y)then
ply:Kill()
end

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

А, ну и естесна хук Think
 

Gaurussel

Пользователь
Регистрация
10 Янв 2019
Сообщения
110
Реакции
3
Баллы
35
Пол
Мужской
Сверху приведён одна из возможностей реализации того, что ты хочешь. Но если точек будет больше одной то, создавать множество условий - это не правильный выход.
Так же хочу дополнить, что если игрок сам сможет добраться до этой позиции, то велика вероятность, что не попадёт на неё, поэтому лучше использовать какой либо из циклов по поиску в определённом радиусе (ents.FindInBox, ents.FindInSphere).
Реализацию сие действа я давать не буду, иначе как ты будешь развиваться в кодинге?
 

Hikka

Модератор
Команда форума
Регистрация
29 Сен 2016
Сообщения
556
Реакции
1
Баллы
60
Возраст
30
Пол
Сверху приведён одна из возможностей реализации того, что ты хочешь. Но если точек будет больше одной то, создавать множество условий - это не правильный выход.
Так же хочу дополнить, что если игрок сам сможет добраться до этой позиции, то велика вероятность, что не попадёт на неё, поэтому лучше использовать какой либо из циклов по поиску в определённом радиусе (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
 
Назад
Сверху Снизу