Итак, моя проблема была в том, чтобы хранить статистику игрока (к примеру деньги, уровень, ID дома и прочее) на сервере, чтобы можно было в любой момент изменить её (прямо с сайта или даже если игрок оффлайн и сервер выключен).
- Capabilities — Оно основывается на хранении любых NBT значений в Entity, будь то игрок, корова или даже вагонетка, но данный способ мне не подходил, так как здесь возникает проблема изменения значений когда игрок оффлайн.
- WorldSavedData — Сохраняет значения в папке с миром. Не подходил данный метод из-за того, что изменение значений невозможно, когда сервер выключен, и к тому же для массивного хранения данных это так же не подходило.
- База данных SQLite — После размышлений над вторым вариантом, мне пришло в голову это. Идеальное решение для какого-либо проекта.
Спойлер: Спойлер
Модель Клиент-Сервер мы уже знаем — они обмениваются пакетами данных, к примеру обновление статистики. О синхронизации мы можете почитать, в учебнике есть статья.
КАК ЛЕГКО СОЗДАТЬ Базу Данных для Minecraft | Mysql & Mariadb Tutorial/Overview
А вот Сервер выполняет запросы на Базу данных SQLite.
Если немного не понятно о чем идет речь, вот как устроена база данных:
- id — уникальный ключ, используется почти в каждой базе данных
- name — имя игрока
- money — деньги
- Остальные поля, которые вы можете добавлять и изменять как вам угодно
- База данных SQLite (может быть размещена где угодно, хоть у Вас на компьютере, хоть возьмите сайт https://www.freemysqlhosting.net/. Там можно бесплатно поставить одну базу данных до 5 мб в размерах.
- Java IDE с установленным драйвером JDBC (ниже я рассказываю как это сделать).
Спойлер: Спойлер
Так как моды собираются на билдере Gradle, то изменить настройки его нам и понадобится.
В корне нашего проекта находим чудесный файл build.gradle.
Находим строку buildscript и в нем по иерархии будет dependencies.
Добавляем в dependencies такую строчку
classpath ‘mysql:mysql-connector-java:5.1.44’
Источник: forum.mcmodding.ru
Что такое MySQL и зачем его использовать серверу CS1.6?
Если Вы видите такие термины как: MySQL, SQL, база данных, БД, database, DB, таблица, СУБД, то знайте, речь идет о БАЗЕ ДАННЫХ!
Конечно все это немного разные вещи, но если Вы в этом не разбираетесь, то не забивайте себе голову, в конце статьи расскажем кому интересно.
База Данных, как Вы уже могли догадаться, это ящик с информацией. В этот ящик информацию можно положить, удалить или найти. Любой сайт использует сервер для хранения данных, будь то список юзеров, комментарии посетителей, или счетчик посещений.
MYSQL (базы данных). Для чего нужны, как создавать и использовать?
Но мы используем Базу Данных для сервера кс1.6. Для чего?
Например для статистики игроков, или список банов, админки и пароли тоже храним в базе.
Так почему бы не хранить все эти данные на сервере в файлах? Зачем нам какой то SQL?
Все очень просто!
Чтобы серверу получить необходимую информацию из файла, нужно прочитать сначала 1-ую строку, посмотреть есть в ней то что нужно, если нет то, 2-ую и тд, пока не найдет то что нужно.
MySQL же работает так: друг, я знаю где это лежит! Держи!
Круто да? Почему MySQL такая быстрая штука? Правильней сказать, что база данных это не ящик, а таблица. Смотрите как выглядит например статистика игроков:
Или вот так выглядит хранение банов:
Плагин посылает запрос в базу, типа: проверь, есть ли игрок со стим айди STEAM_0:0_123456789 в таблице `amx_bans` с не истекшим сроком бана
MySQL говорит: да, есть, вот такая причина бана и истечет срок через 10 дней. Плагин в свою очередь не пускает игрока на сервер.
Все данные в каждой колонке таблицы имеет свой тип: INT целое число, varchar текст, есть еще BOOL, FLOAT и куча других типов, их значения занимают мало места, благодаря «индексам» таблица сортируется и еще тонна всяких штук, благодаря которым из миллиона строк в таблице с банами, mysql найдет игрока меньше чем за секунду.
В файлах, на сервере кс, обычно хранят мало информации, потому что сервак просто зависнет если это будет не так. Помните да, что csstats.dat может очиститься и статистика игроков обнулится, этого не произойдет если использовать CsStats MySQL!
А где лежат эти таблицы MySQL?
MySQL это типа программа, запущенная на компе. Это такой же сервер как и Counter-Strike. Все популярные хостинги предоставляют своим клиентам доступ к Базе Данных.
Как подключиться к MySQL?
Разберем какие данные нужны для подключения сервера кс1.6 к mysql
- IP сервера MySQL — это IP адрес на котором находится MySQL. Он может быть буквенный(mysql.hosting.ru) или цифровой(12.34.56.78)
- DataBase — это имя базы данных, в которой будут находиться таблицы со статистикой игроков, банами и прочим
- User — имя пользователя, который имеет доступ к базе данных DataBase и вносить в ее таблицы изменения и и тп
- Пароль — пароль, чтобы никто кроме вас и вашего сервера не имел доступ
Эти данные вводите например в конфиг csstats_mysql.cfg, при первом включении плагин создает таблицу под названием csstats_players в базе данных DataBase. И потом уже добавляет в нее игроков.
Брать эти данные нужно у хостера! Поищите их где ни будь в панели, или напишите хостеру в поддержку
Связь сервера и сайта через MySQL
Тут не совсем связь, сервер пишет статистику в MySQL, а сайт берет информацию из MySQL и показывает ее пользователю в красивом оформлении.
Просто сайт своими средствами не может получить доступ, например к csstats.dat, но легко может получить доступ к БД
Как посмотреть/изменить/удалить данные в базе?
Для этих целей есть инструмент под названием PhpMyAdmin.
Его предоставляет так же хостинг. Это веб панелька, заходите на нее через обычный браузер, вводите логин и пароль от базы данных и там увидите примерно следующее:
Тут можно создавать, удалять, очищать, обновлять и все все все.
Что такое SQL запросы?
Чтобы добавить/изменить/удалить или просмотреть запись в таблице, нужна сказать mysql чего мы хотим, человеческий язык он конечно не понимает, но понимает SQL запросы.
Чтобы добавить нового игрока в статистику игроков csstats_mysql, плагин посылает запрос:
INSERT INTO `csstats_players` (`nick`,`authid`,`ip`,`frags`,`deaths`) VALUES (‘Player’, ‘STEAM_0:0:123456789’, ‘123.123.123.123’, ’10’, ‘2’)
Чтобы показать статистику игрока плагин шлет:
SELECT `nick`,`authid`,`ip`,`frags`,`deaths` FROM `csstats_players` WHERE `authid`=’STEAM_0:0:123456789′ LIMIT 1
Это просто небольшие примеры SQL запросов, подробнее можете почитать в интернете.
Вы можете тоже слать SQL запросы в phpmyadmin, но вряд ли они Вам понадобятся, просто знайте 😉
Термины
• База Данных, БД, DataBase, DB — это все сама база данных, в ней хранится информация
• SQL — язык управления базами данных. То есть это и есть SQL запросы, которыми можно вносить изменения в базах
• СУБД — Система Управления Базами Данных. То есть это программа(сервер), которая управляет базами данных, принимает SQL запросы и тд. Есть много разных СУБД: SQLite, PostgreSQL, MySQL и другие. Самая популярная из них это MySQL
• MySQL — это СУБД, смотрите выше.
Старался писать простым, чтобы новички поняли суть. Более подробно можете почитать в интернете, информации на эту тему там много.
Ошибки MySQL, что они означают и как с ними бороться
Самая популярная ошибка, она говорит: Нет доступа для пользователя «user» в базе данных с адресом localhost(тут может писаться и айпи)
Может быть 3 причины:
1) Не верный логин или пароль. Проверьте внимательней, не вписали ли Вы случайно лишний символ, например пробел и пр.
2) Не включен удаленный доступ. В целях безопасности, нельзя подключатся к БД удаленно.
Т.е. если БД и кс сервер стоит на одном компе, то адресом Базы будет localhost или 127.0.0.1. В этом случае все будет работать из коробки.
Но если сервер КС стоит на одном хостинге например, а БД на другом, то нужно разрешить для пользователя «user» удаленное подключение к БД. В ispmanager это делается так:
3) Возможно Вы указали не верный адрес БД
4) Все! Другого не дано! Только эти 3 пункта.
Плагин не может соединиться с сервером MySQL по этому адресу. Либо указан не верный сервер, либо этот сервер сломался и не запущен. Во втором случае, нужно писать в поддержку хостинга.
Или ‘reading initial communication packet’ и другие, означают неполадки с базой данных. Писать в ТП хостинга!
Не создана таблица в базе. Обычно такую ошибку можно увидеть в AMXBans, просто сначала нужно установить Веб часть, при ее установке создадутся все необходимые таблицы. И обязательно указать те же данные к БД на сервере, что указаны на сайте!
Не корректная таблица с именем ». То есть имя таблицы не указано. Внимательней смотрите настройки, сохраняйте все файлы в кодировке UTF8 без БОМ!
Говорит что колонка ‘place’ не имеет значения по умолчанию. Раньше ошибка встречалась в плагине CsStats MySQL. Решение — обновить плагин, удалить старые таблицы, новый плагин создаст новые таблицы, где укажет этому полю значение по умолчанию.
Слишком много соединений было сделано на сервер БД. Такое бывает, если какой ни будь плагин не закрывает старое соединение с базой, и в последствии накапливается много соединений и БД начинает ругаться. В любом случае, обратитесь в ТП хостинга, им виднее по логам когда и какие соединения были сделаны.
Скорее всего сервер долго не отвечал на запрос, и выбил ошибку таймаута. Это конечно явления не нормальное, опять же напишите в ТП хостинга, возможно происходит ддос или другие проблемы.
Источник: fungun.net
Слив MySQL Player Data Bridge 3.35.0
Ресурс был слит и доступен для скачивания без подписки
Плагин bukkit / spigot для обмена данными игроков между серверами. Вы можете обмениваться такими данными, как: счета экономики, инвентарь и броня, Enderchest, эффекты зелья, опыт, уровни здоровья и еды, игровой режим и местоположение. Со временем будет добавлено больше данных для синхронизации. Если у вас есть запрос, опубликуйте его в дискуссионном форуме.
Вы хотите сохранить данные Essentials в базе данных MySQL? Или синхронизировать данные Essentials между серверами?
Тогда подумайте о том, чтобы проверить мой другой плагин:
- Поддержка Premium UUID и Offline UUID для Spigot 1.7.5 до последней версии.
- Без поддержки UUID для 1.6.4 и 1.7.2.
- Работает на серверах Cauldron / KCauldron / Thermos 1.7.10 .
- Работает на серверах MCPC Plus 1.6.4 .
- Только база данных MySQL .
- Делитесь данными игроков на серверах , читайте ниже, чтобы узнать, что они могут синхронизировать.
- Все можно настроить с помощью файла конфигурации плагина.
- Поддерживает любую экономичную систему, которая работает с Vault.
- Поддержка команд Essentials Economy Eco .
- Поддержка плагина ChestShop для офлайн-продаж / заказов на покупку. (Только для серверов, совместимых с UUID).
- Поддержка плагинов QuickShop или QuickShop Reremake для офлайн-продаж. (Только для серверов, совместимых с UUID).
- Поддержка плагина Shop для офлайн-продаж / заказов на покупку. (Только для серверов, совместимых с UUID).
- Поддержка плагина AuctionHouse для офлайн-аукционов. (Только для серверов, совместимых с UUID).
- Поддержка плагина CrazyAuctions для офлайн-аукционов. (Только для серверов, совместимых с UUID. Требуется специальная версия плагина. Скачать здесь ).
- Поддержка плагина zAuctionHouse для офлайн-аукционов. (Только для серверов, совместимых с UUID).
- Поддержка плагина ShopChest для заказов на продажу / покупку. (Только для серверов, совместимых с UUID).
- Поддержка плагина PlayerShopGUI + для офлайн-продаж. (Только для серверов, совместимых с UUID).
- Поддержка плагина CMI для офлайн-изменения баланса. (Только для серверов, совместимых с UUID).
- Поддержка плагинов боевых тегов.
- Поддержка настраиваемых уровней здоровья.
- Поддержка плагинов MobArena , DungeonsXLи Parkour,чтобы не сохранять неправильные данные.
- Полное сохранение данных NBT . Полная поддержка модифицированных предметов.
- Варианты обслуживания базы данных для удаления неактивных игроков.
- Закодировано для использования как можно меньше ресурсов, и почти все работает асинхронно от основного потока сервера, чтобы предотвратить любые задержки сервера / tps.
- Команды для перезагрузки конфигурации, импорта данных и многого другого.
- Может удалять папки и файлы при выключении или перезапуске сервера. Например, с помощью этого плагина вы можете удалить папку PlayerData, поскольку данные хранятся в MySQL.
- Настраиваемые команды для новых игроков после завершения синхронизации.
- API доступен с событиями, поэтому вы можете интегрировать с ним свои плагины.
Что можно синхронизировать?
Вы можете делиться любыми данными, хранящимися в файле player.dat, а также делиться счетами экономики игроков.
Инвентарь и броня
игроков. Вы можете делиться чем угодно внутри инвентаря и панели быстрого доступа игроков. Кроме того, поскольку экипированная броня является частью инвентаря игрока, вы также можете поделиться броней. Выбранный слот панели быстрого доступа также будет доступен, если включена синхронизация инвентаря.
Игровой режим
Вы можете поделиться игровым режимом игроков на разных серверах. (Выживание; Творчество; Приключения и Наблюдение)
Игроки Enderchest
Вы также можете поделиться всем, что хранится внутри Enderchests.
Очки опыта игроков и уровни
Вы можете поделиться опытом игроков.
Игроки активные эффекты зелья
Любым активным эффектом зелья можно поделиться.
Уровень
здоровья игроков Здоровье можно разделить, даже если оно нестандартного размера.
Уровень
еды и насыщения игроков Уровни еды и насыщения тоже можно разделить.
Уровень игроков в воздухе
Поскольку уровни в воздухе также хранятся в файле player.dat, вы также можете поделиться им при необходимости.
Расположение игроков
Синхронизируйте расположение игроков на серверах. Это может быть очень полезно на зеркальных серверах. Он синхронизирует местоположение мира, координаты XYZ, рыскание и наклон для точного направления взгляда. Вы также можете синхронизировать местоположение спавна игроков.
Расположение спавна игроков в постели Синхронизация места спавна игроков. Он синхронизирует местоположение мира, координаты XYZ, рыскание и наклон для точного направления взгляда.
Счета экономики (денег) игроков. Они не хранятся в файле player.dat, но обмен деньгами игроков очень необходим. Он поддерживает любую экономичную систему, совместимую с Vault, поэтому вам даже не нужно иметь один и тот же плагин экономии на всех серверах, на которых вы будете передавать данные игроков.
- База данных MySQL
- (Необязательно) Vault — Скачать
- (Необязательно) Любая экономическая система, совместимая с Сейфом — (требуется только для совместного использования экономических счетов)
- (Необязательно) ProtocolLib — Загрузить
- Поместите плагин в папку плагинов сервера и убедитесь, что у вас есть все зависимости.
- Запустите сервер для создания конфигурации, затем остановите сервер.
- Откройте конфигурацию и настройте детали подключения к базе данных и настройте плагин. Вам нужно создать базу данных, тогда плагин сам создаст таблицы.
- Запустите сервер. Готово, наслаждайтесь. Данные вашего игрока будут доступны на любом количестве серверов.
Команды:
/mpdb и /mpdb help — отображение справочной информации.
/mpdb reload — MPDB.admin — перезагрузить конфигурацию плагина.
/mpdb saveAndKick — MPDB.admin — удалить всех игроков и сохранить их данные.
/mpdb importData — MPDB.admin — Импортировать существующие данные игрока в базу данных, пропустить пользователей, которые уже находятся в базе данных. Он будет импортировать данные модулей, включенных в config.
/mpdb importData — MPDB.admin — будет импортировать данные только для указанного проигрывателя, если проигрыватель уже предустановлен в базе данных, перезапишет.
/mpdb delete — MPDB.admin — Удалить игрока из базы данных.
/mpdb inv — MPDB. moderator — открытие и редактирование инвентаря игрока.
/mpdb armor — MPDB.moderator — Просмотр и редактирование брони игрока.
/mpdb end — MPDB.cmd.enderchest — Откройте ваш enderchest командой.
/mpdb end — MPDB.moderator — Просмотр и редактирование сундука крайнего игрока.
/mpdb ecoBal — MPDB.moderator — просмотр баланса игрока.
/mpdb ecoSet — MPDB.moderator — Изменить баланс игрока.
/mpdb ecoAdd — MPDB.moderator — Добавить деньги на баланс игрока.
/mpdb ecoTake — MPDB.moderator — Убрать деньги с баланса игрока.
/mpdb getXp — MPDB.moderator — Просмотр опыта и уровня игрока.
/mpdb setXp — MPDB.moderator — Установить xp или уровень игрока.
/mpdb addXp — MPDB.
* Замените именем игрока.
* Замените новым балансом.
* Замените количеством xp или уровнями, чтобы добавить или установить уровни, просто добавьте l после числа, например: 5l, работает так же, как система Essentials xp. Вы также можете добавить отрицательные числа, чтобы удалить опыт или уровни.
Автор VanyaGaming Скачивания 332 Просмотры 2,519 Первый выпуск 26 Янв 2021 Обновление 26 Янв 2021 Оценка 0.00 звёзд 0 оценок
Источник: forum-minecraft.ru