개인 자료란 (JE)

  서버 커뮤니티

Profile 느으너앍 대표칭호 없음

Soul_MC 394e8b058b494a24be42a0a304207c31

Profile

질문하기 스크립트

루프 질문 있습니다!

2021.04.25 조회 수 115 추천 수 0
이해도 1.16 
게임버전 (BE) Misk, Skellett, skRayFall, SkQuery, skript-mirror, SkBee 
스크립트 애드온 2.5.3 

명령어 뒤 인자로 오는 단어들을 loop로 돌려서 한 문장으로 만드려 했는데

아무리 찾아도 방법이 없는 것 같아 질문 드립니다.


loop 9 times:
            set {변수} to "%{변수}% %arg %loop-value%%"

처럼 쓰려니

'argument(s)' cannot be used if the command has multiple arguments. Use 'argument 1', 'argument 2', etc. instead (tests.sk, line 6: set {변수} to "%{변수}% %arg %loop-value%%"')

라는 오류가 뜹니다..


방식을 달리해서 


loop all arguments:
            set {변수} to "%{변수}% %loop-value%"

이렇게 썼더니 

Can't understand this loop: 'loop all arguments' (tests.sk, line 5: loop all arguments:')

라는 오류가 뜹니다..


        loop argument number:
            set {변수} to "%{변수}% %loop-value%"

또한 

There is no number argument in this command (tests.sk, line 5: loop argument number:')

라는 오류로 불가능 하더라구요..


혹시 인자값으로 루프를 돌리는 방식이 있을까요??

4개의 댓글

정현우니
2021.04.25
set {_var} to args

loop문 돌릴 필요 없습니다

args 로 모든 인자를 가져올 수 있습니다.

느으너앍
2021.04.25
@정현우니

감사합니다!!

느으너앍
2021.04.25
@정현우니

혹시 하나 더 질문이 있는데.. 인자부분에 text 나 integer 같은걸 작성하지 않고 인자를 계속 쓸 수 있게 할순 없을까요??

스크립터브혼
2021.04.25

명령어를 사용하는 이벤트로 [On Command]가 있습니다.

일반적으로 명령어를 만들기 위해서는 커스텀 명령어 기능을 사용하구요.

이벤트와 기능은 아래와 같이 사용됩니다.

# 명령어 "/test abcd 1234 stone" 입력

on command:
    set {_label} to command           # test
    set {_args} to arguments          # abcd 1234 stone
    send "run on command" to console

command /test <text> <integer> <item>:
    trigger:
        set {_arg::1} to arg-text     # abcd
        set {_arg::2} to arg-integer  # 1234
        set {_arg::3} to arg-item     # stone
        send "run custom command" to console

# 동작순서
# 1) run on command
# 2) run custom command

두 기능에서 동작하는 순서는 On Command 이벤트가 먼저 동작하고, 커스텀 커맨드가 동작하게 됩니다.

On Command는 입력된 명령어를 판단하기 전 입력받은 값 만으로 동작하는 이벤트 입니다.


On Command에서는 [Command] 익스프레션을 사용 할 수 있습니다.

commandarguments를 받을 수 있죠. 여기서 arguments는  인수로 받은 모든 텍스트 입니다.(인수 구분 X)

사용자가 입력한 명령어가 글자이듯, 입력받은 명령어 역시 글자입니다.

입력한 명령어를 '라벨'과 '인수들'로 이분하여 받습니다.


커스텀 명령어는 On Command에서 받은 글자타입 인수들을 정의된 타입에 맞게 스스로 변경하여 동작합니다.

여기서는 [Argument] 익스프레션을 사용합니다.(인수 구분 O)


on command 이벤트에서는 루프할 필요없이 arguments를 사용하면 되고,

커스텀 커맨드라면 각각의 인수를 직접 합쳐야합니다. 또는 인수를 하나만 받으면 args 패턴을 사용할 수 있습니다.