개인 자료란 (JE)

  서버 커뮤니티

Profile ato_happy 대표칭호 없음
Profile

질문하기 스크립트

스크립트 도와주세요 ㅠㅠ 랜덤숫자 관련이에요ㅠㅠ

2024.01.31 조회 수 104 추천 수 0
이해도 초보자 
게임버전 (JE) 1.19.2 
게임버전 (BE) 관련없음 
스크립트 버전 2.8.0 

안녕하세요! 저희가 스크립트를 만들고 있는데 여기서 막혀버려서 ㅠㅠ 도와주세요ㅜㅜ,,

저희가 지금 2부터 99까지 랜덤으로 숫자가 겹치지 않게 뽑혀야 하는 상황인데요. 


command /숫자설정:

    trigger:

        set {_a} to 1

        set {_b} to 0

        loop 10000 times:

            set {랜덤숫자::%{_a}%} to random integer between 2 and 99

            set {_c} to 0

            loop {_b} times:

                add 1 to {_c}

                if {랜덤숫자::%{_a}%} is {랜덤숫자::%{_c}%}:

                    delete {랜덤숫자::%{_a}%}

                    subtract 1 from {_a}

                    set {_b} to {_a}-1

            if {_a} is 98:

                stop

            add 1 to {_a}

            add 1 to {_b}


command /숫자뽑기:

    trigger:

        add 1 to {덱번호}

        if {남은카드수} is 0:

            message "&c남은 카드가 없습니다!"

        else:

            subtract 1 from {남은카드수}

            give player 1 of paper named "%{랜덤숫자::%{덱번호}%}%"

command /게임 [<string>]:

    trigger:

        if arg 1 is "시작":

            set {스코어보드.%player%} to true

            message "&c게임&f을 시작합니다."

            execute player command "/숫자를뽑기"

            set {높아지는수1} to 1

            set {높아지는수2} to 1

            set {낮아지는수1} to 100

            set {낮아지는수2} to 100

            set {남은카드수} to 98

        if arg 1 is "끝":

            set {스코어보드.%player%} to false

            delete {랜덤숫자::*}

            set {덱번호} to 0

            message "&c게임&f을 끝냅니다."

            wipe player's sidebar



' 랜덤숫자 배열변수에 1~98까지의 이름을 가진 집을 만들고 그 안에 2~99까지의 숫자들을 랜덤으로 넣은 뒤 if 문을 사용해서 겹치는것이 있으면 지운 후 그 집부터 반복한다 ' 까지가 저희가 만든 내용인데 

이렇게 해서  숫자를 뽑다보면 중간부터 계속 [<none>]이 뜨더라구요,,, 리셋도 했구요. 아무리 찾아봐도 답이 안나와서요ㅠㅠ 도와주세요 ㅠㅠㅠ

저희가 만든 것에서 뭐가 잘못됐는지 설명 해주시면 진짜정말너무 감사드릴거 같아요,,!



애드온은 GomSK, InvSK, SharpSK, SKChoke, SKDragon, Skellett, SKQuery, skRayFall, skUtilities 사용중입니다.

1개의 댓글

qsef1256
2024.01.31

지역 변수명을 {_a},{_b} 이렇게 지어 놔서 의도를 추측하기가 힘드네요, 다음에는 최소한 뜻을 알 수 있게 변수명을 지으세요.

 

중복 없는 랜덤 숫자 뽑기는 이렇게 구현합니다: 필요한 모든 숫자를 가진 배열 변수를 하나 만들고 random element로 뽑은 다음 뽑은 건 배열 변수에서 지우고를 배열 변수가 전부 비워질 때까지 반복하면 됩니다. 그리고 loop 10000 times: 같은 코드는 자제하세요. 특수한 경우가 아니라면 위에처럼 이렇게 서버에 부담을 주는 방식을 안 쓰고 개발이 가능합니다.