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

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

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

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

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


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

  • Основной раздел сайта
    • Реклама, сотрудничество, партнёрство
    • Набор в команду S-Platoon
    • Стать VIP-Пользователем форума
    • Рынок
    • Приватный раздел сообщества S-Platoon.Ru
    • Раздел графики
    • Стена позора
    • Комната отдыха и развлечений
  • Серверостроение - DayZ Standalone
    • Гайды
    • Помощь
    • Программы, админский софт
    • Готовые сборки
    • Всё об игре
  • Серверостроение - Общий раздел
    • ARMA 3
    • ARMA 2
    • CS: Global offensive
    • ARK: Survival Evolved
    • Minecraft
  • Серверостроение - DayZ мод
    • Гайды DayZ EPOCH 1.0.6
    • Гайды DayZ (прочие версии)
    • Помощь по серверам
    • Прочие разделы
  • Коммерческая ветка
    • Добавить свой софт в этот раздел
    • Раздел VME редактора
    • DayZEpochUltima[DZEU]

Категории

  • Скачать серверные файлы



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

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

  1. И так, ребятки, вот вам небольшая 'полезняшка' от меня, и совершенно бесплатно! Описание: Скрипт, добавляющий админу сервера возможность указывать для каждого игрока индивидуальный скин спавна, его персональную точку спавна и один из имеющихся на сервере стартовых наборов с лутом, которые можно составить самим. Если указано несколько точек спавна и/или наборов лута, то будет выбран один из предложенных вариантов рандомно. Также, любой из названных параметров можно отключить в скрипте и сделать его стандартным, как он есть поумолчанию на сервере. Дополнительно - есть возможность назначить свой набор стартового лута для всех игроков на сервере не из списка скрипта! Нам понадобится: 1. Сервер DayZ 1.0, сделанный по одному из гайдов: 2. Notepad++ 3. Немножечко трезвого ума и понимания того, что мы делаем, и как прописывается лут на новом языке enfusion Установка: Перед установкой: Обратите внимание, что имя 'стандартной' миссии сервера при загрузки со Steam называется: 'dayzOffline.chernarusplus'. На хостингах имя этой папки может отличаться. Если это так, то вам в информации ниже необходимо заменить 'dayzOffline.chernarusplus' на имя вашей папки миссии сервера, иначе вы не сможете запустить сервер игры! 1. По пути: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\ создать папку 'CustomSpawnPlayerConfig' и поместить в созданную нами папку 2 файла Script.cSets.c или создать их самим со следующим содержанием: Script.c /* Описание: Скрипт выдачи индивидуального стартового лута, скина игрока и точек спавна Автор: 123new */ 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); } } }; 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) { player.RemoveAllItems(); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку (не корректно работает, пишет краш лог) itemCreated = player.GetInventory().CreateInInventory("CoyoteBag_Green"); // Выдаем рюкзак if (itemCreated) // Проверяем, создался ли рюкзак { SetRandomHealthItem(itemCreated); // Выдаем рюкзаку рандомное качество itemCreated1 = itemCreated.GetInventory().CreateInInventory("Apple"); // Добавляем в инвентарь созданного рюкзака яблоко if (itemCreated1) // Проверяем, создалось ли яблоко в рюкзаке { SetRandomHealthItem(itemCreated1); // Выдаем яблоку рандомное качество } itemCreated1 = NULL; // Обнуляем значение переменной после работы с ней itemCreated1 = itemCreated.GetInventory().CreateInInventory("Rag"); // Выдаем игроку бинты в рюкзак if (itemCreated1) // Проверяем, создались ли бинты в рюкзаке { itemCasted = ItemBase.Cast(itemCreated1); // Выполняем преобразование в другой класс для работы с нужной нам функцией itemCasted.SetQuantity(4); // Определяем количество для созданных бинтов как 4 штуки SetRandomHealthItem(itemCreated); // Выдаем бинтам рандомное качество } itemCreated1 = NULL; // Обнуляем значение переменной после работы с ней } itemCreated = NULL; // Обнуляем значение переменной после работы с ней itemCreated = player.GetInventory().CreateInInventory("TTSKOPants"); // Выдаем игроку штаны itemCreated = NULL; // Обнуляем значение переменной после работы с ней itemCreated = player.GetInventory().CreateInInventory("TTsKOJacket_Camo"); // Выдаем игроку куртку itemCreated = NULL; // Обнуляем значение переменной после работы с ней itemCreated = player.GetInventory().CreateInInventory("CombatBoots_Black"); // Выдаем игроку обувь itemCreated = NULL; // Обнуляем значение переменной после работы с ней //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 (Сет поумолчанию для всех игроков, если хотите назначить - добавляйте здесь!) { //player.RemoveAllItems(); // Чтобы удалить с персонажа уже имеющиеся стандартные стартовые шмотки раскомментировать строку break; } } } void SetRandomHealthItem(EntityAI itemCreated) { if ( itemCreated ) { private int rndHlt = Math.RandomInt(55,100); itemCreated.SetHealth("","",rndHlt); } } } 2. В файле: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\init.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(); Чтобы получилось примерно так 3. В функции: void main() перед ее закрывающей скобкой '}' добавить: GetGame().GetCallQueue(CALL_CATEGORY_SYSTEM).CallLater(My_Custom_Spawn_Parameters.Read_Update_Config, 120000, true); // Обновление настроек скрипта кастомных спавнов, 1 минута = 60000 где 120000 - 2 минуты. Эта функция будет обновлять конфигурацию скрипта через указанное вами время в процессе работы сервера постоянно. 4. В функции: CreateCharacter после ее открывающей скобки '{' добавить: pos = My_Custom_Spawn_Parameters.Load_And_Check_Spawnpoints(identity, pos); characterName = My_Custom_Spawn_Parameters.Load_And_Check_SpawnSkin_Player(identity, characterName); 5. В функции: StartingEquipSetup перед ее закрывающей скобкой '}' добавить: My_Custom_Spawn_Parameters.Load_And_Check_StartLoadout(player); 6. В папке, обозначенной параметром запуска сервера '-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 7. В файле Sets.c в папке: {папка с вашим сервером}\mpmissions\dayzOffline.chernarusplus\CustomSpawnPlayerConfig\ настроить стартовый лут для ваших игроков и написать собственные сеты ВАЖНО: количество сетов можно делать любое, номера сетов брать от 1 и выше (не должно быть -1, либо 0, только от 1 и выше) Все что укажете в блоке default будет применено для всех игроков при респавне в случае, если им не выдан никакой сет! P.S. В функции выдачи сетов опция 'player.RemoveAllItems();' работает, но пишет ошибку в scripts.log и crash.log. Причину так и не смог выяснить, на старых патчах игры работало нормально. Возможно это временное явление! Благодарности: Товарищу Mizev за его первоначальные гайды в группе VK при появлении в сети серверной части игры
  2. Вобщем в процессе работы сервера происходят рандомные динамические события и вместе с ними на карте спавнятся некоторые обьекты Если время их жизни истекает и настает время нового события и в радиусе видимости нет игроков обьекты удаляются с карты Но Если выключение корректно (запланированный рестарт например), вызов функции удаления происходит из деструктора класса Все отрабатывает Ошибок нет Но после рестарта некоторые обьекты на месте Тогда я замутил функцию-задержку с проверкой float TimeWait(Object object, float timeW) { float cTick = GetGame().GetTickTime() + timeW; while(object || GetGame().GetTickTime() < cTick ) { if ( GetGame().GetTickTime() >= cTick ) break; } return GetGame().GetTickTime(); } и вызываю ее if (object) tW = TimeWait(object, timeW); задержка реально происходит - делал ее 60 секунда да же НО! обьекты эти после рестарта опять на месте Пока придумал костыль - сохраняю в профиль сервера при каждом спавне координаты и тайпнеймы заспавленных обьектов и при запуске в конструкторе проверяю это место и грохаю обьекты по тайпнеймам - места безлюдные и открытые, лагерей и тп там быть не может - потому в принципе ничего лишнего туда попасть не может к тому же это полезно в случае крашей и все же почему обьекты не удаляются при завершении работы сервера?
  3. Нашел где и как она задается Файл MissionServer.c Функция void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime) Вызывается по эвенту PreloadEventTypeID: - при подключении игрока и постановке его в очередь Она возвращает queueTime в которой и будут те самые 15 сек Тк он возвращается пустой, сервер использует значение по умолчанию Если внутри функции изменить значение queueTime = 5; то будет нужное Вам время Соответственно переопределяем эту функцию в init.c или Вашем файле миссии в моде (или нет) override void OnPreloadEvent(PlayerIdentity identity, out bool useDB, out vector pos, out float yaw, out int queueTime) { if (GetHive()) { // Preload data on client by character from database useDB = true; queueTime = 1; //Делаем 1 сек } else { // Preload data on client without database //Вот это я не понял зачем useDB = false; pos = "1189.3 0.0 5392.48"; yaw = 0; queueTime = 1; //Делаем 1 сек } } Делаем 1 сек Вуаля...
  4. Подскажите, может, кто сталкивался с проблемой, когда используешь суицид, персонаж ресается в том же месте, с тем же лутом. При этом после нажатия суицида, персонаж перемещается за карту, а после релога дюпается в месте смерти. P.S Вот такую ошибочку после суицида в логе сервера выдает: 20:17:58 Error in expression <died set [count dayz_died, _playerID]; _newObject setVariable ["bodyName",_play> 20:17:58 Error position: <_newObject setVariable ["bodyName",_play> 20:17:58 Error Undefined variable in expression: _newobject 20:17:58 File z\addons\dayz_server\compile\server_playerDied.sqf, line 29
  5. //Функция создания зданий/обьектов BORIZZ.K //Не поставит здание/обьект там где оно уже есть в радиусе 10м!!! //параметры вызова //НазваниеКласса, координаты, коррекция высоты (добавляется к высоте если > 0 - можно поставить здание на здание/поверхность выше земли или повесить в воздухе), Ориентация, Направление. int SpawnBuilding(string m_Building_Class, vector spawn_Point, float alt_Correct, vector spawn_Orient, vector spawn_Dir) //Спавн { Print("::: SpawnBuilding ::: SpawnBuilding(m_Building_Class = " + m_Building_Class + ", spawn_Point = " + spawn_Point.ToString() + ", alt_Correct = " + alt_Correct + ", spawn_Orient = " + spawn_Orient + ", spawn_Dir = " + spawn_Dir + ") :::"); array<Object> nearest_objects = new array<Object>; array<CargoBase> proxy_cargos = new array<CargoBase>; string className; Object object; float radius = 10; Object m_Building; int n_Building_Count = 0; spawn_Point[1] = GetGame().SurfaceY( spawn_Point[0], spawn_Point[2] ); if (alt_Correct > 0) { spawn_Point[1] = spawn_Point[1] + alt_Correct; } GetGame().GetObjectsAtPosition(spawn_Point, radius, nearest_objects, proxy_cargos); Print("::: SpawnBuilding ::: Radius: " + radius.ToString() + ", all nearest_objects: " + nearest_objects.Count().ToString() + " :::"); for ( int i = 0; i < nearest_objects.Count(); i++ ) { object = nearest_objects.Get(i); className = object.GetType(); if ( className == m_Building_Class ) { Print("::: SpawnBuilding ::: Found object: " + object.ToString() + ", className: " + className + ", Position: " + object.GetPosition() + " : Spawn " + m_Building_Class + " cancelled. ::: "); return 0; } } m_Building = GetGame().CreateObject( m_Building_Class, spawn_Point, false, true ); //m_Building.PlaceOnSurface(); if ( spawn_Orient[0] == 0 && spawn_Orient[1] == 0 && spawn_Orient[2] == 0) { m_Building.SetOrientation(m_Building.GetOrientation()); } else { m_Building.SetOrientation(spawn_Orient); } if ( spawn_Dir[0] == 0 && spawn_Dir[1] == 0 && spawn_Dir[2] == 0) { m_Building.SetDirection(m_Building.GetDirection()); } else { m_Building.SetDirection(spawn_Dir); } if (m_Building) { Print("::: SpawnBuilding ::: Result: Object: " + m_Building.ToString() + ", spawn_Point = " + m_Building.GetPosition().ToString() + ", alt_Correct = " + alt_Correct + ", spawn_Orient = " + m_Building.GetOrientation().ToString() + ", spawn_Dir = " + m_Building.GetDirection().ToString() + ") :::"); return 1; } else { Print("::: SpawnBuilding ::: Result: create object error. :::"); } return 0; } void SpawnBuildings() { int Buildings_Count; // пример Buildings_Count = SpawnBuilding("Land_City_FireStation", "6275 0 8013" , 0, "0 0 0", "0 0 40"); // Buildings_Count будет = 0 если здание не поставлено, 1 если поставлено } Простой способ установки Вставить в init.c (ВНЕ КЛАССА!) Вызывать в конце main() вот так SpawnBuildings(); в функции SpawnBuildings() по примеру (там есть) прописываем какие здания куда, какая ориентация/и или направление
  6. Поделюсь еще одним рецептом ))))) Имеем сервер Арма3 который запускаем для себя любимого и для друга, системник, кабель интернета и роутер или модем кому как нравится, так в чем проблема спросите, а вот в чем, если кабель инета подключен напрямую в системник то сервер виден в сетевой игре, а вот если подключаем интернет через модем то наш сервер пропадает из видимости. Бросаемся открывать порты, смотреть что не так, кароч глаза на лоб. Я тоже через все это прошел. Решилась проблема незатейливо включением на роутере функции DMZ или функции демилитаризованная зона. Расскажу на примере собственного роутера ASUS. Собственно к делу : Открываем в брузере настройки роутера, далее в левом меню нам нужна вкладка "Локальная сеть" в открывшемся меню жмем на вкладку "DHCP сервер" в низу видим ----- "Список присвоенных вручную IP-адресов в обход DHCP (Максимум : 64)" ------ там еть пустое поле MAC-адрес со стрелочкой, жмем на стрелку вылезает имя нашего компьтера и ip адрес --- жмем "добавить" на "+" с правой стороны ,в итоге получаем мак адрес нашей сетевой карты и присвоенный ip, жмем применить. Идем далее --- в левом меню выбираю вкладку интернет , в верхнем баре появляются разделы ..... ...... ..... "DMZ" жмем на нее вылезает вкладка на ней 2 поля "Включить DMZ" и "IP-адрес выделенной станции", в первом жмем включить, во втором клацаем в пустое поле появляется IP адрес, или вбиваем в ручную тот который выпал рядом с мак адресом сетевой карты ---- жмем применить . Обязательно перезагружаем модем. Далее запускаем свой сервак Арма и радуемся. Кому помогло + в репу.
  7. Приветствую. Нашел дюп, для исправления нужно как то закрывать инвентарь при анимации Medic. Есть ли варианты решения проблемы?
  8. У меня вылезла вот такая вот ошибка при запуске сервера , файлы сервера проверял , мод тоже перекачивал . Ей богу не пойму . кто знает как починить выручайте
  9. Сервер голый, установлен только Инфи и Валюта с банками. При попытке взаимодействия с банкиром, открывается окно, где нет надписей на кнопках по типу "положить" и "взять". Самое интересное, что кнопки сами по себе работают, валюту можно взять и положить в банк, однако, нет этих надписей, что очень сильно мешает. В чём может быть дело?
  10. Куплю ФИКС Регенерация патронов. После того как игрок уходит в релог происходит востановление патронов. (Нужно исправить.) Skype: holodov1985
  11. Данный скрипт позволяет рыбачить находясь на водном транспорте при наличии сети\мешковины (burlap sack) Особенности: 1) Рыбалка из любого водного транспорта 2) Шанс потерять свою сеть при рыбалке 3) Начать рыбалку можно по нажатию клавиши Shift Что нам понадобится: -EXILE-Fishing-Boat-master.zip Или скачать архив по ссылке Инструкция: 1) Открываем папку EXILE-Fishing-Boat-master\mpmissionsExile.YourMap и копируем папку custom в папку с вашей миссией 2) Таким же образом копируем папку overrides 3) Открываем ваш Config.cpp, находящийся в папке CfgExileCustomCode, и добавляем эту строку: ExileClient_gui_hud_event_onKeyUp = "overrides\ExileClient_gui_hud_event_onKeyUp.sqf"; Вот и всё. Надеюсь скрипт будет кому-то полезен Оригинальный гайд на английском: http://www.exilemod.com/topic/23618-release-fishing-boat-script/
  12. Есть сервер на обычной арме без модов, так вот иногда случается что сервер крашится и вылетает окошко от консоли (программа не отвечает (закрыть программу)). Собственно вопрос вот в чем - у меня настроено батниками автоматический запуск сервера в том случае если консоль армы будет закрыта, но в данном случае консоль автоматом не закрывается собственно пока руками не нажмешь кнопку "закрыть программу". Как бы автоматизировать этот процесс чтобы при краше не вылетало это окно а просто завершалась работа консоли автоматом.
  13. Особенности: Сборка моззи, велика или мотоцикла Меню сборки при нажатии ПКМ на тулбокс Остановка сборки при движении персонажа Сборка транспорта (а так же поломаного) Возможность продать собранный транспорт Транспорт не заносится в БД и удаляется после рестарта После сборки детали появляются на земле Что нам понадобится: Этот архив Инструкция: 1) Открываем ваш кастомный variables.sqf и в самый низ добавляем код: EVDVehicleArray = ["MMT_Civ","TT650_Civ","CSJ_GyroC"];dayz_allowedObjects = dayz_allowedObjects + EVDVehicleArray;if(isServer) then { DZE_safeVehicle = DZE_safeVehicle + EVDVehicleArray;}; 2) Открываем init.sqf и находим это:call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\variables.sqf"; и ниже добавляем это:call compile preprocessFileLineNumbers "ПУТЬ К СКРИПТУ\variables.sqf"; где SCRIPT_PATH\variables.sqf - путь к соответствующему кастомному файлу 3) Находим строку:call compile preprocessFileLineNumbers "\z\addons\dayz_code\init\compiles.sqf"; и ниже добавляем это:call compile preprocessFileLineNumbers "ПУТЬ К СКРИПТУ\compiles.sqf"; //Compile custom functions где SCRIPT_PATH\compiles.sqf - путь к соответствующему кастомному файлу 4) Открываем ваш кастомный ui_selectSlot.sqf и ищем это:_pos set [3,_height]; и выше добавляем этот код:// Add extra context menus _erc_cfgActions = (missionConfigFile >> "ExtraRc" >> _item); _erc_numActions = (count _erc_cfgActions); if (isClass _erc_cfgActions) then { for "_j" from 0 to (_erc_numActions - 1) do { _menu = _parent displayCtrl (1600 + _j + _numActions); _menu ctrlShow true; _config = (_erc_cfgActions select _j); _text = getText (_config >> "text"); _script = getText (_config >> "script"); _height = _height + (0.025 * safezoneH); uiNamespace setVariable ['uiControl', _control]; _menu ctrlSetText _text; _menu ctrlSetEventHandler ["ButtonClick",_script]; }; }; 5) Открываем description.ext и в конец добавляем:#include "ПУТЬ К СКРИПТУ\extra_rc.hpp" 6) Создаём файл extra_rc.hpp по тому пути что указали в пункте выше и вставляем туда код:class ExtraRc { class ItemToolbox { class BuildBike { text = "Deploy Bike"; script = "['MMT_Civ'] execVM 'ПУТЬ К СКРИПТУ\EVD\EVD_deploy.sqf'"; }; class BuildMotorcycle { text = "Deploy Motorcycle"; script = "['TT650_Civ'] execVM 'ПУТЬ К СКРИПТУ\EVD\EVD_deploy.sqf'"; }; class BuildMozzie { text = "Deploy Mozzie"; script = "['CSJ_GyroC'] execVM 'ПУТЬ К СКРИПТУ\EVD\EVD_deploy.sqf'"; }; };}; если у вас уже установлена функция для использования ПКМ по предметам, то файл должен содержать этот код, а не то что выше:class ExtraRc { class ItemBloodbag { class Use { text = "Use Bloodbag"; script = "execVM 'ПУТЬ К СКРИПТУ\SelfBB\SelfBB.sqf'"; }; }; class ItemToolbox { class BuildBike { text = "Deploy Bike"; script = "['MMT_Civ'] execVM 'ПУТЬ К СКРИПТУ\EVD\EVD_deploy.sqf'"; }; class BuildMotorcycle { text = "Deploy Motorcycle"; script = "['TT650_Civ'] execVM 'ПУТЬ К СКРИПТУ\EVD\EVD_deploy.sqf'"; }; class BuildMozzie { text = "Deploy Mozzie"; script = "['CSJ_GyroC'] execVM 'ПУТЬ К СКРИПТУ\EVD\EVD_deploy.sqf'"; }; };}; 7) Открываем ваш fn_selfActions.sqf и ищем этот код:// All Traders if (_isMan and !_isPZombie and _traderType in serverTraders) then { и над ним добавляем это://Pack Vehicles if (_typeOfCursorTarget in EVDVehicleArray and _hasToolbox and !(locked _cursorTarget) and (damage _cursorTarget < 1)) then { if (s_player_packvehicle < 0) then { s_player_packvehicle = player addAction ["Pack Vehicle", "SCRIPT_PATH\EVD\EVD_pack.sqf",_cursorTarget, 0, false, true, "",""]; }; } else { player removeAction s_player_packvehicle; s_player_packvehicle = -1; }; 8) Папку EVD копируем в новую папку по тому пути что всё это время указывали в кодах выше. Опция - добавление своего транспорта: Оригинал статьи: http://epochmod.com/forum/index.php?/topic/10905-release-enhanced-vehicle-deployment-with-right-click-option/
  14. Может кто помочь скриптом с бессметрием на время,при спавне игрока,так как некоторые так дюпают деньги,буду благодарен
  15. Всем привет! Столкнулся с проблемой, при выборе спавна в самолёте банит( Стоит скрипт ESS... Вот что пишет сервер рпт: Сам разобраться не смог (Рукожоп)... Помогите
  16. На нашем сайте предусмотрена возможность рекламирования вашего игрового сервера/сайта/програмного обеспечения при помощи баннеров и ссылок. Баннеры под первым сообщением темы ↓ Баннер на главной странице (над чатом) ↓ Ссылки над первым сообщением темы ↓ Ссылка на главной странице (над чатом) ↓ Заявку вы можете заполнить в этой же теме, либо написать мне в ЛС. Любые сообщения не по теме запрещены.
  17. Когда захожу на сервер вижу эту табличку https://steamuserimages-a.akamaihd.net/ugc/811056205065071900/00186E9870B149192AA31421BFA70F055962766C/ При удалении этих файлов арма крашится Как решить проблему ?
  18. Доброго времени суток, сделал все по инструкции но вот уже как прошел день а все никак не могу решить проблему ошибки при входе в на сервер. http://prntscr.com/dfrc7i Выбивает ошибку include file z\addons\dayz_code\gui\description.php not found Все перепробовал, подскажите как сдвинуть все с мертвой точки.
  19. Установка Внимание! Новейший Infistar AH (13/07/2014) идет с действующим whitelisted по умолчанию и нужно всего лишь добавить CMDmenus. Для этого: Скачать файлы
  20. 2 раза в день как минимум крашится сервер, это происходит при рестарте, помогите(( Уже пробовал ставить Microsoft Visual C++ стоят все версии и на вирусы проверял всё норм. Варианты переустановить железо не катит.
  21. Ребят прошу помощи, решил я значит такой поставить этот Скрипт выполнил все по гайду, но вылезла ошибка. я ее исправил там чувак добрый в коментах попался подсказал как исправить :) Но на мое разочарование вылезла новая ошибка Вот сама суть вопроса что мне делать )) Помогите пожалуйста. Вот прикрепляю сам Файл если кому надо.
  22. Всем добрейший вечерочек. Долго искал то, как сделать что бы в Дебаге отображалась человечность разным цветом при разных значениях, например при хуманити больше -5000, она бы отображалась красным, а если хуманити больше +5000, то синим(скрины ниже), и вот мне помогли это сделать, большая благодарность RedLink и BigCrazyCat, и для тех, кто не видел тему в помощи(ибо раньше я не смотрел помощь, а только гайды, может есть такие как я), то вот вам гайдик. Что нам понадобится: 1. AH.sqf(или файлик с дебагом) 2. Пять минут свободного времени Вообщем, приступим: 1. Заходим в AH.sqf или файл с дебагом Ищем это: _humanity = player getVariable['humanity',0]; if (_humanity > 999999) then { _humanity = [_humanity] call fnc_format_humanity; _humanity = toArray _humanity; _humanity = _humanity - [44]; _humanity = toString _humanity; }; И ниже вставляем это: _humColor = '#FFFFFF'; if (_humanity <= -5000) then { _humColor = '#CE1821'; }; if (_humanity >= 5000) then { _humColor = '#3A85CE'; }; #CE1821 - это код цвета того, каким цветом будут цифры, если человечность больше чем -5000 #3A85CE - это код цвета того, каким цветом будут цифры, если челочесность Больше чем +5000 Цвет меняйте на такой, какой хотите 2) Далее идем к коду самого дебага, там находим это(или что то вроде этого, у каждого могут быть разные дебаги): <t size='1' font='Bitstream' align='left' color='#0066CC'>Человечность: </t><t size='1' font='Bitstream' align='right'>%3</t><br/> И меняем на вот это: <t size='1' font='Bitstream' align='left' color='#FFFFFF'>Человечность: </t><t size='1' font='Bitstream' align='right' color='%14'>%3</t><br/> Видим color='%14' - это индекс переменной, то есть какая она по счету, у вас может быть другая(надо ставить самому) Теперь отсчитываем какая она у нас, и ставим ниже. ,_humColor В итоге в моем случае у меня получился вот такой код дебага: hintSilent parseText format["" <t size='1' font='Bitstream' align='Center' >[%1]</t><br/> <t size='0.8' font='Bitstream' align='Center' >Игроков на сервере: </t><br/> <img size='4.75' image='%4'/><br/> <t size='1' font='Bitstream' align='left' color='#CC0000'>Кровь: </t><t size='1' font='Bitstream' align='right'>%2</t><br/> <t size='1' font='Bitstream' align='left' color='#FFFFFF'>Человечность: </t><t size='1' font='Bitstream' align='right' color=''>%3</t><br/> <br/> <t size='1' font='Bitstream' align='left' color='#FFFFFF'>Зомби убито: </t><t size='1' font='Bitstream' align='right'>%9</t><br/> <t size='1' font='Bitstream' align='left' color='#FFFFFF'>Мародерство: </t><t size='1' font='Bitstream' align='right'></t><br/> <t size='1' font='Bitstream' align='left' color='#FFFFFF'>Бандитов убито: </t><t size='1' font='Bitstream' align='right'></t><br/> <br/> <t size='1' font='Bitstream' align='left' color='#FFFFFF'></t><t size='1' font='Bitstream' align='right'>%5ч %6мин</t><br/> <t size='1' font='Bitstream' align='left' color='#FFFFFF'>FPS: </t><t size='1' font='Bitstream' align='right'>%8</t><br/> <t size='1' font='Bitstream' align='Center' color='#CC0000'>%7</t> "", _txt, (r_player_blood), _humanity, _pic, _hours, _minutes2, _BottomDebug, (round diag_fps), (player getVariable['zombieKills', 0]), (player getVariable['humanKills', 0]), (player getVariable['banditKills', 0]), _pOn, _timertext ,_humColor ]; uiSleep 1; Сохраняем и все, готово! Если что то не получится, пишите в комменты, подскажу, расскажу! Скрины:(форум крашит, когда заливаю сюда, поэтому залил на фотохостинг) http://imgur.com/a/m29he http://imgur.com/a/qfcEc
  23. Здравствуйте) Проблема вот в чем устанавливал я на сервер плагины вот по этому Гайду. Все сделал как там описано, но после установки и входе на сервер у меня происходит следующее, экран загрузки затем сообщение об аутентификации и попытке аутентификации так несколько раз потом выводит сообщение такого типа "вы должны находится рядом со скалой чтобы добывать руду" и выкидывает в лобби. Я проверил файл arma2oaserver.rpt там выводит ошибку такого типа,и не просто 2-3 раза а жуткий флуд. Подскажите пожалуйста что делать. Сами ошибки. http://pastebin.com/n54KYnw1