Перейти к содержанию
Vincen

Скрипт на границы карты + киллтриггер

Рекомендуемые сообщения

Чуть подправил. Вынес цикл в отдельный поток. А то если не в конец инита вставить, все что будет после него, не выполнится, пока игрок не умрет, само собой)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А что происходит с тем кто пересек черту? Он тут же падает мертвый на месте? Или есть отсрочка? 

Возможно ли в этом скрипте сделать смерть от взрыва? Например я в условностях указываю так "... за обозначенными пределами  находятся недеактивированные минные поля с предыдущих войн. Настоятельно не рекомендуется пересекать линии разграничения. Даже в случае крайней необходимости вы будете действовать на свой страх и риск ..." ну и если пех заступил то громко взрывается чтобы другим было наглядно понятно. 

Изменено пользователем asys

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, asys сказал:

А что происходит с тем кто пересек черту? Он тут же падает мертвый на месте? Или есть отсрочка? 

Возможно ли в этом скрипте сделать смерть от взрыва? Например я в условностях указываю так "... за обозначенными пределами  находятся недеактивированные минные поля с предыдущих войн. Настоятельно не рекомендуется пересекать линии разграничения. Даже в случае крайней необходимости вы будете действовать на свой страх и риск ..." ну и если пех заступил то громко взрывается чтобы другим было наглядно понятно. 

Цитата

Вместо setDamage можно использовать закомментированную строку: //vehicle player call BIS_fnc_neutralizeUnit;
Функция убивает юнита с помощью имитации какого то события (подрыв мины, пво ракета и тп.)

https://community.bistudio.com/wiki/BIS_fnc_neutralizeUnit

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@asys Таймер на 10 секунд (можно выставлять столько, сколько нужно). Игрок видит, сколько осталось до того момента, как он погибнет.

 

2 минуты назад, asys сказал:

Возможно ли в этом скрипте сделать смерть от взрыва?

=>

В 12.05.2019 в 15:48, Vincen сказал:

Вместо setDamage можно использовать закомментированную строку: //vehicle player call BIS_fnc_neutralizeUnit;
Функция убивает юнита с помощью имитации какого то события (подрыв мины, пво ракета и тп.)

Для каждого вида своя смерть. В вертолет летят ракеты ПВО, пехота наступает на мину.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@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 и т.п. Хоть сейчас я и указал где менять, но с одной стороны дело секундное, а упрощает как картоделу-новичку работу, так и проверяльщикам этих миссий. Мелочь, а приятно обеим сторонам.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
14 часов назад, First сказал:

@Vincen Для удобства в начало можно выставить конфигуратор времени, да бы не менять постоянно 2-3 строчки со временем.
 

10 - time заменить на переменную, так же использовать ее в time > 10 и т.п. Хоть сейчас я и указал где менять, но с одной стороны дело секундное, а упрощает как картоделу-новичку работу, так и проверяльщикам этих миссий. Мелочь, а приятно обеим сторонам.

Да, я тоже об этом думал. Сделаю на неделе

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Возможно я ошибаюсь, но по-моему init.sqf отрабатывает один раз при старте миссии и не поддерживает JIP.

https://community.bistudio.com/wiki/Initialization_Order

Соответственно, игрок вошедший после старта на брифинг не получит цикл подрыва.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
15 минут назад, Liquid сказал:

Возможно я ошибаюсь, но по-моему init.sqf отрабатывает один раз при старте миссии и не поддерживает JIP.

https://community.bistudio.com/wiki/Initialization_Order

Соответственно, игрок вошедший после старта на брифинг не получит цикл подрыва.

А брифинг он получает? Или тоже проблема возникает?

И вообще, согласно твоей ссылке JIP там есть. Мы ведь всё-таки не в Single Player Only.

Изменено пользователем Kato

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
28 минут назад, Liquid сказал:

init.sqf отрабатывает один раз

Для сервера да. Для игроков - как @Kato сказал

image.png

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@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")

Соответственно, такие условия можно увеличивать/уменьшать по кол-ву, менять название маркеров в кавычках.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Bogdan Spivak 

Меняешь с 

В 12.05.2019 в 15:48, Vincen сказал:

if (!isDedicated) then {

на

В 12.05.2019 в 15:48, Vincen сказал:

if (!isDedicated && side player == west) then {

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@Vincen Эту строку тоже надо менять:

В 25.05.2019 в 15:04, Vincen сказал:

while {alive player} do {

на

 while {side player == west} do {

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
3 минуты назад, Bogdan Spivak сказал:

@Kato У меня без этого зеленые тоже умирают

 

Скинь полный код свой

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

@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;

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
1 час назад, Bogdan Spivak сказал:

@Vincen 

  Показать контент

 

Давай вот так попробуем:

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;
        };
    };
};

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
23 минуты назад, Bogdan Spivak сказал:

@Vincen никто не умирает

Может зон-маркеров нет, которые перечислены? Или ты не в той зоне проверяешь?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты
34 минуты назад, Bogdan Spivak сказал:

У меня просто все перестало работать :anifrog:

Может ты удалил верхнюю часть, которая создаёт маркеры? Или что ты вообще делаешь? Опиши задачу. Почему только синим запрещено выходить в триггер края карты? Это странно.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти

  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

Мы разместили cookie-файлы на ваше устройство, чтобы помочь сделать этот сайт лучше. Вы можете изменить свои настройки cookie-файлов, или продолжить без изменения настроек.