개인 자료란 (JE)

  서버 커뮤니티

Profile 목천호요 대표칭호 없음
Profile

질문하기 스크립트

돈스크립트랑 배포중인 주식 스크립트 연동시킬려고했는데 안돼요;;

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

안녕하세요 배포된 돈 스크립트랑 주식 스크립트를 연동시킬려고 하는데 자꾸 막히네요;; 도와주세요;


돈.

command /돈관리 [<Text>] [<player>] [<Text>]:
    description: 서버의 돈 시스템을 담당하는 명령어입니다.
    usage: &7명령어가 올바르지 않습니다. 명령어를 확인해주시기 바랍니다.
    permission: money.*
    permission message: {@접두사} &c당신은 권한이 없어서 해당 명령어 사용이 불가능 합니다.
    trigger:    
        if arg 1 is not set:
            send "{@접두사} &f/돈관리 설정 [플레이어] [금액] &7- 플레이어의 돈을 설정합니다."
            send "{@접두사} &f/돈관리 확인 [플레이어] &7- 플레이어의 돈을 확인합니다."
            send "{@접두사} &f/돈관리 주기 [플레이어] [금액] &7- 플레이어에게 돈을 줍니다."
        if arg 1 is set:
            if arg 1 is not "설정" or "확인" or "주기":
                send "{@접두사} &a%arg 1%&f 어절은 올바르지 않은 어절입니다."
            if arg 1 is "설정":
                if arg 2 is set:
                    if arg 3 is set:
                        set arg 2's money to arg 3 parsed as integer
                        send "{@접두사} &a&l%arg 2%&f님의 돈을 &e&l%arg 3%&f원으로 설정하였습니다."
                        send "{@접두사} &6%player%&f님께서 &6%arg 2%&f님의 돈을 &e&l%arg 3%&f원으로 설정했습니다." to arg 2 
                    else:
                        send "{@접두사} &f올바른 금액을 입력해주세요."
                else:
                    send "{@접두사} &f올바른 플레이어명을 입력해주세요."
            if arg 1 is "확인":
                if arg 2 is set:
                    set {_m2} to "%arg 2's money%" 
                    replace all "$" with "" in {_m2}
                    send "{@접두사} &a&l%arg 2%&f님의 보유중인 돈은 &e&l%{_m2}%원&f 입니다."
                else:
                    send "{@접두사} &f올바른 플레이어명을 입력해주세요."
            if arg 1 is "주기":
                if arg 2 is set:
                    if arg 3 is set:
                        add arg 3 parsed as integer to arg 2's money
                        send "{@접두사} &a&l%arg 2%&f님에게 &e&l%arg 3%&f원을 지급하였습니다."
                        send "{@접두사} &6%player%&f님께서 &6%arg 2%&f님에게 &e&l%arg 3%&f원을 지급하였습니다." to arg 2 
                    else:
                        send "{@접두사} &f올바른 금액을 입력해주세요."
                else:
                    send "{@접두사} &f올바른 플레이어명을 입력해주세요."
                        
                        
on rightclick:
    if name of player's tool contains "{@접두사}":
        set {_money} to colored name of player's tool
        replace all "{@접두사}" and "&e&l" and "원" and " " with "" in {_money}    
        remove 1 of player's tool from player's inventory
        set {_money} to uncolored {_money} parsed as integer
        add {_money} to player's money
        message ""
        message "{@접두사} &f당신은 &e수표&f를 사용하여 %{_money}%&f원을 얻으셨습니다."
        message ""
        stop
        
command /수표 [<text>] [<integer>]:
    trigger:
        if arg 1 is set:
            if arg 1 is "발행":
                if arg 2 is set:
                    if player's money >= arg 2:
                        if arg 2 >= 5000:
                            remove arg 2 from player's money
                            give 1 of paper named "{@접두사} &e&l%arg 2%&f원" with lore "||&eㄴ &f우클릭 시 &e&l수표&f를 돈으로 환전합니다." to player
                        else:
                            send "{@접두사} &f5000원 이상만 발행이 가능합니다."
                    else:
                        send "{@접두사} &f보유중인 금액보다 많은 금액을 발행할수 없습니다."
                else:
                    send "{@접두사} &f올바른 금액을 입력해주세요."
            else:
            send "{@접두사} &f/수표 발행 [금액] &7- 돈을 수표로 발행합니다."        
        else:
            send "{@접두사} &f/수표 발행 [금액] &7- 돈을 수표로 발행합니다."
command /돈 [<string>] [<string>] [<integer>]:
    trigger:
        if arg 1 is not set:
            set {_m} to "%player's money%" 
            replace all "$" with "" in {_m}
            send "&f"
            send "{@접두사} &f보유 돈: &e&l%{_m}% 원"
            send ""
            send "{@접두사} &f/수표 발행 [금액] &7 - 돈를 수표로 발행합니다."
            send "{@접두사} &f/돈 보내기 [닉네임] [금액] &7- 돈을 보낼수 있습니다."
            send "{@접두사} &f/돈 순위 &7- 돈 순위를 확인 합니다."
            send ""    
        else if arg 1 is "보내기":
            if arg 2 is not set:
                send "{@접두사} &f돈을 보낼 플레이어를 입력해 주세요."
                exit
            if arg 3 is not set:
                send "{@접두사} &f돈을 보낼 금액을 입력해 주세요."
                exit
            if arg 3 > player's money:
                send "{@접두사} &C돈이 부족 합니다 !"
                exit
            if arg 3 <= 0:
                send "{@접두사} &f올바른 금액을 입력하세요!"
                exit
            execute player command "/pay %arg 2% %arg 3%"
            exit
        else if arg 1 is "순위":
            execute player command "balancetop" 
            exit

주식.

#{stock::*} 이름
#{stock::*::*} 처음가
#{stock::*::*::*} 현재가
#{stock::*::*::*::*} 증가,감소값




options:
    S : &f[&e리치리치&f]


variables:
    {stocktime} = 300
    
every 1 second:
    if {stocktime} <= 0:
        updown()
        set {stocktime} to 300
        loop all players:
            if name of loop-player's current inventory is "{@S} 주식":
                loop {stock::*}:
                    set slot loop-index parsed as integer -1 of loop-player's current inventory to book named "&f%loop-value-2%" with lore "" and "&f처음 가격 : &b%{stock::%loop-index%::1}%원" and "&f현재 가격 : &a%{stock::%loop-index%::1::1}%원" and "" and "&f증감 : &5%{stock::%loop-index%::1::1::1}%"
    remove 1 from {stocktime}
    loop all players:
        if name of loop-player's current inventory is "{@S} 주식":
            set slot 45 of loop-player's current inventory to clock named "&f[ &b남은시간 &f] &a%{stocktime}%초"
    stop


command /주식 [<text>] [<text>] [<integer>]:
    permission: skript.stock.open
    trigger:
        if arg-1 is not set:
            stockopen(player)
            stop
        
        if player is op:
            if arg-1 is "도움말":
                send ""
                send "{@S} /주식 도움말"
                send "{@S} /주식 추가"
                send "{@S} /주식 삭제"
                send "{@S} /주식 가격초기화"
                send ""
                stop
                
            if arg-1 is "가격초기화":
                loop {stock::*}:
                    set {stock::%loop-index%::1::1} to {stock::%loop-index%::1}
                send "{@S} 주식의 가격이 초기화되었습니다."
                stop
                
            if arg-1 is "추가":
                if arg-2 is not set:
                    send "{@S} 추가할 주식 이름을 입력하세요."
                    stop
                if arg-3 is not set:
                    send "{@S} 주식의 가격을 설정 해 주세요."
                    stop
                
                loop {stock::*}:
                    if {stock::%loop-index%} is arg-2:
                        send "그 이름의 주식은 이미 있습니다."
                        stop
                
                set {_num} to 1
                loop {stock::*}:
                    add 1 to {_num}
                    
                set {stock::%{_num}%} to arg-2
                set {stock::%{_num}%::1} to arg-3
                set {stock::%{_num}%::1::1} to arg-3
                send "{@S} %arg-2%주식이 %arg-3%원으로 등록되었습니다."
                stop
            if arg-1 is "삭제":
                loop {stock::*}:
                    if {stock::%loop-index%} is arg-2:
                        delete {stock::%loop-index%}
                        send "{@S} {stock::%loop-index%}주식이 삭제되었습니다."
                        stop
                send "{@S} 그 주식은 없습니다."
                stop
            
        
            


function stockopen(p: player):
    open chest with 6 rows named "{@S} 주식" to {_p}
    wait 1 tick
    loop {stock::*}:
        set slot loop-index parsed as integer -1 of {_p}'s current inventory to book named "&f%loop-value%" with lore "" and "&f처음 가격 : &b%{stock::%loop-index%::1}%원" and "&f현재 가격 : &a%{stock::%loop-index%::1::1}%원" and "" and "&f증감 : &5%{stock::%loop-index%::1::1::1}%"
    
    set slot 49 of {_p}'s current inventory to sign block named "&f[ &e주식 도움말 &f]" with lore "&f[ &bLEFT CLICK &f] 주식 1개 구매" and "&f[ &bSHIFT LEFT CLICK &f] 주식 64개 구매" and "&f[ &cRIGHT CLICK &f] 주식 1개 판매" and "&f[ &cSHIFT RIGHT CLICK &f] 주식 64개 판매"
    set slot 45 of {_p}'s current inventory to clock named "&f[ &b남은시간 &f] &a%{stocktime}%초"
    
function updown():
    loop {stock::*}:
        set {_n} to random integer between -1000 and 1000
        if {stock::%loop-index%::1::1} + {_n} <= 0:
            exit 2 sections
        set {stock::%loop-index%::1::1::1} to {_n}
        add {_n} to {stock::%loop-index%::1::1}
    broadcast "{@S} 주식 가격이 변동되었습니다."


on inventory click:
    if name of player's current inventory is "{@S} 주식":
        cancel event
        
        if click type is left mouse button:
            wait 1 tick
            loop {stock::*}:
                if {stock::%loop-index%} is uncoloured name of click item:
                    if {player's money} >= {stock::%loop-index%::1::1}:
                        give 1 book named "%name of click item%" to player
                        send "{@S} 주식을 구매하였습니다."
                        remove {stock::%loop-index%::1::1} from {player's money}
                        stop
                    send "{@S} 돈이 부족합니다."
                    stop
        if click type is left mouse button with shift:
            wait 1 tick
            loop {stock::*}:
                if {stock::%loop-index%} is uncoloured name of click item:
                    if {player's money} >= 64 * {stock::%loop-index%::1::1}:
                        give 64 book named "%name of click item%" to player
                        send "{@S} 주식을 64개 구매하였습니다."
                        remove 64 * {stock::%loop-index%::1::1} from {player's money}
                        stop
                    send "{@S} 돈이 부족합니다."
                    stop
        if click type is right mouse button:
            wait 1 tick
            loop {stock::*}:
                if {stock::%loop-index%} is uncoloured name of click item:
                    if player have book named "%name of click item%":
                        remove 1 book named "%name of click item%" from player
                        send "{@S} 주식을 팔아 %{stock::%loop-index%::1::1}%원을 얻었습니다."
                        add {stock::%loop-index%::1::1} to {player's money}
                        stop
                    send "{@S} 당신은 이 주식을 가지고 있지 않습니다."
        if click type is right mouse button with shift:
            wait 1 tick
            loop {stock::*}:
                if {stock::%loop-index%} is uncoloured name of click item:
                    if player have 64 book named "%name of click item%":
                        remove 64 book named "%name of click item%" from player
                        send "{@S} 주식을 팔아 %{stock::%loop-index%::1::1} * 64%원을 얻었습니다."
                        add 64 * {stock::%loop-index%::1::1} to {player's money}
                        stop
                    send "{@S} 당신은 이 주식을 가지고 있지 않습니다."

1개의 댓글

스크립터브혼
2021.01.08

돈 스크립트에서 플레이어의 돈을 money of player 익스프레션을 사용했고,

주식 스크립트에서는 {player's money} 변수를 사용해서 그렇습니다.

 

둘 다 익스프레션으로 하시거나, 변수로하시거나 둘 중 하나만 사용하세요.