Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
DrTauren

Скрипт самозалива крови и снятия скинов

Recommended Posts

Что нам понадобится:
1) Файл player_takeClothes

2) Файл fn_selfActions.sqf

3) Папка selfbloodbag
4) Notepad

 

Инструкция:
1) Качаем файлы, создаём папку "scripts" в папке нашей миссии (MPMissions\DayZ_Epoch_11.Chernarus) и скидываем файлы из архивов в эту папку. Папку "selfbloodbag" так же скидываем в папку "scripts".
2) Заходим в "init.sqf" и ищем эти строки:

call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf";
//Compile regular functions
progressLoadingScreen 0.5;

Добавляем сразу после них это:

fnc_usec_selfActions = compile preprocessFileLineNumbers "scripts\fn_selfActions.sqf";

3) Заходим в "fn_selfActions.sqf" и ищем эти строки:

_onLadder =                (getNumber (configFile >> "CfgMovesMaleSdr" >> "States" >> (animationState player) >> "onLadder")) == 1;
_canDo = (!r_drag_sqf and !r_player_unconscious and !_onLadder);
 

Добавляем сразу после них это: 

_mags = magazines player;
    
    // Krixes Self Bloodbag
    if ("ItemBloodbag" in _mags) then {
        hasBagItem = true;
    } else { hasBagItem = false;};
    if((speed player <= 1) && hasBagItem && _canDo) then {
        if (s_player_selfBloodbag < 0) then {
            s_player_selfBloodbag = player addaction[("<t color=""#c70000"">" + ("Self Bloodbag") +"</t>"),"Scripts\selfbloodbag\player_selfbloodbag.sqf","",5,false,true,"", ""];
        };
    } else {
        player removeAction s_player_selfBloodbag;
        s_player_selfBloodbag = -1;
    };

 

Ищем эти строки:

//Sleep
            if(_isTent and _ownerID == dayz_characterID) then {
             if ((s_player_sleep < 0) and (player distance _cursorTarget < 3)) then {
              s_player_sleep
= player addAction [localize "str_actions_self_sleep",
"\z\addons\dayz_code\actions\player_sleep.sqf",_cursorTarget, 0, false,
true, "",""];
             };
            } else {
             player removeAction s_player_sleep;
             s_player_sleep = -1;
            };

Добавляем сразу после них это: 

_clothesTaken = cursorTarget getVariable["clothesTaken",false];
                       
               // Take clothes by Zabn @ BalotaBuddies.net
               if (_isMan and !_isAlive and !_isZombie and !_clothesTaken and !_isAnimal) then {
                   if (s_player_clothes < 0) then {
                       s_player_clothes
= player addAction [("<t color='#0096ff'>")+("Take
Clothes")+("</t>"), "scripts\player_takeClothes.sqf",cursorTarget,
-10, false, true, "",""];
                   };
               } else {
                   player removeAction s_player_clothes;
                   s_player_clothes = -1;
                   };

4) Откройте папку BattlEye (MPMissions\DayZ_Epoch_11.Chernarus\BattlEye), зайдите в "setvariable.txt" и конец первой строки добавьте:

!="clothesTaken"

Share this post


Link to post
Share on other sites



С этим скриптом - player_takeClothes.sqf, есть небольшая трабла. - Отсутствует проверка на расстояние до цели.

т.е. скрипт слегка баговый - 

Вызваем меню снятия одежды

Не закрывая меню отбегаем от трупа

После этого(неважно насколько далеко отошли от тела), если меню не закрывали, можно снимать одежду.

Share this post


Link to post
Share on other sites

Поставил скрипт самозаливки крови, после чего перестали открываться машины! в чем может быть проблема?

Share this post


Link to post
Share on other sites

Поставил скрипт самозаливки крови, после чего перестали открываться машины! в чем может быть проблема?

Ну не этот же? А так-файл fn-selfactions не обновлён для новой версии Эпохи.

Share this post


Link to post
Share on other sites

Ну не этот же? А так-файл fn-selfactions не обновлён для новой версии Эпохи.

Вот именно этот взял все эти файлы и поставил! И не открываются

Share this post


Link to post
Share on other sites

 

Ну не этот же? А так-файл fn-selfactions не обновлён для новой версии Эпохи.

Вот именно этот взял все эти файлы и поставил! И не открываются

 У тебя EPOCH какой версии?

Share this post


Link to post
Share on other sites

 У тебя EPOCH какой версии?

 

1.0.3.1 -  проблема действительно крылась в файле  fn-selfactions!

Вопрос решен!

Share this post


Link to post
Share on other sites

 

 У тебя EPOCH какой версии?

 

1.0.3.1 -  проблема действительно крылась в файле  fn-selfactions!

Вопрос решен!

ну а в чём была проблема???

Share this post


Link to post
Share on other sites

 

 

 У тебя EPOCH какой версии?

 

1.0.3.1 -  проблема действительно крылась в файле  fn-selfactions!

Вопрос решен!

ну а в чём была проблема???

Я взял другой файл  fn-selfactions который у меня был раньше прописал туда все нужно и заработало!

Share this post


Link to post
Share on other sites

 

 

 

 У тебя EPOCH какой версии?

 

1.0.3.1 -  проблема действительно крылась в файле  fn-selfactions!

Вопрос решен!

ну а в чём была проблема???

Я взял другой файл  fn-selfactions который у меня был раньше прописал туда все нужно и заработало!

можешь скинуть файл нормальный ???

Share this post


Link to post
Share on other sites

Кстати, сюда также можно добавить скрипт возможности суицида:

  Шаг 1. В вышеуказанный файл fn_selfActions.sqf добавить в самый низ текста следующий код:

// ---------------------------------------SUICIDE START------------------------------------
 
private ["_handGun"];
_handGun = currentWeapon player;
if ((_handGun in ["glock17_EP1","M9","M9SD","Makarov","MakarovSD","revolver_EP1","UZI_EP1","Sa61_EP1","Colt1911"]) && (player ammo _handGun > 0)) then {
    hasSecondary = true;
} else {
    hasSecondary = false;
};
if((speed player <= 1) && hasSecondary && _canDo) then {
    if (s_player_suicide < 0) then {
        s_player_suicide = player addaction[("<t color=""#ff0000"">" + ("Commit Suicide") +"</t>"),"suicide.sqf",_handGun,0,false,true,"", ""];
    };
} else {
    player removeAction s_player_suicide;
    s_player_suicide = -1;
};
 
// ---------------------------------------SUICIDE END------------------------------------

  Шаг 2. В папке с вашей миссией (там, где находится init.sqf)  создать файл suicide.sqf и внести в него следующий код:

//Suicide script by Grafzahl edited by axeman to allow coming back from the brink.
//File name: suicide.sqf 
private ["_Secondary","_lostHope","_plEH","_actSuicide"];
_Secondary = currentWeapon player;
_plEH = player addEventHandler ["fired", "player SetDamage 1.1"];
_lostHope = time;
r_interrupt = false;

cutText [format["You think about your family... 10 Seconds"], "PLAIN DOWN"];
sleep 2;
player playmove "ActsPercMstpSnonWpstDnon_suicide1B";
_actSuicide = 1;

while {alive player}do{

    if(r_interrupt)exitWith{
    player playMoveNow "AmovPercMstpSlowWrflDnon_AmovPsitMstpSlowWrflDnon";
    cutText [format["She wouldn't have wanted it to end this way.."], "PLAIN DOWN"];
    
        while{true}do{
        if(!((animationState player) in ["AmovPercMstpSlowWrflDnon_AmovPsitMstpSlowWrflDnon"]) && (alive player))exitWith{player removeEventHandler["fired", _plEH];sleep 1;player switchmove "";sleep 1;PVDZE_plr_Save = [player,[],true,true];publicVariableServer "PVDZE_plr_Save";};
        };
    };
    
    if(time - _lostHope > 2 && _actSuicide < 2)then{
    cutText [format["Your little daughter, and what happened to her... 6 Seconds"], "PLAIN DOWN"];
    _actSuicide = 2;
    };
    
    if(time - _lostHope > 6 && _actSuicide < 3)then{
    cutText [format["You cant take this shit any longer... 2 Seconds"], "PLAIN DOWN"];
    _actSuicide = 3;
    };
    
    if(time - _lostHope > 7 && _actSuicide <4)then{
    cutText [format["I come to you Sahra! Goodbye cruel world!"], "PLAIN DOWN"];
    _actSuicide = 4;
    };
    
    if(time - _lostHope > 9.2 && _actSuicide > 3)exitWith{
    player fire _Secondary;
    };

sleep .1;
};

В принципе всё. У себя проверил на epoch 1.0.4.2, вместе всё работает и переливание крови, и скрипт снятия одежды,  и "суицид".

Пример:


Edited by Elmo (see edit history)

Share this post


Link to post
Share on other sites

а как добавить все скины?не могу найти чтото

я так понял, что там система снятия относительно класса и прописывать их не надо.

 

 

а дальше мой вопрос по скрипту, ставил отдельно только одежду и есть проблема, можно с ботов снять 2 екземпляра одежды, обычной и бандита+ если много раз нажимать пока происходит снятие можно снять до 8 скинов, пишет что скин уже снят, но всё равно добавляет в снарягу, как исправить, кто знает подскажите, буду благодарен. Заранее спасибо

Share this post


Link to post
Share on other sites

4) Откройте папку BattlEye (MPMissions\DayZ_Epoch_11.Chernarus\BattlEye), зайдите в "setvariable.txt" и конец первой строки добавьте:

!="clothesTaken";
У меня нет этого, но и без него работает. Где взять батле и тхт фаил ? и что будет если непрописывать туда ?<br />
И кстати почемуто после того как установил у меня трупы не прячутся :)</div>

Edited by Adhiel (see edit history)

Share this post


Link to post
Share on other sites

 

4) Откройте папку BattlEye (MPMissions\DayZ_Epoch_11.Chernarus\BattlEye), зайдите в "setvariable.txt" и конец первой строки добавьте:

!="clothesTaken";

У меня нет этого, но и без него работает. Где взять батле и тхт фаил ? и что будет если непрописывать туда ?<br />

И кстати почемуто после того как установил у меня трупы не прячутся :)</div>

ну короче как я понял))) когда много ставишь скриптов всё ёначинает работать через жопу)))

Share this post


Link to post
Share on other sites

у меня epoch 1.0.4.2 установил данный скрипт,самозаливание крови и снятия одежды работает, но в машину не садиться, как исправить эту проблему???

Share this post


Link to post
Share on other sites

Как сделать проверку на кол-во крови, например крови 12000, а всё равно можно переливать и в скроле появляется меню для переливания...

Share this post


Link to post
Share on other sites

у меня epoch 1.0.4.2 установил данный скрипт,самозаливание крови и снятия одежды работает, но в машину не садиться, как исправить эту проблему???

У тебя карявый файл Fn selfaction либо он пострадал от изменений, вобщем ищи либо сделал не по гайду либо файл карявый

Share this post


Link to post
Share on other sites

Как сделать проверку на кол-во крови, например крови 12000, а всё равно можно переливать и в скроле появляется меню для переливания...

и так по данному скрипту можно заливать при 12000

Share this post


Link to post
Share on other sites

 

Как сделать проверку на кол-во крови, например крови 12000, а всё равно можно переливать и в скроле появляется меню для переливания...

и так по данному скрипту можно заливать при 12000

Я про то что бы переливать можно было при кол-ве крови от 8000 хотя бы.А то при вызове скрола случайно тыкаешь на "перелить кровь".Зачем переливать при 12000 крови(боюсь лопнуть))).

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.