Skip to content
This repository has been archived by the owner on Mar 16, 2019. It is now read-only.

VectorNetworkProject/UserdataProvider

Repository files navigation

DataProvider

Build Status  データを格納するためのプラグイン。テーブルの粒度は小さめに!

テーブル

accounts

Column Type Description
id int 登録したときに自動的に付与されます
name string プレイヤーの名前です。

 UserdataProviderで基本となる情報を扱うテーブルです。ここに記載されたIDをもとに各テーブルの管理を行います。
 sqlite.sql上ではidをメインにやり取りしていますが、デベロッパーが扱う際はラップしたクラス群の関数を使ってください。

ffapvp

Column Type Description
id int プレイヤーと対応するaccountsテーブルのid
kill int キル数
death int デス数
exp int EXP

dual

Column Type Description
id int プレイヤーと対応するaccountsテーブルのid
kill int キル数
death int デス数
win int 勝利数
lose int 敗北数

corepvp

Column Type Description
id int プレイヤーと対応するaccountsテーブルのid
kill int キル数
death int デス数
win int 勝利数
lose int 敗北数
exp int exp

使い方

public function onEnable()
{
    $this->accounts = $this->getServer()->getPluginManager()->getPlugin('UserdataProvider')->getManager()->getAccounts();
}

public funciton onPlayerJoin(PlayerJoinEvent $event)
{
    $this->accounts->get(
        $event->player,
        function(array $rows) use($player): void
        {
            if($rows[0] !== null)
            {
                $player->sendMessage("あなたのIDは$raws[0][id]です");
            }
        },
        function(SqlError $error, ?Exception $trace): void  //https://github.com/poggit/libasynql/blob/master/libasynql/src/poggit/libasynql/base/DataConnectorImpl.php#L196
        {
            var_dump($error, $trace);
        }
    );
}

 クエリの終了時、またはエラー時の際の処理をクロージャで渡してください。
 終了時の引数はarray $rowsで結果が$rows[<順番>][<カラム名>]で格納されます。エラー時の引数は上記の通りSqlError $error, ?Ecxeption $traceとなります。SqlErrorについてはSqlErrorを参照してください。
 $raws[<int>]に格納されているデータは基本的にaccountsnameカラムとそれぞれのテーブルのカラムを複合したものになります。`