개인 자료란 (JE)

  서버 커뮤니티

Profile 나쁜학생 대표칭호 없음
Profile

질문하기 스크립트

스크립트 질문 if

2021.07.04 조회 수 717 추천 수 0
이해도 1.16 
게임버전 (JE) 페이퍼 
스크립트 애드온 2.2 


gui에서 아이템 교환 상점을 만들려고 해서 아이템 종류, 아이템 갯수에 이름도 인식하는 if 구문은 어떻게 적어야 하나요?


이전에 

if player has 1 coal named "석탄":

@구문~~

else:

@구문~~

이렇게 작성하고 나서 적용해보니

오류는 없다고 뜨는 데 인벤토리에 석탄이라는 아이템 자체를 인식하지 못 하더라고요;;


해결할 방법이 없을 까요?

2개의 댓글

DDang_
2021.07.04

아이템 이름, 로어 전부 적어야함 zz 차라리 변수에 저장하고 그걸 쓰는게 더 나음

스크립터브혼
2021.07.04

스크립트에서 Item 타입과 ItemType 타입은 서로 다른 타입입니다.

패턴에서 요구하는 타입이 Item인 경우와 ItemType인 경우를 잘 보시고 사용해야해요.

[Item 타입과 ItemType 타입의 차이]를 먼저 숙지하세요.


%itemtype% named %text%와 같이 익스프레션을 사용한 아이템은 Item 타입이 됩니다.

Item은 명확한 비교를 하기 때문에 모든 메타데이터(이름, 로어, 개수, 어트리뷰트... 등)이 완전히 일치해야 '같다'를 반환합니다.

ItemType은 느슨한 비교를 하기 때문에 일부만 같아도 '같다'를 반환하죠.

작성하신 코드에서는 익스프레션을 사용했기 때문에 다른 메타데이터가 다르면 '다르다'를 반환하게 됩니다.


가장 베스트인 방법은 플레이어가 얻게 될 아이템을 전역변수로 고정해 놓는 방법입니다.

# fix item
on load:
    set {coal} to coal named "석탄"

# give item
give {coal} to player

# compare item
1 of tool of player is 1 of {coal}

이렇게 되면 플레이어가 가지고 있는 Item과 완전 일치하기 때문에 '같다'를 얻을 수 있습니다.


다른 방법으로는 각각의 메타데이터를 직접 비교하는 것입니다.

function checkCoalItem(item: item): boolean:
    return false if {item} is not coal
    return false if name of {item} is not "석탄"
    return false if lore of {item} is "첫번째줄" and "두번째줄"
    return true

# ex
if checkCoalItem( {item} ) is true:
    send "찾던 아이템입니다."

함수를 통해 여러 조건 중 하나라도 만족하지 못하면 false 모두 만족하는 경우 true를 반환하도록 하여

해당 함수가 true인 경우에만 동작하게 하면 됩니다.

여러 데이터 중 지정된 일부 메타데이터만 비교를 하기 때문에 비교적 느슨한 비교가 됩니다.

뉴스 및 창작물
/files/thumbnails/268/789/003/262x150.crop.jpg?20240515192032

레드스톤

벌레먹은 돌 빠르게 제거하는 법

GlassesFilm

2024-05-15

0

/files/thumbnails/797/788/003/262x150.crop.jpg?20240515090924

건축

마인크래프트로 구현한 카르카손 보드게임

Warak

2024-05-15

1

/files/thumbnails/487/784/003/262x150.crop.jpg?20240508233607

모드

Windows Borderless 모드에서 악성코드 발견

학교가기싫다

2024-05-08

1

/files/thumbnails/384/778/003/262x150.crop.jpg?20240512002324

업데이트

마인크래프트 자바 에디션 스냅샷 24w18a

학교가기싫다

2024-05-06

0

/files/thumbnails/855/781/003/262x150.crop.jpg?20240505141129

레드스톤

레이저 클리너

GlassesFilm

2024-05-05

1