Pulse Phone 문서
문제 해결
11. 문제 해결
여기서 시작하세요: 서버 콘솔의 시작 점검을 읽으세요. PULSE PHONE v1.x.x와 빌드로 시작해, 영역별로 한 줄씩(Server, Database, Framework, Connected scripts, Items...) 보여 줍니다. 모든 FIX 또는 NOTE 줄 아래에는 문제와 해결 방법이 있습니다(-> ...). 한 줄씩 전체 보고서를 보려면 phone:health를, 세부 정보는 phone:diag를 입력하세요.
휴대폰이 열리지 않음
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
F1은 반응이 없고 /phone은 작동함 |
다른 스크립트가 F1을 사용 중 | Settings > Key Bindings > FiveM에서 다시 바인딩하거나 Config.Keys.open을 바꾸세요. 새 기본값은 그 키를 한 번도 바인딩하지 않은 플레이어에게만 적용됩니다. |
| 아무것도 열리지 않음 | 플레이어에게 휴대폰 아이템이 없거나, 배터리가 비었거나, 스크립트가 휴대폰을 비활성화했거나, 플레이어가 사망, 수갑 등 차단된 상태 | Config.Item.required, 배터리, Config.Block 상태를 확인하세요. |
| 인벤토리나 메뉴 위에서 열리지 않음 | 의도된 동작(Config.Open.blockWhenNuiFocused) |
다른 메뉴를 먼저 닫으세요. |
| "No phone item": 아무도 열 수 없음 | Config.Item.required = true인데 phone 아이템이 인벤토리에 없거나, 플레이어가 소지하지 않음 |
phone 아이템을 추가하고(4절) 플레이어에게 주거나, Config.Item.required = false로 설정하세요. |
| 새 휴대폰이 검은 화면에 "Hold to turn on"이 표시됨 | 휴대폰이 꺼진 상태로 도착했습니다: Config.Device.arrivesOn = false. 1.4.0부터 새 휴대폰은 기본적으로 켜진 상태로 도착하지만, 이전 버전에서 가져온 config.lua는 기존 값을 유지합니다 |
휴대폰을 꺼낸 상태에서 End 또는 O(Config.Keys.power)를 약 2초간 길게 누르거나, 마우스로 휴대폰 측면 버튼을 길게 누르세요. 환영 화면에서 위로 밀어 설정을 시작합니다. |
박스는 사라졌는데 phone 아이템이 나타나지 않음 |
Config.Item.required = false와 unique = false에서는 인벤토리 아이템 없이 캐릭터가 소유한 휴대폰을 사용합니다 |
휴대폰을 평소처럼 여세요. 서버에서 소지 아이템을 요구해야 한다면, 휴대폰을 판매하기 전에 Config.Item.required를 켜고 Pulse를 재시작하세요. |
| 화면이 비어 있거나 흰색 | 서버 측이 실행되지 않고 있습니다. F8에 the server never answered bootstrap - is the resource running server-side?가 표시됩니다 |
서버 콘솔에서 빨간 [phone] 줄이나 escrow 오류(아래)를 확인하세요. |
화면이 비어 있고 콘솔에 ui/index.html missing이 표시됨 |
ui/ 폴더가 삭제되었거나 업로드되지 않음 |
phone 폴더 전체를 다시 업로드하세요. ui/를 삭제하지 마세요. |
휴대폰은 손에 보이지만 화면이 나타나지 않고, 시작 점검에 [FAIL] Interface와 함께 ui/assets/의 파일이 표시됨 |
사본에서 그 파일이 빠졌습니다. 업로드가 불완전했거나 백신 프로그램이 삭제했습니다 | Keymaster에서 휴대폰을 다시 다운로드해 폴더 전체를 업로드하세요. 파일이 또 사라지면 서버 폴더를 백신 예외 목록에 추가하세요. |
| 커서가 화면 가운데에 고정됨 | GTA의 raw input이 꺼져 있음 | 플레이어가 GTA 설정에서 raw input을 켜야 합니다. |
framework, 돈, 직업
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
FRAMEWORK NOT SELECTED: more than one framework is started |
core가 두 개 실행 중(예: es_extended와 qb-core) | Config.Framework(config/config.lua)를 사용하는 것으로 설정하거나, setr phone_framework <name>을 server.cfg에 추가하세요(3절). 그 전까지 돈 관련 기능은 꺼져 있습니다. |
콘솔에 framework not ready: ...가 표시되고, 휴대폰이 "not ready" 화면에 머묾 |
휴대폰이 찾았거나 사용하도록 지정된 framework가 아직 실행 중이 아닙니다. 시작 중, 재시작 중, 중지됨, 또는 (커스텀의 경우) 브리지가 등록되지 않은 상태입니다. framework가 올라올 때까지 돈 관련 요청은 거부됩니다. | framework보다 휴대폰을 나중에 시작하세요. core를 재시작한 뒤에는 잠시 기다리거나 휴대폰도 재시작하세요. 커스텀 framework: 브리지를 등록하고, core 재시작 후 exports.phone:FrameworkRestarted()를 호출하세요. framework가 전혀 없는 서버: Config.Framework = 'standalone'을 config/config.lua에 설정하거나, setr phone_framework standalone을 server.cfg에 추가하세요(config보다 우선합니다). |
| 잘못된 framework 감지: 시작 줄에 사용하지 않는 framework가 표시됨 | ox_core가 ESX, QBCore, Qbox와 함께 시작되었거나(이 경우 휴대폰은 다른 쪽을 사용), core의 리소스 이름이 바뀌었음 | 사용하지 않는 core를 중지하거나, setr phone_framework <name>을 server.cfg에 넣어 강제로 지정하세요(3절). 이름이 바뀐 core: 원래 이름을 쓰거나 커스텀 framework로 연결하세요. |
Config.Framework = "esx" but es_extended is not started |
설정에 지정된 framework가 실행 중이 아님 | 설정을 고치거나 'auto'로 되돌리세요. |
framework 서버인데 시작 줄에 Framework: standalone이 표시됨 |
core의 리소스 이름이 다르거나, 휴대폰보다 나중에 시작됨 | framework보다 휴대폰을 나중에 시작하세요. 이름이 바뀐 core는 찾지 못합니다. 원래 이름을 쓰거나 커스텀 framework로 연결하세요(3절). |
| 은행 잔액이 0이거나 틀림 | 휴대폰이 standalone(자체 은행)으로 실행 중이거나, framework를 찾지 못함 | 시작 줄의 Framework:와 Banking: 부분을 확인하세요. |
| Services에 회사 계좌가 없음 | 회사 계좌 스크립트가 실행 중이 아니거나, 플레이어가 보스가 아님 | 7절의 스크립트 중 하나를 실행하세요. 보스 직급: boss(ESX), isboss(QBCore / Qbox), 또는 bossGrade. ox_core와 vRP에는 회사 관리가 없습니다. |
| 경찰이나 EMS가 911 신고를 받지 못함 | 직업 이름이 목록에 없거나, 비번 상태 | Config.Services와 Config.Emergency(config/apps.lua)에 직업 이름을 추가하세요. |
<script> found but not connected |
해당 스크립트 버전의 export가 다름 | 휴대폰은 다음 옵션을 사용합니다. 스크립트를 업데이트하거나 Config.Providers로 다른 것을 고르세요. |
ND Core 서버인데 시작 줄에 다른 framework나 standalone이 표시됨 |
ND_Core가 휴대폰보다 나중에 시작되거나, 다른 core도 함께 시작됨 |
ND_Core보다 휴대폰을 나중에 시작하거나, 사용하지 않는 core를 중지하거나, setr phone_framework nd를 server.cfg에 추가하세요. |
데이터베이스
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
휴대폰 로딩이 끝나지 않고, F8에 request "bootstrap" timed out이 표시됨 |
다른 휴대폰의 테이블이 가로막고 있는데 옆으로 옮기지 못함 | 시작 점검(phone:health)을 읽으세요. [FAIL] Database ... belong to another script 줄에 테이블 이름이 나옵니다. 2절의 "다른 휴대폰의 테이블"을 참고하세요. |
시작 점검: [WARN] Database N table(s) of another script were moved aside: phone_x -> old_phone_x |
다른 스크립트가 휴대폰 이름으로 남긴 테이블은 휴대폰이 자체 테이블을 만들 수 있도록 시작 시 이름이 바뀌었습니다. 아무것도 삭제되지 않았습니다 | 휴대폰 쪽에서는 할 일이 없습니다. 그 테이블을 쓰는 스크립트가 있다면 다른 테이블 이름을 지정하세요. 예전 이름으로는 데이터를 찾지 못합니다. phoneimport는 예전 휴대폰의 데이터를 그곳에서 읽습니다(데이터 가져오기, "Pulse Phone과 이름이 같은 테이블"). |
시작 점검: [WARN] Database <table> is missing columns the phone writes (...) |
테이블 이름은 휴대폰 것과 같지만 휴대폰이 쓰는 컬럼이 없고, 다른 스크립트의 것인지도 분명하지 않습니다. 의도적으로 그대로 둡니다. 잘못된 이름 변경은 경고보다 더 나쁘기 때문입니다 | 다른 스크립트가 만든 테이블이라면 데이터베이스 도구에서 old_<table>로 이름을 바꾸고 재시작하세요. 아니라면 그 줄을 지원팀에 보내 주세요(12절). 규칙은 데이터 가져오기에 있습니다. |
db: could not create table ... check that the database user may CREATE TABLE |
데이터베이스 사용자가 테이블을 만들 수 없음 | 사용자에게 CREATE와 ALTER 권한을 주거나, phone.sql을 직접 가져오세요. |
db: could not add column ... |
사용자가 테이블을 ALTER할 수 없음 | 위와 같습니다. |
is running but the database did not answer |
oxmysql은 실행 중이지만 데이터베이스에 연결할 수 없음 | mysql_connection_string을 고치세요. 휴대폰이 스스로 다시 시도합니다. |
no SQL resource running - storing data in the resource key/value store |
oxmysql이 시작되지 않았거나, 휴대폰보다 나중에 시작됨 | oxmysql을 휴대폰보다 먼저 시작하세요. |
oxmysql 로그에 auth_gssapi_client가 표시됨 |
데이터베이스 사용자가 Windows 로그인 방식으로 설정되어 있음 | 그 사용자를 비밀번호 방식으로 바꾸세요: ALTER USER 'fivem'@'localhost' IDENTIFIED VIA mysql_native_password USING PASSWORD('your-password'); |
phone_db_fallback is "kvp", so the key/value store takes over |
데이터베이스가 응답하지 않고 대체 저장소가 켜져 있음 | 데이터가 key/value 저장소에 기록되고 있으며 데이터베이스에는 들어가지 않습니다. 연결을 고치세요. |
db: no answer within 10 s, answered as failed: <query> |
해당 쿼리가 돌아오지 않음(느리거나 잠긴 데이터베이스) | 요청한 앱에는 실패로 전달되었습니다. SQL 리소스의 로그를 확인하세요. |
통화, 사진, 휴대폰 본체
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
통화는 연결되지만 소리가 없음, no voice resource |
보이스 스크립트가 실행 중이 아님 | pma-voice(또는 5절의 다른 것)를 휴대폰보다 먼저 시작하세요. |
소리 없음, 2 voice resources running |
보이스 스크립트 두 개가 같은 채널을 두고 충돌함 | 딱 하나만 실행하세요. |
| 영상 통화에 거는 사람의 화면만 보임 | 두 플레이어가 직접 연결되지 않음 | 5절에 링크된 고급 가이드를 따라 영상 릴레이를 설정하세요. |
| 병합한 통화에 소리는 있지만 화면이 없음 | 그룹 영상 통화가 꺼져 있거나, 설정된 영상 자리가 모두 찼습니다. 음성 참가자는 영상 자리 없이도 회의에 남을 수 있습니다. | config/config.lua에서 Config.Calls.groupVideo와 Config.Calls.groupVideoMax를 확인하세요. 그룹 영상 통화는 기본으로 켜져 있으며 영상 자리는 4개입니다. 실서버 연결을 위해 5절에 링크된 영상 릴레이 설정을 따르세요. |
| 한 플레이어만 카메라 동영상에 소리가 없음 | 그 플레이어가 예전에 게임의 마이크 요청을 거부했습니다. FiveM은 그 답을 %AppData%\CitizenFX\media_access.json에 기억하고 다시 묻지 않습니다. |
플레이어가 FiveM을 닫고 %AppData%\CitizenFX\media_access.json을 삭제한 뒤, 게임을 다시 시작해 요청이 오면 마이크를 허용하면 됩니다. |
사진이 저장되지 않음, screenshot-basic not started |
screenshot-basic이 실행 중이 아님 | 휴대폰보다 먼저 시작하세요. |
| 사진은 저장되지만 깨져서 표시됨 | phone_media_origin이 일반 http://임 |
https:// 주소를 쓰거나, 설정을 제거하거나, Fivemanage를 사용하세요(6절). |
refused a media link on "<host>" |
허용 목록에 없는 호스트의 링크 | Config.Media.allow에 호스트를 추가하거나(6절), 거부된 상태로 두세요. |
| Radio 앱에 라디오를 사용할 수 없다고 표시됨 | 보이스 스크립트가 실행 중이 아니거나, YACA를 사용 중 | 5절의 Radio를 참고하세요. |
| Radio: "You need a radio to tune in"(무전기가 있어야 채널을 맞출 수 있음) | Config.Radio.item이 설정되어 있는데 플레이어가 그 아이템을 소지하지 않음 |
아이템을 주거나, item = false를 config/apps.lua에 설정하세요. |
| 공중전화가 돈 문제로 통화를 거부함 | Config.Payphone.pay가 지정한 계좌에 돈이 부족하거나, 돈 함수가 없는 커스텀 브리지 |
standalone 서버에서는 아무도 현금이 없습니다. pay = 'either'를 유지하거나 'bank'를 사용하세요. |
| 텍스트 입력란에 입력할 수 없음 | 휴대폰이 열려 있는 동안 다른 스크립트가 SetNuiFocus(false, false)를 호출함 |
그 스크립트를 찾으세요(NUI devtools에서 확인할 수 있습니다). |
시작 점검: phone_media_origin not set |
서버에 공개 Cfx.re 주소가 없음(로컬 또는 LAN 테스트 서버) | 같은 PC나 네트워크의 플레이어는 문제없습니다. 공개 서버라면 서버 목록에 올라가 있는지 확인하거나, setr phone_media_origin "https://..."를 설정하세요(6절). |
| 휴대폰이 보이지 않거나, 기본 휴대폰이나 회색 상자가 손에 보임 | 휴대폰 모델이 스트리밍되지 않았습니다. F8에 the handset model "pulse_titanium" did not load.(또는 해당 휴대폰에 따라 pulse_ultra, pulse_clear, pulse_flip)가 표시됩니다 |
sv_enforceGameBuild를 2699 이상으로 설정하세요. stream/을 수정 없이 다시 업로드하고, 모든 data_file 줄을 fxmanifest.lua에 그대로 두세요. |
매장과 아이템
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
| 매장 점원이 없음 | 점원은 약 60 m 안에서만 나타납니다. 매장이 꺼져 있거나, 맵이 Legion Square를 덮고 있을 수 있습니다 | Config.Store.enabled를 확인하세요. 카운터 위치는 Config.Store.locations에서 옮기세요. |
store: the item "pulse_phone_box" ... is not registered in your inventory |
박스 아이템이 없음 | 추가하세요(4절). 그 전까지 휴대폰은 박스 없이 넘겨집니다. |
플레이어에게 공간이 있는데 매장이 "inventory full"이라고 하고, 콘솔에 store: the inventory would not take <item>가 표시됨 |
그 아이템이 인벤토리 아이템 목록에 없어서 인벤토리가 거부합니다 | 콘솔에 나온 아이템을 추가하거나(4절, config/items/), Config.Store.box = false로 설정해 박스 없이 휴대폰을 넘겨주세요. 구매 금액은 환불되었습니다. |
매장에 Reserve나 케이블이 없거나, store: the item "pulse_cable" ...가 표시됨 |
인벤토리에 충전 아이템이 없음 | pulse_magpack, pulse_magpack_max, pulse_cable과 그 이미지를 추가하세요(4절). |
매장에 Pulse Home Wi-Fi가 없거나, store: the item "pulse_router" ...가 표시됨 |
인벤토리에 라우터 아이템이 없거나, Config.Wifi.enabled가 false임 |
pulse_router와 그 이미지를 추가하세요(4절). |
F8에 Home Wi-Fi: the model "pulse_router" is not streamed가 표시됨 |
stream/이 전부 업로드되지 않음 |
stream/을 수정 없이 다시 업로드하세요. Wi-Fi는 계속 작동하며, 라우터만 보이지 않습니다. |
매장에 Pulse Burner가 없거나, store: the item "pulse_burner" ...가 표시됨 |
인벤토리에 버너폰 아이템이 없거나, Config.Burner.enabled가 false임 |
pulse_burner와 그 이미지를 추가하세요(4절). |
F8에 Pulse Burner: the model "pulse_burner" is not streamed가 표시됨 |
stream/이 전부 업로드되지 않음 |
stream/을 수정 없이 다시 업로드하세요. 버너폰은 계속 작동하며, 손에는 Pulse 휴대폰이 보입니다. |
| 경찰관에게 Intercept 앱이 없거나, 비번이라고 표시됨 | 직업이 Config.Taps.jobs에 없거나, 직급이 minGrade보다 낮거나, framework상 비번 상태 |
config/apps.lua와 해당 직업을 확인하세요. |
| "A router can only go inside a home you own or have a key to"(라우터는 소유하거나 열쇠를 가진 집 안에만 설치 가능) | placement가 'housing'임(또는 주택 스크립트가 있을 때 'auto') |
집 안에 설치하거나, placement를 config/apps.lua에서 바꾸세요. |
| 라우터가 설치되지 않음: 링이 계속 빨간색이거나 이유가 메시지로 표시됨 | 위치가 규칙에 맞지 않습니다. 플레이어로부터 약 3 m 이내의 평평한 표면이어야 하고(벽이나 경사면 불가), 다른 라우터와 최소 minSpacing(8 m) 떨어져 있어야 하며, 플레이어가 설치한 라우터가 maxPerPlayer(2)개보다 적어야 합니다. placement = 'interior'이면 실내여야 합니다("A router has to go indoors"). 'housing'이면 소유하거나 열쇠를 가진 집 안이어야 합니다. |
더 가까이 서서 바닥이나 테이블을 조준하세요. 먼저 예전 라우터를 회수하세요. 또는 placement를 config/apps.lua에서 바꾸세요(8절, Home Wi-Fi). |
| "Routers go in homes, and this server has no housing script the phone can read"(라우터는 집에 설치하는데, 이 서버에는 휴대폰이 읽을 수 있는 주택 스크립트가 없음) | placement = 'housing'인데 7절의 주택 스크립트가 하나도 실행 중이지 않음 |
placement를 'auto'나 'interior'로 설정하거나, 지원하는 주택 스크립트를 실행하세요. |
| 아이템이 이미지 없이 표시됨 | 이미지가 복사되지 않음 | config/items/images/를 인벤토리의 이미지 폴더로 복사하세요. 시작 점검의 Item pictures 줄에 빠진 이미지와 폴더가 나옵니다. |
시작 점검: [FAIL] Items ... missing in ox_inventory |
ox_inventory는 자체 아이템 파일만 읽음 | 박스 아래에 출력된 항목을 ox_inventory/data/items.lua에 붙여 넣은 뒤, ox_inventory와 휴대폰을 재시작하세요. |
시작 점검: Phone item ... opens <another script> |
ox_inventory의 phone 항목이 다른 스크립트의 export를 가리킴 |
그 항목을 박스 아래에 출력된 항목으로 교체한 뒤(Settings > Server > Health Check에도 Copy 버튼과 함께 있습니다) ox_inventory를 재시작하세요. 기본 항목은 그대로 두면 됩니다. |
시작 점검: [INFO] Items TMC keeps no item list the phone can read |
TMC에는 아이템 목록을 조회할 방법이 없어, 휴대폰이 어떤 아이템이 있는지 알 수 없습니다. 오류가 아니라 정보입니다 | 박스 아래에 출력된 모든 아이템이 TMC 아이템 목록에 있는지 확인하세요. TMC가 거부한 아이템은 매장이 알려 줍니다. |
시작 점검: [WARN] Items ... restart the server once so ESX loads them |
아이템이 ESX의 items 테이블에 추가되었지만, 이 ESX는 실행 중에 다시 불러올 수 없음 |
서버를 한 번 재시작하세요. |
시작 점검: [WARN] Items ... could not add the items itself |
휴대폰이 ESX의 items 테이블이나 QBCore 아이템에 쓸 수 없었음(이유는 해당 줄에 표시) |
직접 처리하세요: config/items/esx.sql을 실행하거나(ESX), config/items/qb-core.lua를 qb-core/shared/items.lua에 붙여 넣은(QBCore) 뒤 재시작하세요. |
Unique phones are waiting for their inventory. |
고유 휴대폰이 켜져 있지만 필요한 인벤토리가 하나도 실행 중이지 않음 | 선택한 지원 인벤토리를 휴대폰보다 먼저 시작하고 Config.Providers.inventory를 확인하세요. Pulse는 고유 휴대폰 설정을 유지하다가 그 인벤토리를 사용할 수 있게 되면 다시 작동합니다. 이 경고를 피하려고 소유 방식을 바꾸지 마세요. |
| 청구서를 결제할 수 없음: 받을 사람이 없음 | 청구서의 회사가 회사 계좌 스크립트에 계좌가 없거나, 보낸 사람을 찾을 수 없음 | Config.Bills.payToCity = true로 설정하면 이런 청구서를 시 벌금으로 처리합니다. |
기타 스크립트, 언어, 서비스
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
스크립트가 다른 휴대폰에 대해 No such export 오류를 냄 |
다른 휴대폰의 export를 호출하고 있습니다. 예: exports['<old phone>']:SendMail. Pulse Phone은 다른 휴대폰의 export를 복제하지 않습니다. |
그 호출을 Pulse Phone 자체 export로 바꾸거나(Export), 스크립트 제작자에게 Pulse Phone 옵션을 요청하세요. 이벤트를 쓰는 스크립트는 아무것도 바꿀 필요가 없습니다. |
No such export 오류, 대상은 phone |
휴대폰 폴더 이름이 바뀜 | 이름을 phone으로 되돌리세요(아래 참고). |
| 언어가 잘못됨 | Config.Locale이 다른 언어로 설정되어 있거나, 플레이어가 다른 언어를 선택함 |
Config.Locale을 설정하세요. 플레이어는 Settings > General > Language에서 각자 언어를 고를 수 있습니다. |
텍스트가 key.answer 같은 키로 표시됨 |
예전 config/locales/ 폴더를 새 폴더 위에 덮어씀 |
새 locale 파일을 사용하세요. 직접 바꾼 문구는 손으로 다시 적용하세요. |
| App Hub 다운로드에 No Connection이 표시됨 | 이 위치에서 휴대폰에 셀룰러 신호가 없고(음영 지역, 또는 Carrier가 켜진 상태에서 신호 없음) Wi-Fi에도 연결되어 있지 않습니다. 다운로드에는 Wi-Fi나 모바일 데이터가 필요합니다. | 신호가 있는 곳으로 이동하거나, Wi-Fi(Pulse Home Wi-Fi 라우터)에 연결하세요. |
| App Hub 다운로드에 No Cellular Plan, Data Limit Reached 또는 Cellular Data Is Off가 표시됨 | Carrier가 켜져 있는데 휴대폰에 요금제가 없거나 데이터를 다 썼거나, 플레이어가 셀룰러 데이터를 껐음 | Carrier 앱(Carrier가 켜져 있는 동안 모든 휴대폰에 설치됨)에서 요금제를 구매하거나 업그레이드하거나, 셀룰러 데이터를 다시 켜거나, Wi-Fi에 연결하세요. |
| 모두에게 "No Service"가 표시됨 | Carrier가 켜져 있으므로(Config.Carrier.enabled = true 또는 setr phone_carrier 1) 휴대폰마다 요금제가 필요함 |
플레이어가 Carrier 앱에서 요금제를 구매합니다. 또는 끄세요: enabled = false로 설정하고 setr phone_carrier 줄을 제거하세요. |
| 일부 장소에서만 신호가 없음 | 음영 지역이 켜져 있음(Config.Coverage.enabled) |
게임 안에서 phone:zone show로 구역을 확인하세요. 긴급 전화는 항상 작동합니다. |
Settings > Server, 긴급 알림, 업데이트
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
| Settings에 Server 항목이 없음 | 플레이어에게 ace phone.admin이 없거나, Config.OwnerTools.enabled = false임 |
add_ace group.admin phone.admin allow를 추가하고 플레이어를 group.admin에 넣은 뒤, Settings를 다시 여세요. |
phone:setup이 아무 반응이 없음 |
서버 콘솔에 입력했거나, 플레이어가 관리자가 아님 | 관리자로 게임 안(F8)에서 입력하세요. 콘솔에서는 phone:health가 같은 점검을 출력합니다. |
| 게임 안에서 바꾼 설정이 적용되지 않음 | Restart needed로 표시되어 있음 | 휴대폰(ensure phone)이나 서버를 재시작하세요. 시작 점검의 Restart 줄에 대기 중인 항목이 나옵니다. |
config/ 파일을 수정해도 바뀌지 않음 |
그 설정을 게임 안에서 바꿨고, 게임 내 값이 우선함 | Settings > Server에서 해당 설정의 Reset to Default를 누르거나, 콘솔에서 phone:reset <key>를 입력하세요. |
| Settings > Server의 모든 항목이 읽기 전용으로 표시됨 | Config.OwnerTools.enabled = false(config/apps.lua) |
true로 설정하고 휴대폰을 재시작하세요. |
설정 아래에 Not saved: ...가 표시됨 |
그 설정이 받을 수 없는 값입니다(범위 초과, 잘못된 형식, 공백이 들어간 직업 이름) | 메시지가 설명하는 값을 사용하세요. |
| 아무도 긴급 알림을 받지 못함 | Config.Broadcast.enabled = false이거나, 플레이어가 그린 원 밖에 있음 |
config/apps.lua를 확인하세요. 테스트할 때는 도시 전체에 보내 보세요. |
| 플레이어가 심각 또는 주의 알림을 무음으로 받거나 아예 받지 못함 | 플레이어마다 그 단계를 끌 수 있고, 심각 알림은 무음 모드를 따름 | 플레이어의 선택입니다. 극단적 알림은 항상 소리가 납니다. |
| 경찰관에게 New Alert 버튼이 없음 | 직업이 Config.Broadcast.senders에 없거나, 직급이 지정된 것보다 낮거나, 비번 상태 |
'police:3'(직업:최저 직급)을 senders에 추가하거나, requireDuty = false로 설정하세요. |
Wait ... before sending another alert |
보낸 사람의 대기 시간(cooldownSeconds) 또는 시간당 제한(perHour) |
기다리거나, config/apps.lua에서 제한을 올리세요. |
시작 점검에 Update 줄이 없음 |
휴대폰이 업데이트 파일에 접근하지 못했거나(인터넷 없음, 방화벽), Config.UpdateCheck.enabled = false임 |
고칠 것은 없습니다. 휴대폰은 업데이트 확인 없이 계속 작동합니다. Config.Debug = true이면 콘솔에 이유가 표시됩니다. |
새 기능
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
| Shade 앱이 없음 | Shade는 기본으로 꺼져 있으며, pulse_vpn 아이템, 목록에 있는 직업, 또는 access.everyone이 필요함 |
Config.DarkMarket.enabled = true를 config/apps.lua에 설정하고 access 블록을 확인하세요. |
| 매장에 SIM 카드가 없거나, Settings에 잔액 항목이 없음 | SIM 카드는 기본으로 꺼져 있고(Config.Sim.enabled), 선불 잔액은 별도 스위치입니다(prepaid) |
config/apps.lua에서 켜고, pulse_sim과 pulse_topup을 인벤토리에 추가하세요(4절). |
| Pulse Beacon을 차에 붙일 수 없음 | 플레이어가 차량에서 너무 멀거나(attachRange, 4 m), 이미 maxPerPlayer(8)개를 가지고 있음 |
차 옆에 서세요. config/apps.lua를 확인하세요. |
| "An unknown Pulse Beacon is moving with you"(모르는 Pulse Beacon이 나와 함께 이동 중) | 안전 경고입니다: 다른 사람의 비콘이 alertAfter초 동안 플레이어와 함께 이동했습니다 |
정상 동작입니다. 서버 규칙이 은밀한 추적을 허용할 때만 alert.enabled = false로 설정하세요. |
| Pulse Buds, Ring Light, Card Wallet이 인벤토리에서 작동하지 않음 | 아이템이 없거나 꺼져 있음 | pulse_buds, pulse_ringlight, pulse_wallet을 추가하고(4절), config/apps.lua를 확인하세요. |
| Slipstream에서 플레이어가 레이스를 열거나 참가할 수 없음 | 출발선에서 joinRadius(60 m)보다 멀거나, 레이스가 꽉 찼거나(maxRacers), 참가비가 minFee~maxFee 범위를 벗어남 |
출발선으로 운전해 가세요. config/apps.lua를 확인하세요. |
| Hail: 기사에게 탑승 요청이 오지 않음 | 차량 등급이나 모델이 허용되지 않았거나, 직업이 driver.jobs에 없거나, driver.licenceItem이 없거나, serviceArea 밖에 있음 |
driver 블록을 config/apps.lua에서 확인하세요. |
| Eats 주문이 플레이어에게 배달되지 않음 | couriers.jobs에 있는 직업으로 근무 중인 배달원이 없음. cityCourier.enabled이면 대신 도시가 배달함 |
배달 직업을 config/apps.lua에 추가하세요(또는 Settings > Server > Jobs에서). |
| Realty에 집이 하나도 표시되지 않음 | 주택 스크립트가 매물 집을 나열할 수 없고, Config.Homes.listings도 비어 있음 |
config/apps.lua에 매물을 추가하거나, 7절의 주택 스크립트를 실행하세요. |
| Realty에서 중개인에게 방문 요청이 오지 않음 | realtor.jobs에 있는 직업으로 근무 중인 플레이어가 없음 |
config/apps.lua에 직업 이름을 추가하세요(또는 Settings > Server > Jobs에서). |
| 실시간 게임: 초대가 오지 않음 | 게임이 config/apps.lua에서 꺼져 있거나, 초대가 inviteSeconds보다 오래 대기함 |
config/apps.lua를 확인하고 초대를 다시 보내세요. |
| 회사 회선이 아무에게도 울리지 않거나, 거는 사람이 대기 상태로 기다림 | 그 회선에 디스패처로 로그인한 사람이 없거나, 근무 중인 구성원이 없음 | config/apps.lua를 참고하세요. 디스패처는 Services 앱에서 로그인합니다. |
| Groups: "the group is full" | maxMembers(6명, 리더 포함) |
config/apps.lua에서 값을 올리세요. |
| 속보 알림이 아무에게도 가지 않음 | breaking.enabled가 꺼져 있거나, 대기 시간(cooldownSeconds, perAuthorSeconds)이 지나지 않음 |
config/apps.lua 또는 Settings > Server > News를 확인하세요. |
설치 및 버전 문제
| 보이는 증상 | 원인 | 해결 |
|---|---|---|
시작 시 You lack the required entitlement 또는 escrow 오류 |
서버 키가 Pulse Phone을 구매한 계정과 다른 Cfx.re 계정에 속해 있음 | 에셋은 같은 Cfx.re 계정이 소유해야 합니다. 즉 서버 키(sv_licenseKey)가 속한 계정입니다. 그 계정의 Keymaster(Granted Assets)에서 휴대폰을 다운로드하세요. 다른 사람에게 받은 사본은 절대 실행되지 않습니다. |
시작 시 Failed to verify protected resource phone이 표시되고, 콘솔이나 F8에 잠긴 폴더의 파일에 대해 syntax error near '<\1>'가 표시됨 |
업로드 과정에서 잠긴 파일이 변경되었습니다. FTP 클라이언트가 텍스트(Auto/ASCII) 모드로 전송했거나 업로드가 중간에 끊겼습니다. 라이선스는 문제없습니다(계정이 잘못된 경우에는 대신 You lack the required entitlement가 표시됩니다) |
서버의 phone 폴더를 삭제하고 Keymaster에서 다시 다운로드한 뒤 Binary 모드로 업로드하세요(FileZilla: Transfer > Transfer Type > Binary). 또는 zip을 업로드해 서버에서 압축을 해제하세요. 폴더를 INSTALL.md의 파일 표와 비교하세요. |
시작 점검: [FAIL] Package ... file(s) missing or the wrong size, ui/, data/ 또는 stream/의 파일이 표시됨 |
그 파일들이 빌드된 그대로 도착하지 않았습니다. 부분 업로드, 텍스트 모드 FTP 전송, 또는 백신 프로그램이 파일을 삭제한 경우입니다 | 해결 방법은 같습니다. 다시 다운로드한 뒤 Binary 모드로 업로드하거나 서버에서 zip을 압축 해제하세요. 파일이 또 사라지면 백신에서 서버 폴더를 예외로 지정하세요. stream 파일은 존재 여부만 확인하며(escrow가 크기를 바꾸므로), 잠긴 코드는 서버가 직접 확인합니다. |
시작 점검: [FAIL] Package the file list is from build ... files from two downloads are mixed |
ui/와 폴더의 나머지 부분이 서로 다른 다운로드에서 왔음 |
폴더를 삭제하고 다운로드 하나를 전부 압축 해제하세요. stream/과 ui/는 항상 같은 릴리스에서 가져오세요. |
시작 점검: [WARN] Package data/package.json is missing or unreadable |
모든 릴리스에 포함되는 파일 목록이 도착하지 않음 | data/를 포함해 폴더 전체를 다시 업로드하세요(Binary 모드). |
| 폴더 이름을 바꾼 뒤 다른 스크립트나 아이템이 작동하지 않음 | 다른 스크립트와 아이템 항목은 휴대폰을 phone이라는 이름으로 찾습니다(exports.phone, phone.useItem) |
폴더 이름을 phone으로 유지하세요. |
업데이트 후 이상한 동작, your config has no Config.Charging section |
예전 config.lua를 덮어씀 |
없는 섹션은 기본값으로 작동합니다. 빠진 섹션을 새 config/config.lua에서 복사하거나, 새 파일에서 다시 시작하세요. |
| 업데이트 후 예전 어댑터 때문에 스크립트가 연결되지 않음 | 예전 bridge/ 파일(이 버전 또는 이전 버전의 것)을 다시 복사함 |
새 파일을 사용하세요(10절). |
| 휴대폰이 두 개 시작됨 | 예전 phone 폴더가 아직 resources 아래 어딘가에 있음 |
resources 밖으로 옮기세요. |