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

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

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

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

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

Таблица лидеров


Популярные публикации

Отображаются публикации с наибольшей репутацией начиная с 26.12.2013 во всех областях

  1. 30 баллов
    И так, ребятки, вот вам небольшая 'полезняшка' от меня, и совершенно бесплатно! Описание: Скрипт, добавляющий админу сервера возможность указывать для каждого игрока индивидуальный скин спавна, его персональную точку спавна и один из имеющихся на сервере стартовых наборов с лутом, которые можно составить самим. Если указано несколько точек спавна и/или наборов лута, то будет выбран один из предложенных вариантов рандомно. Также, любой из названных параметров можно отключить в скрипте и сделать его стандартным, как он есть поумолчанию на сервере. Дополнительно - есть возможность назначить свой набор стартового лута для всех игроков на сервере не из списка скрипта! Нам понадобится: 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. 20 баллов
    NeonMurdered

    NM_KAMAZ

    Версия 1.1.0

    1 201 скачивание

    Полностью рабочие модели КАМАЗа прямиком из Arma 2: Рабочая подвеска Рабочее освещение Дополнительные слоты под пассажирские места Дополнительные слоты под запасное колесо Разные вариации кузова со своими особенностями Разные расцветки на каждый тип кузова Соответствующие звуки двигателя и темп езды Этот аддон находится под лицензией DayZ Public License (DPL) и как таковой не должен быть распакован и распространен без соблюдения строгих руководящих принципов, изложенных в этом документе, доступном здесь: Тык Fully working KAMAZ models straight from Arma 2: Working suspension Working lighting Additional slots for passenger seats Additional slots for the spare wheel Different variations of the body with its own characteristics Different colors for each body type Appropriate engine sounds and driving pace This addon is under the DayZ Public License (DPL) and as such should not be unpacked and distributed without following the strict guidelines set out in this document, available here: Poke

    Бесплатно

  3. 17 баллов
    Yuki

    Настройка модовых types.

    И так, вышел 1.08 и я узнал одну замечательную вещь, про которую тут ещё не писали. Она поможет вам разгрузить ваш ванильный types от модовых вещей и ещё больше раскидать их по категориям. Идём в cfgeconomycore.xml, там вписываем следущее: <!-- Mod CENTRAL ECONOMY --> <ce folder="Mod_ce"> <file name="MVS_types.xml" type="types" /> </ce> Дальше мы создаём папку Mod_ce, в которой создаём ваш модовый types, в моём случае, это сделано под мод MVS, так что я назвал его MVS_types.xml. И всё, таких types может быть хоть сотни. Ваш основной файл types перестанет иметь 50к строк и не будет лагать при листании. Пример того, как оно может выглядеть в конечном счёте. Если где-то ошибся, то буду рад услышать исправление проблемы. <!-- NewDawnRangers mods types --> <ce folder="modstypes"> <file name="arma2weaponpack_types.xml" type="types" /> <file name="cannabisplus_types.xml" type="types" /> <file name="cheytac_types.xml" type="types" /> <file name="cl0udsmilitarygear_types.xml" type="types" /> <file name="codelock_types.xml" type="types" /> <file name="crsk_types.xml" type="types" /> <file name="massmanyitemoverhaul_types.xml" type="types" /> <file name="mosinscope_types.xml" type="types" /> <file name="mungharditempack_types.xml" type="types" /> <file name="opbaseitems_types.xml" type="types" /> </ce>
  4. 16 баллов
    CryRUS

    DayZ 1.05 Спавн лута в кастомных зданиях

    Здравствуйте! Этот гайд для тех кто хочет включить спавн лута в Домах, контейнерах и тд, где есть изначальная возможность спавна лута (так сказать по ванили). Также будет рассказано как "спавнить" здания и постройки которые есть в игре на данный момент. ВНИМАНИЕ Все мы должны понимать что основная масса людей этого сайта, это администраторы серверов или просто "модеры", я создал этот гайд для новичков те кто знает некую базу как ставить моды и тд. В данной теме я расскажу вам как заставить экономику сервера "видеть" новые здания и постройки в которых лут может спавнится. Пожалуйста не говорите что тема "баян" и тд, я помочь решил тем кому лень искать и тд. Начинаем! Для начала нам потребуется : 1. Чистая версия игры "DayZ" желательно лицензия (данный способ работает как на лицензии так и на нелегальной копии игры) 2. Чистый сервер игры "DayZ" тоже желательно лицензия. 3. Данная миссия "DayZCommunityOfflineMode" скачать ее можно тут источник официальный (- ТЫК -) весит 5.4 mb. 4. Программа "NotePad++" скачать ее можно на ЭТОМ сайте источник официальный. 5. Желание и настрой на чтение и тд. Часть 1 В этой части гайда мы сервер не трогаем вообще! Для начала нам надо установить модифицированную миссию игры, в ваш DayZ! 1. Скачайте архив "DayZCommunityOfflineMode", распакуйте его в удобное для вас место (будто рабочий стол или любая другая папка). 2. В распакованном архиве найдите папку "DayZCommunityOfflineMode.ChernarusPlus" и переместите в папку "Missions" в директории вашей игры. 3. Запустите батник "DayZCommunityOfflineMode.bat" модифицированной миссии, он находится в папке "DayZCommunityOfflineMode.ChernarusPlus". 4. У вас должна была запустится модовская миссия "COM" (CommunityOfflineMode) вы заспавнитесь с оружием и шмотом. Часть 2 1. Далее нам надо активировать режим полёта (кнопка Insert) что бы переместится в то место где требуется поставить новое здание. 2. Что бы все нормально прорисовалось вам надо телепортировать вашего персонажа рядом с вашей будущей постройкой для этого нажмите (End). 3. Теперь когда вы определились куда вам надо ставить постройки нажмите Y для открытия меню. 4. В меню выберите вкладку OB в ней нажмите на Buildings, и у вас появится список построек доступных на данный момент. 5. Далее выберите здание и нажмите кнопку "Cursor" в строке "Spawn Type :" . 6. Если здание надо передвинуть то не беда, нажмите на Кнопку , и перетащите постройку мышкой, также там можно изменить наклон и тд, с этим уже сами разбирайтесь я вам основы разбираю. 7. Далее вам нужно сохранить все ваши постройки в буфер обмена для этого вам надо нажать кнопку . 8. Содержимое буфера сохраните в любом текстовом файле, и главное не забудь куда ты здание впендюрил) Часть 3 1. Чтобы новые постройки появились в игре вам потребуется файл init.c он находится в паке DayZCommunityOfflineMode.ChernarusPlus. 2. В открытом init.c вставляйте данные из буфера обмена на моём примере! 3. У меня init.c с одной кастомной постройкой на берегу, у вас построек может быть больше а значит и строк SpawnObject тоже. 4. Отредактируйте init.c как в моём примере : 5. Сохраните ваш результат и снова запустите игру чер bat файл, здание должно появится на том месте где вы его ставили. Часть 4 Спавн лута в ваших зданиях Теперь когда вы научились ставить постройки или уже умели это делать вам надо будет заставить экономику "видеть" эти здания!!! 1. Для этого в init.c нам потребуется добавить строку " Hive myHive = CreateHive(); " в самое начало void main () { 2.Также потребуется добавить строку в самом конце void main " GetCEApi().ExportProxyData( "7500 0 7500" , 10000 ); " она нам нужна для того что бы у нас появился обновлённый файл экономики спавна лута в зданиях! 3. Далее сохраним наш init.c и запускаем игру. 4. После запуска в папке storage_1 которая находится в миссии DayZCommunityOfflineMode.ChernarusPlus должна появится папка export! 5. В папке export находится обновлённый с учётом новых зданий файл : mapGroupPos.xml 6. Этот файл копируем в DayZCommunityOfflineMode.ChernarusPlus ! 7. Идём в init.c и комментируем строку таким образом " //GetCEApi().ExportProxyData( "7500 0 7500" , 10000 ); " ---> // <--- это комментирует вашу строку что бы при запуске игры снова не создавался новый файл " mapGroupPos.xml "! 8. Запускаем игру, идём в наше новое здание и наблюдаем там появление нового лута! Что бы это появилось на сервер просто делаем тоже самое только при этом редактируем серверный init.c! Надеюсь я смог кому то помочь, это мой первый (в жизни) гайд, так что не кидайте палки))) Если кому то с этим нужна помощь обращайтесь!) Мой дискорд если что
  5. 14 баллов
    Kramtsov

    [DayZ Modding] видеотуториалы для начинающих

    Без лишних преамбул. Видеогайды для тех, кто хочет заняться моддингом под DayZ SA. Шаг за шагом. Последовательно. Лаконично. На истину в последней инстанции не претендую, просто делюсь опытом. P.S.ссылки на основные приложения/файлы/проекты я выкладываю либо в описание под видео, либо в своем дискорде в разделе туториалов. ================================================= Почему тебе не стоит этим заниматься: Как установить рабочее пространство и потом не страдать: Коротко о DayZ Tools Object Builder и его настройка О том, что такое лоды, селекшены и неймд пропертиз Текстуры и их постфиксы, RVMAT О config.cpp. Как работает и как им пользоваться О ретекстуре вещей Required Addons Запаковка PBO и проверка в Offline Mod Делаем оружие Здания: введение Здания: мультиматериалы Буду добавлять ссылки на видео по мере их выхода в общий доступ
  6. 11 баллов
    123new

    [Enscript] Учимся основам скриптинга

    И снова здравствуйте, товарищи и коллеги! Уже не один день наблюдаю среди многих из читающих такую проблему, как непонимание того, что написано в том или ином гайде, скрипте, теме форума по DayZ Standalone. А понимать бы это все это ой как бы не плохо было бы, да, товарищи? Ну хотя бы так, для себя, для осознания происходящего и упрощения своей жизни. Не все же за вас делать постоянно, как считаете? Что же, решил я вот для вас завести такую темку, полезную. В ней мы не будем рассматривать установку чего-либо или сборку мода. Мы попробуем разобраться в основах языка игры, а именно - написании своего кода, чтении кода игры, данного разработчиком, или чужим модом в мастерской. Разумеется, надеюсь я и на вашу бескорыстную помощь и поддержку, а также на помощь знатоков и экспертов скриптинга игры, ведь один я не справлюсь в написании этой безмерно полезной для многих и большой темы. А помощь ой как понадобится, чувствую затылком. Ну ладно, утомил я вас, начнем, пожалуй, согласны? Оговорюсь сразу, в данной теме мы затронем лишь скриптовую составляющую игры. Т.е. вопросы изменения модов, игры, создания собственных интерфейсов, игровых вещей и прочего освещаться не будут. Темы к ознакомлению, схожие с данным материалом: https://s-platoon.ru/topic/8622-enscript-delaem-skript-dlya-moda-i-osnovnye-principy-skriptinga-modov/ https://s-platoon.ru/topic/7838-sozdaem-svoy-servernyy-mod-dayz-14-to-discontined https://s-platoon.ru/topic/8859-enscript-rodnye-funkcii-v-kode-igry-opisanie-nahozhdenie/ Официальная документация, связанная с данным материалом (спасибо BorizzK? https://community.bistudio.com/wiki/DayZ:Enforce_Script_Syntax https://community.bistudio.com/wiki/Category:DayZ:Editing Начнем мы, пожалуй, с общего. Введение. Скрипты. Скрипты - важная часть функционирования игры, создания модов и модификации как игры, так и сервера. Они позволяют делать чудные модификации, создавать новые опции, настраивать или изменять в игре по своей задумке практически любой аспект и функционал, заданный разработчиками, дополнять его и разнообразить. Алгоритм Ваша первая задача при написании скриптов - определить, какие шаги надо предпринять, чтобы решить какую-либо проблему. Последовательность таких шагов - это и будет алгоритм. Например, намерение - передать другу ваш рюкзак. Значит необходимо выполнить следующие действия: Но тут у нас встает вопрос - игрок же вызывает какое-то меню или опцию, которая будет выполнять данные действия. Как это реализовать? Ведь игра - это лишь набор комманд, которые выполняются по одной за раз, как правильно объединить все и сделать корректно? Сделать это все можно именно посредством скриптинга в данной игре с использованием скриптов. Интерпретатор Когда вы составили алгоритм, вам нужно что-то, что может его исполнить. У нас есть компьютерная игра, которая может это сделать. В игре есть игроки, объекты которые могут выполнять те или иные действия, например, получение данных, создание объектов, открытие дверей и т.п. Все имеет свою комманду и результат выполнения. Иными словами, игра сама интерпретирует ваши скрипты и их код в рабочий вид в игре. Исходный код (Скрипт) Исходный код (скрипт) - это алгоритм, написанный на каком-либо языке программирования, который преобразуется в машинный код программы и будет выполнен в том или ином случае. В случае в нашей игрой это код, который игра преобразует в понятные для нее комманды и выполняет их. Скриптинг Скриптинг - какие-либо действия по написанию скриптов для своих работ\модов\игры. Скриптинг в DayZ в основном основывается на том, что уже имеется в игре. Т.е. на базовом функционале игры, который задан разработчиком. В DayZ вся скриптовая часть, написанная авторами игры, располагается в файлике "scripts.pbo" в папке "dta", который мы можем распаковать через "PBO Manager", например, и поглядеть. Любые скрипты могут содержать как набор из функций, так и набор из разных классов с функциями, которые могут вам понадобиться. Enforce Script Enforce Script (EnScript по простому)- это язык сценариев (интерпретации скриптинга), разработанный для движка игры DayZ "enforce Engine" компанией Bohemia Interactive Studio . Все скрипты EnScript, основные игровые логики находятся в "scripts.pbo" в папке "dta" каталога "DayZ" или "DayZ Server". Именно этот файл и будет нам полезен для выяснения того, как работают некоторые вещи (пока, наконец, не появится достойная ссылка на API от разработчиков игра, будь они прокляты). Основные принципы скриптинга на EnScript: Любая комманда, строка в функции должна завершаться на ; (точку с запятой) Тело любой функции/класса/структуры должно быть заключено в {} (фигурные скобки) Язык крайне чувствителен к регистру, т.е. MyPeremennaya и Myperemennaya будут 2 разными объектами для игры. Язык, крайне схожий с синтаксисом и коммандами C++, C# и JavaScript, для тех, кто знает эти языки хотя бы на любительском уровне, работать и писать свои скрипты будет проще в разы Структура скриптовой части игры Распаковав "scripts.pbo" (файл есть в клиенте игры и сервере, он одинаковый) мы увидим несколько папок, таких как "1_Core", "2_GameLib", "3_Game", "4_World", "5_Mission", "data", "editor" а также файлики "$PREFIX$", "$PRODUCT$","$VERSION$","config.bin","profile_fixed.cfg", "staticDefinesDoc.c". Из того, что мне известно, и что нам пригодится при написании скриптов, я отмечу лишь файлик "config.bin", который составляет основную конфигурацию pbo-файла и включенных в него файлов скриптов (по нему 'компилируются' при запуске игры в скрипты в определенные разделы кода запуска игры). А также папки "1_Core", "2_GameLib", "3_Game", "4_World", "5_Mission". Сам "config.bin" разбирать мы не будем, это сделано уже ранее в теме вот этой. Каждая из указанных ранее папок обозначает раздел инициализации кода игры. Например, в "1_Core", "2_GameLib" подгружается основной синтаксис всех функций и переменных игры (то как они будут объявляться в коде, вызываться, какие значения возвращать и принимать). В "3_Game" основной функционал самой игры, обозначающий используемые классы и базовые функции этих классов. В "4_World" все остальные классы, функции и параметры, которые будут исполняться в игре в зависимости от того, какие объекты окружения будут в ней будут и как будут функционировать. В "5_Mission" будет описываться функционал, относящийся к экранам загрузки, меню, их действиям и вызовам. На основе этих разделов и строится основной принцип скриптинга любого мода и функционирования игры в целом. Если вы откроете любой из модов, который имеет хотя бы 1 скрипт, увидите часть этой структуры. Основные разделы скриптов также взаимодействуют друг с другом, но только в порядке, в котором они выполняются и описываются. Например, из "5_Mission" вы можете вызывать классы и функции, описанные в "4_World", а из "4_World" вызвать функции в "5_Mission" не получится, поскольку игра их еще не знает на том этапе запуска и 'компиляции кода скрипта'. Функции Функции - это набор команд (действий) и параметров(переменных). Для ее вызова используется стандартный формат вида: {имя функции}({параметры функции}); Тело любой функции/класса/структуры должно быть заключено в "{}" (фигурные скобки) Функции могут быть как заданные разработчиками игры в каких-либо классах, так и написанные вами вручную собственные. Иногда для ее вызова хватает лишь одной лишь команды, например "MyFunction();". Но чаще в синтаксисе вызова функции присутствует один и более параметров, например "MyFunction("my text");" . Параметры функции могут не содержать значений, а могут иметь 1 или несколько значений, разделенных запятой, например: void MyFunction(int MyChislo, string text1, text2, bool value); У каждой команды может быть свой список данных, которые она может использовать в своем выполнении(например, как было в последнем примере), а также может быть и список данных, которые она вернет. Будут ли эти данные требоваться от функции зависит от автора, который эту функцию пишет (т.е. от разработчиков игры, если это скрипт родной игры, или от вас, если этот скрипт вы пишете сами) Функции с возвращаемыми данными (имеют тип значения, который они возвращают) могут вызываться как вот так: int chislo = MyFunction("my text"); т.е. переменная chislo пример значение, которое функция возвратила либо так: MyFunction("my text"); т.е. функция вернет значение, но оно не будет записано, и не будет использоваться далее. Функции без возврата значений (имеют тип void) могут вызываться только вот так: MyFunction("my text"); Функции могут иметь несколько типов. Например, void MyFunction() { } функция без возврата значения. А функция int MyFunction() возвратит значение типа int (число). Соответственно, функции без возврата значений будут содержать лишь код своих вычислений, а функции с возвратом обязаны иметь комменду return {значение} . Пример функции без возврата значений и принимаемых переменных: void MyFunction() { Print(" ---TEST--- "); } Функция запишет в script.log текст: " ---TEST--- " Пример вызова в коде: MyFunction(); Пример функции с возвратом значений и принимаемыми переменными: string MyFunction(string MyText) { Print(" ---TEST--- " + MyText); return "[" + MyText + "]"; } Пример вызова в коде: string MyTXT1 = MyFunction("TEXT FOR TEST"); Функция запишет в script.log текст: " ---TEST--- TEXT FOR TEST " и запишет в переменную MyTXT1 значение [MyText] Параметров, которые могут передаваться в функцию, может быть несколько, но не рекоммендую их делать более 10. Переменные и их типы Переменные - это типы данных, используемые в коде скриптов игры. Типы переменных обозначаются классами, заданными в игре. Это могут быть как заданные разработчиками поумолчанию типы данных, так и собственные классы, написанные вами. Обозначаются переменные общим видом так: {тип переменной} {название переменной} Строка с обозначением любой переменной или заданием ее значением должно быть закончено точной с запятой на конце! Например: int chislo, string text, bool value; или string text = "TEST"; Каждый тип означает, какие типы данных может принимать данная переменная, и какой объем в памяти игры она займет. Базовое количество типов схоже с c++ и c#, но есть и типы, обозначаемые заданными классами в игре. Стоит понимать, что объявленная 1 раз переменная в функции или классе не может быть объявлена в ней же еще раз, но ей может быть присвоено новое значение, например : void MyFunction() { string myperemennaya="text1"; // тут какие-то вычисления myperemennaya="text2"; } Список используемых типов переменных в игре можно прочитать тут (на немецком): https://germandayz.de/forum/thread/19551-guide-dayz-standalone-scripting-enforce-scripting/ Остальные имеют стандартный тип, используемый в том же с++ и c# Модификаторы функций и переменных. Также, переменные могут иметь модификаторы доступности данных в функциях. Например: public: делает переменную открытой к доступу в других функциях private: делает переменную закрытой к доступу в других функциях protected: ограничивает доступ к переменной только для дружественных и дочерних классов. static - переменная, которая сохраняется в памяти игры даже после удаления экземпляра функции (класса) или переменной из памяти (как в C++). native - Функция или переменная, реализованная игровым движком, не может быть перезаписана. В исходном коде движка такие функции отмечены со смещением. Невозможно изменить модами и сприптами, только использовать их сами. ref - ссылка на свой тип класса или переменной, ref - сокр. referal, т.е. ссылка в переводе Модификаторы также описаны по ссылке выше, и могут быть использованы не только в переменных, но и в функциях игры! Классы Классы - это структуры, которые могут содержать определенные функции и переменные, заданные автором скрипта. У классов может быть много функций, переменных, а каждый класс в свою очередь может быть задан и записан в отдельные переменные по нескольку раз. Т.е. это своего рода свой тип переменной, которая может содержать свои данные внутри себя. Отдельная переменная своего класса или одного из классов игры (например Playerbase) воспринимается как единичный некий экземпляр-объект данного класса, и чем больше таких переменных, тем больше экземпляров одного и того же класса существует в памяти игры. Например: PlayerBase player = NULL; Также, в классах можно обращаться к переменным и функциям, находящимся внутри классов через символ точки (это как вызов и получение результата функции или переменной). Т.е. для экземпляра класса: class MyClass { string MyText = ""; int Chislo = 0; void MyFunction() { Prnt("TEST"); } } ref MyClass Peremennaya = new ref MyClass(); создается переменная, и ее можно вызывать так: string MyResult = Peremennaya.MyText; и значение My Text будет записано в MyResult. Также можно и вызвать функцию или результат ее выполнения (если функция возвращает значение): Peremennaya.MyFunction() выполнит запись в script.log текста TEST. Переменные, объявляемые вне функций в классе одном будут доступны во всех функциях этого класса. Но переменные, заданные в классе, будут индивидуальны для каждого экземпляра этого класса. Т.е. если мы создаем свой класс, например, такого содержания: class MyClass { string MyText = ""; int Chislo = 0; } затем создаем экземпляры этого класса в памяти игры, коммандами ref MyClass Peremennaya = new ref MyClass(); ref MyClass Peremennaya2 = new ref MyClass(); то у Peremennaya и у Peremennaya2 будут свои данные в MyText и Choislo, не связанные между собой: Peremennaya.Text = "MyText1"; Peremennaya.Chislo = 2; Print("Peremennaya.Text = " + Peremennaya2.Text + " Peremennaya.Chislo = " + Peremennaya.Chislo.ToString()); Print("Peremennaya2.Text = " + Peremennaya2.Text + " Peremennaya2.Chislo = " + Peremennaya2.Chislo.ToString()); То мы получим в scriptlog: "Peremennaya.Text = Peremennaya.Text = MyText1 Peremennaya.Chislo = 2" "Peremennaya2.Text = Peremennaya2.Text = Peremennaya2.Chislo = 0" Т.е. в Peremennaya2.Text будет пусто. Обязательно для созданных собственных классов переменных указание ссылочности типов - ref (ref - сокр. referal, т.е. ссылка в переводе) - от этого зависит доступность данных в классах и функциях. Также, из классов можно вызывать и функции, и обращаться к переменным. Разумеется, если они не защищены функцией или модификатором. Например, создадим класс: Class ClassTest { string MyText1 = "123"; private string MyText2 = "456"; void MyFunction1 (string text) { string MyText3 = "789"; Print("!!!Used MyFunction:" + text); } int MyFunction2 () { return 2; } } и создадим экземпляр данного класса, и попробуем к нему обратиться: ref ClassTest Peremennaya3 = new ref ClassTest(); Print("Text1 = " + Peremennaya3.Text1); // В script.log будет Text1 = 123 Print("Text2 = " + Peremennaya3.Text2); // не запустится игра, так как модификатор private не позволит обратиться к переменной внутри класса Print("Text3 = " + Peremennaya3.MyFunction1 ("TEXT")); // В script.log будет Text3 = !!!Used MyFunction:TEXT Peremennaya3.MyFunction2(); // Выолнит функцию MyFunction2 и возвратит значение 2, но оно не будет записано А вот MyText3 из MyFunction1 не получить, так как она содержится внутри функции в классе. Моддинг Классов Классы, в свою очередь, можно менять модами, если они не являются 'нативными', либо не защищены движком игры разработчиков от изменений. Для этого применяют приписку "Modded" перед именем класса с сохранением его имени, например: Modded class PlayerBase { } Моддинг Функций в классах Функции в классах также можно перезаписывать. Для этого используется модификатор "override" перед тем, как задать эту функцию, а в теле самой этой функции можно (и крайне рекоммендуется, но не обязательно) использовать вызов "super." с дальнейшим вызовом этой функции и передачей оригинальных параметров функции. Например: Modded class PlayerBase { override void OnConnect() { Print("Test1"); // Эта строка выполнится до вызова оригинальной функции super.OnConnect(); // вызов оригинальной функции с сохранением ее параметров Print("Test2"); // Эта строка выполнится после вызова оригинальной функции } override string GetPlayerClass() { string returned_original = super.GetPlayerClass(); // вызов оригинальной функции с сохранением ее параметров и значения в переменную if(returned_original == "Bad Type") // Проверка значения { returned_original = "Good Type"; // Замена значения на нужное нам } return returned_original; // Возврат значения функцией } override void EEKilled( Object killer ) { super.EEKilled( killer ); // вызов оригинальной функции с сохранением ее параметров Print("Test3"); // Эта строка выполнится после вызова оригинальной функции } } Как видим, функции перепишутся с вызовом оригинального значения и допиской нужных или коррекцией. Можно делать и так, но крайне не рекоммендуется: Modded class PlayerBase { override void OnConnect() { Print("Test1"); // Эта строка выполнится до вызова оригинальной функции Print("Test2"); // Эта строка выполнится после вызова оригинальной функции } } Но в таком случае, если утеряно оригинальное выполнение кода игры и наследование функций, игра/сервер могут сломаться. Да и моды, которые параллельно с вашим, будут использовать эту функцию, могут перестать работать. Моддинг и скриптинг - Разница? Собственно, если вы осилили все. что описано выше, вы освоили базовую часть скриптинга в данной игре, а значит вас можно поздравить: Теперь вы готовы к написанию собственных скриптов и модов! Самой по себе разницы между скриптами и модами нету. Скрипты - это составляющая большинства современных модов в DayZ, т.е. непосредственная часть мода. Те же самые скрипты могут быть и в mpmissions и в моде, но с одной разницей - то что есть в mpmissions может быть в подключено в моде, а то что подключено в моде не всегда может быть подключено в mpmissions. А смысл как раз в том, что игра загружает скрипты последовательно, т.е. сначала оригинальный код игры с dta, потом моды, и только потом mpmission. Сама же "Mpmission" является частью, заданной в классе "5_Mission" в оригинальных скриптах игры, и делится на 2 файла в зависимости от типа запускаемой игры. Для клиента игры это "missionGameplay.c" а для сервера это "missionServer.c", откуда уже и читаем mpmission сервера. Иными словами, на момент чтения mpmission у нас по сути уже считаны и организованы все структуры разделов кода игры, и доступа к изменениям кодов и классов в "mpmissions" у нас нет. Т.е. то, что вносится в Mpmissions можно вносить в свой мод, но никак не наоборот. Сами же скрипты по своей стркутуре и особенностям такие же. Примечание: Что же касается модификаторов, типов переменных, функций, классов, используемых в игре в скриптах и модах, можно пока почитать вот тут на немецком: https://germandayz.de/forum/thread/19551-guide-dayz-standalone-scripting-enforce-scripting/ Позже будем пытаться создавать свою тему с данным описанием Что касается информации о родных функциях и классах, используемых в игре и на сервере - этой информации найти не смог. Но ее вы можете найти сами так: распаковываем весь scripts.pbo в папку, запускаем Notepad и используем поиск в папке по тексту (Ctrl+F вкладка №3), ищем по кусочкам нужных фраз на английском и смотрим как называется функция, ее расположение в классе. Также, предлагаю всем, кто заинтересован в облегчении поиска информации о таких функциях, помочь друг другу и составить этот список самим в вот этой теме на форуме: Поиск по форуму поможет остальным найти интересующую нас информацию ?
  7. 11 баллов
    Ivlar

    Антидюп рюкзаков от ivlar.net Обновлен 17.05.15!

    Выкладываю рабочий скрипт противодействия дюпу! Обновлен 17.05.15 Описание: Скрипт удаляет раздюпанные рюкзаки (рюкзаки с одинаковым id, можно так сказать) Особенности: Скрипт активируется при открытии инвентаря и проверяет на уникальность рюкзаки игроков в радиусе 10-ти метров. Если найден раздюпанный рюкзак, то этот рюкзак удаляется. Установка: Закинуть в ВашуМиссию.pbo скрипт InventoryOpened.sqf с содержимым: // @file Author: Ivlar.net [] spawn { while {1 == 1} do { waitUntil {!isnull (findDisplay 602)}; { if ((isPlayer _x && _x != player) && (alive _x)) then { _backpack=backpackContainer player; _backpack_x=backpackContainer _x; if(_backpack==_backpack_x)then{ hint "Не дюпайся!"; removeBackpack player; }; }; } forEach nearestObjects [player, ["Epoch_Male_F","Epoch_Female_F"], 10]; sleep 1; }; }; и добавить в init.sqf if (hasInterface) then { [] execVM "InventoryOpened.sqf"; }; Забрал скрипт? Поставь + в репутацию
  8. 10 баллов
    Борьба с читерством в играх, когда стандартные средства не помогают из песочницы Бывают ситуации, когда читерство в сетевых играх переходит границу стандартной защиты и становится на первый взгляд непреодолимой проблемой. Но даже в таких ситуациях можно найти выход. В этой статье пойдет речь о не очень популярной игре ARMA 2 и не совсем обычных методах борьбы с читерами. Тематика (игровое администрирование) довольно необычная для хабра, но она также имеет отношение к IT, и я считаю, вполне заслуживает внимания. Предисловие За долгое время, сколько я читаю хабр, я ни разу не встретил ни одной статьи по администрированию обычных сетевых игр, но ведь такие администраторы тоже есть. Они, как и другие администраторы собирают железо, ставят на него linux или windows, устанавливают apache, nginx, занимаются веб сервисами, читают хабр и т.д., но основная цель всего этого — поддержка игровых серверов, которые тоже имеют свои особенности в настройке. В этой статье я не буду писать про настройку игровых серверов, а как я уже написал выше, хочу лишь обратить внимание на то, как можно бороться с читерами (на примере игры ARMA 2) если стандартная защита не справляется с этой задачей. Описание и особенности игры ARMA 2 Данная игра имеет особую атмосферу, которая притягивает особенную аудиторию, любителей непростых игр. Играют в нее, по сравнению с популярными хитами, довольно мало людей. И дело тут не только в некоторых багах, которые мешают играть, но и в довольно сложном геймлее. Ведь не с проста эта игра позиционируется как военный симулятор, а не простой 3D экшен. Кроме уникального геймлея, самая большая особенность ARMA 2 в том, что она имеет очень гибкую систему скриптов, которая позволяет сделать из нее совсем не похожую на оригинал игру. Например, можно сделать сетевой режим с элементами РПГ! В основном все зависит от навыков и фантазии тех, кто делает миссии для данной игры. Так же эта игра имеет огромную базу аддонов — техника, модели солдат, оружие, звуки и т.д. Но ее самая большая особенность является и ее самой большой проблемой в плане уязвимости. Читеры в ARMA 2 могут творить все что угодно, начиная от создания любых предметов на карте, бессмертия, бесконечных патронов и заканчивая исполнением команд для управления сервером. В такой ситуации даже официальная защита начинает проигрывать эту борьбу. И кажется, что уже ничего кроме постоянного наблюдения за игрой не может помочь в поимке читеров. Но зная особенности игры все же можно предпринять некоторые меры! Борьба с нарушителями Для борьбы с читерами в ARMA 2 применяется официальный античит BattlEye. И в связи с тем, что игра имеет очень много аддонов, в том числе и тех, которые могут дать преимущество в сетевой игре, в ней реализована возможность пускать на сервер игроков только с одобренными аддонами «verifySignatures=1;» — аддоны проверяются по уникальной подписи. Но все это не помогает. Если читер захочет, он может найти средства для обхода проверки уникальных сигнатур и попасть на сервер с читерским аддоном. К счастью не все читеры достаточно умные и иногда в логах могут засветиться такие записи: 10:49:46 Player Dimt: Wrong signature for file expansion\addons\darky.pbo В таких случаях администратору самому приходиться углубляться в знания читов и тогда будет очевидно, что название аддона darky.pbo указывает на его принадлежность к читерскому. простейший скрипт: #!/bin/sh DETECTED="/usr/games/a2_bans/cheater.log" DETECTEDTK="/usr/games/a2_bans/teamkill.log" WRONGSIG="/usr/games/a2_bans/wrongsig.log" echo "Последнее обновление (каждые 30 минут): `date "+%d.%m.%Y %H:%M:%S"` \n" > $DETECTED grep GameHack /usr/games/arma2*/arma2_server_console.log >> $DETECTED echo "Последнее обновление (каждые 30 минут): `date "+%d.%m.%Y %H:%M:%S"` \n" > $WRONGSIG grep 'Wrong signature for file' /usr/games/arma2*/arma2_server_console.log >> $WRONGSIG echo "Последнее обновление (каждые 30 минут): `date "+%d.%m.%Y %H:%M:%S"` \n" > $DETECTEDTK grep teamkill /usr/games/arma2*/log.23* >> $DETECTEDTK Соответственно, прописал его в крон исполняться каждые 30 минут. Это очень помогает и мне и другим администраторам наших серверов. Но в плане эффективной борьбы с читерами это все равно практически бесполезно. И тут в дело вступает самый интересный и основной метод — анализ трафика! Wireshark в борьбе с читерами Администрирование игровых серверов это далеко не всегда простое включение определенного серверного приложения. Здесь тоже помогают знания, которые напрямую к играм не имеют никакого отношения. Так получилось и в данной ситуации. На помощь пришел анализатор трафика Wireshark. Я не буду углубляться в подробности использования этой программы — к ней прилагается хорошая документация. Сбор трафика на наших серверах ARMA 2 осуществляется очень просто: dumpcap -i 1 -f "udp port 2302 and dst x.x.x.x" -w /var/log/dumpcap/arma2co_1/a2co1.pcap -b duration:1800 filesize:200000 Собранная информация позволяет увидеть применение тех самых читерских команд, которые создают технику, убивают других игроков и т.д. Нужно лишь предположить, какой код может быть использован читерским приложением, или же самому скачать некоторые читы, чтобы проанализировать их работу. В итоге, когда уже знаешь по каким ключевым словам искать, можно обнаружить такую картину: 0040 00 00 0a 92 8f c5 00 68 45 78 65 63 43 6f 64 65 .......hExecCode 0050 00 3c 06 00 00 00 53 54 52 49 4e 47 22 4c 61 6e .<....STRING"Lan 0060 64 52 6f 76 65 72 5f 43 5a 5f 45 50 31 22 20 63 dRover_CZ_EP1" c 0070 72 65 61 74 65 56 65 68 69 63 6c 65 20 28 70 6f reateVehicle (po 0080 73 69 74 69 6f 6e 20 70 6c 61 79 65 72 29 sition player) Как видно от игрока на сервер была отправлена команда hExecCode с кодом, который создает (createVehicle) автомобиль LandRover. Разумеется, в данной ситуации без дополнительных средств (читов) такой код применить нельзя. После этого уже не составит труда вычислить все необходимые данные для блокировки нарушителя. В итоге мы имеем хоть и не автоматическую защиту моментального действия, но достаточно эффективную в плане распознавания читерского кода. Скачать - https://www.wireshark.org/#download Альтернативная ссылка - https://www.wireshark.org/#download
  9. 9 баллов
    Armor

    Multi quest System

    Версия 1.0.4

    238 скачиваний

    Система позволяющая вводить в игру задания. На данный момент типов заданий 6, это: 1 : Убийство кого-либо - Можно установить конкретное оружие для выполнения цели. 2 : Доставка предметов (При завершении задания целевые предметы удаляются) 3 : Поиск предметов (При завершении задания целевые предметы НЕ удаляются, например - Задание: заработать 100.000 рублей) 4 : Крафт предметов 5 : Ловля на удочку чего-либо (Рыбалка) 6 : Сорвать растение (Садоводство, растение не должно быть сгнившим) 7 : Разведка 8 : Действие Система настройки заданий довольно гибкая, вы можете настроить: Цепочки заданий (нельзя взять задание, если не выполнены предыдущие) Установка лимита по времени на выполнение, либо бессрочные задания. Установка интервала повторного выполнения задания (Если интервала нет, квест можно выполнить лишь 1 раз) Установка целей Установка наград за задание Более подробное ознакомление с возможностями системы в файле с инструкцией A system that allows you to enter tasks into the game. At the moment, there are 6 types of tasks, these are: 1: Killing someone - You can set a specific weapon to complete the target. 2: Delivery of items (At the end of the task, the target items are deleted) 3 : Search for items (At the end of the task, the target items are NOT deleted, for example-Task: earn 100,000 rubles) 4 : Crafting items 5: Fishing for something (Fishing) 6 : Pluck the plant (Gardening, the plant should not be rotten) 7 : Exploration 8 : Action The task setup system is quite flexible, you can configure: Task chains (you can't take a task if the previous ones are not completed) Setting a time limit for completing or perpetual tasks. Setting the interval for repeated task completion (If there is no interval, the quest can be completed only once) Setting goals Setting task rewards For a more detailed introduction to the system's capabilities, see the instruction file

    7 000,00 ₽

  10. 9 баллов
    paranoyk

    Ставим Елку с подарками на сервер

    Это очень сложно на пальцах обьяснить, тут нужен помошник-гомо цапус. Так вот, берём этхо помошника и абучаем азам компуктера. После оного действа и понятия "как остановить поезд, машину и сервер"-стреножим сервер. Можна аглоблей. По блоку. Или по камню. Радуемся сему и продолжаем медленно поварачивая отвертку м мозгу пошника направляем его цепкие грабалки в папку где лежит сокровенная девичья тайна сервера. Ломаем её...То есть открываем. (сиё есть C:\Program Files (x86)\Steam\steamapps\common\DayZServer\ для примеру....) Буркалами смотрим на благодать файлов открымшыюся и множество непонятных папок..или мамок,в зависимости от контужености. Ищем пеапку по фамилии mpmissions Открываем, а там аки иглу в жопе утки ещё одну папку dayzOffline.chernarusplus Думали кончилось жопой утки, не теперь ещё одно яйцо....папка db Итого (это не фамилия) вам нужно пройти по пути если кратнко и по ванили C:\Program Files (x86)\Steam\steamapps\common\DayZServer\mpmissions\dayzOffline.chernarusplus\db (это если вы из тех кто хранит все яйца в корзине стима) Вот тут мы видим нам нужный файлик....котрый обзывается events.xml Даёте помошнику в руки открывашку или лом...что привычней и открываете его, кстати фомка "Нотепад++" годиться. Если не знаете англицкой мовы -хана вам, там одни буржуйскиек словеса и букффы. Вам шашечки или ехать? Всмысле деревья или санки? Деревья это <event name="StaticChristmasTree"> <nominal>13</nominal> <min>0</min> <max>0</max> <lifetime>43200</lifetime> <restock>0</restock> <saferadius>1000</saferadius> <distanceradius>1000</distanceradius> <cleanupradius>1000</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>uniform</position> <limit>child</limit> <active>0</active> <children> <child lootmax="15" lootmin="10" max="13" min="13" type="ChristmasTree"/> </children> </event> Санки это <event name="StaticSantaCrash"> <nominal>3</nominal> <min>0</min> <max>0</max> <lifetime>2100</lifetime> <restock>0</restock> <saferadius>1000</saferadius> <distanceradius>1000</distanceradius> <cleanupradius>1000</cleanupradius> <secondary>InfectedSanta</secondary> <flags deletable="1" init_random="0" remove_damaged="0"/> <position>fixed</position> <limit>child</limit> <active>0</active> <children> <child lootmax="15" lootmin="10" max="3" min="1" type="SantasSleigh"/> </children> </event> Допустим нам нужны только деревья... Берм ручку и записываем в <nominal>13</nominal> (не меняйте на большее, нет смысла,можно урезать) <min>10</min> -минимальное колличество ёлок <max>13</max> максимальное колличество ёлок (это для примера) И строчку.... <active>0</active> на <active>1</active> Сохраняем, закрываем...можно на ключ, задвижку и кручочек. Открываем рядом файлик types.xml (внимание! прямой просмотр этого файла может нанести вред психике ваших санитаров) Ищем строчку с GiftBox_Large_1 за нумером 666(!)4 Выглядет енто так, <type name="GiftBox_Large_1"> <nominal>0</nominal> <lifetime>7200</lifetime> <restock>0</restock> <min>0</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> <category name="containers"/> <tag name="floor"/> <tag name="shelves"/> <usage name="Town"/> <usage name="Village"/> <usage name="SeasonalEvent"/> </type> Отодвигаете помошника от экрана, сдаёте его в психушку ибо всего этого он уже наверное мычит аки теля..... Теперь, всё просто, задаёте себе вопрос "что делать?" Спавнить подарки ТОЛЬКО под колючим деревом или как на ванили "в домах и весях" и под деревом? ДОПУСТИМ решили "только колючее дерево достойно подарков"...Решаем сколько подарков GiftBox_Large_1 будет в спавне под ВСЕМИ деревьями по всей Черноруссии совокупно...Решили? вот и переписываем это в (для примера, идея зарегестрирована в палате мер и весов у городе парижу) <type name="GiftBox_Large_1"> <nominal>10</nominal> <lifetime>7200</lifetime> <restock>1800</restock> <min>8</min> <quantmin>-1</quantmin> <quantmax>-1</quantmax> <cost>100</cost> <flags count_in_cargo="0" count_in_hoarder="0" count_in_map="1" count_in_player="0" crafted="0" deloot="0"/> <category name="containers"/> <tag name="floor"/> <tag name="shelves"/> <usage name="SeasonalEvent"/> </type> По этому же подобию и с той же идеей меняем ВСЕ GiftBox_ Предупреждаю. МАЛЕЙШАЯ ошибка в данном файле приведёт к отсутсвию присутсвия спавна лута. Думаете всё?...ага, счазззз Переходим на уровень выше, то есть в папку dayzOffline.chernarusplus и вскрываем файл mapgroupproto.xml.(патологоанатом пользителен, бо тоже многа букафф) Ищем строчку аки иголку в стоге конопли с ChristmasTree (внезапно она имеет номер 15608) И переделываем её в его....тоесть теперь должно быть так <group name="ChristmasTree" lootmax="10"> <usage name="SeasonalEvent" /> <container name="lootFloor" lootmax="10"> <category name="containers" /> <tag name="floor" /> <tag name="shelves" /> <point pos="2.621 1 -3.694" range="0.30" height="1" /> <point pos="-2.043 1 -3.967" range="0.30" height="1" /> <point pos="-2.616 1 -3.121" range="0.30" height="1" /> <point pos="-3.926 1 -2.848" range="0.30" height="1" /> <point pos="-4.417 1 -1.566" range="0.30" height="1" /> <point pos="-1.880 1 3.781" range="0.30" height="1" /> <point pos="-0.243 1 3.917" range="0.30" height="1" /> <point pos="0.957 1 4.190" range="0.30" height="1" /> <point pos="2.621 1 3.644" range="0.30" height="1" /> <point pos="3.494 1 2.662" range="0.30" height="1" /> <point pos="4.313 1 1.817" range="0.30" height="1" /> <point pos="4.667 1 0.753" range="0.30" height="1" /> <point pos="4.777 1 -0.366" range="0.30" height="1" /> <point pos="4.449 1 -1.593" range="0.30" height="1" /> <point pos="4.013 1 -3.367" range="0.30" height="1" /> <point pos="1.066 1 -3.585" range="0.30" height="1" /> <point pos="-0.543 1 -3.912" range="0.30" height="1" /> <point pos="-4.771 1 0.725" range="0.30" height="1" /> <point pos="-4.144 1 3.808" range="0.30" height="1" /> </container> </group> Запускаем сервер.....всё. Коротенько так. (необходим вайп ивента, как сиё колдунство провести без наркоза и удара ломом по чайнику или самовару-искать на форуме)
  11. 9 баллов
    DrTauren

    Готовая сборка DayZ Standalone 0.63 от DaOne v0.2

    Ниже можно бесплатно скачать сборку сервера DayZ Standalone 0.63, о которой мечтает каждый новичок или просто ленивый админ Практически все основные функции уже есть тут и вы можете легко их изменять Особенности сборки: Включение\отключение сообщений о входе\выходе игроков на сервер (файл Settings.C) Включение\отключение кастомного стартового лута для игроков Эта функция позволяет настроить спавны с предустановленным рандомным снаряжением. Для настройки типа предметов для спавна используйте папку "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/LoadOuts". Каждая категория в отдельном .txt-файле. Если вы хотите удалить элемент или добавить, убедитесь, что вы следуете тому же макету кода, что и в файле. Скрипт будет случайным образом выбирать элемент из каждой категории. Если вы хотите удалить определенную категорию, просто оставьте файл пустым или удалите его. Вы можете изменять стартовый лут во время работы сервера! После внесения правок просто войдите в игру как администратор и используйте команду администратора /Update Loadouts Включение\отключение спавна сразу с оружием Эта функция позволяет дать оружие при появлении. Для редактирования типов оружия, зайдите в следующий файл: "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/DayZSurvival.C" (строка 352). Эта функция является рандомизатором. Это может быть полезно: SpawnGunIn( PlayerBase player, string ClassName, bool isPrimary, TstringArray Attachments, TstringArray Extras). Примечание: значение типа bool isPrimary стоит выставлять как 'true' если вы желаете сделать оружие основным Включение отключение усталости (стамины) В строку запуска добавьте -DisableStamina чтобы отключить усталость Кастомные сейфзоны с бессмертием Эта функция позволяет разместить безопасную зону в любом месте на карте с радиусом, который вы хотите. Для изменения сейфзон вам нужен этот файл: "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/SafeZoneFunctions" Возможность добавлять свои здания на карту Эта функция - простой способ разместить свой собственный код зданий в определённом месте, а не в главном блоке, дабы его не засорять. Редактировать это дело в файле: "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/BuildingSpawner.c".Не имеет значения, как вы создаете свои здания или устанавливаете их направление и т. д. Просто убедитесь, что скрипт находится внутри Void (), чтобы он выполнялся при запуске сервера. Хороший способ получить импортированные здания - использовать COM (Community Offline Mode). Вы можете размещать здания и извлекать их информацию. Админка через чат Просто добавьте свой steam64ID в файл "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/Admins.txt". Установить пароль администратора сервера в файле server.cfg, в игре войти в систему, используя пароль. #login myPassword Система отслеживания очков игроков и трекер активности убийств с временными метками Эта функция создает два файла в профиле сервера (если вы используете командную строку -instance, она будет размещена там), профиль сервера находится в папке Documents по умолчанию (там, где находятся ваши логи). Эта фича обеспечивает подробный журнал убийств и записывает статистику игроков, такую как общее количество смертей и общее количество убийств на сервере. Данная функция реализована в рамках мода. Сообщения об убийствах и смертях в чате Свои сообщения при входе Случайные предустановленные сообщения всплывающие для всех игроков. Для изменения сообщений используйте файл "mpmissions/DayZSurvival.chernarusplus/ScriptedMods/MOTDMessages.c" Установка: 1) Качаем архив: DZMods-master.zip 2) Открываем папку с сервером и создаём в ней папку с любым вашим названием 3) Открываем папку mpmissions и копируем туда файл DayZSurvival.chernarusplus из архива. Если вы изменяли xml файлы с лутом, то убедитесь что вы заменили те, что в DayZSurvival.chernarusplus на свои. Папка db не содержит модифицированных файлов 4) Конфиг сервера serverDZ.cfg находится в корневой папке, скопируйте его в папку, созданную в первом шаге установки. Открываем конфиг и в самом низу видим: dayzOffline.chernarusplus. Заменяем на DayZSurvival.chernarusplus и сохраняем файл. 5) Копируем файл ModdedScripts из архива в корневую папку сервера (где .exe файл). 6) Добавляем в командную строку сервера это: -mod=ModdedScripts -config=NameOfFolderFromStep1\serverDZ.cfg -profiles=NameOfFolderFromStep1 -name=myServerName Параметр -name меняет название сервера и выводит его в чате когда игрок умирает\заходит\выходит, а также в прочих сообщениях. Если вы хотите активировать любые другие моды, указанные в списке функций, просто добавьте командную строку к тому, что запускает ваш сервер. На этом всё Не забываем про + Таким образом бесплатно получаете сборку сервера, в то время как за практически то же самое люди требуют деньги. https://github.com/Da0ne/DZMods
  12. 9 баллов
    ZigoFrend

    ID Объектов.

    DrTauren https://docs.google.com/spreadsheets/d/1sUITFdMsriex8_urZRlIPTULGUhkYFxchBmgPdec4SY/edit?usp=sharing как и обещал
  13. 8 баллов
    Экономика сервера - общая документация: Этот пакет включает в себя стандартную многопользовательскую миссию DayZ с использованием автономной базы данных. Использование этого типа миссии означает, что все персонажи сохраняются только на вашем сервере - при использовании автономной базы данных нет возможности использовать одного и того же персонажа на нескольких серверах. Информация о персонаже хранится в файле player.db, расположенном в папке dayz.chernarusplus\storage_X (удаление файла приведёт к вайпу персонажей). Эта папка также содержит папку data, которая в основном является хранилищем информации о состоянии центральной экономики и служит для сохранения различного рода объектов во время рестарта сервера (удаление этой папки приводит к сбросу состояния центральной экономики, что означает, например, удаление появившегося лута). Mpmissions - папка миссии сервера, содержащая в себе очень много интересного. Можно заметить папку db, 13 XML файлов, spawnpoints_players.bin (хранит координаты всех возможным мест спавна игрока) и файл init.c. Все xml файлы в папке миссии - конфигурационные файлы, отправляющие параметры серверу, чтобы он понимал как много лута генерировать, как много машин спавнить, а так же координаты каждого объекта на карте, плюс разные другие функции. Эти переменные можно легко изменить и настроить различные параметры сервера под себя events.xml (динамические события спавна объектов\предметов на карте) globals.xml (общие настройки центральной экономики) types.xml (спавн и сохранение лута по карте) cfgeventspawns.xml (точки спавна для динамических событий из events.xml) cfgplayersspawnpoints.xml (настройка точек спавна игроков на карте) cfgrandompresets.xml (конфигуратор прессетов для использования в других xml-конфиграциях сервера) cfgspawnabletypes.xml (конфигуратор спавна предметов в предметах\объектах) mapgroupclusterxxxxxx.xml (объекты на карте) init.c (настройка стартового лута, спавн машины для теста, прочий скриптинг)
  14. 7 баллов

    Версия 1.14

    481 скачивание

    Мод добавляет дополнительные объекты для постройки (узкие двери, широкие ворота, баррикады для окон). Работает так же как и обычное строительство. Совместимо с "codelock". Киты изготавливаются из коротких палок и веревок. Файл types.xml находится в архиве с модом. Дополнительно требуется BuildAnywhere или подобный мод который позволяет строить объекты внутри зданий, и дверных проемах. The mod adds additional objects to build (narrow doors, wide gates, barricades for windows). It works the same way as normal construction. Compatible with "codelock". Whales are made of short sticks and ropes. File types.xml located in the archive with the mod. Additionally, you need BuildAnywhere or a similar mod that allows you to build objects inside buildings and doorways.

    2 450,00 ₽

  15. 7 баллов
    BorizzK

    Чат админка

    Автор я На основе наработок комьюнити, на основе идей DaOne Мучайте P.S. Так же там есть доп функционал - для вызовов из класса миссии P.S.2. Инструкция (на англ) внутрях AdminMod_Class.c
  16. 7 баллов
    Skar713

    Установка мутантов FS (FIDOv STALKER) и других

    Пару раз в неделю вижу темы " FS (FIDOv STALKER) помогите поставить мутантов" И в большей части тем я помогал.. но хватит. Прочел? Помог? Поставь + И так. Обучать я буду только по одному типу тварей основанных на скелете волков. Какие файлы будем править. 1. events.xml 2. wolf_territories.xml 3. types.xml 4. cfgenvironment.xml Поехали 1 Изменяем евент волков на нужных нам тварей (пример слепыши) <event name="AnimalWolf"> <waves>0</waves> <nominal>50</nominal> <min>2</min> <max>4</max> <lifetime>180</lifetime> <restock>0</restock> <saferadius>200</saferadius> <distanceradius>0</distanceradius> <cleanupradius>0</cleanupradius> <flags deletable="0" init_random="0" remove_damaged="1"/> <position>fixed</position> <limit>child</limit> <active>1</active> <children> <child lootmax="0" lootmin="0" max="2" min="1" type="FS_SlepDog_red"/> <child lootmax="0" lootmin="0" max="2" min="1" type="FS_SlepDog_Bronza"/> <child lootmax="0" lootmin="0" max="2" min="1" type="FS_SlepDog_Zmb"/> <child lootmax="0" lootmin="0" max="2" min="1" type="FS_SlepDog_White"/> <child lootmax="0" lootmin="0" max="1" min="1" type="FS_PseDOG"/> <child lootmax="0" lootmin="0" max="1" min="1" type="FS_WolfZmb_black"/> </children> <min>2</min> - минимальное количество в стае <max>4</max> - максимальное количество в стае max="2" min="1" -количество особей в стае На этом настройка файла event.xml окончена. 2. wolf_territories.xml <territory color="4289111595"> <zone name="Rest" smin="0" smax="0" dmin="0" dmax="0" x="7642.5" z="6180" r="50"/> <zone name="Water" smin="0" smax="0" dmin="0" dmax="0" x="7712.22" z="6416.39" r="50"/> <zone name="HuntingGround" smin="0" smax="0" dmin="0" dmax="0" x="7866.11" z="6142.5" r="50"/> </territory> Просто впиши свои координаты и все. не нужно больше не чего делать, 3. Пропиши мутантов в тайпс (Тайпса под рукой нет позже скину что вставить в тайпс нужно) 4. cfgenvironment.xml <file path="env/domestic_territories.xml" /> Добавляем новый путь Вайпай карту и проверяй. Есть способ куда проще и цивильнее о нем я опишу позже.
  17. 7 баллов
    paranoyk

    Спавн лута в обломках УАЗ,V3S.

    Делается это немного нудно,но сравнительно просто (когда есть точки спавна). При спавне Land_Wreck_Uaz с помощью оффлайнера получим строку следующего вида. SpawnObject( "Land_Wreck_Uaz", "14348.268555 4.133186 13191.887695", "0.000000 0.000000 0.000000" ); Нам необходимо задать точку для спавна "сетки лута". Для этого мы в файл по mapgrouppos.xml прописываем координаты взятые из строчки для спавна объекта (выше). <group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695" rpy="0.000000 0.000000 0.000000" a="0.000000" /> group name="Land_Wreck_Uaz" pos="14348.268555 4.133186 13191.887695 - координаты запавненого УАЗика. rpy="0.000000 0.000000 0.000000" - числовые значения Yaw,Pitch,Roll соответственно. Берём их из всё той же строчки, но важно помнить что они там записаны в обратном порядке. a="0.000000"- угол порота сетки относительно угла поворота......короче! (Yaw-90) х (-1) Уже писал,что можно играться с 360 градусами,но пишу всегда полученное значение,проблем нет. И главное "сетка лута". Изначально её УАЗик не имеет, пишем её сами в файл mapGroupProto.xml . <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="...класс вещей для спавна" /> <usage name="...класс вещей для спавна" /> <container name="lootfloor" lootmax="5"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" />-левое сиденье <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" />-правое переднее седение полик <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" />-место за кпп середина <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" />-правая часть капота возле стекла <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" />левая часть капота впереди </container> <container name="lootshelves" lootmax="3"> -"контейнер" для описания спавна, максимальное колличество в спавне. <category name="...категория вещей для спавна" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" />-правое переднее крыло <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" />- центр переднего бампера <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" />-слева на бампере </container> <container name="lootweapons" lootmax="3">-"контейнер" для спавна длинногоствольного оружия, максимальное колличество в спавне, патронов и гранат. <category name="weapons" /> <category name="explosives" /> (возможен тэг- <tag name="floor" /> или <tag name="shelves" /> ) <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> -центр багажника <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" />-заднее левое крыло <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" />-заднее правое крыло </container> </group> Вставляем нужные категории,классы и тэги,это практически конструктор. К примеру у меня пока выглядит так - <group name="Land_Wreck_Uaz" lootmax="11"> <usage name="Military" /> <usage name="Industrial" /> <usage name="Office" /> <container name="lootfloor" lootmax="5"> <category name="food" /> <category name="clothes" /> <point pos="0.511211 -0.372110 0.0254000" range="0.244141" height="0.513353" /> <point pos="-0.320921 -0.387334 -0.400000" range="0.310141" height="0.610353" /> <point pos="-0.000921 -0.383194 0.301000" range="0.400186" height="0.590424" /> <point pos="-0.211211 0.228620 -0.698000" range="0.360231" height="0.520142" /> <point pos="0.681211 0.216190 -1.358000" range="0.262781" height="0.621102" /> </container> <container name="lootshelves" lootmax="3"> <category name="tools" /> <category name="vehiclesparts" /> <point pos="-0.406211 -0.098190 -1.131250" range="0.246819" height="0.620459" /> <point pos="0.306211 -0.436570 -1.651250" range="0.424141" height="0.810353" /> <point pos="0.906211 -0.359570 -1.664250" range="0.124141" height="0.100353" /> </container> <container name="lootweapons" lootmax="3"> <category name="weapons" /> <category name="explosives" /> <point pos="0.256211 -0.372050 1.264250" range="0.724141" height="1.313353" /> <point pos="0.868211 -0.138190 1.398000" range="0.293625" height="0.605487" /> <point pos="-0.506211 -0.108190 1.431250" range="0.250879" height="0.582143" /> </container> </group> Также можно даже исключить полностью строчку lootmax="...". Большой разницы я не заметил. Сразу скажу,баги стандартные -длинноствол в багажнике может пробить ствол,иногда возможна "левитация" предметов. Во общем как то так. (возможно позже вылож сетку и для обломков V3S и С130. Решение для "заброшенной колонны" на севере-тоже в процессе.Кому надо-пишите)
  18. 7 баллов
    //AUTHOR: BORIZZ.K //Version 20.12.2018.0011 void PlaceAllCarsToGround() { array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; Object object; string className; int objectcount = 0; vector mapcenter = "7500 0 7500"; int radius = 20000; vector foundcar_pos; mapcenter[1] = GetGame().SurfaceY( mapcenter[0], mapcenter[2] ); GetGame().GetObjectsAtPosition(mapcenter, radius, nearest_objects, proxy_cargos); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if ( GetGame().IsKindOf(className, "Car" ) ) //if ( className == "OffroadHatchback" || className == "V3SVehicle" || className == "V3SChassis" || className == "CivilianSedan") { EntityAI objectEnt = EntityAI.Cast(object); if (objectEnt) { foundcar_pos = objectEnt.GetPosition(); Print("::: PlaceAllCarsToGround() ::: Found car: " + className + ", objectEnt: " + objectEnt + ", Position: " + foundcar_pos.ToString() + ", SurfaceGetNormal: " + GetGame().SurfaceGetNormal(foundcar_pos[0], foundcar_pos[2]).ToString()); //Check surface under car /* string surface_type; int liquidType; GetGame().SurfaceUnderObject(object, surface_type, liquidType); Print("::: PlaceAllCarsToGround() ::: Found car: " + className + ", objectEnt: " + objectEnt + ", surface_type: " + surface_type + ", liquidType: " + liquidType); */ if ( foundcar_pos[1] < (GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2])) - 0.1 || foundcar_pos[1] > (GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2])) + 0.1 ) { foundcar_pos[1] = GetGame().SurfaceY(foundcar_pos[0], foundcar_pos[2]); objectEnt.SetPosition(foundcar_pos); objectEnt.SetOrientation(objectEnt .GetOrientation()); objectEnt.SetDirection(objectEnt .GetDirection()); Print("::: PlaceAllCarsToGround() ::: Position changed for car : " + className + ", objectEnt: " + objectEnt + ", Position: " + foundcar_pos.ToString()); } else { Print("::: PlaceAllCarsToGround() ::: No position change required for car : " + className + ", objectEnt: " + objectEnt); } } } } } Добавить код в init.c (ВНЕ КЛАССА) Вызывать в конце функции main() Просто вставив в конце PlaceAllCarsToGround(); P.S. Поправил код, + учел рекомендации Ультимы У меня на сервере с машинами все ок
  19. 7 баллов
    sks762

    Немножко дейз-Эротики (18+)

    Все знают, сколь губительны в Дейзе перегревы-оверхитинги. Скольких персов мы потеряли на этом!.. Для профилактики нам советуют носить на себе поменьше одежды, но это помогает не всегда - бывает, что и в трусах запреешь. А что, если вообще без трусов бегать? Так вот, в целях борьбы с перегревом, дадим персам возможность ходить голышом. Не распутства окаянного ради, а для прохлады и заради идеалов нудизма. Начнем с прекрасной половины человечества (им - все самое лучшее в жизни!). Труд будет нелегок. Да простят меня разрабы за правду, но их 3d-модели не способны показать все глубины женской красоты. Творим собственную версию женщины-мечты, которой не придется краснеть за свое раздетое тело. ЧутОк маланим - чтоб не заморачиваться с кучей мелких селекшнов, руки-ноги оставляем родные, а все силы бросаем на то, что между ними. Cутками напролет долбим мрамор заготовки зубилом редактора, а после не жалеем самых дорогостоящих красок Фотошопа при создании nude-скина. Впрочем, широкой публике не интересны технические детали... Смотрим результат. БОГИНЯ!!! Венера и Афродита в одном флаконе!! ..Вы повстречаете ее на закате дня у околицы Камышово - голодную и изнемогающую от жажды. С первого же взгляда отдадите все свои харчи и воду. Наевшись фасоли, она из благодарности уступит вашим просьбам, разденется и пять минут позволит глядеть на себя в отблесках костра. Вы заключите выживальщицкий союз, но раздеваться при дневном свете она откажется наотрез из девичьей стеснительности. И у вас созреет коварный план... Напоивши просроченным квасом и забродившей Пипсиколою, вы разденете ее, бессознательную, и до заката будете любоваться ее упоительной красотою. Придя в себя и осознав случившееся, она поймет бессмысленность дальнейшего стеснятельства и с этой поры будет изредка (за особые ваши заслуги) демонстрировать себя и под лучами солнца. А дальше появится он - здоровенный губатый негр из Арканзаса и потребует богиню себе. Право на самку будет решаться в смертельном поединке на мотыгах. Не ссать! Даешь победу! Окровавленный и рычащий, вы приблизитесь к богине и бросите к ее стопам добычу - снятый с негра рюкзак. Ахнув, она признает в вас своего Повелителя и с этого момента станет раздеваться по первому же вашему требованию. Так вы обретете свою идиллию. ..Слышу робкие просьбы дейзисток: "А нам бы мущин с пиписками..." Милые дамы, ваши желания - закон для нас. Получайте своих кавалеров! С пиписками! Ах, вам негра бы хотелось... Так что же вы так сразу не сказали?? Ладно, будет вам и негр через недельку...
  20. 7 баллов
    voralex

    Решаем вопрос с консервами

    Как известно в текущей версии сервера имеется беда. Открываешь консерву и она улетает в космос. Поэтому : 1.Берем мой файл ниже. 2.Заменяем файл Корень_севера\mpmissions\dayz_Auto.ChernarusPlus\scripts\events файл event_openCan.sqf на мой. Буду рад плюсикам,двигает на создание гайдиков :) event_openCan.sqf
  21. 6 баллов
    vitacite

    Создаем карту для Dayz SA с нуля с помощью QGIS

    В силу наличия большого количества неадекватных пользователей. Решил, что буду помогать только адекватным. Авторский материал из открытого доступа изъят.
  22. 6 баллов

    Версия 1.0.0

    127 скачиваний

    AR_Notifications модифицирует внешний вид всех системных уведомлений. Шарю свой мод бесплатно. С вас реакция +репутации ⬆️ AR_Notifications modifies the appearance of all system notifications. I share my mod for free. With ur reaction +reputation⬆️

    Бесплатно

  23. 6 баллов
    123new

    CacheSpawner

    Версия 1.0.4 от 30.05.2022 with fix 4

    1 340 скачиваний

    Игра, для который подходит данный товар: DayZ Standalone Тип: скрипт (серверный) Авторство: я (123new) Авторская страница модификации в мастерской Steam: https://steamcommunity.com/sharedfiles/filedetails/?id=2768705995 Товар совместим, тестировался и проверялся на чистых версиях игры: 1.07-1.24 Описание: Скрипт, добавляющий спавн схронов (любых указанных объектов с лутом) в указанных зонах на карте. В скрипте можно указывать свои объекты для схрона по их ID объекта в игре, а также задавать количество схронов на карте и их точки спавна. Скрипт не требуется к наличию игрокам и является серверным. Отличие от ObjectsSpawner: в данном скрипте можно указать лут на объекте, т.е. спавн происходит простых объектов с лутом. В ObjectsSpawner объекты спавнятся только без лута! При проблемах с доступом к файлу: Свяжитесь с Dr.Tauren в личных сообщениях. Почему работа бесплатно и больше не поддерживается: читаем тут Дата последнего обновления работы: версия 1.0.4 от 04.01.2021 with fix 3 19.04.2022 + fix от 23.02.2024 Возможности: Спавн схронов (объектов с лутом) в указанных точках на карте Можно задавать любые ID объектов схронов на карте, известные вам в игре Можно задавать основные характеристики для каждого лута, который будет появляться в схроне Можно определять состав лута для каждого схрона Можно задавать несколько разных точек на карте для спавна схрнов Автоматический переспавн уже отспавнившихся схронов на карте через указанное время с очисткой старого схрона Можно задать минимальное и максимальное количество схронов, среди которых сервер при запуске выберет сам случайным образом количество схронов из всего списка. При указании или выпадении количества схронов меньшего количества, чем количество координат суммарно в списке, будут выбраны случайным образом схроны к спавну на карте Спавнер является чисто-серверным скриптом Возможность переписать код скрипта под себя, если вам это нужно Настройки мода вынесены в json-конфиг мода, позволяющий быстро настроить нужное количество схронов, точек их спавна и лута. При ошибках в конфиге мода он будет пересоздан автоматически на стандартный, при этом ошибки будут отмечены в script-логе сервера. Рекоммендуется держать копию конфигурации и наблюдать за логами сервера после его старта! Важно: Скрипт проверен на чистой версии игр на момент публикации и является работоспособным по сей день и час. Для работы скрипта требуются любые объекты с для хранения лута, не закрытые поумолчанию для добавления лута в них игроком! Использовать для этого можно любые игровые вещи! Если лут не помещается в схрон - он не будет в нем создан! Лут добавляется в объект по списку, как он указан в JSON-файле скрипта в виде 'поумолчанию в свободную ячейку инвентаря'. Раскладывать лут по свободным ячейкам, играя в тетрис и переворачивая лут скрипт не умеет!!! Если вы укажете настройки скрипта не верно, сервер сам пересоздат конфигурацию спавна мода 'поумолчанию' Основной функционал отлажен и протестирован на чистом сервере. Скрипт расставляет объекты на карте по строго указанным координатам их размещения из конфигурации сервера. Он не проверяет эти координаты и не корректирует их Скрипт целиком и полностью зависит от корректности работы официальных игровых функций расстановки объектов и добавления вещей в объект (функции, имеющиеся в игре и добавленные в нее авторами игры). Автор скрипта (т.е. я) снимает с себя ответственность за некорректность работы данных функций (да, были прецеденты) The game for which this product is suitable:DayZ Standalone Type: script (server-side) Authorship: I am (123new) The author's modification page in the Steam workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=2768705995 The product is compatible, tested and tested on clean versions of the game: 1.07, 1.08, 1.09,1.10,1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20 Description: A script that adds spawn of caches (any specified objects with loot) in the specified zones on the map. In the script, you can specify your objects for the cache by their object ID in the game, as well as set the number of caches on the map and their spawn points. The script is not required for the presence of players and is server-side. Difference from Object spawner:in this script, you can specify the loot on the object, i.e. the spawn occurs of simple objects with loot. In Object spawner, objects are spawned only without loot! If you have problems accessing the file: Contact Dr.Tauren in private messages. Why the work is free and no longer supported: read here The date of the last update of the work: version 1.0.4 from 04.01.2021 with fix 3 19.04.2022 Opportunities: Spawn of caches (objects with loot) at the specified points on the map You can set any ID of cache objects on the map that you know in the game You can set the main characteristics for each loot that will appear in the cache You can determine the composition of loot for each cache You can set several different points on the map for spawn caches Automatic re-spawn of already spawned caches on the map after a specified time with the cleaning of the old cache You can set the minimum and maximum number of caches, among which the server will randomly select the number of caches from the entire list at startup. If you specify or drop out the number of caches less than the total number of coordinates in the list, the caches to spawn on the map will be randomly selectedThe sp awner is a purely server-side script The ability to rewrite the script code for yourself, if you need it The mod settings are made in the json config of the mod, which allows you to quickly configure the desired number of caches, their spawn points and loot. If there are errors in the mod's config, it will be recreated automatically to the standard one, and the errors will be noted in the server's script log. It is recommended to keep a copy of the configuration and monitor the server logs after it starts! Important: The script was tested on a clean version of the games at the time of publication and is operational to this day and hour. For the script to work, any objects with for storing loot that are not closed by silence for adding loot to them by the player are required! You can use any game items for this! If the loot does not fit into the cache, it will not be created in it! Loot is added to the object according to the list, as it is specified in the JSON file of the script in the form of 'silence to a free inventory cell'. The script does not know how to lay out loot in free cells, playing Tetris and turning loot over!!! If you specify the script settings incorrectly, the server itself will recreate the configuration of the spawn mod 'by silence' The main functionality is debugged and tested on a clean server. The script places objects on the map according to the strictly specified coordinates of their placement from the server configuration. It does not check these coordinates and does not correct them The script depends entirely on the correctness of the official game functions of placing objects and adding things to the object (functions available in the game and added to it by the authors of the game). The author of the script (i.e., I) disclaims responsibility for the incorrect operation of these functions (yes, there were precedents) Настройка в скриншотах / Settings in screenshots: Похожие товары, которые могут вас заинтересовать / Similar products that may interest you:

    Бесплатно

  24. 6 баллов
    123new

    ToxicZoneSpawner

    Просмотреть файл ToxicZoneSpawner Игра, для который подходит данный товар: DayZ Standalone Тип: мод (серверный) Авторство: я (123new) Страница работы в Мастерской Steam: https://steamcommunity.com/sharedfiles/filedetails/?id=2768754903 Товар совместим, тестировался и проверялся на чистых версиях игры: 1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20 Описание: Скрипт, добавляющий на карте токсичные и зараженные зоны, которые можно настраивать по своему разумению. Иммитаця зон заражения выполняется посредством дымовых гранат, которые переспавниваются время от времени. (да, это может нагружать сервер игры дополнительно, но не сильно(проверял заказчик)) Скрипт не требуется к наличию игрокам и является серверным. Дополнительно: Доработка под новшества токсчных зон с новых версий игры 1.14 и 1.15 не проводилась, но сам скрипт работает. Такая работа есть в планах на изучение ? При проблемах с доступом к файлу: Свяжитесь с Dr.Tauren в личных сообщениях. Почему работа бесплатно и больше не поддерживается: читаем тут Комплектация: Скрипт (мод) Информация по слотам, которая может пригодиться к настройке товара (для раздела настройки) Пример заполненной конфигурации товара с тестового сервера с несколькими зонами (не чистая конфигурация товара) Возможности: Указание зон на карте с чисто индивидуальными для них характеристиками Имеется возможность отправлять игроку как текстовые уведомления в чат, так и всплывающие уведомления при входе и приближении к зоне (отключаемая и настраиваемая опции) Имеется возможность задать 2 радиусе, в одном из которых будет уведомление о близости игрока к зоне, а в другом именно само воздействие зоны (отключаемая опция) Имеется возможность включить спавн дымовых гранат и указать их тип (опциональная опция)(может дополнительно нагружать сервер)(для каждой дымовой гранаты надо будет ручками указать ее точку появления) Возможность настроить нанесение урона игроку, высчитываемого в зависимости от надетых на него вещей на слотах (отключаемая и настраиваемая опция) Возможность настроить нанесение урона вещам, надетым на игрок по коэфициенту, в зависимости от надетых на него вещей на слотах (отключаемая опция) Возможность настроить какие из вещей, надетые на игрока в слоте инвентаря, с каким коэфициентом будет защищать игрока в зависимости от ее качества. Можно указать несколько вещей и коэфициентных настроек. (НЕ отключаемая опция) Возможность настроить выдачу симптомов игроку (например чихание) при входе в зону без защиты/воздействии зоны на игрока (отключаемая опция) (не все симптомы проверялись) Мод является чисто-серверным (не требуется игроку) Возможность переписать код скрипта под себя, если вам это нужно (не зашифровано) Настройки мода вынесены в json-конфиг мода, позволяющий быстро настроить нужное количество схронов, точек их спавна и лута. При ошибках в конфиге мода он будет пересоздан автоматически на стандартный, при этом ошибки будут отмечены в script-логе сервера. Рекоммендуется держать копию конфигурации и наблюдать за логами сервера после его старта! Важно: Скрипт проверен на чистой версии игр на момент публикации и является работоспособным по сей день и час. Скрипт настраивается исключительно по настройкам из JSON-файла скрипта. Если у вас нет конфигурационного файла, мод сам создат чистую конфигурацию спавна мода 'поумолчанию' Если вы укажете настройки скрипта не верно, сервер сам пересоздат чистую конфигурацию спавна мода 'поумолчанию' Причины неверной настройки ищите в script-log файлах сервера. Возможна дополнительная нагрузка и влияние на fps сервера/игры при включении скрипта, а также активации определенных опций в настройках скрипта. Основной функционал отлажен и протестирован на чистом сервере. Скрипт целиком и полностью зависит от корректности работы официальных игровых функций игры (функции, имеющиеся в игре и добавленные в нее авторами игры). Автор скрипта (т.е. я) снимает с себя ответственность за некорректность работы данных функций. Настройка: приложена внутри Чистый JSON-конфиг файл работы с настройками (для тех кто хочет посмотреть сам): Config_ToxicZoneSpawner.rar The game for which this product is suitable: DayZ Standalone Type: mod (server-side) Authorship: I am (123new) The page of work in the Steam Workshop: https://steamcommunity.com/sharedfiles/filedetails/?id=2768754903 The product is compatible, tested and tested on clean versions of the game: 1.11,1.12,1.13,1.14,1.15,1.16,1.17,1.18,1.19,1.20 Description: A script that adds toxic and infected areas to the map, which you can customize as you see fit. The infection zones are imitated by smoke grenades, which are re-spawned from time to time. (yes, this can load the game server additionally, but not much(checked by the customer)) The script is not required for the presence of players and is server-side. If there are problems accessing the file: Contact Dr.Tauren in private messages. Why is the work free and no longer supported: read this Equipment Script (mod) Information on slots that can be useful for configuring the product (for the settings section) Example of a completed product configuration from a test server with multiple zones (not a clean product configuration) More description in Russian version site or arhive file! Автор 123new Добавлен 03.06.2021 Категория Скрипты, моды, карты и т.д.  
  25. 6 баллов
    123new

    Shadow of Chernobyl

    Увы, но одно дело когда это делают по рукам и на своем сервере чисто, другое дело когда вот так. В свободное распространение попало, а значит отныне я прекращаю работу в данной игре с чем-либо. Если мой труд не уважают - мне делать здесь нечего.
  26. 6 баллов
    Yep

    Yuki борец за справедливость

    Итак, до этого момента как то не парился на счет этого персонажа, да пацан чето там за права богемии выступает, кидает страйк Фидову за то что он взял грозу или пб что то такое(якобы украл модель у богемии). Ок базару нет в какой то степени это правильно то что мол найди модель на сайте с моделями платную\бесплатную и портирую но не бери чужого и т.д. Я в то время как раз делал этот ПБ с одного из таких сайтов похожим на оригинальный дейзовский и считал что так будет правильнее. И вот решил данный молодой человек, правильный и порядочный, все таки угнать мод а почему нет, правильно? Вот немного пруфов того что мод скопирован, но я думаю никто не сомневается в том что это так. https://i.imgur.com/BDtKhJO.png Названия моделей совпало, ну бывает просто совпадение) https://i.imgur.com/nGosEAV.png Ой и название текстур совпало, ну бывает что ж теперь не криминал. https://i.imgur.com/1cd3GEP.png О как и текстура которую я сам в фотошопе правил то же совпала, да как то. Ах да исходника ж нет что б лучше сделать ну бывает ничего. Сделал полезное дело уменьшил разрешение картинки, что б нагрузки было меньше, что б качали люди меньше, ну и лоды с магазинов убрал дабы пацанам жизнь медом не казалась https://i.imgur.com/n6InyPr.png Писал мне где то в комментах что барабан на FAL не правильный и вообще он бы сделал лучше! https://i.imgur.com/1EWBKHr.png Но если украсть то вроде уже ничего. Позже заметил данного персонажа на стриме Фидова где он писал что то вроде "Уууу вор, воруешь модели из других игр". https://i.imgur.com/5XTAfer.png https://i.imgur.com/rlJTnyz.png Упс а как так получилось само видимо попало, случайно закатилось или нет? Из чего делаем вывод Yuki либо мальчик который еще не вырос и не определился с ориентацией, либо не смейтесь над человеком ну болен и что кому то везет в жизни здоровым родился кто то не очень, ну шиза или ударился в детстве. Можно же все простить человек, все ж мы люди не роботы, может с памятью у человека плохо может он забыл что вчера говорил что воровать плохо. Но страйк закинуть можно малоли бегемоты или dmca одобрят)
  27. 6 баллов
    Накатал по быстрому для себя и своих ребят от нефиг делать, тк в командировке и дейзить возможности нет, только удаленно ковырять сервер Внутри настройки через переменные путь к базе сервера и инстанс ид берет из конфига сервера (нужно настроить имя файла и путь в файле) Мониторит сервер по названию окна, сохранив pid При вылете в 90% случаев корректно убивает процесс При перезапуске так же При каждом старте с 0 и при перезапусках делает бэкапы баз/настроек/логов в папку !Backup в корне сервера Можно настроть кол-во хранимых бэкпов для базы сервера и логов Вобщем заглянете внутрь и все поймете Вдруг кому пригодится Закрепляю тут краний боевой вариант Что к чему - прочтите всю тему и все станет ясно Сцыл на стрницу темы с крайней версией заточенной на использование с версией 1.04 и параметром -servermod Крайняя версия DayZStart_v42.rar
  28. 5 баллов
    SharkAttack

    LoadingTeleports

    Версия 2.0.1

    366 скачиваний

    Загрузочные телепорты - объекты, эмитирующие переход в другую локацию, подземелье, лабораторию и тд [ ▲ ВНИМАНИЕ: Все приобретенные, актуальные и поддерживаемые модификации будут доступны и считаться лицензированными ТОЛЬКО на моем авторском ресурсе Для получения актуальной информации вступайте в канал Discord ⋯≻ SharkAttack ] Особенности: возможность в зависимости от конфигурации маппить или искать на карте заранее замаппленные объекты по координатам; возможность добавлять свои объекты для телепортации по шаблону; возможность добавлять каждому объекту несколько пунктов назначения (точек для телепортации); возможность задавать наименование и описание действия для каждого пункта назначения; возможность задавать требуемую оплату за телепотацию для каждого пункта назначения; возможность задавать публичные (точки входа и выхода) и приватные звуки с желаемой в секундах задержкой проигрываниядля каждого пункта назначения; возможность задавать "время перехода", в которое игрок не будет ничего видеть и не сможет двигаться для каждого пункта назначения. Технические особенности: мод разделен на клиент - серверную и серверную части; мод не требует доп. модов и зависимостей; объекты для телепортации добавляются вручную через модификацию основного мода. Шаблон предоставляется вместе с основным модом; мод создает папку LoadingTeleports в папке профиля сервера с шаблономи конфигурации в формате json; мод проверен и оттестирован на версии 1.23. Инструкции: Loading teleports are objects, teleporting player character to another location, e.g. dungeon, laboratory, etc. [ ▲ ATTENTION: Every obtained, actual and supported modifications will be available and considered licensed ONLY at mine author`s resource To get more actual information For up-to-date information, join the Discord channel ⋯≻ SharkAttack ] Features: the ability, depending on the configuration, to map or search on the map for pre-mapped objects by coordinates; the ability to add your own objects for teleportation according to the template; the ability to add several destinations to each object (points for teleportation); the ability to set the name and description of the action for each destination; the ability to set the required payment for teleportation for each destination; the ability to set public (entry and exit points) and private sounds with the desired playback delay in seconds for each destination; the ability to set a "transition time" in which the player will not see anything and will not be able to move for each destination. Technical features: the mod is divided into client - server and server parts; mod does not require additional mods and dependencies; objects for teleportation are added manually through the modification of the main mod. The template is provided along with the main mod; the mod creates a LoadingTeleports folder in the server profile folder with a configuration template in json format; Mod is debuged and tested on version 1.23. Instructions:

    2 500,00 ₽

  29. 5 баллов
    1. Устанавливаем DayZ Tools выбираем DS Utils Далее нам нужно создать privatebikey для того, чтобы подписывать свои pbo файлы. СЛЕДУЕМ ИНСТРУКЦИИ ПОСЛЕ создания ключа нам нужно выбрать папку, в которой у нас лежат pbo файлы для подготовки к подписи. см скрин ниже: Далее мы видим, что нужные нам файлы появились в списке и жмём: Process Files, Да. Проверяем, подписались-ли наши файлы: После этого возвращаемся в DayZ Tools ----> Publisher и следуем инструкции в пути выбираете только папку мода (папку Addons указывать не нужно), если всё сделали верно увидите: All Signed (пункт 5) Жмём UPDATE всё просто позже приведу в порядок, делал в быстром темпе.
  30. 5 баллов
    DrTauren

    Настройка стартового лута игроков

    В этом гайде мы разберёмся как настроить стартовый лут на сервере DayZ Standalone. Наверняка многие знают как это сделать, но, думаю, не все Инструкция: 1) Открываем файл init.c, который находится в папке mpmissions вашего сервера и ищем такие строки: EntityAI itemEnt; ItemBase itemBs; Сразу после них находится блок примерно такого вида: itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(4); SetRandomHealth(itemEnt); itemEnt = player.GetInventory().CreateInInventory("RoadFlare"); itemBs = ItemBase.Cast(itemEnt); Именно здесь и задаётся стартовый лут персонажа. Видим что в стартовом луте прописан фаер и четыре бинта. itemEnt = player.GetInventory().CreateInInventory("Rag"); - Rag это класснейм предмета (бинта) itemBs.SetQuantity(4); - количество бинтов и т.д. в пачке, коробке и т.д. Эти два блока нам и нужно удалить и заменить на свои. 2) Открываем файл types.xml. В этом файле прописаны класснеймы предметов, имеющихся в игре. Находим нужные и оформляем файл init.c под себя. Добавим, например, рюкзак, бобы, каску, куртку, штаны и колу: // рюкзак itemEnt = player.GetInventory().CreateInInventory("AliceBag_Black"); itemBs = ItemBase.Cast(itemEnt); // бобы itemEnt = player.GetInventory().CreateInInventory("BakedBeansCan"); itemBs = ItemBase.Cast(itemEnt); // каска itemEnt = player.GetInventory().CreateInInventory("BallisticHelmet_Black"); itemBs = ItemBase.Cast(itemEnt); // куртка itemEnt = player.GetInventory().CreateInInventory("BomberJacket_Grey"); itemBs = ItemBase.Cast(itemEnt); // штаны itemEnt = player.GetInventory().CreateInInventory("CargoPants_Black"); itemBs = ItemBase.Cast(itemEnt); // кола itemEnt = player.GetInventory().CreateInInventory("SodaCan_Cola"); itemBs = ItemBase.Cast(itemEnt); Таким образом, весь файл init.c должен выглядеть примерно так: Подробности о том как заспавнить оружие с магазинами, машины, предметы и тому подобное написаны в разделе init.c тут:
  31. 5 баллов
    Yuki

    CFTools

    Описание: Представляет из себя крайне удобную RCON панель для администрирования своих серверов. Так же для владельцев DS есть OmegaManager, от этих же ребят, но уже устанавливается на ваш сервер для автообновления модов и позволяет контролировать ресурсы. Функционал: 1. Удобная система Рестартов, которая сразу выдаёт уведомления в чат об игроком рестарте. Ничего не надо прописывать в ручную, задал время и всё, у тебя в это время со всеми предупреждениями будет рестарт сервера. Ну и он кикает всех игроков за минуту до рестарта, что позволяет избавится от дюперов, которые абузят рестарт. 2. Удобная система защиты. Начиная с игроков, у которых есть VAC Ban на аккаунте и заканчивая тем, что если они вдруг используют VPN, то вы это увидите. Ну и можно блокировать по IP и вообще вплоть до целых стран. 3. Whitelist 4. Система сообщений, которая может уведомлять вообще о множестве различных вещей. Начиная от сообщения при входе игрока и заканчивая тем, что ему иногда будет писаться его пинг. 5. Система уведомлений для админов проекта. Если у вас сервер вдруг упал, то вы можете получить уведомление на почту. Так же вас может уведомлять о рестартах и всём таком. 6. Крайне удобная логистика игроков, вам видно как Steam профиль игрока, так и его возможные аккаунты. Ещё там сохраняется история ников этого игрока, с которыми он был на вашем сервере, это крайне сильно помогает. 7. Можно назначать админов/модераторов и прочее, для банов и т.д через данный софт. Стоит отметить, что все функции, что были в DaRT тут уже есть, причём все. Но это всё в вебе. Установка: Зайди на сайт https://cftools.de/ и залогинится через Steam. Там взять Omega token и проследовать инструкциям Потом просто заходим обратно на сам сайт и нажимаем на вкладку ControlPanel. Подключаем по RCON и всё, вы молодцы. Серверный мод: Далее вам необходимо скачать в Steam мод, который просто подключайте как серверный. Он уже вам даст некоторые более интересные возможности. Для подключения надо в вашем Profile создать следующий файл cftools.cfg и вставить в него: { "service_api_key": "", "service_id": "" } Это даст вам доступ к карте сервера, логам строительства, убийств и т.д. Общее: Я сам до конца ещё не разобрался с данным инструментом, но многие крупные проекты, особенно зарубежные, активно этим всем пользуются. Создавая команды для игроков через !help и т.д. Так же у этого всего есть серверные моды, которые вы можете скачать в Steam. Так что думаю, что многим данный инструмент будет очень удобен, особенно, когда надо сделать на сервере что-то с телефона и быстро. При этом как-то удобно уведомить от этом игроков.
  32. 5 баллов
    mckirill2

    фурнитура/furniture

    Версия 1.0.0

    860 скачиваний

    3 оружейных ящика Объекты пакуются в пластиковый ящик, коробку. КРАФТ: Собирается отверткой Название моделей: DZC_ModularBox DZC_weaponstandBox DZC_WoodenBox 3 weapon crates Objects are packed in a plastic box, box. CRAFT: Assembled with a screwdriver Model name: DZC_GunRack DZC_WeaponBox DZC_WeaponRack DZC_WoodenRack

    Бесплатно

  33. 5 баллов
    123new

    [Breaking Point] Установка Сервера на Arma 3

    И так, товарищи, на днях вышел этот замечательный мод с серверной частью официально. А значит, приступим к настройке первого сервера =) (Кому интересно что это за мод, вот их. оф. сайт) Приступим: Для начала скачаем все нужное: 1. Arma 3 Server, конечно же, в первую очередь. (у кого стоит - пропускаем подпункт) 2. Качаем серверную составляющую для сервера мода, а именно конфиг сервера, mysql база данных самого сервера, батнички старта. Официальная страницы на GitHub: https://github.com/deathlyrage/breakingpointmod Зеркало от меня на момент загрузки: https://yadi.sk/d/XU32efgm3NHZQx И на всякий, все необходимое для серверной составляющей мода без лишних файлов в корректном виде от меня: https://yadi.sk/d/mGVh3Li93NHZW3 3. Качаем мод Breaking Point со steam workshop (нужна установленная арма 3 на аккаунте). Варианты установки: 1) Скачать можете сами через стим, подписавшись на него на страничке мода: http://steamcommunity.com/sharedfiles/filedetails/?id=426629791 Зеркало на обменнике: https://mega.nz/#!ZCwVka7b!gAM5QWESYKpsavOGkk_vCH5TchG_redxUmS1M-agYb8 2) Положите батник "download_bp_steamcmd.bat" из "ServerConfiguration/Tools/" (см скачанное в п. 2. инструкции) в папку с вашим "steamcmd" (см п. 1.), настройте его аналогично гайду по установке арма 3 сервер с этой темы (см п. 1.), и он сам вам закачает мод, но только при наличии установленной на вашем аккаунте Армы 3. 4. Качаем серверную часть мода Breaking Point со steam workshop (нужна установленная арма 3 на аккаунте). Варианты установки: 1) Скачать можете сами через стим, подписавшись на него на страничке мода: http://steamcommunity.com/sharedfiles/filedetails/?id=1133182382 Зеркало на обменнике: https://yadi.sk/d/SLvJe7f63NHa28 2) Положите батник "download_bp_steamcmd.bat" из "ServerConfiguration/Tools/" (см скачанное в п. 2. инструкции) в папку с вашим "steamcmd" (см п. 1.), настройте его аналогично гайду по установке арма 3 сервер с этой темы (см п. 1.), и он сам вам закачает мод, но только при наличии установленной на вашем аккаунте Армы 3. 5. Качаем и ставим mysql-сервер. Если стоит, пропускаем пункт. Я ставил вот этот, если кому интересно. 6. Помещаем скачанные моды армы в п. 3 и 4 в папку с Arma 3 Server. 7. Открываем скачанное в п. 2. Если качали мое - разархивируем все в папку с Arma 3 Server. Если качали официальное с GitHub или по зеркалу с меня, то содержимое папки ServerConfiguration из архива помещаем в папку с Arma 3 Server. В конечном счете получим что-то типа такого(папок BEC, Whitelister и файла ALI213 у вас, разумеется, не будет): 8. Запускаем ваш mysql клиент (можно navicat использовать или любой другой способ), соединяемся с вашим mysql сервером, создаем новую базу данных. Имя выбирайте любое, тип utf-8 unicode. 9. В созданную базу данных импортируем из папки с Arma 3 Server из папки SQL файлик чистой базы данных. Если все нормально, база данных импортируется без ошибок. 10. Открываем папку с Arma 3 Server, папку ServerConfig и открываем блокнотом BreakingPointExt.ini Настраиваем права доступа сервер для вашей mysql базы данных в строчках: [DATABASE] ip = 127.0.0.1 port = 3306 database = breakingpointmod username = root password = И если у вас включен Battleye, то вот эти строки: [RCON] port = 2305 password = changeme whitelist = false Если стоит FireDaemoon, то еще вот эти: [FIREDAEMON] service = BPA3_1 path = C:/Program Files (x86)/FireDaemon/Firedaemon.exe 11. там же открываем блокнотом файл config.cfg и настраиваем его. Обязательно: template = "BP1_BreakingPoint.Altis"; здесь указываем миссию сервера. Выше в файле есть пояснения в комментариях среди возможных значений. class Params { instance = 1; debug = false; }; Где instance = 1 указываем id карты сервера, пояснения все там же выше в файле. 12. Копируем из папки Tools файл server_start.bat в папку Arma 3 Server. Настраиваем его, если хотим. Открывать блокнотом или Notepad++ 13. Из папки @BreakingPoint копируем debug_console_x64.dll и debug_console.dll и из папки @BreakingPointServer копируем BreakingPointExt_x64.dll в папку Arma 3 Server. 14. Запускаем server_start.bat. Сервер готов и запущен! ВАЖНО: сервер рассчитан на использование x64 версии Arma 3 server. Как зайти: 1. В папку с уже готовой Arma 3 помещаем мод Breaking Point со steam workshop, скачанный в п. 3 инструкции выше. 2. В папку с уже готовой Arma 3 помещаем папку keys из папки с сервером вашим 3. Запускаем игру с параметром запуска -mod="@BreakingPoint" и находим свой сервер в игре. Надеюсь, не сильно сложно описал. Дерзаем, товарищи. Сразу говорю, об особенностях настройки сервера не знаю ничего!
  34. 5 баллов
    vitacite

    Ретекстур чего угодно. (camoSelections)

    закрыто.
  35. 5 баллов
    NightWolf

    Боты: управление вертолетом

    Тестирование управления вертолетом через скрипты ну то есть ботами.
  36. 5 баллов
    AKuznecov

    Как прописать звуки оружию

    Звуки для оружия прописываются следующим образом и имеют следующий конфиг: class CfgPatches { class WeaponPack_R700_Sound { units[] = {}; weapons[] = {}; requiredVersion = 0.1; requiredAddons[] = {"DZ_Data", "DZ_Sounds_Effects"}; }; }; class CfgSoundShaders { class base_closeShot_SoundShader; // External class reference class base_distShot_SoundShader; // External class reference class base_midShot_SoundShader; // External class reference class Rem700_closeShot_Soundshader : base_closeShot_SoundShader { samples[] = {{"WeaponPack\R700\sound\r700_close_shoot", 1}};// Для близкой дистанции range = 5; // Расстояние с которого будет слышно выстрел ближайшему игроку }; class Rem700_midShot_Soundshader : base_midShot_SoundShader{ samples[] = {{"WeaponPack\R700\sound\r700_close_shoot", 1}}; // Для средней дистанции volume = 0.562341; // Громкость семпла }; class Rem700_distShot_Soundshader : base_distShot_SoundShader { samples[] = {{"WeaponPack\R700\sound\r700_dist_shoot", 1}}; // Для дальней дистанции volume = 0.56; // Громкость семпла }; }; class CfgSoundSets { class Rifle_Shot_Base_SoundSet; // External class reference class Rem700_Shot_SoundSet : Rifle_Shot_Base_SoundSet { soundShaders[] = {"Rem700_closeShot_Soundshader", "Rem700_midShot_Soundshader", "Rem700_distShot_Soundshader"}; }; // Здесь надо перечислять саундшйдеры оружия }; В самом конфиге оружия где прописан класс режимов стрельбы в строчке soundSetShot[] = надо добавить наш саудсет soundSetShot[] = {"Rem700_Shot_SoundSet", "Win_Tail_SoundSet", "Win_InteriorTail_SoundSet"}; // Первый саунд будет от звуков нашего оружия, следующие саунды будут от оригинального винчестера модели 70. Tail - это различные области(Поля, в лесу и тд. InteriorTail - в интерьерах, то есть в помещении). Их можно также поменять если есть соответствующий подходящий сэмпл
  37. 5 баллов
    PLAYERDEAD

    DAYZSC CONFIG TOOL [DayZ v1.0]

    Просто инструмент для редактирования файла конфигурации сервера. 1. Скопируйте файлы в вашу папку сервера DayZ. 2. Открыть DayZSC.ini и указать свой путь к вашей миссии «DayZServer\mpmissions\dayzOffline.chernarusplus» !!! PS: Не сохраняйте свои настройки во время работы Сервера! PSs: Используйте резервные копии ваших файлов, инструмент ещё свежий и не известно как себя поведет. Версия: v0.16E DayZSC_Config_Tool-0.16e.7z Зеркало | Источник
  38. 5 баллов
    x0e2003

    Время жизни трупа игрока на сервере DayZ 1.03

    Спасибо за совет, но я нашел решение, может кому пригодится! В файле globals.xml пишем параметры и вводим значение value=1 "1-сек", только не ноль, если 0, то параметр отключается: <var name="CleanupLifetimeDeadPlayer" type="0" value="1"/> <var name="CleanupLifetimeDeadInfected" type="0" value="1"/> <var name="CleanupLifetimeDeadAnimal" type="0" value="1"/>
  39. 5 баллов
    VIRrusR

    Обновление модов на стороне сервера

    Petrovich , всё просто, у нас тут два киндервуда - они чего хошь враз занаучат и потом найдут стопицот ошибок и "почему так делать низззя!" ...Но ребяты толковые, ты, главное под ногами у них не путайся - задал вопрос и молчи в тряпочку! Они щаз ещё попинают, попинают друг дружку, потом сойдутся на том, что ничо не получится. ...А потом,BorizzK выложит куски скрипта, который всё порешает и всем будет счастье. Но никто всё равно ничо не поймёт, куда чего пхать и как прописывать, поэтому ещё немножко погодь - пока123new всё не распишет, упакует и ленточкой перевяжет. От так как-то мы тут и живём... P.S. Фтопку "моды", Long Live, Vanilla!
  40. 4 балла
    Starlley

    Three big sets / Три больших сета

    Версия 1.0.0

    263 скачивания

    Всем доброго времени суток. Представляю вашему вниманию три больших военных сета. 1. Селёный сет (по слотам: куртка 81 слот, штаны 64 слота). 2. Чёрный сет (по слотам: куртка 81 слот, штаны 64 слота). 3. Магма сет (по слотам: куртка 81 слот, штаны 64 слота). Установка: перепаковать в свой клиент мод и подписать своими ключами. Good day to everyone. I present to your attention three large military sets. 1. Green set (by slots: jacket 81 slots, pants 64 slots). 2. Black Set (by slots: jacket 81 slots, pants 64 slots). 3. Magma set (by slots: jacket 81 slots, pants 64 slots). Installation: repackage the mod into your client and sign with your keys.

    Бесплатно

  41. 4 балла
    NeonMurdered

    NM_KAMAZ

    Просмотреть файл NM_KAMAZ Полностью рабочие модели КАМАЗа прямиком из Arma 2: Рабочая подвеска Рабочее освещение Дополнительные слоты под пассажирские места Дополнительные слоты под запасное колесо Разные вариации кузова со своими особенностями Разные расцветки на каждый тип кузова Соответствующие звуки двигателя и темп езды Этот аддон находится под лицензией DayZ Public License (DPL) и как таковой не должен быть распакован и распространен без соблюдения строгих руководящих принципов, изложенных в этом документе, доступном здесь: Тык Fully working KAMAZ models straight from Arma 2: Working suspension Working lighting Additional slots for passenger seats Additional slots for the spare wheel Different variations of the body with its own characteristics Different colors for each body type Appropriate engine sounds and driving pace This addon is under the DayZ Public License (DPL) and as such should not be unpacked and distributed without following the strict guidelines set out in this document, available here: Poke Автор NeonMurdered Добавлен 30.07.2021 Категория Транспорт  
  42. 4 балла
    123new

    Обновление 1.хх и паника.

    В миссии можно все твои изменения делать внешними файлами. Т.е. скрипты отдельными файлами, правки xml тоже отдельными файлами. Насколько помню это все можно подключать парой-тройкой строк в 1-2 файлах, которые проверить после обновления ну вообще не в напряг. Так и время сэкономите, и нервы побережете. Насчет xml файлов - в expansion mod такая система реализована, как пример на подглядеть. Документация https://community.bistudio.com/wiki/DayZ:Central_Economy_mission_files_modding Насчет скриптов - в init через include добавить файлы с нужными скриптами, типа вот так вверху файла #include "$CurrentDir:mpmissions\dayzOffline.chernarusplus\myfile.c" а в самом файле использовать чуточку хитрости для подключения своего кода или функций/классов в миссию сервера, например, таким кусочком кода modded class CustomMission { override void OnInit () { super.OnInit(); // Ваш код } }
  43. 4 балла
    Ришат

    Звуки

    Да с удовольствием) Запускаем и останавливаем проигрывание звука внутри класса действия. // Код нашего действия. class ActionOurAction : ActionContinuousBase { ref protected EffectSound ourSound; // Объявляем переменную типа 'EffectSound', не забыть укзаать сильную ссылку: 'ref'. // Конструктор класса нашего действия. void ActionOurAction() { /* Описываем все первичные инициализации конструктора */ ourSound = new EffectSound; // Инициализируем новый экземпляр переменной типа 'EffectSound'. ourSound.SetSoundAutodestroy( true ); // По необходимости. } // Переопределяем функцию 'OnExecuteClient'. override void OnExecuteClient( ActionData action_data ) { super.OnExecuteClient( action_data ); // Вызываем оригинальный код функции. action_data.m_Target.GetObject().PlaySoundSet(ourSound, "здесь нужный SoundSet", 0, 0); // Стартуем проигрывание звука при старте действия, передаем нашу переменную типа 'EffectSound', наш 'SoundSet' и параметры затухания. } // Переопределяем функцию 'OnFinishProgressClient'. override void OnFinishProgressClient( ActionData action_data ) { super.OnFinishProgressClient( action_data ); // Вызываем оригинальный код функции. action_data.m_Target.GetObject().StopSoundSet(ourSound); // Останавливаем проигрывание звука по окончанию дейтсвия, передаем в функцию нашу переменную типа 'EffectSound'. } };
  44. 4 балла
    В эксперементалке 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)); } } } } } ``` Наверное имеет смысл чуть приподнять предмет над поверхностью, но необходимость этого зависит от типа предмета, потому не стал этого делать чуть откорректировал код
  45. 4 балла
    DrTauren

    Как донат убивает проекты.

    Считаю что любой донат, нарушающий баланс - это зло. Всё что получает донатер, должен иметь возможность получать и обычный игрок в таких же условиях. На старте - все должны быть равны. Вип классы, появляющиеся на спавне с кучей стволов и т.д. - полная дичь, но пользуется самой большой популярностью (тут уже решать админу - заработок или честность создаваемых для игроков условий). Туда же относятся вип базы с огромными стенами, например. Которые обычный игрок не в силах поставить на своей базе. Ещё хуже - установка триггеров вокруг донат баз, т.е. все игроки, которые не прописаны на данной базе будут умирать при приближении к ней. Другое дело - продажа комплектов для строительства. Например, как было в Эпохе на А2. Большой ящик строительства, средний и малый. При этом все объекты в ящике можно найти в игре. Такой донат лишь экономит время, но не сможет стать причиной применения вреда обычным игрокам, в отличие от тех же вип комплектов на спавне. Думаю доступно объяснил свою точку зрения. П.С. тут, опять же всё зависит от админа и его финансовых возможностей. Как показывает моя личная практика - есть два варианта: 1) сделай сервер без баланса с кучей плюх для донатеров - будет куча неадекватных школьников, которые будут скидывать доната по чуть-чуть, но постоянно 2) сделай сервер с нормальным донатом, не нарушающим баланс - в первые месяцы не будешь окупать затраты на сервер, но со временем появятся кланы взрослых игроков, которые даже просто так будут скидывать пожертвования, окупающие сервер полностью. Осторожно, КАПС (ВАРИАНТ РАБОТАЕТ ТОЛЬКО ЕСЛИ У ВАС ДЕЙСТВИТЕЛЬНО КАЧЕСТВЕННАЯ И ИНТЕРЕСНАЯ СБОРКА СЕРВЕРА).
  46. 4 балла
    123new

    'Перемотка' игрового времени

    В данной теме опубликую скриптик, который уже давно лежит на форуме в разделе помощи. Информация обновления для версии 1.0 Установка: 1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c 2. В самом начале файла добавляем: #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\Correct_InGame_time.c" Находим блок функции void main() и перед закрывающей скобкой в конце этого блока '}' добавляем: GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(Correct_InGame_time, 1000, true); где 1000 - 1 секунда 3. Создаем вручную файл с именем "Correct_InGame_time.c" и заполняем его следующим текстом: static void Correct_InGame_time() { private int year, month, day, hour, minute; GetGame().GetWorld().GetDate( year, month, day, hour, minute ); if (hour < 7) { GetGame().GetWorld().SetDate(year, month, day, 7, 3); } if (hour >= 20) { GetGame().GetWorld().SetDate(year, month, (day + 1), 7, 3); } } 4. Настраиваем файл как нам нужно. Т.е. как видим, с 7 утра и до 8 вечера время на сервере внутриигровое не трогается, при наступлении от 20:00 и до 7 утра у нес автопромотка на 7:03 утра идет. Тупо, банально, дешево, но работает.
  47. 4 балла
    elanc

    Бочки

    Короче, на крафт кожи набросал: modded class Barrel_ColorBase : Container_Base { override void DetermineAction ( PlayerBase player ) { ItemBase ingredient; EntityAI item; if( GetQuantity() >= 10000 ) { // проверяем количество жидкости в бочке, иначе нет смысла продолжать int item_count = GetInventory().GetCargo().GetItemCount(); // получаем количество вещей в бочке for (int i = 0; i < item_count; i++) // перебираем вещи по их индексу в бочке { item = GetInventory().GetCargo().GetItem(i); // получаем объект вещи if(GetGame().ObjectIsKindOf (item, "GardenLime")) // проверяем, известь ли это { ingredient = ItemBase.Cast( item ); // пробуем привести ее к классу ItemBase, т.к. TanPelts() как аргумент требует объект именно этого класса if( ingredient ) // если удалось… { TanPelts(ingredient, player); // вызываем волшебную функцию «дубления»: если процесс пошел, то бочка будет заблокирована на время операции! открыть ее нельзя будет! Param1<string> m_MesParam = new Param1<string>("В бочке началась магия!"); // эта и строка ниже необязательны… GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_MesParam, true, player.GetIdentity()); // …просто информируем игрока } break; // вываливаемся из цикла, т.к. мы нашли известь и нам незачем дальше перебирать весь инвентарь бочки } } } Close(); // закрываем крышку бочки } } Это как рабочий пример… Проверил на сервере.
  48. 4 балла
    sks762

    Шаманим над оффлайном Дейза_63

    Камрад 123new выложил (и за это ему огромная благодарность!) самый свежак Дейз 63.148365 (на ragezone.com). Ну как тут удержаться и не поглядеть (после ооочень долгого перерыва), а что же там у BIS'ов новенького вырисовывается? Мдя-я, негусто... - немножко новых стволов (М4, помповуха и Мосинка, которую, кстати, можно ножовкою переделать на обрез), оружейная оптика (Кобра на калаш очень неплоха); - функционирующая зажигалка; - уже можно ставить треногу на костер, да и проблемы з зажиганием примуса в очередной раз побеждены ; - в кастрюле с водою можно сварить мясцо и картофанчик (см. скрин - BOILED), а если без воды, но с жиром (lard), то получится жарёха (см. скрин - BAKED). Без жира мясо сгорает. Жир же придется маланить, т.к. при разделке туш животных жира нету. Впрочем, разрабы еще не удосужились активировать болячки/отравления, так что пока можно жрать и сырое и горелое; - перс уже перестал блевать с риса, но продолжает тошнить с сухого молока; - фрукты заходят персу без проблем и можно бы озаботиться спавном слив, груш, апельсинчиков. Но вместо фруктов разрабы почему-то взялись за мухоморы и поганки...; - работы на Балотском аэродроме, спору нет, ведутся, но в палатках все еще нету лута, а некий левый лут висит в небе. Вот, пожалуй, и весь список достижений за истекший период. Нет, вру. Еще я заметил у быков охренительные яйца, а у коров - звездищи. И сисяна, нарисованного с непонятною целью.. Попутно всплыла пичалька - перестали генерироваться хели- и полискраши. А время неумолимо бежит и боюсь, с такими темпами работ мы еще не скоро дождемся релиза Дейза. Ладно, щас по быстрячку дошаманим с учетом обновок мой старый types.xml : - добавим жир, рис, картошку; - ножовку, треногу, зажигалку; - стволы и рабочие прибамбасы к ним (чисто для красоты добавим и сошки на М4); - до кучи закинем ОЗК и шлем Горка. Вот готовый архивчик. Этот types.xml годится для любой версии оффлайнмода. Забрасываем файл в папочку db. Пара замечаний к оффлайн-модам. Аркенсоровский (с https://github.com/Arkensor/DayZCommunityOfflineMode) перестал сохранять перса, но прочие фичи продолжают работать. Для сохранения можно юзать Колобовский оффлайн-мод (взял его у камрада 123new на ragezone.com). У мода есть небольшой глюк. Приходится перед выходом из игры отстыковывать оружейные магазины, иначе ствол потом перестанет их воспринимать. Официальный оффлайн не учитывает всю полную номенклатуру пригодного к игре лута и содержит ошибку: очки теперь называются не RocketAviators, а AviatorGlasses. Рекомендовал бы отредактировать стартовый инвентарь - минимизировать его (чтоб выживать было интереснее), но взамен забросить туда яблочко (чтоб сбить начальный сушняк и заморить червячка на первое время). Для Колобовского оффлайна находим его файл init.c, открываем текстовым редактором и фрагментарно (выделено цветом) приводим к такому, например, виду: . . myPlayer.SetInventory( "apple"); myPlayer.SetInventory( "Rag", 2 ); myPlayer.SetInventory( "HuntingKnife" ); . . Для официального оффлайна берем его init.c и фрагментарно (показано цветом) редактируем к виду: itemEnt = player.GetInventory().CreateInInventory("Rag"); itemBs = ItemBase.Cast(itemEnt); itemBs.SetQuantity(2); SetRandomHealth(itemEnt); //itemEnt = player.GetInventory().CreateInInventory("Mag_IJ70_8Rnd"); //SetRandomHealth(itemEnt); itemEnt = player.GetInventory().CreateInInventory("apple"); SetRandomHealth(itemEnt); itemEnt = player.GetInventory().CreateInInventory("HuntingKnife"); SetRandomHealth(itemEnt); //itemEnt = player.GetInventory().CreateInInventory("MakarovIJ70"); //SetRandomHealth(itemEnt); //player.SetQuickBarEntityShortcut(itemEnt, 2); //itemIn = itemEnt.GetInventory().CreateAttachment("Mag_IJ70_8Rnd"); //SetRandomHealth(itemIn); //itemEnt = player.GetInventory().CreateInInventory("Izh18"); //SetRandomHealth(itemEnt); //player.SetQuickBarEntityShortcut(itemEnt, 0); //itemBs = ItemBase.Cast(itemEnt); //itemBs.SetQuantity(rndQnt); //itemEnt = player.GetInventory().CreateInInventory("Ammo_762x39"); //rndQnt = Math.RandomInt(5,20); //SetRandomHealth(itemEnt); //player.SetQuickBarEntityShortcut(itemEnt, 1); //itemEnt = player.GetInventory().CreateInInventory("Ammo_380"); //SetRandomHealth(itemEnt); Для аркенсоровского мода (и его клона от камрада fidov'а) эти манипуляции особого смысла не имеют, т.к. мод позволяет игроку нашаманивать себе любые вещи в инвентарь. Но все-таки: лезем в файл .... \modules\CommunityOfflineMode.c, комментим то, что считаем лишним, дописываем то, что считаем нужным. Подробности опускаю. А в заключение предлагаю немножко поощрить разрабов (за то, что хоть как-то шевелятся). Давайте вместо значения hui, озвученного в посте выше, использовать что-то помягше, например - zopa. На спавне зомбаков это, гарантирую, не отразится, а разрабам будет, несомненно, приятнее. А в будущем, если разрабы продолжат радовать нас, ваще что-то благозвучное подыщем. P.S. Вид бычьих яиц совсем выбил меня из колеи. Разрабы, ну зачем, зачем вы сделали их такими большими??? Вы провоцируете у геймеров чувство собственной неполноценности! types.rar
×
×
  • Создать...

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

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