Skip to content
JunHyeong Lim edited this page Oct 8, 2018 · 8 revisions

코드

main.ms

bind(inventory_click, null, array('virtual': true), @e) {
    @id = pinventory_holder()
    if (@id != 'ch.gui1') {
        die()
    }
    cancel()
    @clickedSlot = @e[rawslot]
    switch (@clickedSlot) {
        case 12:
            set_ploc(get_spawn())
            msg('스폰으로 이동했습니다.')
            break()
        case 14:
            close_pinv()
            msg('GUI 를 종료했습니다.')
            break()
    }
}

aliases.msa

*:/gui = >>>
    @id = 'ch.gui1'
    if (array_contains(get_virtual_inventories(), @id)) {
        delete_virtual_inventory(@id)
    }
    @items = array(
        12: array(
            type: 1,
            data: 0,
            qty: 1,
            meta: array(
                'display': '스폰으로 이동',
                'lore': array(
                    '클릭 시', 
                    '스폰으로 이동'
                )
            )
        ),
        14: array(
            type: 3,
            data: 0,
            qty: 1,
            meta: array(
                'display': 'GUI 종료',
                'lore': array(
                    '클릭 시',
                    'GUI 종료'
                )
            )
        )
    )
    create_virtual_inventory(@id, 27, '타이틀', @items)
    popen_inventory(player(), @id)
<<<

설명

위 예제는 간결함을 위해 어쩔 수 없었으나 create_virtual_inventory() 는 커맨드헬퍼의 배열값을 버킷 인벤토리로 변환하기 때문에 오버헤드가 있는 함수입니다. 정도가 미미하긴 하지만 대형서버라면 한 번만 생성하여 재사용하는 것을 추천합니다.

Clone this wiki locally