MineDeepRock / team_game_system

https://github.com/suinua/game_chef
1 stars 0 forks source link

TeamGameSystem

2チーム以上のPVPゲーム作成を補助するプラグインです。

サンプル

Qiitaの記事
チームデスマッチ

マップの設定

コマンド/mapで出てくるフォームで操作します。

API

GameはIDとTYPEを持っています。
IDはそれぞれユニークな物で、API側で指定します。
TYPEは重複しても大丈夫な物で、ユーザーが指定します。
TYPEは複数種類のゲームモード(チーデス、ドミネーション)を作るときに役立ちます。

GameTypeListなどのクラスを作り管理することを推奨します。

Mapに関するAPI

マップを選択

use pocketmine\utils\TextFormat;use team_game_system\TeamGameSystem;
use team_game_system\model\Team;

$teams = [
    Team::asNew("RED",TextFormat::RED),
    Team::asNew("Blue",TextFormat::BLUE),
];

$map = TeamGameSystem::selectMap("map_name", $teams);

ゲームを操作するAPI

ゲームを作成

use pocketmine\utils\TextFormat;
use team_game_system\model\Game;
use team_game_system\model\GameType
use team_game_system\model\Team;

$teams = [
    Team::asNew("RED",TextFormat::RED),
    Team::asNew("Blue",TextFormat::BLUE),
];

$game = Game::asNew(new GameType("TDM", $map, $teams));

//↓設定しなくてもOK
$game->setMaxPlayersCount(30);//試合に参加できる最大人数
$game->setMaxPlayersDifference(1);//チーム間の人数差制限
$game->setMaxScore(50);//勝利判定スコア
$game->setTimeLimit(600);//時間制限(秒)

ゲームを登録

use team_game_system\TeamGameSystem;

TeamGameSystem::registerGame($game);

ゲームをスタート

use team_game_system\TeamGameSystem;

TeamGameSystem::startGame($scheduler, $gameId);

ゲームを終了

use team_game_system\TeamGameSystem;

TeamGameSystem::finishedGame($gameId);

ゲームデータを取得するAPI

すべてのゲームを取得

use team_game_system\TeamGameSystem;

TeamGameSystem::getAllGames();

IDからゲームを取得

use team_game_system\TeamGameSystem;

TeamGameSystem::getGame($gameId);

TYPEからゲームを取得

use team_game_system\model\GameType;
use team_game_system\TeamGameSystem;

TeamGameSystem::findGamesByType(new GameType("TDM"));

チームを取得

use team_game_system\model\GameType;
use team_game_system\TeamGameSystem;

TeamGameSystem::getTeam($gameId, $teamId);

プレイヤーに関するAPI

ゲームに参加

use team_game_system\TeamGameSystem;

TeamGameSystem::joinGame($plyaer, $gameId);

チームを移動

use team_game_system\TeamGameSystem;

TeamGameSystem::joinGame($plyaer, $gameId);

ゲームから抜ける

use team_game_system\TeamGameSystem;

TeamGameSystem::quitGame($plyaer);

試合に関するAPI

スコアを追加

use team_game_system\model\Score;
use team_game_system\TeamGameSystem;

TeamGameSystem::addScore($gameId,$teamId,new Score(1));

マップに登録されたスポーン地点を、ランダムにセット

use team_game_system\TeamGameSystem;

TeamGameSystem::setSpawnPoint($player);

プレイヤーデータに関するAPI

名前からプレイヤーデータを取得

use team_game_system\TeamGameSystem;

TeamGameSystem::getPlayerData($player);

特定の試合に参加しているプレイヤーデータを取得

use team_game_system\TeamGameSystem;

TeamGameSystem::getGamePlayersData($gameId);

特定のチームに参加しているプレイヤーデータを取得

use team_game_system\TeamGameSystem;

TeamGameSystem::getTeamPlayersData($teamId);

イベント一覧

PlayerJoinedGameEvent

プレイヤーがゲームに参加したときに呼び出されます

PlayerMovedGameEvent

プレイヤーがチームを移動したときに呼び出されます

PlayerKilledPlayerEvent

プレイヤーが相手に倒されたときに呼び出されます

AddedScoreEvent

スコアが追加されたときに呼び出されます

PlayerQuitGameEvent

プレイヤーがゲームから抜けたときに呼び出されます

StartedGameEvent

ゲームが開始されたときに呼び出されます

UpdatedGameTimerEvent

ゲームの経過時間が更新されたときに呼び出されます

依存関係

form_builder
slot_menu_system
↑2つを導入してください

Composerで補完する

repositoriesに以下を追加

{
  "type": "git",
  "name": "mine_deep_rock/team_game_system",
  "url": "https://github.com/MineDeepRock/team_game_system"
}

requireに以下を追加

"mine_deep_rock/team_game_system": "dev-master",