Настройка системы экономики для Bedrock сервера — различия между версиями

Материал из ARK-HOSTER.RU | Документация хостинга
Перейти к: навигация, поиск
(Новая страница: «= Настройка системы экономики для Bedrock сервера = == 1. Подготовка == * Убедитесь, что Bedrock сер…»)
 
(нет различий)

Текущая версия на 10:20, 3 ноября 2025

Настройка системы экономики для Bedrock сервера

1. Подготовка

  • Убедитесь, что Bedrock сервер установлен и работает.
  • Решите, какую систему экономики использовать (серверная/клиентская).
  • Для серверных решений потребуется дополнительное ПО.
  • Рекомендуется использовать Ubuntu 24.04 LTS или Windows Server.

2. Типы систем экономики

Клиентская экономика

1. Использует встроенные механики игры:

  • Торговля с жителями
  • Обмен между игроками
  • Хранение в сундуках

Серверная экономика

1. Требует дополнительных инструментов:

  • База данных (SQLite, MySQL)
  • Скрипты или плагины
  • API для интеграции

3. Простая клиентская система (Linux и Windows) =

Использование команд

1. Создайте систему через команды:

\# В консоли Bedrock сервера можно использовать команды для выдачи предметов
give PlayerName diamond 64
give PlayerName emerald 64

2. Создайте скрипт для автоматизации:

sudo nano /usr/local/bin/bedrock-economy-give.sh

3. Добавьте содержимое (Linux):

\#!/bin/bash

PLAYER="$1"
ITEM="$2"
AMOUNT="${3:-1}"

if [ -z "$PLAYER" ] || [ -z "$ITEM" ]; then
    echo "Usage: $0 <player> <item> [amount]"
    exit 1
fi

screen -S minecraft-bedrock -X stuff "give $PLAYER $ITEM $AMOUNT$(printf \\r)"
echo "Gave $AMOUNT $ITEM to $PLAYER"

4. Сделайте исполняемым:

sudo chmod +x /usr/local/bin/bedrock-economy-give.sh

Windows PowerShell скрипт

1. Создайте скрипт (Windows):

bedrock-economy-give.ps1

2. Добавьте содержимое:

param(
    [string]$Player,
    [string]$Item,
    [int]$Amount = 1
)

if (-not $Player -or -not $Item) {
    Write-Host "Usage: .\bedrock-economy-give.ps1 -Player <name> -Item <item> -Amount <number>"
    exit 1
}

\# Отправка команды в консоль Bedrock (зависит от способа запуска)
\# Используйте соответствующий метод для вашей установки

4. Серверная система на базе SQLite (Linux) =

Установка SQLite

1. Установите SQLite:

sudo apt update
sudo apt install -y sqlite3

2. Проверьте установку:

sqlite3 --version

Создание базы данных

1. Создайте базу данных:

cd /opt/bedrock
sqlite3 economy.db

2. Создайте таблицы:

CREATE TABLE players (
    xuid TEXT PRIMARY KEY,
    name TEXT NOT NULL,
    balance INTEGER DEFAULT 0,
    last_update DATETIME DEFAULT CURRENT_TIMESTAMP
);

CREATE TABLE transactions (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    from_xuid TEXT,
    to_xuid TEXT,
    amount INTEGER,
    item TEXT,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
    FOREIGN KEY (from_xuid) REFERENCES players(xuid),
    FOREIGN KEY (to_xuid) REFERENCES players(xuid)
);

.quit

Создание скрипта управления

1. Создайте скрипт:

sudo nano /usr/local/bin/bedrock-economy.sh

2. Добавьте содержимое:

\#!/bin/bash

DB_FILE="/opt/bedrock/economy.db"

function init_player() {
    local xuid="$1"
    local name="$2"
    
    sqlite3 "$DB_FILE" "INSERT OR IGNORE INTO players (xuid, name) VALUES ('$xuid', '$name');"
}

function get_balance() {
    local xuid="$1"
    sqlite3 "$DB_FILE" "SELECT balance FROM players WHERE xuid='$xuid';"
}

function add_balance() {
    local xuid="$1"
    local amount="$2"
    
    sqlite3 "$DB_FILE" "
        UPDATE players 
        SET balance = balance + $amount, 
            last_update = CURRENT_TIMESTAMP 
        WHERE xuid='$xuid';
    "
}

function transfer() {
    local from_xuid="$1"
    local to_xuid="$2"
    local amount="$3"
    
    \# Проверка баланса
    local balance=$(get_balance "$from_xuid")
    if [ "$balance" -lt "$amount" ]; then
        echo "Insufficient funds"
        return 1
    fi
    
    \# Перевод
    sqlite3 "$DB_FILE" "
        BEGIN TRANSACTION;
        UPDATE players SET balance = balance - $amount WHERE xuid='$from_xuid';
        UPDATE players SET balance = balance + $amount WHERE xuid='$to_xuid';
        INSERT INTO transactions (from_xuid, to_xuid, amount) 
        VALUES ('$from_xuid', '$to_xuid', $amount);
        COMMIT;
    "
}

\# Обработка команд
case "$1" in
    balance)
        get_balance "$2"
        ;;
    add)
        add_balance "$2" "$3"
        ;;
    transfer)
        transfer "$2" "$3" "$4"
        ;;
    *)
        echo "Usage: $0 {balance|add|transfer} [args]"
        exit 1
        ;;
esac

3. Сделайте исполняемым:

sudo chmod +x /usr/local/bin/bedrock-economy.sh

5. Интеграция с Bedrock сервером =

Web API для экономики (Linux)

1. Установите Node.js:

curl -fsSL https://deb.nodesource.com/setup_20.x | sudo -E bash -
sudo apt install -y nodejs

2. Создайте директорию:

sudo mkdir -p /opt/bedrock-economy-api
cd /opt/bedrock-economy-api

3. Инициализируйте проект:

sudo npm init -y
sudo npm install express sqlite3 body-parser

4. Создайте API сервер:

sudo nano app.js

5. Добавьте содержимое:

const express = require('express');
const sqlite3 = require('sqlite3').verbose();
const app = express();
const port = 3001;

app.use(express.json());

const db = new sqlite3.Database('/opt/bedrock/economy.db');

\# Получить баланс
app.get('/api/balance/:xuid', (req, res) => {
    const { xuid } = req.params;
    db.get('SELECT balance FROM players WHERE xuid = ?', [xuid], (err, row) => {
        if (err) {
            res.status(500).json({ error: err.message });
            return;
        }
        res.json({ balance: row ? row.balance : 0 });
    });
});

\# Добавить баланс
app.post('/api/add', (req, res) => {
    const { xuid, amount } = req.body;
    db.run('UPDATE players SET balance = balance + ? WHERE xuid = ?', 
        [amount, xuid], (err) => {
        if (err) {
            res.status(500).json({ error: err.message });
            return;
        }
        res.json({ success: true });
    });
});

\# Перевод
app.post('/api/transfer', (req, res) => {
    const { from, to, amount } = req.body;
    
    db.serialize(() => {
        db.run('BEGIN TRANSACTION');
        
        db.run('UPDATE players SET balance = balance - ? WHERE xuid = ?', 
            [amount, from], (err) => {
            if (err) {
                db.run('ROLLBACK');
                res.status(500).json({ error: err.message });
                return;
            }
            
            db.run('UPDATE players SET balance = balance + ? WHERE xuid = ?', 
                [amount, to], (err) => {
                if (err) {
                    db.run('ROLLBACK');
                    res.status(500).json({ error: err.message });
                    return;
                }
                
                db.run('COMMIT');
                res.json({ success: true });
            });
        });
    });
});

app.listen(port, () => {
    console.log(`Economy API running on port ${port}`);
});

6. Запустите API:

sudo node app.js

7. Создайте systemd сервис:

sudo nano /etc/systemd/system/bedrock-economy-api.service

8. Добавьте конфигурацию:

[Unit]
Description=Bedrock Economy API
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/opt/bedrock-economy-api
ExecStart=/usr/bin/node app.js
Restart=always

[Install]
WantedBy=multi-user.target

6. Windows версия системы =

Использование SQLite на Windows

1. Скачайте SQLite для Windows 2. Создайте базу данных:

sqlite3 economy.db

3. Используйте те же SQL команды, что и для Linux

PowerShell скрипты

1. Создайте скрипт управления:

bedrock-economy.ps1

2. Добавьте функции аналогичные Linux версии

7. Интеграция с командами сервера =

Автоматическая выдача при входе

1. Создайте скрипт:

sudo nano /usr/local/bin/bedrock-economy-startup.sh

2. Добавьте содержимое:

\#!/bin/bash

\# Мониторинг подключений и выдача стартового баланса
tail -f /opt/bedrock/logs/latest.log | while read line; do
    if echo "$line" | grep -qi "player.*connected"; then
        PLAYER=$(echo "$line" | grep -oE "\w+" | tail -1)
        
        \# Выдача стартового баланса
        screen -S minecraft-bedrock -X stuff "give $PLAYER emerald 10$(printf \\r)"
        
        \# Или запись в БД
        \# /usr/local/bin/bedrock-economy.sh add "$PLAYER_XUID" 100
    fi
done

8. Примеры использования =

Базовые операции

1. Проверить баланс:

/usr/local/bin/bedrock-economy.sh balance PLAYER_XUID

2. Добавить баланс:

/usr/local/bin/bedrock-economy.sh add PLAYER_XUID 100

3. Перевод между игроками:

/usr/local/bin/bedrock-economy.sh transfer FROM_XUID TO_XUID 50

Через API

1. Получить баланс:

curl http://localhost:3001/api/balance/PLAYER_XUID

2. Добавить баланс:

curl -X POST http://localhost:3001/api/add \
  -H "Content-Type: application/json" \
  -d '{"xuid":"PLAYER_XUID","amount":100}'

9. Безопасность =

Защита API

1. Добавьте аутентификацию в API 2. Используйте HTTPS для внешних подключений 3. Ограничьте доступ к API по IP

10. Устранение неполадок =

Проблемы с базой данных

1. Проверьте права доступа к файлу БД

2. Проверьте целостность БД:

sqlite3 economy.db "PRAGMA integrity_check;"

Проблемы с API

1. Проверьте логи:

sudo journalctl -u bedrock-economy-api -f

2. Проверьте порт:

sudo netstat -tlnp | grep 3001

Заключение

Настройка системы экономики для Bedrock сервера может быть реализована как простыми методами (команды), так и сложными (база данных + API). Выбор зависит от ваших потребностей и возможностей сервера.

Для размещения ваших Bedrock серверов с системой экономики на надежном хостинге рекомендуем воспользоваться услугами [ARK-HOSTER.RU](https://ark-hoster.ru):

Наши специалисты помогут с настройкой системы экономики на Bedrock серверах!