Vhone dc73ee51d49946dabf4f634c6e3ce5c6
분야 | 스크립트 |
---|---|
게임버전 | 1.16.x |
API | 스피곳, 페이퍼 |
자료글 | https://github.com/SkriptLang/Skript |
이번에 공유할 함수는 랭킹을 출력해주는 함수입니다.
[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] 익스프레션으로 인덱스 값을 키로 넘겨주면 됩니다.
댓글이 없습니다.
새로운 댓글을 등록해 주세요!