Нужна помощь?
Создайте тему в соответствующем разделе
Не нужно писать всё в чат!Загляните на торговую площадку
Там вы можете купить
всё что касается игровых серверовНе хотите бан?
Пожалуйста, ознакомьтесь с нашими правилами
Не нарушайте порядок!Продаёте или покупаете?
Пользуйтесь услугами гаранта
Мы сделаем вашу сделку безопасной
-
Объявления
-
⚙️ Новые онлайн-инструменты для DayZ 26.07.2026
-
- 0
-
Похожие публикации
-
Автор:
-Reks-
Продам сервер по DayZ/ Есть
Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
-
Автор: SemKa1407
Ссылка на архив: https://disk.yandex.ru/d/WmYW5AcZozGSiA
Инструкция, написанная на коленке, есть в архиве (для полных нулей).
-
Автор: SemKa1407
Будьте добры, помогите пожалуйста.
Проблема в том, что не приходят сообщения в нужное время. Скорее всего неправильная логика.
class FakeChatNotifier { ref Timer m_Timer; ref Timer m_MessageTimer; bool m_IsActive; // Списки диалогов ref array<ref array<string>> m_WelcomeDialogs; ref array<ref array<string>> m_RegularDialogs; ref array<ref array<string>> m_ThreatDialogs; void FakeChatNotifier() { m_Timer = new Timer(); m_MessageTimer = new Timer(); m_IsActive = false; // Инициализация диалогов InitializeDialogs(); Print("[FakeChatNotifier] Initialized"); // Лог для проверки инициализации } void InitializeDialogs() { // Приветственные диалоги m_WelcomeDialogs = new array<ref array<string>>; m_WelcomeDialogs.Insert({"Hello!", "How are you?"}); m_WelcomeDialogs.Insert({"Anyone alive?", "Yes, I am here. What's new?"}); m_WelcomeDialogs.Insert({"What's the situation?", "It seems quiet, but stay sharp."}); // Обычные диалоги m_RegularDialogs = new array<ref array<string>>; m_RegularDialogs.Insert({"Check radio frequency 98.7", "Got it, I'll stay alert."}); m_RegularDialogs.Insert({"Never trust strangers", "Right, it's every man for himself here."}); m_RegularDialogs.Insert({"I saw someone near the old factory", "Thanks for the info, I'll check it out."}); // Угрозы m_ThreatDialogs = new array<ref array<string>>; m_ThreatDialogs.Insert({"We will find you...", "Try, but I won't give up."}); m_ThreatDialogs.Insert({"You won't escape", "I'm ready for this."}); m_ThreatDialogs.Insert({"Your loot will be ours", "You wish."}); } void Start() { if (!m_IsActive) { m_IsActive = true; m_Timer.Run(60, this, "CheckTime", NULL, true); // Запуск таймера на проверку каждые 60 секунд Print("[FakeChatNotifier] Started main timer"); // Лог для проверки запуска } } void Stop() { m_IsActive = false; m_Timer.Stop(); m_MessageTimer.Stop(); Print("[FakeChatNotifier] Stopped timers"); // Лог для проверки остановки } // Функция для получения текущего времени void GetCurrentHour(out int hour) { int year, month, day, minute; GetGame().GetWorld().GetDate(year, month, day, hour, minute); // Получаем текущий час из даты Print("[FakeChatNotifier] Current hour: " + hour); // Лог для проверки текущего времени } void CheckTime() { int hour; GetCurrentHour(hour); // Используем нашу функцию для получения текущего часа if (hour >= 22 || hour < 6) { if (!m_IsActive) { Print("[FakeChatNotifier] Night time detected, starting dialog cycle"); // Лог для ночного времени StartDialogCycle(hour); } } else { Print("[FakeChatNotifier] Day time, stopping dialogs"); // Лог для дневного времени Stop(); } } void StartDialogCycle(int hour) { if (!m_IsActive) return; array<string> dialog; if (hour >= 22 && hour < 23) { dialog = m_WelcomeDialogs.GetRandomElement(); // Приветственные диалоги Print("[FakeChatNotifier] Sending welcome dialog"); // Лог для приветственных диалогов } else if (hour >= 23 && hour < 3) { dialog = m_RegularDialogs.GetRandomElement(); // Обычные диалоги Print("[FakeChatNotifier] Sending regular dialog"); // Лог для обычных диалогов } else if (hour >= 3 && hour < 6) { dialog = m_ThreatDialogs.GetRandomElement(); // Угрозы Print("[FakeChatNotifier] Sending threat dialog"); // Лог для угроз } SendDialog(dialog); ScheduleNextDialog(); // Планирование следующего диалога } void ScheduleNextDialog() { int interval = Math.RandomIntInclusive(900, 1500); // Интервал (15-25 минут в секундах) m_MessageTimer.Run(interval, this, "StartDialogCycle", NULL, false); Print("[FakeChatNotifier] Scheduled next dialog in " + interval + " seconds"); // Лог для планирования следующего диалога } void SendDialog(array<string> dialog) { for (int i = 0; i < dialog.Count(); i++) { float delay = i * Math.RandomIntInclusive(5, 9); // Задержка между сообщениями в диалоге (5-9 секунд) m_MessageTimer.Run(delay, this, "SendMessageToPlayers", new Param1<string>(dialog[i]), false); Print("[FakeChatNotifier] Scheduled message with delay " + delay + " seconds: " + dialog[i]); // Лог для отправки сообщения } } void SendMessageToPlayers(Param1<string> param) { string message = param.param1; array<Man> players = new array<Man>; GetGame().GetPlayers(players); if (players.Count() > 0) { foreach (Man player : players) { Param1<string> globalMessage = new Param1<string>(message); GetGame().RPCSingleParam(player, ERPCs.RPC_USER_ACTION_MESSAGE, globalMessage, true, player.GetIdentity()); } Print("[FakeChatNotifier] Sent message to all players: " + message); // Лог для отправленного сообщения } else { Print("[FakeChatNotifier] No players online to send message: " + message); // Лог для случая, если нет игроков } } }
-
Автор: Troy1
Всем привет. Помогите пожалуйста со скриптом.
Суть. Я пытаюсь сделать синхранизацию сервера с клиентом передавая c конфига время разделки животного.
В родных скриптах есть class UATimeSpent с константами и там есть константа SKIN.
Мне нужно её перезаписать на своё значение и мне выдаёт ошибку: Trying to modify write protected variable 'SKIN' в переводе на Русский Попытка изменить защищенную от записи переменную «SKIN».
Функция скрипта: Когда игрок запускает клиент, идёт запрос на серверную часть и получает в ответ время разделки.
Задача: Нужно перезаписать константу SKIN на новое значение и всё.
Сам скрипт.
class timeToComplete extends UATimeSpent { protected ref UATimeSpent m_UATimeSpent; void timeToComplete() { GetDayZGame().Event_OnRPC.Insert(OnRPC); CheckUATimeSpent(); } void ~timeToComplete() { GetDayZGame().Event_OnRPC.Remove(OnRPC); } void CheckUATimeSpent() { GetGame().RPCSingleParam(NULL, SOC_TIME_RPCs.SOC_GT, NULL, true); } void OnRPC(PlayerIdentity sender, Object target, int rpc_type, ParamsReadContext ctx) { if (rpc_type == SOC_TIME_RPCs.SOC_RT) { Param1<float> soc_srt; if (ctx.Read(soc_srt)) { if (soc_srt.param1!= 0) { m_UATimeSpent.SKIN = soc_srt.param1; Print("Пришёл ответ от сервера в m_UATimeSpent.SKIN - " + m_UATimeSpent.SKIN) } } } } };
-
Наш выбор

Как привязать Server Uptime ко времени компа?
Чтобы после запуска сервера, прошедшее время исчислялось от заданного на компе.
Изменено пользователем SteelSoul (история изменений)Поделиться сообщением
Ссылка на сообщение
Поделиться на других сайтах