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
Sanbka

Автоматическая система запаковки pbo

Вообщем, на vilaer, и некоторые сервера о которых я знаю, реализовали такую систему что после рестарта все обновления которые вы применяете автоматически упаковываются в pbo без ручного вмешательства! Кто реализовал такую систему? Можете поделится? Или хотя бы подсказать..)

Share this post


Link to post
Share on other sites

1 answer to this question

Recommended Posts

  • 0

"PBOConsole.exe" -pack %cd%\@Server\addons\dayz_server %cd%\@Server\addons\dayz_server.pbo

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 CubeIn
      Приветствую друзья, возникла неприятная ошибка.
      Подписал все ключи через DS Utils, вставил ключ в северную часть, но все равно при заходе на сервер пишет данную ошибку.
      Client contains PBO which is not part of server data
       
    • By Alex39
      Конвертер EBO в PBO и PBO в EBO

      Зачастую мы сталкиваемся что нам нужно распаковать EBO файл, но ни чего его не открывает, вот самые простые конвертеры, открывает EBO и конвертирует обратно в PBO.
      Вам нужно только перетянуть нужный файл на нужный конвертер, и радуемся.
       
       
       
    • By RedLink
      Всем Привет.
      Представляю вам систему логирования действий игроков и т.д. по принципу InfiSTAR.
      Для установки вам понадобятся кастомный compiles.sqf (тем кто не знает как это сделать, -> поиск по форуму).
       
      1. Открываем в серверной части файл dayz_server\init\server_functions.sqf и в самом низу вставляем:
      "SK_log" addPublicVariableEventHandler {(_this select 1) call fnc_Log;}; 2. Теперь открываем в папке с миссией файл compiles.sqf и ищем что-то в этом плане:
       
      if (!isDedicated) then { блаблабла }; и после него вставляем
      fnc_log = { private ["_fileName","_message","_dll","_dll2","_display"]; _fileName = toLower (_this select 0); _message = _this select 1; _display = if (count _this > 2) then {_this select 2} else {false}; if (!isDedicated) then { SK_Log = [_fileName,if (typeName _message == "ARRAY") then {_message} else {toArray _message},_display]; publicVariableServer "SK_Log"; } else { _message = if (typeName _message == "ARRAY") then {toString _message} else {_message}; if (_display) then {diag_log format ["[%1] %2",toUpper (_fileName),_message];}; _dll2 = format["!InfiSTAR_Logs~%1~%2",_fileName,_message]; "LogDLL" callExtension _dll2; }; }; где "!InfiSTAR_Logs" - ваша папка, куда вы хотите складировать логи.
       
      3. Открываем файл publicVariable.txt в фильтрах Battleye и в первой строке "5 !=блаблабла" в конце добавляем "!=SK_Log" (пример ниже)
      5 !"donn_heli_monitor" !"fnc_log" !=fnc_log !"redHunter" !=redHunter !"cad_pvar_s" !"PVDZE_veh_Update" !="PVDZE_veh_Update" !="PVDZE_adminevents" !="PVDZ_plr_Death" !"PVDZ_plr_Death" !="PVDZE_atp" !"PVDZE_atp" !"PVDZ_plr_LoginRecord" !="PVDZ_plr_LoginRecord" !"PVDZE_log_lockUnlock" !=PVDZE_log_lockUnlock !"redHunter" !=redHunter !"redDiagLog" !=redDiagLog !="PVDZE_atp" !=(remExField|remExFP) !=(PVCDZ_obj_GutBody|drn_AskServerDynamicWeatherEventArgs|BIS_effects_gepv|achievement|dayzFlies) !=PVDZ_(drg_(RaDrag|RaLW|RLact)|getTickTime|hlt_Bleed|obj_(Delete|Publish|RoadFlare|Destroy|Fire)|veh_Save|veh_SF) !=PVDZ_(plr_(Death|Login[12]|LoginRecord|Save|SwitchMove)|Server(_Simulation|StoreVar)|sec_atp) !=PVDZ_(playerMedicalSync|object_replace|groupInvite) !=PVDZ_(send(|Unconscious)) !=PVDZ_Server_(buildLock|LogIt|UpdateGroup) !=PVDZ_Server_process(Code|SetAccessCode) !=PVDZ_objgather_(Delete|Knockdown) !=PVDZE_(obj_(Delete|Publish|Swap|Trade)|fullobj_Publish|maintainArea|veh_(Lock|Publish2|Upgrade)|handleSafeGear|plr_(DeathB|FriendRQ|TradeMenu)) !=PVAH_AdminReq !=PVAH_WriteLogReq !=PVAHR_0_[a-zA-Z0-9]{20,40} !"PVAHR_" !="PVAH_AdminReq" !="PVAH_WriteLogReq" !=PVAHR_0_[a-zA-Z0-9]{20,40} !="PVDZE_(query|store|spawn)Vehicle" !="PVDZE_PingSend" !="PVDZE_veh_Init" !"SK_Log" !=SK_Log  
      4. А теперь самое главное.
      Пример вывода лога в отдельный файл. Возьмем для примера файл смерти игрока от тех или иных причин.
      Открываем в серверной части файл server_playerDied.sqf и ищем там строку
       
      diag_log format["%1 (%2) %3 @%4 %5",_playerName,_playerID,_message,mapGridPosition _pos,_pos]; после нее вставляем
      ["DEATHS",format ["%1 (%2) %3 @%4 %5",_playerName,_playerID,_message,mapGridPosition _pos,_pos],true] call fnc_log; Таким образом в указанной в папке в п. 2 создатся файл deaths_блаблабла.txt, в котором будет отображен лог о смерти игрока по тем или иным причинам.
       
      Формат записи лога выглядит следующим образом:
      _message = format ["Что хочу то и пишу и хочу видеть значение %1",_значение%1]; ["ИМЯ_ФАЙЛА_ЛОГА",_message,true] call fnc_log; или напрямую
      ["Имя_файла_лога",format ["тут будет то что в значении %1",_значение%1],true] call fnc_log;  
      Представляю варианты 4-х DLL, которые работают для этой системы (качаете любую из них и переименовываете в LogDLL.dll). Эту DLL необходимо закинуть в папку с игрой (например в C:\Games\Arma 2 Operation Arrowhead).
      LogDLL.dll создает в папке с логами отдельную папку по названию лога.
      LogDLL_-_dd-MM-yyyy и иные ее интерпретации - создает в папке с логами отдельную папку с датой, в которой хранятся все логи за эту дату.
       
      Если есть вопросы, задавайте.
       
      Оригинал данного скрипта и ссылки на разработчика ниже.
      Копирайта

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By BorizzK
      Автор: Виталий Мизев
       
      Для начала в папке профиля сервера которая указана в параметре запуска сервера -profile=
      создаем 2 файла
      pointPlayerPVP.lst - координаты спавна нового персонажа в формате vector
      playersSetUID.ini - Steam UID игроков | номер комплекта стартового лута для выбора
       
      Пример формата файла pointPlayerPVP.lst
      6010.40 0 7742.71
      6386.92 0 7945.12
      6478.50 0 7874.77
      6044.73 0 7699.81
       
      Пример формата playersSetUID.ini - STEAMUID|номер
      76531195156927007|1
      76561838156127001|2

       
      Игроку с Steam UID 6531195156927007 будет выдат комплект 1, 76561838156127001 комплект 2, если в файле UID нет, то рандомно из остальных комплектов
       
      В файле init.c
       
      в теле класса: class CustomMission: MissionServer
       
      сначала обьявим массивы
       
      ref array<string> m_pointPlayerPVP = new array<string>;;
      ref map<string, int> m_playersSetUID = new map<string, int>;
       
      это массивы глобальны в классе и могут использоваться во всех функциях класса
       
      в теле override void OnInit() (выполняется при запуске сервера)
       
      Чтение координат спавна из файла в массив m_pointPlayerPVP
      string line_content; FileHandle file = OpenFile("$profile:pointPlayerPVP.lst", FileMode.READ); Print("::: OpenFile : pointPlayerPVP.lst : $profile"); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { m_pointPlayerPVP.Insert( line_content); } CloseFile(file); } m_pointPlayerPVP.Debug();  
      Чтение Steam UID и номера из файла в массив m_playersSetUID
      array<string> strFileParam; file = OpenFile("$profile:playersSetUID.ini", FileMode.READ); Print("::: OpenFile : playersSetUID.ini : $profile"); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { strFileParam = new array<string>; line_content.Split( "|", strFileParam ); m_playersSetUID.Insert(strFileParam.Get(0), strFileParam.Get(1).ToInt()); } CloseFile(file); }  
      Далее
      При создании НОВОГО обьекта игрока
       
      сначала ему задаются координаты рандомно выбираясь из массива m_pointPlayerPVP
      см как идет работа с этим массивом
      override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { Entity playerEnt; if (m_pointPlayerPVP.Count()>0) { Print (m_pointPlayerPVP.Count()); int maxNum = m_pointPlayerPVP.Count(); int numPoint = Math.RandomInt(0, maxNum - 1); pos = m_pointPlayerPVP.Get(numPoint).ToVector(); } playerEnt = GetGame().CreatePlayer(identity, characterName, pos, 0, "NONE");//Creates random player Class.CastTo(m_player, playerEnt); GetGame().SelectPlayer(identity, m_player); return m_player; }  
      Затем при создании стартового комплекта лута комплект выдается в зависимости от наличия в файле UID и номера после | (комплекта) (в данном случае для номера 1 набор собран (см case :1) , для остальных ничего)
      override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { //По умолчанию номер комплекта выбирается рандомно int numSet = Math.RandomInt(2,6); /// 1 - Админ сет, 2-6 сеты для всех пока пусты EntityAI itemEnt; ItemBase itemBs; //Это тут на всякий случай //Получаем UID //PlayerIdentity p_identity = player.GetIdentity(); //p_identity.GetName(); // Получим имя игрока //p_identity.GetPlainId(); // UID в нашем знакомом виде 7656119********** //p_identity.GetId(); // получим UID в не знакомом виде Ue7dyagee34********* //p_identity.GetPlayerId(); // получим порядковый номер объекта типа игрок PlayerIdentity p_identity = player.GetIdentity(); string p_name = p_identity.GetName(); int p_id = p_identity.GetPlayerId(); if( p_identity ) { string uid_pl = p_identity.GetPlainId(); if (m_playersSetUID.Contains(uid_pl)) { numSet = m_playersSetUID.Get(uid_pl); } } itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(4); SetRandomHealth(itemEnt); itemEnt = player.GetInventory().CreateInInventory("RoadFlare"); itemBs = ItemBase.Cast(itemEnt); switch( numSet ) //Раздаем лут { case 1: //ADMIN { player.RemoveAllItems(); player.GetInventory().CreateInInventory("CoyoteBag_Green"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("TTSKOPants"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("CombatBoots_Black"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("CombatKnife"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("FNX45"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); itemBs = ItemBase.Cast(itemEnt); player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); itemBs = ItemBase.Cast(itemEnt); itemEnt = player.GetInventory().CreateInInventory( "akm" ); itemEnt.GetInventory().CreateAttachment( "PSO11Optic" ); itemEnt.GetInventory().CreateAttachment( "AK_WoodBttstck" ); itemEnt.GetInventory().CreateAttachment( "AK_WoodHndgrd" ); itemEnt.GetInventory().CreateAttachment( "AK_Suppressor" ); itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(4); itemEnt = player.GetInventory().CreateInInventory("RoadFlare"); itemBs = ItemBase.Cast(itemEnt); player.SetHealth("","",1000); //ТЕСТ //SetAllowDamage НЕ РАБОТАЕТ ДЛЯ ОНЛАЙНА - БОГЕМЦЫ ВЫКЛЮЧИЛИ //Тут обсуждение - https://forums.dayz.com/topic/240028-pve-server-disable-pvp-damage/ //Есть идея насчет доработки кода обрабатывающего нанесение урона player.SetAllowDamage(false); break; } case 2: { break; } case 3: { break; } case 4: { break; } case 5: { break; } case 6: { break; } } } Вот как-то так
       
      На основе этого можно построить свою более развитую систему, например загружая координаты для кастомного спавн лута,  расстановки зданий и тп
       
       
  • Our picks

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