Технический форум Как сделать проверку на количество определенных игроков в определенной точки?
fastfood 24.06.2017 в 16:55

Пользователь

Репутация: 0 бал.

Замечания: 0 бал.

Как сделать проверку на количество определенных игроков в определенной точки?

Есть вариант, сделать подбор всех игроков на сервере, потом выделить из них игроков с нужной элемент датой и для каждого сделать проверку на расстояние от определенной точки. Можно как-то попроще сделать?
larnet7 24.06.2017 в 18:08

Проверенный

Репутация: 229 бал.

Замечания: 0 бал.

fastfood, проще? Что проще? Тут уже ничего проще не сделаешь. Если нужны игроки с определённой датой возле определённой точки, то так и делаешь. Сначала перебор по всем игрокам и проверка на дату и расстояние
fastfood 25.06.2017 в 20:14

Пользователь

Репутация: 0 бал.

Замечания: 0 бал.

larnet7, ну ок, спасибо.
Cat 06.07.2017 в 20:51

Проверенный

Репутация: 193 бал.

Замечания: 0 бал.

fastfood, а как на счет

local x2, y2, z2 = 0, 0, 0 -- координаты нужной точки
local distance = 10 -- максимальное расстояние до точки, при котором игрок будет числиться у точки
for _, p in ipairs(getElementsByType("player") do
local x1, y1, z1 = getElementPosition(p)
if getDistanceBetweenPoints3D (x1, y1, z1, x2, y2, z2) <= distance then
--выполнение кода при нахождении игрока у точки
end
end

Таким образом, скрипт пробежится по всем игрокам и найдет тех, кто находится у точки
Vigrit 04.01.2019 в 16:43

Пользователь

Репутация: 0 бал.

Замечания: 0 бал.

local x2, y2, z2 = 1479.5, -1786, 14.48 -- координаты нужной точки

local distance = 10 -- максимальное расстояние до точки, при котором игрок будет числиться у точки

for _, p in ipairs(getElementsByType("player") do
local x1, y1, z1 = getElementPosition(p)
if getDistanceBetweenPoints3D (x1, y1, z1, x2, y2, z2) <= distance then
if (getElementInterior(source) == 0)
outputChatBox("Capitol of San Andreas, Los-Santos", getRootElement(), 255, 255, 0)
local encMarker = createMarker(x2, y2, z2, 'cylinder', 1.0, 106, 106, 106, 60)

end
end
end

Ничего не выходит.
Цель: Создать маркер когда игрок будет подходить к точке где он должен в итоге находится.
Проверка на мир(interior) тоже нужна. Маркеры должны находится в разных мирах. Именно для этой идеи ищу реализацию.
decided96 05.01.2019 в 16:16

Проверенный

Репутация: 75 бал.

Замечания: 0 бал.

Vigrit, Сделай, как ты сам делал и работало:) ну а маркеры то уж ничё сложного, эксперементирцй, только сделай копию файла скрипта
Vigrit 06.01.2019 в 10:40

Пользователь

Репутация: 0 бал.

Замечания: 0 бал.

decided96, Понимаешь хочется внести реалистичности в систему. Чтобы маркер создавался когда подходишь к нему. Когда этот код вставляю не работает в скрипте не одна функция. Я к чему, этот код вообще правильный?
jamrock 06.01.2019 в 20:06

Проверенный

Репутация: 4 бал.

Замечания: 0 бал.

Vigrit, в консоль игры напиши debugscript 3, потом запускай ресурс, в котором у тебя вставлен этот кусок кода, если где-то ошибка будет - тебе в дебаге напишет, эту ошибку сюда скинь

Vigrit,
if (getElementInterior(source) == 0)

добавь then, чтобы получилось так:
if (getElementInterior(source) == 0) then
Vigrit 16.01.2019 в 02:00

Пользователь

Репутация: 0 бал.

Замечания: 0 бал.

В общем, пока я снова нашёл эту тему. Которая как оказалось в итоге была у меня в закладках. Я перерыл кучу способов реализации задумки. Сделал ещё один маркер побольше, выкрутил alpha на 0 и через стандартный onMarkerHit, в теле его функции создал нужный маркер.
Новая проблема: Теперь второй маркер не телепортирует.
Подозреваю что переменную с маркером надо как-то передать из одной функции в другую. Хотя бред наверное.

А где создаётся этот файл с багом?

И ещё интересует где искать настройки(функции) которые запрещают двигаться игроку? Например, когда начинается гонка и включается отсчет .

Честно сказать хотелось до всего дойти самому, но перелапатив весь MTA Viki и ресурсы в самой MTA ничего подобного не нашёл.
Войдие или зарегистрируйтесь что бы написать сообщение