Перейти к публикации
Поиск в
  • Дополнительно...
Искать результаты, содержащие...
Искать результаты в...
  • Нужна помощь?

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

    Там вы можете купить
    всё что касается игровых серверов
  • Не хотите бан?

    Пожалуйста, ознакомьтесь с нашими правилами
    Не нарушайте порядок!
  • Продаёте или покупаете?

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

Поиск по сайту

Результаты поиска по тегам 'для'.

  • Поиск по тегам

    Введите теги через запятую.
  • Поиск по автору

Тип публикаций


Категории и разделы

  • Основной раздел сайта
    • S-Platoon
    • Приватный раздел
    • Рынок
    • Комната отдыха и развлечений
  • Серверостроение - DayZ Standalone
    • Инструкции
    • Помощь
    • Прочее
    • English section
  • Серверостроение - Общий раздел
    • ARMA 3
    • DayZ мод
    • ARMA 2
    • CS: Global offensive
    • ARK: Survival Evolved
    • Minecraft
    • Rust
  • Темы поддержки товаров

Категории

  • DayZ
    • Сборки серверов
    • Скрипты, моды, карты и т.д.
    • Транспорт
    • Оружие, инструменты, предметы
    • Дополнения для карты
    • Модели
    • Программное обеспечение
    • Прочее
  • Arma 3
    • Сборки серверов
    • Скрипты, моды, карты и т.д.
    • Транспорт
    • Модели
    • Программное обеспечение
    • Прочее

Группы продуктов

  • Привилегии на форуме
  • Реклама на сайте

Искать результаты в...

Искать результаты, содержащие...


Дата создания

  • Начать

    Конец


Последнее обновление

  • Начать

    Конец


Фильтр по количеству...

Зарегистрирован

  • Начать

    Конец


Группа


Вконтакте


Steam


ICQ


Skype


Город


Сайт


Интересы

Найдено 25 результатов

  1. И так, ребятки, вот вам небольшая 'полезняшка' от меня, и совершенно бесплатно! Описание: Скрипт, добавляющий админу сервера возможность указывать для каждого игрока индивидуальный скин спавна, его персональную точку спавна и один из имеющихся на сервере стартовых наборов с лутом, которые можно составить самим. Если указано несколько точек спавна и/или наборов лута, то будет выбран один из предложенных вариантов рандомно. Также, любой из названных параметров можно отключить в скрипте и сделать его стандартным, как он есть поумолчанию на сервере. Дополнительно - есть возможность назначить свой набор стартового лута для всех игроков на сервере не из списка скрипта! Нам понадобится: 1. Сервер DayZ 1.0, сделанный по одному из гайдов: 2. Notepad++ 3. Немножечко трезвого ума и понимания того, что мы делаем, и как прописывается лут на новом языке enfusion Установка: Перед установкой: Обратите внимание, что имя 'стандартной' миссии сервера при загрузки со Steam называется: 'dayzOffline.chernarusplus'. На хостингах имя этой папки может отличаться. Если это так, то вам в информации ниже необходимо заменить 'dayzOffline.chernarusplus' на имя вашей папки миссии сервера, иначе вы не сможете запустить сервер игры! 1. По пути: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\ создать папку 'CustomSpawnPlayerConfig' и поместить в созданную нами папку 3 файла из следующего архива CustomSpawnPlayerConfig.rar или создать их самим со следующим содержанием: Script.c /* Описание: Скрипт выдачи индивидуального стартового лута, скина игрока и точек спавна Автор: 123new Установка: 1. По пути: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\ создать папку 'CustomSpawnPlayerConfig' и поместить в нее 3 файла скрипта: Script.c Sets.c init_mod.c 2. В файле: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c в самом верху файла добавить: #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c" 3. В папке, обозначенной параметром запуска сервера '-profile=', поместить файл с именем CustomSpawnPlayerConfig.txt и заполнить его данными по следующему формату: UID|Skin_player|sets_numbers|points_spawns где UID - это steam64id от профиля игрока в steam Skin_player - точный id скина игрока (можно указать 0 для отключения опции) sets_numbers - номер сета со стартовым лутом (можно указать несколько через ';', указать один всего, либо указать 0 для отключения опции) points_spawns - координаты спавна игрока на карте в формате 'x y z' (можно указать несколько через ';', указать всего одну точку, либо указать 0 для отключения опции) Пример: 76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379 76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941 76561198141889253|SurvivorM_Oliver|0|0 4. В файле Sets.c в папке: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\ настроить стартовый лут для ваших игроков и написать собственные сеты ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше) Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет! P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!! Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c */ class CustomSpawnPlayerConfig { private string Location_Directory_config = "$profile:"; // Расположение папки с конфигом скрипта private string Location_filename_config = "CustomSpawnPlayerConfig.txt"; // имя файла с конфигом скрипта private string default_log_block_name = "[CustomSpawnPlayerConfig] "; // Стандартный блок скрипта для идентификации с script.log private string disable_read_parameter = "0"; // Стандартное значение (без кавычек) для обозначения в файле конфига скрипта неиспользование параметра private string block_split_parameters_config = "|"; // Символ, обозначающий разделение параметров при чтении файла конфига private string block_split_multi_parameters_config = ";"; // Символ, обозначающий перечисление в одной ячейке параметра нескольких параметров при чтении файла конфига private bool enabled_loading_custom_spawnpoints = true; // Параметр, включающий и отключающий возможность использования приватной точки спавна для каждого игрока. В случае отключения кастомная точка спавна будет отключена для всех поумолчанию, вне зависимости от данных в конфиге! private bool enabled_loading_custom_sets = true; // Параметр, включающий и отключающий возможность использования приватного сета для каждого игроков. В случае отключения выдача сетов будет отключена для всех поумолчанию, вне зависимости от данных в конфиге, будет выдаваться только сет для всех игроков! private bool enabled_loading_custom_skins = true; // Параметр, включающий и отключающий возможность использования индивидуального стартового скина игрока для каждого игрока. В случае отключения эта возможность будет отключена для всех поумолчанию, вне зависимости от данных в конфиге! // ------------------------------------------------------------ // ---------------- NEXT CODE DON'T EDIT ----------------- // ------------------------------------------------------------ ref map<string, ref array<vector>> players_spawnpoints = new map<string, ref array<vector> >; ref map<string, ref array<int>> players_sets = new map<string, ref array<int> >; ref map<string, string> players_skins = new map<string, string>; private bool enabled_loaded_successfull_config = false; string Log_CustomSpawnPlayerConfig_GetDateTime() { private int year, month, day, hour, minute, second; GetYearMonthDay(year, month, day); GetHourMinuteSecond(hour, minute, second); string returned_message = "[" + day.ToStringLen(2) + "." + month.ToStringLen(2) + "." + year.ToStringLen(2) + " - " + hour.ToStringLen(2) + "." + minute.ToStringLen(2) + "." + second.ToStringLen(2) + "] "; return returned_message; } bool Check_coords_disable(vector coord) { private bool ret_zn = false; private float pos_x = coord[0]; private float pos_y = coord[1]; private float pos_z = coord[2]; if ((pos_x == 0.0) & (pos_y == 0.0) & (pos_z == 0.0)) { ret_zn = true; } return ret_zn; } vector Set_Read_coords_disable() { return Vector(0.0, 0.0, 0.0); } void CustomSpawnPlayerConfig() { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + "CustomSpawnPlayerConfig initialize start!"); Read_Update_Config(); } void ~CustomSpawnPlayerConfig() { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + "CustomSpawnPlayerConfig work end, class closed!"); } void Read_Update_Config() { private string name_block_work = "[ReadAndUpdateSettings] "; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + " Started Reading config!"); private array<string> readed_lines_config = ReadFileConfig(); private bool check_normal_read = AnaliseFileConfig(readed_lines_config); if (check_normal_read) { LoadFileConfig(readed_lines_config); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "config readed successfull!"); enabled_loaded_successfull_config = true; } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "config read failed, work script disabled for players!"); enabled_loaded_successfull_config = false; } } array<string> ReadFileConfig() { private string name_block_work = "[ReadFileConfig] "; private array<string> readed_lines_config = new array<string>; readed_lines_config.Clear(); if (FileExist ( (Location_Directory_config + Location_filename_config) ) ) { private string line_content; FileHandle file = OpenFile((Location_Directory_config + Location_filename_config), FileMode.READ); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Open file config: " + (Location_Directory_config + Location_filename_config)); if (file != 0) { while ( FGets( file, line_content ) > 0 ) { readed_lines_config.Insert( line_content); } CloseFile(file); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! CAN'T OPEN FILE CONFIG : " + (Location_Directory_config + Location_filename_config)); } //readed_lines_config.Debug(); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! CAN'T FOUND FILE CONFIG OR DIRECTORY: " + (Location_Directory_config + Location_filename_config)); } return readed_lines_config; } bool AnaliseFileConfig(array<string> readed_lines_config) { private bool return_zn = true; private string name_block_work = "[AnaliseFileConfig] "; if (readed_lines_config.Count() > 0) { foreach (string line : readed_lines_config) { if (line.Contains(block_split_parameters_config)) { private array<string> splited_line = new array<string>; line.Split( block_split_parameters_config, splited_line ); if (splited_line.Count() == 4) { private string UID_player = splited_line.Get(0); private string default_skin_player = splited_line.Get(1); private string sets_numbers_player = splited_line.Get(2); private string points_spawn_player = splited_line.Get(3); if ((UID_player == "") || (default_skin_player == "") || (sets_numbers_player == "") || (points_spawn_player == "")) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Lines in Readed file is not correct, please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Readed file is have incorrect count parameters with a tag '" + block_split_parameters_config + "', please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Readed file can't have a tag '" + block_split_parameters_config + "', please, fix your config script!"); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Line checking: " + line); return_zn = false; break; } } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "ERROR!!! Config file is empty, fix your config script!"); return_zn = false; } return return_zn; } void LoadFileConfig(array<string> readed_lines_config) { private string name_block_work = "[LoadFileConfig] "; players_spawnpoints.Clear(); players_sets.Clear(); players_skins.Clear(); foreach (string line : readed_lines_config) { private array<string> splited_line = new array<string>; splited_line.Clear(); line.Split( block_split_parameters_config, splited_line ); private string UID_player = splited_line.Get(0); private string default_skin_player = splited_line.Get(1); private string sets_numbers_player = splited_line.Get(2); private string points_spawn_player = splited_line.Get(3); private array<vector> temp_players_spawnpoints = new array<vector>; temp_players_spawnpoints.Clear(); array<int> temp_players_sets = new array<int>; temp_players_sets.Clear(); array<string> temp_players_spawnpoints_string = new array<string>; temp_players_spawnpoints_string.Clear(); array<string> temp_players_sets_string = new array<string>; temp_players_sets_string.Clear(); if (points_spawn_player.Contains(block_split_multi_parameters_config)) { points_spawn_player.Split( block_split_multi_parameters_config, temp_players_spawnpoints_string ); } else { temp_players_spawnpoints_string.Insert(points_spawn_player); } foreach (string line_spawnpoint : temp_players_spawnpoints_string) { if (line_spawnpoint == disable_read_parameter) { temp_players_spawnpoints.Insert(Set_Read_coords_disable()); } else { temp_players_spawnpoints.Insert(line_spawnpoint.ToVector()); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Generated massive for " + UID_player + " with " + temp_players_spawnpoints.Count().ToString() + " spawnpoints."); if (sets_numbers_player.Contains(block_split_multi_parameters_config)) { sets_numbers_player.Split( block_split_multi_parameters_config, temp_players_sets_string ); } else { temp_players_sets_string.Insert(sets_numbers_player); } foreach (string line_set : temp_players_sets_string) { if (line_set == disable_read_parameter) { temp_players_sets.Insert(0); } else { temp_players_sets.Insert(line_set.ToInt()); } } if (default_skin_player == disable_read_parameter) { default_skin_player = "0"; } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Generated massive for " + UID_player + " with " + temp_players_sets.Count().ToString() + " sets."); Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Detected for " + UID_player + " skin " + default_skin_player); players_spawnpoints.Insert(UID_player,temp_players_spawnpoints); players_sets.Insert(UID_player,temp_players_sets); players_skins.Insert(UID_player,default_skin_player); } } vector Load_And_Check_Spawnpoints(PlayerIdentity identity, vector pos_default) { private string name_block_work = "[Load_And_Check_Spawnpoints] "; private vector retun_pos = pos_default; if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_spawnpoints) { if ((players_spawnpoints.Count() > 0) && (enabled_loaded_successfull_config)) { if (players_spawnpoints.Contains(UID_P)) { private array<vector> readed_lines_config = new array<vector>; readed_lines_config = players_spawnpoints.Get(UID_P); private vector retun_pos_check = readed_lines_config.GetRandomElement(); if (Check_coords_disable(retun_pos_check)) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private spawn point. Will be used default spawn point!"); } else { retun_pos = retun_pos_check; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private spawn point: " + retun_pos.ToString()); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private spawnpoint for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private spawnpoints is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal spawnpoints from config file script!"); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn point: " + retun_pos.ToString()); return retun_pos; } string Load_And_Check_SpawnSkin_Player(PlayerIdentity identity, string characterName) { private string name_block_work = "[SelectStartSkinPlayer] "; private string retun_skin = characterName; if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_skins) { if (players_skins.Count() > 0) { if (players_skins.Contains(UID_P)) { private string readed_skin = players_skins.Get(UID_P); if (readed_skin == "0") { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private skin setting, will be used default setting game!"); } else { retun_skin = readed_skin; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private skin setting: " + retun_skin); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private skin setting for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private skin setting is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal skin player settings from config file script!"); } } Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used skin: " + retun_skin); return retun_skin; } void Load_And_Check_StartLoadout(PlayerBase player) { private string name_block_work = "[SelectStartSetPlayer] "; private int use_set_id = -1; private PlayerIdentity identity = player.GetIdentity(); if(identity) { private string Name_P = identity.GetName(); private string UID_P = identity.GetPlainId(); private string Game_UID_P = identity.GetId(); private string Game_ID_P = identity.GetPlayerId().ToString(); if (enabled_loading_custom_sets) { if ((players_sets.Count() > 0) && (enabled_loaded_successfull_config)) { if (players_sets.Contains(UID_P)) { private array<int> readed_lines_config = new array<int>; readed_lines_config.Clear(); readed_lines_config = players_sets.Get(UID_P); private int chek_use_set_id = readed_lines_config.GetRandomElement(); if (chek_use_set_id == 0) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") disabled loading private set numbers. Will be used default set player! "); } else { use_set_id = chek_use_set_id; Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") setuped private set number is: " + use_set_id.ToString()); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Can't founded private sets for player " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "Config script is incorrect, checking private sets is disabled! Player: " + Name_P + "(steam64id=" + UID_P + ")"); } } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "disabled loading personal loadout sets player settings from config file script! Will be used default loadout!"); } if (use_set_id >= 0) { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn set with number is: " + use_set_id.ToString()); } else { Print(Log_CustomSpawnPlayerConfig_GetDateTime() + default_log_block_name + name_block_work + "For player " + Name_P + "(steam64id=" + UID_P + ") will be used spawn default start set without number. "); } StartSetsPlayers.StartSetsPlayer(player, use_set_id); } } private array<EntityAI> GetItemListinobject(PlayerBase player,EntityAI item, bool check_player) { array<EntityAI> EntityAI_list_items = new array<EntityAI>; EntityAI_list_items.Clear(); int attIdx = 0; int attCount = 0; EntityAI item_in_object; if ((player) && (check_player)) { attCount = player.GetInventory().AttachmentCount(); for (attIdx = 0; attIdx < attCount; attIdx++) { item_in_object = player.GetInventory().GetAttachmentFromIndex(attIdx); if ( item_in_object.IsItemBase() ) { EntityAI_list_items.Insert(item_in_object); } } } if ((item) && !check_player) { attCount = item.GetInventory().AttachmentCount(); for (attIdx = 0; attIdx < attCount; attIdx++) { item_in_object = item.GetInventory().GetAttachmentFromIndex(attIdx); if ( item_in_object.IsItemBase() ) { EntityAI_list_items.Insert(item_in_object); } } } return EntityAI_list_items; } void RemoveAllItems (PlayerBase player) { private array<EntityAI> ItemListPlayer = new array<EntityAI>; private array<EntityAI> ItemsForDelete = new array<EntityAI>; private EntityAI itemInHands_player = player.GetHumanInventory().GetEntityInHands(); if (itemInHands_player != NULL) { if (player.CanDropEntity(itemInHands_player) && player.GetHumanInventory().CanRemoveEntityInHands()) { // Print("ItemForDelete: " + itemInHands_player.ToString()); ItemsForDelete.Insert(itemInHands_player); } } ItemListPlayer = GetItemListinobject(player,NULL,true); if (ItemListPlayer.Count() > 0) { foreach(EntityAI ItemPlayer: ItemListPlayer) { private array<EntityAI> ItemInItemInInventory = GetItemListinobject(NULL,ItemPlayer,false); private CargoBase cargo = ItemPlayer.GetInventory().GetCargo(); if(cargo) { if (cargo.GetItemCount() > 0) { for (int f = 0; f < cargo.GetItemCount(); f++) { if(cargo.GetItem(f)) { ItemsForDelete.Insert(cargo.GetItem(f)); } } } } if (ItemInItemInInventory.Count() > 0) { foreach(EntityAI items_temp: ItemInItemInInventory) { if(items_temp) { ItemsForDelete.Insert(items_temp); } } } if(ItemPlayer) { ItemsForDelete.Insert(ItemPlayer); } } } if (ItemsForDelete.Count() > 0) { foreach(EntityAI item_temp: ItemsForDelete) { if(item_temp) { GetGame().ObjectDelete(item_temp); } } } } }; Sets.c class StartSetsPlayersConfig { void StartSetsPlayer(PlayerBase player,int use_set_id) { EntityAI itemCreated = NULL; EntityAI itemCreated1 = NULL; ItemBase itemCasted = NULL; switch( use_set_id ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1) { case 1: //Set with number 1 (Сет с номером 1) { My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку itemCreated = player.GetInventory().CreateInInventory("CoyoteBag_Green"); // Выдаем рюкзак и записываем в переменную itemCreated if (itemCreated) // Проверяем, создался ли рюкзак. Если он создался, переменная itemCreated будет не пуста и проверка пройдет { SetRandomHealthItem(itemCreated); // Выдаем рюкзаку рандомное качество itemCreated1 = itemCreated.GetInventory().CreateInInventory("Apple"); // Добавляем в инвентарь созданного рюкзака яблоко и записываем в переменную itemCreated1 if (itemCreated1) // Проверяем, создалось ли яблоко в рюкзаке, яблоко у нас с переменной itemCreated1 { SetRandomHealthItem(itemCreated1); // Выдаем яблоку рандомное качество } itemCreated1 = NULL; // Обнуляем значение переменной после работы с ней, чтобы следующая проверка прошла корректно itemCreated1 = itemCreated.GetInventory().CreateInInventory("Rag"); // Выдаем игроку бинты в рюкзак и записываем в переменную itemCreated1 if (itemCreated1) // Проверяем, создались ли бинты в рюкзаке, они у нас с переменной itemCreated1 { itemCasted = ItemBase.Cast(itemCreated1); // Выполняем преобразование в другой класс для работы с нужной нам функцией, поскольку в классе EntityAI нет нужной нам функции SetQuantity, а в подклассе ItemBase она есть. Предмет при этом так и остается один и тот же! itemCasted.SetQuantity(4); // Определяем количество для созданных бинтов как 4 штуки SetRandomHealthItem(itemCreated); // Выдаем бинтам рандомное качество, функция работает с классом EntityAI (см. в конфе файла) } } // переменную itemCreated не обнуляем далее, поскольку мы ее не используем в проверке ниже. itemCreated = player.GetInventory().CreateInInventory("TTSKOPants"); // Выдаем игроку штаны itemCreated = player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); // Выдаем игроку куртку itemCreated = player.GetInventory().CreateInInventory("CombatBoots_Black"); // Выдаем игроку обувь //itemCasted = ItemBase.Cast(itemCreated); // Строка не нужна, закоментирована. используется для изменения класса EntityAI в ItemBase (чтобы нужные операции были доступны) itemCreated = player.GetInventory().CreateInInventory("CombatKnife"); // Выдаем игроку ножик в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("FNX45"); // Выдаем игроку FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_FNX45_15Rnd"); // Выдаем игроку магазины к FNX в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре itemCreated = player.GetInventory().CreateInInventory("Mag_AKM_30Rnd"); // Выдаем игроку магазины к AKM в любой свободный слот в инвентаре itemCreated = NULL; // Обнуляем значение переменной после работы с ней, нужно если мы будем использовать ее далее itemCreated = player.GetHumanInventory().CreateInHands("akm"); // Выдаем игроку AKM в руки if (itemCreated) // Проверяем, создался ли АКМ { itemCreated.GetInventory().CreateAttachment( "PSO11Optic" ); // Выдаем игроку на AKM оптику ПСО 11 и крепим itemCreated.GetInventory().CreateAttachment( "AK_WoodBttstck" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим itemCreated.GetInventory().CreateAttachment( "AK_WoodHndgrd" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим itemCreated.GetInventory().CreateAttachment( "AK_Suppressor" ); // Выдаем игроку на AKM цевье, приклад и глушитель, и крепим } break; } case 2: //Set with number 2 (Сет с номером 2) { break; } case 3: //Set with number 3 (Сет с номером 3) { break; } case 4: //Set with number 4 (Сет с номером 4) { break; } case 5: //Set with number 5 (Сет с номером 5) { break; } case 6: //Set with number 6 (Сет с номером 6) { break; } default: //Default starting spawn set (Сет поумолчанию для всех игроков, если хотите назначить - добавляйте здесь!) { //My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку DefaultSets(player); // Для выдачи своих сетов по рандому всем игрокам, не прописанным в скрипте, раскомментировать эту строку break; } } } void SetRandomHealthItem(EntityAI itemCreated) // Функция генерирует и применяет для предмета рандомное значение здоровья! { if ( itemCreated ) { private int rndHlt = Math.RandomInt(55,6); itemCreated.SetHealth("","",rndHlt); } } void DefaultSets(PlayerBase player) // Функция выдает сеты игрокам, не прописанным в конфигурации скрипта!!! { EntityAI itemCreated = NULL; EntityAI itemCreated1 = NULL; ItemBase itemCasted = NULL; // ниже пример, если вам нужно задать свои точки спавна для всех игроков. Этот код можно также использовать и для каждого сета индивидуально! // Код закомментирован, если это надо - раскомментируйте! // начало кода точек спавна игрока /* private array <vector> spawnpoints = {"7500 0 7500", "7500 0 7500","7500 0 7500", "7500 0 7500"}; private vector selected_spawnpoint = spawnpoints.GetRandomElement(); player.SetPosition(selected_spawnpoint); */ // конец кода точек спавна игрока private int random_set_number = Math.RandomIntInclusive(1,6); // генерируем рандом номер сета от 1 до 6 включительно (по значениям блоков case ниже) switch( random_set_number ) //Раздаем лут (можно использовать значения от 1 и выше, только не 0 и не -1) { case 1: //Set with number 1 (Сет с номером 1) { break; } case 2: //Set with number 2 (Сет с номером 2) { break; } case 3: //Set with number 3 (Сет с номером 3) { break; } case 4: //Set with number 4 (Сет с номером 4) { break; } case 5: //Set with number 5 (Сет с номером 5) { break; } case 6: //Set with number 6 (Сет с номером 6) { break; } default: //Default starting spawn set (Сет поумолчанию для всех игроков, в случае если ни один из сетов выше не выпал. { //My_Custom_Spawn_Parameters.RemoveAllItems(player); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку break; } } } } init_mod.c #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\Script.c" #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\Sets.c" ref CustomSpawnPlayerConfig My_Custom_Spawn_Parameters = new CustomSpawnPlayerConfig(); ref StartSetsPlayersConfig StartSetsPlayers = new StartSetsPlayersConfig(); modded class CustomMission { override void OnInit () { super.OnInit(); GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(My_Custom_Spawn_Parameters.Read_Update_Config, 120000, true); // Обновление настроек скрипта кастомных спавнов, 1 минута = 60000 } override PlayerBase CreateCharacter(PlayerIdentity identity, vector pos, ParamsReadContext ctx, string characterName) { pos = My_Custom_Spawn_Parameters.Load_And_Check_Spawnpoints(identity, pos); characterName = My_Custom_Spawn_Parameters.Load_And_Check_SpawnSkin_Player(identity, characterName); super.CreateCharacter(identity, pos, ctx, characterName); return m_player; } override void StartingEquipSetup(PlayerBase player, bool clothesChosen) { super.StartingEquipSetup(player, clothesChosen); My_Custom_Spawn_Parameters.Load_And_Check_StartLoadout(player); } } 2. В файле: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c в самом верху файла добавить: #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c" Чтобы получилось примерно так 3. В папке, обозначенной параметром запуска сервера '-profile=', поместить файл с именем CustomSpawnPlayerConfig.txt и заполнить его данными по следующему формату: UID|Skin_player|sets_numbers|points_spawns где UID - это steam64id от профиля игрока в steam Skin_player - точный id скина игрока (можно указать 0 для отключения опции) sets_numbers - номер сета со стартовым лутом (можно указать несколько через ';', указать один всего, либо указать 0 для отключения опции) points_spawns - координаты спавна игрока на карте в формате 'x y z' (можно указать несколько через ';', указать всего одну точку, либо указать 0 для отключения опции) Пример: CustomSpawnPlayerConfig.txt 76561198141889254|SurvivorM_Oliver|1|12955.091797 16.115206 7993.588379 76561198141889256|SurvivorM_Oliver|1;2|14791.965820 76.481781 14041.661133;12029.079102 196.356125 7274.689941 76561198141889253|SurvivorM_Oliver|0|0 4. В файле Sets.c в папке: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\ настроить стартовый лут для ваших игроков и написать собственные сеты ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше) Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет! Поумолчанию в функции default вызывается функция DefaultSets, позволяющая рандомно выбирать любой из сетов для игроков, которым сет не задан в конфигурации скрипта. Принцип составления сетов такой же, как и выше. Если будете пользоваться этим, обратите вниманием на строку: private int random_set_number = Math.RandomIntInclusive(1,6); Эта функция генерирует число от 1 до 6 включительно. Соответственно если сетов будет больше 6, то число надо корректировать и тут тоже! P.S. Прикрепить к соспавненному оружию магазин не получится, рабочего кода я не смог найти!! Если у вас папка активной миссии сервера отличается от dayzOffline.chernarusplus то переименуйте ее в строке, вписываемой в: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.c {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\init_mod.c Благодарности: Товарищу Mizev за его первоначальные гайды в группе VK при появлении в сети серверной части игры
  2. Приветствую Всех! Данный скрипт меняет кнопку "Server Info" на отдельное меню приложений XM8Apps это скрипт с помощью которого можно упростить настройку и активацию таких скриптов, как: спавн велосипеда, изменение расстояния, инфо о сервере, etc. То есть многие скрипты с действием можно поместить в одно удобное окошко, вместо активаций кучи хоткеев или скролл менюшек Пикчи прилагаются Скрипт: https://www.dropbox.com/s/fgp8i302u49l654/xm8Apps.zip?dl=0 Установка требует добавить всего одну строчку В файле conig.cpp в вашей миссии найдите CfgExileCustomCode и в этот блок вставьте ExileClient_gui_xm8_slide_apps_onOpen = "xm8Apps \ ExileClient_gui_xm8_slide_apps_onOpen.sqf"; //путь к файлу На этом установка самого скрипта xm8Apps окончена. И давайте попробуем установить в это приложение какой нибудь скрипт. В данном случае это будет "Дальность прорисовки" В папке xm8apps откройте файл xm8apps_init.sqf Найдите и замените строки //App 1 _app1Text = "App 1"; _app1Logo = ""; app1_action = { }; на эти //App 1 _app1Text = "Уровень прорисовки"; _app1Logo = getText (configfile >> "CfgWeapons" >> "Binocular" >> "picture"); app1_action = { execVM "xm8Apps\Apps\VeiwDistance.sqf"; }; В папке xm8apps создайте папку apps и создайте в ней файл с названием VeiwDistance.sqf И поместите в созданный Вами файл этот код /* View Distance script made by Shix http://www.exilemod.com/profile/4566-shix/ Made for XM8 Apps http://www.exilemod.com/topic/9040-updated-xm8-apps/ */ ///////////////// //CONFIG //////////////// _minVeiwDis = 500; //Minimum Veiw Distance _maxVeiwDist = 6000; //Maximum Veiw Distance _minObjViewDist = 500; //Minimum Object Veiw Distance _maxObjViewDist = 3000; //Maximum Object Veiw Distance ///////////////// //CONFIG END //////////////// disableSerialization; _display = uiNameSpace getVariable ["RscExileXM8", displayNull]; _curViewDist = viewDistance; _curObjViewDist = getObjectViewDistance select 0; _xm8Controlls = [991,881,992,882,993,883,994,884,995,885,996,886,997,887,998,888,999,889,9910,8810,9911,8811,9912,8812]; { _fade = _display displayCtrl _x; _fade ctrlSetFade 1; _fade ctrlCommit 0.5; } forEach _xm8Controlls; { ctrlDelete ((findDisplay 24015) displayCtrl _x); } forEach _xm8Controlls; uiSleep 0.2; //Creates View distnce Slider _VeiwDistSlider = _display ctrlCreate ["RscXSliderH", 1120]; _VeiwDistSlider ctrlSetPosition [(13 - 3) * (0.025), (9 - 2) * (0.04),(0.5),(0.05)]; _VeiwDistSlider ctrlCommit 0; _VeiwDistSlider ctrlSetEventHandler ["SliderPosChanged","_this call fnc_updateViewDist"]; _VeiwDistSlider sliderSetRange [_minVeiwDis, _maxVeiwDist]; _VeiwDistSlider sliderSetSpeed [100, 2]; _VeiwDistSlider sliderSetPosition _curViewDist; //Creates Current view distance text _curViewDistText = _display ctrlCreate ["RscStructuredText", 1119]; _curViewDistText ctrlSetPosition [(13 - 3) * (0.025), (10.3 - 2) * (0.04),(0.5),(0.04)]; _curViewDistText ctrlCommit 0; //creates obj View fistnce Slider _ObjVeiwDistSlider = _display ctrlCreate ["RscXSliderH", 1112]; _ObjVeiwDistSlider ctrlSetPosition [(13 - 3) * (0.025), (13 - 2) * (0.04),(0.5),(0.05)]; _ObjVeiwDistSlider ctrlCommit 0; _ObjVeiwDistSlider ctrlSetEventHandler ["SliderPosChanged","_this call fnc_updateObjViewDist"]; _ObjVeiwDistSlider sliderSetRange [_minObjViewDist, _maxObjViewDist]; _ObjVeiwDistSlider sliderSetSpeed [100, 2]; _ObjVeiwDistSlider sliderSetPosition _curObjViewDist; //_ObjVeiwDistSlider sliderSetPosition [1112, _curObjViewDist]; //Creates Current object view distance text _curObjViewDistText = _display ctrlCreate ["RscStructuredText", 1114]; _curObjViewDistText ctrlSetPosition [(13 - 3) * (0.025), (14.3- 2) * (0.04),(0.5),(0.04)]; _curObjViewDistText ctrlCommit 0; (_display displayCtrl 1114) ctrlSetStructuredText (parseText (format ["Current object view distance: %1",_curObjViewDist])); (_display displayCtrl 1119) ctrlSetStructuredText (parseText (format ["Current view distance: %1",_curViewDist])); _GoBackBtn = _display ctrlCreate ["RscButtonMenu", 1116]; _GoBackBtn ctrlSetPosition [(32 - 3) * (0.025),(20 - 2) * (0.04),6 * (0.025),1 * (0.04)]; _GoBackBtn ctrlCommit 0; _GoBackBtn ctrlSetText "Go Back"; _GoBackBtn ctrlSetEventHandler ["ButtonClick", "call fnc_goBack"]; //function to update view distance fnc_updateViewDist = { _display = uiNameSpace getVariable ["RscExileXM8", displayNull]; _VDSliderPos = _this select 1; setViewDistance _VDSliderPos; _curViewDist = _VDSliderPos; (_display displayCtrl 1119) ctrlSetStructuredText (parseText (format ["Current view distance: %1",_curViewDist])); }; //function to update object view distance fnc_updateObjViewDist = { _display = uiNameSpace getVariable ["RscExileXM8", displayNull]; _OVDSliderPos = _this select 1; setObjectViewDistance _OVDSliderPos; _curObjViewDist = _OVDSliderPos; (_display displayCtrl 1114) ctrlSetStructuredText (parseText (format ["Current object view distance: %1",_OVDSliderPos])); }; fnc_goBack = { _display = uiNameSpace getVariable ["RscExileXM8", displayNull]; _vdCtrls = [1120,1119,1112,1114,1116]; { _ctrl = (_display displayCtrl _x); _ctrl ctrlSetFade 1; _ctrl ctrlCommit 0.25; ctrlEnable [_x, false]; } forEach _vdCtrls; execVM "xm8Apps\XM8Apps_Init.sqf"; uiSleep 1; { ctrlDelete ((findDisplay 24015) displayCtrl _x); } forEach _vdCtrls; }; Сохраните Ваш файл, перепакуйте миссию и запустите сервер. Надеюсь данное руководство вам помогло/поможет! Всем спасибо!
  3. Инструкция: 1) Качаем прикреплённый файл и распаковываем архив 2) Папку DayZCommunityOfflineMode.ChernarusPlus из архива копируем в папку mission, находящуюся в папке с вашей игрой 3) Запускаем файл DayZCommunityOfflineMode.bat DayZ Offline Editor.zip Управление: Insert - включить/отключить режим полёта Delete - меню предметов B - включить/отключить Debug монитор T - телепорт в указанное мышкой место O - заспавнить зомби Shift+O - заспавнить животных P - вывести на экран координаты персонажа, записать координаты в игровые логи Редактор предметов: Shift+End - активировать редактор предметов ЛКМ - выбрать объект ЛКМ+тянуть - перетаскивание объекта Shift+Ctrl+Alt+колесо мыши - перетаскивание объекта по вертикали Delete - удалить объект СКМ - приклеить объект к земле Больше информации, думаю, не нужно, поэтому на этом всё Свежую версию мода искать тут: https://github.com/Arkensor/DayZCommunityOfflineMode
  4. Гайд для новичка в Dayz. Часть 1 Прочитав эту статью вы поймете азы, механику и первичные цели игры. Разумеется данные руководство будет полезно только новичкам в мире Dayz. Более опытным игрокам и ветеранам она не принесет абсолютно ничего нового. Ну так что если вы новый игрок и только познаете мир игры про добро пожаловать. Добро пожаловать в опасный и непредсказуемый Dayz! Большинство новичков в первые заходя в игру сталкиваются с рядом определенных проблем и вопросов, которые не могут решить. К примеру: Где найти оружие? Где найти еду? Куда идти? И что вообще, блин, делать?! Давайте же сейчас попробуем разобраться, как выжить в этом опасном мире? Но прежде чем мы начнем осваивать и развивать основные навыки в Dayz нужно определиться, что собой представляет он сам. Dayz Standalone является Survival horror'ом в открытом мире и полной свободой действия, с примесью тактического шутера и MMO. Основной акцент Dayz Standalone делиться на две цели: Целенаправленное исследованные местности Выживание на этой самой местности Остальные идеи и задачи являются субъективными идеями самих игроков, которых в игре могло бы было быть предостаточно, была бы только фантазия. Ваша задача - как можно дольше и продуктивнее прожить в этом опасном мире. Сразу скажу, что все это будет очень не легко! Вас будут ждать инфицированные зомби, голод, жажда, болезни и конечно же встреча с другими игроками. С уверенностью в 99% могу сказать, что любителям атмосферы и фанатам серии Stalker игра определенно придется по душе, было бы время и желание освоить Dayz. И так, в первые попадая в игру вы попадаете в Постсоветскую страну под названием Чернорусия, а конкретнее в её Северо-Восточную провинцию - Южная Загория. А это примерно 230 квадратных километров. Вся эта местность является зоной отчуждения, по мимо вас в которой есть инфицированные зомби и конечно же другие люди, такие же игроки, как и вы. Конечно же все это в своей степени представляет определенную опасность. Чернорусия представляет собой холмисто-лесистую местность с реками, поселками, городами и прочими социальными местами. Южная Загория насчитывает около 80 поселков, деревень и городов, большая часть которых находится в прибрежной зоне. К примеру как Светлоярск, Березино, Электрозаводск и Черногорск. К слову они же и являются одними из самых популярных и естественно самых опасных мест, но об этом позже! С глобальным местом дислокации мы разобрались, теперь стоит понять где же мы конкретно появились. Скорее всего вы появляетесь на побережье (С каждым обновлением игры, появляются новые места спавна). Эти места являются самыми густо населенными и самыми опасными местами, думаю объяснять почему - не стоит. Заспавнить вам может где угодно, но давайте остановимся на самых популярных и менее популярных местах. Популярными местами являются: Солнечный Березино Светлоярск Менее популярные места: Деревня Камышово Электрозаводск и его окружности Так же более редкие места спавна: Комарова Черногорск Как же понять, где вы появились? Все очень просто, с вероятностью в 99% около себя вы увидите железнодорожные пути, которые проходят по всему побережью Чернорусии и асфальтированную дорогу, которая так же проходит через весь Южный периметр.
  5. Всем известный инструмент для дистанционного управления и мониторинга сервера для DayZ Standalone Требует наличия .NET Framework на компьютере. Особенности: Подключение к серверу через RCon Отображение логов, чата, входа и выхода игроков с сервера Показывает список игроков Показывает список банов Показывает из какой страны игрок Автоматическое обновление информации о сервере Возможность сообщать о читерах в DaRT Ban Создание локальной базы данных игроков Возможность кикать, банить, банить по IP, банить когда игрок оффлайн Возможность писать в чат Возможность использовать консоль (если всё ещё нужно вводить какие-то команды вручную) Общение в игроком Копирование информации об игроке Поиск по игрокам Возможность перезагрузить скрипты на стороне сервера Интеграция с GameTracker DaRT.zip
  6. Господа, ну я сильно удивлен, что такие вещи, как авторестарт сервера многим даются сложно для понимания. Ведь все довольно легко, да и способов море в сети. Опишу в теме парочку своих способов. Способ I: 1. Создаем в папке с сервером игры файл с именем 'AutoRestartScript.bat' и заполняем его следующими данными: @echo off cd /d %~dp0 ::CODE FILE UTF-8 + Russian OEM 866 ::: Здесь указываем имя серверного exe (обязательно, он проверяется на запущенность) set PROC_SERVER=DayZServer_x64.exe ::: Здесь указываем параметры запуска сервера для запуска сервера с exe напрямую set PROC_SERVER_PARAMS=-port=2302 -config=Instance_1\server.cfg -cfg=Instance_1\basic.cfg -profiles=Instance_1 -user=Instance_1 -name=Server -nologs -adminlog -freezecheck -noFilePatching ::: Здесь указываем путь до папки с сервером set Patch_server=C:\servers\DayZServer_063 ::: Здесь указываем имя файла, в который будут писаться логи рестарта set LOGFILE=log_restarter_server.txt ::: Здесь указываем время между проверками на запущенность процесса сервера (в секундах) set TIME_CHECK=60 ::: Указываем 1 если хотим запускать сервер в режиме запуска через SmartSteamEmu set Start_server_with_smartsteamemu=1 ::: Указываем путь до папки с SmartSteamLoader set NAME_DIR_smartsteamemu=C:\servers\DayZServer_063\SmartSteamEmu ::: Указываем имя запускаемого файла SmartSteamLoader set NAME_LOADER_smartsteamemu=SmartSteamLoader_x64.exe ::: Указываем путь и имя конфиг-файла SmartSteamLoader set NAME_CONFIG_smartsteamemu=C:\servers\DayZServer_063\SmartSteamEmu\Test_config.ini ::: Указываем 1 если хотим контролировать BEC на запущенность (чтобы вкл. параметры ниже указать 1) set Use_BEC_AutoRestarter=1 ::: Здесь указываем имя BEC exe set PROC_BEC=Bec_063.exe ::: Здесь указываем параметры запуска BEC set PROC_BEC_PARAMS=--dsc -f config.cfg ::: Здесь указываем путь до папки с BEC set Patch_bec=C:\servers\DayZServer_063\Instance_1\bec ::: ДАЛЕЕ НИЧЕГО НЕ ТРОГАЕМ!!! setlocal EnableDelayedExpansion echo. echo. AutoRestart Script started! echo. :check COLOR 0C timeout /t 10 /nobreak > nul set FLAG=0 set PROC_SERVER_START_EXE=%PROC_SERVER% set PROC_SERVER_START_Patch=%Patch_server% for /f %%i in ('tasklist /FI "IMAGENAME eq %PROC_SERVER%" /FI "STATUS eq RUNNING"') do ( set /a FLAG += 1 ) if %Start_server_with_smartsteamemu% == 1 ( set PROC_SERVER_START_Patch=%NAME_DIR_smartsteamemu% set PROC_SERVER_START_EXE=%NAME_LOADER_smartsteamemu% set PROC_SERVER_PARAMS=%NAME_CONFIG_smartsteamemu% ) if %FLAG% == 1 ( TIMEOUT /T %TIME_CHECK% /NOBREAK > nul cd "%Patch_server%" start "" "%PROC_SERVER_START_Patch%\%PROC_SERVER_START_EXE%" %PROC_SERVER_PARAMS%> nul^ && (set MSG=[%date% %time%] %PROC_SERVER% restarted echo !MSG! echo !MSG! >> %LOGFILE% timeout /t %TIME_CHECK% /nobreak > nul)^ || (set MSG=[%date% %time%] Error restarting PROC_SERVERess echo !MSG! echo !MSG! >> %LOGFILE%) ) if (%Use_BEC_AutoRestarter% != 1) goto :check set FLAG_BEC=0 for /f %%i in ('tasklist /FI "IMAGENAME eq %PROC_BEC%" /FI "STATUS eq RUNNING"') do ( set /a FLAG_BEC += 1 ) if %FLAG_BEC% == 1 ( TIMEOUT /T %TIME_CHECK% /NOBREAK > nul cd "%Patch_bec%" start "" "%Patch_bec%\%PROC_BEC%" %PROC_BEC_PARAMS%> nul^ && (set MSG=[%date% %time%] %PROC_BEC% restarted echo !MSG! echo !MSG! >> %LOGFILE% timeout /t %TIME_CHECK% /nobreak > nul)^ || (set MSG=[%date% %time%] Error restarting PROC_BECess echo !MSG! echo !MSG! >> %LOGFILE%) ) goto :check exit Кому лень создавать, вот готовый: _AutoRestarter1.bat 2. Заменяем и правим параметры в файле на свои, в данном случае это параметры запуска сервера, местонахождение сервера на компьютере и т.п., пояснения есть, как видим. Крайне не рекоммендую в названиях файлах и расположениях сервера указывать пробелы, bat-файлы их не любят! Если вы используете 'SmartSteamEmu', можно активировать опцию запуска сервера через него. Также в батничке есть контролер 'BEC' на случай и его падений (произвольного выключения) 3. Сохраняем, запускаем, и спустя время, обозначенное в параметре: set TIME_CHECK=60 сервер у вас запустится, если он отсутствует в процессах windows (при условии, если не напортачили в параметрах). Способ II: 1. Создаем в папке с сервером игры файл с именем 'AutoRestartScript.bat' и заполняем его следующими данными: @echo off cd /d %~dp0 ::CODE FILE UTF-8 + Russian OEM 866 ::: Здесь указываем имя серверного exe (обязательно, он проверяется на запущенность) set PROC_SERVER=DayZServer_x64.exe ::: Здесь указываем параметры запуска сервера для запуска сервера с exe напрямую set PROC_SERVER_PARAMS=-port=2302 -config=Instance_1\server.cfg -cfg=Instance_1\basic.cfg -profiles=Instance_1 -user=Instance_1 -name=Server -nologs -adminlog -freezecheck -noFilePatching ::: Здесь указываем путь до папки с сервером set Patch_server=C:\servers\DayZServer_063 ::: Здесь указываем имя файла, в который будут писаться логи рестарта set LOGFILE=log_restarter_server.txt ::: Здесь указываем время между проверками на запущенность процесса сервера (в секундах) set TIME_CHECK=60 ::: Указываем 1 если хотим запускать сервер через свой batch-файл, 0 если хотим запускать сервер напрямую с exe-файла сервера с параметрами выше set USE_BATCH_FILE__FOR_START_SERVER=1 ::: Указываем путь до папки с SmartSteamLoader set BATCH_FILE_START_SERVER=C:\servers\DayZServer_063\Start_server_game.bat ::: ДАЛЕЕ НИЧЕГО НЕ ТРОГАЕМ!!! setlocal EnableDelayedExpansion echo. echo. AutoRestart Script started! echo. :check COLOR 0C timeout /t 10 /nobreak > nul set FLAG=0 set PROC_SERVER_START_Patch=%Patch_server%\%PROC_SERVER% set PROC_SERVER_START_PARAMS=%PROC_SERVER_PARAMS% for /f %%i in ('tasklist /FI "IMAGENAME eq %PROC_SERVER%" /FI "STATUS eq RUNNING"') do ( set /a FLAG += 1 ) if %USE_BATCH_FILE__FOR_START_SERVER% == 1 ( set PROC_SERVER_START_Patch=%BATCH_FILE_START_SERVER% set PROC_SERVER_START_PARAMS= ) if %FLAG% == 1 ( TIMEOUT /T %TIME_CHECK% /NOBREAK > nul cd "%Patch_server%" start "" "%PROC_SERVER_START_Patch%" %PROC_SERVER_START_PARAMS%> nul^ && (set MSG=[%date% %time%] %PROC_SERVER% restarted echo !MSG! echo !MSG! >> %LOGFILE% timeout /t %TIME_CHECK% /nobreak > nul)^ || (set MSG=[%date% %time%] Error restarting PROC_SERVERess echo !MSG! echo !MSG! >> %LOGFILE%) ) goto :check exit Кому лень создавать, вот готовый: _AutoRestarter2.bat 2.Заменяем и правим параметры в файле на свои, в данном случае это параметры запуска сервера, местонахождение сервера на компьютере и т.п., пояснения также есть, как видим. Крайне не рекоммендую в названиях файлах и расположениях сервера указывать пробелы, bat-файлы их не любят! Если вы используете BEC, Whitelister, еще что-либо, запускаете сервер игры не напрямую, а через loader crack (как в smartsteamemu), или вовсе хотите делать при рестарте что-то свое, можно запускать сервер не с exe-файла сервера, а с указанного bat-файла. (примеры файлов: Start_server.bat test SmartSteamEmu.bat) 3. Сохраняем, запускаем, и спустя время, обозначенное в параметре: set TIME_CHECK=60 сервер у вас запустится, если он отсутствует в процессах windows (при условии, если не напортачили в параметрах). Способ III: 1. Создаем, если отсутствует, простенький батничек, который будет запускать сервер ваш со всем необходимым. Если имеется такой, переходим далее. Примеры есть в п. 3 ниже! 2. Скачиваем и запускаем простенькую программку: https://yadi.sk/d/k1Jk3sByqzczAQ RestartOnCrash.rar 3. Запускаем программку и добавляем новое правило нажатием Add, настраиваем: 6 - Указываем сам bat-файл, запускающий наш сервер (создавали в п. 1)(примеры файлов test SmartSteamEmu.bat Start_server.bat) 7 - Указываем папку с вашим сервером Настройки на скриншоте рабочие для сервера DayZ 0.63 4. Сохраняем настройки кнопкой OK 5. Ставим галочку, если не стоит в списке рядом с созданным нами заданием 6. Готово, сервер сам перезапустится, спустя время в секундах, обозначенное в настройках прграммы + время в правиле, созданном нами. Указанные выше способы далеко не единственные, и пойдут наверняка не только для сервера DayZ 0.63, но и для остальных игр и версий издателя Bohemia Interactive, а может и вовсе для других серверов и программ, но я надеюсь, что данная тема будет для вас полезна и поможет внести понимание того как и что работает!
  7. Этот скрипт проверяет UID игрока при подключении и если на сервере недостаточно мест, и его нет в списке скрипта, то на экране игрока высвечивается сообщение и через 10 секунд происходит кик с сервера. В момент появления сообщения игроку выдаётся God Mod чтобы другие игроки не смогли его убить. Что нам понадобится: 1) Reserved_Slots-master.zip Также вы можете скачать архив с GitHub Инструкция: 1) Копируем папку custom из архива в папку нашей миссии 2) Открываем init.sqf и в низ файла добавляем строку: [] execVM "custom\reserved_slots\slots.sqf"; 3) Открываем файл slots.sqf и настраиваем параметры: _server_maxplayers = 50; - общее количество слотов на вашем сервере _server_reservedslots = 5; - количество зарезервированных слотов _reserved_uids = ["00000000000000000", "00000000000000000"]; - UID`ы админов и/или VIP игроков, для которых зарезервированы слоты
  8. Описание: Таксист на машине (AI). Когда игрок появляется в одной из трейд-зон, он может вызвать такси, которое появится за приделами трейда, подъедет к нему и будет ждать пока в неё (машину такси) не сядет игрок. Затем игрок может выбрать любое из предопределённых направлений движения машины. Как только игрок выбрал место, бот рассчитывает самый короткий путь до точки по дорогам. В любой момент времени игрок может остановить таксиста и выйти из машины. Так же! если игрок выйдет из такси не заплатив (50 едениц), водитель так же выйдет и попытается убить "зайца" при помощи пистолета. Так же в радиусе 200м от таксиста появляются ещё два бота, которые ему помогут. Особенности: Стоимость такси в 50 едениц Водитель любит честных клиентов и отстреливает "зайцев" Максимум 3 таксиста (один на главной трейд-зоне или где укажет Администратор) 4 маршрута (точки маршрута можно поменять) Сообщения от водителя игроку (можно изменить) Множество функций для запрета игроку эксплуатировать такси Изначально место появления такси установлено для карты Altis Видео-демонстрация: Инструкция: 1) Качаем архив с GitHub (или тот что приложен ниже) :smiling: NibbleGaming_Taxis-master.zip 2) Папку Taxis копируем в папку миссии 3) Компилируем .pbo из папки NibbleGaming_Taxis с тем же именем 4) Копируем NibbleGaming_Taxis.pbo в папку @epochhive\addons 5) В самый низ init.sqf добавляем это: if(isDedicated)exitWith{}; cabcost = 50; //change this to change to cost of the cab [] execVM "Taxis\player_cab.sqf"; 6) В самый низ description.ext добавляем это: class CfgNotifications { class cabtext { title = "Nibble Taxis"; iconPicture = "\A3\ui_f\data\map\mapcontrol\taskIcon_ca.paa"; color[] = {0.8,0.8,0,1}; description = "%1"; duration = 5; priority = 0; }; }; 7) В файл mission.sqm ниже закрывающей скобки (};) класса class Markers добавляем: Infistar: Убедитесь что в run.sqf все значения установлены как тут: /* Notification check */ _UNC = false; /* HandleDamage check */ _HDC = false; //perhaps not needed because it only applies to driver, which is serverside /* Remove Hit Handler */ _REH = false; //perhaps not needed because it only applies to driver, which is serverside /* Revert HandleDamage */ _RHD = false; //perhaps not needed because it only applies to driver, which is serverside /* Remove Action Plrs */ _OAP = false; /* Remove Action Objs */ _OAO = false; /* Use Anti Teleport */ _UAT = false; //can probably be true, but if server lags the taxi jumps a bit, which can be mistaken for teleport /* Check Local Markers */ _CLM = false; _UVC = false; Фильтры BattlEye: 1) Для scripts.txt: 7 "BIS_fnc_" !"call bis_fnc_showNotification" 7 removeAllActions !="RemoveAllActions _cab;" 7 setMarker !"Local" 7 createMarker !"createmarkerlocal" 7 addEventHandler !"GetIn" !"GetOut" 7 deleteMarker !"deletemarkerlocal" 2) Для publicvariable.txt: 5 "" !="\"cab1\"" !="\"cab2\"" !="\"cab3\"" Оригинал: http://epochmod.com/forum/index.php?/topic/32340-release-taxi-script-v02/
  9. Квест на аномалии. Участники - любые игроки. 3 НПС, 3 Анимированных аномалии (пока без дамага), 3 квестовых предмета - детектор аномалий, карта сокровищь и журнал с девчонками 🙂 Выглядит это так... Мануаль по установке тут.... Обновление от 19.01.2016 https://github.com/olkeakavitacite/EQP_Anomaly/ Так же находится описание, как и чего делать.
  10. Есть ли у кого система автобанов для алтис лайфа ?
  11. Sauta

    ТимСпик для сервера

    Всем доброго времени суток. Купил я сервер и у меня нарисовалась проблемка. Как отключить тим спик, при заходи на сервер меня не загружает на сервер. Может кто то мне поможет.
  12. Ребят всем Привет , куплю сборку для своего РП проекта - даже наверное больше ищу 1-2 человека для совместного запуска проекта. Склоняюсь к Алтису больше ( возможно даже АРЕХ) . Только "Гибкие" сервера интересны. Пока из контактов только Личка.
  13. PHP скрипты, для автоматизации платежей, через платежный сервис Интеркасса. Автор: Я. Скрипты: Конфигурационный скрипт Скрипт - форма оплаты Скрипт - форма подтверждения оплаты Скрипт - обработка ответа от интеркассы Дополнительно: Таблица для БД, содержащая необходимые поля. Текст договора публичной оферты. Что требуется от Вас: Наличие припаркованного домена. Наличие SQL БД. Регистрация в Интеркасса. *Для подключения приема платежей с яндекс, киви и т.п., интеркасса требует, наличия на Вашей страничке с оплатой, ссылку на страничку с договором публичной оферты - Пример договора прилагается (см. выше). Подключение на своем домене(сайте). Как это работает? Вы устанавливаете данные скрипты на свой хостинг(домен). Ваши пользователи могут перейти по ссылке на оплату. После оплаты, данные автоматически помещаются в SQL БД. Все данные о платежах, как успешных, так и не валидных, будут в сохранены в БД, и текстовый файл. Пример работы данных скриптов, интегрированных на сайт: http://newskyreturn.ru/donation-interkassa/ P.S. Оплату - донат, можно принимать для любой игры. Если у Вас есть припаркованный домен, но еще нет сайта - за отдельную оплату(договорная) можно заказать с нуля сайт, - можно просто - странички оплаты. В противном случае - Интеграцию для сайтов на каких либо CMS, вы производите самостоятельно. Для владельцев серверов на базе А2\А3, за доп. оплату(договорная) возможно написание sqf скрипта автоматического зачисления в игру из БД. Стоимость перечисленных скриптов: 2000р.
  14. В каком файле прописать стартовый капитал к примеру 10к ? Мод exile. Карта Altis. Для новых игроков заходящих на сервер.
  15. Люди добрые кто поделится скриптом для God-mode техники внутри баз .
  16. BigBoss

    Скрипт для паспорта

    Парни,хелп,нужен скрип для паспорта на РП сервер зы:если что,договоримся)
  17. Добрый день уважаемые. Возник вопрос о операционных системах. У меня сейчас стоит Arma 3 Epoch сервер на двух машинах где serverfps скачит от 40 до 20. Описываю на примере первого сервера --------- Характеристики: AMD FX-8120 ОЗУ: 8120Мб HDD: 160Gb ОС: Windows Server 2012 Проблема возникает в том, что на сервере у меня играет человек десять, а serverfps скачит или падает до 10 - 5 fps что сильно напрягает. При этом давай проверять сервер, а максимум сколько использует сам сервер это 20 % CPU и 1400Мб Озу. Это учитывая что я указал все возможные параметры cpucount, enableHT и.т.д. Я уже даже все вырезал все что можно. У меня такое на Arma 2 DayZ не было, но тогда был Linux. А под Linux lumaemu сошек нет для Arma 3... Вопрос? Что я не так делаю. Может все дела в операционной системе?
  18. BigBoss

    Скрипт для светофора

    Парни,ни у кого случайно нету скрипта для работы светофоров на лайф проекте?)
  19. подскажите плиз кто знает в 1,52 инфистар не работает все толкуют одно и тоже нужно обновить но как сделать если я пират
  20. Всем привет! Поделитесь пожалуйста файликом initPlayerLocal.sqf, где прописаны трейды для Чернорусии. Или подскажите, как их добавить самостоятельно. Заранее Спасибо!
  21. Где найти настройки для стандартной админки, к примеру в Админке много нету техники и вооружения, где это всё можно добавить ?
  22. Проблема такого плана как перенести созданную миссию с редактора в карту сервера Arma 3 EPOCH Altis.
  23. Помогите найти стартовый лут для донатеров, всё обрыл ни чего толкового не нашёл. Про зелёные зоны+дон+обвязка не подходит! Буду очень благодарен!
  24. MyMenu: Версия: v0.4 Данный плагин добавляет возможность любому игроку создать свое (кастомное) меню команд в виде итемов дополнительного инвентаря () Добавить иконку меню можно командой: /mymenu add help 1 /менюшка добавить команда параметры команды /меню добавить help 1;list Где help 1 это команда которая будет соответствовать этому пункту меню Так же оператору сервера доступна команда /mymenu NickName add help 1 добавление команды игроку в меню, например игрок попросил помочь с командами привата. Удалить последнюю в списке иконку можно командой: /mymenu remove /менюшка удалить /меню удалить если пункт меню был последний то удаляется и сами "часы" меню Требования: SQLite - база данных для хранения меню игроков Особенности: Несколько команд на один пункт меню (итем) разделив их символом ; команды будут выполняться последовательно. Плагин создает в основном инвентаре игрока один итем "Часы" Дополнительный инвентарь с меню игрока открывается по щелчку на часы "Выкинуть" часы можно взяв любой предмет в инвентаре и положить на место часов , в этом случае "новые" часы появятся лишь при переподключении к серверу или смерти игрока (баг/фича) Скачать плагин
  25. Сидел на одном вполне известном сайте, и увидел тему про Linkseyi’s modmaker зашел туда и увидел срач в комментариях, типо (где найти русскую версию) (1.5.2) Воот, а так как аФтор давно выпил яду и положил свой 3х метровый на эту программу я решил ее русифицировать , ну убил почти весь день т.к слишком мутарно там все в итоге перевод все же сделал есть ошибки знаю пинать меня за это не надо т.к в свое время ху забил на учебу, были другие дела русифицировал для тех кто не хочет иметь дело с EN языком или слабовать в нем , хотя русифицировал не все примерно 96% для тех кто хочет поправить перевод Lang зашит в class по пути (ModMaker.jar\net\) Скачать Linkseyi’s modmaker 1.5.2 [Rus]
×
×
  • Создать...

Важная информация

Используя этот сайт, вы автоматически обязуетесь соблюдать наши Правила и Политика конфиденциальности.
Чтобы сделать этот веб-сайт лучше, мы разместили cookies на вашем устройстве. Вы можете изменить свои настройки cookies, в противном случае мы будем считать, что вы согласны с этим.