Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • OPG PROJECT

    Группа ВК

    По-настоящему хороший сервер с уникальным модом! 
     Заходи к нам,тебе тут понравится!
  • 0
Sign in to follow this  
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 текущая дата сервера.

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

Edited by RedLink (see edit history)

Share this post


Link to post
Share on other sites

5 answers to this question

Recommended Posts




  • 0

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

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

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

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

 

А так -

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

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

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

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

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

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

Edited by NoNameUltima (see edit history)

Share this post


Link to post
Share on other sites
  • 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 показывает локальную дату сервера.

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

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

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

Share this post


Link to post
Share on other sites
  • 0
9 часов назад, RedLink сказал:

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

Два вопроса

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

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

 

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

Share this post


Link to post
Share on other sites
  • 0

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

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

 

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

Share this post


Link to post
Share on other sites

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
Sign in to follow this  

  • Similar Content

    • By 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
       
       
    • By Miduznya
      Люди помогите кто знает, перепробовал множество вариантов
      ехе качал с сайта ragezone который типа переделан и в нем не работает БЕ
      но если зайти на сервер и выключить БЕ на клиенте через лаунчер, с сервера кикает, так что этот вариант не рабочий
      battleye = 0; тоже ничего не дает, кикает с сервера тоже.
      если не хотите тут можно и в лс , буду рад любой помощи.
    • By Miduznya
      Собственно как, как отключить battleye на сервере античит

      параметр BattlEye=0; не работает я так понял 
    • By Peresvet
      нипанимайу. как сменить карту на сервере?
    • By BorizzK
      Все вопросы на этот счет сюда
      Все решения, если есть, то же можно сюда
      Начало обсуждения тут
       
       
×
×
  • 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.