2017-12-18 25 views
0

申し訳ありませんが、私は自分のゲームでこのエラーが発生しました。 エラーはここで詳しく説明されています:https://www.rune-server.ee/runescape-development/rs2-server/help/668521-very-weird-backdoor-dupe.htmlswitch文を呼び出す方法return型

しかし、単純に言えば、ユーザーがintデータ型の値を超えた値を入力したためにエラーが発生し、システムを不正行為させました。

あなたはバグを説明すると、ユーザーはゲームストアに行き、何かを購入します。アイテムの数量を選択すると、私はこの値のために仮定しているint値よりも高い値を入力できます。価格はマイナスになり、プレイヤーは無制限にアイテムを購入することができますが、プレイヤーポイントからの負の値を取り除くと、プラス(+) - ( - ) - > +が実際に加算されます。

switch文を使用して宣言された項目の価格。

public int getSpecialItemValue14(int id) {// member points shop 
    switch (id) { 

    case 1038: 
    case 1040: 
    case 1042: 
    case 1044: 
    case 1046: 
    case 1048: 
     return 45000; 

は今何イムその値を受け入れることからサーバーを防ぐためにやろうとすることは、IF文を作成しているので、値はその要求をブロックし、それを転送しないようにint型の値を超えた場合に。

どうすればいいですか?

+0

プレイヤーが入力した値を 'BigInteger'として取得してから、スイッチに入力された値を使用する前にチェックを実行できますか? – AntonH

+0

値を 'String'として受け入れ、' Integer.parseInt() 'を使って' Integer'に変換してください。このメソッドは、整数の範囲外の値の例外をスローします –

+0

この質問に関連するすべてが質問の本文に含まれている必要があります。外部リンクは最終的には腐敗し、この質問はあまり役に立たなくなります。 – jdv

答えて

0

サーバーに送信する前に値をINTEGERに変換し、最大値を超えた場合は0に設定し、アラートを起動します。

+0

ezの方法、3つのアイデア、try/catch、parseIntがなく、例外を制御します。 tryとcatchでコードを丸めます。内部でparseIntを使用して整数に変換します。例外が発生した場合、値は整数値ではなく、catch部分を発生させます。あなたが好きなように0または1に、値またはメッセージを返す、これはuまでです。 – Sergio

0

価格が負であるかどうかをチェックするだけではどうですか?そうであれば、 "Error、Too many items"のようなメッセージを表示することができます。

+0

私はそれが間違っていると思う、価格は上質です。その商品の数量、彼らが購入できる最大量。その値を超えると問題が発生し、最大量はintの値と等しい –

関連する問題