개인 자료란 (JE)

  서버 커뮤니티

Profile 입술탑 대표칭호 없음
Profile

질문하기 스크립트

마인크래프트 시체 스크립트 오류

2023.02.22 조회 수 251 추천 수 0
이해도 초보자 
게임버전 (JE) 1.18.2 
게임버전 (BE) 관련없음 
스크립트 버전 2.6.4 

on death of player:

    set the block at the victim to player head

    add victim's location to {death::*}

    set {death.%victim's location%} to victim

    give 1 of skull of victim to victim

    delete {인벤토리.%victim%::*}

    set {_c.s} to 0

    loop 103 times:

        add slot {_c.s} of victim's inventory to {인벤토리.%victim%::*}

        add 1 to {_c.s}

            

on right click:

    if event-block is player head:

        loop {death::*}:

            loop players in radius 0.5 around loop-value-1:

                wait 0.15 seconds

                set {시체이름.%player%::*} to "%{death.%loop-value-1%}%님의 시체"

                open chest with 6 row named "%{death.%loop-value-1%}%님의 시체" to player

                play sound "block_stone_hit" with volume 1 with pitch 1 to player

                set {_cs} to 0

                loop 54 times:

                    set slot {_cs} of current inventory of player to {인벤토리.%{death.%loop-value-1%}%::%loop-number%}

                    add 1 to {_cs}    

                    

                    

on inventory close:

    loop all players:

        if {시체이름.%player%::*} is "%loop-player%님의 시체":

            play sound "block_stone_hit" with volume 1 with pitch 1 to player

            delete {시체이름.%player%::*}    

            set {_c.s} to 0

            delete {인벤토리.%loop-player%::*}

            loop 54 times:

                add slot {_c.s} of event-inventory to {인벤토리.%loop-player%::*}

                add 1 to {_c.s}

 

플레이어가 죽는다면, 플레이어가 죽은 자리에 머리가 떨어지고 그 머리를 우클릭 시, 죽은 플레이어의 아이템이 들어있는 구문을 작성했습니다. 하지만 실험 중

  loop players in radius 1 around loop-value-1:  

이 구문으로 인해 서로 다른 플레어어가 머리에 가깝게 밀접해 있는다면 상자의 내용물이 뒤바뀌고 없어지는 등의 오류들이 발생합니다.


이것을 고치기 위해 clicked block's location을 사용해보려 했지만  머리가 깔리는 위치가 victim's location과 일치하지 않아 실패했습니다. 


혹시 다른 방안이라던가, 오류를 수정할 수 있다면 도움 바랍니다 ㅠ  

1개의 댓글

さくら
2023.02.22

보여 주신 구문을 참고해서 수정이 필요해보이는 부분 찾아내서 수정도 해보고 해봤습니다.

on death of player:

    set the block at the victim's location to player head

    add victim's location to {death::*}

    set {death.%victim's location%} to victim

    give 1 of skull of victim to victim

    clear {inventory.%victim%}

    set {_c.s} to 0

    loop 103 times:

        add slot {_c.s} of victim's inventory to {inventory.%victim%::*}

        add 1 to {_c.s}


on right click:

    if event-block is player head:

        loop {death::*}:

            loop players within 0.5 blocks of loop-value-1:

                wait 0.15 seconds

                if {lock.%loop-value-1%} is not set:

                    set {lock.%loop-value-1%} to true

                    set {bodyname.%player%::*} to "%{death.%loop-value-1%}'s body"

                    open chest with 6 rows named "%{death.%loop-value-1%}'s corpse" to player

                    play sound "block.stone.hit" with volume 1 with pitch 1 to player

                    set {_cs} to 0

                    loop 54 times:

                        set slot {_cs} of player's inventory to {inventory.%{death.%loop-value-1%}%::%loop-number%}

                        add 1 to {_cs}

                    wait 1 second

                    clear {inventory.%player%}

                    loop 54 times:

                        add slot {_cs} of event-inventory to {inventory.%player%::*}

                        add 1 to {_cs}

                    delete {lock.%loop-value-1%}

                else:

                    send "&cThis corpse is currently being looted by someone else." to player


on inventory close:

    loop all players:

        if {corpsename.%player%::*} is "%player%'s corpse":

            play sound "block.stone.hit" with volume 1 with pitch 1 to player

            delete {corpsename.%player%::*}

            set {_c.s} to 0

            clear {inventory.%player%}

            loop 54 times:

                add slot {_c.s} of event-inventory to {inventory.%player%::*}

                add 1 to {_c.s}

"이 구문으로 인해 서로 다른 플레어어가 머리에 가깝게 밀접해 있는다면 상자의 내용물이 뒤바뀌고 없어지는 등의 오류들이 발생합니다."

이글을 참고하여 해결 방법을 하나 떠올린게 잠금 매니커즘 이용하는 최선의 방법을 떠올렸습니다.