Pulse Phone 문서
인벤토리
4. 아이템과 인벤토리
아이템은 framework 서버에서만 필요합니다. 파일은 config/items/에, 이미지는 config/items/images/에 있습니다.
휴대폰이 스스로 하는 일. 시작 시 켜 둔 기능에 어떤 아이템이 필요한지 파악한 뒤(아래 표), 다음과 같이 처리합니다:
| 내 인벤토리 | 일어나는 일 |
|---|---|
| 기본 인벤토리를 쓰는 ESX | 빠진 아이템을 ESX의 items 테이블에 추가합니다. 기존 행은 절대 바꾸지 않습니다. 콘솔에 추가한 항목을 한 줄로 표시합니다. 아이템을 다시 불러올 수 없는 구버전 ESX라면 서버를 한 번 재시작하세요. config/items/esx.sql은 직접 추가할 때만 사용합니다. |
| qb-inventory를 쓰는 QBCore(ps-, lj-inventory 포함) | 서버가 실행되는 동안 빠진 아이템을 QBCore shared items에 추가합니다. qb-core에 이미 있는 아이템(예: 자체 phone)은 그대로 둡니다. 콘솔에 추가한 항목을 한 줄로 표시합니다. |
| ox_inventory (ESX, Qbox, ox_core) | ox_inventory는 자체 파일에서만 아이템을 읽습니다. 시작 점검은 빠진 아이템만 나열하고, 그 항목을 박스 아래에 출력하므로 그대로 ox_inventory/data/items.lua에 붙여 넣으면 됩니다. |
| 그 밖의 인벤토리 | 시작 점검이 빠진 아이템을 알려 줍니다. 해당 인벤토리에서 아이템을 추가하는 방식대로 추가하세요("인벤토리별로 할 일" 아래 표 참고). |
중요
이미지는 자동으로 복사되지 않습니다. 시작 점검이 빠진 이미지와 넣을 폴더를 알려 줍니다. 예: copy pulse_magpack.png, pulse_router.png from config/items/images/ into qb-inventory/html/images.
시작 점검에는 Items 줄이 하나 있습니다. 모든 아이템이 있으면 [OK], 아니면 [FAIL]과 함께 빠진 이름과 해결 방법이 아래에 표시됩니다. 수정한 뒤에는 phone:health로 다시 출력하세요.
| 아이템 | 필요한 경우 |
|---|---|
phone |
Config.Item.required = true(플레이어가 휴대폰을 소지해야 함)이거나 고유 휴대폰을 쓸 때만. |
pulse_phone_box |
매장이 휴대폰을 밀봉된 박스로 판매합니다. 기본으로 켜져 있습니다(Config.Store.box). |
pulse_magpack, pulse_magpack_max, pulse_cable |
충전 액세서리. 기본으로 켜져 있습니다(Config.Charging). |
pulse_router |
플레이어가 집에 설치하는 라우터 Pulse Home Wi-Fi. 기본으로 켜져 있습니다(config/apps.lua). |
pulse_burner |
전용 번호가 있는 선불폰 Pulse Burner. 기본으로 켜져 있습니다(config/apps.lua). |
pulse_case, pulse_case_clear, pulse_pouch, pulse_protector |
휴대폰 보호: 케이스, 방수 파우치, 화면 보호 필름. 기본으로 켜져 있습니다(config/apps.lua). |
pulse_buds, pulse_ringlight, pulse_wallet |
Pulse Buds, Pulse Ring Light, Pulse Card Wallet. 기본으로 켜져 있습니다(config/apps.lua). |
powerbank |
선택 사항. 예전 보조배터리 아이템으로, Reserve처럼 작동합니다. |
pulse_phone_box_<finish> |
Config.Store.boxPerFinish = true일 때만. |
radio(또는 원하는 이름) |
Config.Radio.item을 설정할 때만(5절, Radio). ox_inventory와 qb-core에는 이미 radio 아이템이 있습니다. |
아이템이 빠져 있어도 휴대폰은 시작됩니다. 매장은 박스를 끄거나 해당 아이템을 판매 목록에서 빼고, 콘솔에 추가할 아이템 이름을 알려 줍니다.
Reserve는 겹쳐집니다. 완충된 팩은 메타데이터가 없으므로 최대 20개가 한 칸에 들어갑니다. 쓰다 만 팩을 떼어 내면 충전량이 메타데이터에 담긴 별도 아이템이 되므로(ox_inventory, qb-inventory, qs-inventory) 빈칸이 필요합니다. 아이템 메타데이터가 없는 경우(standalone, ESX 기본 인벤토리)에는 사용 중인 팩만 추적하며, 캐릭터당 크기별로 하나입니다.
Config.Item.required = true일 때(또는 고유 휴대폰) 서버가 인벤토리를 통해 휴대폰 아이템을 확인하고, 아이템이 없는 플레이어의 휴대폰 요청을 거부합니다. 아이템을 잃으면 긴급 전화를 포함해 그 플레이어의 통화가 끊기고 휴대폰이 닫힙니다.
밀봉된 박스를 다른 사람에게 주기. ox_inventory, qb-inventory, qs-inventory에서는 박스 아이템 자체에 구매한 모델과 마감이 담기므로, 누가 열든 그 휴대폰을 받습니다. 그 밖의 인벤토리에서는 박스가 일반 아이템이고 모델과 마감은 구매자의 구매 기록에 저장됩니다. 남에게 준 박스는 새 주인의 다음 구매 내역이나 기본 모델과 마감으로 열립니다. Config.Store.boxPerFinish = true이면 박스 아이템 이름에 마감은 남지만 모델은 남지 않습니다.
내 인벤토리에 붙여 넣을 정확한 텍스트
아이템 항목을 직접 작성할 필요가 없습니다. 아이템이 빠져 있으면 시작 점검이 내 인벤토리에 맞는 정확한 텍스트를 박스 아래에 출력하고, Settings > Server > Health Check에도 같은 텍스트가 Copy 버튼과 함께 표시됩니다. 붙여 넣고, 인벤토리와 휴대폰을 재시작한 뒤, phone:health를 다시 실행하세요.
| 내 인벤토리 | 출력되는 내용 | 넣을 위치 |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core, ND Core) | ox_inventory 항목 | ox_inventory/data/items.lua의 테이블 안 |
| QBCore (qb-, ps-, lj-inventory) | QBCore 항목(휴대폰이 직접 추가하지 못한 경우에만) | qb-core/shared/items.lua |
| qs-inventory | QBCore 형식 항목 | qs-inventory의 아이템 목록 |
| ESX 기본 인벤토리 | SQL 한 줄(휴대폰이 직접 추가하지 못한 경우에만) | 데이터베이스 도구에서 실행 후 재시작 |
| TMC | 휴대폰에 필요한 모든 아이템의 TMC 항목(TMC에는 어떤 아이템이 있는지 물어볼 수 없음) | TMC 아이템 목록(sim_card가 있는 파일), 기존 항목은 유지 |
| 그 밖의 인벤토리 | 대부분의 인벤토리가 읽는 QBCore 형식 항목 | 해당 인벤토리의 아이템 목록 |
Reserve 기준으로 각각의 모습:
-- ox_inventory/data/items.lua
['pulse_magpack'] = { label = "Pulse Reserve", weight = 110, stack = true, close = true, consume = 0, description = "Magnetic battery pack. Fills 70% of a phone.", client = { export = "phone.usePack", image = "pulse_magpack.png" } },
-- qb-core/shared/items.lua, qs-inventory and similar
['pulse_magpack'] = { name = "pulse_magpack", label = "Pulse Reserve", weight = 110, type = 'item', image = "pulse_magpack.png", unique = false, useable = true, shouldClose = true, description = "Magnetic battery pack. Fills 70% of a phone." },
-- TMC
['pulse_magpack'] = { ['label'] = "Pulse Reserve", ['weight'] = 110, ['type'] = 'item', ['image'] = "pulse_magpack.png", ['unique'] = false, ['stackable'] = true, ['useable'] = true, ['shouldClose'] = true, ['description'] = "Magnetic battery pack. Fills 70% of a phone." },-- ESX default inventory
INSERT IGNORE INTO `items` (`name`, `label`, `weight`, `rare`, `can_remove`) VALUES
('pulse_magpack', 'Pulse Reserve', 1, 0, 1);ox_inventory 자체 phone 아이템. ox_inventory에는 다른 휴대폰 스크립트용으로 만든 phone 항목이 들어 있습니다. 바꿀 필요는 없으며, 사용하면 Pulse Phone이 열립니다. 시작 점검의 Phone item 줄이 항목이 어떻게 연결되어 있는지 알려 줍니다. 다른 스크립트의 export를 가리킬 때만([WARN], 또는 required나 고유 휴대폰일 때 [FAIL]) 교체할 항목을 출력합니다. 그 항목이 원래 가리키던 휴대폰 스크립트가 아직 실행 중이면 아이템은 그 스크립트를 엽니다. Phone item 줄에 그 이름이 나오니, server.cfg에서 제거하세요.
인벤토리별로 할 일
| 인벤토리 | 아이템 넣을 위치 | 이미지 넣을 위치 |
|---|---|---|
| ox_inventory (ESX, Qbox, ox_core) | 시작 점검이 출력한 항목(또는 ox_inventory.lua 전체)을 ox_inventory/data/items.lua의 테이블 안에 붙여 넣으세요. ox_inventory 자체 ['phone'] 항목은 그대로 두세요(Pulse Phone이 열립니다). Phone item 줄에 다른 스크립트가 열린다고 나올 때만 출력된 항목으로 교체하세요 |
ox_inventory/web/images/ |
| qb-inventory | 없음: 시작 시 추가됩니다. 직접 추가하려면 qb-core.lua를 qb-core/shared/items.lua에 붙여 넣으세요 |
qb-inventory/html/images/ |
| ps-inventory, lj-inventory | 없음: qb-inventory와 마찬가지로 시작 시 추가됩니다 | 인벤토리의 이미지 폴더 |
| qs-inventory | qb-core.lua를 qb-core/shared/items.lua 또는 qs-inventory 자체 아이템 목록에 붙여 넣으세요 |
인벤토리의 이미지 폴더 |
| codem-inventory, core_inventory, tgiann-inventory, origen_inventory | 다른 아이템을 추가하는 방식대로 아이템 목록에 추가하세요. 이름, 라벨, 무게는 qb-core.lua의 것을 사용합니다(phone, powerbank, pulse_magpack, pulse_magpack_max, pulse_cable, pulse_router, pulse_burner, pulse_buds, pulse_ringlight, pulse_wallet, pulse_phone_box). pulse_magpack.png는 powerbank와 pulse_magpack_max에도 사용하세요 |
인벤토리의 이미지 폴더 |
| ak47_inventory | 아이템과 함께 아래의 onUse 줄을 추가하세요 |
인벤토리의 이미지 폴더 |
| ESX 기본 인벤토리 | 없음: 시작 시 추가됩니다. 직접 추가하려면 esx.sql을 사용하세요 |
필요 없음 |
| vRP 2 | 위의 vRP 섹션 참고 | |
| Standalone | 없음 |
이 표의 다른 인벤토리에서는 휴대폰이 아이템을 스스로 사용 가능하게 만듭니다. ox_inventory는 파일에 이미 있는 client = { export = 'phone....' } 줄을 사용합니다.
ox_inventory: 이전에 다른 휴대폰을 썼다면, 그 휴대폰의 Item('phone', ...) 훅도 ox_inventory/modules/items/client.lua에서 제거하세요.
ak47_inventory는 아이템 사용 방식을 각 아이템 항목에 둡니다. 다음을 추가하세요:
-- powerbank
server = { onUse = function(source) exports.phone:UsePowerbank(source) end },
-- pulse_magpack and pulse_magpack_max
server = { onUse = function(source, item) exports.phone:UseMagPack(source, item and item.slot, item and item.name) end },
-- pulse_cable
server = { onUse = function(source) exports.phone:UseChargingCable(source) end },
-- pulse_phone_box
server = { onUse = function(source, item) exports.phone:UseBox(source, item and item.slot) end },
-- pulse_router
server = { onUse = function(source) exports.phone:UseRouter(source) end },
-- pulse_burner
server = { onUse = function(source, item) exports.phone:UseBurner(source, item and item.slot) end },
-- pulse_case, pulse_case_clear, pulse_pouch, pulse_protector
server = { onUse = function(source, item) exports.phone:FitPhoneProtection(source, item and item.name) end },
-- pulse_buds
server = { onUse = function(source) exports.phone:UseBuds(source) end },
-- pulse_ringlight
server = { onUse = function(source) exports.phone:UseRingLight(source) end },
-- pulse_wallet
server = { onUse = function(source) exports.phone:UseCardWallet(source) end },고유 휴대폰(Config.Item.unique = true)은 전화번호를 아이템에 저장하므로, 아이템을 건네면 휴대폰도 함께 넘어갑니다. ox_inventory, qb-inventory, qs-inventory, core_inventory 또는 codem-inventory가 필요합니다.