Перейти к содержимому

DustBlue IPB Skin by CodeGame Networks

запрет на упаковку велосипеда, если он имеет дамаг.


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 SAYREX

SAYREX

    Новичок

  • Проверенные
  • Pip
  • 9 сообщений

Отправлено 02 декабря 2015 - 09:19

Здравствуйте! Такой вопрос:
Как сделать чтобы нельзя было запаковать велосипед, если он имеет дамаг?
Мой EVD_pack.sqf
call compile preprocessFileLineNumbers "Custom\EVD\EVD_common.sqf";
if (dayz_combat == 1) exitwith { cutText ["\n\nВы находитесь в бою и не можете совершить данное действие!", "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 addWeapon "ItemToolbox";
[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 {
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;
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;
Подключается он в fn_selfActions.sqf так:
if (_typeOfCursorTarget in EVDVehicleArray and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then {
if (s_player_packvehicle < 0) then {
s_player_packvehicle = player addAction [("<t color=""#FFFFFF"">"+("Запаковать") + "</t>"), "Custom\EVD\EVD_pack.sqf",_cursorTarget, 0, false, true, "",""];
};
} else {
player removeAction s_player_packvehicle;
s_player_packvehicle = -1;
};
Просьба помочь.

#2 NoNameUltima

NoNameUltima

    Администратор

  • Администраторы
  • 191 сообщений
  • ГородСанкт-Петербург

Отправлено 02 декабря 2015 - 09:53

Посмотри скрипт на ремонт техники, там есть проверка повреждений каждой запчасти.
Или можно проще:
Перед разбором байка -

if ((damage_obj) > 0.1) exitWith {systemChat "Нельзя разобрать поврежденный объект";};


#3 КенГуру

КенГуру

    Продвинутый пользователь

  • Проверенные
  • PipPipPip
  • 42 сообщений
  • ГородЧелябинск

Отправлено 02 декабря 2015 - 10:26

Цитата

Подключается он в fn_selfActions.sqf так:
if(_typeOfCursorTarget inEVDVehicleArrayand!(locked _cursorTarget)and(damage _cursorTarget <1))then{
Также можно просто изменить "and(damage _cursorTarget <1)"  на "&& (damage _cursorTarget < 0.01)"

Тогда будет менюшка ТОЛЬКО для велосипедов с дамагом менее 1% (дамаг 1 - это 100%), но с написанным выше - игрок хоть будет знать, почему не разбирается. ;)
С уважением, и всё такое..

#4 SAYREX

SAYREX

    Новичок

  • Проверенные
  • Pip
  • 9 сообщений

Отправлено 02 декабря 2015 - 13:35

Просмотр сообщенияNoNameUltima (02 декабря 2015 - 09:53) писал:

Посмотри скрипт на ремонт техники, там есть проверка повреждений каждой запчасти.
Или можно проще:
Перед разбором байка -

if ((damage_obj) > 0.1) exitWith {systemChat "Нельзя разобрать поврежденный объект";};

Просмотр сообщенияКенГуру (02 декабря 2015 - 10:26) писал:

Также можно просто изменить "and(damage _cursorTarget <1)"  на "&& (damage _cursorTarget < 0.01)"

Тогда будет менюшка ТОЛЬКО для велосипедов с дамагом менее 1% (дамаг 1 - это 100%), но с написанным выше - игрок хоть будет знать, почему не разбирается. ;)
Спасибо, ребята!

#5 SAYREX

SAYREX

    Новичок

  • Проверенные
  • Pip
  • 9 сообщений

Отправлено 03 декабря 2015 - 01:07

Просмотр сообщенияNoNameUltima (02 декабря 2015 - 09:53) писал:

Посмотри скрипт на ремонт техники, там есть проверка повреждений каждой запчасти.
Или можно проще:
Перед разбором байка -

if ((damage_obj) > 0.1) exitWith {systemChat "Нельзя разобрать поврежденный объект";};
Ваш способ почему то не хочет работать....
Прописывал и на самом вверху и под:
private ["_obj","_animState","_started","_finished"];
и после:
if (dayz_combat == 1) exitwith { cutText ["\n\nВы находитесь в бою и не можете совершить данное действие!", "PLAIN DOWN"] };
private ["_obj","_animState","_started","_finished"];
Итог: ничего не пишет, беспрепятственно разбирает велосипед, с каким бы дамагом он не был((

#6 NoNameUltima

NoNameUltima

    Администратор

  • Администраторы
  • 191 сообщений
  • ГородСанкт-Петербург

Отправлено 03 декабря 2015 - 08:39

Просмотр сообщенияSAYREX (03 декабря 2015 - 01:07) писал:

Ваш способ почему то не хочет работать....
Прописывал и на самом вверху и под:
private ["_obj","_animState","_started","_finished"];
и после:
if (dayz_combat == 1) exitwith { cutText ["\n\nВы находитесь в бою и не можете совершить данное действие!", "PLAIN DOWN"] };
private ["_obj","_animState","_started","_finished"];
Итог: ничего не пишет, беспрепятственно разбирает велосипед, с каким бы дамагом он не был((

Можно еще в другом скрипте прописать, чтоб уж точно не работало.
Смотри где у тебя идет инициализация _obj и после нее прописывай.




Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных