한포동
대표칭호 없음
이해도 | 1.16 |
---|---|
게임버전 (JE) | 페이퍼 |
스크립트 애드온 | 2.5.3 |
send "&a&l게임에 입장합니다. &8&l[&e&l%number of {game::players::*}%&8&l/&e&l{@maxplayer}&8&l]" to {game::players::*}
wait 1 tick
if {p.1} isn't set:
set {p.1} to player
stop
if {p.1} is set:
if {p.2} isn't set:
set {p.2} to player
----------------------------------------------------------
command /bridge.team:
trigger:
if {p.1} is player:
teleport {p.1} to location at -0.490, 63, 7.503 in world "bri"
if {p.2} is player:
teleport {p.2} to location at -0.534, 63, -30.473 in world "bri"
이렇게 설정하여 실행을 했지만 다른 사람은 tp 가 안되고 저만 tp 가 됩니다 혼자만 되는 가 싶어 그분만 남기고 시작을 하면 그분은 tp가 안되는 상황입니다.
몇번을 바꾸고 고쳐도 문제가 발생하여 이렇게 글 써봅니다..
스크립터브혼
2021.07.24stop을 지우세요.
{p.1}에 값이 없는 경우 값을 넣고 멈춥니다. 해당코드가 2회 이상 동작한다면 {p.2}까지 세팅이 될 수 있지만, 1회 동작한다면 {p.1}만 세팅될 수 있습니다.
한포동
2021.07.24send "&a&l게임에 입장합니다. &8&l[&e&l%number of {game::players::*}%&8&l/&e&l{@maxplayer}&8&l]" to {game::players::*}
if {p.1} isn't set:
set {p.1} to player
if {p.1} is set:
if {p.2} isn't set:
set {p.2} to player
이렇게 바꿔서 해본 결과 증상이 똑같습니다.
스크립터브혼
2021.07.25전체 코드 올려보세요. 파일로 올리셔도 됩니다.
한포동
2021.07.25options:
maxplayer: 2
startplayer: 2
waittime: 3
playtime: 50
command /더브릿지 [<text>]:
trigger:
if arg 1 isn't set:
send "&a&l/더브릿지 입장&f&l: &e&l더브릿지에 입장합니다."
send "&a&l/더브릿지 퇴장&f&l: &e&l더브릿지에서 퇴장합니다."
send "&a&l/더브릿지 관전&f&l: &e&l더브릿지를 관전합니다."
if arg 1 is "입장":
execute player command "bridge.game"
if arg 1 is "퇴장":
execute player command "bridge.quit"
if arg 1 is "관전":
send "아직 추가가 안됬습니다."
command /bridge.game:
trigger:
if {play::%player%} is set:
send "&c&l이미 게임에 입장했습니다."
stop
if number of {game::players::*} >= {@maxplayer}:
send "&c&l더브릿지의 인원이 모두 찼습니다."
stop
set {play::%player%} to true
add player to {game::players::*}
teleport player to location at -0.461, 80, -11.497 in world "bri"
set gamemode of player to survival
send "&a&l게임에 입장합니다. &8&l[&e&l%number of {game::players::*}%&8&l/&e&l{@maxplayer}&8&l]" to {game::players::*}
wait 1 tick
clear player's inventory
if number of {game::players::*} >= {@startplayer}:
if {game::task} is not set:
set {game::task} to true
set {_wait} to {@waittime}
while {game::task} is true:
send "&e&l%{_wait}%&e&l초 후 게임이 시작됩니다." to {game::players::*}
remove 1 from {_wait}
if {p.1} isn't set:
set {P.1} to player:
if {p.1} is set:
if {p.2} isn't set:
set {p.2} to player:
wait 1 seconds
if number of {game::players::*} < {@startplayer}:
delete {game::task}
send "&a&l인원이 부족하여 게임이 종료됩니다." to {game::players::*}
if {_wait} <= 0:
set {game::task} to false
if {game::task} is false:
send "&a&l게임을 시작합니다." to {game::players::*}
execute command "/bridge.start" by console
if player is {p.1}:
give shears of unbreaking 5 to player
give 200 red wool to player
apply haste 3 to player for 10 minutes
wait 1 tick
teleport {p.1} to location at -0.523, 63, 10.501 in world "bri"
if player is {p.2}:
give shears of unbreaking 5 to player
give 200 blue wool to player
apply haste 3 to player for 10 minutes
wait 1 tick
teleport {p.2} to location at -0.460, 63, -33.515 in world "bri"
command /bridge.quit:
trigger:
if {play::%player%} is not set:
send "&a&l게임에 참여하지 않았습니다."
stop
delete {play::%player%}
remove player from {game::players::*}
send "&a&l%player%가 퇴장했습니다." to {game::players::*}
send "&a&l게임에서 퇴장했습니다."
command /bridge.start:
trigger:
send "&a&l게임을 시작했습니다." to {game::players::*}
wait {@playtime} seconds
send "&c&l게임이 종료됐습니다." to {game::players::*}
delete {play::*}
delete {game::*}
command /bridge.stop:
trigger:
message "&c&l성공적"
delete {play::*}
delete {game::*}
스크립터브혼
2021.07.25참여한 인원은 {game::players::*} 변수에 저장되어있습니다.
참가인원이 두명이라면 {game::players::1}, {game::players::2}를 사용하시면 됩니다.
한포동
2021.07.25options:
maxplayer: 2
startplayer: 2
waittime: 10
playtime: 50
command /더브릿지 [<text>]:
trigger:
if arg 1 isn't set:
send "&a&l/더브릿지 입장&f&l: &e&l더브릿지에 입장합니다."
send "&a&l/더브릿지 퇴장&f&l: &e&l더브릿지에서 퇴장합니다."
send "&a&l/더브릿지 관전&f&l: &e&l더브릿지를 관전합니다."
if arg 1 is "입장":
execute player command "bridge.game"
if arg 1 is "퇴장":
execute player command "bridge.quit"
if arg 1 is "관전":
send "아직 추가가 안됬습니다."
command /bridge.game:
trigger:
if {play::%player%} is set:
send "&c&l이미 게임에 입장했습니다."
stop
if number of {game::players::*} >= {@maxplayer}:
send "&c&l더브릿지의 인원이 모두 찼습니다."
stop
set {play::%player%} to true
add player to {game::players::*}
teleport player to location at -0.461, 80, -11.497 in world "bri"
set gamemode of player to survival
send "&a&l게임에 입장합니다. &8&l[&e&l%number of {game::players::*}%&8&l/&e&l{@maxplayer}&8&l]" to {game::players::1} and {game::players::2}
wait 1 tick
clear player's inventory
if number of {game::players::*} >= {@startplayer}:
if {game::task} is not set:
set {game::task} to true
set {_wait} to {@waittime}
while {game::task} is true:
send "&e&l%{_wait}%&e&l초 후 게임이 시작됩니다." to {game::players::1} and {game::players::2}
remove 1 from {_wait}
wait 1 seconds
if number of {game::players::*} < {@startplayer}:
delete {game::task}
send "&a&l인원이 부족하여 게임이 종료됩니다." to {game::players::1} and {game::players::2}
if {_wait} <= 0:
set {game::task} to false
if {game::task} is false:
send "&a&l게임을 시작합니다." to {game::players::1} and {game::players::2}
execute command "/bridge.start" by console
if {p.1} isn't set:
set {p.1} to player
if {p.1} is set:
if {p.2} isn't set:
set {p.2} to player
if player is {p.1}:
give shears of unbreaking 5 to player
give 200 red wool to player
apply haste 3 to player for 10 minutes
wait 1 tick
teleport {p.1} to location at -0.523, 63, 10.501 in world "bri"
if player is {p.2}:
give shears of unbreaking 5 to player
give 200 blue wool to player
apply haste 3 to player for 10 minutes
wait 1 tick
teleport {p.2} to location at -0.460, 63, -33.515 in world "bri"
command /bridge.quit:
trigger:
if {play::%player%} is not set:
send "&a&l게임에 참여하지 않았습니다."
stop
delete {play::%player%}
remove player from {game::players::1} and {game::players::2}
send "&a&l%player%가 퇴장했습니다." to {game::players::1} and {game::players::2}
send "&a&l게임에서 퇴장했습니다."
command /bridge.start:
trigger:
send "&a&l게임을 시작했습니다." to {game::players::1} and {game::players::2}
wait {@playtime} seconds
send "&c&l게임이 종료됐습니다." to {game::players::1} and {game::players::2}
delete {game::*}
command /bridge.stop:
trigger:
message "&c&l성공적"
delete {play::*}
delete {game::*}
#이렇게 해보았는데 맞나요?
스크립터브혼
2021.07.25{game::players::*} 리스트는
line 24
의 조건문에서 2명을 초과할 수 없게 됩니다.send 이펙트의 패턴은
send %texts% to %senders%
입니다. 복수의 데이터 사용이 가능하기 때문에send "msg" to {game::players::*}
이렇게하면 두명 모두에게 보내집니다.이 코드를 사용한 것에 대하여 {game::players::*} 리스트가 있기 때문에 p.1과 p.2를 설정할 필요가 없다는 것을 알려드린겁니다.
line 50
부터line66
까지의 코드를 수정하세요.여기에 사용되는 p.1, p.2를 모두 변경하세요.
한포동
2021.07.25그렇다면 p.1과 p.2는 {game::players::1} {game::players::2}로 변경하면 될까요?
스크립터브혼
2021.07.25https://www.koreaminecraft.net/scriptqna/2029902 글 다시 보시고 한번더 고민해보세요.
{game::task} 변수가 false가 되었다는 것은 게임이 시작하기 위한 조건(인원수, 대기시간)을 모두 충족했다는 의미입니다.
그렇기 때문에 당연히 {game::players::*} 리스트에는 설정한 대로 두명의 플레이어가 있습니다.
p.1 p.2를 설정하려면 (더 많은 유저수 라도) 게임에 참가한 인원인 {game::players::*} 리스트를 가지고 해야합니다.
또한 이 기능은 게임 시작 준비가 모두 된 상태여야 하므로 대기시간(while)이 지난 뒤에 오는 조건문
if {game::task} is false:
에서 동작해야합니다.한포동
2021.07.26if {game::task} is false:
send "&a&l게임을 시작합니다." to {game::players::*}
execute command "/bridge.start" by console
if {game::players::*} isn't set:
set {game::players::*} to {p.1}
if {game::players::*} is set:
if {game::players::*} isn't set:
set {game::players::*} to {p.2}
if player is {p.1}:
teleport {p.1} to location at 38.399, 64, -71.568 in world "park"
if player is {p.2}:
teleport {p.2} to location at 38.468, 64, -73.533 in world "park"
이렇게 해보았는데... 어떤가요..?
스크립터브혼
2021.07.26https://www.koreaminecraft.net/scriptqna/2149827
링크 참고하셔서 들여쓰기 맞춰서 올려주세요.
한포동
2021.07.26스크립터브혼
2021.07.26앞서 말씀드렸다시피
if {game::task} is false:
조건문을 통과했다는 것은 앞선 게임 시작 조건을 모두 충족했다는 것입니다.게임 참기 인원이 2인으로 설정되어 있기 때문에 {game::players::*} 변수는 단 두명의 플레이어만 있을 수 있기 때문에
p.1 p.2를 세팅할 필요없이 바로 텔레포트 해주면 됩니다.
한포동
2021.07.26성공했습니다 알려주셔서 감사합니다!!