섬초대.sk
이런식으로 스크립트로 만든 명령어에서 띄어쓰기 후 다음 란에 플레이어 리스트가 뜨게하고싶은데
제가 써놓은 구문으로는 리스트가 뜨지 않네요.. 어떤식으로 고쳐야 하나요?
해당 기능의 명링은 Tab Complete입니다. Skript는 Tab Complete를 지원하지 않습니다.
[skQuery ]애드온에 해당 기능이 구현되어있는데요.
[문서]를 보면 on Tab Complete 이벤트와 tab completes 익스프레션이 검색됩니다.
on Tab Complete
tab completes
on tab completer for "/땅": loop all players: add name of loop-player to completions
참고자료 : https://forums.skunity.com/threads/on-tab-completer.12240/
섬초대.sk 이렇게 쓰니까 A tab completer cannot be assigned before the command is defined. (섬초대.sk, line 7: on tab completer for "/섬초대":') 라고 오류가 뜨네요.. 그리고 명령어를 실행시키려면 "/is invite"' 말고 "/is invite [<player>]" 처럼 뒤에 [<>]같은 구문을 써줘야 하는건가요?
테스트 해보니 명령어가 먼저 등록된 후에 자동완성을 등록해야하는 것으로 확인됐습니다.
명령어가 있는 스크립트가 먼저 로드될 수 있도록 a.sk에 위치하고
자동완성이 있는 스크립트가 후에 로드되도록 b.sk에 위치하면 정상적으로 동작합니다.
감사합니다 !!
혹시..플레이어의 이름 대신 이런식으로 띄어쓰기 후 또 다른 커스텀 명령어들이 뜨게 하는건 어떻게 하나요?
completions에 플레이어 이름 대신 입력해야할 명령어 글자를 넣어주면 됩니다.
(섬1.sk) (섬2.sk)
이렇게 만들어 봤는데 "A command with the /섬 is already defined in 섬1.sk" 라고 뜨면서 오류가 뜹니다.. 이미 /섬 명령어가 있다는 것 같은데...이 방법으로는 "/섬 @@" 같은 띄어쓰기 명령어를 한가지밖에 못쓰는건가요?
명령어 코드에서 명령어는 슬래쉬(/)부터 띄어쓰기( )까지만 인식됩니다.
섬1.sk에서 "/섬 업그레이드"가 아닌 "/섬"이 등록되고, "/섬 초대"도 "/섬"으로 등록되기때문에 오류가 생깁니다.
인수를 받아서 쓰세요
command /섬 []:
[] 안에 어떤 구문을 써줘야 하나요? 계속 시도해보았는데 안되네요..
아 글자가 잘렸네요 [<text>]입니다.
커맨드 문법은 스크립트 플러그인에 내장된 기본예제에도 자세히 나와있습니다.
정말 감사합니다! 그런데 탭 자동완성 후 다음 띄어쓰기에서 플레이어의 닉네임 리스트까지 뜨게 할려고 했는데 다음 띄어쓰기에서는 닉네임 리스트가 뜨질 않네요. 두 가지의 탭 기능을 넣는건 불가능한가요?
[문서] 를 보시면 Tab Complete Argument로 입력된 인수를 받아 올 수 있습니다.
on tab completion for command "clan": if argument at 1 contains "help":
감사합니다. 그런데 두번째 띄어쓰기 후 tab 리스트에서는 플레이어 리스트만 뜨게할려고 했는데 다른 명령어들까지 뜨게되네요..플레이어 닉네임만 뜨게 할 수는 없을까요?
다른 명령어가 조건문에 영향을 받지 않고 completions에 추가되기때문입니다. 코드를 보여주세요
탭.sk 넵. 줄로 그어진 부분은 3개 모두 각각 다른sk 파일로 저장해둔걸 표시할려고 그어놨습니다
첫번째 tab completer 이벤트는 두번째 처럼 조건문이 없기때문에 모든 tab completer 이벤트에 동작하기 때문에 그렇습니다.
tab complete 이벤트에 대해 간단히 설명하자면
플레이어가 명령어를 입력할때 새로운 값을 입력하거나, 지우거나, 입력 커서의 위치를 앞뒤로 움직일 때 등등
입력하는 모든 상황에서 동작합니다.
또한 이 이벤트는 자동완성으로 표시될 텍스트 리스트를 반환받을 수 있습니다.
스크립트에서는 이것을 completions를 add하거나 set하는 것으로 대신하고 있는거구요.
띄어쓰기에 상관없이 첫번째 이벤트에서 자동완성 텍스트를 반환해주기 때문에 계속해서 표시가 되는겁니다.
두번째 이벤트처럼 조건문으로 플레이어가 첫번째 인수를 입력할때만 반환하도록 수정하셔야 합니다.
이 구문에서 add 위에 if argument at 1 contains "": 조건식을 써줘야 하는건가요?
안해봐서 잘 모르겠어요.
argument at 1 is "" 또는 argument at 1 is not set 이렇게 하면 되지않을까 싶어요.
argument at 1 을 메세지로 출력해서 어떤 값이 나오는지 확인해보세요.
아 해결되었습니다 ! 며칠동안 막히던 부분이었는데 정말 감사드립니다! ㅠㅠ
아아 죄송합니다 계속 예상치도 못한 곳에서 막히네요 ㅠㅠ.. add player's name to completions 구문은 자신의 닉네임만 띄우던데 혹시 서버 전체 유저의 닉네임을 띄우게 할 수 있나요?
아 해결되었습니다 죄송합니다
건축
KHC
2024-10-25
2
2024-10-10
dbasd12
2024-10-09
레드스톤
노트블럭전문가
2024-10-08
1
팁
물귀신
2024-10-06
3
스크립터브혼
2020.08.16해당 기능의 명링은 Tab Complete입니다. Skript는 Tab Complete를 지원하지 않습니다.
[skQuery ]애드온에 해당 기능이 구현되어있는데요.
[문서]를 보면
on Tab Complete
이벤트와tab completes
익스프레션이 검색됩니다.참고자료 : https://forums.skunity.com/threads/on-tab-completer.12240/
sdfdsr
2020.08.16섬초대.sk 이렇게 쓰니까 A tab completer cannot be assigned before the command is defined. (섬초대.sk, line 7: on tab completer for "/섬초대":') 라고 오류가 뜨네요.. 그리고 명령어를 실행시키려면 "/is invite"' 말고 "/is invite [<player>]" 처럼 뒤에 [<>]같은 구문을 써줘야 하는건가요?
스크립터브혼
2020.08.16테스트 해보니 명령어가 먼저 등록된 후에 자동완성을 등록해야하는 것으로 확인됐습니다.
명령어가 있는 스크립트가 먼저 로드될 수 있도록 a.sk에 위치하고
자동완성이 있는 스크립트가 후에 로드되도록 b.sk에 위치하면 정상적으로 동작합니다.
sdfdsr
2020.08.16감사합니다 !!
sdfdsr
2020.09.27혹시..플레이어의 이름 대신 이런식으로 띄어쓰기 후 또 다른 커스텀 명령어들이 뜨게 하는건 어떻게 하나요?
스크립터브혼
2020.09.27completions에 플레이어 이름 대신 입력해야할 명령어 글자를 넣어주면 됩니다.
sdfdsr
2020.09.28(섬1.sk) (섬2.sk)
이렇게 만들어 봤는데 "A command with the /섬 is already defined in 섬1.sk" 라고 뜨면서 오류가 뜹니다.. 이미 /섬 명령어가 있다는 것 같은데...이 방법으로는 "/섬 @@" 같은 띄어쓰기 명령어를 한가지밖에 못쓰는건가요?
스크립터브혼
2020.09.28명령어 코드에서 명령어는 슬래쉬(/)부터 띄어쓰기( )까지만 인식됩니다.
섬1.sk에서 "/섬 업그레이드"가 아닌 "/섬"이 등록되고, "/섬 초대"도 "/섬"으로 등록되기때문에 오류가 생깁니다.
인수를 받아서 쓰세요
command /섬 []:
sdfdsr
2020.09.28[] 안에 어떤 구문을 써줘야 하나요? 계속 시도해보았는데 안되네요..
스크립터브혼
2020.09.28아 글자가 잘렸네요 [<text>]입니다.
커맨드 문법은 스크립트 플러그인에 내장된 기본예제에도 자세히 나와있습니다.
sdfdsr
2020.09.28정말 감사합니다! 그런데 탭 자동완성 후 다음 띄어쓰기에서 플레이어의 닉네임 리스트까지 뜨게 할려고 했는데 다음 띄어쓰기에서는 닉네임 리스트가 뜨질 않네요. 두 가지의 탭 기능을 넣는건 불가능한가요?
스크립터브혼
2020.09.29[문서] 를 보시면 Tab Complete Argument로 입력된 인수를 받아 올 수 있습니다.
sdfdsr
2020.09.30감사합니다. 그런데 두번째 띄어쓰기 후 tab 리스트에서는 플레이어 리스트만 뜨게할려고 했는데 다른 명령어들까지 뜨게되네요..플레이어 닉네임만 뜨게 할 수는 없을까요?
스크립터브혼
2020.09.30다른 명령어가 조건문에 영향을 받지 않고 completions에 추가되기때문입니다. 코드를 보여주세요
sdfdsr
2020.09.30탭.sk 넵. 줄로 그어진 부분은 3개 모두 각각 다른sk 파일로 저장해둔걸 표시할려고 그어놨습니다
스크립터브혼
2020.09.30첫번째 tab completer 이벤트는 두번째 처럼 조건문이 없기때문에 모든 tab completer 이벤트에 동작하기 때문에 그렇습니다.
tab complete 이벤트에 대해 간단히 설명하자면
플레이어가 명령어를 입력할때 새로운 값을 입력하거나, 지우거나, 입력 커서의 위치를 앞뒤로 움직일 때 등등
입력하는 모든 상황에서 동작합니다.
또한 이 이벤트는 자동완성으로 표시될 텍스트 리스트를 반환받을 수 있습니다.
스크립트에서는 이것을 completions를 add하거나 set하는 것으로 대신하고 있는거구요.
띄어쓰기에 상관없이 첫번째 이벤트에서 자동완성 텍스트를 반환해주기 때문에 계속해서 표시가 되는겁니다.
두번째 이벤트처럼 조건문으로 플레이어가 첫번째 인수를 입력할때만 반환하도록 수정하셔야 합니다.
sdfdsr
2020.09.30이 구문에서 add 위에 if argument at 1 contains "": 조건식을 써줘야 하는건가요?
스크립터브혼
2020.09.30안해봐서 잘 모르겠어요.
argument at 1 is "" 또는 argument at 1 is not set 이렇게 하면 되지않을까 싶어요.
argument at 1 을 메세지로 출력해서 어떤 값이 나오는지 확인해보세요.
sdfdsr
2020.09.30아 해결되었습니다 ! 며칠동안 막히던 부분이었는데 정말 감사드립니다! ㅠㅠ
sdfdsr
2020.10.04아아 죄송합니다 계속 예상치도 못한 곳에서 막히네요 ㅠㅠ.. add player's name to completions 구문은 자신의 닉네임만 띄우던데 혹시 서버 전체 유저의 닉네임을 띄우게 할 수 있나요?
sdfdsr
2020.10.04아 해결되었습니다 죄송합니다