개인 자료란 (JE)

  서버 커뮤니티

Profile 라카르 대표칭호 없음
Profile

질문하기 스크립트

작업대 열 때 조건을 주고 싶은데 잘 안됩니다.

2021.06.20 조회 수 112 추천 수 0
이해도 1.16 
게임버전 (JE) 버킷 
게임버전 (BE) 없음. 
스크립트 버전 입문자(아무것도 몰라요) 
스크립트 애드온 2.6 

command /작업:

    trigger:

            if amount of gold nugget in player's inventory>0:

                open crafting table to player

                remove 1 of gold nugget from player's inventory

            else:

                message "아이템이 부족합니다."


작업 명령어를 치면,  인벤토리의 특정 아이템의 갯수가 차감되고, 작업대가 열리는 플러그인을 어떻게 만들어야 할까요? 



이와 더불어, 상점 GUI를 만들려고 하는데, 돈으로 거래하는 것이 아닌, 특정 아이템을 차감하여 아이템을 구매하는 그런 것도 만들고 싶은데 어떻게 해야할까요? 

2개의 댓글

DDang_
2021.06.20

우선 인벤토리에 해당하는 템이 있는지 검사하는거부터 해보세요

스크립터브혼
2021.06.20

[Amount of Items] 익스프레션의 패턴은 Item이 아닌 ItemType을 사용합니다.

ItemType은 느슨한 타입비교로 완전히 일치하는 아이템을 찾는 것이 아닙니다.

 * Item과 ItemType의 차이는 [Item 타입과 ItemType 타입의 차이]를 참고하시길 바랍니다.



완전 일치하는 아이템을 찾아 제거하려면 익스프레션을 통해 생성된 아이템을 비교 해야합니다.

function ExprToInventory(i:inventory) :: inventory:
    return {_i}
function ExprItemAmount(item:item,inventory:inventory) :: integer:
    set {_one} to 1 of {_item}
    loop all items in ExprToInventory( {_inventory} ):
        1 of loop-item is {_one}
        add item amount of loop-item to {_amount}
    return {_amount} otherwise 0

생성된 아이템과 인벤토리를 인수로 넣으면 인벤토리속 일치하는 아이템의 개수를 반환합니다.

해당 함수를 사용하여 코드에 적용하면 다음과 같습니다

command /작업:
    trigger:
        set {_item} to gold nugget named "이름이 지정된 아이템 화폐"
        set {_amount} to ExprItemAmount( {_item}, inventory of player )
        if {_amount} > 0:
            open crafting table to player
            remove 1 of {_item} from inventory of player
        else:
            message "아이템이 부족합니다."