Доброго времени суток! Поковырял форум, но не нашел ответа. В скриптах я не силён. Парни подскажите примером если не в тягость, как сделать респ врага в определённом месте на карте. Например при пересечении определённой зоны игроками, происходит респ вражеских юнитов. Так чтоб размер зоны и количество врагов можно было изменять и копировать в разных местах карты. Заранее спасибо. Главное чтобы враги появлялись только после активации зоны, дабы не загружать миссию.

Вопрос по респу врагов.

Лучший Ответ SteelRat , 23 May 2014 - 00:23
В таком виде получается следующее: Если зайти на триггер, боты начинают спавнится на маркерах "spawn1" и "spawn2" одновременно. Короче говоря срабатывают сразу две точки спавна. Как же сделать чтобы при активации триггера (например №1) боты респились на "spawn1", триггера (например №2) боты респились на "spawn2" и.е.д. И всё это в одном файле spawn.sqf.
/* Вызывать скрипт так nul = "spawn1" execVM "spawn.sqf"; Только для каждого тригера свой "spawn*" */ _spawnArea = _this; switch _spawnArea do { // Этих секций может быть сколько душе угодно, в рамках разумного case "spawn1": { // код для спавна на позиции "spawn1" }; case "spawn2": { // код для спавна на позиции "spawn2" }; };Перейти к сообщению

#1
OFFLINE
Отправлено 19 May 2014 - 20:55
#2
OFFLINE
Отправлено 20 May 2014 - 03:51
Если у вас локализация Армы на Идишь, ой, на русском языке, идёте в редакторе
Модули - Зоны
Далее выбираете тип модуля, и разбираетесь в параметрах, это решает широкий спектр задач относительно вашего вопроса.
#3
OFFLINE
Отправлено 20 May 2014 - 07:11
Самый легкий пример
(Создание группы)
_group1 = creategroup west;
(Юниты)
"US_Soldier_EP1" createUnit [getPos Spawn, _group1,""];
"US_Soldier_EP1" createUnit [getPos Spawn, _group1,""];
west - сторона конфликта (west - США, east - CSAT, GUER - независимые, CIV - гражданские)
Spawn - название маркера на карте, где будет создан юнит
US_Soldier_EP1 - тип юнита, брать или в cfgVehicle
_group1 - название группы (пишется в начале)
Сообщение отредактировал vlad333000: 20 May 2014 - 07:40
#4
OFFLINE
Отправлено 20 May 2014 - 08:19
Самый легкий пример
(Создание группы)
_group1 = creategroup west;
(Юниты)
"US_Soldier_EP1" createUnit [getPos Spawn, _group1,""];
"US_Soldier_EP1" createUnit [getPos Spawn, _group1,""];
west - сторона конфликта (west - США, east - CSAT, GUER - независимые, CIV - гражданские)
Spawn - название маркера на карте, где будет создан юнит
US_Soldier_EP1 - тип юнита, брать или в cfgVehicle
_group1 - название группы (пишется в начале)
Спасибо за объяснение. А как этот скрипт заставить активироваться при пересечении определённой зоны игроком? Я правильно понял, чтобы размножить точки "Spawn" в нужных мне местах на карте, я должен расширить скрипт, меняя название точек и группы.
Например так:
4 человека + Техника в Точке №1 в месте №1 на карте
_group1 = creategroup east;
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_APC_Tracked_02_cannon_F" createUnit [getPos Spawn, _group1,""];
..........Далее 2 человека в Точке №2 в месте №2 на карте
_group2 = creategroup east;
"O_SoldierU_SL_F" createUnit [getPos Spawn2, _group2,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn2, _group2,""];
ну и.т.д.
#5
OFFLINE
Отправлено 20 May 2014 - 08:32
Да все правильно, но _group1 можно не менять, если находится в разных скриптах т к это приватная переменная и она исчезнек как только скрипт будет выполнен, а спавн, да, ставишь второй маркер spawn2 или как угодно называй и так далееСпасибо за объяснение. А как этот скрипт заставить активироваться при пересечении определённой зоны игроком? Я правильно понял, чтобы размножить точки "Spawn" в нужных мне местах на карте, я должен расширить скрипт, меняя название точек и группы.
Самый легкий пример
(Создание группы)
_group1 = creategroup west;
(Юниты)
"US_Soldier_EP1" createUnit [getPos Spawn, _group1,""];
"US_Soldier_EP1" createUnit [getPos Spawn, _group1,""];
west - сторона конфликта (west - США, east - CSAT, GUER - независимые, CIV - гражданские)
Spawn - название маркера на карте, где будет создан юнит
US_Soldier_EP1 - тип юнита, брать или в cfgVehicle
_group1 - название группы (пишется в начале)
Например так:
4 человека + Техника в Точке №1 в месте №1 на карте
_group1 = creategroup east;
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn1, _group1,""];
"O_APC_Tracked_02_cannon_F" createUnit [getPos Spawn, _group1,""];
..........Далее 2 человека в Точке №2 в месте №2 на карте
_group2 = creategroup east;
"O_SoldierU_SL_F" createUnit [getPos Spawn2, _group2,""];
"O_SoldierU_SL_F" createUnit [getPos Spawn2, _group2,""];
ну и.т.д.
Нужно воспользоватся командой , а потом при помощи команды проверить, есть ли юнит игрока в списке (пишется в тригере)
Сообщение отредактировал vlad333000: 20 May 2014 - 08:52
#6
OFFLINE
Отправлено 20 May 2014 - 18:11
Не хочу показаться назойливым, но повторюсь, BISы реальзовали эту тему в модулях, без всякой необходимости писать код.
#7
OFFLINE
Отправлено 20 May 2014 - 18:48
Не хочу показаться назойливым, но повторюсь, BISы реальзовали эту тему в модулях, без всякой необходимости писать код.
Вопрос: где? Может у него какое то магическое название? Я перебрал по очередно все модули и из всех нашел только спавн базы\кпп и точку возрождения для умерших
игроков\ботов. Ему нужно одноразовое появления мяса при срабатывании триггера, что бы не нагружать компьютер или что бы их нельзя было зарание убить, а для этого нет ничего лучше скриптов, даже бисы ими пользуются
Сообщение отредактировал vlad333000: 20 May 2014 - 18:52
#8
OFFLINE
Отправлено 20 May 2014 - 20:21
Вопрос: где? Может у него какое то магическое название? Я перебрал по очередно все модули и из всех нашел только спавн базы\кпп
Вот это
базы
и попробуйте, это тупо отспавнит группу там где поставите модуль.
Ну и плюс, на фото не попало, по периметру зоны патруль.
Сообщение отредактировал SteelRat: 20 May 2014 - 20:31
#9
OFFLINE
Отправлено 21 May 2014 - 08:25
Вопрос: где? Может у него какое то магическое название? Я перебрал по очередно все модули и из всех нашел только спавн базы\кпп
Вот этои попробуйте, это тупо отспавнит группу там где поставите модуль.базы
Ну и плюс, на фото не попало, по периметру зоны патруль.
Так, а теперь разьясню отличие этого способа от способа нужного автору
1. Случайность
2. Строго ограниченые войска (Хантер, да обычные пехотинци с ПТ)
3. Спавн в начале миссии
4. Крайне очень сложный способ изменить им снаряжение и отдавать приказы
5. Одноразовость
Автору нужно
1. Точность в месте и кол-ве спавна
2. Неограниченость в войсках для создание определенных отрядов (Хоть самолет и лодку посреди леса на дереве)
3. Спавн не в начале миссии, а в момент срабатывания триггера
4. + скорее всего, возможность легко поменять снаряжение и отдавать приказы
5. Спавн написанный на языке скриптов можно использовать многократно пока у ебя комп не сгорит
Сообщение отредактировал vlad333000: 21 May 2014 - 08:44
#10
OFFLINE
Отправлено 21 May 2014 - 17:50
Так, а теперь разьясню отличие этого способа от способа нужного автору 1. Случайность 2. Строго ограниченые войска (Хантер, да обычные пехотинци с ПТ) 3. Спавн в начале миссии 4. Крайне очень сложный способ изменить им снаряжение и отдавать приказы 5. Одноразовость Автору нужно 1. Точность в месте и кол-ве спавна 2. Неограниченость в войсках для создание определенных отрядов (Хоть самолет и лодку посреди леса на дереве) 3. Спавн не в начале миссии, а в момент срабатывания триггера 4. + скорее всего, возможность легко поменять снаряжение и отдавать приказы 5. Спавн написанный на языке скриптов можно использовать многократно пока у ебя комп не сгорит
Сударь, не хочу Вас обидеть, Вы просто не понимаете как эти модули устроены, и как они работают. Короче забейте.
#11
OFFLINE
Отправлено 21 May 2014 - 17:56
4. Крайне очень сложный способ изменить им снаряжение и отдавать приказы
Это вам то, кто на короткой ноге с кодом, если я правильно понял.
#12
OFFLINE
Отправлено 23 May 2014 - 00:04
Спасибо за ответы парни! Я нарыл в инете замечательные уроки по этой теме:
1.
2.
3.
4.
5.
Сделал на их основе скрипт. Всё работает хорошо, но один вопрос я так и не решил - Как в этом скрипте сделать возможность размножать триггеры и точки спавна по всему острову? Сделать так, чтобы весь скрипт находился в одном файле .sqf, а не плодить в папке с миссией кучу файлов .sqf с похожими скриптами.
Вот пример моего скрипта (в игре в поле активации триггера прописал - nul = execVM "spawn.sqf"; Активация на Синих.):
#13
OFFLINE
Отправлено 23 May 2014 - 00:23 Лучший Ответ
В таком виде получается следующее: Если зайти на триггер, боты начинают спавнится на маркерах "spawn1" и "spawn2" одновременно. Короче говоря срабатывают сразу две точки спавна. Как же сделать чтобы при активации триггера (например №1) боты респились на "spawn1", триггера (например №2) боты респились на "spawn2" и.е.д. И всё это в одном файле spawn.sqf.
/* Вызывать скрипт так nul = "spawn1" execVM "spawn.sqf"; Только для каждого тригера свой "spawn*" */ _spawnArea = _this; switch _spawnArea do { // Этих секций может быть сколько душе угодно, в рамках разумного case "spawn1": { // код для спавна на позиции "spawn1" }; case "spawn2": { // код для спавна на позиции "spawn2" }; };
#14
OFFLINE
Отправлено 23 May 2014 - 23:22
В таком виде получается следующее: Если зайти на триггер, боты начинают спавнится на маркерах "spawn1" и "spawn2" одновременно. Короче говоря срабатывают сразу две точки спавна. Как же сделать чтобы при активации триггера (например №1) боты респились на "spawn1", триггера (например №2) боты респились на "spawn2" и.е.д. И всё это в одном файле spawn.sqf./* Вызывать скрипт так nul = "spawn1" execVM "spawn.sqf"; Только для каждого тригера свой "spawn*" */ _spawnArea = _this; switch _spawnArea do { // Этих секций может быть сколько душе угодно, в рамках разумного case "spawn1": { // код для спавна на позиции "spawn1" }; case "spawn2": { // код для спавна на позиции "spawn2" }; };
Спасибо огромное. Всё получилось как я хотел. Этот скрипт отлично работает с самолётами, но с группами почему то не пашет.
Вот пример РАБОЧЕГО скрипта с группой:
В поле активации триггера пишу - nul = execVM "DEN_ARMspawn.sqf";
Он работает замечательно в таком виде!
А вот в таком виде уже не срабатывает.
Сообщение отредактировал Disab: 23 May 2014 - 23:23
#15
OFFLINE
Отправлено 24 May 2014 - 00:03
Не могу понять почему не срабатывает? Чего я не так прописываю?
Дружище есть прекрасный способ выкладывать код, вот он)
#16
OFFLINE
Отправлено 24 May 2014 - 00:18
Для начала, вот это, напишите один раз, в самом начале вашего файла, этого будет вполне достаточно
// Если ты не сервер, обломайся) if !(isServer) exitWith {};
#17
OFFLINE
Отправлено 24 May 2014 - 00:20
// Если ты не сервер, обломайся) - это что означает?
#18
OFFLINE
Отправлено 24 May 2014 - 00:23
Интересная хрень но в этой строке
_mygroup = [getMarkerPos "ARMsp1", EAST, (configFile >> "CfgGroups" >> "EAST" >> "OPF_F" >> "Mechanized" >> "OIA_MechInfSquad")] call BIS_fnc_spawnGroup
не помешали бы точка с запятой в конце
_mygroup = [getMarkerPos "ARMsp1", EAST, (configFile >> "CfgGroups" >> "EAST" >> "OPF_F" >> "Mechanized" >> "OIA_MechInfSquad")] call BIS_fnc_spawnGroup;
#19
OFFLINE
Отправлено 24 May 2014 - 00:24
А слона то я и не заметил. МоЦк себе весь сломал пока искал причину. Спасибо тебе большое. Заработал скрипт.
Подскажи кстате что означают строчки -
if !(isServer) exitWith {};
if (isServer) then {
_crew1 = [];
Сообщение отредактировал Disab: 24 May 2014 - 00:32
#20
OFFLINE
Отправлено 24 May 2014 - 00:29
if !(isServer) exitWith {};
Это выражение именно и значит, если комп который вызывает этот скрипт не сервер, код исполнятся небудет.
Именно такую проверку вы и делаете у себя, много лишних раз), только у вас
if (isServer) then {};
Сообщение отредактировал SteelRat: 24 May 2014 - 00:31