개인 자료란 (JE)

  서버 커뮤니티

Profile 하잉91 대표칭호 없음
Profile

질문하기 스크립트

주식스크립트와 돈 스크립트 호환이 안되는데 도와주세요

2020.11.22 조회 수 1932 추천 수 0
이해도 1.12 
게임버전 (JE) 모드버킷 
스크립트 애드온 잘 모르겠어요 ㅠㅠ 

돈 스크립트는 현재 쓰고 있어서 바꿨다가 괜히 가지고 있던 돈들이 다 날아갈까봐 너무 무섭고 

배포중인 주식 스크립트(2차수정 가능) 받았는데 호환이 안돼서 이렇게 질문 올립니다.

아래는 주식스크립트와, 돈 스크립트 코드 입니다.

variables:
    {stock.hour} = 0
    {stock.min} = 30
    {stock.sec} = 0
    {stock.hour2} = 0
    {stock.min2} = 30
    {stock.sec2} = 0
    {stock.item} = 0


options:
    s: &a[ &f주식 &a]
    
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} &f주식의 &e가격&f이 &c변동&f되었습니다."
                broadcast ""
                loop {stock.item} times:
                    add 1 to {_주식변동}
                    set {_주식가격.%{_주식변동}%} to {stockmoney::%{_주식변동}%}/10
                    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 slot 45 of current inventory of loop-player to clock named "&a[ &f남은 변동 시간 &a]" with lore "&cㄴ &f%{stock.hour}%&e시 &f%{stock.min}%&e분 &f%{stock.sec}%&e초"
            loop {stock.item} times:
                add 1 to {_슬롯}
                add 1 to {_주식개수}
                set slot {_슬롯}-1 of current inventory of loop-player to {stockitem::%{_주식개수}%} named "%{stock::%{_주식개수}%}%" with lore "||&e[ &f가격 &e] &f%{stockmoney::%{_주식개수}%}% &c원||||&e[ &f가격 변동 &e] &f%{stockcnmoney::%{_주식개수}%}%"
                stop
        
command /주식:
    trigger:
        open chest with 6 row named "{@s}" to player
        set slot 36 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 37 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 38 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 39 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 40 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 41 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 42 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 43 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 44 of current inventory of player to glass pane named "&8[ &f구분선 &8]"
        set slot 45 of current inventory of player to clock named "&a[ &f남은 변동 시간 &a]" with lore "&cㄴ &f%{stock.hour}%&e시 &f%{stock.min}%&e분 &f%{stock.sec}%&e초"
        set slot 49 of current inventory of player to sign named "&c[ &f도움말 &c]" with lore "&eㄴ &f좌클릭 시 &e주식&f을 &c구매&f합니다.||&eㄴ &f우클릭 시 &e주식&f을 &c판매&f합니다."
        set slot 53 of current inventory of player to emerald named "&e[ &f돈 &e]" with lore "&cㄴ &f%{money::%player%}% &c원"
        loop {stock.item} times:
            add 1 to {_슬롯}
            add 1 to {_주식개수}
            set slot {_슬롯}-1 of current inventory of player to {stockitem::%{_주식개수}%} named "%{stock::%{_주식개수}%}%" with lore "||&e[ &f가격 &e] &f%{stockmoney::%{_주식개수}%}% &c원||||&e[ &f가격 변동 &e] &f%{stockcnmoney::%{_주식개수}%}%"
        
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 is left click:
                    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 {money::%player%} >= {_money}:
                            remove {_money} from {money::%player%}
                            set slot 53 of current inventory of player to emerald named "&e[ &f돈 &e]" with lore "&cㄴ &f%{money::%player%}% &c원"
                            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 is right click:
                    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 {money::%player%}
                        set slot 53 of current inventory of player to emerald named "&e[ &f돈 &e]" with lore "&cㄴ &f%{money::%player%}% &c원"
                        message ""
                        message "{@s} &f당신은 %{stock::%clicked slot+1%}% &f을 &c판매&f하여 &e%{_money}% &f를 얻었습니다."
                        message ""
                        stop
                    


돈 스크립트 입니다.

options:
    말머리: &a&l[ 야생 ] &f
command /돈 [<string>] [<string>] [<integer>]:
    trigger:
        if arg 1 is not set:
            send "&f"
            send "{@말머리} 자신이 가지고 있는돈 : %player's money%"
            send "{@말머리} &f/돈 보내기 [닉네임] [금액] &7&l- &f해당 유저 에게 돈을 보냅니다."
            send "{@말머리} &f/돈 순위 &7&l- &f돈 순위를 확인 합니다."
            send "&f"
            player has permission "sk.money":
                send "                                   &b&l* &6&l관리자 명령어 &b&l*"
                send "&f"
                send "{@말머리} &e&l/돈 주기 [닉네임] [금액] &7&l- &f해당 유저 에게 돈을 지급합니다."
                send "{@말머리} &e&l/돈 뺏기 [닉네임] [금액] &7&l- &f해당 유저 에게 돈을 뺏습니다."
                send "{@말머리} &e&l/돈 설정 [닉네임] [금액] &7&l- &f해당 유저의 돈을 설정 합니다."
                send "{@말머리} &e&l/돈 확인 [닉네임] &7&l- &f해당 유저의 소유 금액을 확인 합니다."
                send "&f"
        if arg 1 is "보내기":
            if arg 2 is set:
                if player's money >= arg 3:
                    if arg 2 parsed as player is online:
                        subtract arg 3 from player's money
                        add arg 3 to arg 2 parsed as player's money
                        send "{@말머리} %arg 2%님에게 ( %arg 3% ) 원 만큼 보냈습니다."
                        send "{@말머리} %player%님이 ( %arg 3% ) 원 만큼을 보냈습니다." to arg 2 parsed as player
                    else:
                        send "{@말머리} 해당 플레이어는 오프라인입니다."
                else:
                    send "{@말머리} 돈이 부족합니다."
            else:
                send "{@말머리} 돈을 받을 플레이어를 적어주세요."
        if arg 1 is "주기":
            player don't have permission "sk.money":
                send "{@말머리} 권한이 없습니다."
                exit
            if arg 2 is not set:
                send "{@말머리} 지급할 플레이어를 적어 주세요."
                exit
            if arg 3 is not set:
                send "{@말머리} 지급할 금액을 입력해 주세요."
                exit
            set {_PLAYER.a} to arg 2 parsed as player
            add arg 3 to money of {_PLAYER.a}
            send "{@말머리} &6&l%arg 2% &e&l님에게 &a&l%arg 3%원&e&l을 지급 했습니다 !"
            send "{@말머리} &c&l관리자&e&l로 부터 &a&l%arg 3%원&e&l을 지급 받았습니다 !" to {_PLAYER.a}
            exit
        if arg 1 is "뺏기":
            player don't have permission "sk.money":
                send "{@말머리} 권한이 없습니다."
                exit
            if arg 2 is not set:
                send "{@말머리} 뺏을 플레이어를 적어 주세요."
                exit
            if arg 3 is not set:
                send "{@말머리} 뺏을 금액을 입력해 주세요."
                exit
            set {_PLAYER.a} to arg 2 parsed as player
            if money of {_PLAYER.a} < arg 3:
                send "{@말머리} 해당 플레이어가 충분한 금액을 가지고 있지 않습니다."
                exit
            subtract arg 3 from money of {_PLAYER.a}
            send "{@말머리} &6&l%arg 2% &e&l님에게 &a&l%arg 3%원&e&l을 차감 시켯 습니다 !"
            send "{@말머리} &c&l관리자&e&l로 부터 &a&l%arg 3%원&e&l을 빼았겼습니다 !" to {_PLAYER.a}
            exit
        if arg 1 is "설정":
            player don't have permission "sk.money":
                send "{@말머리} 권한이 없습니다."
                exit
            if arg 2 is not set:
                send "{@말머리} 뺏을 플레이어를 적어 주세요."
                exit
            if arg 3 is not set:
                send "{@말머리} 뺏을 금액을 입력해 주세요."
                exit
            set {_PLAYER.a} to arg 2 parsed as player
            set money of {_PLAYER.a} to arg 3
            send "{@말머리} &6%arg 2% &e&l님의 돈을 &a&l%arg 3%원 &e&l으로 설정 했습니다 !"
            exit
        if arg 1 is "순위":
            make player run cmd "/balancetop" as op
            exit
        if arg 1 is "확인":
            player don't have permission "sk.money":
                send "{@말머리} 권한이 없습니다."
                exit
            if arg 2 is not set:
                send "{@말머리} 확인할 플레이어를 적어 주세요."
                exit
            set {_PLAYER.a} to arg 2 parsed as player
            set {_INT.a} to money of {_PLAYER.a}
            send "{@말머리} &6%arg 2% &e&l님의 보유금액: &a%{_INT.a}%"
            exit
        else:
            send "{@말머리} 보유금액: &a%player's money%"
            exit

5개의 댓글

스크립터브혼
2020.11.22

돈 스크립트는 player's money로 vault API를 사용하지만, 주식 스크립트는 {money::*} 변수로 자체적으로 값을 사용해서 그렇습니다. 이코노미 플러그인을 사용하신다면 주식 스크립트에서 돈이 빠지거나 추가되는 부분을 player's money로 변경하세요.

하잉91
2020.11.22
@스크립터브혼

에센셜을 사용중입니다. 똑같이 {money::*} 이 부분을 player's money 로 변경하면 될까요 ?

스크립터브혼
2020.11.23
@하잉91

코드 보고 수정하세요. 해보시고 모르겠으면 질문주세요.

하잉91
2020.11.23
@스크립터브혼

{money::&player&} 부분을 전부 player's money 로 변경 했고 나머진 제가 어떻게 하는지 몰라서 그대로 적용했는데 똑같이 이 주식.sk 에서만 돈 표시 되는 곳이 로 표시가 되고 구매가 안되네욥 도와주세요 형님 ㅠㅠ

스크립터브혼
2020.11.23
@하잉91

스트립트를 전혀 모르신다면 제가 답변 해 드릴 수 없어요. 원작자에게 수정을 요청하셔야 합니다.

스크립트 Q&A 커뮤니티는 스크립트로 개발하면서 막히는 부분을 해결하기 위해 만들어진 곳입니다.


제가 답변드리는 경우는 어떤 코드를 사용하야하는지 모를 때, 알고리즘을 구성하지 못할때, 구현방법을 찾지 못할 때 등과 같이 개발에 어려움이 있는 경우입니다.

 

코드 검토, 수정 및 커미션 등의 요청은 스크립트 개발자 개개인에게 연락하시길 바랍니다.

원작자가 있는 경우엔 원작자에게 요청하셔야 합니다.


스크립트를 공부하시려면 네이버나 이곳 한마포에 있는 강좌글을 참고하시고
제일 먼저 공부 해야하는 것은 스크립트 설치 시 기본 설치 되어있는 예시파일들입니다.
예시파일들을 읽고 어떤 코드인지 알 수 있어야 합니다.