Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
DrSova

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

Recommended Posts

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

 

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

  • Поражает радиацией в радиусе 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.

 

 

Share this post


Link to post
Share on other sites







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

Share this post


Link to post
Share on other sites

я просто не очень в файле 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";
		};

 

 

      

Edited by saurik (see edit history)

Share this post


Link to post
Share on other sites
После установки 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


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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

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

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

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By nikolya200
      Подскажите как убрать радиацию с северной части карты. Карта напф. Северная часть острова вся фонит! Никаких скриптов связанных с радиацией я не ставил!
    • By 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
      Профит.
       
    • By 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 - расстояние от маркера, на котором начнет действовать радиация.
      Впринципе это все. Радиация слабая, если интересно, как можно модифицировать радиацию, то могу расписать.
  • Our picks

×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.