개인 자료란 (JE)

  서버 커뮤니티

Profile chs37041 대표칭호 없음
Profile

질문하기 스크립트

마인크래프트 스크립트 최적화

2022.02.28 조회 수 1316 추천 수 0
게임버전 (JE) 기타 
게임버전 (BE) 버킷 

options:

    c: &a&l[땅] &f설치권

    

command /땅지급:

    permission: land.op

    trigger:

        give 1 of red wool named "{@c}" to player

        

command /땅 [<text>] [<player>]:

    trigger:

        if arg 1 is not set:

            send ""

            send "{@c} 은 마인리스트 또는 이벤트, 상점에서 얻을 수 있으며, 1개만 설치가 가능합니다"

            send ""

            send "&a&l[땅]&f 범위 안에서는 &4&lPvp, 블럭설치,파괴, 상자 &f등 상호작용이 불가능 합니다"

            send "              단, 땅주인은 Pvp를 제외 한 모든 상호작용 가능"

            send ""

            send "&a&l[땅] &f/땅 &e초대 &c[&f닉네임&c] &f- 자신의 땅에 플레이어를 초대합니다."

            send "&a&l[땅] &f/땅 &e제거 &c[&f닉네임&c] &f- 자신의 땅에 플레이어를 제거합니다."

            send ""

            

        if arg 1 is "초대":

            if arg 2 is set:

                loop {땅::*}:

                    if loop-value is player:

                        add arg 2 to {땅권한.%player%::*}

                        send "{@c} &f당신의 땅에 해당 플레이어를 추가하였습니다."

                        stop

                        

                send "{@c} &f당신의 땅이 존재하지 않습니다."

                stop

                

        if arg 1 is "제거":

            if arg 2 is set:

                loop {땅권한.%player%::*}:

                    if loop-value is arg 2:

                        delete {땅권한.%player%::%loop-index%}

                        set {땅권한.%player%::*} to {땅권한.%player%::*}

                        send "{@c} &f당신의 땅에 해당 플레이어를 제거하였습니다."

                        stop

                        

                send "{@c} &f당신의 땅에 해당 플레이어가 존재하지 않습니다."

                stop

        

on place:

    if {땅범위.%player%::*} is not set:

        if name of player's tool is "{@c}":

            set {_땅} to event-location

            loop {땅::*}:

                set {_범위1} to {땅범위.%loop-value%::1}

                set {_범위2} to {땅범위.%loop-value%::2}

                

                add 48 to x-coord of {_범위1}

                remove 48 from z-coord of {_범위1}

                

                remove 48 from x-coord of {_범위2}

                add 48 to z-coord of {_범위2}

                if x coordinate of {_땅} is between x coordinate of {_범위1} and x coordinate of {_범위2}:

                    if z coordinate of {_땅} is between z coordinate of {_범위1} and z coordinate of {_범위2}:

                        #loop {땅권한.%loop-value%::*}:

                            #if loop-value-2 is player:

                            #    set {_범위1} to event-location

                            #    set {_범위2} to event-location

                            #    

                            #    add 24 to x-coord of {_범위1}

                            #    remove 24 from z-coord of {_범위1}

                            #    

                            #    remove 24 from x-coord of {_범위2}

                            #    add 24 to z-coord of {_범위2}

                            #    

                            #    add player to {땅::*}

                            #    add player to {땅권한.%player%::*}

                            #    add loop-value-1 to {땅권한.%player%::*}

                            #    set {땅범위.%player%::1} to {_범위1}

                            #    set {땅범위.%player%::2} to {_범위2}

                            #    

                            #    send "{@c} &f당신의 땅이 설정되었습니다."

                            #    stop

                        

                        cancel event

                        send "{@c} &f근처에 다른 땅이 존재해 설치할 수 없습니다."

                        stop

                        

            

            set {_범위1} to event-location

            set {_범위2} to event-location

            

            add 24 to x-coord of {_범위1}

            remove 24 from z-coord of {_범위1}

            

            remove 24 from x-coord of {_범위2}

            add 24 to z-coord of {_범위2}

            

            add player to {땅::*}

            add player to {땅권한.%player%::*}

            set {땅범위.%player%::1} to {_범위1}

            set {땅범위.%player%::2} to {_범위2}

            

            send "{@c} &f당신의 땅이 설정되었습니다."

            stop

            

    else:

        stop

        

on break:

    set {_땅} to event-location

    loop {땅::*}:

        if x coordinate of {_땅} is between x coordinate of {땅범위.%loop-value%::1} and x coordinate of {땅범위.%loop-value%::2}:

            if z coordinate of {_땅} is between z coordinate of {땅범위.%loop-value%::1} and z coordinate of {땅범위.%loop-value%::2}:

                loop {땅권한.%loop-value%::*}:

                    if loop-value-2 is player:

                        uncancel event

                        stop

                        

                cancel event

                send "{@c} &f당신은 이 땅에 대한 권한이 없습니다. "

                stop

                

on damage:

    if attacker is player:

        set {_땅} to event-location

        loop {땅::*}:

            if x coordinate of {_땅} is between x coordinate of {땅범위.%loop-value%::1} and x coordinate of {땅범위.%loop-value%::2}:

                if z coordinate of {_땅} is between z coordinate of {땅범위.%loop-value%::1} and z coordinate of {땅범위.%loop-value%::2}:

                    loop {땅권한.%loop-value%::*}:

                        if loop-value-2 is player:

                            uncancel event

                            stop

                                

                        cancel event

                        send "{@c} &f당신은 이 땅에 대한 권한이 없습니다." to attacker

                        stop

                        

on place:

    set {_땅} to event-location

    loop {땅::*}:

        if x coordinate of {_땅} is between x coordinate of {땅범위.%loop-value%::1} and x coordinate of {땅범위.%loop-value%::2}:

            if z coordinate of {_땅} is between z coordinate of {땅범위.%loop-value%::1} and z coordinate of {땅범위.%loop-value%::2}:

                loop {땅권한.%loop-value%::*}:

                    if loop-value-2 is player:

                        uncancel event

                        stop

                        

                cancel event

                send "{@c} &f당신은 이 땅에 대한 권한이 없습니다."

                stop


페이퍼 타이밍 뷰어로 확인 시 해당 스크립트를 사용 하면 핑이 유발 되는데 어떻게 해결 해야 할까요 ?

2개의 댓글

거너아나
2022.02.28

1. 여기는 javascript입니다 게시물을 스크립트 질문으로 옮겨주세요

2. 보통 이런건 loop문 때문에 랙이 발생하니 if {땅권한.%loop-value%::*} contains player: 하면 됩니다

HAN1110
2022.02.28

@허두

이거 스크립트로 옴겨주세요