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
  • 0
Doktor

Разобрать велосипед

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

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

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];
};

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

Share this post


Link to post
Share on other sites

3 answers to this question

Recommended Posts

  • 0

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

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

Share this post


Link to post
Share on other sites



  • 0

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

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

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

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

Share this post


Link to post
Share on other sites
  • 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

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

×
×
  • 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.