개인 자료란 (JE)

  서버 커뮤니티

Profile S.U 대표칭호 없음
Profile

질문하기 스크립트

간단하게 주식 만드려 했는데 도와주세요

2021.06.27 조회 수 152 추천 수 0
이해도 1.12 
게임버전 (JE) 스피곳 
스크립트 애드온 2.5.3 

주식을 만드려고 하는데 창이 열린 상태에서 가격이 변해도 인벤을 닫기 전까지는 바뀌기 전 가격으로 뜨는데 어떻게 해야하나요?

every 300 seconds:

    set {a주식}  to random integer between 100 and 10000

    set {b주식}  to random integer between 10000 and 30000

    set {c주식}  to random integer between 30000 and 50000

    set {d주식}  to random integer between 50000 and 100000

    broadcast "&6주격가격이 변동되었습니다!"

command /주식확인:

    trigger:

        open chest with 3 rows named "&b주식 시장" to player

        set slot 10 of current inventory of player to paper named "&7A사" with lore "" and "&6구매: &f%{a주식}%원" and "&a판매: &f%{a주식}%원" 

        set slot 12 of current inventory of player to paper named "&7B사" with lore "" and "&6구매: &f%{b주식}%원" and "&a판매: &f%{b주식}%원"

        set slot 14 of current inventory of player to paper named "&7C사" with lore "" and "&6구매: &f%{c주식}%원" and "&a판매: &f%{c주식}%원"

        set slot 16 of current inventory of player to paper named "&7D사" with lore "" and "&6구매: &f%{d주식}%원" and "&a판매: &f%{d주식}%원" 

2개의 댓글

HAN1110
2021.06.27

30초마다 변경되네요.

애초에 화면을 닫았다 열어야합니다.

안그러면 같은화면만 보여줄게요.

스크립터브혼
2021.06.27

인벤토리를 업데이트 하는 시점이 좀 오락가락합니다. 그 기준을 저도 잘 모르겠구요.

이런 불편사항에 대해서 버킷팀이 피드백을 해서 버킷 API에는 수동 업데이트 메소드가 있어요.

스크립트에서는 아쉽게도 해당 메소드는 구현되어있지 않아요.


이걸 간단하게 해결하는 방법은 인벤토리를 다시 열어주면 됩니다.

인벤토리를 열어주면 기존에 열렸던 인벤토리는 닫히게 됩니다.


그리고, 인벤토리에 세팅된 아이템은 독립된 데이터입니다. 아이템 생성에 사용된 변수를 바꾼다고 아이템의 값이 바뀌진 않아요.

변수가 변동이 있을 때, 아이템을 새로 생성하여 세팅하거나, 기존의 아이템의 값을 직접 변경해줘야 합니다.

#1 모두가 함께쓰는 gui는 하나만 생성하고 같이 쓰기
on load:
    set {gui} to chest with 3 rows named "&b주식 시장"
    set slot 10 of {gui} to paper named "&7A사" with lore "" and "&6구매: &f%{a주식}%원" and "&a판매: &f%{a주식}%원" 

#2 생성된 gui를 열어주기
command /주식확인:
    trigger:
        open {gui} to player

#3 gui가 변경되면 플레이어에게 다시 열어주기
every 300 seconds:
    set {a주식}  to random integer between 100 and 10000
    set lore of slot 10 of {gui} to "" and "&6구매: &f%{a주식}%원" and "&a판매: &f%{a주식}%원"
    
    open {gui} to viewers of {gui}

[Inventory Viewers] 익스프레션은 gui를 사용하고 있는 플레이어를 반환합니다.