Модератор форума: GUNNER161, Panikaha |
Форум » РЕДАКТОР - ArmA 3 » Вопрос - ответ » Тема для небольших вопросов по Arma 3 (взаимопомощь в режиме вопрос-ответ) |
Тема для небольших вопросов по Arma 3 |
› Воскресенье
› 26.07.2015
› 20:41
› Сообщение #
Что-то клинит меня.. не могу совместить команды nearestObjects и allMissionObjects.
Задача такая: нужно при выходе игрока из зоны (1000м от маркера) удалить все объекты внутри зоны, созданные в редакторе или скриптом. allMissionObjects как раз создает такой массив, но по всей карте, nearestObjects считает объекты в указанной зоне, но все подряд. Как оптимальнее это проделать? Объекты самые разные: от предметов до людей Сообщение отредактировал andrucio - Воскресенье, 26.07.2015, 20:48
|
› Воскресенье
› 26.07.2015
› 20:51
› Сообщение #
попробуй так
_ms = nearestObjects [(ЦЕНТР), ["house"], 1000]; { if (_x in _ms) then { deleteVehicle _x }} forEach (allMissionObjects ""); или так, так пожалуй экономней. { if (_x distance (ЦЕНТР) < 1000) then { deleteVehicle _x }} forEach (allMissionObjects ""); |
› Воскресенье
› 26.07.2015
› 20:55
› Сообщение #
Slon, ага, тока что прикинул что-то подобное..
А если так: { if (_x in (getmarkerpos "mk1" nearObjects 1000)) then { deleteVehicle _x }} forEach (allMissionObjects "ALL"); то массив будет каждый цикл считаться? То есть, лучше его просчитать раньше? |
› Воскресенье
› 26.07.2015
› 20:59
› Сообщение #
|
› Воскресенье
› 26.07.2015
› 21:30
› Сообщение #
Да, все отлично. Маркеры при этом не удаляет, игрока тоже:)
Единственно, не киляет экипажи из техники, но у меня там пока одни цивилы, так что это не критично. Любопытно.. один после исчезновения машины ломанулся куда-то на восток, бежал за ним полкарты (создавался скриптом, один в группе - так что хз куда его понесло). Спасибо, как всегда! |
› Воскресенье
› 26.07.2015
› 22:53
› Сообщение #
_MarkerOne = createMarker ["MarkerOne",[3490.81,3614.26]];
подчёркивание _ в начале - означает что переменная локальная, в триггере это нельзя, просто убери и Размер сделай побольше, по умолчанию 1м https://community.bistudio.com/wiki/setMarkerSize |
› Понедельник
› 27.07.2015
› 18:28
› Сообщение #
Цитата Это часть Игрока Monstr = "NUL"; // переменная несёт Имя Чудовища if (Local Player) then { _as = [] Spawn { While {true} do { WaitUntil {Monstr == name Player}; // запоминаем где стоял Игрок, угол и прячем тело. _pos = getPos player; _dir = getDir Player; _Old = Player; _Old setPos ДАЛЕКО; //делаем Монстра _side = createCenter west; _groupThingPL = createGroup west; _ThingPL = _groupThingPL createUnit ["C_scientist_F", [0, 0, 0], [], 0, "FORM"]; _ThingPL setpos _pos; _ThingPL setdir _dir; SelectPlayer _ThingPL; // Воплощаемся в монстра _ThingPL addrating -20000; [_ThingPL] execvm "sposobnost\SPOSOBNOSTI.sqf"; [_ThingPL] execvm "sposobnost\godmodeSTART.sqf"; [_ThingPL] execvm "sposobnost\zrenie.sqf"; [_ThingPL] execvm "sposobnost\Conc.sqf"; [_ThingPL] execvm "sposobnost\netoryzieTMSQ.sqf"; [_ThingPL] execvm "sposobnost\netformaTMSQ.sqf"; [_ThingPL] execvm "sposobnost\zapretCAR.sqf"; // ожидаем сметри монстра WaitUntil {! alive _ThingPL}; Monstr = "NUL"; PublicVariable "Monstr"; // Объявление что Чудовеще Дед sleep 2; SelectPlayer _Old; // воплощаемся в Старое тело Player setpos Возврат на респ; }}}; это часть сервера sleep 3; Monstr = "NUL"; // переменная несёт Имя Чудовища if isserver then { _as = [] Spawn { While {true} do { _thing = allplayers select (floor random (count allplayers)); // Выбираем Чудовище Monstr = name _thing; PublicVariable "Monstr"; // Объявляем Его Имя WaitUntil {Monstr == "NUL"}; // Дожидаемся его смерти sleep 2; }}}; Но если клиент выйдет, скрипт то перестанет работать на его стороне? т.е. то, что я выделил чёрным, не сработает? Добавлено (27.07.2015, 18:28) |
› Понедельник
› 27.07.2015
› 19:05
› Сообщение #
если клиент Выйдет, сервер это не узнает. надо добавить контроль выхода.
https://community.bistudio.com/wiki/onPlayerDisconnected функу описать в Серверной части формат АА3 onPlayerDisconnected { if (Monstr == _name) then { // если вышедший игрок Чудовище, объявляем его мёртвым Monstr = "NUL"; PublicVariable "Monstr"; }; }; |
› Понедельник
› 27.07.2015
› 19:06
› Сообщение #
|
› Понедельник
› 27.07.2015
› 21:16
› Сообщение #
|
› Понедельник
› 27.07.2015
› 21:28
› Сообщение #
T-72Б, чтобы повторять один и тот же фрагмент несколько раз, вплоть до бесконечности.
|
› Понедельник
› 27.07.2015
› 21:39
› Сообщение #
Но быть может тогда на сервак всё повесить?
или нельзя? |
› Понедельник
› 27.07.2015
› 21:56
› Сообщение #
Игрок делает Чудовище и воплощается. - это На сервак не повесиш.
|
› Понедельник
› 27.07.2015
› 22:16
› Сообщение #
Касательно циклов)
Я знаю, зачем они нужны))) Я имел ввиду - зачем они нужны именно тут? |
› Понедельник
› 27.07.2015
› 22:27
› Сообщение #
тебе же не Один раз нужно воплощение получить.
Monstr = "NUL"; // переменная несёт Имя Чудовища if isserver then { _as = [] Spawn { While {true} do { // Начало Бесконечного Цикла _thing = allplayers select (floor random (count allplayers)); // Выбираем Чудовище Monstr = name _thing; PublicVariable "Monstr"; // Объявляем Его Имя WaitUntil {Monstr == "NUL"}; // Дожидаемся его смерти sleep 2; // ПОВТОРЯЕМ ВСЁ ЗАНОВО }}}; |
| |||
Чат сайта |