개인 자료란 (JE)

  서버 커뮤니티

Profile Ru_Nan 대표칭호 없음

Ru_Nan 642a599e50ad442cab0e91c0d4d2252a

Profile

질문하기 스크립트

구문 작동 질문

2021.01.14 조회 수 1490 추천 수 0
이해도 1.12 
게임버전 (JE) 모드버킷 
스크립트 버전 입문자(아무것도 몰라요) 
스크립트 애드온 2.2 dev37 


Options:
    a : [&2게임&f]
    
command /개인상점 [<text>] [<text>] [<text>]:
    trigger:
        if arg 1 is not set:
            send "{@a} /개인상점 판매권 [가격] [물품이름]"
            send "{@a} /개인상점 변경권"
        if arg 1 is "판매권":
            set {_item} to player's tool
            set {개인상점::물품} to type of player's tool
            set {_가격} to arg 2
            remove player's tool from player's inventory
            give {_item} named "&f판매권" with lore "&f우클릭시 판매권이 %arg 2%가격에 등록됩니다" to player
            send "{@a} 정상적으로 변경되었습니다!"
            
        if arg 1 is "변경권":
            give 1 of enchanted_book named "&f개인상점 &f설정권" with lore "&f원하는 npc를 우클릭시 자신의 개인상점으로 변경됩니다" to player
            send "{@a} 정상적으로 지급되었습니다!"
            
        if arg 1 is "초기화":
            delete {itemname.%arg 2%::*}
            delete {pay.%arg 2%::*}
            delete {개인.&f%arg 2%}
            delete {개인.%arg 2%}
            delete {_i}
            send "{@a} %arg 2%님의 개인상점을 삭제하였습니다."
            send "{@a} %arg 2%님의 npc를 삭제해 주세요."


            
on right click:
    if {개인상점.%player%} is 1:
        if name of player's tool contain "&f판매권":
            if held item is not air:
                add 1 to {%player%.slot}
                set {_item} to type of player's tool
                remove player's tool from player's tool
                set {itemname.%player%::%{%player%.slot}%} to {_item}
                set {pay.%player%::%{%player%.slot}%} to "%{_가격}%"
                set {_여부} to "&e가능"
                send "{@a} 정상적으로 물건이 %{_가격}%원에 등록되었습니다."
                subtract 1 of player's tool from player's inventory
                
            
on rightclick on entity:
    if entity's name is "변경가능":
        if {개인상점.%player%} is 1:
            send "{@a} 이미 개인상점을 소지하고 있습니다."
        if player's tool's name is "&f개인상점 &f설정권":
            set {npc.%player%} to 1
            subtract 1 of player's tool from player's inventory
            execute player command "/npc sel"
            execute player command "/npc rename &f%player%"
            execute player command "/npc skin &f%player%"
            set {개인.&f%player%} to player
            set {개인상점.%player%} to 1
            set {npc.%player%} to 0
            send "{@a} 개인상점을 만드셨습니다."
            stop
    if {개인.%event-entity%} is set:
        open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점" to player
        set {openguiowner.%player%} to {개인.%event-entity%}
        loop {itemname.%{구매.%event-entity%}%::*}:
            if inventory name of player's current inventory contains "&f%{구매.%event-entity%}%&f님의 상점":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"
                    set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
                        
    if entity's name is "판매금지":
        open chest with 2 row named "&4판매금지" to player
        set {_slot2} to 0
        loop all players:
            set slot {_slot2} of current inventory of player to loop-player's skull named "%loop-player%"
            add 1 to {_slot2}
            wait 1 tick


on inventory click:
    if inventory name of player's current inventory contains "&4판매금지":
        if clicked item is air:
            exit
        set {개인.%event-entity%} to uncolored name of clicked item
        cancel event
        close inventory to player
        
        open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]" to player
        set {openguiowner.%player%} to {개인.%event-entity%}
        loop {itemname.%{구매.%event-entity%}%::*}:
            if inventory name of player's current inventory contains "&f%{구매.%event-entity%}%&f님의 상점":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"
                    set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
                    
    if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]":
        if clicked item is air:
            exit
        set {판매여부.%{개인.%event-entity%}%::%{_i}%} to "&4판매불가" 
        cancel event
        close inventory to player

만들고 있는 개인상점 시스템입니다. 여기서 문제는 판매권을 우클릭시 상점에 아이템에 등록은 되는데 가격과 물품의 상태가 정상적으로 되지 않고 <none>이라고 뜨는것입니다.

두번째, 물품이 등록 되어 있을때 판매금지에서 해당 플레이어의 머리를 누르면 플레이어의 상대방의 상점물품이 뜨고 선택한 아이템만 판매 불가가 되어야 하는데 머리를 누르면 그즉시 상점의 모든 아이템이 판매불가로 바뀌게 됩니다.

도와주십쇼




18개의 댓글

스크립터브혼
2021.01.14

> "판매권을 우클릭시 상점에 아이템에 등록은 되는데 가격과 물품의 상태가 정상적으로 되지 않고 <none>이라고 뜨는것"

해당 문제가 발생하는 코드가 어디인지 표시해주세요.
해당 코드에 사용된 변수가 어떤 값을 가지고 있는지, 어떻게 활용되는지 같이 설명 바랍니다.


> "물품이 등록 되어 있을때 판매금지에서 해당 플레이어의 머리를 누르면 플레이어의 상대방의 상점물품이 뜨고 선택한 아이템만 판매 불가가 되어야 하는데 머리를 누르면 그즉시 상점의 모든 아이템이 판매불가로 바뀌게 됩니다. "

마찬가지 입니다. 문제가 발생하는 위치를 표시하고, 사용된 변수의 값과 활용에 대해서 설명 바랍니다.


제가 코드 전체를 하나하나 리딩할 수 가 없어요. 쉽게 리딩할 수 있게 코드에 대한 설명을 자세히 해주세요...

Ru_Nan
2021.01.14
@스크립터브혼

일단 판매권에 대한것 입니다

if arg 1 is "판매권":

set {_item} to player's tool

set {_가격} to arg 2

remove player's tool from player's inventory

give {_item} named "&f판매권" with lore "&f우클릭시 판매권이 %arg 2%가격에 등록됩니다" to player

send "{@a} 정상적으로 변경되었습니다!"

>{_item}이라는 변수에 플레이어의 아이템을 저장한다

>arg2를 {_가격}이라는 변수에 저장을 합니다

>들고있는 아이템을 없애고 판매권이라는 이름과 위에있는 설명을 가진 아이템을 줍니다.

 

판매권을 우클릭시 실행되는 코드입니다

on right click:

if {개인상점.%player%} is 1:

if name of player's tool contain "&f판매권":

if held item is not air:

add 1 to {%player%.slot}

set {_item} to type of player's tool

remove player's tool from player's tool

set {itemname.%player%::%{%player%.slot}%} to {_item}

set {pay.%player%::%{%player%.slot}%} to "%{_가격}%"

set {판매여부.%{개인.%player%}%::%{_i}%} to "&e가능"

send "{@a} 정상적으로 물건이 %{_가격}%원에 등록되었습니다."

subtract 1 of player's tool from player's inventory

우클릭시

{개인상점.%player%} 라는 변수는 플레이어가 개인상점을 가지게 된다면 1로 설정하게 했습니다

>아이템의 이름이 판매권이라면

>{%player%.slot}개인의 슬롯 변수에 1을 더하는 작업입니다.

>들고있는 아이템의 타입을 {_item}이라는 변수에 저장합니다

>{itemname.%player%::%{%player%.slot}%} 변수의 슬롯에 아까 저장한 아이템을 등록합니다.

>{pay.%player%::%{%player%.slot}%}에 판매권에서 등록한 {_가격}을 등록한다

>{판매여부.%{개인.%player%}%::%{_i}%} 에 가능이라는 변수를 등록합니다.

 

개인상점을 우클릭시 열리는 상점입니다.

if {개인.%event-entity%} is set:

open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점" to player

set {openguiowner.%player%} to {개인.%event-entity%}

loop {itemname.%{구매.%event-entity%}%::*}:

if inventory name of player's current inventory contains "&f%{구매.%event-entity%}%&f님의 상점":

set {_i} to loop-index parsed as integer

delete {_|}

if lore of loop-value is not "":

set {_|} to "&f||"

else:

set {_|} to ""

set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}

set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}

if {_b} is "0":

set {_설명1} to loop-value

set line 1 of lore of {_설명1} to "%lore of loop-value%"

set slot {_i} - 1 of current inventory of player to {_설명1}

else:

set {_설명2} to loop-value

set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"

set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"

set slot {_i} - 1 of current inventory of player to {_설명2}

 

판매금지를 하는 부분입니다.

 

if entity's name is "판매금지":

open chest with 2 row named "&4판매금지" to player

set {_slot2} to 0

loop all players:

set slot {_slot2} of current inventory of player to loop-player's skull named "%loop-player%"

add 1 to {_slot2}

wait 1 tick

#판매금지라는 npc를 클릭했을때 gui가 열리고 플레이어의 머리가 뜨게 됩니다

 

on inventory click:

if inventory name of player's current inventory contains "&4판매금지":

if clicked item is air:

exit

set {개인.%event-entity%} to uncolored name of clicked item

cancel event

close inventory to player

#머리를 눌르면 머리의 이름이 {개인.%event-entity%} 에 저장됩니다

 

open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]" to player

set {openguiowner.%player%} to {개인.%event-entity%}

loop {itemname.%{구매.%event-entity%}%::*}:

if inventory name of player's current inventory contains "&f%{구매.%event-entity%}%&f님의 상점":

set {_i} to loop-index parsed as integer

delete {_|}

if lore of loop-value is not "":

set {_|} to "&f||"

else:

set {_|} to ""

set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}

set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}

if {_b} is "0":

set {_설명1} to loop-value

set line 1 of lore of {_설명1} to "%lore of loop-value%"

set slot {_i} - 1 of current inventory of player to {_설명1}

else:

set {_설명2} to loop-value

set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"

set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"

set slot {_i} - 1 of current inventory of player to {_설명2}

 

#그사람이 판매하고 있는 물품이 뜨는 gui입니다 위에 상점을 여는 코드와 같습니다

if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]":

if clicked item is air:

exit

set {판매여부.%{개인.%event-entity%}%::%{_i}%} to "&4판매불가"

cancel event

close inventory to player

#판매하고 있는 물품이 뜨는 gui에서 아이템을 누르게 되면 누른아이템의 {판매여부.%{개인.%event-entity%}%::%{_i}%} 에 판매불가라는 변수를 저장합니다.

 

이곳 판매금지의 문제점은 그사람이 아무 물품도 등록하지 않은 상태에서는 그사람의 머리를 누를시 gui가 열립니다

하지만 누른 사람이 물품을 등록한 상태에서는 gui가 열리지 않고 모든 물품의 판매상태 즉 {판매여부.%{개인.%event-entity%}%::%{_i}%} 가 전부 판매 불가가 된다는 점입니다.

 

스크립터브혼
2021.01.14
@Ru_Nan

1. 변수이름 앞에 언더바_가 있으면 지역변수입니다.

지역변수는 실행되는 코드 블록을 벗어나지 못합니다.


> line 40 : set {pay.%player%::%{%player%.slot}%} to "%{_가격}%"

이 부분에서 {_가격} 변수엔 아무것도 들어있지 않습니다.

전역/지역변수가 올바르게 사용됐는지 검토하시길 바랍니다.

지역변수의 경우 세팅값이 있는지 확인하세요.

변수에 대한 설명은 [예제분석3 - 변수의 종류와 쓰임]을 참고하세요


2. 무의미한 코드

> line 41 : set {_여부} to "&e가능"

{_여부} 변수는 세팅만 하고 한 번도 사용되지 않았고요.


> line 56 : set {개인.&f%player%} to player

{개인.%player%} 변수와 {개인.&f%player%} 변수의 차이를 모르겠습니다.

{개인.&f%player%} 변수도 세팅만 하고 쓰이는 곳은 없군요.


> line 102 : {openguiowner.%player%} to {개인.%event-entity%}

이 변수도 용도가 뭔지 모르겠습니다. 이것도 세팅만 하고 쓰이는 곳이 없네요.


3.  조건문이 잘못됐습니다.

> line 93 : on inventory click:

> line 94 : if inventory name of player's current inventory contains "&4판매금지":

> line 101 : open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]" to player

93번줄에서 시작하는 클릭이벤트에서 첫번째 조건문인 94번줄을 통과한 후, 101줄에서 판매금지 인벤토리를 열어줍니다.


> line 123 : if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]":

> line 126 : set {판매여부.%{개인.%event-entity%}%::%{_i}%} to "&4판매불가" 

그 뒤 두번째 조건문 123번줄로 넘어갑니다.

해당 조건문에서는 판매불가로 세팅하도록 동작합니다.


이 코드에서 조건문은 if ~ else if의 형태로 사용했어야 합니다.

조건문에 대한 설명은 [예제분석5 - 컨디션과 조건문의 차이 ]참고하세요.



지금 코드의 상태는 오류를 고치는 것이 문제가 아닙니다. 코드가 전체적으로 상당히 지저분합니다. 

자신이 구현하고자 하는 알고리즘을 다시 적립하시고, 구현에 필요한 코드인지 아닌지 전체를 검토하셔야 합니다.

지저분한 코드는 가독성은 물론이고 지금처럼 유지보수하는 것도 어렵습니다.

웬만하면 제가 리딩해서 그냥 말씀드리는데 도저히 읽기가 어려워서 설명을 부탁드렸습니다.

Ru_Nan
2021.01.15
@스크립터브혼
Options:
    a : [&2파산게임&f]
    
command /개인상점 [<text>] [<text>] [<text>]:
    trigger:
        if arg 1 is not set:
            send "{@a} /개인상점 판매권 [가격] [물품이름]"
            send "{@a} /개인상점 변경권"
        if arg 1 is "판매권":
            set {_item} to player's tool
            set {개인상점::물품} to type of player's tool
            set {물품} to type of player's tool
            set {가격} to arg 2
            set {개인상점::물품::가격} to arg 2
            remove player's tool from player's inventory
            give {_item} named "&f판매권" with lore "&f우클릭시 판매권이 %arg 2%가격에 등록됩니다" to player
            send "{@a} 정상적으로 변경되었습니다!"
            
        if arg 1 is "변경권":
            give 1 of enchanted_book named "&f개인상점 &f설정권" with lore "&f원하는 npc를 우클릭시 자신의 개인상점으로 변경됩니다" to player
            send "{@a} 정상적으로 지급되었습니다!"
            
        if arg 1 is "초기화":
            delete {itemname.%arg 2%::*}
            delete {pay.%arg 2%::*}
            delete {개인.&f%arg 2%}
            delete {개인.%arg 2%}
            delete {%arg 2%.slot}
            send "{@a} %arg 2%님의 개인상점을 삭제하였습니다."
            send "{@a} %arg 2%님의 npc를 삭제해 주세요."


            
on right click:
    if {개인상점.%player%} is 1:
        if name of player's tool contain "&f판매권":
            if held item is not air:
                add 1 to {%player%.slot}
                set {_item2} to type of player's tool
                remove player's tool from player's tool
                set {itemname.%player%::%{%player%.slot}%} to {_item2}
                set {pay.%player%::%{%player%.slot}%} to {개인상점::물품::가격}
                set {판매여부.%{개인.%player%}%::%{_i}%} to "&e가능"
                send "{@a} 정상적으로 물건이 %{개인상점::물품::가격}%원에 등록되었습니다."
                subtract 1 of player's tool from player's inventory


                
            
on rightclick on entity:
    if entity's name is "변경가능":
        if {개인상점.%player%} is 1:
            send "{@a} 이미 개인상점을 소지하고 있습니다."
        if player's tool's name is "&f개인상점 &f설정권":
            set {npc.%player%} to 1
            subtract 1 of player's tool from player's inventory
            execute player command "/npc sel"
            execute player command "/npc rename &f%player%"
            execute player command "/npc skin %player%"
            set {개인.&f%player%} to player
            set {개인상점.%player%} to 1
            set {npc.%player%} to 0
            send "{@a} 개인상점을 만드셨습니다."
            stop
    if {개인.%event-entity%} is set:
        open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점" to player
        set {openguiowner.%player%} to {개인.%event-entity%}
        loop {itemname.%{구매.%event-entity%}%::*}:
            if inventory name of player's current inventory contains "&f%{구매.%event-entity%}%&f님의 상점":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"
                    set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
                        
    if entity's name is "판매금지":
        open chest with 2 row named "&4판매금지" to player
        set {_slot2} to 0
        loop all players:
            set slot {_slot2} of current inventory of player to loop-player's skull named "%loop-player%"
            add 1 to {_slot2}
            wait 1 tick
            
    if entity's name is "천사":
        open chest with 2 row named "&e천사" to player
        set {_slot2} to 0
        loop all players:
            set slot {_slot2} of current inventory of player to loop-player's skull named "%loop-player%"
            add 1 to {_slot2}
            wait 1 tick


on inventory click:
    if inventory name of player's current inventory contains "&e천사":
        set {개인.%event-entity%} to uncolored name of clicked item
        open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점 [&e천사&f]" to player
        loop {itemname.%{구매.%event-entity%}%::*}:
            if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&e천사&f]":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"
                    set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
    if clicked item is air:
        exit                    
        if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&e천사&f]":                
            set {판매여부.%{개인.%event-entity%}%::%{_i}%} to "&e가능" 
            close inventory to player


on inventory click:
    if inventory name of player's current inventory contains "&4판매금지":
        set {개인.%event-entity%} to uncolored name of clicked item
        open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]" to player
        loop {itemname.%{구매.%event-entity%}%::*}:
            if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"
                    set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
    if clicked item is air:
        exit                    
        if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]":                
            set {판매여부.%{개인.%event-entity%}%::%{_i}%} to "&4판매불가" 
            close inventory to player


형식으로 고쳐서 다른 문제점들은 모두 해결되었습니다.

하지만 3가지 문제점이 생겼습니다.

물품을 등록할때 물품의 상태가 무조건 판매 불가로 되는 것 입니다

두번째는 판매권에는 각각의 가격이 되어 있는데 첫번째 등록한 판매권에 가격에 동일시 되어서 등록되어 집니다

{openguiowner.%player%}변수는 나중에 상점에기능을 하기 위해서 추가해놓은 변수 입니다

3번째는 천사나 판매금지에서 그아이템을 누르면 아이템의 상태가 변경되어야 하는데 변경 되지 않습니다


스크립터브혼
2021.01.15
@Ru_Nan

첫번째, 물픔을 등록할 때 상태를 저장하는 변수가 뭔가요. 그 변수가 쓰인 코드를 알려주세요.

두번째, 판매권의 가격을 저장하는 변수와 등록 될 때 해당 변수가 어떻게 쓰였는지 코드 위치를 알려주세요.

코드 전체 긁어서 올리지마시고, 변수가 쓰인 코드만 올리세요.

세번째. [Exit]는 코드의 동작을 멈추는 이펙트입니다.


그리고 [예제분석3 - 변수의 종류와 쓰임]에 대한 설명 꼭 읽으시길 바랍니다.

Ru_Nan
2021.01.16
@스크립터브혼

물품을 등록할 때 사용하는 변수는 {판매여부.%{개인.%event-entity%}%::%{_i}%} 입니다.

 

변수가 쓰인 부분은

 

if {개인.%event-entity%} is set:

open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점" to player

set {openguiowner.%player%} to {개인.%event-entity%}

loop {itemname.%{구매.%event-entity%}%::*}:

if inventory name of player's current inventory contains "&f%{구매.%event-entity%}%&f님의 상점":

set {_i} to loop-index parsed as integer

delete {_|}

if lore of loop-value is not "":

set {_|} to "&f||"

else:

set {_|} to ""

set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}

set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}

if {_b} is "0":

set {_설명1} to loop-value

set line 1 of lore of {_설명1} to "%lore of loop-value%"

set slot {_i} - 1 of current inventory of player to {_설명1}

else:

set {_설명2} to loop-value

set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"

set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"

set slot {_i} - 1 of current inventory of player to {_설명2}

 

상점을 여는 구문

판매금지엔티티

천사엔티티에서 사용이 됩니다

 

if entity's name is "판매금지":

open chest with 2 row named "&4판매금지" to player

set {_slot2} to 0

loop all players:

set slot {_slot2} of current inventory of player to loop-player's skull named "%loop-player%"

add 1 to {_slot2}

wait 1 tick

if entity's name is "천사":

open chest with 2 row named "&e천사" to player

set {_slot2} to 0

loop all players:

set slot {_slot2} of current inventory of player to loop-player's skull named "%loop-player%"

add 1 to {_slot2}

wait 1 tick

 

on inventory click:

if inventory name of player's current inventory contains "&e천사":

set {개인.%event-entity%} to uncolored name of clicked item

open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점 [&e천사&f]" to player

loop {itemname.%{구매.%event-entity%}%::*}:

if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&e천사&f]":

set {_i} to loop-index parsed as integer

delete {_|}

if lore of loop-value is not "":

set {_|} to "&f||"

else:

set {_|} to ""

set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}

set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}

if {_b} is "0":

set {_설명1} to loop-value

set line 1 of lore of {_설명1} to "%lore of loop-value%"

set slot {_i} - 1 of current inventory of player to {_설명1}

else:

set {_설명2} to loop-value

set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"

set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"

set slot {_i} - 1 of current inventory of player to {_설명2}

if clicked item is air:

exit

if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&e천사&f]":

set {판매여부.%{개인.%event-entity%}%::%{_i}%} to "&e가능"

close inventory to player

 

on inventory click:

if inventory name of player's current inventory contains "&4판매금지":

set {개인.%event-entity%} to uncolored name of clicked item

open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]" to player

loop {itemname.%{구매.%event-entity%}%::*}:

if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]":

set {_i} to loop-index parsed as integer

delete {_|}

if lore of loop-value is not "":

set {_|} to "&f||"

else:

set {_|} to ""

set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}

set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}

if {_b} is "0":

set {_설명1} to loop-value

set line 1 of lore of {_설명1} to "%lore of loop-value%"

set slot {_i} - 1 of current inventory of player to {_설명1}

else:

set {_설명2} to loop-value

set line 1 of lore of {_설명2} to "%{_|}%&f||&b[ &f가격 &b] &f%{_b}%||||"

set line 2 of lore of {_설명2} to "%{_여부}% &f판매상태"

set slot {_i} - 1 of current inventory of player to {_설명2}

if clicked item is air:

exit

if inventory name of player's current inventory contains "&f%{개인.%event-entity%}%&f님의 상점 [&4판매금지&f]":

set {판매여부.%{개인.%event-entity%}%::%{_i}%} to "&4판매불가"

close inventory to player

 

exit를 사용한 이유는 아이템이 지정된 슬롯이 아닌 빈 슬롯을 눌렀을때 멈추기 위해서 입니다

 

스크립터브혼
2021.01.16
@Ru_Nan
on right click:
    if {개인상점.%player%} is 1:
        if name of player's tool contain "&f판매권":
            if held item is not air:
                add 1 to {%player%.slot}
                set {_item2} to type of player's tool
                remove player's tool from player's tool
                set {itemname.%player%::%{%player%.slot}%} to {_item2}
                set {pay.%player%::%{%player%.slot}%} to {개인상점::물품::가격}
                set {판매여부.%{개인.%player%}%::%{_i}%} to "&e가능"
                send "{@a} 정상적으로 물건이 %{개인상점::물품::가격}%원에 등록되었습니다."
                subtract 1 of player's tool from player's inventory

{판매여부.~} 변수에 쓰인 {_i}가 세팅된 값이 없습니다.
이렇게 되면 이 변수의 풀 네임은 {판매여부.%{개인.%player%}%::<none>} 이 됩니다.

이 변수가 쓰였다는 코드에서는
> line 141 : set {_i} to loop-index parsed as integer
{_i} 변수를 세팅했기 때문에<none>이 아니므로

> line 148 : set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}
이곳에서 쓰인 {판매여부.~} 변수는 위 코드에서 쓰인 변수와 다를 수 밖에 없습니다.

물품을 등록할 때 사용하는 변수가 {판매여부.%{개인.%event-entity%}%::%{_i}%} 라면
{개인.%event-entity%} 변수와 {_i} 변수에 대해서도 설명이 있어합니다.
각각의 변수가 코드 내에서 어디서 생성되고, 어떤값을 가지고, 어디서 변경되고, 어디서 소멸하는지 전부 알고 있어야합니다.

루난님의 문제는 자신이 만든 코드가 무슨일을 하고, 자신이 정의한 변수가 어떻게 쓰이는지 모른다는 것에 있습니다.
다른 질문에 대해서 답변 못하겠습니다. 윗 덧글에서도 말씀드렸지만 코드 전체 다시 리딩하세요.
어떤 변수가 어떻게 쓰였는지 다시 정리하시고, 기억할 자신이 없으시면 주석으로 설명을 남겨두세요.
이곳 덧글에 남기라는게 아니라 자신이 만든 스크립트에 남기라는 말입니다.



루난님이 먼저 해결해야할 코드는 아래와 같습니다.

Options:
    a : [&2파산게임&f]
    
command /개인상점 [<text>] [<text>] [<text>]:
    trigger:
        if arg 1 is not set:
            send "{@a} /개인상점 판매권 [가격] [물품이름]"
            send "{@a} /개인상점 변경권"
        if arg 1 is "판매권":
            set {_item} to player's tool
            set {개인상점::물품} to type of player's tool
            set {물품} to type of player's tool
            set {가격} to arg 2
            set {개인상점::물품::가격} to arg 2
            remove player's tool from player's inventory
            give {_item} named "&f판매권" with lore "&f우클릭시 판매권이 %arg 2%가격에 등록됩니다" to player
            send "{@a} 정상적으로 변경되었습니다!"
            
        if arg 1 is "변경권":
            give 1 of enchanted_book named "&f개인상점 &f설정권" with lore "&f원하는 npc를 우클릭시 자신의 개인상점으로 변경됩니다" to player
            send "{@a} 정상적으로 지급되었습니다!"
            
        if arg 1 is "초기화":
            delete {itemname.%arg 2%::*}
            delete {pay.%arg 2%::*}
            delete {개인.&f%arg 2%}
            delete {개인.%arg 2%}
            delete {%arg 2%.slot}
            send "{@a} %arg 2%님의 개인상점을 삭제하였습니다."
            send "{@a} %arg 2%님의 npc를 삭제해 주세요."

on right click:
    if {개인상점.%player%} is 1:
        if name of player's tool contain "&f판매권":
            if held item is not air:
                add 1 to {%player%.slot}
                set {_item2} to type of player's tool
                remove player's tool from player's tool
                set {itemname.%player%::%{%player%.slot}%} to {_item2}
                set {pay.%player%::%{%player%.slot}%} to {개인상점::물품::가격}
                set {판매여부.%{개인.%player%}%::%{_i}%} to "&e가능"
                send "{@a} 정상적으로 물건이 %{개인상점::물품::가격}%원에 등록되었습니다."
                subtract 1 of player's tool from player's inventory

on rightclick on entity:
    if entity's name is "변경가능":
        if {개인상점.%player%} is 1:
            send "{@a} 이미 개인상점을 소지하고 있습니다."
        if player's tool's name is "&f개인상점 &f설정권":
            set {npc.%player%} to 1
            subtract 1 of player's tool from player's inventory
            execute player command "/npc sel"
            execute player command "/npc rename &f%player%"
            execute player command "/npc skin %player%"
            set {개인.&f%player%} to player
            set {개인상점.%player%} to 1
            set {npc.%player%} to 0
            send "{@a} 개인상점을 만드셨습니다."
            stop

판매권 생성, 판매권 사용, 개인상점 개설
이 세부분부터 올바르게 고치지 않으면 이후의 코드는 아무의미 없습니다.

그리고 주석 사용하세요.

Ru_Nan
2021.01.19
@스크립터브혼
Options:
    a : [&2파산게임&f]
    
command /개인상점 [<text>] [<text>] [<text>]:
    trigger:
        if arg 1 is not set:
            send "{@a} /개인상점 판매권 [가격] [물품이름]"
            send "{@a} /개인상점 변경권"
        if arg 1 is "판매권":
            set {_item} to player's tool
            set {개인상점::물품} to type of player's tool
            set {_물품} to type of player's tool
            set {개인상점::%{_물품}%::가격} to arg 2
            remove player's tool from player's inventory
            give {_item} named "&f판매권" with lore "&f우클릭시 판매권이 %{개인상점::%{_물품}%::가격}%가격에 등록됩니다" to player
            send "{@a} 정상적으로 변경되었습니다!"
            
        if arg 1 is "변경권":
            give 1 of enchanted_book named "&f개인상점 &f설정권" with lore "&f원하는 npc를 우클릭시 자신의 개인상점으로 변경됩니다" to player
            send "{@a} 정상적으로 지급되었습니다!"
            
        if arg 1 is "초기화":
            delete {itemname.%arg 2%::*}
            delete {pay.%arg 2%::*}
            delete {개인.&f%arg 2%}
            delete {개인.%arg 2%}
            delete {%arg 2%.slot}
            send "{@a} %arg 2%님의 개인상점을 삭제하였습니다."
            send "{@a} %arg 2%님의 npc를 삭제해 주세요."


            
on right click:
    if {개인상점.%player%} is 1:
        if name of player's tool contain "&f판매권":
            if held item is not air:
                add 1 to {%player%.slot}
                set {_item2} to type of player's tool
                set {_i} to player's tool
                set {_물품} to type of player's tool
                remove player's tool from player's tool
                set {itemname.%player%::%{%player%.slot}%} to {_item2}
                set {pay.%player%::%{%player%.slot}%} to {개인상점::%{_물품}%::가격}
                set {판매여부.%player%::%{%player%.slot}%} to "&e가능"
                send "{@a} 정상적으로 물건이 %{개인상점::%{_물품}%::가격}%원에 등록되었습니다."
                send "{@a} 물품 상태 : %{판매여부.%player%::%{%player%.slot}%}%"
                subtract 1 of player's tool from player's inventory


                
            
on rightclick on entity:
    if entity's name is "변경가능":
        if {개인상점.%player%} is 1:
            send "{@a} 이미 개인상점을 소지하고 있습니다."
        if player's tool's name is "&f개인상점 &f설정권":
            set {npc.%player%} to 1
            subtract 1 of player's tool from player's inventory
            execute player command "/npc sel"
            execute player command "/npc rename &f%player%"
            execute player command "/npc skin %player%"
            set {개인.&f%player%} to player
            set {개인상점.%player%} to 1
            set {npc.%player%} to 0
            send "{@a} 개인상점을 만드셨습니다."
            stop
    if {개인.%event-entity%} is set:
        open chest with 3 row named "&f%{개인.%event-entity%}%&f님의 상점" to player
        set {openguiowner.%player%} to {개인.%event-entity%}
        loop {itemname.%{구매.%event-entity%}%::*}:
            if inventory name of player's current inventory contains "&f%{구매.%event-entity%}%&f님의 상점":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%event-entity%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%event-entity%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "%{_|}%&b[ &f가격 &b] : &f%{_b}%"
                    set line 2 of lore of {_설명2} to "&f판매상태 : %{_여부}%"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
                        
    if entity's name is "판매금지":
        open chest with 2 row named "&4판매금지" to player
        set {_slot2} to 0
        loop all players:
            set slot {_slot2} of current inventory of player to loop-player's skull named "%loop-player%"
            add 1 to {_slot2}
            wait 1 tick
            
on inventory click:
    if inventory name of player's current inventory contains "&4판매금지":
        if clicked item is air:
            exit
        set {판매금지} to uncolored name of clicked item
        cancel event
        close inventory to player    
        wait 1 second
        
        open chest with 3 row named "&f%{판매금지}%&f님의 상점 [&4판매금지&f]" to player
        loop {itemname.%{구매.%{판매금지}%}%::*}:
            if inventory name of player's current inventory contains "&f%{개인.%{판매금지}%}%&f님의 상점 [&4판매금지&f]":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%{판매금지}%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%{판매금지}%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "&b[ &f가격 &b] : &f%{_b}%"
                    set line 2 of lore of {_설명2} to "&f판매상태 : %{_여부}%"
                    set slot {_i} - 1 of current inventory of player to {_설명2}

브혼님 덕분에  다른 모든 문제점을 해결했습니다. 판매금지창에서 아이템을 클릭시 등록된 그아이템을 판매상태를 바꾸려면 어떻게 해야 할까요?

스크립터브혼
2021.01.19
@Ru_Nan

인벤토리에 나열되는 아이템의 순서는 {itemname.%player%::*} 리스트의 순서이고,

이 리스트의 인덱스는 판매권 아이템으로 우클릭 할 때 {%player%.slot}변수를 통해 1씩 증가합니다.

동시에, {판매여부.%player%::*} 리스트에도 같은 변수를 인덱스로하여 판매 여부가 결정됩니다.

즉, 인벤토리에 나열된 아이템의 순서와 판매여부의 값의 순서가 1:1대응이 된다는 거구요.


인벤토리의 슬롯번호는 0부터 시작하고 리스트의 인덱스는 1부터 시작하기 때문에

클릭한 아이템의 판매여부는 클릭한 슬롯번호보다 1 큰 수를 인덱스로가지는 {판매여부.%player%::*} 리스트의 값입니다.

클릭한 슬롯의 슬롯번호는 [Slot Index]익스프레션으로 얻을 수 있습니다.

이 값을 인덱스로 하여 {판매여부.%player%::*} 리스트의 값을 수정하면 됩니다.

동시에,  클릭한 아이템의 로어도 변경하고요.

Ru_Nan
2021.01.20
@스크립터브혼
on inventory click:
    if inventory name of player's current inventory contains "&4판매금지":
        if clicked item is air:
            exit
        set {판매금지유저} to uncolored name of clicked item
        cancel event
        close inventory to player    
        wait 2 tick
        
        open chest with 3 row named "&f%{개인.%{판매금지유저}%}%&f님의 상점 [&4판매금지&f]" to player
        loop {itemname.%{구매.%{판매금지유저}%}%::*}:
            if inventory name of player's current inventory contains "&f%{개인.%{판매금지}%}%&f님의 상점 [&4판매금지&f]":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%{판매금지유저}%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%{판매금지유저}%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "&b[ &f가격 &b] : &f%{_b}%"
                    set line 2 of lore of {_설명2} to "&f판매상태 : %{_여부}%"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
                    
#판매금지 아이템을 우클릭시 물품의 상태를 판매금지로 바꿔주는 구문                
on inventory click:
    if inventory name of player's current inventory contains "&f%{개인.%{판매금지유저}%}%&f님의 상점 [&4판매금지&f]":        
        if clicked item is air:
            exit
        set {판매여부.%{판매금지유저}%::%index of clicked slot + 1%} to "&4판매금지"
        cancel event
        close inventory to player

이런식으로 수정했음에도 작동되지 않습니다.

스크립터브혼
2021.01.20
@Ru_Nan

첫번째 조건문을 통과하나요?

두번째 조건문에서 멈추지 않았나요?

변수이름으로 쓰인 변수와 익스프레션이 올바른 값을 가지고 있나요?

set 이펙트로 변수가 재대로 변경됐음을 확인했나요?

Ru_Nan
2021.01.21
@스크립터브혼

첫번째 조건문을 통과하지 않는 다는 것을 알았습니다

 왜 통과하지 않는지는 이유를 모르겠습니다.

#판매금지창에서 해당하는 사람의 머리를 우클릭시 그사람의 판매금지 창이 열리게 되는 구문        

on inventory click:
    if inventory name of player's current inventory contains "&4판매금지":
        if clicked item is air:
            exit
        set {판매금지유저} to uncolored name of clicked item
        cancel event
        close inventory to player    
        wait 2 tick
        
        open chest with 3 row named "&f%{개인.%{판매금지유저}%}% [&4판매금지&f]" to player
        set {owner.%player%} to {개인.%{판매금지유저}%}
        loop {itemname.%{구매.%{판매금지유저}%}%::*}:
            if inventory name of player's current inventory contains "&f%{개인.%{판매금지유저}%}% [&4판매금지&f]":
                set {_i} to loop-index parsed as integer
                delete {_|}
                if lore of loop-value is not "":
                    set {_|} to "&f||"
                else:
                    set {_|} to ""
                set {_b} to {pay.%{개인.%{판매금지유저}%}%::%{_i}%}
                set {_여부} to {판매여부.%{개인.%{판매금지유저}%}%::%{_i}%}
                if {_b} is "0":
                    set {_설명1} to loop-value
                    set line 1 of lore of {_설명1} to "%lore of loop-value%"
                    set slot {_i} - 1 of current inventory of player to {_설명1}
                else:
                    set {_설명2} to loop-value
                    set line 1 of lore of {_설명2} to "&b[ &f가격 &b] : &f%{_b}%"
                    set line 2 of lore of {_설명2} to "&f판매상태 : %{_여부}%"
                    set slot {_i} - 1 of current inventory of player to {_설명2}
                            
                            
#판매금지 아이템을 우클릭시 물품의 상태를 판매금지로 바꿔주는 구문                
on inventory click:
    if inventory name of player's current inventory contains "&f%{owner.%player%}% [&4판매금지&f]":   
        event-slot is not air
        set {%player%.q} to index of clicked slot 
        set {판매여부.%{owner}%::%{%player%.q}%} to "&4판매금지"
        close inventory to player
스크립터브혼
2021.01.21
@Ru_Nan

> open chest with 3 row named "&f%{개인.%{판매금지유저}%}% [&4판매금지&f]" to player

이 부분에서 {판매금지유저}와 {개인.%{판매금지유저}%}가 어떤 값을 가지고 있는지.

 

> if inventory name of player's current inventory contains "&f%{owner.%player%}% [&4판매금지&f]":

이 부분에서 player와 {owner.%player%}의 값이 open chest와 같은지 확인하세요.

 

당연히 inventory name of player's current inventory 가 "&f%{owner.%player%}% [&4판매금지&f]"를 포함하는지 확인하셔야 하구요.

Ru_Nan
2021.01.21
@스크립터브혼

인벤토리에서 누를때 마다 이러한 메시지가 콘솔창에 뜨게 됩니다. 어떤 이유 때문일까요?

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! [Skript] Severe Error:

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! Something went horribly wrong with Skript.

[22:43:37 ERROR]: #!#! This issue is NOT your fault! You probably can't fix it yourself, either.

[22:43:37 ERROR]: #!#! It looks like you are using some plugin(s) that alter how Skript works (addons).

[22:43:37 ERROR]: #!#! Here is full list of them:

[22:43:37 ERROR]: #!#! skRayFall (https://sk.rayfall.net/) GomSK RandomSK Skellett (https://forums.skunity.com/resources/skellett.24/) SkChoke SharpSK Quarsk MarSK InvSK SkEtcR CtypeSK skUtilities (https://tim740.github.io/) skript-yaml SkQuery Umbaska WildSkript (http://www.dzikoysk.net/)

[22:43:37 ERROR]: #!#! We could not identify which of those are specially related, so this might also be Skript issue.

[22:43:37 ERROR]: #!#! You should try disabling those plugins one by one, trying to find which one causes it.

[22:43:37 ERROR]: #!#! If the error doesn't disappear even after disabling all listed plugins, it is probably Skript issue.

[22:43:37 ERROR]: #!#! In that case, you will be given instruction on how should you report it.

[22:43:37 ERROR]: #!#! On the other hand, if the error disappears when disabling some plugin, report it to author of that plugin.

[22:43:37 ERROR]: #!#! Only if the author tells you to do so, report it as Skript issue (url below)

[22:43:37 ERROR]: #!#! Issue tracker: https://github.com/SkriptLang/Skript/issues (only if you know what you're doing!)

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! Stack trace:

[22:43:37 ERROR]: #!#! java.lang.NumberFormatException

[22:43:37 ERROR]: #!#! at java.math.BigDecimal.(Unknown Source)

[22:43:37 ERROR]: #!#! at java.math.BigDecimal.(Unknown Source)

[22:43:37 ERROR]: #!#! at java.math.BigDecimal.(Unknown Source)

[22:43:37 ERROR]: #!#! at java.math.BigDecimal.valueOf(Unknown Source)

[22:43:37 ERROR]: #!#! at com.earth2me.essentials.api.Economy.add(Economy.java:166)

[22:43:37 ERROR]: #!#! at net.milkbowl.vault.economy.plugins.Economy_Essentials.tryDepositPlayer(Economy_Essentials.java:155)

[22:43:37 ERROR]: #!#! at net.milkbowl.vault.economy.plugins.Economy_Essentials.depositPlayer(Economy_Essentials.java:186)

[22:43:37 ERROR]: #!#! at ch.njol.skript.hooks.economy.expressions.ExprBalance.change(ExprBalance.java:100)

[22:43:37 ERROR]: #!#! at ch.njol.skript.effects.EffChange.execute(EffChange.java:278)

[22:43:37 ERROR]: #!#! at ch.njol.skript.lang.Effect.run(Effect.java:52)

[22:43:37 ERROR]: #!#! at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:61)

[22:43:37 ERROR]: #!#! at ch.njol.skript.lang.TriggerItem.walk(TriggerItem.java:89)

[22:43:37 ERROR]: #!#! at ch.njol.skript.lang.Trigger.execute(Trigger.java:55)

[22:43:37 ERROR]: #!#! at ch.njol.skript.SkriptEventHandler.check(SkriptEventHandler.java:152)

[22:43:37 ERROR]: #!#! at ch.njol.skript.SkriptEventHandler$1.execute(SkriptEventHandler.java:110)

[22:43:37 ERROR]: #!#! at org.bukkit.plugin.RegisteredListener.callEvent(RegisteredListener.java:66)

[22:43:37 ERROR]: #!#! at org.bukkit.plugin.SimplePluginManager.callEvent(SimplePluginManager.java:484)

[22:43:37 ERROR]: #!#! at net.minecraft.network.NetHandlerPlayServer.func_147351_a(NetHandlerPlayServer.java:2119)

[22:43:37 ERROR]: #!#! at net.minecraft.network.play.client.CPacketClickWindow.func_148833_a(CPacketClickWindow.java:38)

[22:43:37 ERROR]: #!#! at net.minecraft.network.play.client.CPacketClickWindow.func_148833_a(CPacketClickWindow.java:12)

[22:43:37 ERROR]: #!#! at net.minecraft.network.PacketThreadUtil.lambda$checkThreadAndEnqueue$0(PacketThreadUtil.java:16)

[22:43:37 ERROR]: #!#! at java.util.concurrent.Executors$RunnableAdapter.call(Unknown Source)

[22:43:37 ERROR]: #!#! at java.util.concurrent.FutureTask.run(Unknown Source)

[22:43:37 ERROR]: #!#! at net.minecraft.util.Util.func_181617_a(SourceFile:46)

[22:43:37 ERROR]: #!#! at net.minecraft.server.MinecraftServer.func_71190_q(MinecraftServer.java:846)

[22:43:37 ERROR]: #!#! at net.minecraft.server.dedicated.DedicatedServer.func_71190_q(DedicatedServer.java:467)

[22:43:37 ERROR]: #!#! at net.minecraft.server.MinecraftServer.func_71217_p(MinecraftServer.java:784)

[22:43:37 ERROR]: #!#! at net.minecraft.server.MinecraftServer.run(MinecraftServer.java:630)

[22:43:37 ERROR]: #!#! at java.lang.Thread.run(Unknown Source)

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! Version Information:

[22:43:37 ERROR]: #!#! Skript: 2.2-dev37c (custom version)

[22:43:37 ERROR]: #!#! Bukkit: 1.12.2-R0.1-SNAPSHOT

[22:43:37 ERROR]: #!#! Minecraft: 1.12.2

[22:43:37 ERROR]: #!#! Java: 1.8.0_261 (Java HotSpot(TM) 64-Bit Server VM 25.261-b12)

[22:43:37 ERROR]: #!#! OS: Windows 10 amd64 10.0

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! Server platform: Paper

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! Current node: null

[22:43:37 ERROR]: #!#! Current item: add {_sell}(as java.lang.Object) to the money of the player

[22:43:37 ERROR]: #!#! Current trigger: inventory click (dispense/spawn/drop/craft/pickup/consume/break/despawn/merge) (개인상점.sk, line 91)

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! Thread: Server thread

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! Language: english

[22:43:37 ERROR]: #!#! Link parse mode: DISABLED

[22:43:37 ERROR]: #!#!

[22:43:37 ERROR]: #!#! End of Error.

[22:43:37 ERROR]: #!#!

스크립터브혼
2021.01.21
@Ru_Nan

개인상점.sk 파일의 91번째 줄이 오류라고하네요.

Ru_Nan
2021.01.21
@스크립터브혼

91번째 줄은

on inventory click:

밖에 없습니다. 갑자기 왜 이런 오류가 생겼을까요?

스크립터브혼
2021.01.21
@Ru_Nan

모드버킷은 일반 버킷서버와 다르기 때문에 확실하게 말할 순 없는데요, 코드 문제가 아니라면 모드서버 문제인 경우가 많습니다.

모드서버에서 스크립트 플러그인으로 개발하신다면 일반 버킷기반 서버와 모드서버 두 곳에서 모두 테스트 해보셔야 합니다.

 

일반적으로 버킷서버에서 되는 것이 모드서버에서 안되는 경우가 있습니다.

이것은 지금처럼 완성된 코드로부터 잘못된 오류메세지를 전달할 수 있고,

버킷서버에선 정상적으로 동작하지만 모드서버에선 오류가 발생할 수 도 있습니다.

Ru_Nan
2021.01.21
@스크립터브혼

브혼님 정말 감사합니다. 브혼님 덕분에 제가 지금까지 원했던 시스템들을 전부다 구현할 수 있게 되었습니다.

정말감사합니다!!

뉴스 및 창작물
/files/thumbnails/520/751/003/262x150.crop.jpg?20240328020349

레드스톤

마인크래프트 노트블록으로 만든 『 Bling‐Bang‐Bang‐Born 』 1

Sonttukk

2024-03-23

1

/files/thumbnails/467/742/003/262x150.crop.jpg?20240311163123

레드스톤

[노트블럭커버] MILGRAM -ミルグラム(밀그램)- / 아마네 「숙청 행진」 제 2심 2

리비온

2024-03-11

0

/files/thumbnails/846/741/003/262x150.crop.jpg?20240310221214

레드스톤

워든 vs 라마 200마리 1

GlassesFilm

2024-03-10

0

/files/thumbnails/542/739/003/262x150.crop.jpg?20240309070457

레드스톤

[고인의 명복을 빕니다][노트블럭]드래곤볼 GT 오프닝 - 점점 마음이 끌려

리비온

2024-03-09

0

/files/thumbnails/326/738/003/262x150.crop.jpg?20240328020414

레드스톤

마인크래프트 노트블록으로 만든 『 Build Our Machine 』

Sonttukk

2024-03-07

0