Danpung_ 637ab57435e348c58b3dbd261aefcb5a
이해도 | 1.16 |
---|---|
게임버전 (JE) | 페이퍼 |
스크립트 애드온 | 2.4.1 |
on rightclick on lime concrete:
if amount of sponge in inventory of player > 0:
remove 1 of sponge from player's inventory
set {_c1.%player%} to random integer from 0 to 1
if {_c1.%player%} is 0:
set {_c2.%player%} to "Lyan_"
if {_c1.%player%} is 1:
set {_c2.%player%} to "Brown_"
set {_c3.%player%} to random integer from 1000 to 75000
set {_c4.%player%} to random integer from 0 to 1
if {_c4.%player%} is 0:
broadcast "%{_c2.%player%}% 님이 랜덤 금액 %{_c3.%player%}% 을 잃었습니다."
execute console command "scoreboard players remove %{_c2.%player%}% money {_c3.%player%}"
stop
if {_c4.%player%} is 1:
broadcast "%{_c2.%player%}% 님이 랜덤 금액 %{_c3.%player%}% 을 얻었습니다."
execute console command "scoreboard players add %{_c2.%player%}% money {_c3.%player%}"
stop
else:
send " 스폰지 1개가 필요합니다."
stop
볼드친 부분처럼 마인크래프트 명령어를 Skript에선 execute console command" ~ "에 담아야 한다고 하는데, 혹시 커맨드에 Skript의 변수를 넣을 수있는 방법은 없나요?
항상 질문만 드려 죄송합니다. 늘 수고하십니다 :)
스크립터브혼
2020.10.20명령어에서 입력하는 값은 모두 문자입니다. 명령어가 동작할때 인수로 받은 문자를 숫자나, 다른 타입으로 형변환하여 동작하게 됩니다.
execute 이펙트도 "~" 형태로 받는 이유는 문자열로 명령어의 매개변수를 넘기기 때문이죠.
execute 이펙트로 명령을 한다면 굳이 문자가 아닌것을 문자로 넘겨서 다시 필요한 타입으로 형변할 필요가없습니다.
전역변수로 값을 저장해두었다가 명령어 이벤트에서 해당 변수를 사용하면 됩니다.
예를들면...
이렇게 명령을 하기전 필요한 값을 전역변수로 세팅하고,
명령을 하고 난 뒤 사용한 전역변수를 제거하는 방식으로 구성할 수 있습니다.
execute 이펙트가 동작하게 되면 명령어를 실행하고 난 뒤 나머지 코드를 마저 실행하기 때문에
예문처럼 구성을 하면 명령어 동작 직후 바로 {paramater::*} 리스트를 지웁니다.
명령어 첫줄에 파라메터변수가 있는지 확인하는 컨디션을 넣어
플레이어나 콘솔에서 명령할 수 없고 오직 스크립트에서만 동작하는 명령어로 만들 수 있습니다.