이해도 | 1.16 |
---|---|
게임버전 (JE) | 스피곳 |
스크립트 애드온 | 2.5 |
안녕하세요
애드온 없이 gui 띄우는 건 항상
제게 엄청난 도움이 되고 있습니다.
이번에는 gui로 수리하기를 만들어볼려고 하는데요
오류 없이 리로드는 되는데 작동을 하지 않습니다.
수리권을 오른쪽 마우스 클릭하면,
gui 수리는 잘 나오는데 아이템을 올리면 더이상 빼지지가 않고 슬롯에서 수리만 되지
가져오질 못합니다ㅠㅠ
#GUI수리 스크립트
on load:
# [1] 필요한 아이템을 세팅합니다.
set {gui::guik::slot::0} to gray stained glass pane named ""
set {gui::guik::slot::1} to white stained glass pane named ""
set {gui::guik::slot::2} to white stained glass pane named ""
set {gui::guik::slot::3} to white stained glass pane named ""
set {gui::guik::slot::4} to gray stained glass pane named ""
set {gui::guik::slot::5} to white stained glass pane named ""
set {gui::guik::slot::6} to white stained glass pane named ""
set {gui::guik::slot::7} to white stained glass pane named ""
set {gui::guik::slot::8} to gray stained glass pane named ""
set {gui::guik::slot::9} to gray stained glass pane named ""
set {gui::guik::slot::10} to white stained glass pane named ""
set {gui::guik::slot::12} to white stained glass pane named ""
set {gui::guik::slot::13} to gray stained glass pane named ""
set {gui::guik::slot::14} to white stained glass pane named ""
set {gui::guik::slot::15} to anvil named "&f수리하기"
set lore of {gui::guik::slot::15} to "&f- 모루를 클릭하면 아이템을 수리합니다"
set {gui::guik::slot::16} to white stained glass pane named ""
set {gui::guik::slot::17} to gray stained glass pane named ""
set {gui::guik::slot::18} to gray stained glass pane named ""
set {gui::guik::slot::19} to white stained glass pane named ""
set {gui::guik::slot::20} to white stained glass pane named ""
set {gui::guik::slot::21} to white stained glass pane named ""
set {gui::guik::slot::22} to gray stained glass pane named ""
set {gui::guik::slot::23} to white stained glass pane named ""
set {gui::guik::slot::24} to white stained glass pane named ""
set {gui::guik::slot::25} to white stained glass pane named ""
set {gui::guik::slot::26} to gray stained glass pane named ""
# [2] 가상인벤토리를 생성합니다.
suppress variable save warning
set {gui::guik::inventory} to chest inventory with 3 rows named "&a[장인NPC] &f장비 수리하기"
# [2-1] 가상인벤토리에 아이템을 배치합니다.
loop {gui::guik::slot::*}:
set {_slot} to loop-index parsed as integer
set slot {_slot} of {gui::guik::inventory} to loop-value
on rightclick holding paper:
if name of player's tool contains "&f수리권":
open {gui::guik::inventory} to player
on inventory click:
current inventory of player is {gui::guik::inventory}
loop 27 times:
add 1 to {_temp}
if slot {_temp}-1 of player's current inventory is helmet or chestplate or sword or shovel or hoe:
if data of slot {_temp}-1 of player's current inventory is not 0:
add 1 to {_count}
if {_count} is not set:
set slot 15 of player's current inventory to anvil named "&f수리하기" with lore "&f- 모루를 클릭하면 아이템을 수리합니다" and "&c- 수리할 아이템이 없습니다" and "&a투구+갑옷+칼+삽+괭이만 수리 가능합니다"
cancel event
if slot 11 of player's current inventory is helmet or chestplate or sword or shovel or hoe:
if data of slot 11 of player's current inventory is not 0:
set data of slot 11 of player's current inventory to 0
close player's inventory
send "아이템을 수리하였습니다!"
remove 1 of player's tool from player's tool
on inventory close:
if inventory name of player's current inventory is "&a[장인NPC] &f장비 수리하기":
if slot 11 of player's current inventory is not air:
give slot 11 of player's current inventory to player
command /수리권:
trigger:
if player is op:
give paper named "&f수리권" to player
스크립터브혼
2020.11.07on inventory click 이벤트가 완전히 잘못 구현되어있습니다.
작성하신 코드는 인벤토리의 어느 곳을 클릭하든 인벤토리 전체 아이템 중 커스텀 모델 데이터가 0인 것이 하나라도 있으면 이벤트가 캔슬됩니다.
on inventory click 이벤트의 클릭한 슬롯은 [Clicked]익스프레션을 사용하고,
클릭한 슬롯의 번호를 구하고자 할때는 [Slot Index]를 사용합니다.
구현하고자 하는 기능은 클릭한 아이템이나 슬롯에 따라 동작 수행을 하는 것이지 전체 슬롯을 루프하는것이 아닙니다.
작성하신 코드의 흐름에 대해서 다시 파악해보시기 바랍니다.
마린잉엥
2020.11.08우선 아이템 복제가 되는 걸 막아야 되고
100프로 수리가
give slot 11 of player's current inventory to player
이 구문이 맞고 조건을 수정하면 되겠죠?
스크립터브혼
2020.11.08복제를 막는다는게 무슨말인지 모르겠습니다. 올바르게 구현된 코드면 복제되지 않아요.
give ~ 의 경우 구현 방법들 중 한가지 입니다.
인벤토리 클릭을 막고 인벤토리를 닫을때 지급해도 되고,
인벤토리 클릭에서 꺼애 갈 수 있도록해도 됩니다.
마린잉엥
2020.11.09고민이네요..
인벤토리 클릭을 막으면 수리할 아이템을 슬롯 11에 올릴 수가 없고
인벤토리 클릭에서 꺼내갈 수 있도록하면 모루를 무한복제할 수 있고 아이템도 무한 복제가 되네요 ㅠㅠ