Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
  • Need help?

    Create a topic in the appropriate section
    Don't write everything in the chat!
  • Take a look at the marketplace

    There you can buy
    everything related to game servers
  • Don't want a ban?

    Please read our rules
    Don't disturb the order!
  • Sell or buy?

    Use services of the guarantor
    We will make your deal safe
  • 0
Sign in to follow this  
Troy1

Запрет на строительство на всей карте.

Всем привет. Подскжите ну или помогите пожалуйста решить вопрос.

Вопрос звучит так. Нужно сделать так, что бы на всей карте был запрет на строительство. 
Если нужно построить например базу с палатками, то нужно установить верстак или флаг, который установит зону для строительства с радиусом примерно 20-25 метров от центра и желательно что бы зона была квадратной.
Есть такие решения у кого?

За ранние благодарю.

Edited by Troy1 (see edit history)

Share this post


Link to post
Share on other sites

11 answers to this question

Recommended Posts




  • 0
2 часа назад, Maksim213ds сказал:

Тоже интересна эта тема


Попробуй этот мод) Поставь точку в центре карты и сделай радиус на всю карту, по идеи должно сработать, быть может даже без артефактов.
 

 

Share this post


Link to post
Share on other sites
  • 0

@_PIONER Не совсем то, что нужно.
Если сделать как ты описал выше, то мне придётся, каждого игрока кто хочет построить базу, прописывать точки зоны и вписывать стим айди игроков ручками.
Проще присвоить класс нейм предмета и при установке игроком данного предмета, автоматом создаётся зона с радиусом и этот игрок так же сразу будет вписан в эту зону.
Так проще думаю будет, а этот мод что ты предложил мне, использовать на запрет стройки по всей карте и всё.
Теперь самое главное!
Как это реалезовать? 
Я именно с этим вопросом сюда пришёл)))

Share this post


Link to post
Share on other sites
  • 0
17.07.2024 в 14:53, Troy1 сказал:

@_PIONER Не совсем то, что нужно.
Если сделать как ты описал выше, то мне придётся, каждого игрока кто хочет построить базу, прописывать точки зоны и вписывать стим айди игроков ручками.
Проще присвоить класс нейм предмета и при установке игроком данного предмета, автоматом создаётся зона с радиусом и этот игрок так же сразу будет вписан в эту зону.
Так проще думаю будет, а этот мод что ты предложил мне, использовать на запрет стройки по всей карте и всё.
Теперь самое главное!
Как это реалезовать? 
Я именно с этим вопросом сюда пришёл)))


А в чём тогда фишка, если так и так игроки будут строиться....

Share this post


Link to post
Share on other sites
  • 0
17.07.2024 в 14:53, Troy1 сказал:

@_PIONER Не совсем то, что нужно.
Если сделать как ты описал выше, то мне придётся, каждого игрока кто хочет построить базу, прописывать точки зоны и вписывать стим айди игроков ручками.
Проще присвоить класс нейм предмета и при установке игроком данного предмета, автоматом создаётся зона с радиусом и этот игрок так же сразу будет вписан в эту зону.
Так проще думаю будет, а этот мод что ты предложил мне, использовать на запрет стройки по всей карте и всё.
Теперь самое главное!
Как это реалезовать? 
Я именно с этим вопросом сюда пришёл)))


А в чём тогда фишка, если так и так игроки будут строиться....

Вспомнилось, есть мод ну он чисто разрешает везде строить, но нужен что то типа флагшток, ставишь его и он показывает можно строиться или нет, но там одно условие - расстояние от другого флагштока (базы), может этот мод тебе подойдёт? 

Share this post


Link to post
Share on other sites
  • 0

Где-то так… Создаем массив зон на стороне сервера, при постановке «маяка», разрешающего строительство, добавляем зону в массив.. Перегружаем метод проверки возможности строительства и на стороне клиента и на стороне сервера: клиент при проверке посылает запрос на сервер, сервер проверяет находится ли точка строительства в одной из зон и возвращает boolean клиенту..

Share this post


Link to post
Share on other sites
  • 0
1 час назад, elanc сказал:

Где-то так… Создаем массив зон на стороне сервера, при постановке «маяка», разрешающего строительство, добавляем зону в массив.. Перегружаем метод проверки возможности строительства и на стороне клиента и на стороне сервера: клиент при проверке посылает запрос на сервер, сервер проверяет находится ли точка строительства в одной из зон и возвращает boolean клиенту..

Гений лять, где ты раньше был... Теперь то у него всё получится!🤣

 

Share this post


Link to post
Share on other sites
  • 0
7 минут назад, _PIONER сказал:

Гений лять, где ты раньше был... Теперь то у него всё получится!🤣

 

Злой вы.. я вот только вернулся в это болото, но уже хочу убежать обратно.. 😭

пусть человек развивается, думает.. базовую логику я ему описал.. раньше бы я даже на коленке пример кода набросал, но сейчас уже так не могу сходу.. 😃

Share this post


Link to post
Share on other sites
  • 0
1 час назад, elanc сказал:

Злой вы.. я вот только вернулся в это болото, но уже хочу убежать обратно.. 😭

пусть человек развивается, думает.. базовую логику я ему описал.. раньше бы я даже на коленке пример кода набросал, но сейчас уже так не могу сходу.. 😃


Не злой, а реалист. Ты посмотри как вопрос описан... Явно человек в этом вопросе где то на стадии идеи, а не создании кода... 🙄
Тут либо подсказать что-то на переделку, либо подсказать кто сделает платно 😁

Share this post


Link to post
Share on other sites
  • 0

ИМХО......проще найти мод на запрет строительства рядом с базой. И даже в случае реализации предложенной топикстартером идеи строить сможет  только один игрок. Подключение фракций вызовет дополнительную попалось. Простейшеерешение это запрет на строительство в определённых зонах.

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 -Reks-
      Продам сервер по DayZ/ Есть 
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • By SemKa1407
      Ссылка на архив: https://disk.yandex.ru/d/WmYW5AcZozGSiA
      Инструкция, написанная на коленке, есть в архиве (для полных нулей).
    • By 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); // Лог для случая, если нет игроков } } }  
  • Our picks

×
×
  • 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.