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

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

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

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

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

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

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

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

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

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


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

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

Категории

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

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

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

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

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


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

  • Начать

    Конец


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

  • Начать

    Конец


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

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

  • Начать

    Конец


Группа


Вконтакте


Steam


ICQ


Skype


Город


Сайт


Интересы

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

  1. В этом гайде мы разберёмся как настроить стартовый лут на сервере 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 тут:
  2. За основу взята наработка автора скрипта: http://s-platoon.ru/profile/14721-borizzk/ И немного доработана по своим соображениям. Использование мода клиенту игры НЕ ТРЕБУЕТСЯ!!! И так, установка: 1. Первым делом нам необходим чистый стандартный сервер DayZ (без модов, поскольку моды могу приводить к неработоспособности частей гайда). Установить его можно по инструкции, например, так: 2. Добавляем в папку сервера игры мод из архива: 3. Добавляем в параметры запуска сервера: @KillFeed_ServerMod.rar -Filepatching "-servermod=@KillFeed_ServerMod" Если ваш сервер уже имеет серверные моды, просто добавьте папку с модом в список используемых сервером модов. ВАЖНО: не добавляйте данный мод в параметр запуска сервера -mod=, иначе это может стать проблемой заходи игроков с параметрами verifysignatures=2; equalmodrequired=1; 4. В 'config-файле' сервера (там где названием сервера и прочие настройки) добавляем настройки для мода: //KillFeed_mod KillFeed_enableSaveKills = 1; // Включение сохранения счетчика убийств по игрокам KillFeed_enableSaveDies = 1; // Включение сохранения счетчика смертей по игрокам KillFeed_enableCustomTimeLog = 1; // Включение записи модом 'Кастомных' логов смертей игроков KillFeed_enableDefaultLog = 1; // Включение записи сервером стандартных логов сервера в scripts.log KillFeed_enableDebugLog = 1; // Включение записи сервером отладочных логов сервера в scripts.log (работает при KillFeed_enableDefaultLog = 1) KillFeed_enableMessages = 1; // Включение отправки сообщений в чат сервера о смертях игроков Пояснения к настройкам, как видите, имеются. Напомню, активный профиль сервера обозначается параметром '-profiles={имя папки или путь до папки}' Например, при указании: -profiles=Instance_1 папка профиля сервера будет выглядеть вот так: 5. Запускаем сервер, умираем от зомби и радуемся. Сообщения о смертях игроков будут в чате у других игроков (если в настройках игры они не отключены), так и в script.log. Где хранятся счетчики убийств и смертей? Ответ: Они хранятся в profile сервера игры. Т.е. после 1-го запуска создаются 2 файла (как у клиента игры в документах windows в папку dayz) в файлах с расширениями ".vars.DayZProfile" и ".DayZProfile". При удалении этих файлов счетчики сбросятся! P.S. Чтобы увидеть сообщения в чате, нужно быть 2-м игрокам на сервере, и умереть одному из двух. тот, кто умирает, сообщения с чата не видит!!!
  3. В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о количестве игроков. Нам понадобится: 1. Сервер DayZ 1.0, сделанный по одному из гайдов: 2. Notepad++ 3. Немножечко трезвого ума Приступим: 1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c 2. В самом начале файла добавляем: #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\PlayersMessagesCount.c" Находим функцию void main() и перед ее закрывающей скобкой "}"добавляем: GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(SendPlayersCount, CountPlayers_TIME_InfoPlayers_Repeat, true); 3. Помещаем в папку файл PlayersMessagesCount.c Либо создаем вручную этот файл с именем "PlayersMessagesCount.c" и заполняем его следующим текстом: int CountPlayers_TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) string Message_Chat = "Online Players: "; void SendPlayersCount() { array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { foreach(Man player: players) { CountPlayers_SendPersonalMessage(Message_Chat + numbOfplayers.ToString(), player); } // GetGame().ChatPlayer(0,Message_Chat + numbOfplayers.ToString()); } } void CountPlayers_SendPersonalMessage(string message, Man player) { if(( player ) && (message != "")) { Param1<string> m_GlobalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, m_GlobalMessage, true, player.GetIdentity()); } } 4. Настраиваем файл как нам нужно. Т.е. в строке int CountPlayers_TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) указываем время повтора вывода сообщений в чат (поумолчанию стоит 2 минуты) и текст сообщений в переменной string Message_Chat = "Online Players: "; P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
  4. В данной теме мы с вами научимся создавать простой скрипт, который позволит выводить в чат объявления о количестве игроков. Нам понадобится: 1. Сервер DayZ 0.63, сделанный по одному из гайдов: 2. Notepad++ 3. Немножечко трезвого ума Приступим: 1. Открываем Mpmissions - dayzOffline.chernarusplus - init.c 2. В самом начале файла добавляем: #include "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\PlayersMessagesCount.c" И после строки weather.SetWindFunctionParams(0, 0, 0); добавляем: GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(SendPlayersCount, TIME_InfoPlayers_Repeat, true); Пример: 3. Помещаем в папку файл PlayersMessagesCount.c Либо создаем вручную этот файл с именем "PlayersMessagesCount.c" и заполняем его следующим текстом: int TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) string Message_Chat = "Online Players: "; void SendPlayersCount() { array<Man> players = new array<Man>; GetGame().GetPlayers( players ); int numbOfplayers = players.Count(); if( numbOfplayers > 0 ) { GetGame().ChatPlayer(0,Message_Chat + numbOfplayers.ToString()); } } 4. Настраиваем файл как нам нужно. Т.е. в строке int TIME_InfoPlayers_Repeat = 120000; //in ms (120 seconds = 120000) указываем время повтора вывода сообщений в чат (поумолчанию стоит 2 минуты) и текст сообщений в переменной string Message_Chat = "Online Players: "; P.S. Если сообщения вам не видны, включите их видимость в настройках вашего клиента игры для себя!
  5. Автор скрипта: http://s-platoon.ru/profile/14721-borizzk/ Все благодарности за этот скрипт непосредственно автору скрипта, не мне! И так, установка: 1. Первым делом нам необходим чистый стандартный сервер DayZ (без модов, поскольку моды могу приводить к неработоспособности частей гайда). Установить его можно по инструкции, например, так: Замечу сразу, гайд сделан для версии игры 0.63.149525 2. Заходим в папку 'DTA' и распаковываем с 'PBO-MANAGER' архив 'scripts.pbo', получив папку 'scripts'. 3. Перемещаем папку 'scripts с' папки 'DTA' в корень папки сервера 4. Переходим по следующему пути: scripts\4_World\Entities\ManBase\PlayerBase.c и открываем файл. В самом его начале после кода class PlayerBase extends ManBase { добавляем код // BY BORIZZ.K, s-platoon.ru (ThX Mizev, NoNameUltima, 123New and DaOne) //MY --- //PLAYER DEATH with MESSAGES START //MY int killscore = 0; // usage p_killer.killscore = p_killer.killscore + 1; // for kills count in EEKilled function. //p_killer must be PlayerBase - use p_killer = PlayerBase.Cast(killer) //See EEKilled function int diescore = 0; // usage Player.diescore = Player.diescore + 1; // for death count in EEKilled function. //Player must be playerbase void Message_PlayerKilled(Object player_obj, Object killer) { //MY --- PlayerBase p_Killer = NULL; // Killer PlayerBase Player = player_obj; // Killed player PlayerIdentity Player_Identity = Player.GetIdentity(); //Killed player Identity string Player_Name = Player_Identity.GetName(); //Killed player name string p_UID = Player_Identity.GetPlainId(); // Killed player UID bool enableSaveKills = true; // enable/disable save kill count to profile/file by Killer UID bool enableSaveDies = true; // enable/disable save death count to profile/file by Player UID if ( GetGame().ServerConfigGetInt("enableSaveKills") == 0 ) //place parameter enableSaveKills = 0; for disable SaveKills to server profile { enableSaveKills = false; } if ( GetGame().ServerConfigGetInt("enableSaveDies") == 0 )//place parameter enableSaveDies = 0; for disable SaveDies to server profile { enableSaveDies = false; } string deathMsg = ""; string deathMsgDist = ""; string deathMsgKillScore = ""; string DebugMessage; Print("::: EEKilled: Debug: Input: killer " + killer.ToString() + " => Class: " + killer.GetType() + ", Player " + Player.ToString() + " => Class: " + Player.GetType()); //DEBUG //Phase #1 if ( killer.IsMan() ) { if ( killer.IsKindOf("SurvivorBase") ) { p_Killer = PlayerBase.Cast(killer); DebugMessage = "killer.IsMan(): killer.IsKindOf('SurvivorBase'): killer " + p_Killer.ToString() + " kill player " + Player.ToString(); //DEBUG } } else { if ( killer.IsItemBase() ) { ItemBase bitem = ItemBase.Cast(killer); p_Killer = PlayerBase.Cast(bitem.GetHierarchyRootPlayer()); DebugMessage = "killer.IsItemBase(): killer " + p_Killer.ToString() + " => " + bitem.ToString() + " kill player " + Player.ToString(); //DEBUG } else { DebugMessage = "killer " + killer.ToString() + " kill player " + Player.ToString(); //DEBUG } } Print("::: EEKilled Debug: " + DebugMessage); //DEBUG //Phase #2 if (p_Killer) { if (Player == p_Killer) { deathMsg = Player_Name + " committed suicide."; } else { PlayerIdentity Killer_Identity = p_Killer.GetIdentity(); string killer_name = Killer_Identity.GetName(); string k_UID = Killer_Identity.GetPlainId(); //Get killer UID vector position_killer = p_Killer.GetPosition(); vector position_player = Player.GetPosition(); int dist = vector.Distance(position_player, position_killer); EntityAI itemInHands = p_Killer.GetHumanInventory().GetEntityInHands(); if (enableSaveKills) { string strkillscore; g_Game.GetProfileString("killscore"+k_UID,strkillscore); if (strkillscore) { Print("::: EEKilled Debug: LoadKills: Killer: " + killer_name + ", loaded killscore: " + strkillscore); //DEBUG p_Killer.killscore = strkillscore.ToInt(); } } p_Killer.killscore = p_Killer.killscore + 1; //You must declare a variable: int KillScore = 0; in PlayerBase class if (enableSaveKills) { g_Game.SetProfileString("killscore"+k_UID,p_Killer.killscore.ToString()); g_Game.SaveProfile(); Print("::: EEKilled Debug: SaveKills: Killer: " + killer_name + ", killscore: " + diescore.ToString()); //DEBUG } if ( itemInHands.IsItemBase() ) { ItemBase item = ItemBase.Cast(itemInHands); string className = item.GetType(); deathMsg = killer_name + " kill: " + Player_Name; deathMsgDist = " from a distance: " + dist.ToString() + "m by " + className; deathMsgKillScore = killer_name + " kills: " + p_Killer.killscore.ToString(); } else { deathMsg = killer_name + " kill: " + Player_Name; deathMsgDist = " from a distance: " + dist.ToString() + "m."; deathMsgKillScore = killer_name + " kills: " + p_Killer.killscore.ToString(); } } } else { if ( killer.IsKindOf("AnimalBase") ) { deathMsg = Player_Name + " killed by animal."; } else { if ( killer.IsKindOf("ZombieBase") ) { deathMsg = Player_Name + " killed by zombie."; } else { deathMsg = Player_Name + " died for an unknown reason."; } } } //Phase #3 GetGame().ChatPlayer(5, deathMsg); Print("::: EEKilled Debug: killer: " + killer.ToString () + " ::: " + deathMsg); //DEBUG if (deathMsgDist) { GetGame().ChatPlayer(5, deathMsgDist); Print("::: EEKilled Debug: killer: " + killer.ToString () + " ::: " + deathMsgDist); //DEBUG } if (deathMsgKillScore) { GetGame().ChatPlayer(5, deathMsgKillScore); Print("::: EEKilled Debug: killer: " + killer.ToString () + " ::: " + deathMsgKillScore); //DEBUG } if (enableSaveDies) { string strdiescore; g_Game.GetProfileString("diescore"+p_UID,strdiescore); if (strdiescore) { Print("::: EEKilled Debug: Load Die's: Player: " + Player_Name + ", loaded diescore: " + strdiescore); //DEBUG Player.diescore = strdiescore.ToInt(); } } Player.diescore = Player.diescore + 1; if (enableSaveDies) { g_Game.SetProfileString("diescore"+p_UID,Player.diescore.ToString()); g_Game.SaveProfile(); Print("::: EEKilled Debug: SaveDeath: Player: " + Player_Name + ", diescore: " + diescore.ToString()); //DEBUG } //MY --- if( GetHumanInventory().GetEntityInHands() ) { if( CanDropEntity(player_obj) ) { if( !IsRestrained() ) { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(ServerDropEntity,1000,false,( GetHumanInventory().GetEntityInHands())); } } } } затем находим функцию override void EEKilled( Object killer ) { и перед строкой Print("EEKilled, you have died"); добавляем Message_PlayerKilled(this, killer); 4. В параметры запуска сервера добавляем: -FilePatching 5. В 'config-файл' сервера (тот файл где название сервера) добавляем: enableSaveKills = 1; // Включение сохранения счетчика убийств по игрокам enableSaveDies = 1; // Включение сохранения счетчика смертей по игрокам где 1 - включено, 0 - выключено 6. Сохраняем, запускаем сервер и радуемся. Сообщения о смертях игроков будут у вас как в чате, так и в script.log. Где хранятся счетчики убийств и смертей? Ответ: Они хранятся в profile сервера игры. Т.е. после 1-го запуска создаются 2 файла (как у клиента игры в документах windows в папку dayz) в файлах с расширениями ".vars.DayZProfile" и ".DayZProfile". При удалении этих файлов счетчики сбросятся! ВАЖНО: Скажу сразу, добавить систему кастомного логирования вместо базового можно, но добавлять ее вам прийдется до иницилизации данного файла playerbase.c, поскольку уже в playerbase.c вы будете вызывать функцию, которая должна быть заранее определена и известна серверу! Добавлю, что сейчас масса модов, которые в своем составе имеют данный класс. Они также могут переписывать его, там самым приводя данный гайд в неработоспособность. Самый лучший вариант проверки гайда - на чистом сервере игры без модов. P.S. Данная тема является копией утраченной темы на нашем форуме, восстановлена по просьбам 'трудящихся'. Надеюсь, она вам поможет.
  6. Как и обещал выкладываю код и небольшой гайд Собственно речь о функции загрузки UID и координат из файла в массив m_playersSpawnPoints класса миссии, который в последствии можно исполдьзовать в других функциях в классе миссии Отступление массив m_playersSpawnPoints это массив типа map В данном случае <string,string> где и индекс и значение текстовые строки индексом выступает записанный UID, а значением координаты, которые перед использованием преобразуются из текста в vector c помощью функции ToVector() Но об этом позже Раздел 1. Подключение КОд функции: //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { /* Файл playersSpawnPoints.lst кладем в папку указанную в параметре запуска сервера -profiles= тогда путь будет "$Profile:" или если кладем в файл в mpmissions\dayzOffline.chernarusplus\_CONF путь будет "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Путь меняется в переменной m_SettingsPath - "$Profile:" или "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" Можете указать свой путь, но он должен быть либо в $Profiles: либо в $CurrentDir:\\mpmissions\\dayzOffline.chernarusplus Формат файла: Steam UID в привычном виде 17 цифр Координаты Комментарий (через пробелы) Помните любая ошибка может привести к крашу сервера Не желательны пустые строки! Пример: 76562298156537008 1300 0 5600 Дима 76561998116927209 3000 0 3000 Вася из Новороссийска Про массив: ref map<string, string> m_playersSpawnPoints = new map<string, string>; m_playersSpawnPoints тут массив типа map, где каждый элемент массива состоит из 2х ячеек. 1. Индекс - тип string 2. Значение - тип string Пример работы с массивом типа map Запись в массив m_playersSpawnPoints.Insert("76562298156537008", "1300 0 5600"); //записываем первый элемент - индекс dayz, значение 10 m_playersSpawnPoints.Insert("76561998116927209", "3000 0 3000"); //записываем второй элемент - индекс dayzf, значение 17 Чтение из массива: Получаем значение 0го элемента string m = m_playersSpawnPoints.GetElement(0); // = "1300 0 5600" Получаем индекс 0го элемента string name = m_playersSpawnPoints.GetKey(0); / /= "76562298156537008" Получаем значение по индексу (в данном случае нас интерисует именно ЭТО) string n = m_playersSpawnPoints.Get("76561998116927209"); // = "3000 0 3000" //затем n переводим в вектор Usage in CreateCharacter function for change default spawn position: string PlayerUID = identity.GetPlainId(); if (PlayerUID) { if (m_playersSpawnPoints.Contains(PlayerUID) { pos = m_playersSpawnPoints.Get(PlayerUID).ToVector(); } } */ string FileName = "playersSpawnPoints.lst"; string m_SettingsPath = "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\"; //Folder with config files - .ini or .lst // Or "$Profiles:\\" FileHandle file; string file_line; array<string> read_line; int linecount = 0; //Comments check bool skipline = false; bool skipblock = false; //Comments check file = OpenFile(m_SettingsPath + FileName, FileMode.READ); if (file != 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read File: " + m_SettingsPath + FileName + " :::"); while (FGets(file, file_line) >= 0) { linecount++; //Comments check and skip if (file_line.IndexOfFrom(0,"//") == 0 || file_line.IndexOfFrom(0,"#") == 0 || file_line.IndexOfFrom(0," ") == 0 || file_line.Length() <= 0) { skipline = true; } else { skipline = false; } if (file_line.IndexOfFrom(0,"/*") == 0) { skipblock = true; } else if (file_line.IndexOfFrom(0,"*/") == 0) { skipblock = false; skipline = true; } //Comments check if (!skipline && !skipblock) { read_line = new array<string>; file_line.Split(" ",read_line); if (read_line.Count() >= 4) { if (read_line.Get(0).Length() == 17) { if (read_line.Get(1).ToFloat() > 0 && read_line.Get(3).ToFloat() > 0) { if (!m_playersSpawnPoints.Contains(read_line.Get(0))) { m_playersSpawnPoints.Insert(read_line.Get(0), read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3)); // UID, Position Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Add UID " + read_line.Get(0) + " spawnpoint: " + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + " to m_playersSpawnPoints"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID " + read_line.Get(0) + " duplicated, check file!"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " Position error: '" + read_line.Get(1) + " " + read_line.Get(2) + " " + read_line.Get(3) + "' :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " UID error: " + file_line + " :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Read Line c" + linecount + " have errors: " + file_line + " :::"); } } } CloseFile(file); if (m_playersSpawnPoints.Count() > 0) { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points count: " + m_playersSpawnPoints.Count() + " :::"); } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Players personal spawn points is not loaded! :::"); } } else { Print("::: Init.c ::: LoadPlayersSpawnPoints() ::: Error open file: " + m_SettingsPath + FileName + " :::"); } } Комментарии, а так же диагностические принты в лог не убираю сознательно ПОдключение и использование. Функцию размещаем в теле класса миссии в init.c или если она вынесена в другой файл (и файл подключени через #include) в том самом файле в теле класса миссии Вот как-то так: class CustomMission : MissionServer { //Тут разные функции и определение переменных класса... //Вот тут переопределенный штатно OnInit override void OnInit () { //тут его код ) //Тут определяем наш массив и функцию //Players personal spawn points (for new connected players) ref map<string,string> m_playersSpawnPoints = new map<string,string>; void LoadPlayersSpawnPoints() { //тут ее код } //Тут разные функции... } Ну Вы поняли... Далее нам надо при запуске и инициализации сервера эту функцию выполнить Но прежде надо создать файл по нужному пути в котором будут UID'ы и координаты В данной редакции используется путь "$CurrentDir:\\mpmissions\\dayzOffline.chernarusplus\\_CONF\\" и имя файла "playersSpawnPoints.lst" те в папке mpmissions\dayzOffline.chernarusplus нужно создать папку _CONF и поместить в нее этот файл Но вы можете это переделать как Вам больше нравится Формат файла: 6561198156925007 2698.36 0 5989.59 USER 6561198156924007 2698.36 0 5989.59 ВАСЯ 6561198156923007 2698.36 0 5989.59 ПЕТЯ //Тут комментарий /* 6561193356923001 3698.36 30 5189.59 ПЕТЯ */ //Тут комментарий #Тут комментарий Первое поле - позиция - Это Steam UID (17 цифирь) 2,3,4 поля позиции числа это координаты X Z Y (Z = высота) - если 0 система поставит перса на землю или ближайшую твердую поверхность под ним все что дальше игнорится Можно каментить строки с помощью // , # Можно каментить блоки /* */ Если первый символ в строке пробел, все остальное то же игнорится Пустые строки то же игнорятся Если в строке с UID и координатами ошибка об этом напишет в лог с указанием номера строки Если UID дублируется об этом то же напишет в лог Ок Файл создали Теперь добавим вызов этой функции в тело функции OnInit в классе миссии (про нее речь шла Выше) Функция OnInit ВСЕГДА выполняется при запуске сервера Внутрь мы добавим вызов LoadPlayersSpawnPoints() В итоге при запуске сервера LoadPlayersSpawnPoints() выполнется и запишет в массив m_playersSpawnPoints UID'ы и координат Добавляем как-то так: override void OnInit() { //Тут может быть различный код //Тут вызов нашей функции //Load players personal spawn poins LoadPlayersSpawnPoints(); // => m_playersSpawnPoints // "UID", "Position" //Тут может быть различный код } Запустили сервер и увидели в логе что файл прочитался и все ок .... LoadPlayersSpawnPoints() ::: Players personal spawn points count: итд итп Или ошибки Если ошибки - читаем все еще раз и/или задаем вопросы в теме (НЕ В ЛИЧКЕ!!!) показывая что куда и как Вы прописали Отлично Тормозим в сервер Продолжение следует минут через 15
  7. В каком файле прописать стартовый капитал к примеру 10к ? Мод exile. Карта Altis. Для новых игроков заходящих на сервер.
  8. Доброго времени суток уважаемые. У меня возникла проблема с сервером следующего характера. Зависает процесс игры на стороне клиента. Тем более это происходит почти у каждого игрока. Когда игрок зависает максимум что он может это писать в чате. Проблема решается перезагрузкой пк на стороне клента. Как решить данную проблему и кто сталкивался с подобным. Версия сервера Arma 3 1.52, Epoch 0.3.5.0. ServerFPS у меня стабильный. Проверял все от и до. Прошу помочь!
  9. Привет всем. Может кто сталкивался с подобной проблемой, в алтис лайф 4.0 иногда у игроков пропадают все деньги, тупо скидываются на 0. Как и почему это происходит, никак понять не могу. Причем происходит это редко, как у гражданских, так и у полиции. Если кто решал подобную проблему, подскажите куда смотреть.
  10. Прошу помощи у форумчан по такому вопросу : Поставил скрипт сейф зон вот от сюда http://epochmod.com/forum/index.php?/topic/32555-extended-safezone-script-working/ всё работает всё пишется при входе и выходе из сейф зоны, но есть одно НО , боты которых спаунят дроны убивают игроков в сейф зоне -то есть условия этой сейф зоны неприменимы к ботам получается . Может есть у кого идея как это можно решить .
  11. Что то типо такого...а да,ещё текстуры неба становятся как будто рисованные карандашом.Перебрал весь сервер,сносил и переустанавливал всё 3 раза,никак не могу разобраться.Буду очень благодарен тому кто решит эту проблему.Карта Bornholm.
  12. Кикает где то 50% игроков с сервера, даже не пропускает в лобби, т.е. тыкают на иконку сервера и сразу вылетает " некорректная версия, сервер отказал в соединении" , а кого то пропускает на сервер типо меня и еще 40-50% игрокво, Подскажите если сможите.
  13. UraniumProtect - защита игроков от урана: Версия: v0.2 СКАЧАТЬ Данный плагин был написан мной для одного проекта, он позволяет запретить поднятие предмета, если на игроке не одета определенная броня Особенности: ID брони в конфиге; ID предметов в конфиге; Вывод сообщения, если не одета броня; Сообщение настраивается через конфиг файл. Настройка плагина: Helmet: 0 //id шлема Chestplate: 0 //id нагрудника Leggings: 0 //id штанов Boots: 0 //id ботинок Items: //Сюда ID предметов, которые нельзя поднимать без одетой брони - 152 - 155 - 157 - 161 - 165 - 166 msg: '[UraniumProtect] Сообщение' //Сообщение, которое будет выводится игроку, если он не одел броню Команды: /uprotect help - справочная :) (Доступна всем) /uprotect list - вывести список предметов для подъема (По умолчания доступна только Админам) /uprotect reload - перезагрузить плагин (По умолчания доступна только Админам) Permissions ко всем командам кроме /uprotect help, "uprotect.all"​
  14. Помогите пожалуйста со скриптом на стартовый лут игроков Он работает, но не до конца. Например, вещи, добавляемые командами addItemToBackpack addItemToVest, не появляются в разгрузке и в рюкзаке. Исключение составляет мед.пакет. Он в рюкзаке появляется. И еще один вопрос. Какую строку или часть кода надо добавить, чтобы проверка игрока происходила не только по ID но и по имени?
×
×
  • Создать...

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

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