개인 자료란 (JE)

  서버 커뮤니티

한국 마인크래프트 포럼

마인크래프트 자료 및 커뮤니티 플랫폼

전체 회원수 127,684명 ( +4명 )

※ 장기간 미활동 회원 제외

Profile 브혼 개발자

Vhone dc73ee51d49946dabf4f634c6e3ce5c6

Profile

자료란new 공통new 리뷰, 강좌new 스크립트

[함수] 간단하게 랭킹을 출력해주는 함수

2021.03.31 조회 수 155 추천 수 1

이번에 공유할 함수는 랭킹을 출력해주는 함수입니다.
[2016년], [2017년] 랭킹 코드 포스트의 연장선입니다.


간단하게 이름과 점수를 넘겨주면 그대로 랭킹으로 출력해주고, 문장의 폼과 출력 등수도 설정 할 수 있어요.



function EffSendRank(s:senders,key:texts,value:numbers,form:text="",line:integer=5):
    set {_form} to "[<rank>] <key> = <value>" if {_form} is ""
    loop {_value::*}:
        set {_value} to loop-value * 10000
        add loop-index to {_rank::%{_value}%::*}
    set {_index::*} to reversed indexes of {_rank::*}
    loop {_index::*}:
        set {_value} to loop-value parsed as integer / 10000
        add 1 to {_rank}
        loop {_rank::%loop-value-1%::*}:
            set {_msg} to {_form}
            replace "<rank>" with "%{_rank}%" in {_msg}
            replace "<key>" with {_key::%loop-value-2%} in {_msg}
            replace "<value>" with "%{_value}%" in {_msg}
            add {_msg} to {_ranking::*}
        if {_rank} >= {_line}:
            exit loop
    send {_ranking::*} to {_s::*}

key와 value를 1:1 매칭되게 넣어주면 그대로 랭킹을 출력해 줍니다.
예를들어 A, B, C 세명이 각각 1점, 2점, 3점이라면
{_key::*}는 "A" and "B", "C"
{_value::*}는 1 and 2, 3
이렇게 세팅하면 됩니다.



command /text.rank:
    trigger:
        set {_key::*} to "짱구" and "맹구", "철수", "훈이", "유리"
        set {_value::*} to 3.5 and 3, 7, 3.5, 5.5
        EffSendRank( player, {_key::*}, {_value::*}, "[<rank>등] <key>(<value>)", 3 )

// [1등] 철수(7)
// [2등] 유리(5.5)
// [3등] 짱구(3.5)
// [3등] 훈이(3.5)

문장 폼에서 등수는 <rank>, 키는 <key>, 값은 <value>를 사용합니다.
예시와 같이 "[<rank>등] <key>(<value>)" 넣어주면 주석처럼 출력됩니다.
기본값이 있기 때문에 폼을 정하지 않으면 "[<rank>] <key> = <value>"으로 출력됩니다.

함수의 마지막 인수는 출력 등수입니다. 등수 기준으로 출력되기 때문에 동점자도 3등 이내라면 모두 출력됩니다.
기본값은 5 입니다.


command /text.rank:
    trigger:
        set {_list::짱구} to 3.5
        set {_list::맹구} to 3
        set {_list::철수} to 7
        set {_list::훈이} to 3.5
        set {_list::유리} to 5.5
        EffSendRank( player, indexes of {_list::*}, {_list::*}, "[<rank>등] <key>(<value>)", 5 )

// [1등] 철수(7)
// [2등] 유리(5.5)
// [3등] 짱구(3.5)
// [3등] 훈이(3.5)
// [4등] 맹구(3)

이전 방식의 인덱스, 값의 형태를 사용한다면 [Indexes of] 익스프레션으로 인덱스 값을 키로 넘겨주면 됩니다.





Warning
댓글이 없습니다.

새로운 댓글을 등록해 주세요!

컨텐츠
https://www.koreaminecraft.net/files/thumbnails/952/941/002/262x150.crop.jpg?20211128203943

답안지

한마탐 수능 / 등급컷 + 해설 8

베개냥이

2021-11-25

2

https://www.koreaminecraft.net/files/thumbnails/670/940/002/262x150.crop.jpg?20211124215847

답안지

한마탐 5주차 / 정오표 + 해설 1

베개냥이

2021-11-24

2

https://www.koreaminecraft.net/files/thumbnails/133/938/002/262x150.crop.jpg?20211123001841
마인크래프트로 만든 움직이는 루디브리엄 3

LittleCharlotte

2021-11-22

8