개인 자료란 (JE)

  서버 커뮤니티

Profile Blackqkw 대표칭호 없음
Profile

이해도 1.16 
게임버전 (JE) 페이퍼 
스크립트 애드온 2.5-alpha6 

menu.sk 

여기서 GUI화면의 15번 슬롯을 클릭하면 "/home" 명령어가 실행되는데 

GUI 화면을 연 상태에서 자신의 인벤토리의 15번  슬롯을 클릭해도 "/home" 명령어가 실행됩니다.

{inv.} 변수 때문에 그러는 건지.. 

도와주세요!




5개의 댓글

스크립터브혼
2020.08.18

current inventory는 플레이어가 열어놓은 인벤토리입니다.
클릭 위치에 상관없이 플레이어가 열어놓은 인벤토리를 반환합니다.

clicked slot은 슬롯의 번호를 가져옵니다.
클릭한 인벤토리에 상관없이 슬롯번호를 반환합니다.

즉,
어느 인벤토리를 클릭하든 열어놓은 인벤토리가 {inv.menu1}이고
어느 인벤토리를 클릭하든 슬롯이 11, 15인 경우 동작하게 됩니다.

첫번째 조건문에서 current inventory 대신 clicked inventory로 바꾸시면 해결될겁니다.
clicked inventory는 클릭한 인벤토리를 반환합니다.

@스크립터브혼

[22:33:24 ERROR]: [Skript] the clicked inventory is not a types.attributetype (테스트.sk, line 19: if clicked inventory of player is {inv.menu1}:') 라는 오류가 떠요 ㅠ menu.sk  

스크립터브혼
2020.08.19
@Blackqkw

if clicked inventory is {inv.menu1}:

Blackqkw
2020.08.19
@스크립터브혼

도움을 주셔서 감사합니다 :) 그런데 하나만 더 질문드려도 될까요?

인벤토리에 있는 아이템을 '마우스 클릭'으로는 GUI화면에 아이템을 넣거나 가져와지지 않지만,

"쉬프트+우클릭" 으로는 GUI 화면에 아이템을 넣을 수 있던데 "쉬프트+우클릭" 으로도 GUI 화면에 아이템을 못 넣도록 할 수 있는

방법이 있나요?

스크립터브혼
2020.08.19
@Blackqkw

먼저 작성하신 코드를 논리적으로 어떻게 동작하는지 이해를 하시기바랍니다.

cancel eventon inventory click 이벤트를 취소시킵니다.
그런데 cancel eventif clicked inventory is {inv.menu1} 조건문을 통과해야 합니다.
플레이어 인벤토리 클릭이 가능한 이유는 cancel event가 플레이어 인벤토리를 클릭할때는 동작하지 않기 때문이죠.

인벤토리 이벤트에 활용할 수 있는 익스프레션은
[Inventory], [Open Inventory], [Clicked Inventory]
[Inventory Action], [Inventory Slot] 등이 있습니다.

좌클릭, 우클릭, 쉬프트 좌클릭, 쉬프트 우클릭, 휠클릭 등의 클릭의 종류는 [Inventory Action]으로 확인할 수 있습니다.
이것들을 활용하여 논리적으로 어떻게 동작해야 하는지 생각해보시고 코드를 만들어보시기 바랍니다.
코드 작성이 어려우시다면 논리적으로 어떻게 동작하게 할지 구상해서 다시 질문주세요.