Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Нужна помощь?

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

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

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок
  • Загляните на торговую площадку

    Там вы можете купить
    Всё что касается игровых серверов
ZerG

Анимация Сува/МВ-22/UH-1Y/AH-1Z

Recommended Posts

Доброго времени суток всем.

Лазил по форуму не нашел этот скрипт(доступа в приват пока нету, так что хз есть он там  или нет), перевел, доработал и выкладываю.

 

Что это?

Этот скрипт добавляет анимации к некоторой технике: Сув с миниганом, МВ-22, UH-1Y и AH-1Z.

 

Данная версия скрипта взята с Эпочкома и переработана мной(в оригинале нет анимации Z1 и действия есть не актуальные(Разложить скопу у мв при ее УЖЕ разложенном состоянии))

Скрины:

 

 

Сув арморед с опущенным пулеметом : 

suv.png

Мв со сложенной скопой и открытым люком:

22.jpg

AH1Z  со сложенными лопостями:

1z.jpg

UH-1Y со сложенными лопостями: 

1y.jpg

 

 

 

Для установки нам понадобится:

  1. Архив
  2. кастомный variables.sqf
  3. Кастомный compiles.sqf
  4. кастомный fn_selfActions.sqf

Установка:

  1. Кидаем файлы из архива в mpmissions(куда хотите)
  2. Открываем кастомный variables.sqf
  3. Находим кусок кода : 

    dayz_resetSelfActions = {

  4. Под ним вставляем: 

    mv22_fold = -1;
    mv22_unfold = -1;
    mv22_open = -1;
    mv22_close = -1;
    suv_close = -1;
    suv_open = -1;
    UH1Y_fold = -1;
    UH1Y_unfold = -1;
    AH1Z_fold = -1;
    AH1Z_unfold = -1;

  5. Открываем кастомный compiles.sqf
  6. Находим кусок кода: 

    if (!isDedicated) then {

  7. Под ним вставляем: 

    mv22_pack = compile preprocessFileLineNumbers "\ca\air2\mv22\scripts\pack.sqf";
    UH1Y_pack = compile preprocessFileLineNumbers "\ca\air2\UH1Y\scripts\fold.sqf";
    AH1Z_pack = compile preprocessFileLineNumbers "\ca\air\scripts\AH1Z_fold.sqf";

  8. Открываем кастомный fn_selfActions.sqf
  9. Находим кусок кода:

    if (_canPickLight && !dayz_hasLight && !_isPZombie) then {
    if (s_player_grabflare < 0) then {
    _text = getText (configFile >> "CfgAmmo" >> (typeOf _nearLight) >> "displayName");
    s_player_grabflare = player addAction [format[localize "str_actions_medical_15",_text], "\z\addons\dayz_code\actions\flare_pickup.sqf",_nearLight, 1, false, true, "", ""];
    s_player_removeflare = player addAction [format[localize "str_actions_medical_17",_text], "\z\addons\dayz_code\actions\flare_remove.sqf",_nearLight, 1, false, true, "", ""];
    };
    } else {
    player removeAction s_player_grabflare;
    player removeAction s_player_removeflare;
    s_player_grabflare = -1;
    s_player_removeflare = -1;
    };

  10. Под ним вставляем:

    Для МВ

    /*mv*/
    if (_inVehicle && ((_vehicle isKindOf "MV22")or(_vehicle isKindOf "MV22_DZ"))) then {
    // при запуске двигателя принудительно разворачиваем скопу
    if (isEngineOn _vehicle) then {
    [_vehicle,0] call mv22_pack;
    };
    if ((mv22_fold < 0)and(!(isEngineOn _vehicle))) then {
    themv22 = _vehicle;
    if ((_vehicle animationPhase "pack_engine_1") < 1) then {
    mv22_fold = themv22 addAction ["Сложить скопу","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\mv22_fold.sqf","",5,false,true];
    themv22 removeAction mv22_unfold;
    mv22_unfold = -1;
    };
    };
    if ((mv22_unfold < 0)and(!(isEngineOn _vehicle))) then {
    themv22 = _vehicle;
    if ((_vehicle animationPhase "pack_engine_1") > 0) then {
    mv22_unfold = themv22 addAction ["Разложить скопу","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\mv22_unfold.sqf","",5,false,true];
    themv22 removeAction mv22_fold;
    mv22_fold = -1;
    };
    };
    if (mv22_open < 0) then {
    themv22 = _vehicle;
    if ((_vehicle animationPhase "ramp_bottom") < 1) then {
    mv22_open = themv22 addAction ["Открыть люк","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\mv22_open.sqf","",5,false,true];
    themv22 removeAction mv22_close;
    mv22_close = -1;
    };
    };
    if (mv22_close < 0) then {
    themv22 = _vehicle;
    if ((_vehicle animationPhase "ramp_bottom") > 0) then {
    mv22_close = themv22 addAction ["Закрыть люк","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\mv22_close.sqf","",5,false,true];
    themv22 removeAction mv22_open;
    mv22_open = -1;
    };
    };
    //отключаем действия с винтом (в коментах действия с рампой) если двигатель запущен
    if (isEngineOn _vehicle) then {
    themv22 removeAction mv22_fold;
    mv22_fold = -1;
    themv22 removeAction mv22_unfold;
    mv22_unfold = -1;
    // themv22 removeAction mv22_open;
    // mv22_open = -1;
    // themv22 removeAction mv22_close;
    // mv22_close = -1;

    };
    } else {
    //отключаем меню если игрок не в технике
    if (!isNil "_vehicle") then {
    themv22 removeAction mv22_fold;
    mv22_fold = -1;
    themv22 removeAction mv22_unfold;
    mv22_unfold = -1;
    themv22 removeAction mv22_open;
    mv22_open = -1;
    themv22 removeAction mv22_close;
    mv22_close = -1;
    };
    };


    Для Сува

    if (_inVehicle && ((_vehicle isKindOf "ArmoredSUV_PMC")or(_vehicle isKindOf "ArmoredSUV_PMC_DZ")or(_vehicle isKindOf "ArmoredSUV_PMC_DZe"))) then {

    if ((_vehicle animationPhase "HideGun_01") == 1) then {
    _unit = _vehicle turretUnit [0];
    if (!(isNull _unit)) then {
    _unit action ["moveToCargo",_vehicle,2];
    titleText ["\n\nYou must open the hatch first.","PLAIN DOWN"];titleFadeOut 4;
    };
    };
    if (suv_close < 0) then {
    thesuv = _vehicle;
    if ((_vehicle animationPhase "HideGun_01") < 1) then {
    suv_close = thesuv addAction ["Спрятать пулемет","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\suv_close.sqf","",5,false,true];
    thesuv removeAction suv_open;
    suv_open = -1;
    };
    };
    if (suv_open < 0) then {
    if ((_vehicle animationPhase "HideGun_01") > 0) then {
    suv_open = thesuv addAction ["Поднять пулемет","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\suv_open.sqf","",5,false,true];
    thesuv removeAction suv_close;
    suv_close = -1;
    };
    };
    } else {
    if (!isNil "thesuv") then {
    thesuv removeAction suv_close;
    suv_close = -1;
    thesuv removeAction suv_open;
    suv_open = -1;
    };
    };



    Для 1У

    /*1y*/
    if (_inVehicle && ((_vehicle isKindOf "UH1Y")or(_vehicle isKindOf "UH1Y_DZ")or(_vehicle isKindOf "UH1Y_DZE"))) then {
    if (isEngineOn _vehicle) then {
    [_vehicle,0] call UH1Y_pack;
    };

    if ((UH1Y_fold < 0)and(!(isEngineOn _vehicle))) then {
    theuh1y = _vehicle;
    if ((_vehicle animationPhase "mainrotor_folded") > 0) then {
    UH1Y_fold = theuh1y addAction ["Сложить винт","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\UH1Y_fold.sqf","",5,false,true];
    theuh1y removeAction UH1Y_unfold;
    UH1Y_unfold = -1;
    };
    };
    if ((UH1Y_unfold < 0)and(!(isEngineOn _vehicle))) then {
    theuh1y = _vehicle;
    if ((_vehicle animationPhase "mainrotor_folded") < 1) then {
    UH1Y_unfold = theuh1y addAction ["Разложить винт","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\UH1Y_unfold.sqf","",5,false,true];
    theuh1y removeAction UH1Y_fold;
    UH1Y_fold = -1;
    };
    };

    if (isEngineOn _vehicle) then {
    theuh1y removeAction UH1Y_fold;
    UH1Y_fold = -1;
    theuh1y removeAction UH1Y_unfold;
    UH1Y_unfold = -1;
    };
    } else {
    if (!isNil "_vehicle") then {
    theuh1y removeAction UH1Y_fold;
    UH1Y_fold = -1;
    theuh1y removeAction UH1Y_unfold;
    UH1Y_unfold = -1;
    };
    };



    Для 1Z

    /*1z*/
    if (_inVehicle && (_vehicle isKindOf "AH1Z")) then {
    if (isEngineOn _vehicle) then {
    [_vehicle,0] call AH1Z_pack;
    };
    if ((AH1Z_fold < 0)and(!(isEngineOn _vehicle))) then {
    theAH1Z = _vehicle;
    if ((_vehicle animationPhase "mainrotor_folded") > 0) then {
    AH1Z_fold = theAH1Z addAction ["Сложить винт","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\AH1Z_fold.sqf","",5,false,true];
    theAH1Z removeAction AH1Z_unfold;
    AH1Z_unfold = -1;
    };
    };
    if ((AH1Z_unfold < 0)and(!(isEngineOn _vehicle))) then {
    theAH1Z = _vehicle;
    if ((_vehicle animationPhase "mainrotor_folded") < 1) then {
    AH1Z_unfold = theAH1Z addAction ["Разложить винт","*ВАШ ПУТЬ, КУДА СКИНУЛИ ФАЙЛЫ ИЗ АРХИВА*\AH1Z_unfold.sqf","",5,false,true];
    theAH1Z removeAction AH1Z_fold;
    AH1Z_fold = -1;
    };
    };
    if (isEngineOn _vehicle) then {
    theAH1Z removeAction AH1Z_fold;
    AH1Z_fold = -1;
    theAH1Z removeAction AH1Z_unfold;
    AH1Z_unfold = -1;
    };
    } else {
    if (!isNil "_vehicle") then {
    theAH1Z removeAction AH1Z_fold;
    AH1Z_fold = -1;
    theAH1Z removeAction AH1Z_unfold;
    AH1Z_unfold = -1;
    };
    };


  11. Сохраняем, запаковываем, радуемся!

Для владельцов Инфистара!!!

 

1)Открываем AHconfig/
2)Находим :
_dayzActions =
3) после него вставляем:
mv22_fold,mv22_unfold,mv22_open,mv22_close,suv_close,suv_open,UH1Y_fold,UH1Y_unfold,AH1Z_fold,AH1Z_unfold

 

 

P.S. Это мой первый пост, не судите строго. Поставьте + в репу, если не жалко

Edited by ZerG (see edit history)

Share this post


Link to post
Share on other sites



есть еше к с130

А оно надо кому-то??? С-130, вроде как, покупают разве что для покатушек или сбросить на кого-нибудь.

Share this post


Link to post
Share on other sites

@@ZerG, видосик бы ещё или скриншоты  :wink:  А так плюс. Давно как-то хотел выложить это, но руки не дошли  :wacko:

Share this post


Link to post
Share on other sites

@@ZerG, видосик бы ещё или скриншоты  :wink:  А так плюс. Давно как-то хотел выложить это, но руки не дошли  :wacko:

Прикрепил скрины=)

Share this post


Link to post
Share on other sites

 

Прикрепил скрины=)

Скрины прикрепи на сайт, размещение фото на фотохостингах/файлообмениках категорически запрещенно

Share this post


Link to post
Share on other sites

В оригинале этого скрипта есть анимация AH1Z 

http://opendayz.net/threads/release-animated-vehicles.20108/

 

Скрипт работает. Спасибо! 

Но жутко спамит на стороне клиента в рпт

 

if (!isNil "_vehicle") then {
themv22 removeAction mv22_fold;
mv22_fol>
  Error position: <themv22 removeAction mv22_fold;
mv22_fol>
  Error Undefined variable in expression: themv22

Error in expression <
} else {
if (!isNil "_vehicle") then {
theuh1y removeAction UH1Y_fold;
UH1Y_fol>
  Error position: <theuh1y removeAction UH1Y_fold;
UH1Y_fol>
  Error Undefined variable in expression: theuh1y

Error in expression <
} else {
if (!isNil "_vehicle") then {
theAH1Z removeAction AH1Z_fold;
AH1Z_fol>
  Error position: <theAH1Z removeAction AH1Z_fold;
AH1Z_fol>
  Error Undefined variable in expression: theah1z

Error in expression <} else {

if (!isNil "_vehicle") then {
themv22 removeAction mv22_fold;
mv22_fol>
  Error position: <themv22 removeAction mv22_fold;
mv22_fol>
  Error Undefined variable in expression: themv22

Error in expression <
} else {
if (!isNil "_vehicle") then {
theuh1y removeAction UH1Y_fold;
UH1Y_fol>
  Error position: <theuh1y removeAction UH1Y_fold;
UH1Y_fol>
  Error Undefined variable in expression: theuh1y

Error in expression <
} else {
if (!isNil "_vehicle") then {
theAH1Z removeAction AH1Z_fold;
AH1Z_fol>
  Error position: <theAH1Z removeAction AH1Z_fold;
AH1Z_fol>
  Error Undefined variable in expression: theah1z

Error in expression <} else {

if (!isNil "_vehicle") then {
themv22 removeAction mv22_fold;
mv22_fol>
  Error position: <themv22 removeAction mv22_fold;
mv22_fol>
  Error Undefined variable in expression: themv22

Error in expression <
} else {
if (!isNil "_vehicle") then {
theuh1y removeAction UH1Y_fold;
UH1Y_fol>
  Error position: <theuh1y removeAction UH1Y_fold;
UH1Y_fol>
  Error Undefined variable in expression: theuh1y

Error in expression <
} else {
if (!isNil "_vehicle") then {
theAH1Z removeAction AH1Z_fold;
AH1Z_fol>
  Error position: <theAH1Z removeAction AH1Z_fold;
AH1Z_fol>
  Error Undefined variable in expression: theah1z
Edited by rss_adm (see edit history)

Share this post


Link to post
Share on other sites

У меня не работает, делал все по инструкции. Так же не появляется улучшенная торговля... я уже мозг сломал, все работает запускается, а эти 2 темы хоть убей не хотят....

Share this post


Link to post
Share on other sites

Заработал только для сува, с воздушной техникой никак не хочет

Share this post


Link to post
Share on other sites

mv22_pack = compile preprocessFileLineNumbers "\ca\air2\mv22\scripts\pack.sqf"; UH1Y_pack = compile preprocessFileLineNumbers "\ca\air2\UH1Y\scripts\fold.sqf"; AH1Z_pack = compile preprocessFileLineNumbers "\ca\air\scripts\AH1Z_fold.sqf";

 

Или я чего то не понимаю, или ошибка в скрипте, но как это заработает если нет там этих файлов изначально. Да и даже если подставлять из твоего архива то нет там 

\ca\air2\mv22\scripts\pack.sqf" Может нужно такой mv22_fold.sqf

 

 

 

1)Открываем AHconfig/ 2)Находим : _dayzActions = 3) после него вставляем: mv22_fold,mv22_unfold,mv22_open,mv22_close,suv_close,suv_open,UH1Y_fold,UH1Y_unfold,AH1Z_fold,AH1Z_unfold

 

Ну и тут тоже

 Разве не так нужно??? 

"mv22_fold","mv22_unfold","mv22_open","mv22_close","suv_close","suv_open","UH1Y_fold","UH1Y_unfold","AH1Z_fold","AH1Z_unfold",

Edited by Sash96rus (see edit history)

Share this post


Link to post
Share on other sites

Заработал только для сува, с воздушной техникой никак не хочет

А как ты сделал? Можешь помочь?

Share this post


Link to post
Share on other sites

Все разобрался)) проблема была с моей стороны)) Спасибо)

Share this post


Link to post
Share on other sites

В целом работает, только есть недочеты: Анимация сворачивания у МВ-22 на мой взгляд слишком быстрая, у UH1Y винт сворачивается вовсе без анимации)

Может кто знает как поправить?)

Share this post


Link to post
Share on other sites

Топай писать конфиг анимации, только так :)
Тут просто идет вызов самой анимации.

Share this post


Link to post
Share on other sites

Топай писать конфиг анимации, только так :)

Тут просто идет вызов самой анимации.

а нельзя просто замедление как то написать?

Share this post


Link to post
Share on other sites
Анимации для C130J, Merlin, Mi24
Установка идентична первому посту из этой темы.
 

variables.sqf

    c130d_open = -1;
    c130d_close = -1;
    c130r_open = -1;
    c130r_close = -1;
    mi24r_open = -1;
    mi24r_close = -1;
    mi24l_open = -1;
    mi24l_close = -1;
    merlinr_open = -1;
    merlinr_close = -1;
    merlinl_open = -1;
    merlinl_close = -1;

 

fn_selfActions.sqf

if (_inVehicle && {_vehicle isKindOf "C130J_US_EP1"}) then {
   if (c130d_open < 0) then {
     thec130 = _vehicle;
     if !(isEngineOn thec130) then {
       c130d_open = thec130 addAction ["Open Door","custom\animate\c130d_open.sqf","",-12,false,true];
       c130d_close = thec130 addAction ["Close Door","custom\animate\c130d_close.sqf","",-13,false,true];
       c130r_open = thec130 addAction ["Open Ramp","custom\animate\c130r_open.sqf","",-14,false,true];
       c130r_close = thec130 addAction ["Close Ramp","custom\animate\c130r_close.sqf","",-15,false,true];
     };
   };
} else {
    if (!isNil "thec130") then {
       thec130 removeAction c130d_open;
       c130d_open = -1;
       thec130 removeAction c130d_close;
       c130d_close = -1;
       thec130 removeAction c130r_open;
       c130r_open = -1;
       thec130 removeAction c130r_close;
       c130r_close = -1;
   };
};


if (_inVehicle && {_vehicle isKindOf "Mi24_Base"}) then {
   if (mi24r_open < 0) then {
     themi24 = _vehicle;
      if !(isEngineOn themi24) then {
      mi24r_open = themi24 addAction ["RDoor Open","custom\animate\mi24r_open.sqf","",-12,false,true];
       mi24r_close = themi24 addAction ["RDoor Close","custom\animate\mi24r_close.sqf","",-13,false,true];
       mi24l_open = themi24 addAction ["LDoor Open","custom\animate\mi24l_open.sqf","",-14,false,true];
       mi24l_close = themi24 addAction ["LDoor Close","custom\animate\mi24l_close.sqf","",-15,false,true];
     };
   };
} else {
    if (!isNil "themi24") then {
       themi24 removeAction mi24r_open;
       mi24r_open = -1;
       themi24 removeAction mi24r_close;
       mi24r_close = -1;
       themi24 removeAction mi24l_open;
       mi24l_open = -1;
       themi24 removeAction mi24l_close;
       mi24l_close = -1;
   };
};


if (_inVehicle && {_vehicle isKindOf "BAF_Merlin_HC3_D"}) then {
   if (merlinr_open < 0) then {
     themerlin = _vehicle;
      if !(isEngineOn themerlin) then {
       merlinr_open = themerlin addAction ["RDoor Open","custom\animate\merlinr_open.sqf","",-12,false,true];
       merlinr_close = themerlin addAction ["RDoor Close","custom\animate\merlinr_close.sqf","",-13,false,true];
       merlinl_open = themerlin addAction ["LDoor Open","custom\animate\merlinl_open.sqf","",-14,false,true];
       merlinl_close = themerlin addAction ["LDoor Close","custom\animate\merlinl_close.sqf","",-15,false,true];
     };
   };
} else {
    if (!isNil "themerlin") then {
       themerlin removeAction merlinr_open;
       merlinr_open = -1;
       themerlin removeAction merlinr_close;
       merlinr_close = -1;
       themerlin removeAction merlinl_open;
       merlinl_open = -1;
       themerlin removeAction merlinl_close;
       merlinl_close = -1;
   };
};

 

custom\animate\c130d_close.sqf

thec130 animate ["door_2_1",0];
thec130 animate ["door_1",0];

 

custom\animate\c130d_open.sqf
thec130 animate ["door_2_1",1];
thec130 animate ["door_1",1];

 

custom\animate\c130r_close.sqf

thec130 animate ["ramp_top",0];
thec130 animate ["ramp_bottom",0];

 

custom\animate\c130r_open.sqf
thec130 animate ["ramp_top",1];
thec130 animate ["ramp_bottom",1];

 

custom\animate\merlinl_close.sqf

themerlin animate ["DVERE_L",1];
themerlin animate ["DVERE_L_POP",1];

 

custom\animate\merlinl_open.sqf

themerlin animate ["DVERE_L",0];
themerlin animate ["DVERE_L_POP",0];

 

custom\animate\merlinr_close.sqf

themerlin animate ["DVERE_P",1];
themerlin animate ["DVERE_P_POP",1];

 

custom\animate\mi24l_close.sqf

themi24 animate ["dvere_l_vrch",0];
themi24 animate ["dvere_l_spod",0];

 

custom\animate\mi24l_open.sqf

themi24 animate ["dvere_l_vrch",1];
themi24 animate ["dvere_l_spod",1];

 

custom\animate\mi24r_close.sqf

themi24 animate ["dvere_p_vrch",0];
themi24 animate ["dvere_p_spod",0];

 

custom\animate\mi24r_open.sqf

themi24 animate ["dvere_p_vrch",1];
themi24 animate ["dvere_p_spod",1];

 

Если установлен infistar:

AHconfig.sqf

_dayzActions =
[
"c130d_open","c130d_close","c130r_open","c130r_close",
"merlinl_close","merlinl_open","merlinr_close","merlinr_open",
"mi24l_close","mi24l_open","mi24r_close","mi24r_open",
];

 

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

  • Similar Content

    • By BorizzK
      В эксперементалке 1.08 если сбросить предмет находясь на машине (крыше, багажнике, капоте в кузове) предмет проваливается сквозь машину на землю или оказывается в ее текстурах
       
      Тикет
      https://feedback.bistudio.com/T152071
       
      ответ богемии поразителен - сейчас нет простого решения
       
      А ниже что? Проще не бывает...
       
      Собственно код фикса (Автор Я)
       
      Code ``` modded class ItemBase extends InventoryItem { override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc) { super.EEItemLocationChanged(oldLoc,newLoc); if (newLoc.GetType() == InventoryLocationType.GROUND) { if (oldLoc.GetParent()) { PlayerBase player = PlayerBase.Cast(oldLoc.GetParent()); if (player) { FixPositionIfDropOnCar(player); } } } } void FixPositionIfDropOnCar(PlayerBase player) { vector m_RayStart; vector m_RayEnd; m_RayStart = player.GetPosition(); m_RayStart[1] = m_RayStart[1] + 0.5; m_RayEnd = m_RayStart; m_RayEnd[1] = m_RayEnd[1] - 1; RaycastRVParams m_RayCastInput = new RaycastRVParams(m_RayStart, m_RayEnd, this, 0.05); array<ref RaycastRVResult> m_RayCastResults = new array<ref RaycastRVResult>; m_RayCastInput.with = player; m_RayCastInput.flags = CollisionFlags.FIRSTCONTACT; if (DayZPhysics.RaycastRVProxy(m_RayCastInput, m_RayCastResults)) { if (m_RayCastResults.Count() > 0) { Car car; if (Class.CastTo(car, m_RayCastResults[0].obj) || Class.CastTo(car, m_RayCastResults[0].parent)) { this.SetPosition(m_RayCastResults[0].pos + (player.GetDirection() * 0.1)); } } } } } ``` Наверное имеет смысл чуть приподнять предмет над поверхностью, но необходимость этого зависит от типа предмета, потому не стал этого делать
       
      чуть откорректировал код
    • By BorizzK
      Довольно тупое охлаждение жратвы и кастрюли если они оказались на земле
      Прикрутить охлаждение содержимого кастрюли как 2 байта сами знаете что
      Сделать охлаждение после снятия с костра и тп вобщем то же не проблема
       
      Просто код и ничего лишнего
       
      Комментарии к коду добавлю позже
      Логгирование в коде закомментировано - раскомментируйте, что бы наблюдать за процессом
       
      Для жратвы убавление температуры раз в 10 сек на 1 градус
      Для кастрюли на 2 градуса
       
      Охлаждается до дневной температуры воздуха далее охлаждение прекращается
      У бгемотов есть 2 температуры воздуха - дневная и ночная
      Идиотизм? Однозначно
      Я пытался в погоде сделать ее плавное изменение в зависимости от Overcast, Rain и тп, но забил - потом как-нибудь
       
      Есть вопросы, задавайте, отвечу если будет время.
       
      Вобщем как-то так:
       
      //08.05.2020 modded class ItemBase extends InventoryItem { ref Timer m_TemperatureDecrease; private float m_InitTemperature; private float m_DecreaseTempTime = 10; private float m_TempDecreaseCoef = -1; void ItemBase() { m_InitTemperature = 12; //g_Game.GetMission().GetWorldData().GetDayTemperature(); // Не работает ((( какого художника - я хз if ( IsInherited(Pot) /* GetInventory().GetCargo() */ ) { m_TempDecreaseCoef = -2; } } override void AfterStoreLoad() { super.AfterStoreLoad(); if (!IsInherited(FireplaceBase)) TryToStartTempDecrease(); } private void TryToStartTempDecrease() { if (GetTemperature() > GetInitTemperature()) { if (!GetHierarchyParent()) { if (!m_TemperatureDecrease) { Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: Init: TryToStartTempDecrease: this: " + this + ": GetHierarchyParent(): " + GetHierarchyParent() + ": GetTemperature(): " + GetTemperature()); StartTemperatureDecrease(); } } } } override void EEItemLocationChanged(notnull InventoryLocation oldLoc, notnull InventoryLocation newLoc) { super.EEItemLocationChanged(oldLoc,newLoc); //Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: EEItemLocationChanged: this: " + this + ": newLoc.GetType(): " + newLoc.GetType() + ": newLoc.GetParent(): " + newLoc.GetParent() + ": GetTemperature(): " + GetTemperature()); if (GetTemperature() > GetInitTemperature()) { if (!newLoc.GetParent() || newLoc.GetType() == InventoryLocationType.GROUND) { if (!m_TemperatureDecrease) { Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: EEItemLocationChanged: this: " + this + ": Begin decrease temperature: GetTemperature(): " + GetTemperature()); StartTemperatureDecrease(); } } } else { if (m_TemperatureDecrease) { Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: EEItemLocationChanged: this: " + this + ": End decrease temperature: GetTemperature(): " + GetTemperature()); StopTemperatureDecrease(); } } } private void StartTemperatureDecrease() { m_TemperatureDecrease = new Timer( CALL_CATEGORY_SYSTEM ); m_TemperatureDecrease.Run(m_DecreaseTempTime, this, "DecreaseTemperature", NULL, true); } private void StopTemperatureDecrease() { m_TemperatureDecrease.Stop(); m_TemperatureDecrease = NULL; } void DecreaseTemperature() { if (GetTemperature() > GetInitTemperature()) { AddTemperature(GetTempDecreaseCoef()); if ( IsInherited(Pot) /* GetInventory().GetCargo() */) { DecreaseCargoTemperature(); } Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: DecreaseTemperature: this: " + this + ": Decrease: GetTemperature(): " + GetTemperature()); } else { SetTemperature(GetInitTemperature()); StopTemperatureDecrease(); Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: DecreaseTemperature: this: " + this + ": Stop decrease: GetTemperature(): " + GetTemperature()); } } void DecreaseCargoTemperature() { ItemBase item; int item_count = GetInventory().GetCargo().GetItemCount(); for (int i = 0; i < item_count; i++) { item = ItemBase.Cast(GetInventory().GetCargo().GetItem(i)); if (item) { if (item.GetTemperature() > item.GetInitTemperature()) { item.AddTemperature(item.GetTempDecreaseCoef()); Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: DecreaseCargoTemperature: this: " + this + ": Decrease: item: " + item + ": item.GetTemperature(): " + item.GetTemperature()); } else { item.SetTemperature(item.GetInitTemperature()); Print("::: SERVER: [ItemBase extends InventoryItem: Decreasetemp]: DecreaseCargoTemperature: this: " + this + ": Stop decrease: item: " + item + ": item.GetTemperature(): " + item.GetTemperature()); } } } } float GetInitTemperature() { return m_InitTemperature; } float GetTempDecreaseCoef() { return m_TempDecreaseCoef; } } Немного переделал код
      Теперь охлаждается все если оно имеет Т выше 12, а если это кастрюля с содержимым, то и ее содержимое
      Получить Т воздуха в конструкторе не выходит потому указал руками
       
    • By DrTauren
      Что нам понадобится:
      1) Архив
      2) Notepad


      Инструкция:
      1) Качаем архив и копируем из него папку custom в вашу папку с миссией
      2) Открываем init.sqf и ищем такие строки:
      if (!isDedicated) then { 0 fadeSound 0; waitUntil {!isNil "dayz_loadScreenMsg"}; dayz_loadScreenMsg = (localize "STR_AUTHENTICATING"); _id = player addEventHandler ["Respawn", {_id = [] spawn player_death;}]; }; 3) Перед закрывающей скобкой }; прописываем это:
      _nil = [] execVM "custom\JAEM\EvacChopper_init.sqf"; 4) Выбираем одно из двух, выполняем действия указанные ниже:
      Если у вас нет своего variables.sqf в папке с миссией:  
       
      Если у вас есть свой variables.sqf в папке с миссией:  

      5) Копируем файлы remoteexec.txt, waypointcondition.txt, waypointstatement.txt в вашу папку с фильтрами BattlEye (\instance_11_Chernarus\BattlEye)

      Настройка параметров:
      Открываем файл EvacChopper_init.sqf (custom\JAEM\EvacChopper_init.sqf), находим нужную строку, редактируем по своему усмотрению:
      evac_chopperPrice = 3; Цена вашего спасения евреями. По умолчанию 3 Брифкейса
       
      evac_needRadio = 0; Обязательно ли радио для того, что бы вызвать хапуг? (0-не нужно, 1-таки извольте)
       
      evac_zoneMarker = 0; Дымовая граната на месте эвакуации (0-не надо, 1-таки не увидим мы без дыма)
       
      evac_minDistance = 500; Дословно: минимальное расстояние, что бы вызвать евреев. Меньше 500 не ставить!
    • By Serdce
      Ссылка на первоисточник - https://github.com/BrettNordin/Exile
      Я всего лишь перевёл
      Собственно переходим по ссылке, и скачиваем архив.
      Для тех, кто не знает как качать с хаба скрин 
      И так, едем дальше
      Скачанный архив распаковываем в удобное место для работы,
      Идём в ваш @ExileServer, там нас интересуют файлы - extDB2.dll , extDB2.so , extDB2-conf.ini , XM8.dll , XM8.so Удаляем эти файлы
      Далее идём в @ExileServer которую мы скачали, всё её содержимое копируем в аналогичную папку на сервере.
      Теперь идём в вашу MPmissions и там распаковываем вашу миссию "Exile.название карты",
      Туда мы копируем содержимое папки Exile.MapName из архива,
      Далее открываем ваш config.cpp и ищем там class CfgExileCustomCode 
      В него мы добавляем - #include "CfgExileCustomCode.cpp"
      Должно получится так
      Запаковываем обратно)
      Ну и теперь из архива мы копируем tbbmalloc.dll, tbbmalloc_x64.dll в папку расположения вашего Arma3_server.exe
      Не забываем поменять в вашем файле запуска сервера с arma3server.exe на arma3server_x64.exe 
      Ну и финишная прямая, открываем вашу базу данных ( желательно с название exile ) и добавляем файл Exile_Database_Update_64x.sql
      Далее настройте под себя ваш extdb3-conf.ini
       
    • By Astrahrom
      Столкнулся с цикличной проблемой в лаунчере, при установке ботов A3EAI:
      Script @epochhive\A3EAI_config.sqf not found Оказалось, что все дело в том, что в открытом доступе лежат старые версии этого скрипта, и все кто пытается воткнуть в Epochhive, как я, данный скрипт - делают это по старой схеме, не актуальной для последних версий.
       
      Решение
       
      Скачиваем - https://yadi.sk/d/HfXeB1pEAGoRtw
       
      Устанавливаем:
      1. Взять из папки архива "1. Installation Package" папку "@A3EAI" и вложить её в папку с вашим сервером;
      2. Прописать скрипт в вашем запускаторе, примерно так:
      -servermod=@EpochHive;@A3EAI; Пример моего запускатора:
      @echo off start "arma3" "arma3server.exe" -servermod=@EpochHive;@A3EAI; -mod=@Epoch; -config=C:\Arma3Server\sc\server.cfg -port=2307 -profiles=sc -cfg=C:\Arma3Server\sc\basic.cfg -name=sc -autoINIT Варианты настройки, которые хранятся в самой папке @A3EAI\addons\a3eai_config в файле config.cpp.
×
×
  • 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.