Нужна помощь?
Создайте тему в соответствующем разделе
Не нужно писать всё в чат!Загляните на торговую площадку
Там вы можете купить
всё что касается игровых серверовНе хотите бан?
Пожалуйста, ознакомьтесь с нашими правилами
Не нарушайте порядок!Продаёте или покупаете?
Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
- 0
-
Похожие публикации
-
Автор: Denis1979
Здравствуйте уважаемые форумчане. Столкнулся с такой проблемой, расчет соотношений дня и ночи, перечитал много статей, скачивал много калькуляторов, но все это не работало. Решил разобраться сам во всем. В итоге, со всеми проверками у меня ушел целый день!
Начнем ломать устоявшиеся стереотипы!?
Наверное самое ошибочное что было практически во всех статьях это то, что "serverTimeAcceleration" это общее продолжительность игровых суток, может я многих разочарую, но это не так, это функция на ускорение дня и не более, ночи и игровых суток там нет, (да он является триггером для ночи, но отвечает только за дневное ускорение). Теперь все по порядку.
В DeyZ все просто, игровые сутки разделены на 2 части, 12 часов дня и 12 часов ночи (ночь с закатами и рассветами) функция serverTimeAcceleration отвечает за ускорение 12 часов игрового дня, а функция serverNightTimeAcceleration отвечает за ускорение вторых 12 часов ночного игрового времени, только с той разницей, что по умолчанию значение serverNightTimeAcceleration (ускорение ночи) умножается на значение serverTimeAcceleration (это очевидно, т.к. в реальности продолжительность ночи грубо говоря 8 часов, т.е. 1/3 от суток и уножение ночного ускорения на дневное выполняет это условие). По факту, ночное ускорение времени начинается в 18-00 игрового времени и заканчивается в 6-00 игрового времени (может там дает какое то значение время года, не проверял, но даже если оно и есть по сути оно не важно и будет максимум выражаться в минутах). Получается вы можете настроить продолжительность дня и ночи так, как вам удобно.
Теперь к расчетам, начнем со всеми любимыми 4 часами, допустим мы хотим что бы день был 3 часа, а ночь 1 час. Считаем:
Всегда начинаем считать день, т.к serverNightTimeAcceleration по дефолту умножается уже на известное число, итак.
Так как у нас игровые сутки разделены на 2 части 12 часов дня и 12 часов ночи (с закатами и рассветами) то берем наши 12 часов от дневных игровых суток и делим их на 3 часа реального времени ( это то время, за которое у нас пройдет полный игровой день (без ночи) ) 12/3=4 вот мы и получили serverTimeAcceleration и он равен 4 (serverTimeAcceleration = 4), идем дальше и считаем множитель ночи, она у нас должна быть 1 (реальный час), делим вторые (ночные) 12 часов на 1 час того времени (ночного) которое мы хотим получить, получаем 12 (что бы ночь прошла за час, она должна идти в 12 раз быстрее) соответственно 12/1=12 но тут вспоминаем то, что у нас ночной множитель, который умножается на дневной, т.к. мы идем расчетом от обратного, на нужно ночное ускорение 12 поделить на дневное ускорение 4 и мы получим 3 итого serverNightTimeAcceleration = 3.
Пройдемся просто по цифрам 12/3=4 (день); 12/1=12/4=3 (ночь)
Теперь посчитаем соотношение 2 часа дневного времени и 2 часа ночного времени: 12/2=6 (serverTimeAcceleration = 6) 12/2=6/6=1 (serverNightTimeAcceleration = 1). Надеюсь что вы поняли мои расчеты, если не так, то прикрепляю таблицу ехель в ней нужно вставить только нужные вам значение, остальное она сама все посчитает, надеюсь что она вам поможет.
PS1:На всякий случай, все тесты делались с "serverTime="1979/10/22/06/00";"
PS2: В serverDZ.cfg на оф сайте богемии, разделитель множителя с десятичным значением показана запятая, это не так, ставьте точку. Если вы этого не учтете, то движок возьмет целое число, т.е. если вы поставите serverTimeAcceleration = 4,8 (вместо точки запятую) то движок будет считать не 4.8 и не будет округлять до 5 а возьмёт целое число 4 и по факту дневное ускорение у вас будет 4 а не 4.8. С точкой все отлично, движок видит и понимает десятичное значение. Правильно serverTimeAcceleration = 4.8
09.01.2023 г.
Решил добить до конца вопрос и развенчиваю последний миф, времена года никак не влияют на продолжительность дней и ночей, оно всегда равно 12 часов день и 12 часов ночь.
-
Автор: 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; не работает я так понял
-
-
Наш выбор
-
Создаем свой серверный мод. [DayZ 1.4 to Discontined]
123new опубликовал тему в Версия 1.0 и выше,
-
Увеличение карты х2
vitacite опубликовал тему в Картостроение,
Всем доброго времени суток, такая проблема, на сервере настроено по локальному время то-есть должно ночью быть ночь, но погода не меняется вообще, с чем это может ещё быть связано?
Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах