Vincen 3 772 Жалоба Опубликовано 12 мая, 2019 (изменено) Вставлять в init.sqf. Скрипт сначала рисует границы карты в соответствии с ее размерами, Потом вешает на игроков цикл, который проверяет, вышел ли игрок за границы карты. На воздушную технику не отрабатывает. Вместо setDamage можно использовать закомментированную строку: //vehicle player call BIS_fnc_neutralizeUnit; Функция убивает юнита с помощью имитации какого то события (подрыв мины, пво ракета и тп.) if (isDedicated) then { _markwest = createMarker ["westline", [-250,worldSize/2]]; _markwest setMarkerShape "RECTANGLE"; _markwest setMarkerBrush "FDiagonal"; _markwest setMarkerSize [worldSize/2,250]; _markwest setMarkerColor "ColorRed"; _markwest setMarkerDir 90; _markeast = createMarker ["eastline", [worldSize+250,worldSize/2]]; _markeast setMarkerShape "RECTANGLE"; _markeast setMarkerBrush "FDiagonal"; _markeast setMarkerSize [worldSize/2,250]; _markeast setMarkerColor "ColorRed"; _markeast setMarkerDir 90; _marknorth = createMarker ["northline", [worldSize/2,worldSize+250]]; _marknorth setMarkerShape "RECTANGLE"; _marknorth setMarkerBrush "FDiagonal"; _marknorth setMarkerSize [worldSize/2+500,250]; _marknorth setMarkerColor "ColorRed"; _marknorth setMarkerDir 180; _marksouth = createMarker ["southline", [worldSize/2,-250]]; _marksouth setMarkerShape "RECTANGLE"; _marksouth setMarkerBrush "FDiagonal"; _marksouth setMarkerSize [worldSize/2+500,250]; _marksouth setMarkerColor "ColorRed"; }; if (!isDedicated) then { [] spawn { private _bt = {[format["<t size='1' color='#ff0000'>%1</t>",_this], -1,-1,2,0] spawn bis_fnc_dynamicText;}; private _time = 0; while {alive player} do { if (((vehicle player inArea "southline")||(vehicle player inArea "westline") ||(vehicle player inArea "eastline") || (vehicle player inArea "northline")) && {vehicle player isKindOf "Land"}) then { format ["Вы в опасной зоне! До уничтожения %1 сек.", (10-_time)] call _bt; _time = _time + 1; } else { _time = 0; }; if (_time > 10) then { "Пока-пока!" call _bt; //vehicle player call BIS_fnc_neutralizeUnit; vehicle player setdamage 1; }; sleep 1; }; }; }; Изменено 29 мая, 2019 пользователем Vincen 11 GonzoPunkass, Exorcist, Kostize и 8 других отреагировали на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 16 мая, 2019 Чуть подправил. Вынес цикл в отдельный поток. А то если не в конец инита вставить, все что будет после него, не выполнится, пока игрок не умрет, само собой) Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 19 мая, 2019 Поправил createMarkerLocal на createMarker и setMarkerShapeLocal на setMarkerShape Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
asys 1 249 Жалоба Опубликовано 19 мая, 2019 (изменено) А что происходит с тем кто пересек черту? Он тут же падает мертвый на месте? Или есть отсрочка? Возможно ли в этом скрипте сделать смерть от взрыва? Например я в условностях указываю так "... за обозначенными пределами находятся недеактивированные минные поля с предыдущих войн. Настоятельно не рекомендуется пересекать линии разграничения. Даже в случае крайней необходимости вы будете действовать на свой страх и риск ..." ну и если пех заступил то громко взрывается чтобы другим было наглядно понятно. Изменено 19 мая, 2019 пользователем asys Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[BE] Zwierdik 3 204 Жалоба Опубликовано 19 мая, 2019 3 минуты назад, asys сказал: А что происходит с тем кто пересек черту? Он тут же падает мертвый на месте? Или есть отсрочка? Возможно ли в этом скрипте сделать смерть от взрыва? Например я в условностях указываю так "... за обозначенными пределами находятся недеактивированные минные поля с предыдущих войн. Настоятельно не рекомендуется пересекать линии разграничения. Даже в случае крайней необходимости вы будете действовать на свой страх и риск ..." ну и если пех заступил то громко взрывается чтобы другим было наглядно понятно. Цитата Вместо setDamage можно использовать закомментированную строку: //vehicle player call BIS_fnc_neutralizeUnit; Функция убивает юнита с помощью имитации какого то события (подрыв мины, пво ракета и тп.) https://community.bistudio.com/wiki/BIS_fnc_neutralizeUnit 1 asys отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 19 мая, 2019 @asys Таймер на 10 секунд (можно выставлять столько, сколько нужно). Игрок видит, сколько осталось до того момента, как он погибнет. 2 минуты назад, asys сказал: Возможно ли в этом скрипте сделать смерть от взрыва? => В 12.05.2019 в 15:48, Vincen сказал: Вместо setDamage можно использовать закомментированную строку: //vehicle player call BIS_fnc_neutralizeUnit; Функция убивает юнита с помощью имитации какого то события (подрыв мины, пво ракета и тп.) Для каждого вида своя смерть. В вертолет летят ракеты ПВО, пехота наступает на мину. 3 asys, Zwierdik и Ocelot отреагировали на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[BE] First 611 Жалоба Опубликовано 21 мая, 2019 @Vincen Для удобства в начало можно выставить конфигуратор времени, да бы не менять постоянно 2-3 строчки со временем. В 12.05.2019 в 15:48, Vincen сказал: format ["Вы в опасной зоне! До уничтожения %1 сек.", (10-_time)] call _bt; _time = _time + 1; } else { _time = 0; }; if (_time > 10) then 10 - time заменить на переменную, так же использовать ее в time > 10 и т.п. Хоть сейчас я и указал где менять, но с одной стороны дело секундное, а упрощает как картоделу-новичку работу, так и проверяльщикам этих миссий. Мелочь, а приятно обеим сторонам. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 22 мая, 2019 14 часов назад, First сказал: @Vincen Для удобства в начало можно выставить конфигуратор времени, да бы не менять постоянно 2-3 строчки со временем. 10 - time заменить на переменную, так же использовать ее в time > 10 и т.п. Хоть сейчас я и указал где менять, но с одной стороны дело секундное, а упрощает как картоделу-новичку работу, так и проверяльщикам этих миссий. Мелочь, а приятно обеим сторонам. Да, я тоже об этом думал. Сделаю на неделе Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
[KND] Liquid 1 087 Жалоба Опубликовано 23 мая, 2019 Возможно я ошибаюсь, но по-моему init.sqf отрабатывает один раз при старте миссии и не поддерживает JIP. https://community.bistudio.com/wiki/Initialization_Order Соответственно, игрок вошедший после старта на брифинг не получит цикл подрыва. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kato 2 491 Жалоба Опубликовано 23 мая, 2019 (изменено) 15 минут назад, Liquid сказал: Возможно я ошибаюсь, но по-моему init.sqf отрабатывает один раз при старте миссии и не поддерживает JIP. https://community.bistudio.com/wiki/Initialization_Order Соответственно, игрок вошедший после старта на брифинг не получит цикл подрыва. А брифинг он получает? Или тоже проблема возникает? И вообще, согласно твоей ссылке JIP там есть. Мы ведь всё-таки не в Single Player Only. Изменено 23 мая, 2019 пользователем Kato Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 23 мая, 2019 28 минут назад, Liquid сказал: init.sqf отрабатывает один раз Для сервера да. Для игроков - как @Kato сказал Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 25 мая, 2019 @Sharif Эту часть кода можно использовать и для тех маркеров, которые были проставлены вручную в редакторе: fnc_unitobserver = { if (!isDedicated) then { private _bt = {[format["<t size='1' color='#ff0000'>%1</t>",_this], -1,-1,2,0] spawn bis_fnc_dynamicText;}; private _time = 0; while {alive player} do { if (((vehicle player inArea "southline")||(vehicle player inArea "westline") ||(vehicle player inArea "eastline") || (vehicle player inArea "northline")) && {vehicle player isKindOf "Land"}) then { format ["Вы в опасной зоне! До уничтожения %1 сек.", (10-_time)] call _bt; _time = _time + 1; } else { _time = 0; }; if (_time > 10) then { "Пока-пока!" call _bt; //vehicle player call BIS_fnc_neutralizeUnit; vehicle player setdamage 1; }; sleep 1; }; }; }; [] spawn fnc_unitobserver; Нужно обратить внимание на строку с условием: if (((vehicle player inArea "southline")||(vehicle player inArea "westline") ||(vehicle player inArea "eastline") || (vehicle player inArea "northline")) && {vehicle player isKindOf "Land"}) Здесь можно заметить перечисление маркеров, находясь в которых, игрок погибнет. Например, один из маркеров: (vehicle player inArea "southline") Соответственно, такие условия можно увеличивать/уменьшать по кол-ву, менять название маркеров в кавычках. 1 Sharif отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bogdan Spivak 297 Жалоба Опубликовано 29 мая, 2019 Что надо менять чтобы только игроки синей стороны не могли пересекать маркер? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 29 мая, 2019 @Bogdan Spivak Меняешь с В 12.05.2019 в 15:48, Vincen сказал: if (!isDedicated) then { на В 12.05.2019 в 15:48, Vincen сказал: if (!isDedicated && side player == west) then { 1 Bogdan Spivak отреагировал на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bogdan Spivak 297 Жалоба Опубликовано 29 мая, 2019 @Vincen Эту строку тоже надо менять: В 25.05.2019 в 15:04, Vincen сказал: while {alive player} do { на while {side player == west} do { Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kato 2 491 Жалоба Опубликовано 29 мая, 2019 1 минуту назад, Bogdan Spivak сказал: @Vincen Эту строку тоже надо менять: на while {side player == west} do { не надо Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bogdan Spivak 297 Жалоба Опубликовано 29 мая, 2019 @Kato У меня без этого зеленые тоже умирают Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 29 мая, 2019 3 минуты назад, Bogdan Spivak сказал: @Kato У меня без этого зеленые тоже умирают Скинь полный код свой Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bogdan Spivak 297 Жалоба Опубликовано 29 мая, 2019 @Vincen Спойлер fnc_unitobserver = { if (!isDedicated && side player == west) then { private _bt = {[format["<t size='1' color='#ff0000'>%1</t>",_this], -1,-1,2,0] spawn bis_fnc_dynamicText;}; private _time = 0; while {side player == west} do { if (((vehicle player inArea "southline")||(vehicle player inArea "westline") ||(vehicle player inArea "eastline") || (vehicle player inArea "northline")) && {vehicle player isKindOf "Land"}) then { format ["Вы в опасной зоне! До уничтожения %1 сек.", (10-_time)] call _bt; _time = _time + 1; } else { _time = 0; }; if (_time > 10) then { "Пока-пока!" call _bt; //vehicle player call BIS_fnc_neutralizeUnit; vehicle player setdamage 1; }; sleep 1; }; }; }; [] spawn fnc_unitobserver; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Vincen 3 772 Жалоба Опубликовано 29 мая, 2019 1 час назад, Bogdan Spivak сказал: @Vincen Показать контент fnc_unitobserver = { if (!isDedicated && side player == west) then { private _bt = {[format["<t size='1' color='#ff0000'>%1</t>",_this], -1,-1,2,0] spawn bis_fnc_dynamicText;}; private _time = 0; while {side player == west} do { if (((vehicle player inArea "southline")||(vehicle player inArea "westline") ||(vehicle player inArea "eastline") || (vehicle player inArea "northline")) && {vehicle player isKindOf "Land"}) then { format ["Вы в опасной зоне! До уничтожения %1 сек.", (10-_time)] call _bt; _time = _time + 1; } else { _time = 0; }; if (_time > 10) then { "Пока-пока!" call _bt; //vehicle player call BIS_fnc_neutralizeUnit; vehicle player setdamage 1; }; sleep 1; }; }; }; [] spawn fnc_unitobserver; Давай вот так попробуем: if (!isDedicated && side player == west) then { [] spawn { private _bt = {[format["<t size='1' color='#ff0000'>%1</t>",_this], -1,-1,2,0] spawn bis_fnc_dynamicText;}; private _time = 0; while {alive player} do { if (((vehicle player inArea "southline")||(vehicle player inArea "westline") ||(vehicle player inArea "eastline") || (vehicle player inArea "northline")) && {vehicle player isKindOf "Land"}) then { format ["Вы в опасной зоне! До уничтожения %1 сек.", (10-_time)] call _bt; _time = _time + 1; } else { _time = 0; }; if (_time > 10) then { "Пока-пока!" call _bt; //vehicle player call BIS_fnc_neutralizeUnit; vehicle player setdamage 1; }; sleep 1; }; }; }; Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bogdan Spivak 297 Жалоба Опубликовано 29 мая, 2019 @Vincen никто не умирает Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kato 2 491 Жалоба Опубликовано 29 мая, 2019 23 минуты назад, Bogdan Spivak сказал: @Vincen никто не умирает Может зон-маркеров нет, которые перечислены? Или ты не в той зоне проверяешь? Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bogdan Spivak 297 Жалоба Опубликовано 29 мая, 2019 У меня просто все перестало работать 1 1 Tr1ble и Kato отреагировали на это Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Kato 2 491 Жалоба Опубликовано 29 мая, 2019 34 минуты назад, Bogdan Spivak сказал: У меня просто все перестало работать Может ты удалил верхнюю часть, которая создаёт маркеры? Или что ты вообще делаешь? Опиши задачу. Почему только синим запрещено выходить в триггер края карты? Это странно. Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты
Bogdan Spivak 297 Жалоба Опубликовано 29 мая, 2019 @Kato мне надо чтобы синие не могли выйти из города Спойлер Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты