개인 자료란 (JE)

  서버 커뮤니티

Profile Ru_Nan 대표칭호 없음

Ru_Nan 642a599e50ad442cab0e91c0d4d2252a

Profile

질문하기 스크립트

구문 오류

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

variables:

    {stock.hour} = 0

    {stock.min} = 30

    {stock.sec} = 0

    {stock.hour2} = 0

    {stock.min2} = 30

    {stock.sec2} = 0

    {stock.item} = 0


options:

    s: &f[&2파산게임&f]

    

every 1 second:

    if {stock.hour} > 0:

        if {stock.min} > 0:

            if {stock.sec} > 0:

                remove 1 from {stock.sec}

                

            if {stock.sec} = 0:

                set {stock.sec} to 59

                remove 1 from {stock.min}

                

        if {stock.min} = 0:

            if {stock.sec} > 0:

                remove 1 from {stock.sec}

        

            if {stock.sec} = 0:

                remove 1 from {stock.hour}

                set {stock.min} to 59

            

            

    if {stock.hour} = 0:

        if {stock.min} > 0:

            if {stock.sec} > 0:

                remove 1 from {stock.sec}

                

            if {stock.sec} = 0:

                set {stock.sec} to 59

                remove 1 from {stock.min}

        

        if {stock.min} = 0:

            if {stock.sec} > 0:

                remove 1 from {stock.sec}

                

            if {stock.sec} = 0:

                set {stock.hour} to {stock.hour2}

                set {stock.min} to {stock.min2}

                set {stock.sec} to {stock.sec2}

                broadcast ""

                broadcast "{@s} 귀금속의 &e가격&f이 &c변동&f되었습니다."

                broadcast ""

                loop {stock.item} times:

                    add 1 to {_주식변동}

                    set {_주식가격.%{_주식변동}%} to {stockmoney::%{_주식변동}%}/6

                    set {_퍼센트} to random number between 0 and {_주식가격.%{_주식변동}%}

                    set {_퍼센트} to round {_퍼센트}

                    set {_확률} to random number between 0 and 1

                    if {_확률} < 0.5:

                        remove {_퍼센트} from {stockmoney::%{_주식변동}%}

                        set {stockcnmoney::%{_주식변동}%} to "&c▽ &f%{_퍼센트}% &c원"

                    if {_확률} >= 0.5:

                        add {_퍼센트} to {stockmoney::%{_주식변동}%}

                        set {stockcnmoney::%{_주식변동}%} to "&a△ &f%{_퍼센트}% &c원"

                        

                

every 0.1 second:

    loop all players:

        if inventory name of current inventory of loop-player contains "{@s}":

            set {_item1} to clock named "&a[ &f남은 변동 시간 &a]"

            set line 1 of lore of {_item1} to "&cㄴ &f%{stock.hour}%&e시 &f%{stock.min}%&e분 &f%{stock.sec}%&e초"

            set slot 45 of current inventory of loop-player to {_item1}

            loop {stock.item} times:

                add 1 to {_슬롯}

                add 1 to {_주식개수}

                

                set {_설명} to {stockitem::%{_주식개수}%} named "%{stock::%{_주식개수}%}%"

                set line 1 of lore of {_설명} to "&e[ &f가격 &e] &f%{stockmoney::%{_주식개수}%}%&c원"

                set line 2 of lore of {_설명} to "&e[ &f가격 변동 &e] &f%{stockcnmoney::%{_주식개수}%}%"

                set slot {_슬롯}-1 of current inventory of loop-player to {_설명}

                

                stop

        

command /주식:

    trigger:

        open chest with 6 row named "{@s}" to player

        set slot 36 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 37 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 38 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 39 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 40 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 41 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 42 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 43 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set slot 44 of current inventory of player to gray stained glass pane named "&8[ &f구분선 &8]"

        set {_item1} to clock named "&a[ &f남은 변동 시간 &a]"

        set line 1 of lore of {_item1} to "&cㄴ &f%{stock.hour}%&e시 &f%{stock.min}%&e분 &f%{stock.sec}%&e초"

        set slot 45 of current inventory of player to {_item1}

        set {_item2} to sign named "&c[ &f도움말 &c]"

        set line 1 of lore of {_item2} to "&eㄴ &f좌클릭 시 &e주식&f을 &c구매&f합니다."

        set line 2 of lore of {_item2} to "&eㄴ &f우클릭 시 &e주식&f을 &c판매&f합니다."

        set slot 49 of current inventory of player to {_item2}

        set {_item3} to emerald named "&e[ &f돈 &e]"

        set line 1 of lore of {_item3} to "&cㄴ &f%player's money% &c원"

        set slot 53 of current inventory of player to {_item3}

        loop {stock.item} times:

            add 1 to {_슬롯}

            add 1 to {_주식개수}

            set {_설명} to {stockitem::%{_주식개수}%} named "%{stock::%{_주식개수}%}%&c원"

            set line 1 of lore of {_설명} to "&e[ &f가격 &e] &f%{stockmoney::%{_주식개수}%}%"

            set line 2 of lore of {_설명} to "&e[ &f가격 변동 &e] &f%{stockcnmoney::%{_주식개수}%}%"

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

        

command /주식설정 [<text>] [<integer>] [<integer>] [<integer>]:

    permission: stock.op

    trigger:

        if arg 1 is not set:

            message ""

            message "{@s} &f/주식설정 &e추가 &c[&f가격&c] &f- 손에 든 아이템을 &c[&f가격&c] &f의 돈으로 주식에 &e추가&f합니다."

            message "{@s} &f/주식설정 &e시간 &c[&f시&c] [&f분&c] [&f초&c] &f - 주식 변동 시간을 &c[&f시&c] [&f분&c] [&f초&c] &f로 &e설정&f합니다."

            message "{@s} &f/주식설정 &e초기화 &f- 주식 아이템 목록을 &e초기화 &f합니다."

            message ""

            stop

            

        if arg 1 is "추가":

            if arg 2 is set:

                add player's tool's name to {stock::*}

                add player's tool to {stockitem::*}

                add arg-2 to {stockmoney::*}

                add "&8- &f0 &c원" to {stockcnmoney::*}

                add 1 to {stock.item}

                message ""

                message "{@s} &f당신은 %player's tool's name% (이)라는 이름과 &c[ &f%arg-2% &c] &f이라는 가격에 주식을 &e추가&f하였습니다."

                message ""

                stop

            

            else:

                message ""

                message "{@s} &f/주식설정 &e추가 &c[&f가격&c] &f- 손에 든 아이템을 &c[&f가격&c] &f의 돈으로 주식에 &e추가&f합니다."

                message ""

                stop

        

        if arg 1 is "시간":

            if arg 2 is set:

                if arg 3 is set:

                    if arg 4 is set:

                        set {stock.hour} to arg-2

                        set {stock.min} to arg-3

                        set {stock.sec} to arg-4

                        set {stock.hour2} to arg-2

                        set {stock.min2} to arg-3

                        set {stock.sec2} to arg-4

                        message ""

                        message "{@s} &f주식 &c변동 시간&f이 &f%{stock.hour}%&e시 &f%{stock.min}%&e분 &f%{stock.sec}%&e초 &f로 변동되었습니다."

                        message ""

                        stop

                        

                    else:

                        message ""

                        message "{@s} &f/주식설정 &e시간 &c[&f시&c] [&f분&c] [&f초&c] &f - 주식 변동 시간을 &c[&f시&c] [&f분&c] [&f초&c] &f로 &e설정&f합니다."

                        message ""

                        stop

                        

                else:

                    message ""

                    message "{@s} &f/주식설정 &e시간 &c[&f시&c] [&f분&c] [&f초&c] &f - 주식 변동 시간을 &c[&f시&c] [&f분&c] [&f초&c] &f로 &e설정&f합니다."

                    message ""

                    stop

                    

            else:

                message ""

                message "{@s} &f/주식설정 &e시간 &c[&f시&c] [&f분&c] [&f초&c] &f - 주식 변동 시간을 &c[&f시&c] [&f분&c] [&f초&c] &f로 &e설정&f합니다."

                message ""

                stop

            

        if arg 1 is "초기화":

            set {stock.item} to 0

            delete {stock::*}

            delete {stockitem::*}

            delete {stockmoney::*}

            delete {stockcnmoney::*}

            message ""

            message "{@s} &f당신은 &c주식&f을 &e초기화&f를 하셨습니다."

            message ""

            stop


on inventory click:

    if inventory name of current inventory of player is "{@s}":

        cancel event

        if raw slot < 36:

            if click item is not air:

                if "%click type%" contains "LEFT":

                    if number of air in the player's inventory >= 1:

                        set {_lore::*} to lore of click item split by "||"

                        set {_money} to uncolored {_lore::2}

                        replace all "[" and "가격" and "]" and " " and "원" with "" in {_money}

                        set {_money} to uncolored {_money} parsed as integer

                        if player's money >= {_money}:

                            remove {_money} from player's money

                            set {_item3} to emerald named "&e[ &f돈 &e]"

                            set line 1 of lore of {_item3} to "&cㄴ &f%player's money% &c원"

                            set slot 53 of current inventory of player to {_item3}

                            give 1 of {stockitem::%clicked slot+1%} named "%{stock::%clicked slot+1%}%" to player

                            message ""

                            message "{@s} &f당신은 &e%{_money}% &f원을 사용하여 %{stock::%clicked slot+1%}% &f을 &c구매&f하였습니다."

                            message ""

                            stop

                            

                    else:

                        message ""

                        message "{@s} &f당신의 &e인벤토리&f가 비어있는지 &c확인&f해주시기 바랍니다."

                        message ""

                        stop

                        

                if "%click type%" contains "RIGHT":

                    if player has 1 of {stockitem::%clicked slot+1%} named "%{stock::%clicked slot+1%}%":

                        set {_lore::*} to lore of click item split by "||"

                        set {_money} to uncolored {_lore::2}

                        replace all "[" and "가격" and "]" and " " and "원" with "" in {_money}

                        set {_money} to uncolored {_money} parsed as integer

                        remove 1 of {stockitem::%clicked slot+1%} named "%{stock::%clicked slot+1%}%" from player's inventory

                        add {_money} to player's money

                        set {_item3} to emerald named "&e[ &f돈 &e]"

                        set line 1 of lore of {_item3} to "&cㄴ &f%player's money% &c원"

                        set slot 53 of current inventory of player to {_item3}

                        message ""

                        message "{@s} &f당신은 %{stock::%clicked slot+1%}% &f을 &c판매&f하여 &e%{_money}% &f를 얻었습니다."

                        message ""

                        stop


덕분에 나머지는 고쳤습니다

하지만 주식을  등록하면 이름이 <none>이라고 뜨게 되고 아무리 왼쪽을 눌러도 구매가 되지 않습니다 




3개의 댓글

스크립터브혼
2020.12.18

주식 등록하는 코드에서 none이 뜨는 변수를 찾아서, 그 변수가 코드에서 어떻게 쓰이고 있는지 역순으로 읽어보세요.
해당 변수가 어디서 생성되고, 어떤값을 가지고 있으며, 어디에서 변경되는지, 어디서 출력되는지 다시 확인해보시길 바랍니다.
코드 흐름 중간중간 변수가 재대로 세팅되어있는지 메세지로 출력해보면서 코드의 전체 흐름에 대해서 다시 파악하시길 바랍니다.

구매 역시 마찬가지입니다.

Ru_Nan
2020.12.19
@스크립터브혼

제가 보았을 때는 message 에서도 none 뜨는 것으로 보아 player's tool's name 을 감지하지 못하는 듯 합니다

구매부분의 변수는 무엇이 잘못되었는지 모르겠습니다

스크립터브혼
2020.12.19
@Ru_Nan

감지하지 '못하는 듯' 한게 아니라 감지를 못하는지 확실하게 확인하세요.

이름이 없는 아이템인건 아닌지 확인하시고, 어퍼스트로피를 사용하지 않는 다른 패턴(~ of ~)으로도 해보시고...
일반 버킷서버에서 정상동작하는 코드여도 모드 버킷에서는 안되는 경우가 많습니다.

 

우클릭 구매의 경우도 마찬가지로 각각의 변수나 익스프레션이 재대로된 값을 가지는지 확인하세요.

{_lore::*}, {_money}, player's money, {_item3}, clicked slot, clicked slot+1, {stockitem::%clicked slot+1%}, {stock::%clicked slot+1%}

전부 확인해보시고 다시 답변주세요.

특히 {_money} 변수의 경우 계속 값이 변경되니 매 코드마다 출력하여 어떻게 변화하는지 관찰해보세요.
조건, 분기문(if, if~else)의 경우에도 비교하는 두 값이 정상적인 값인지, 조건문을 통과하는지도 확인하시구요.


문법오류가 아니라면 직접 코드 전체를 점검하는 수 밖에 없습니다.