개인 자료란 (JE)

  서버 커뮤니티

Profile 혁준이0226 대표칭호 없음

CoCo4o4 96877db9da804e86a8ffc57e014135b3

Profile

질문하기 멀티플레이

스크립트 질문입니다. 전문가분들의 도움이 절실합니다,,

2023.01.05 조회 수 85 추천 수 0
이해도 입문자 
게임버전 (JE) 1.16.4 
게임버전 (BE) 1.16.x 
스크립트 버전 2.5.3 
스크립트 애드온 Skellet, skUtilities. SkQuery 

on place of chest:

    if name of player's tool is "&e랜덤 인챈트 교환권(10레벨)":

        cancel event

        if player's inventory contains nether star:

            remove 1 nether star from player's inventory

            remove 1 of player's tool from player's tool

            chance of 80%:

                give chest named "&e랜덤 인챈트 교환권(15레벨)" with lore "&a&l바닥에 설치하면 교환권을 강화합니다." to player

                message "&d교환권 강화에 성공하여 레벨이 올랐습니다!"

                stop

            else:

                give chest named "&e랜덤 인챈트 교환권(10레벨)" with lore "&a&l바닥에 설치하면 교환권을 강화합니다." to player

                message "교환권 강화에 실패했습니다."

        else:

            message "강화에 필요한 네더의 별이 부족합니다."

    if name of player's tool is "&e랜덤 인챈트 교환권(15레벨)":

        cancel event

        if player's inventory contains nether star:

            remove 1 nether star from player's inventory

            remove 1 of player's tool from player's tool

            chance of 77.9%:

                give chest named "&e랜덤 인챈트 교환권(20레벨)" with lore "&a&l바닥에 설치하면 교환권을 강화합니다." to player

                message "&d교환권 강화에 성공하여 레벨이 올랐습니다!"

                stop

            else:

                give chest named "&e랜덤 인챈트 교환권(10레벨)" with lore "&a&l바닥에 설치하면 교환권을 강화합니다." to player

                message "교환권 강화에 실패했습니다."

        else:

            message "강화에 필요한 네더의 별이 부족합니다."

    if name of player's tool is "&e랜덤 인챈트 교환권(20레벨)":

        cancel event

        if player's inventory contains nether star:

            remove 1 nether star from player's inventory

            remove 1 of player's tool from player's tool

            chance of 75.8%:

                give chest named "&e랜덤 인챈트 교환권(25레벨)" with lore "&a&l바닥에 설치하면 교환권을 강화합니다." to player

                message "&d교환권 강화에 성공하여 레벨이 올랐습니다!"

                stop

            else:

                give chest named "&e랜덤 인챈트 교환권(15레벨)" with lore "&a&l바닥에 설치하면 교환권을 강화합니다." to player

                message "교환권 강화에 실패했습니다."

        else:

            message "강화에 필요한 네더의 별이 부족합니다."




안녕하세요. 질문이 있어서 드려봅니다.

일단 컨셉은 "인챈트 교환권(N레벨)"이라는 이름의 상자를 설치하면 사라지면서  상자 이름에 5 레벨씩 추가가 되는 것입니다.

또한 레벨이 오를때마다 확률을 2.1%씩 감소시키는 방향으로 스크립트를 짰습니다.

그리고 인챈트는 교환권을 가져오면 서버장인 제가 직접 해주는 방식으로 하기 때문에 인챈트는 상관없습니다.

상자 시스템에 대해서만 if문으로 하려니까 너무 길고 이후의 레벨도 코딩할 때 어떻게 해야할 지 모르겠더라고요.

스크립트 전문가분들의 귀중한 손길이 절실합니다. 도와주세요.

(참고로 저는 스크립트에 대해서 아는 게 '생각보다 매우 적은' 뉴비입니다.)

4개의 댓글

코코냐
2023.01.05

혹시 스크립트엔 문자열에서 숫자 추출하는 기능조차 없던가요..?

혁준이0226
2023.01.06
@코코냐

알려주실 수 있으신가요? 검색해도 못찾겠어서..

코코냐
2023.01.06
@혁준이0226

https://docs.skunity.com/syntax/search/id:5206

qsef1256
2023.01.05

함수를 쓰거나 N레벨을 변수로 추출해서 곱하기를 하는 방식으로 해결하시기 바랍니다.