머리아프다
대표칭호 없음
이해도 | 초보자(스크립트 구성요소나 기본문법은 알아요) |
---|---|
게임버전 (JE) | 1.17.1 |
게임버전 (BE) | 관련없음 |
서버에서 자동으로 매 분마다 '로또추첨' 이라는 명령어가 실행되게끔 스크립트를 간단하게 정말 간단하게 만들어봤는데요
every 10 seconds:
@broadcast "로또추첨이 완료되었습니다."
@execute command "로또추첨"
공지는 잘 적용되지만 로또추첨이라는 명령어가 실행이 안되네요.
혹시나 싶어 cmd 창에서 명령어를 쳐보니 작동을 안하더군요... 인게임에서는 잘 작동되는 명령어인데 말이죠..
그 외에 say라던가 기본 명령어들은 cmd 안에서도 작동이잘되구요.
스크립터브혼
2021.09.25로또추첨 명령어가 어떻게 정의되었는지를 알아야 답변이 가능합니다.
> execute command "로또추첨" by console
이렇게 하는게 콘솔로 명령을 실행하는 코드입니다.
머리아프다
2021.09.25알려주신 코드로 추가 후 실행해봤지만 여전히 글자만 나오고 코드는 실행이 안되네요
로또 코드는 유튜브에 검색해 나온 스크립트를 보고 만든 것으로
command /로또추첨 [<integer>]:
trigger:
if player is op:
broadcast "로또 추첨이 완료되었습니다."
if arg-1 is not set:
set {KeyNumber} to random integer between 0 and 99999
else:
set {KeyNumber} to arg-1
if {KeyNumber} is between 0 and 9:
set {KeyNumber} to "0000%{KeyNumber}%"
else if {KeyNumber} is between 10 and 99:
set {KeyNumber} to "000%{KeyNumber}%"
else if {KeyNumber} is between 100 and 999:
set {KeyNumber} to "00%{KeyNumber}%"
else if {KeyNumber} is between 1000 and 9999:
set {KeyNumber} to "0%{KeyNumber}%"
else if {KeyNumber} is bigger than 9999:
set {KeyNumber} to "%{KeyNumber}%"
broadcast "당첨 번호는 %{KeyNumber}% 입니다."
set {_answer::*} to {KeyNumber} split by ""
loop all players:
if {number::%uuid of loop-players%} is set:
set {_text::*} to {number::%uuid of loop-player%} split by ""
set {_a} to 0
set {_score} to 0
loop 5 times:
add 1 to {_a}
if {_text::%{_a}%} is {_answer::%{_a}%}:
add 1 to {_score}
if {_score} is 0:
send "추첨결과 §0§l꽝§r 입니다." to loop-player
send "다음 기회에" to loop-player
else if {_score} is 1:
send "추첨결과 §e§l5등§r 입니다." to loop-player
send "당첨 금액 : $2000" to loop-player
add 2000 to player's money
else if {_score} is 2:
send "추첨결과 §e§l4등§r 입니다." to loop-player
send "당첨 금액 : $5000" to loop-player
add 5000 to player's money
else if {_score} is 3:
send "추첨결과 §e§l3등§r 입니다." to loop-player
send "당첨 금액 : $10000" to loop-player
add 10000 to player's money
else if {_score} is 4:
send "추첨결과 §e§l2등§r 입니다." to loop-player
send "당첨 금액 : $50000" to loop-player
add 50000 to player's money
else if {_score} is 5:
send "추첨결과 §4§l1등§r 입니다." to loop-player
add 100000 to player's money
broadcast "§a§l%loop-player%§r님이 로또 §4§l1등§r에 당첨되었습니다!%nl%당첨 금액 : §2§l$100000"
delete {number::*}
이런 식으로 되어있습니다.
플레이어가 입력한 추첨번호는 {number::%uuid of player%} 라는 배열변수안에 저장되어있습니다.
스크립터브혼
2021.09.26콘솔에서 안되는 이유는 첫번째 조건문이 if player is op 이라서 그렇습니다. 콘솔은 플레이어가 아니라서요 player 대신 sender로 하면 동작할겁니다.
머리아프다
2021.09.26sender로 넣어도 작동이 되지않아 다른 커스텀명령어로 플레이해보니 정상작동하여 브혼님 말씀대로 player 라는 문구에 문제가 있는 것 같아
command /로또추첨 [<integer>]:
trigger:
if sender is not console:
message "해당 명령어는 콘솔에서만 실행 가능합니다"
else:
아예 명령어 자체를 콘솔에서만 입력 가능하겠금 변경하고 적용해보니 정상작동됩니다!
감사합니다!