1

San Andreas Multiplayer (GTA) は、PAWN をプログラミング言語として使用します。私は SA-MP のサーバーの所有者ですが、それほどプロではないので、可能であれば助けを求めたいと思います。基本的に、プレイヤーがオンラインのときにプレイヤーの統計をチェックするコマンドがありますが、オフラインのときにそれらをチェックするコマンドが欲しいです。これは、プレーヤーがオンラインのときにプレーヤーの統計をチェックするコマンドのコードです。

CMD:check(playerid, var[])
{
    new user;
    if(!Logged(playerid)) return NoLogin(playerid);
    if(Player[playerid][pAdmin] >= 2 || Player[playerid][pStaffObserver])
    {
        if(sscanf(var,"us[32]", user, var))
        {
            SendClientMessage(playerid, COLOR_WHITE, "{00BFFF}Usage:{FFFFFF} /check [playerid] [checks]");
            SendClientMessage(playerid, COLOR_GRAD2, "** [CHECKS]: stats");
            return 1;
        }
        if(!strcmp(var, "stats", true))
        {
            if(!Logged(user)) return NoLoginB(playerid);
            ShowStats(playerid, user);
        }
    }
    else
    {
        NoAuth(playerid);
    }
    return 1;
}

ZCMD コマンド プロセッサと Dini 保存システムを使用しています。そこで、CMD:ocheck を作成して、株価の ShowStats を表示し、/ocheck [Firstname_Lastname] のように動作するようにしたいと思います。

何か助けはありますか?可能であれば助けてください。

ありがとう

〜ケビン

4

2 に答える 2

1

必要なコマンドについては、プレイヤーのユーザーファイルからデータをロードする必要があります。

あなたは明らかにから始めます

if(!Logged(playerid)) return NoLogin(playerid);
if(Player[playerid][pAdmin] >= 2 || Player[playerid][pStaffObserver]) 
{

これを使用しているプレーヤーがこのコマンドを使用する権限があるかどうかを確認します。これに続いて、

if(str, "s[32]", name))

オフライン プレーヤーの統計をチェックしているだけなので、ここではフォーマッタとして 'u' を使用できません。この後、ユーザーが実際に登録されているかどうかを確認する必要があります。登録されていない場合は、このコマンドのユーザーにエラーを返します。登録されている場合は、すでにオンラインであるかどうかを確認します。彼がオンラインの場合は、'ocheck' の代わりにこのコマンドを使用するように管理者にエラーを返します 彼がオフラインの場合は、安全に彼の統計のロードに進むことができます (プレーヤーがログインするときにデータをロードするために使用されるコードを使用できますが、今回は例外です)印刷するだけでいい

たとえば、

format(str, sizeof(str), 
"Score: %s, Money: %d", 
dini_Int(file, "score"), dini_Int(file, "score") );
于 2016-04-09T09:58:52.210 に答える
0

はい、基本的に、ファイルからすべての情報を取得する必要があるため、ShowStats は機能しません。列挙型などからすべての情報を取得すると思われるため、すべてのオフライン情報を取得する新しい関数を作成する必要があります。

于 2017-06-26T08:09:29.427 に答える