개인 자료란 (JE)

  서버 커뮤니티

Profile 뇽뇨뇽 대표칭호 없음

Sierra_24 9e02e0e56c084821b3ba3c02f36edb71

Profile

질문하기 스크립트

확률 저장

2020.09.14 조회 수 84 추천 수 0
이해도 1.12 
게임버전 (JE) 모드버킷 
스크립트 애드온 skript 2.2 dev-37c 

혹시 확률을 따로 저장해두고 불러올 방법이 있을까요?

function itemenc(i: integer):

    if {_i} = 1:

        set {_success} to 70

        set {_fail} to 3

        set {_destroy} to 0


    else if {_i} = 2:

        set {_success} to 50

        set {_fail} to 5

        set {_destroy} to 0


이런식으로 함수 처리 해보려고 했는데 안되네요... 도움이 필요합니다..!

1개의 댓글

스크립터브혼
2020.09.14

방법은 여러가지가 있는데요.
전역변수를 사용하면 코드 어디서든 값을 불러올 수 있습니다.
전역변수는 변수이름이 언더바(_)로 시작하지 않으면 전역변수입니다.
지역변수는 본문에 올려주신 코드처럼 언더바로 시작합니다.

전역변수로 사용하면 아래 처럼 활용 할 수 있습니다.

on load:
    set {chance::1::success} to 70
    set {chance::1::fail} to 30
    set {chance::1::destroy} to 0
    set {chance::2::success} to 50
    set {chance::2::fail} to 5
    set {chance::2::destroy} to 0

# use
set {_i} to 1
set {_success} to {chance.%{_i}%.success}
set {_fail} to {chance.%{_i}%.fail}
set {_destroy} to {chance.%{_i}%.destroy}

# 전역변수 제거
on unload:
    delete {chance::*}

리스트 변수를 사용하면 최상단 이름으로 생성된 하위 변수들을 모두 제거할 수 있습니다.



변수사용이 껄끄럽다면 옵션을 사용하면됩니다.

Options:
    1.SUCCESS: 70
    1.FAIL: 3
    1.DESTROY: 0

# use
set {_success} to {@1.SUCCESS}
set {_fail} to {@1.FAIL}
set {_destroy} to {@1.DESTROY}



함수를 꼭 활용해보고 싶으시면 데이터의 순서에 주의해서 반환받으면 됩니다.

function itemenc(i:integer) :: integers:
    if {_i} = 1:
        return 70 and 3, 0
    else if {_i} = 2:
        return 50 and 5, 0

# use
set {_chance::*} to itemenc(1)
set {_success} to {_chacne::1}
set {_fail} to {_chacne::2}
set {_destroy} to {_chacne::3}