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
fedotovyasha

Передача данных сервера в сторонюю программу

Хочу сделать возможность передачи данных об каждом игроке в программу на c#. Есть ли возможность как-то завязаться на rcon или с помощью кастомного сокета?

 

Пока сделал часть с помощью текстового документа: сервер сохраняет данные в файл, а программа читает этот файл и получает необходимые данные, но это костыль, хотелось бы сделать нормально.

Edited by fedotovyasha (see edit history)

Share this post


Link to post
Share on other sites

8 answers to this question

Recommended Posts

  • 1

вариант 1 - тектовый файл, файл на json и т.п. на основе файлов

вариант 2 -  web-сервер или парсер на основе какого-нибудь node.js который бы анализировал get-post запросы сервера на определенный адрес и выдавал бы результаты, ну или просто получал бы данные.

Последнее можно в теории сделать в виде доп обвязки на свои системы, но как ни крути, надо изучать как написать хотя бы php страницу такую, читающую эти данные. В остальном все в ваших руках.

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

Share this post


Link to post
Share on other sites



  • 0
17.10.2023 в 20:06, 123new сказал:

вариант 1 - тектовый файл, файл на json и т.п. на основе файлов

вариант 2 -  web-сервер или парсер на основе какого-нибудь node.js который бы анализировал get-post запросы сервера на определенный адрес и выдавал бы результаты, ну или просто получал бы данные.

Последнее можно в теории сделать в виде доп обвязки на свои системы, но как ни крути, надо изучать как написать хотя бы php страницу такую, читающую эти данные. В остальном все в ваших руках.

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

 

А есть ли возможность поднять свой сокет на сервере? Видел, что rcon работает по такому протоколу.

Edited by fedotovyasha (see edit history)

Share this post


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

 

А есть ли возможность поднять свой сокет на сервере? Видел, что rcon работает по такому протоколу.

что поднять? Не понял от слова вообще. Rcon в данной игре работает по протоколу, обусловленному battleye античитом и исходным кодом игры, заданным его атворами. Что вы на нем пытаетесь сделать мне мягко говоря не ясно, но могу сказать одно - все что на нем может быть - весьма ограничено рамками комманд античита, обусловленных на его оф сайте battleye.com

Share this post


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

что поднять? Не понял от слова вообще. Rcon в данной игре работает по протоколу, обусловленному battleye античитом и исходным кодом игры, заданным его атворами. Что вы на нем пытаетесь сделать мне мягко говоря не ясно, но могу сказать одно - все что на нем может быть - весьма ограничено рамками комманд античита, обусловленных на его оф сайте battleye.com

 

Можно ли свой socket поднять на самом сервере, в файлике init.c. 

Share this post


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

 

Можно ли свой socket поднять на самом сервере, в файлике init.c. 

что есть socket?

Share this post


Link to post
Share on other sites
  • 0
2 часа назад, 123new сказал:

что есть socket?

TCP или UDP сокет, предназначенный для передачи данных между программами, не знаю, как еще проще написать

Share this post


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

TCP или UDP сокет, предназначенный для передачи данных между программами, не знаю, как еще проще написать

исключительно GET-POST запросы на web сервер по заранее прописанному в коде адресу, либо файлы. никаких сокетов вприципе не существует.

Share this post


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

исключительно GET-POST запросы на web сервер по заранее прописанному в коде адресу, либо файлы. никаких сокетов вприципе не существует.

окей, спасибо)

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

  • Similar Content

    • By magliner
      Привет ! Ну вот моя история с вопросом в конце.. Я фанат Дэйз ванилы черноруси, заколебало сидеть на бездушных серверах со слабой админкой и терять лут от софтеров, решил создать под свои скромные запросы около ванильный сервер.. Нашел хорошего исполнителя, быстро и четко запустили отладили и ВОТ я имею СВОЙ сервер.. клас! вечер восторга и изучения
      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.

      Пожалуйста, Войдите или Зарегистрируйтесь, чтобы увидеть это: Вложение.
    • 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.