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

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

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

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

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

Подскажите как можно добавить проверку на целостность техники перед разборкой

Вот есть код разобрать велосипед или мози

if (dayz_combat == 1) exitwith { cutText ["В режиме боя нельзя разобрать!", "PLAIN DOWN"] };

private ["_obj","_animState","_started","_finished"];

if(DZE_ActionInProgress) exitWith { cutText ["Разборка уже производится." , "PLAIN DOWN"]; };
DZE_ActionInProgress = true;

player removeAction s_player_packVehicle;
s_player_packVehicle = 1;

_obj = _this select 3;

cutText ["Разборка начата.", "PLAIN DOWN"];

[1,1] call dayz_HungerThirst;
player playActionNow "Medic";

[player,"repair",0,false] call dayz_zombieSpeak;
[player,50,true,(getPosATL player)] spawn player_alertZombies;

r_interrupt = false;
_animState = animationState player;
r_doLoop = true;
_started = false;
_finished = false;

while {r_doLoop} do {
	_animState = animationState player;
	_isMedic = ["medic",_animState] call fnc_inString;
	if (_isMedic) then {
		_started = true;
	};
	if (_started and !_isMedic) then {
		r_doLoop = false;
		_finished = true;
	};
	if (r_interrupt) then {
		r_doLoop = false;
	};
	sleep 0.1;
};
r_doLoop = false;
		
if (_finished) then {
	// Double check that object is not null
	if(!isNull(_obj)) then {
		_ipos = getPosATL _obj;
		_type = typeOf _obj;

		_materials = [_type] call EVDGetMaterials;

		//Delete from hive
		_objectID  = _obj getVariable ["ObjectID","0"];
		_objectUID = _obj getVariable ["ObjectUID","0"];
		_activatingPlayer = player;
		PVDZE_obj_Delete = [_objectID,_objectUID,_activatingPlayer];
		publicVariableServer "PVDZE_obj_Delete";

		deleteVehicle _obj;

		if (_ipos select 2 < 0) then {
			_ipos set [2,0];
		};

		_radius = 1;

		// give refund items
		if((count _materials) > 0) then {
			_item = createVehicle ["WeaponHolder", _iPos, [], _radius, "CAN_COLLIDE"];
			{
				_itemOut = _x select 0;
				_countOut = _x select 1;
				if (typeName _countOut == "ARRAY") then {
					_countOut = round((random (_countOut select 1)) + (_countOut select 0));
				};
				_item addMagazineCargoGlobal [_itemOut,_countOut];
			} forEach _materials;

			_item setposATL _iPos;

			player reveal _item;

			player action ["Gear", _item];
		};
	} else {
		cutText [(localize "str_epoch_player_91"), "PLAIN DOWN"];
	};
} else {
	r_interrupt = false;
	player switchMove "";
	player playActionNow "stop";
	cutText ["Разборка отменена.", "PLAIN DOWN"];
};

DZE_ActionInProgress = false;
s_player_packVehicle = -1;

А как к нему правильно добавить что то типа этого

_hitpoints = _vehicle call vehicle_getHitpoints;
_tipeclass = typeOf _vehicle;
{
	if ( ([_vehicle,_x] call object_getHit) > 0) then 
	{
		_isDamaged = true;
	};
} forEach _hitpoints;
 
if (_isDamaged) then
{
	_isConfirm = false;
	systemchat format["Отремонтируйте полностью %1 перед  разбором", _tipeclass];
};

А то едут на велосипеде врезаются,он не едет, они его собирают потом заново создают и пользуются дальше им, не хорошо как то

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


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

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

  • 0

ты для начала найди - откуда этот скрипт вызывается.

и там проверку добавь.

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


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



  • 0

ты для начала найди - откуда этот скрипт вызывается.

и там проверку добавь.

Вот строчка эта подскажите как в неё надо добавить проверку на повреждение техники

if (_typeOfCursorTarget in EVDVehicleArray  and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then {

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


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

Вот строчка эта подскажите как в неё надо добавить проверку на повреждение техники

if (_typeOfCursorTarget in EVDVehicleArray  and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then {

Это

  • if (_isDamaged) then
  • {
  •     _isConfirm = false;
  •     systemchat format["Отремонтируйте полностью %1 перед разбором", _tipeclass];
  • };

и это

 

_tipeclass = typeOf _vehicle;

 

 

Удалить.

 

Это

if ( ([_vehicle,_x] call object_getHit) > 0) then

Заменить на

if ( ([_vehicle,_x] call object_getHit) > 0) exitWith

 

Тут

 

  • _hitpoints = _vehicle call vehicle_getHitpoints;
  • _tipeclass = typeOf _vehicle;
  • {
  •     if ( ([_vehicle,_x] call object_getHit) > 0) then
  •     {
  •         _isDamaged = true;
  •     };
  • } forEach _hitpoints;

_vehicle заменить на _cursorTarget

 

 

 

Ну и добавить выше проверки то что останется.

а в саму проыверку дописать

&& !_isDamaged

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


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

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

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

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

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

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

Войти

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

Войти сейчас

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

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

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