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

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

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

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

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

Реальная дата на сервере 1.0.6.2 + InfiSTAR

 

Всем привет.

Возник один вопрос, который пока не могу догнать как решить.

Суть следующая. В последней версии Инфистара есть код, который выводит логи в отдельную папку

Скрытый текст

if(_armalog)then{
	diag_log "<infiSTAR.de> infiSTAR dll loaded successfully";
	diag_log format["<infiSTAR.de> %1",[_response, 1] call fn_select_string_rest];
	diag_log "<infiSTAR.de> Loading infiSTAR code..";

	infiSTAR_LogFolderName = "!InfiSTAR_Logs\";
	FN_CALL_LOG_DLL = {
		private ["_filename","_logentry"];
		_filename = _this select 0;
		_logentry = _this select 1;
		"armalog" callExtension format["2%1%2|%3", infiSTAR_LogFolderName, _filename, _logentry];
	};

 

Путем нехитрых манипуляций добавляем ему вывод лог в отдельную папку с датой (ибо надоел тот кошмар, что там за 5 дней скапливается)

Скрытый текст

if(_armalog)then{
	private ["_d1","_d2","_d3","_d4"];
	_d1 = date select 0;
	_d2 = date select 1;
	_d3 = date select 2;
	_d4 = format["%1-%2-%3",_d1,_d2,_d3];
	
	diag_log "<infiSTAR.de> infiSTAR dll loaded successfully";
	diag_log format["<infiSTAR.de> %1",[_response, 1] call fn_select_string_rest];
	diag_log "<infiSTAR.de> Loading infiSTAR code..";

	infiSTAR_LogFolderName = format["!InfiSTAR_Logs\%1\",_d4];
	FN_CALL_LOG_DLL = {
		private ["_filename","_logentry"];
		_filename = _this select 0;
		_logentry = _this select 1;
		"armalog" callExtension format["2%1%2|%3", infiSTAR_LogFolderName, _filename, _logentry];
	};

 

А вот теперь сам вопрос.

Если переменная dayz_ForcefullmoonNights = true;

то создается папка с датой, которая указана в server_monitor.sqf - т.е. 2012,8,2 - что в принципе логично.

А вот если dayz_ForcefullmoonNights = false; - то создается папка с датой, которая указана в mission.sqf (в моем случае это 2008,10,1. Хотя по логике должна присваиваться реальная дата, которая берется из того-же server_monitor при проверке на dayz_ForcefullmoonNights, т.к. в логе сервера мы видим, что TIME SYNC текущая дата сервера.

Почему так происходит и как это можно поправить?

Изменено пользователем RedLink (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Рекомендованные сообщения




  • 0

RedLink Идеи? А кому охота вчитываться в код?)

В 27.01.2019 в 03:04, RedLink сказал:

.к. в логе сервера мы видим, что TIME SYNC текущая дата сервера.

Мы ничего не видим. Логов то нет у нас.

 

А так -

Ты бы для начала выкинул весь код. И в 1-2 строки накидал бы банальное получение даты. Плюс логи бы приложил.

Ото вывалил код с инфистара какой то...

И вообще - что значит реальное время сервера? - В арме нет функции возвращающей реальное время серверной машины. Есть время от старта миссии, и дата, внутри которой лежит время из mission.sqf, и часики со старта миссии тик-так.

И при чем тут сервер монитор, если дата, она и в африке дата - ты и тянешь ее из переменной data которая основана на см. выше.

А если реальное время надо, и реальную дату - через dll получай. хоть sql хоть ini... На форуме было.

И логи надо подчищать - создай батник который будет удалять логи старше Х суток, и копировать их при старте сервера куда нить на яндекс диск.

Изменено пользователем NoNameUltima (история изменений)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

подчищение логов не вариант, т.к. храню в районе месяца, а за сутки там порядка 10-15 файлов собирается (см. скрин)

принцип такой, когда во втором коде идет запрос на год-месяц-день, то автоматом создается папка с этой датой, в которую уже сохраняются файлы с логом за день. логирования времени - diag_log ["TIME SYNC: Local Time set to:", _date, "Fullmoon:",dayz_ForcefullmoonNights,"Date given by HiveExt.dll:",_result select 1];

онаже в сервернуй rpt и показывает установленную дату согласно 

setDate _date;
dayzSetDate = _date;
publicVariable "dayzSetDate";

из server_monitor.sqf

фишка в том, что если в ините переменной dayz_ForcefullmoonNights сказать true, то при первом заходе игрока, второй код в первом сообщении создает папку с датой, которая указана в том же - server_monitor.sqf, а именно 

if (dayz_ForcefullmoonNights) then {_date = [2012,8,2,_hour,_minute];};

а вот есть указать переменной false, то создается папка с датой из mission.sqm и все логи на протяжении всего сеанса сервера идут именно в нее.

НО в серверном логе, уже после прогрузки сервера лог TIME SYNC показывает локальную дату сервера.

Пот я и хочу понять, почему так происходит.

По логике она должна сразу создаваться с датой сервера.

Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0
9 часов назад, RedLink сказал:

НО в серверном логе, уже после прогрузки сервера лог TIME SYNC показывает локальную дату сервера.

Два вопроса

1. А ДО прогрузки - дата типа верная?

2. Что значит ЛОКАЛЬНУЮ дату сервера? - Локальная это какая? И откуда она? - т.е. ты там какие то цифры приводил с 2008г. - Нынче 2019 - локальная дата серверной машины, это 2019г....

 

P.S. вывод в РПТ поставь в цикле раз в 1с даты и времени. И смотри после какого скрипта изменение происходит... Ну это если ты не соврал, и изменение ПОСЛЕ прогрузки сервера происходит(см вопрос 1)

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах
  • 0

1. судя по настройке игры, когда запускается сервер, ему присваивается дата из mission.sqm. А кот когда заходит первый игрок, т.е. начинается прогрузка сервера, то присваивается или локальная дата (которая установлена на компе) или 2012,8,2, которая установлена в server_monitor.

2. ну дата которая на компе стоит. то что я скинул, просто старый лог.

 

я прост не понимаю почему в одном и том же случае показывается разная дата (dayz_ForcefullmoonNights true/false), ведь если бы прогрузка system_monitor была бы позже инфистара, то и в случае когда стоит TRUE, дата бы все равно присваивалась 2008, т.е. из mission.sqm

Поделиться сообщением


Ссылка на сообщение
Поделиться на других сайтах

Создайте аккаунт или войдите в него для комментирования

Вы должны быть пользователем, чтобы оставить комментарий

Создать аккаунт

Зарегистрируйтесь для получения аккаунта. Это просто!

Зарегистрировать аккаунт

Войти

Уже зарегистрированы? Войдите здесь.

Войти сейчас

  • Похожие публикации

    • Автор: 123new
      В данной теме я распишу мой вариант установки сейвзоны, работающий на момент публикации статьи на версии сервера игры 1.06.152885.
       
      Установка
      1. Открываем 'init.c' в  'MpMissions' вашей.
      2. Вверху файла добавляем 1 строкой:
      #include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\Scripts\safezone.c" Где 'dayzoffline.chernarusplus' - имя папки с активной 'MpMissions' вашей.
      Т.е. для карты Livonia 'dayzoffline.chernarusplus'  надо вручную заменить на 'dayzOffline.enoch'
      Пример:

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      3.Создаем папку 'Scripts' в корне 'MpMissions' вашей, а в ней создаем файл с именем 'safezone.c' следующего содержания:
      /* Author: Sania(ZoS) (aka 123new) Project: S-platoon.ru Install: 1. Create a 'Scripts' directory in your active mpmissions 2. Plase this filename (safezone.c) in 'Scripts' 3. Add in init.c this line: #include "$CurrentDir:\\mpmissions\\dayzoffline.chernarusplus\\Scripts\safezone.c" Where is 'dayzoffline.chernarusplus' is active mpmission directory in cfg filename server 4. Configure a next settings */ class SafeZone_PlugIn { protected bool Activate_SafeZone_PlugIn = true; // safezone on (true) or off (false) protected float SAFEZONE_time_repeat_checking = 10; //In seconds ref static TStringArray SAFEZONE_LOACTIONS = {"15145.1 32.9793 13919.0", "12145.1 32.9793 10919.0"};//Map coords (positions of the safe zone) protected static float SAFEZONE_RADIUS = 100; //In meter protected static string SAFEZONE_ENTRY_MESSAGE = "Welcome to The SafeZone! Godmode ENABLED!"; protected static string SAFEZONE_EXIT_MESSAGE = "You Have Left The SafeZone! Godmode DISABLED!"; void OnInit() { if(Activate_SafeZone_PlugIn) { GetGame().GetCallQueue(CALL_CATEGORY_GAMEPLAY).CallLater(RunCheckStart, (SAFEZONE_time_repeat_checking * 1000), true); } } static void RunCheckStart() { private array<Man> players = new array<Man>; GetGame().GetPlayers( players ); if (SAFEZONE_LOACTIONS.Count() > 0) { if (players.Count() > 0) { foreach(string SAFEZONE_LOACTION: SAFEZONE_LOACTIONS) { if( players.Count() > 0 ) { foreach(Man player: players) { if(player) { private PlayerBase player_casted = PlayerBase.Cast(player); CheckingPosition(player_casted,SAFEZONE_LOACTION.ToVector()); } } } } } } } static void CheckingPosition(PlayerBase player,vector SAFEZONE_LOACTION) { private float SAFEZONE_distance; private string SAFEZONE_ZoneCheck, SAFEZONE_UID_PLAYER, SAFEZONE_NAME_PLAYER; SAFEZONE_NAME_PLAYER = player.GetIdentity().GetName(); SAFEZONE_UID_PLAYER = player.GetIdentity().GetPlainId(); //Steam 64 private vector SAFEZONE_pos_player = player.GetPosition(); private vector SAFEZONE_LOCATION_FIXED = CorrectToGroundPosY(SAFEZONE_LOACTION); private string name_mesage_profile = "GodModeEnabledFor: " + SAFEZONE_UID_PLAYER + " Location: " + SAFEZONE_LOACTION.ToString(); SAFEZONE_distance = vector.Distance(SAFEZONE_pos_player,SAFEZONE_LOCATION_FIXED); if (SAFEZONE_distance <= SAFEZONE_RADIUS) //Player Inside Zone { SAFEZONE_ZoneCheck = ""; GetGame().GetProfileString(name_mesage_profile,SAFEZONE_ZoneCheck); if (SAFEZONE_ZoneCheck == "true") //Already in zone { GetGame().SetProfileString(name_mesage_profile,"true"); player.SetAllowDamage(false); //GodMode On return; } else { GetGame().SetProfileString(name_mesage_profile,"true"); Print("[SafeZone] " + SAFEZONE_NAME_PLAYER + " (" + SAFEZONE_UID_PLAYER + ") Enter in safeZone in position: " + SAFEZONE_LOCATION_FIXED.ToString()); player.SetAllowDamage(false); //GodMode On SendPersonalMessage(SAFEZONE_ENTRY_MESSAGE, player); } } else { //Player Outside of Zone if (SAFEZONE_distance > SAFEZONE_RADIUS) //Player Outside of Zone { SAFEZONE_ZoneCheck = ""; GetGame().GetProfileString(name_mesage_profile,SAFEZONE_ZoneCheck); if (SAFEZONE_ZoneCheck == "false") { GetGame().SetProfileString(name_mesage_profile,"false"); return; } else { if (SAFEZONE_ZoneCheck != "") { GetGame().SetProfileString(name_mesage_profile,"false"); Print("[SafeZone] " + SAFEZONE_NAME_PLAYER + " (" + SAFEZONE_UID_PLAYER + ") Left safeZone in position: " + SAFEZONE_LOCATION_FIXED.ToString()); player.SetAllowDamage(true); //GodMode Off SendPersonalMessage(SAFEZONE_EXIT_MESSAGE, player); } else { GetGame().SetProfileString(name_mesage_profile,"false"); return; } } } } } static vector CorrectToGroundPosY(vector pos) { private float pos_x = pos[0]; private float pos_z = pos[2]; private float pos_y = GetGame().SurfaceY(pos_x, pos_z); private vector tmp_pos = Vector(pos_x, pos_y, pos_z); return tmp_pos; } static void SendPersonalMessage(string message, PlayerBase casted_player) { Man player; Class.CastTo(player, casted_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()); } } } /* class SafeZone_Config //test config for json { vector SAFEZONE_LOACTION = "15145.1 32.9793 13919.0"; //Map coords (position of the safe zone) float SAFEZONE_RADIUS = 100.0; //In meter string SAFEZONE_ENTRY_MESSAGE = "Welcome to The SafeZone! Godmode ENABLED!"; string SAFEZONE_EXIT_MESSAGE = "You Have Left The SafeZone! Godmode DISABLED!";\ } */ ref SafeZone_PlugIn SafeZone = new SafeZone_PlugIn(); modded class CustomMission { override void OnInit () { super.OnInit(); SafeZone.OnInit(); } } Ну или скачиваем его отсюда в готовом виде:
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
      Здесь:
       'SAFEZONE_LOACTIONS' - координаты точкек центра сейвзоны, можно указать несколько.
      'SAFEZONE_RADIUS' - радиус от указанного центра севзоны, на котором действует защита
      'ENTRY_MESSAGE' - сообщение о входе в зону (не рекоммендуется указывать русский язык, может не отображаться)
      'EXIT_MESSAGE' - сообщение о выходе из зоны (не рекоммендуется указывать русский язык, может не отображаться)
      'SAFEZONE_time_repeat_checking' - время повтора проверки наличия игроков в зонах, в секундах
      'Activate_SafeZone_PlugIn' - активация плагина скрипта, true - ключен, false - выключен
      4. Запускаем сервер и проверяем.
       
      Для совсем ленивых готовая миссия сервера с настроенной сейвзоной для патча игры 1.06 
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
       
      Гайд обновлен: 31.01.2020
       
       
    • Автор: Miduznya
      Люди помогите кто знает, перепробовал множество вариантов
      ехе качал с сайта ragezone который типа переделан и в нем не работает БЕ
      но если зайти на сервер и выключить БЕ на клиенте через лаунчер, с сервера кикает, так что этот вариант не рабочий
      battleye = 0; тоже ничего не дает, кикает с сервера тоже.
      если не хотите тут можно и в лс , буду рад любой помощи.
    • Автор: Miduznya
      Собственно как, как отключить battleye на сервере античит

      параметр BattlEye=0; не работает я так понял 
    • Автор: Peresvet
      нипанимайу. как сменить карту на сервере?
    • Автор: BorizzK
      Все вопросы на этот счет сюда
      Все решения, если есть, то же можно сюда
      Начало обсуждения тут
       
       
  • Наш выбор

×
×
  • Создать...

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

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