Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • 0
almalk454

Повторный выбор роли приводит к неопределению Player

В общем тыкнул в 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"))] ); 

При первичном выборе роли все норм:

Цитата

22:36:39 "
                INIT CONFIG:
                        isServer: false
                        isDedicated: false
                        hasInterface: true
                        is3DENMultiplayer: false
                        playerName: AlmalK
                        sidePlayer: WEST
                        newSide: 1
"

Если релогнуться в лобби выбрать другую роль и зайти снова, то в логе уже следующее:

Цитата

22:37:14 "
                INIT CONFIG:
                        isServer: false
                        isDedicated: false
                        hasInterface: true
                        is3DENMultiplayer: false
                        playerName: Error: No vehicle
                        sidePlayer: UNKNOWN
                        newSide: 0
"

Уже пол недели сижу с этой ошибкой, может знает кто как ее решить...

Share this post


Link to post
Share on other sites

2 answers to this question

Recommended Posts




Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By mafan9
      Здравствуйте! Как отключить выбор пола в ESS v3? Спасибо
    • 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 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 kapitoshkarus
      На сервере стоит обычная система респавна в картинках по берегу либо рандомно   берёзино черно каменка електро  балота 
      как добавить туда допустим  кабанино  нашол вот етот конфиг 
          idc = -1;             style = 48;             text = "\z\addons\dayz_code\gui\spawn\spawn_berezino.paa";             x = 0.517793 * safezoneW + safezoneX;             y = 0.13013 * safezoneH + safezoneY;             w = 0.234375 * safezoneW;             h = 0.275 * safezoneH;             color[] = { 0.5, 0.5, 0.5, 1 };             colorActive[] = { 1, 1, 1, 1 };             action = "closeDialog 0;dayz_selectRegion = 5;";             onMouseEnter = "ctrlSetFocus (_this select 0)";   но я так понимаю ето всеголиш расположение картинки  =( неподскажете где копать ? 
×
×
  • Create New...

Important Information

By using this site, you automaticly agree to our Guidelines and Privacy Policy.
We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.