개인 자료란 (JE)

  서버 커뮤니티

Profile Ru_Nan 대표칭호 없음

Ru_Nan 642a599e50ad442cab0e91c0d4d2252a

Profile

질문하기 스크립트

명령어 실행 스크립트

2020.10.25 조회 수 996 추천 수 0
이해도 1.12 
게임버전 (JE) 모드버킷 
스크립트 애드온 2.2dev27 

/test 라고 했을때 1번 명령어와 2번명령어가 실행되는데

1번 명령어를 실패했을경우 2번 명령어가 실행되지 않게 되려면 어떻게 해야 합니까 




16개의 댓글

스크립터브혼
2020.10.25

1번 명령어 내에서 전역변수로 실패, 성공을 기록하시고
/test 명령에서 1번 명령 이후 전역변수가 성공일 때 2번 명령어를 실행하세요

Ru_Nan
2020.10.26
@스크립터브혼

혹시 조금더 자세히 설명해주 실 수 있나요

스크립터브혼
2020.10.26
@Ru_Nan
execute command "/test.command.1" by console
{pass} is true
delete {pass}
execute command "/test.command.2" by console

command /test.command.1:
    trigger:
        set {pass} to true

command /test.command.2:
    trigger:
        send "execute test.command.2"

이와같이 test.command.1 명령을 실행 한 후 {pass} 변수가 true인 경우에 test.command.2가 실행되도록 구성합니다.

그리고 test.command.1 명령어에서 {pass} 변수를 true로 바꾸어주면, 명령어를 실행한 후 {pass}변수를 비교하기때문에 조건을 만족하게 되어 test.command.2가 실행되죠.

Ru_Nan
2020.10.26
@스크립터브혼

위와 같이 하면 1~4번 줄이 invalid line-all code has to be put into trigger 이라고 합니다

스크립터브혼
2020.10.27
@Ru_Nan

1~4번줄은 핵심이 되는 구조적인 부분을 보여드린겁니다. 해당 코드가 실행될 수 있게 구성하세요.
invalid line-all code has to be put into trigger 라는 말이 코드가 실행될수있게 하라는말입니다. 번역기 돌려보세요~

Ru_Nan
2020.10.27
@스크립터브혼

execute console command "/교환"

{pass} is true

delete {pass}

execute console command "/교환1"

 

command /교환:

trigger:

execute console command "givemoney @p -100"

set {pass} to true

 

command /교환1:

trigger:

execute console command "/minecraft:give @p blockteamcoinmod:bronzecoin 1"

send "execute minecraft:give @p blockteamcoinmod:bronzecoin 1"


Ru_Nan
2020.10.27
@Ru_Nan

이런식으로는 안된다는 건가요?

 

Ru_Nan
2020.10.27
@스크립터브혼

아니면 1번 명령어를 /동화교환

2번 명령어를 /동화교환1으로 해서 만들어 주실 수 있나요?

스크립터브혼
2020.10.27
@Ru_Nan

"/test 라고 했을때 1번 명령어와 2번명령어가 실행"에서 /test 명령어에 들어갈 부분이 1~4번줄 입니다. 나머지는 작성하신 대로 하시면 됩니다.

Ru_Nan
2020.10.27
@스크립터브혼

command /test:

trigger:

execute console command "/교환"

 

{pass} is true

 

delete {pass}

 

execute console command "/교환1"

 

command /교환:

 

trigger:

 

execute console command "givemoney @p -100"

 

set {pass} to true

 

 

 

command /교환1:

 

trigger:

 

execute console command "/minecraft:give @p blockteamcoinmod:bronzecoin 1"

 

send "execute minecraft:give @p blockteamcoinmod:bronzecoin 1"

 

 

 

이런식으로 하면되는건가요?

 

Ru_Nan
2020.10.28
@스크립터브혼

이렇게 했는데도 1번 커맨드가 실패 했는데도 2번커맨드가 되네요

아무래도 2번째  커맨드에 익스큐트가 있어서 익스큐트후 그 변수 값을 주기 때문에 그 명령어를 성공했는지 인식을 못한듯 한데 이걸 어떻게 바꿔야 할까요?

스크립터브혼
2020.10.29
@Ru_Nan

/교환 명령어의 성공과 실패를 {pass}에 저장하는겁니다. true를 저장하셨으니 당연히 교환1 명령어가 실행되는 겁니다.

/givemoney @p -100 명령어의 성공, 실패는 스크립트에서 알수 없습니다.

해당 명령어로 변경된 데이터를 스크립트에서 참조할 수 있어야 성공했는지 실패했는지 비교할수 있습니다.

Ru_Nan
2020.10.29
@스크립터브혼

커맨드 블록에서 실행시 밑에 실패이유가 뜨길래 가능할 것 같아서 그랬습니다

Ru_Nan
2020.10.29
@스크립터브혼

플러그인으로 써 구현이 가능하다고 하는데 어떤식으로 하면 구현이 가능 할까요?

스크립터브혼
2020.10.30
@Ru_Nan

제가 플러그인으로 구현할수 있다고 했나요?

 

스크립트는 스크립트 외부의 명령에 대해서 성공, 실패를 구분할 수 없습니다.

플러그인으로 만든다해도 다른 플러그인 명령어의 성공, 실패는 구분 할 수 없어요.

 

Bukkit API에서 onCommand 메소드는 성공/실패 여부를 boolean으로 반환하라고 제시하고 있고,

실패로써 false를 반환하면 플레이어는 '잘못 입력된 명령어'라고 명령실패 메세지를 받습니다.

즉, 명령어의 실패는 입력된 명령어(라벨, 인수등) 자체가 잘못된 경우 이거나, 제작자가 의도를 가지고 실패하도록 제작된 경우입니다.

 

올바르게 입력된 명령어의 성공, 실패 여부는 제작자가 정의해야 되는 부분이고,

일반적으로 명령 수행 후 변경되는 데이터를 참조하여 바뀌면 성공, 바뀌지 않으면 실패를 판단합니다.

플러그인의 명령어로 플러그인의 데이터가 변경되었다면 해당 데이터를 참조할 수 있는 방법을 찾아보셔야 합니다.

뉴스 및 창작물
/files/thumbnails/477/930/003/262x150.crop.jpg?20241201030912

레드스톤

뉴진스 - Super Shy | 마크 노트블럭 커버

노트블럭전문가

2024-12-01

0

/files/thumbnails/483/916/003/262x150.crop.jpg?20241127115329

레드스톤

[노트블럭 커버] 뉴진스 - ETA 3

노트블럭전문가

2024-11-27

1

/files/thumbnails/150/925/003/262x150.crop.jpg?20241123005717

건축

응답하라 1988 ? 1

팀뉴일리시

2024-11-23

5

/files/thumbnails/761/908/003/262x150.crop.jpg?20241025153749

건축

서울 숭례문(崇禮門) 6

KHC

2024-10-25

2

/files/thumbnails/578/899/003/262x150.crop.jpg?20241010142350

건축

경주 월정교 1

KHC

2024-10-10

2