2017-12-18 5 views
0

좋아, 그래서 내 게임에이 오류가 발생했습니다. 여기에 오류가 자세히 나와 있습니다. https://www.rune-server.ee/runescape-development/rs2-server/help/668521-very-weird-backdoor-dupe.html스위치 명령문을 호출하는 방법

간단히 말해서 사용자가 int 데이터 형식 값을 초과 한 값을 입력했기 때문에 오류가 발생했으며 시스템을 속이기 시작했습니다.

그래서 버그를 설명하면, 사용자는 ingame 저장소에 가서 뭔가를 구입할 것입니다. 항목의 수량을 선택할 때 그는 내가 생각하기에 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'로 변환하십시오. 이 메서드는 정수 범위를 벗어나는 값에 대해서는 예외를 throw합니다. –

+0

이 질문과 관련된 모든 사항은 질문의 본문에 있어야합니다. 외부 링크는 결국 부패하여이 질문을 덜 유용하게 만듭니다. – jdv

답변

0

최대 값을 초과하면 서버에 보내기 전에 값을 INTEGER로 변환하고 경고를 시작하십시오.

+0

ez 출력, 아이디어 3 개, try/catch, parseInt가없고 예외 제어. try와 catch를 사용하여 코드를 마무리하고 parseInt를 사용하여 정수로 변환하십시오. 예외가 발생하면 값이 정수 값이 아닌 경우 캐치 부분을 실행합니다. te 값을 설정합니다. 0 또는 1로, 당신이 좋아하는 것처럼, 값 또는 메시지를 반환, 이것은 최대까지입니다. – Sergio

0

왜 가격이 부정적인지 아닌지 확인하지 않으시겠습니까? 그럴 경우 "오류, 너무 많은 항목"과 같은 메시지를 표시 할 수 있습니다.

+0

내가 잘못 말했어, 가격은 괜찮아. 그 아이템의 양, 그들이 살 수있는 최대량. 값을 초과하면 문제가 발생하고 최대 값은 int 값과 같습니다. –

관련 문제