LimboCrates - ящики (кейсы) в стиле Limbo Keys

LimboCrates

и т. д.

Всё это называется Final Part из Limbo - Geometry Dash, также известный как Limbo Keys.

Данный плагин основан на данной фишке уровня.

Видео с обзором плагина

(Запись был ещё в момент, когда плагин находился на стадии разработки)

Особенности

  • Сохранение ключей для открытия ящиков хранится в БД, которую можно настроить в config.yml.
  • Возвращение ключа игроку, если при открытии ящика произошли непредвиденные обстоятельства (сервер выключился, игрок вышел с сервера, так и не закончив открытие и т. д.).
  • Создание неограниченного количества ящиков разных типов с отдельными наградами.
  • Выполнение команд (наград) от имени консоли, тем самым плагин не требует интеграции с другими плагинами.
  • Создание летающих текстов (см. Зависимости).

Команды

Команда Пермишен Описание
addkeys <player: str> <value: int> limbo.crates.addkeys Дать нужному игроку определенное кол-во ключей
takekeys <player: str> <value: int> limbo.crates.takekeys “Отжать” у нужного игрока определенное кол-во ключей
mykeys limbo.crates.mykeys (default) Команда чтобы посмотреть кол-во имеющихся ключей
createcrate <name: str> limbo.crates.createcrate Перейти в состояние создания ящика. Повторное использование команды чтобы выйти из состояния создания ящика
deletecrate <name: str> limbo.crates.deletecrate Удалить нужный ящик

Для разработчиков

// Пример работы с ключами игрока

/** @var \Taskov1ch\LimboCrates\keys\Keys */
$keys = Server::getInstance()->getPlugin("LimboCrates")->getKeysManager();

/** @var string */
$name = $player->getName();


// Добавить ключей
$keys->addKeys($name, 999);

// "Отжать" ключи
$keys->takeKeys($name, 999);

// Получить кол-во ключей (Promise)
$keys->getKeys($name)->onCompletion(
	fn (int $keys) => var_dump($keys),
	fn () => var_dump("?")
);
// Пример работы с ящиками

/** @var \Taskov1ch\LimboCrates\crates\Crates */
$crates = Server::getInstance()->getPlugin("LimboCrates")->getCratesManager();


// Регистрация ящика
$crates->registerCrate(
	"example",
	new Position(0, 4, 0, $world),
	"Example Crate",
	[
		[
			"name" => "Example Reward",
			"chance" => 50,
			"commands" => ["give {player} diamond 64"]
		],
		[
			"name" => "Example Reward 2",
			"chance" => 50,
			"commands" => ["give {player} grass 64"]
		]
	]
);

// Удаление ящика
$crates->unregisterCrate("example");

Зависимости

  • Плагин: WFT
  • Вирион: (библиотека): libasynql

Баги и недоработки

Во время тестирования ошибок не замечено, а те, что были обнаружены, исправлены. Однако ISSUES всегда открыт.

Упс?

Плагин писал расслабляясь, так что гкод как всегда гарантирован (да?)
shrug-smug

Ссылки

Плагин

GitHub | Poggit CI | PHAR | ZIP | GitHub Release

Ресурс пак

GitHub | ZIP | GitHub Release

1 лайк

Госпади меня упаси, либу прям в плагине использовать, жесть

Именно так и работает pmmp5

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

он прав) не суй либы прямо в плагины

Я пытался, но что-то постоянно ломалось

а что там сложного то?:slight_smile:

Создаёшь папку libry и туда заносишь все что нужно и по идеи use должны работать и с этой папкой(лично не тестил)

https://apidoc.pmmp.io/df/d2b/classpocketmine_1_1thread_1_1_thread_safe_class_loader.html#a91979c83903e8d2207c21fff8db093e2

А я тестил, и работает так не на все вирионы

UPD: так же после такой махинации, поггит не пропустил бы плагин, а если пропустил бы, были бы проблемы в других местах

Ну я тестил у меня нормально)

Так ты тестил или не тестил?

Потестил, только у меня не 5 api, а так да вчера потестил

ай сау.

Он хоть на какое ядро

Подсказка 1: Ему требуется плагин WFT
Подсказка 2: Ему требуется библиотека libasyncql
Подсказка 3: На видео изображено интерфейс
Подсказка 4: Плагин опубликован на Poggit
Подсказка 5: plugin.yml имеется в GitHub