개인 자료란 (JE)

  서버 커뮤니티

Profile sswind 대표칭호 없음
Profile

질문하기 스크립트

명령어가 작동이 안될때가 있어요 ㅠㅠ

2022.08.31 조회 수 120 추천 수 0
이해도 중급자(필요한 애드온을 찾아서 만들 수 있어요) 
게임버전 (JE) 1.12.2 
게임버전 (BE) 1.12.x 

현재 표지판 명령어 또는 엔피씨를 클릭씨 1회성으로 지급되는 코드를 짜고 있는데 작동이 될때가 있고 안될때가 있네요 ㅠㅠ 해결방법 아시는 분 계신가요?

variables:

    {상자표지판.%player%} = 1

    {그림표지판.%player%} = 1


command /상자방표지판:

    trigger:

        if {상자표지판.%player%} is 1:

            give 1 Sign named "&c상자잠금용표지판 &f(1회용)" to player

            set {상자표지판.%player%} to 0

        else:

            message "이미 표지판을 받았습니다"

            

command /그림방표지판:

    trigger:

        if {그림표지판.%player%} is 1:

            give 1 Sign named "&c문잠금용표지판 &f(1회용)" to player

            set {그림표지판.%player%} to 0

        else:

            message "이미 표지판을 받았습니다"

            

on drop:

    item is Sign:

        cancel event

                

on rightclick:

    if name of player's tool is "&c문잠금용표지판(1회용)":

        if block is not Iron Door:

            send "철문에만 사용 가능합니다."

            cancel event

            

    if name of player's tool is "&c상자잠금용표지판(1회용)":

        if block is not Chest:

            send "상자에만 사용 가능합니다."

            cancel event

    


command /표지판초기화:

    trigger:

        if player is op:

            set {상자표지판.%player%} to 1

            set {그림표지판.%player%} to 1 

            send "초기화되었습니다."

            

on rightclick on entity:

    if entity's name is "&b상자방 표지판 지급":

        execute player command "/상자방표지판"




5개의 댓글

qsef1256
2022.08.31

variables: 은 이름은 변수이지만 실제로는 상수를 정의하는 공간입니다. 저기다가 변수 써놓은거 요즘 보이기 시작하는데, 전부 틀렸고 작동 안합니다.

sswind
2022.08.31
@qsef1256

그러면 처음 코드작성을 할때 변수를 선언하면 안되는건가요? 그러면 어떻게 해야 1회성 명령어를 만들 수 있나요??

qsef1256
2022.08.31
@sswind

2가지 방법이 있습니다.

첫 번째는 on join/on first join, 그러니까 플레이어가 들어올 때 값 초기화(할당)을 해 주는 거고, 두 번째는 처음부터 is set 으로 구분 하는 겁니다. 처음에 호출할 때 set 되어 있을 리가 없으니까 is not set 은 무조건 true 거든요.

qsef1256
2022.08.31
@sswind

근데 is set 으로 구분하는 게 안전하다고 한 이유는, 수동 초기화는 실수 가능성이 있기 때문입니다. 다만 취향 차이일 수는 있어요, 들어올 때 직접 초기화 시키는 게 맞는 사람은 그냥 그렇게 하기도 합니다

qsef1256
2022.08.31

그리고 그런 용도라면 1,0으로 구분하는 것 보다는 is set/is not set으로 구분하는게 안전합니다.