Скрипт работает, но корректирует урон не так, как предполагалось.
Попробуй этот, его принцип точно такой же, но работает стабильно. Перекопируй это в инит бойца:
this addEventHandler [ "HandleDamage", {
params ["_unit", "_hitSelection", "_damage","_source","_projectile","_hitPartIndex", "_instigator", "_hitPoint"];
private _damageMultiplierHead = 0.3;
private _damageMultiplierBody = 0.25;
private _damageMultiplierLimbs = 0.15;
private _damageMultiplierOverall = 0.25;
private _limitHead = 1.0;
private _limitBody = 0.25;
private _limitLimbs = 0.1;
private _limitOverall = 0.25;
private _oldDamage = 0;
if (_hitSelection isEqualTo "") then {_oldDamage = damage _unit} else {_oldDamage = _unit getHit _hitSelection};
private _newDamage = _damage - _oldDamage max 0;
private _incomingDamage = _newDamage;
private _playerHealth = damage _unit;
if (_newDamage > 0 && !(_projectile isEqualTo "")) then {
private _damageMultiplier = _damageMultiplierBody;
private _upperLimit = _limitBody;
switch (_hitSelection) do {
case "face_hub";
case "head": {
_damageMultiplier = _damageMultiplierHead;
_upperLimit = _limitHead;
};
case "arms";
case "hands";
case "legs": {
_damageMultiplier = _damageMultiplierLimbs;
_upperLimit = _limitLimbs;
};
case "": {
_damageMultiplier = _damageMultiplierOverall;
_upperLimit = _limitOverall;
};
default {
_damageMultiplier = _damageMultiplierBody;
_upperLimit = _limitBody;
};
};
_newDamage = _newDamage * _damageMultiplier;
if (_newDamage > _upperLimit) then {
_newDamage = _upperLimit;
};
_damage = _oldDamage + _newDamage;
};
_damage;
}];
Если по простому, то переменные, которые будут существовать только в рамках блока, в котором они были созданы или в тех блоках, в которые они будут специально перенесены, называются локальными и обозначаются этой черточкой.
Если же переменная нужна для глобального использования во многих не связанных между собой скриптах, ее можно сделать глобальной, убрав черточку. Но нельзя сделать переменной то, что изначально является командой, например damage.
Почитай
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
.
И
Пожалуйста Войдите или Зарегистрируйтесь чтобы увидеть скрытое содержание
.