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
Grizzly12345

Обработка данных Excel\Pivot\Python\Rcon

Posted (edited)

Привет!
Подключил обработку данных к Dayz

По шагам отрабатываются Python коды
1. Выключается сервер

2. Копируются

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

Edited by Grizzly12345 (see edit history)

Share this post


Link to post
Share on other sites

9 answers to this question

Recommended Posts

  • 0
6 часов назад, Grizzly12345 сказал:

Пример: 
Excel выгружает в текстовый файл на выбор: Имя игроков\ID\Uin 
Условие выгрузки - Если игрок не заходил на сервер больше  трех часов и вышел не около выданной точки респы

Нужно перенести игроков к точке респы или убить их - что бы появились на точке респы

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

6 часов назад, Grizzly12345 сказал:

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

Возможно нужно использовать не Rcon а  какой то другой способ....
Надеюсь на совет

уж не знаю от слова совсем ничего на питоне, но что-то мне подсказывает, что вам проще какой-то web-сервер поднять, и написать сервермод-обработчик ваших web-запросов-ответов по входящим с игры данным на web-сервер и считанному результату обращения, выполняющий то что вам надо. Как - изучайте Rest API в игре. Ну а на web тут уж без понятия, я не знаток этих языков, но думается мне php вам в помощь. Сможете ли завязать его на питон то лучше наверно гуглить под ситуацию.

Share this post


Link to post
Share on other sites



  • 0

Dart отправляет команды на сервер и находится не в игре
Вот подобного плана код подошел бы идеально, но он не работает:

import rcon

# Параметры RCON
rcon_host = "localhost"  # IP-адрес сервера DayZ
rcon_port = 2303  # порт сервера RCON
rcon_password = "password"  # пароль RCON

# Параметры игрока и нового места респавна
player_name = "PlayerName"  # имя игрока
new_respawn_pos = "1000 0 1000"  # новая позиция респавна

# Соединяемся с сервером RCON
rcon_client = rcon.Rcon((rcon_host, rcon_port), rcon_password)
rcon_client.connect()

# Переносим игрока на новую позицию с помощью команды #teleport
response = rcon_client("teleport %s %s" % (player_name, new_respawn_pos))

# Выполняем операцию респавна с помощью команды #spawn
response = rcon_client("spawn %s" % player_name)

# Закрываем соединение
rcon_client.disconnect()
 

Share this post


Link to post
Share on other sites
  • 0
Posted (edited)
8 минут назад, Grizzly12345 сказал:

Dart отправляет команды на сервер и находится не в игре
Вот подобного плана код подошел бы идеально, но он не работает:

import rcon

# Параметры RCON
rcon_host = "localhost"  # IP-адрес сервера DayZ
rcon_port = 2303  # порт сервера RCON
rcon_password = "password"  # пароль RCON

# Параметры игрока и нового места респавна
player_name = "PlayerName"  # имя игрока
new_respawn_pos = "1000 0 1000"  # новая позиция респавна

# Соединяемся с сервером RCON
rcon_client = rcon.Rcon((rcon_host, rcon_port), rcon_password)
rcon_client.connect()

# Переносим игрока на новую позицию с помощью команды #teleport
response = rcon_client("teleport %s %s" % (player_name, new_respawn_pos))

# Выполняем операцию респавна с помощью команды #spawn
response = rcon_client("spawn %s" % player_name)

# Закрываем соединение
rcon_client.disconnect()
 

как бы вы не хотели это, dart, как и любой другой RCON клиент, работает на battleye античите и его протоколах исполнения, и исключительно на коммандах, которые battleye поддерживает. Об этих коммандах можете сами ознакомиться на официальном сайте античита, это не секретная информация, а общедоступная. И Я могу вам с уверенностью в 1000 процентов сказать, что команду телепорта игрока, спавна предмета вы через RCON Battleye не отправите, поскольку данный протокол античита игры такой команды не знает. Через RCON Battleye вы можете лишь отправить сообщение кому-либо или всем, кикнуть, забанить, получить список игроков. И ничего иного.

Так что если вы хотите сделать что-то кроме названного выше через RCON - вам надо писать что-то свое. Стандартный протокол античита игры это не умеет.

 

Edited by 123new (see edit history)

Share this post


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

как бы вы не хотели это, dart, как и любой другой RCON клиент, работает на battleye античите и его протоколах исполнения, и исключительно на коммандах, которые battleye поддерживает. Об этих коммандах можете сами ознакомиться на официальном сайте античита, это не секретная информация, а общедоступная. И Я могу вам с уверенностью в 1000 процентов сказать, что команду телепорта игрока, спавна предмета вы через RCON Battleye не отправите, поскольку данный протокол античита игры такой команды не знает. Через RCON Battleye вы можете лишь отправить сообщение кому-либо или всем, кикнуть, забанить, получить список игроков. И ничего иного.

Так что если вы хотите сделать что-то кроме названного выше через RCON - вам надо писать что-то свое. Стандартный протокол античита игры это не умеет.

 

Возможно сделать вайп игрока, что бы данные о его местонахождении стерлись? 
В папке Profiles или еще где то, не заходя в игру

Share this post


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

Возможно сделать вайп игрока, что бы данные о его местонахождении стерлись? 
В папке Profiles или еще где то, не заходя в игру

база данных сервера - формат sqlite (почитайте в интернете что это) - хранится в mpmissions в storage. Конкретно база данных игроков - в файле players.db. Можно открыть его, найти в табличке players нужного игрока по его BIS ID и выставить alive 0 ему. Что-то иное с игроком не сделать т.к. все остальные данные игрока идут в серианизованном едином потоке бинарных данных, их ни поглядеть нормально, ни изменить никак.  А из-за формата базы данных и определенных ограничений на возможность записи параллельно с работой сервера могут возникать другие сложности (об этом читайте, как уже сказал, в сети, чисто с форматом связано).

Альтернативы нет,  только если писать свой серверный мод или взламывать систему central hive полноцйенной базы данных, о которой мы ничего не знаем, кроме того что она полноценная и хранится у авторов игры где-то на защищенном web сервере (т.е. прямо таки полноценная какая-то).

Share this post


Link to post
Share on other sites
  • 0

Вот код который делает вайп игроков, если они записаны в текстовом файле
В моем случае этот код переделываю, что бы вместо текстового файла использовалась колонка в базе Excel

import sqlite3
import os

# Путь к базе данных
db_path = "C:/gameservers/gs7403/players.db"

# Полный путь к файлу deleted.txt
deleted_path = os.path.join("C:/gameservers/gs7403", "deleted.txt")

# Считываем UID из файла в список
with open(deleted_path, "r") as f:
    uids = [line.strip() for line in f]

# Открываем соединение с базой данных
conn = sqlite3.connect(db_path)
cursor = conn.cursor()

# Удаляем записи с указанными UID из таблицы Players
for uid in uids:
    cursor.execute("DELETE FROM Players WHERE UID=?", (uid,))

# Фиксируем изменения в базе данных
conn.commit()

# Закрываем соединение с базой данных
conn.close()

Итого:
Обработка данных может раздать точки респы автоматически ( при входе в триггерную зону или при выполнении условия)

Обработка данных может сделать вайп игрока исходя из логики прописанной в excel ( точка респы у игрока при этом не удаляется, ее подгружает excel)

В моем случае работает так:
Точка респы для кепок на радио зенит ( там база на которую "вертолет" привозит выживших) 
В 8 крупных городах, при входе в церковь - меняется точка респавна - у церкви, и повязка на руку цвета города
Если игрок убивает другого игрока с той же повязкой что у него - точка респы обнуляется ( или другая логика которую можно представить)
При условии что игрок выходит из игры дальше "300" метров от точки респавна и не заходит в игру дольше трех часов - делается вайп при рестарте
 

Таким образом мы делим игроков на команды, а персонаж не может ждать игрока в лесу, пока тот не появится на сервере снова
Игра в режиме вышел из города - вернулся

 

Спасибо за советы



 

Share this post


Link to post
Share on other sites
  • 0

Следующие моды на пути к подключению:
Trader plus
 

За монету приобрел мод который отправляет на ПК игрока текстовый файл который можно заполнять и возвращает обратно ( напишу программу меню на файл или меню прямо в игре)
Excel загружает выбор игрока


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


Таким образом потребление товаров будет большое, что бы разгрузить FPS и не напрягать игроков постоянным переносом товара в инвентарь - объединил товары по типам производства в оптовые ящики
В одном ящике сразу несколько однотипных товаров которые являются сырьем и производятся одинаковым способом
Ищу способ сделать распаковывающиеся ящики согласно списку, как в этом моде (https://steamcommunity.com/sharedfiles/filedetails/?id=2883656045&searchtext=сухпай)
На основе данного перечня оптовых товаров будет основана экономика городов, пока игрок не в игре - персонаж работает на выбранном месте работы (покупая лицензию на работу у трейдера)
Загрузить товары с производства в грузовик можно будет очень быстро, а при взломе трейдера - товары выпадут с помощью Trigger spawn и не перегрузят FPS
Буду рад любым советам или  предложениям
По результату отпишусь


image.png.db86ccb0e5dd59b26d186b12c6d643ae.png

Share this post


Link to post
Share on other sites
  • 0

@Grizzly12345 

3 часа назад, Grizzly12345 сказал:

распаковывающиеся ящики согласно списку


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

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

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