본문 바로가기

마인크래프트/스크립트

마인크래프트 스크립트 - 1개 없애기 amount of, 아이템 갯수 얻기

728x90
반응형

 

마인크래프트 스크립트 - 1개 없애기 amount of, 아이템 갯수 얻기

 


 

안녕하세요~ 저번에 아이템 인챈트 강화를 하다가 강화석 1개를 없애고 싶은데

remove를 사용하니 아이템이 아니라며 안되었는데 다른 방법으로 1개를 없앴어요.

어떻게 하는지 한번 자세히 알아봅시다~

 

:: 목표 ::

 

원하는 아이템 수량을 얻고 없애보자

 


 

https://skriptlang.github.io/Skript/expressions.html#ExprAmountOfItems

 

amount of ~ in ~

여기서 중요한 구문입니다.

 

on rightclick on sign:
    if line 1 is "test":
        open chest with 1 rows named "test" to player
        set slot 0 of current inventory of player to anvil named "test"

on inventory click:
    if iname contains "test":
        if click type is left mouse button with shift or right mouse button with shift or right mouse button:
            cancel event
        else:
            if clicked raw slot is 0:
                cancel event
                set {_x} to slot 8 of current inventory of player
                message "%{_x}%"

 

일단 대충 스크립트를 짰어요.

 

 

 

창을 열어서 0번 슬롯을 클릭하면 8번 슬롯의 아이템 정보를 불러오도록 했습니다.

누르니 5 ~ 아이템 이름이 뜨네요.

5는 아이템 수량인데 우리는 1개만큼 차감시킬테니 아이템 수량 - 1만큼 set하면 되겠네요.

전에는 remove라는 문법을 사용해보려고 했는데 안되더라구요.

 

 

위 사진처럼 amount of ~ in ~을 이용해서 적어봤습니다.

{_i}에다가 {_x}의 현재 8 slot의 아이템 수량을 대입합니다.

 

 

채팅으로 출력하니 제대로 나옵니다. 이게 현재 창의 해당 아이템과 동일한 갯수가 아니라

먼저 {_x}에 slot 8의 아이템 정보를 넣었고 amount of 로 {_x}의 양을 가져왔으니 slot 8에 있는

아이템의 수량만 가져오는건데 왜 전에 이상하게 생각했을까요 ㅋㅋㅋ

 

delete slot 8 of current inventory of player

 

만약 이렇게 써버리면 slot 8의 아이템은 통째로 삭제됩니다. 복구도 못해요.

보통 게임에서 원하는 수량만 없애지 통으로 없애지는 않죠

remove라는 문법이 있다고 하는데 저는 사용하지 않겠습니다.

오류가 떠서 잘 안되요. 제가 이해를 못하는건지...

여튼 제가 하려는 방법은 delete로 다 없애고

{_i} - 1만큼 set으로 다시 설정하는겁니다.

그럼 결과적으로 1만큼 없어진거죠.

 

set {_i} to amount of {_x} in current inventory of player - 1

 

위 사진의 코드 뒤에 - 1을 붙혔습니다.

이렇게 안하면 코드를 한줄 더 적어야하니까 미리 -1을 해놓는거죠.

 

set {_x} to slot 8 of current inventory of player
set {_i} to amount of {_x} in current inventory of player - 1
delete slot 8 of current inventory of player
wait 4 tick
set slot 8 of current inventory of player to {_i} of {_x}

 

시각적인 효과와 오류 방지를 위해 wait 4 tick을 주고

set slot 8 of current inventory of player to {_i} of {_x}

을 입력하여 원래 있던 수량 - 1 만큼 재설정하는 효과를 줬습니다.

 

 

만약 계속 버튼을 눌러 없애면 0 이하로 내려가 음수가 되는게 아니라

그냥 없어지고 air로 바뀝니다.

이걸 응용하면 수량을 요구하는 스크립트, 교환 등등 스크립트를 만들 수 있겠네요.

 

 

 

 

 

※ 스크립트 다운로드 ※

 

on rightclick on sign:
    if line 1 is "test":
        open chest with 1 rows named "test" to player
        set slot 0 of current inventory of player to anvil named "test"

on inventory click:
    if iname contains "test":
        if click type is left mouse button with shift or right mouse button with shift or right mouse button:
            cancel event
        else:
            if clicked raw slot is 0:
                cancel event
                set {_x} to slot 8 of current inventory of player
                set {_i} to amount of {_x} in current inventory of player - 1
                delete slot 8 of current inventory of player
                wait 4 tick
                set slot 8 of current inventory of player to {_i} of {_x}
                

 


 

:: 해당 서버에서 사용된 애드온 ::

 

Skript

GomSK

InvSk

GameAPI

HolographicDisplaysAddon

MarSK

QuarSk

SharpSK

SkChoke

Skellett

SkExtras

SkQuery

skRayFall

skript-yaml

SkRPG

SkStuff

skUtilities

TuSKe

Umbaska

Vault

 

만약 코드를 적용했는데 서버에서 에러가 뜨면 애드온 미적용 때문일 확률이 높습니다.

애드온은 아래 사이트에서 대부분 받을 수 있으며 없는 애드온은

아마 한국인 개발자가 만든 애드온일 확률이 높습니다.

구글이나 네이버에 애드온 모음을 검색하면 나와있으니 찾아서 다운로드 하시거나

제 블로그 마인크래프트 항목 처음 글에 다운로드 링크가 걸려있으니 확인하시길 바랍니다.

 

 

 

 

:: 이 글은 원 출처만 남기면 언제든 퍼가고 수정하셔도 좋습니다 ::

 

 

 

728x90
반응형