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

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

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

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

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

усиление зомби

Всем привет полистав кучу разных форумов решил достать из dayz_code (мод епоч) файлы fn_damageHandler.sqf и fn_damageHandlerZ.sqf
fn_damageHandler.sqf отвечает за урон который наносится зомбаком
fn_damageHandlerZ.sqf отвечает за урон наносиый зомбаку
Дабы не создавать новый мод создал папочку fixes в миссиях и запихнул их туда и прописал к ним пути в кастомном compiles.sqf
выглядит он так:
 

fnc_usec_damageHandler =  compile preprocessFileLineNumbers "fixes\fn_damageHandler.sqf";
local_zombieDamage =    compile preprocessFileLineNumbers "fixes\fn_damageHandlerZ.sqf";

В fn_damageHandlerZ.sqf запихнул часть кода которая отвчает за то что зомбаку урон будет наносится в голову, то есть добавил строки в код а в самом коде ничего не изменял
А вот что бы поменять урон который наносят зомбаки пришлось править fn_damageHandler.sqf как следствие убийство только в голову работает, а вот урон от зомбарей нет.
Как я понимаю это связано с тем что основной файл compiles.sqf первоначально берет эти данные из dayz_code а во вторую уже из моего файла с миссией.
Собственно заключается вопрос в том как прикрутить зомбакам больший урон через миссии?

 

 

 

П.С. создавал темку http://s-platoon.ru/index.php?/topic/207-dayz-code-izmeneniia/ удалите там та же тема ток все закручено и непонятно

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


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

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

  • 0

С выше написанным разобрался все работает =)
Подскажите только вот такой момент, зомбарей получается усилить, но хотелось бы провести более тонкую настройку, кто умеет правильно читать скрипты расшифруйте какая строка тут че значит:
 

//PVP Damage
_scale = 200;
if (_damage > 0.4) then {
	if (_ammo != "zombie") then {
		_scale = _scale + 150;
	};
	if (_isHeadHit) then {
		_scale = _scale + 50;
	};
	if ((isPlayer _source) and !(player == _source)) then {
		_scale = _scale + 180;
		if (_isHeadHit) then {
			_scale = _scale + 150;
		};
	};
	switch (_type) do {
		case 1: {_scale = _scale + 120};
		case 2: {_scale = _scale + 120};
	};
	if (_unitIsPlayer) then {
		//Cause blood loss
		//Log Damage
		diag_log ("DAMAGE: player hit by " + typeOf _source + " in " + _hit + " with " + _ammo + " for " + str(_damage) + " scaled " + str(_damage * _scale));
		r_player_blood = r_player_blood - (_damage * _scale);
	};
};

Ко всем значения когда просто по нолику дописал не сработало, а вот когда поменял тут 

 

if (_damage > 0.4) then {

значение 0.4 на 0.1  начали бить сильнее ток как то через раз все же, так что интересуют остальные строки и эта в частности.

Так же кто знает какой файл и желательно какая строка в нем отвечает за шанс попадания зомби по цели, проще говоря промахи? А то уж больно часто они промахиваются.
Так же возможно кто то знает какой или какие файлы отвечают за кол-во спавнящихся зомби возле игрока? в ините менял, но они вроде как не спавнятся одновременно, читал много англ. форумах там этот опрос так же открыт так как каждый указывает на разные файлы и строчки.

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


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





  • 0

Здесь нету шанса попадания.

Тут только увеличение дмг, в зависимости от того в какую часть тела попал.

И потеря крови.

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


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

Здесь нету шанса попадания.

Тут только увеличение дмг, в зависимости от того в какую часть тела попал.

И потеря крови.

 

Да это я сам то понял, читать умею, просто дело в том что когда значение верхнего _scale увеличиваешь у них в основном атаки остаются прежние и проскакивают так сказать криты, а вот при увеличении параметра  _scale =  _scale + 150 как раз поднимается ихняя атака при каждом ударе, вот как бы мне не понятно это тем более я предполагаю что _damage > 0.4 довольно важный параметр так как то что описано дальше действует в случае если _damage > 0.4 и как бы хотелось бы понять что оно значит, думал может найдутся знающие которые в коде проставят какой параметр за что отвечает.

А на счет процента промахов я хотел узнать где его найти в каком файле и по возможности в каком параметре т.к. очень долго получается если делать методом "тыка" т.к. параметров огромное множество и после изменения каждого нужно перезапускать сервер что бы понять на что оно влияет

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


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

дмг не может быть больше 1.

т.е. при ударе он идет от 0 и до 1.

Пропиши 0.001 вместо 0.4, и с любого удара даже слабого будет происходить усиление.

По поводу того, откуда он берется - смотри скрипт(у тебя тут не показано, откуда получает значение переменная _damage).

 

По поводу параметров...

Ну примерно так -

Если ударил НЕ зомби(т.е. - выстрел был или еще что то)

if (_ammo != "zombie") then {

 

Если удар пришелся в область головы

if (_isHeadHit) then {

 

Если источник нанесения удара - игрок. И (а так же) источник нанесения удара не сам игрок(т.е. не сам себя ударил).

if ((isPlayer _source) and !(player == _source)) then {

 

_type - тут надо смотреть откуда переменная получает значение. увеличиается она только если тип 1 или 2.

 

 

Ну а это и так понятно - если юнит по которому прошел дмг - игрок....

if (_unitIsPlayer) then {

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


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

дмг не может быть больше 1.

т.е. при ударе он идет от 0 и до 1.

Пропиши 0.001 вместо 0.4, и с любого удара даже слабого будет происходить усиление.

По поводу того, откуда он берется - смотри скрипт(у тебя тут не показано, откуда получает значение переменная _damage).

 

По поводу параметров...

Ну примерно так -

Если ударил НЕ зомби(т.е. - выстрел был или еще что то)

if (_ammo != "zombie") then {

 

Если удар пришелся в область головы

if (_isHeadHit) then {

 

Если источник нанесения удара - игрок. И (а так же) источник нанесения удара не сам игрок(т.е. не сам себя ударил).

if ((isPlayer _source) and !(player == _source)) then {

 

_type - тут надо смотреть откуда переменная получает значение. увеличиается она только если тип 1 или 2.

 

 

Ну а это и так понятно - если юнит по которому прошел дмг - игрок....

if (_unitIsPlayer) then {

как то смутно, выложу полный скрипт

 

scriptName "Functions\misc\fn_damageHandler.sqf";
/***********************************************************
	PROCESS DAMAGE TO A UNIT
	- Function
	- [unit, selectionName, damage, source, projectile] call fnc_usec_damageHandler;
************************************************************/
private ["_unit","_humanityHit","_myKills","_hit","_damage","_isPlayer","_unconscious","_wound","_isHit","_isInjured","_type","_hitPain","_isCardiac","_isHeadHit","_isMinor","_scale","_canHitFree","_rndPain","_rndInfection","_hitInfection","_lowBlood","_isPZombie","_source","_ammo","_unitIsPlayer","_isBandit"];
_unit = _this select 0;
_hit = _this select 1;
_damage = _this select 2;
_unconscious = _unit getVariable ["NORRN_unconscious", false];
_isPZombie = player isKindOf "PZombie_VB";
_source = _this select 3;
_ammo = _this select 4;
_type = [_damage,_ammo] call fnc_usec_damageType;

_isMinor = (_hit in USEC_MinorWounds);
_isHeadHit = (_hit == "head_hit");
//_evType = "";
//_recordable = false;
_isPlayer = (isPlayer _source);
_humanityHit = 0;
_myKills = 0;
_unitIsPlayer = _unit == player;

//Publish Damage
	//player sidechat format["Processed damage for %1",_unit];
	//USEC_SystemMessage = format["CLIENT: %1 damaged for %2 (in vehicle: %5)",_unit,_damage,_isMinor,_isHeadHit,_inVehicle];
	//PublicVariable "USEC_SystemMessage";

/*
if (_isPlayer) then {
	if (_damage > 0.1) then {
		dayz_canDisconnect = false;
		//["PVDZE_plr_DiscAdd",getPlayerUID player] call callRpcProcedure;
		PVDZE_plr_DiscAdd = getPlayerUID player;
		publicVariableServer "PVDZE_plr_DiscAdd";
				
		dayz_damageCounter = time;
		
		//Ensure Control is visible
		_display = uiNamespace getVariable 'DAYZ_GUI_display';
		_control = 	_display displayCtrl 1204;
		_control ctrlShow true;
	};
};
*/

if (_unitIsPlayer) then {
	if (_hit == "") then {
		if ((_source != player) and _isPlayer) then {
		//Enable aggressor Actions
			if (_source isKindOf "CAManBase") then {
				_source setVariable["startcombattimer",1];	
			};
			_canHitFree = 	player getVariable ["freeTarget",false];
			_isBandit = (player getVariable["humanity",0]) <= -5000;
			_isPZombie = player isKindOf "PZombie_VB";
			
			if (!_canHitFree and !_isBandit and !_isPZombie) then {
				//Process Morality Hit
				_myKills = 0 max (1 - (player getVariable ["humanKills",0]) / 5);
				_humanityHit = -100 * _myKills * _damage;

				//["PVDZE_plr_HumanityChange",[_source,_humanityHit,30]] call broadcastRpcCallAll;
				if (_humanityHit != 0) then {
					PVDZE_plr_HumanityChange = [_source,_humanityHit,30];
					publicVariable "PVDZE_plr_HumanityChange";
				};
			};
		};
	};
};

//PVP Damage
_scale = 200;
if (_damage > 0.4) then {
	if (_ammo != "zombie") then {
		_scale = _scale + 50;
	};
	if (_isHeadHit) then {
		_scale = _scale + 500;
	};
	if ((isPlayer _source) and !(player == _source)) then {
		_scale = _scale + 800;
		if (_isHeadHit) then {
			_scale = _scale + 500;
		};
	};
	switch (_type) do {
		case 1: {_scale = _scale + 200};
		case 2: {_scale = _scale + 200};
	};
	if (_unitIsPlayer) then {
		//Cause blood loss
		//Log Damage
		diag_log ("DAMAGE: player hit by " + typeOf _source + " in " + _hit + " with " + _ammo + " for " + str(_damage) + " scaled " + str(_damage * _scale));
		r_player_blood = r_player_blood - (_damage * _scale);
	};
};

//Record Damage to Minor parts (legs, arms)
if (_hit in USEC_MinorWounds) then {
	if (_ammo == "zombie") then {
		if (_hit == "legs") then {
			[_unit,_hit,(_damage / 6)] call object_processHit;
		} else {
			[_unit,_hit,(_damage / 4)] call object_processHit;
		};
	} else {
		[_unit,_hit,(_damage / 2)] call object_processHit;
	};
	if (_ammo == "") then {
		[_unit,_hit,_damage] call object_processHit;
	};
};


if (_unitIsPlayer) then {
//incombat
	_unit setVariable["startcombattimer", 1, false];	
};

if (_damage > 0.1) then {
	if (_unitIsPlayer) then {
		//shake the cam, frighten them!
		//player sidechat format["Processed bullet hit for %1 (should only be for me!)",_unit];
		1 call fnc_usec_bulletHit;
	};
	if (local _unit) then {
		_unit setVariable["medForceUpdate",true,true];
	};
};
if (_damage > 0.4) then {	//0.25
	/*
		BLEEDING
	*/		
	_wound = _hit call fnc_usec_damageGetWound;
	_isHit = _unit getVariable[_wound,false];
	if (_unitIsPlayer) then {	
		_rndPain = 		(random 10);
		_rndInfection = (random 500);
		_hitPain = 		(_rndPain < _damage);
		if ((_isHeadHit) or (_damage > 1.2 and _hitPain)) then {
			_hitPain = true;
		};
		_hitInfection = (_rndInfection < 1);
		//player sidechat format["HitPain: %1, HitInfection %2 (Damage: %3)",_rndPain,_rndInfection,_damage]; //r_player_infected
		if (_isHit) then {
			//Make hit worse
			if (_unitIsPlayer) then {
				r_player_blood = r_player_blood - 50;
			};
		};
		if (_hitInfection) then {
			//Set Infection if not already
			if (_unitIsPlayer and !_isPZombie) then {
				r_player_infected = true;
				player setVariable["USEC_infected",true,true];
			};
			
		};
		if (_hitPain) then {
			//Set Pain if not already
			if (_unitIsPlayer) then {
				r_player_inpain = true;
				player setVariable["USEC_inPain",true,true];
			};
		};
		if ((_damage > 1.5) and _isHeadHit) then {
			[_source,"shothead"] spawn player_death;
		};
	};
	if(!_isHit) then {
		
		if(!_isPZombie) then {
			//Create Wound
			_unit setVariable[_wound,true,true];
			[_unit,_wound,_hit] spawn fnc_usec_damageBleed;
			usecBleed = [_unit,_wound,_hit];
			publicVariable "usecBleed";

			//Set Injured if not already
			_isInjured = _unit getVariable["USEC_injured",false];
			if (!_isInjured) then {
				_unit setVariable["USEC_injured",true,true];
			if ((_unitIsPlayer) and (_ammo != "zombie")) then {
					dayz_sourceBleeding = _source;
				};
			};
			//Set ability to give blood
			_lowBlood = _unit getVariable["USEC_lowBlood",false];
			if (!_lowBlood) then {
				_unit setVariable["USEC_lowBlood",true,true];
			};
			if (_unitIsPlayer) then {
				r_player_injured = true;
			};
		};
	};
};
if (_type == 1) then {
	/*
		BALISTIC DAMAGE		
	*/		
	if ((_damage > 0.01) and (_unitIsPlayer)) then {
		//affect the player
		[20,45] call fnc_usec_pitchWhine; //Visual , Sound
	};
	if (_damage > 4) then {
		//serious ballistic damage
		if (_unitIsPlayer) then {
			[_source,"explosion"] spawn player_death;
		};
	} else {
		if (_damage > 2) then {
			_isCardiac = _unit getVariable["USEC_isCardiac",false];
			if (!_isCardiac) then {
				_unit setVariable["USEC_isCardiac",true,true];
				r_player_cardiac = true;
			};
		};
	};
};
if (_type == 2) then {
	/*
		HIGH CALIBRE
	*/
	if (_damage > 4) then {
		//serious ballistic damage
		if (_unitIsPlayer) then {
			[_source,"shotheavy"] spawn player_death;
		};
	} else {
		if (_damage > 2) then {
			_isCardiac = _unit getVariable["USEC_isCardiac",false];
			if (!_isCardiac) then {
				_unit setVariable["USEC_isCardiac",true,true];
				r_player_cardiac = true;
			};
		};
	};
};

if (!_unconscious and !_isMinor and ((_damage > 2) or ((_damage > 0.5) and _isHeadHit))) then {
	//set unconsious
	[_unit,_damage] call fnc_usec_damageUnconscious;
};

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


Ссылка на сообщение
Поделиться на других сайтах
  • 0
if (_ammo == "zombie") then {

 

дмг от зомби.

Как видишь, в  последствии - в скрипте, урон режется -

 

 

        if (_hit == "legs") then {
            [_unit,_hit,(_damage / 6)] call object_processHit;
        } else {
            [_unit,_hit,(_damage / 4)] call object_processHit;
        };

По ногам - урон делится на 6(урезается в 6 раз)

По остальным частям тела в 4 раза.

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


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

 

if (_ammo == "zombie") then {

 

дмг от зомби.

Как видишь, в  последствии - в скрипте, урон режется -

 

 

        if (_hit == "legs") then {
            [_unit,_hit,(_damage / 6)] call object_processHit;
        } else {
            [_unit,_hit,(_damage / 4)] call object_processHit;
        };

По ногам - урон делится на 6(урезается в 6 раз)

По остальным частям тела в 4 раза.

я ток не пойму откуда берется первоначальный урон?

Я так предполагал судя что смог понять из скрипта что дамаг исходный получается 200 и что в случае попадения в голову идет усиление +500 в случае попадения в ноги получается 200/6 остальные части тела 200/4. усиление как я понимаю происходит в случае если урон больше чем 200*0,4 то есть больше 80, тогда пускается кровотечение и происход усилени +50, если попал в голову то усиление +500, ну это как бы теоретически и скорее всего не совсем верно потому что по логике зомби попадает либо в ноги либо в голову либо в другие части тела тогда откуда берется значение 0.4, в смысле от какого урона? Т.к. если в ноги то урон 200/6=33 < 80 а если другие части тела кроме головы то 200/4=50 < 80 остается голова, какой тогда вообще смысл в строке там где стоит параметр 0,4?

В общем так ничего и не понял

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


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

о вроде понял, _scale = 200 это вообще как бы пвп урон
если урон наносит зомби то урон = 200 + 50
если попадение в голову то 200+50+500
если в ноги то (200+50)/6 или (200+50)/4
в другие части тела (200+50)/2
Если урон больше 40% от 200 то пускается кровотечение
Как то так наверное
 

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


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

нашел интересную статейку, судя по видео и сравнению скриптов очень много чего изменено, но к сожалению работа по всей видимости не доделана и осталась на стадии альфы, очень интересная наработка, возможно кто то сможет продолжить работу http://opendayz.net/threads/release-mmmyums-zed-changes-quantity-ai-spawning-permaloot-permazeds-more.12435/

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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