1

私は C++ の初心者であり、%data の使用方法を知る必要があります。

    int ping = pNetChannel->GetPing(true);
if (ping < 500)
{
    float data = pNetChannel->GetPing(true);
    pNetChannel->Disconnect(eDC_Kicked,"High Ping: %data m/s");
}

このコードは実験的なものであり、これはサーバーの絶対制限として設計されています。カスタム制限は、別の場所の構成ファイルで手動で指定されます。

このコードでは、プレーヤーを切断し、「High Ping」部分の後に「data」変数を表示する必要があります。

ありがとう

4

2 に答える 2

1

切断がどのように見えるかによって異なります。このようなものはおそらくあなたが望むことをするでしょう(eDC_Kickedが何らかのクラスのステータスであると仮定します)

void Disconnect(Status _status, std::string _reason) { 
    // Do disconnect things
    ...
    // Print message
    std::cout << _reason << std::endl;
}

ただし、関数を送信する前に、文字列を作成する必要があります (たとえば、stringstream を使用)。

if (ping < 500)
{
    float data = pNetChannel->GetPing(true);
    std::ostringstream oss;
    oss << data;
    std::string ping(oss.str());
    std::string reason = "High ping: " + ping;
    pNetChannel->Disconnect(eDC_Kicked, reason);
}

または、意味がある場合は、この方法で切断を記述することもできます(そして、文字列 "High Ping: " と float 値の両方を別々に渡します)。

void Disconnect(Status _status, std::string _message, float _value) { 
     // Do disconnect things
     ...
     // Print message
     std::cout << _message << " " << _value << std::endl;
 }

しかし、毎回正確に 1 つのメッセージと 1 つの変数を持たない場合などには、それは望ましくないかもしれません。また、必要に応じて、印刷にprintfを使用することもできます。

于 2013-04-19T15:46:50.700 に答える
0

おそらく、あなたは次のことを意味します:

float data = pNetChannel->GetPing(true);
pNetChannel->Disconnect(eDC_Kicked,"High Ping: %5.2f m/s", data);

それは矛盾していますが:

int ping = pNetChannel->GetPing(true);

前のラインで。GetPing整数または浮動小数点値を返しますか?

于 2013-04-19T15:38:03.040 に答える