Need help?
Create a topic in the appropriate section
Don't write everything in the chat!Take a look at the marketplace
There you can buy
everything related to game serversDon't want a ban?
Please read our rules
Don't disturb the order!Sell or buy?
Use services of the guarantor
We will make your deal safe
-
Similar Content
-
By BorizzK
Как и обещал выкладываю код и небольшой гайд
Собственно речь о функции загрузки 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
-
By almalk454
В общем тыкнул в init.sqf такого рода код:
diag_log( format[" INIT CONFIG: isServer: %1 isDedicated: %2 hasInterface: %3 is3DENMultiplayer: %4 playerName: %5 sidePlayer: %6 newSide: %7 ", (isServer), (isDedicated), (hasInterface), (is3DENMultiplayer), (name player), (side player), (getNumber (configFile >> "CfgVehicles" >> (typeOf player) >> "side"))] ); При первичном выборе роли все норм:
Если релогнуться в лобби выбрать другую роль и зайти снова, то в логе уже следующее:
Уже пол недели сижу с этой ошибкой, может знает кто как ее решить...
-
By BigCrazyCat
Так как сейчас пошла мода на создание серверов,особенно пиратских (несмотря на то,что Богемия пытается уменьшить их кол-во), думаю,нужно создать гайд по выбору хостинга для размещения нашего сервера - не у многих ведь есть возможность поставить его на своем компьютере.
При создании сервера у нас есть 3 варианта:
1. Создать сервер на своем компьютере.
Преимущества:
Всегда имеете непосредственный доступ к серверу,редактированию файлов т.д. Не отключат за неуплату. Если компьютер довольно мощный,это будет намного дешевле,чем платить деньги за хостинг или управляемый сервер. Свобода действий. Недостатки:
Обычно: нестабильный интернет-канал,частые перебои в электросети. Не всегда есть возможность держать компьютер включенным (мамка запрещает! ) 2. Заказать управляемый сервер.
Преимущества:
Есть поддержка,которая готова вам помочь,даже если вы где-то накосячили. Удобное администрирование через веб-интерфейс Это часто дешевле. Сразу можно заплатить за нужное количество слотов. Недостатки:
Иногда бывают внезапные отключение сервера (Отключение сети, света, падение метеорита...) но раз в год и палка стреляет Ограниченные возможности администрирования Нельзя сменить количество слотов,когда онлайн поднялся. Примеров хостинга приводить не буду,так как не использовал данный тип и не проверил лично.Можете загуглить сами.
3. Установить сервер на хостинг.
Есть два типа хостинга: VPS и VDS. Вроде бы разные вещи,но на деле практически одно и тоже.Второй обычно мощнее,ну и соответственно дороже (иногда в разы).
[ok]Cервер DayZ требует Windows. RDP (протокол удаленного доступа) могут быть использованы для помощи в установке и настройке вашего сервера.
Есть некоторые сборки и под Linux,где производительность гораздо выше,но я лично не пробовал.[/ok]
Минимальные требования к железу:
Quad Core CPU @ 3Ghz+ (CPU главный параметр в ArmA серверах, поэтому чем мощнее тем комфортнее будет вам и вашим игрокам на сервере, и будет меньшее количество визуальных багов) 2GB+ ОЗУ (ОЗУ не слишком важный параметр в ArmA серверах, поэтому не зацикливайтесь на том чтобы у вашего сервера было 16GB ОЗУ. Вполне достаточно будет 4-6GB.) 50GB+ Жесткий Диск (Предпочтительно SATA3 или SSD) (ArmA 2 CO и мод DayZ занимают около 20GB) Пропускная способность в районе 2TB в месяц. Чем круче железо,тем,естественно,лучше.
В: VPS или VDS?
О: На что денег хватит. В идеале VDS - прав больше,больше мощность и т.д.
Теперь самое интересное - выбор хостинга.
За несколько месяцев я перепробовал много хостингов и попытаюсь вкратце описать каждый:
ultravds.com
Посоветовали на одном форуме как лучший их ССД хостингов. Для начала взял тест на 7 дней с такими характеристиками: проц 4х2.6 ГГц,6 гиг оперативы,50 гиг ССД. Запустил сервер - игроки сразу учуяли неладное. В одних фпс поднимается выше,чем обычно,в тех,у которые компьютеры не калькуляторы, резкие скачки ФПСа - от 120 до 50.(Лучше ниже ФПС,но стабильный,чем вот такая ерунда). Пришлось сменить на тариф "Премиум размещение",где проц был 3.7 ГГц и неплохой HDD SATA RAID 15k rpm. Это было куда лучше,фпс стабильный,всё хорошо.
Мой вердикт: хороший вариант для размещения сервера,один из лучших,но почему такая трабла с ССД - не знаю.
Нostpro.ua Есть и Линукс сервера,и те,которые нам нужно - Виндовс. (Речь идет об VPS. О ВДСках даже не говорю,имхо,очень дорого).
Я брал на пробу тариф W-Шустрый (Раньше можно было взять тест период,но,видимо,злоупотребляли).
Винда 2012,4 гига оперативи,проц 4 ядра Ксеон Е5-2630 и 60 гигабайт ССД диск. Дата-центр в Киеве.
Испытывал его я при низком онлайне - до 10 человек. При кривой сборке сервера он все-равно работал на отличном ФПСе.
Позже решил вернуться,когда онлайн перевалил за 20. Тогда ФПС был уже не айс,но нормальный!
Мой вердикт: не лучший вариант для размещения сервера,только нанесет сильный удар по вашему карману.
nqhost.com Искал,искал новый хостинг и мой выбор пал на этот. Цены жуть,но тогда под рукой валялся купой на 50% скидку. Взял тариф Windows VPS - NQ-VPS-W-6 (75 баксов) . Только зашел на хостинг - жуткие лаги! У меня бабушкин комп с 95 виндой меньше лагает,чем это дерьмо. Сразу обратился в поддержку,они мол говорят: "Чем измеряются ваши лаги? Предоставьте обьективные показатели". Говорю,зайди да и попробуй.Скорость перемещения данных нулевая,скорость интернет-соединения - не торт. Вообщем, долго перекидывались умными словами и в итоге пришлось их послать,так как ни копейки не вернули. Накатал пару отзывов на различных сайтах и форумах о них,они видите ли читают их,из-за чего и не возвращают деньги. (Обьективная причина же!)
Мой вердикт: не брать никогда,даже при зомби-апокалипсисе.
1gb.ua Брал месяц теста. И что сказать? Довольно неплохо. Знакомый за деньги взял - ситуация как с nqhost.com
Хостинг как хостинг.Регистрация на сайте,конечно,глупая до ужаса,но ничего,прорвались. Делал несколько запросов в поддержку - отвечали грамотно и понятно. Сервер держит неплохо,на уровне.
Мой вердикт: для начинающего сервера в самый раз(берите месяц теста),для остальных - есть варианты получше.
netbreeze.net Пробовал лучший тариф. Имхо,не хватает мощности. Скажите: "Да там цена же 700 рублей!". Ага,хотите Виндовс - платите за лицуху 500 рублей сверху. Уже 1200.
Мой вердикт: не вариант.
serverdale.com Взял тариф SD-Quad,так как следующий в 2 раза дороже. Сразу скажу - владельцы хостинга используют интернет-туннели,из-за которых могут быть проблемы с скоростью интернет-соединения.
Мой вердикт: один из лучших вариантов для средних серверов с онлайном ~15-20 человек,не больше.Дальше - лаги. Дешево и сердито,как говорится.
Вот небольшой список хостингов,которых я лично опробовал. Пишите в комментарии свои примеры,их преимущества и недостатки.
Другие хостинги,которые мне посоветовали:
www.digitalocean.com www.provisov.net/services/vps eurobyte.ru/services/vds/ www.interserver.net/webhosting.html simplevm.net 1ssd.pro ru.hetzner.de Hetzner.de и digitalocean.com киты на зарубежном рынке,но в последнее время второй сильно реселлят.
После выбора места,где мы будем размещать наш сервер, приступаем к создании сборки сервера.Об этом мы поговорим позже,но вы всегда можете заказать готовые сборки с множеством скриптов у меня или у администрации данного ресурса. (небольшая реклама)
На этом пока гайд заканчиваю,со временем буду дополнять.
*В гайде использована информация с ресурса dayzgame.com.
-
By SpiritWolf
Всем хай, такая проблема:
Стоит система респа ESS (1061). Иногда бывает, что после смерти игрок появляется за картой, а при релоге появляется на месте, где его убили, с тем же лутом.
Я видел в теме кучу обсуждений по этому поводу, но толком ответа не нашел. Есть ли какое-то решение?
-
By JolyMonk
Поставил ESS 3.0, возникла такая вот проблема, персонаж, на котором демонстрируется снаряжение, спавнится в какой-то другой области, как решить можно?
-
-
Our picks
Здравствуйте! Как отключить выбор пола в ESS v3? Спасибо
Share this post
Link to post
Share on other sites