3

テキスト ブロックをユーザーのゲーム コンソール (Crysis Wars) に送信する次のコードがあります。

        CMCCPlayer(player, "================================================================================================================");
        CMCCPlayer(player, "$4####     ###      ###     ######     ####");
        CMCCPlayer(player, "$4##        ###    ###     ##    ##      ##");
        CMCCPlayer(player, "$4##         ### ###       ##            ##");
        CMCCPlayer(player, "$4## ###      #####         ######   ### ##");
        CMCCPlayer(player, "$4##         ### ###             ##      ##");
        CMCCPlayer(player, "$4##        ###   ###     ##     ##      ## ");
        CMCCPlayer(player, "$4####     ###     ###     ######      ####");
        CMCCPlayer(player, "================================================================================================================");

しかし、私はこの結果を得ます:

間違ったテキスト

この問題は Crysis Wars の開発者コミュニティを実質的に悩ませており、これに対する実際の解決策はありませんでした。Lua から C++ へではなく、C++ から直接実行した場合、コードの形式は問題ないため、これは Lua 側の問題に違いありません。

メッセージの間隔を 1 ミリ秒に設定しようとしましたが、その結果、いくつかのメッセージが失われました (おそらく、最近のメッセージが古いメッセージを上書きするためです)。この問題に対する提案や解決策はありますか? 実用的なソリューションを提供すれば、Crysis Wars 開発者コミュニティ内でかなり有名になるでしょう。かなり厄介なバグを解決したことになるからです :)。私の評判の一部を提供したいと思いますが、残念ながら今朝、別の問題を解決した人に報奨金を授与しました。

メッセージを送信するための関数コード:

function CMCCPlayer(player, msg)
    g_gameRules.game:SendConsoleMessage(player.id, g_gameRules.game:CentreTextForConsole(msg)); 
end

これが何かに役立つ場合は、C++ SendConsoleMessage コードを次に示します。

int CScriptBind_GameRules::SendConsoleMessage(IFunctionHandler *pH, ScriptHandle playerId, const char *msg)
{
CGameRules *pGameRules=GetGameRules(pH);
if (!pGameRules)
    return pH->EndFunction();

int channelId=pGameRules->GetChannelId((EntityId)playerId.n);
pGameRules->SendTextMessage(eTextMessageConsole, msg, eRMI_ToClientChannel, channelId);
msg=0; //Null the message.
return pH->EndFunction();
}

編集:

これは、中央揃えに使用されるテキストとは関係がないこと、および以下の画像とテキスト ブロックは例としてのみ提供されていることに注意してください。この問題は、送信されるすべてのコードで発生します。

ここに画像の説明を入力

メッセージ1

4

2 に答える 2

1

その出力は入力から反転されています。入力を注意深く見ると、最後から 2 番目のコンテンツ行が他の行よりも 1 文字長いことに気付くでしょう。これにより、画面の中央に異なる方法で配置されます。その余分なスペースを削除して、問題が解決するかどうかを確認してください。

于 2013-07-15T23:36:05.053 に答える