Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

    Создайте тему в соответствующем разделе
    Не нужно писать всё в чат!
  • Загляните на торговую площадку

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

    Пользуйтесь услугами гаранта
    Мы сделаем вашу сделку безопасной
DrSova

Радиоактивные объекты

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

Делаю собственный дейз, решил сделать там радиоактивные зоны. Поделюсь с вами.

 

Собственно, "фиачерс" этой штуки:

  • Поражает радиацией в радиусе 100м от объекта излучения.
  • Накапливает радиацию. Чем больше радиация, тем быстрее отнимается кровь.
  • Можно ставить несколько рад. объектов.
  • В машине действие радиации слабее.

Минусы:

  • Пока я не научился записывать количество принятой дозы в БД
  • Сложности с "очищением" - лично у меня на сервере это специальный доктор, в моде - таблетки от радиации и водка.

Вот видео, в котором, впринципе, показано, как работает:

 

 

Установка:

 

  1. Создаем в корневой папке миссии файл radiation.sqf.
  2. Прописываем в него:

     

    private ["_rad_obj","_lasts","_Dr_hx","_zr","_dam"];
    _rad_obj = [b1,b2]; /// объекты излучающие радиацию
    b4 setvariable ["rad",2000]; /// мощность излучения 2000 ед. - если не присваивать мощность, то она будет 100 ед.
    _lasts = 0;
    dr_r = 0; /// полученная доза заражение игрока, -10% если игрок в транспорте
    /** мощность излучения объекта, расстояние излучения 100 ед = 100 м **/
    #define dr (if (isnil {_x getvariable "rad"}) then {100} else {(_x getvariable "rad")})
    for "" from 0 to 1 step 0 do {
    	Dr_h = 0; 
    	{
    		_Dr_hx = 0; 
    		_zr = player distance _x;   
    		if (_zr < dr) then {
    			_DR_hx = (floor (dr - _zr) / 10); /// уровень радиации объекта
    			DR_h = DR_h + _DR_hx - (if (vehicle player != player) then {_DR_hx / 10} else {0}); /// общий уровень радиации
    			if (_DR_hx > dr_r) then {
    				dr_r = dr_r + (_DR_hx / 100)
    			}
    		};
    	} foreach _rad_obj;
        if (time - _lasts > 4 and Dr_h > 0) then {
    		_lasts = time;
    		playsound "geiger";
    	};
    	    r_player_blood = r_player_blood - (dr_r*105);
    	sleep 1
    };
     
    
  3. Идем в init.sqf и пишем в самом низу:
    [] execVM "radiation.sqf";
    
    
  4. открываем mission.sqm и создаем там объекты, излучающие радиацию. Ну у меня это, например, выглядит так:

    		class Item0
    		{
    			position[]={9527.5195,139.98311,10154.777}; \\ координаты
    			id=9;
    			side="EMPTY"; 
    			vehicle="Barrel1"; \\ класс объекта
    			skill=0.60000002;
    			text="b2"; \\ обязательно название объекта, которое вы указали в скрипте
    		};
    
    		class Item2
    		{
    			position[]={9390.6074,139.98311,10121.055};
    			id=11;
    			side="EMPTY";
    			vehicle="Barrel1";
    			skill=0.60000002;
    			text="b1";
    		};
    
  5. Открываем Description.ext и добавляем звук радиации:
    class CfgSounds
    {
    	sounds[] = {geiger};	
    	class geiger
    	{
    		name = "geiger";
    		sound[] = {"sfx\geiger.ogg", db-10, 1.0};
    		titles[] = {};
    	};
    };
    
    
  6. Качаем это и забрасываем в корень миссии.

      (Опционально) Можно добавить отображение уровня радиации и количество "принятой на грудь" в дебаг монитор, как у меня на видео. Для этого надо в вашем дебаг мониторе объявить 2 строчки:

	        <t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Уровень рад.: </t><t size='0.95' font='Bitstream' align='right'>%1 мкР</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Получено рад.: </t><t size='0.95' font='Bitstream' align='right'>%2 мкР</t><br/>

и объявить переменные  DR_h, а затем dr_r. т.е например, как выглядит мой дебаг монитор:

//Let Zeds know
[player,4,true,(getPosATL player)] spawn player_alertZombies;

while {debugMonitor} do
{
	_time = (round(180-(serverTime)/60));
	_hours = (floor(_time/60));
	_minutes = (_time - (_hours * 60));
	
	switch(_minutes) do
	{
		case 9: {_minutes = "09"};
		case 8: {_minutes = "08"};
		case 7: {_minutes = "07"};
		case 6: {_minutes = "06"};
		case 5: {_minutes = "05"};
		case 4: {_minutes = "04"};
		case 3: {_minutes = "03"};
		case 2: {_minutes = "02"};
		case 1: {_minutes = "01"};
		case 0: {_minutes = "00"};
	};
	
	hintSilent parseText format ["
		<t size='1.25' font='Bitstream' align='center' color='#5882FA'>Server Name Here</t><br/>
		<t size='1.05' font='Bitstream' align='center' color='#5882FA'>Server Website Here</t><br/> 
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'></t><t size='0.95 'font='Bitstream' align='right'></t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Players Online: </t><t size='0.95 'font='Bitstream' align='right'>%1</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Murders: </t><t size='0.95' font='Bitstream' align='right'>%3</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Bandits Killed: </t><t size='0.95' font='Bitstream' align='right'>%4</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Zombies Killed: </t><t size='0.95' font='Bitstream' align='right'>%2</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Humanity: </t><t size='0.95' font='Bitstream' align='right'>%6</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Blood: </t><t size='0.95' font='Bitstream' align='right'>%5</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>FPS: </t><t size='0.95' font='Bitstream' align='right'>%7</t><br/>
	        <t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Уровень рад.: </t><t size='0.95' font='Bitstream' align='right'>%10 мкР</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'>Получено рад.: </t><t size='0.95' font='Bitstream' align='right'>%11 мкР</t><br/>
		<t size='0.95' font='Bitstream' align='left' color='#FFBF00'></t><t size='0.95 'font='Bitstream' align='right'></t><br/>
	        <t size='1.15' font='Bitstream'align='center' color='#5882FA'>TeamSpeak IP Here</t><br/>
		<t size='1.15' font='Bitstream'align='center' color='#5882FA'>Рестарт через %8:%9</t><br/>",
			
		(count playableUnits),
		(player getVariable['zombieKills', 0]),
		(player getVariable['humanKills', 0]),
		(player getVariable['banditKills', 0]),
		(player getVariable['USEC_BloodQty', r_player_blood]),
		(player getVariable['humanity', 0]),
		(round diag_fps),
		_hours,
		_minutes,
	        DR_h,
		dr_r
	];
	
	//Don't modify below this line
	sleep 1;
};

Profit!

 

P.S.

Радиоактивные объекты так же можно добавить через подкючение sqf файла, главное их обозвать так же, как вы указали в скрипте.

Чтобы изменить радиус поражения, надо пересчитывать показатели, иначе будет либо сильная, либо слабая радиация.

Чтобы обнулить заражение, надо использовать команду dr_r = 0; каким способом обнулять - это уже ваша фантазия.

С данными настройками, радиация изжарит вас за минуты 2.

 

 

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


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





Классная вещь. Раньше делали скрипты типа радиоактивных баз, ну а тут всё более продуманно. + в репу

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


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

я просто не очень в файле mission

куда это вставить

		class Item0
		{
			position[]={9527.5195,139.98311,10154.777}; \\ координаты
			id=9;
			side="EMPTY"; 
			vehicle="Barrel1"; \\ класс объекта
			skill=0.60000002;
			text="b2"; \\ обязательно название объекта, которое вы указали в скрипте
		};

		class Item2
		{
			position[]={9390.6074,139.98311,10121.055};
			id=11;
			side="EMPTY";
			vehicle="Barrel1";
			skill=0.60000002;
			text="b1";
		};

 

 

      

Изменено пользователем saurik (история изменений)

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


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

В логах РПТ :

20:31:20 Error in expression <; 
{
_Dr_hx = 0; 
_zr = player distance _x;   
if (_zr < (if (isnil {_x getvaria>
20:31:20   Error position: <_x;   
if (_zr < (if (isnil {_x getvaria>
20:31:20   Error Undefined variable in expression: _x
20:31:20 File mpmissions\__cur_mp.Chernarus\radiation.sqf, line 12
20:31:20 Error in expression <ts","_Dr_hx","_zr","_dam"];
_rad_obj = [b1,b2]; 
b4 setvariable ["rad",2000]; 
_>
20:31:20   Error position: <b1,b2]; 
b4 setvariable ["rad",2000]; 
_>
20:31:20   Error Undefined variable in expression: b1
20:31:20 File mpmissions\__cur_mp.Chernarus\radiation.sqf, line 2


Как исправить?

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


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

Вот тут вопрос немного не по теме,я заметил зомби на видео,они реалистичнее чем в самом dayz, я даже заметил там зомби с топором,как таких сделать? или может есть какой то гайд?

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


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

Вот тут вопрос немного не по теме,я заметил зомби на видео,они реалистичнее чем в самом dayz, я даже заметил там зомби с топором,как таких сделать? или может есть какой то гайд?

Там доп. аддон и моделька из аддона.

А топор можно попробовать выдать как оружие зм. Не пробовал.

По поводуреализма - да такие же.

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


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

Там доп. аддон и моделька из аддона.

А топор можно попробовать выдать как оружие зм. Не пробовал.

По поводуреализма - да такие же.

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

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


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

Создайте аккаунт или войдите в него для комментирования

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

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: nikolya200
      Подскажите как убрать радиацию с северной части карты. Карта напф. Северная часть острова вся фонит! Никаких скриптов связанных с радиацией я не ставил!
    • Автор: DrSova
      На этот раз еще более расширенная версия радиации, использующая переменную Infected (по просьбе трудящихся). Запоминается после рестарта, сохраняет полученную радиацию после выхода из зоны, лечится специальными "колесами". Итак, приступим к установке.
       
      Установка:
      Качаем этот аддон (противорадиационные таблетоны): https://www.dropbox.com/s/q8gvl2tzmg7rw3q/DAPMISC.rar?dl=0 Находим player_spawn_2.sqf, что лежит по пути dayz_code\system Открываем его, в самом верху пишем: DR_RadiationZone = false; DZ_Rad = false; Далее находим строчку
      DZE_InRadiationZone = false; Ниже прописываем:
      DR_RadiationZone = false; Далее там же ищем строчку:
      if((_outsideMap || DZE_Quarantine) && !r_player_dead && !isNull (findDisplay 46)) then { DZE_InRadiationZone = true; }; Ниже прописываем (Зона радиации):
      if ((player distance rad1) < 1000) then { DR_RadiationZone = true; }; Находим это условие:
      if (DZE_InRadiationZone) then { После завершения этого условия вставляем:
      if (DR_RadiationZone) then { _radsound = "radzone1"; _bloodloss = 50; if(_radTimer > 5 && _radTimer < 10) then { _radsound = "radzone2"; _bloodloss = 100; DZ_Rad = true; }; if(_radTimer > 10) then { _radsound = "radzone3"; _bloodloss = 150; DZ_Rad = true; }; if(_radTimer > 15) then { _radsound = "radzone4"; _bloodloss = 200; DZ_Rad = true; }; _result = r_player_blood - _bloodloss; if (_result < 0) then { _id = [player,"rad"] spawn player_death; } else { r_player_blood = _result; }; addCamShake [2, 1, 25]; [player,_radsound,0,true] call dayz_zombieSpeak; r_player_infected = true; player setVariable["USEC_infected",true,true]; _radTimer = _radTimer + 1; } else { _radTimer = 0; if (DZ_Rad) then { _bloodloss = 50; _result = r_player_blood - _bloodloss; r_player_blood = _result; addCamShake [2, 1, 25]; }; }; Далее находим файл player_useMeds.sqf по пути dayz-code\actions
      Находим в нем строчки:
      case "ItemBloodbag": { _id = [0,0,0,[player]] execVM "\z\addons\dayz_code\medical\self_transfusion.sqf"; }; После них вставляем:
      case "ItemAntirad": { _id = [0,0,0,[player]] execVM "\z\addons\dayz_code\medical\antirad.sqf"; }; Качаете этот файл и закидываете по пути dayz\medical
      Профит.
       
    • Автор: DrSova
      На этот раз все проще. Радиация не накапливается, используются стандартные функции Эпоча радиации, которая включается за картой.
       
      Установка:
       
      Ставим кастомный compiles В нем находим: player_spawn_2 = compile preprocessFileLineNumbers "\z\addons\dayz_code\system\player_spawn_2.sqf"; Изменяем на:
      player_spawn_2 = compile preprocessFileLineNumbers "ПУТЬДОФАЙЛА\player_spawn_2.sqf"; Идем по пути \z\addons\dayz_code\system и копируем файл player_spawn_2.sqf
      В вашей миссии ставим маркер, где вы хотите разместить радиоактивное поле.
      Открываем player_spawn_2.sqf  и находим там:
              if((_outsideMap || DZE_Quarantine) && !r_player_dead && !isNull (findDisplay 46)) then {                 DZE_InRadiationZone = true;             }; Ниже вставляем:
      if ((player distance rad1) < 1000) then { DZE_InRadiationZone = true; }; где rad1 - имя маркера, 1000 - расстояние от маркера, на котором начнет действовать радиация.
      Впринципе это все. Радиация слабая, если интересно, как можно модифицировать радиацию, то могу расписать.
  • Наш выбор

×
×
  • Создать...

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

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.