FiveM Blip คืออะไร ใช้ทำอะไร และต่างจาก Marker กับ GPS Route อย่างไร

FiveM Blip คือสัญลักษณ์หรือไอคอนที่แสดงตำแหน่งบนแผนที่และ Minimap ของ GTA V/FiveM เช่น โรงพยาบาล สถานีตำรวจ อู่รถ ธนาคาร ร้านค้า จุดทำงาน หรือรถที่กำลังเคลื่อนที่ โดย FiveM มี Native หลายแบบสำหรับสร้าง Blip จากพิกัด, Entity, Radius และพื้นที่สี่เหลี่ยม.

ตัวอย่างแนวคิดง่ายที่สุดคือ

ตำแหน่งโรงพยาบาล
↓
ADD_BLIP_FOR_COORD
↓
SET_BLIP_SPRITE
↓
SET_BLIP_COLOUR
↓
SET_BLIP_SCALE
↓
Blip ปรากฏบน Map

FiveM ยังมีรายการ Blip Sprites อย่างเป็นทางการให้เลือกจำนวนมากตาม Game Build ที่เอกสารรองรับ.

บทความนี้จาก comsiam จะอธิบายตั้งแต่ Blip คืออะไร ต่างจาก Marker/Minimap/GPS อย่างไร ไปจนถึงการเพิ่ม Blip, ตั้ง Sprite, สี, Scale, Short Range, Route, Radius และวิธีจัดการไม่ให้ Blip ซ้ำหรือหาย

① FiveM Blip คืออะไร

Blip คือ Marker ประเภทหนึ่งที่แสดงอยู่ในระบบ Map ของ GTA V/FiveM

ตัวอย่าง

Hospital
Police Station
Garage
Bank
Shop
Job Location
Player
Vehicle
Mission Area

สำหรับตำแหน่งคงที่ FiveM มี ADD_BLIP_FOR_COORD ซึ่งสร้าง Blip ที่ Coordinates ที่กำหนด และคืน Blip Handle สำหรับนำไปตั้งค่าต่อด้วยตระกูล SET_BLIP_*.

② Blip ต่างจาก Minimap อย่างไร

จำง่าย ๆ

Minimap
= แผนที่

Blip
= ไอคอนบนแผนที่

ดังนั้น

Minimap
├── Police Blip
├── Hospital Blip
├── Garage Blip
└── Mission Blip

Blip เป็นข้อมูลที่ถูกแสดงบนระบบ Map/Minimap ไม่ใช่ตัว Minimap เอง.

③ Blip ต่างจาก Marker อย่างไร

Blip เน้นการแสดงตำแหน่งบน Map/Minimap

ส่วน Marker เป็น Visual Marker ที่ใช้แสดงในพื้นที่โลกเกม เช่นวงกลม ลูกศร หรือจุด Interaction ที่ผู้เล่นมองเห็นใน 3D World

Cfx.re แยก Game Reference สำหรับ Blips และ Markers ออกจากกันโดยตรง.

ตัวอย่าง

ไอคอน Garage บน Map
→ Blip

วง Marker หน้าจุดเก็บรถ
→ Marker

④ Blip ต่างจาก GPS Route อย่างไร

Blip คือจุด

ส่วน GPS Route คือเส้นทางไปยังจุดนั้น

Blip
●

GPS Route
──────────────→ ●

FiveM มี SET_BLIP_ROUTE สำหรับเปิดหรือปิด Route ของ Blip ที่กำหนด.

⑤ Blip จำเป็นต้องมี GPS Route ไหม

ไม่

สามารถมี Blip แบบ

Hospital
Garage
Bank

ที่แสดงเป็น Icon อย่างเดียว

แล้วเปิด Route เฉพาะเมื่อผู้เล่นเลือกจุดหมาย

เพราะ Route ถูกควบคุมแยกด้วย SET_BLIP_ROUTE.

⑥ วิธีสร้าง Blip พื้นฐาน

สำหรับตำแหน่งคงที่ใช้

local blip = AddBlipForCoord(
300.0,
-500.0,
30.0
)

ADD_BLIP_FOR_COORD สร้าง Blip สำหรับ Coordinates ที่ระบุ.

⑦ AddBlipForCoord ใช้กับอะไร

เหมาะกับสถานที่ที่ไม่เคลื่อนที่ เช่น

Hospital
Police Station
Bank
Garage
Shop
Job Center
Dealer
Airport

เพราะ Blip ถูกสร้างจากตำแหน่ง X/Y/Z โดยตรง.

⑧ Blip Handle คืออะไร

เมื่อสร้าง

local blip = AddBlipForCoord(...)

ค่าที่คืนมาคือ Blip Handle

จากนั้นใช้ Handle นี้กับ Functions เช่น

SET_BLIP_SPRITE
SET_BLIP_COLOUR
SET_BLIP_SCALE
SET_BLIP_DISPLAY
SET_BLIP_ROUTE
REMOVE_BLIP

ตระกูล Native เหล่านี้ใช้ Blip Handle เพื่อแก้ Properties ของ Blip ที่สร้างแล้ว.

⑨ Sprite คืออะไร

Sprite คือรูป Icon ของ Blip

เช่น Blip อาจมีหน้าตาเป็น

Police
Hospital
Garage
Vehicle
Store
Mission

FiveM มี SET_BLIP_SPRITE สำหรับกำหนด Sprite ของ Blip และ Cfx.re มีหน้า Game Reference แสดง Sprite IDs.

⑩ ตัวอย่างตั้ง Blip Sprite

SetBlipSprite(blip, spriteId)

ค่า spriteId ต้องเป็น Sprite ที่ GTA/FiveM รองรับ โดยสามารถตรวจจากรายการ Blips อย่างเป็นทางการของ Cfx.re.

⑪ FiveM มี Blip Sprite กี่แบบ

จำนวน Sprite และรายการที่รองรับขึ้นกับ Game Content/Build ที่ Documentation อ้างอิง

หน้า Blips ของ Cfx.re ปัจจุบันระบุรายการตาม build 3258 จึงควรตรวจ Reference ปัจจุบันแทน Copy หมายเลขจาก Tutorial เก่าที่ยังไม่รู้ Build.

⑫ Sprite ผิดทำให้ Blip หายไหม

หาก Blip Handle มีอยู่แต่ Icon ไม่ตรงสิ่งที่ต้องการ ให้ตรวจ Sprite ID ก่อน

ใช้

GET_BLIP_SPRITE

เพื่อตรวจ Sprite ID ของ Blip ที่มีอยู่ได้.

⑬ สี Blip เปลี่ยนได้ไหม

ได้

FiveM มี

SET_BLIP_COLOUR

สำหรับกำหนดสีของ Blip.

ตัวอย่าง

SetBlipColour(blip, 3)

ควรเลือกสีตามความหมายของ Server เพื่อให้ผู้เล่นอ่าน Map ได้ง่าย

⑭ FiveM มีรายการสี Blip ไหม

มี

หน้า Blips ของ Cfx.re มี Reference ของ Blip Colors ควบคู่กับ Sprite List.

จึงควรอ้าง Reference ปัจจุบันเมื่อกำหนด Color IDs

⑮ Blip Scale คืออะไร

Scale คือขนาดของ Icon

FiveM มี

SET_BLIP_SCALE

สำหรับกำหนด Scale ของ Blip.

ตัวอย่าง

SetBlipScale(blip, 0.8)

⑯ Blip ใหญ่เกินแก้อย่างไร

ถ้า Icon ใหญ่เกินไป ให้ตรวจ

SET_BLIP_SCALE

ก่อน

ไม่จำเป็นต้องเปลี่ยน Sprite เพียงเพราะขนาดไม่เหมาะ.

⑰ Blip เล็กจนมองไม่เห็น

กรณีเดียวกัน

ตรวจ

Scale
Alpha
Display

เพราะ Icon อาจมีอยู่แต่ถูกตั้ง Scale หรือ Alpha จนมองเห็นยาก.

⑱ Alpha คืออะไร

Alpha กำหนดความโปร่งใสของ Blip

FiveM มี

SET_BLIP_ALPHA

สำหรับตั้ง Alpha Channel ของสี Blip.

ตัวอย่าง

SetBlipAlpha(blip, 128)

ทำให้ Blip โปร่งกว่าค่าเต็ม

⑲ Blip มีอยู่แต่เหมือนหาย

ตรวจ

Alpha
Display
Short Range
Scale

ก่อนสร้าง Blip ใหม่

ปัญหาอาจเป็น Visibility Property ไม่ใช่ Blip Creation.

⑳ SET_BLIP_DISPLAY คืออะไร

FiveM มี

SET_BLIP_DISPLAY

เพื่อกำหนดบริบทที่ Blip จะแสดง เช่น Main Map, Minimap หรือทั้งสองตาม Display ID ที่เลือก.

ดังนั้น Blip สามารถมีอยู่ แต่ไม่แสดงใน Map Context ที่คุณกำลังดูได้

㉑ Blip เห็นบน Map แต่ไม่เห็น Minimap

ตรวจ

SET_BLIP_DISPLAY

ก่อน

เอกสารของ Cfx.re ระบุ Display Modes แยก Main Map, Minimap และทั้งสองแบบ.

㉒ Blip เห็นบน Minimap แต่หาใน Main Map ไม่เจอ

เช่นเดียวกัน

Display Mode อาจถูกตั้งให้แสดงเฉพาะ Minimap

ให้ตรวจค่า displayId.

㉓ Short Range คืออะไร

FiveM มี

SET_BLIP_AS_SHORT_RANGE

เพื่อกำหนดว่า Blip ควรถูกแสดงเฉพาะเมื่ออยู่ใกล้หรือในบริบท Minimap ตาม Behavior ของ Native.

เหมาะกับ Blips ที่ไม่จำเป็นต้องเต็ม Main Map

㉔ Blip ไหนควรเป็น Short Range

ตัวอย่าง

ร้านค้าเล็ก
ATM
ตู้เสื้อผ้า
จุด Interaction ย่อย

อาจเหมาะกว่า

ส่วน

Hospital
Police Station
Airport

อาจต้องการให้หาได้จาก Main Map ตลอด

นี่เป็นเรื่อง UX ของ Server

㉕ ตัวอย่างตั้ง Short Range

SetBlipAsShortRange(blip, true)

Native นี้กำหนด Short-range Behavior ของ Blip.

㉖ Static Blip กับ Entity Blip ต่างกันอย่างไร

Static Blip ผูกกับ Coordinates

ADD_BLIP_FOR_COORD

Entity Blip ผูกกับ Entity

ADD_BLIP_FOR_ENTITY

FiveM ระบุว่า Entity Blip สามารถใช้กับ Objects, Vehicles และ Peds ได้.

㉗ AddBlipForEntity ใช้กับอะไร

เหมาะกับสิ่งที่เคลื่อนที่

เช่น

Police Vehicle
Mission Vehicle
NPC
Ped
Object

เพราะ Blip ผูกกับ Entity โดยตรง.

㉘ ตัวอย่าง Entity Blip

local blip = AddBlipForEntity(vehicle)

ADD_BLIP_FOR_ENTITY รองรับ Vehicle Entity รวมถึง Peds และ Objects.

㉙ รถเคลื่อนที่ควรใช้ AddBlipForCoord หรือ Entity

หากต้องการให้ Blip ตาม Vehicle แบบผูกกับ Entity โดยตรง

ADD_BLIP_FOR_ENTITY

ตรงกับ Use Case มากกว่า

ไม่ต้องสร้าง Blip ใหม่จาก Coordinates ทุก Frame.

㉚ อย่า Create Vehicle Blip ใหม่ทุก Frame

ไม่ควรทำ

while true do
Wait(0)

AddBlipForCoord(
vehicleX,
vehicleY,
vehicleZ
)
end

เพราะ ADD_BLIP_FOR_COORD สร้าง Blip ใหม่ ไม่ใช่ Update Blip เดิม.

ถ้าต้องการ Blip ติด Vehicle ใช้ Entity Blip จะตรงกว่า.

㉛ SET_BLIP_COORDS ใช้ทำอะไร

FiveM มี

SET_BLIP_COORDS

สำหรับย้าย Coordinates ของ Blip ที่สร้างแล้ว.

ดังนั้นหาก Use Case ต้องใช้ Coordinate Blip ที่เคลื่อนที่ สามารถ Update Handle เดิมแทนสร้าง Blip ใหม่ทุกครั้ง

㉜ Entity Blip หายเมื่อ Entity ถูกลบ

ถ้า Entity ที่ Blip ผูกอยู่ไม่มีอยู่ต่อ ระบบที่ใช้ Blip นั้นต้องจัดการ Lifecycle ให้เหมาะสม

จึงควรแยก

Entity Lifecycle
+
Blip Lifecycle

ออกจากกัน

โดยเฉพาะ Mission Vehicles หรือ NPC ชั่วคราว

㉝ GetBlipFromEntity คืออะไร

FiveM มี

GET_BLIP_FROM_ENTITY

สำหรับคืน Blip Handle ที่เกี่ยวข้องกับ Entity ที่กำหนด.

ช่วยตรวจว่ามี Blip ผูกกับ Entity นั้นอยู่หรือไม่

㉞ Radius Blip คืออะไร

FiveM มี

ADD_BLIP_FOR_RADIUS

เพื่อสร้าง Blip แบบ Radius รอบ Coordinates.

เหมาะกับ

Search Area
Danger Zone
Mission Area
Gang Area

㉟ Radius Blip มี Icon ตรงกลางอัตโนมัติไหม

ไม่

Cfx.re ระบุชัดว่า ADD_BLIP_FOR_RADIUS ไม่สร้าง Blip Sprite ให้เอง หากต้องการ Icon ต้องสร้าง Coordinate Blip เพิ่ม.

ดังนั้น Architecture อาจเป็น

Radius
+
Center Icon

สอง Blip แยกกัน

㊱ ตัวอย่าง Radius + Icon

local radius = AddBlipForRadius(
x,
y,
z,
100.0
)

local icon = AddBlipForCoord(
x,
y,
z
)

ตัวแรกสร้างพื้นที่ Radius ส่วนตัวที่สองสร้าง Icon ณจุดกลาง.

㊲ Area Blip คืออะไร

FiveM มี ADD_BLIP_FOR_AREA สำหรับสร้าง Blip พื้นที่สี่เหลี่ยมตาม Coordinates, Width และ Height.

เหมาะกับพื้นที่ที่ไม่ใช่วงกลม เช่น

Restricted Area
Event Zone
Work Area
Custom District

㊳ Radius กับ Area Blip ต่างกันอย่างไร

Radius
→ วงกลม

Area
→ พื้นที่สี่เหลี่ยม

FiveM มี Native แยกสำหรับทั้งสองแบบ.

㊴ Blip Rotation คืออะไร

FiveM มี

SET_BLIP_ROTATION

สำหรับกำหนด Rotation ของ Blip.

มีประโยชน์กับ Icon ที่ต้องแสดง Heading เช่น Vehicle หรือ Direction Indicator บางรูปแบบ

㊵ Rotation ใช้กับ Area Blip ได้ไหม

เอกสาร ADD_BLIP_FOR_AREA แนะนำให้ใช้ SET_BLIP_ROTATION และ SET_BLIP_COLOUR ร่วมกับ Area Blip ตาม Presentation ที่ต้องการ.

จึงสามารถใช้กับพื้นที่ที่ต้องหมุนตามแนว Map ได้

㊶ Blip Priority คืออะไร

FiveM มี

SET_BLIP_PRIORITY

เป็น Property อีกประเภทหนึ่งของ Blip.

เหมาะกับระบบที่มี Blips จำนวนมากและต้องการควบคุมความสำคัญในการแสดงผล

㊷ Blip Category คืออะไร

FiveM มี

SET_BLIP_CATEGORY

สำหรับเปลี่ยน Category Index ของ Blip และ Cfx.re ระบุว่า Categories บางช่วงจะแสดงในหมวดเฉพาะใน Map Legend.

มีประโยชน์กับ Server ที่มี Blips จำนวนมาก

㊸ Server ใหญ่ควรแบ่ง Blip Categories ไหม

ควรพิจารณา เช่น

Emergency
Businesses
Garages
Jobs
Government
Transport

เพื่อให้ Map อ่านง่าย

แต่ต้องใช้ Category IDs ให้สอดคล้องกับ Behavior ที่ FiveM/GTA รองรับ.

㊹ Friendly Blip คืออะไร

FiveM มี

SET_BLIP_AS_FRIENDLY

เพื่อ Toggle Friendly/Enemy State ของ Blip.

เหมาะกับระบบ Gameplay ที่ต้องแยก Entity ฝ่ายเดียวกันกับศัตรู

㊺ Heading Indicator บน Blip ทำได้ไหม

ได้

FiveM มี Native สำหรับเพิ่ม GTA Online-style Player Heading Indicator ลงบน Blip.

เหมาะกับ Blip ที่ต้องการแสดง Direction มากกว่า Icon คงที่อย่างเดียว

㊻ Blip กระพริบได้ไหม

FiveM มี Natives สำหรับ Flash Blip เช่นกำหนด Flash Interval เป็น Milliseconds.

เหมาะกับ

Emergency
Mission Alert
Temporary Target

แต่ไม่ควรทำทุก Blip กระพริบ เพราะ Map จะอ่านยาก

㊼ GPS Route เปิดอย่างไร

ใช้

SetBlipRoute(blip, true)

SET_BLIP_ROUTE ใช้ Enable/Disable Route ของ Blip Object.

㊽ ปิด GPS Route

ใช้

SetBlipRoute(blip, false)

เมื่อผู้เล่น

ถึงจุดหมาย
ยกเลิกงาน
เปลี่ยน Mission

ตาม Gameplay Logic.

㊾ ล้าง Route ทั้งหมดได้ไหม

FiveM มี

CLEAR_ALL_BLIP_ROUTES

ซึ่งล้าง Active Routes ที่ถูกตั้งด้วย SET_BLIP_ROUTE.

เหมาะกับการ Reset Navigation State

㊿ Route Color เปลี่ยนได้ไหม

FiveM มี Blip Native สำหรับ Route Colour ซึ่งอยู่ในชุด SET_BLIP_* APIs เช่นเดียวกับ Route.

จึงสามารถออกแบบเส้นทางให้สัมพันธ์กับ Mission/Job ได้ตาม UI ที่ต้องการ

51. Blip ต้องใช้ ESX ไหม

ไม่

การสร้าง Blip ใช้ GTA/FiveM Natives โดยตรง เช่น

ADD_BLIP_FOR_COORD
ADD_BLIP_FOR_ENTITY
SET_BLIP_SPRITE

จึงไม่ได้ขึ้นกับ ESX.

ESX จะเกี่ยวข้องก็ต่อเมื่อ Blip Visibility ขึ้นกับ Job หรือ Player Data

52. Blip ต้องใช้ QBCore ไหม

ไม่จำเป็นเช่นเดียวกัน

ตัว Blip System เป็น Native ของ GTA/FiveM

QBCore อาจถูกใช้สำหรับ Logic เช่น

Police-only Blip
Mechanic-only Blip
Gang Blip
Job Route

แต่ไม่ใช่ Requirement ของ Blip

53. Police-only Blip ทำอย่างไร

Architecture คือ

Player Job
↓
Police?
├── Yes → Create/Show Police Blips
└── No → Remove/Hide

ควรให้ Gameplay/Framework Layer ตัดสิน Permission แล้ว Blip Layerมีหน้าที่แสดงผล

54. Blip สำหรับผู้เล่นทุกคนควรสร้างฝั่งไหน

ต้องดู Architecture

FiveM มีทั้ง Client Native และ Server-side RPC equivalent สำหรับ ADD_BLIP_FOR_COORD.

ดังนั้นควรเลือกตามว่า Blip เป็น

Global
Per-player
Per-job
Temporary

และใครควรเป็น Source of Truth

55. Blip ส่วนตัวของ Player ควรทำอย่างไร

เช่น

Job Destination
Personal Waypoint
Quest Target

หากมีเฉพาะ Player คนนั้นที่ควรเห็น Blip ก็ควรออกแบบให้ Visibility/Creation เป็น Per-player แทน Global โดยไม่จำเป็น

56. Blip ชั่วคราวต้องลบไหม

ควร

เช่น

Mission Target
Delivery Location
Search Area
Temporary Vehicle

เมื่อ Mission จบควร Cleanup Blip

FiveM มี

REMOVE_BLIP

สำหรับลบ Blip ออกจาก Map.

57. RemoveBlip ใช้อย่างไร

ตัวอย่าง

RemoveBlip(blip)

เอกสาร Cfx.re ระบุว่า REMOVE_BLIP ลบ Blip จาก Map และตามปกติ Blip จะถูกลบโดย Script/Resource ที่สร้างมัน.

58. Resource อื่นลบ Blip ของเราได้ไหม

ตามปกติ Cfx.re ระบุว่า Blip ถูกจำกัดให้ Script/Resource ที่สร้างเป็นผู้ลบ แต่ FiveM ยังมี Native ที่อนุญาตให้ Script Override Logic นี้ได้หากตั้งใจใช้.

ดังนั้นไม่ควรออกแบบ Resource ให้ไปลบ Blips ของ Resource อื่นโดยไม่มีเหตุผล

59. Blip ซ้ำเกิดจากอะไร

สาเหตุยอดนิยมคือ

Resource Start
→ Create Blip

Event Trigger
→ Create Blip อีก

Character Load
→ Create Blip อีก

แต่ไม่ได้ตรวจว่ามี Blip เดิมอยู่แล้ว

ผลคือ Icons ซ้อนกันหลายตัว

60. อย่าสร้าง Static Blip ใน Loop

ผิดแนวคิด เช่น

while true do
Wait(1000)

AddBlipForCoord(
100.0,
200.0,
30.0
)
end

เพราะ ADD_BLIP_FOR_COORD สร้าง Blip ใหม่ทุกครั้งที่ถูกเรียก.

Static Blip ควรถูกสร้างครั้งเดียว

61. ควรเก็บ Handle ของ Blip

ตัวอย่าง

local hospitalBlip = nil

แล้ว

Create
→ เก็บ Handle

Update
→ ใช้ Handle เดิม

Remove
→ ลบ Handle

ทำให้ไม่ต้องค้นหา/สร้างใหม่โดยไม่จำเป็น

62. Blip หายหลัง Restart Resource

หาก Blip ถูกสร้างโดย Resource นั้น เมื่อ Resource Restart ต้องมี Initialization Logic สำหรับสร้าง Blips ที่จำเป็นใหม่

จึงควรมีข้อมูลต้นทาง เช่น

local locations = {
{
x = 100.0,
y = 200.0,
z = 30.0
}
}

แล้วสร้างจาก Config ทุกครั้งที่ Resource Start

63. Blip ซ้ำหลัง Restart Resource

ควรตรวจ Lifecycle

Create
Cleanup
Restart
Character Load

โดยเฉพาะ Resource ที่สร้าง Blips จาก Events หลายตัวพร้อมกัน

64. Blip Configuration ควรเก็บอย่างไร

Server ที่มีหลายตำแหน่งควรใช้ Config

ตัวอย่าง

local Blips = {
{
label = 'Hospital',
coords = vector3(300.0, -500.0, 30.0),
sprite = 1,
colour = 2,
scale = 0.8,
shortRange = true
}
}

จากนั้นใช้ Function เดียวสร้างทุก Blip

ทำให้แก้ไขง่ายกว่าการ Hard-code แต่ละ Location ซ้ำหลาย File

65. ตัวอย่างสร้าง Blip แบบเป็นระบบ

local function createBlip(data)
local blip = AddBlipForCoord(
data.coords.x,
data.coords.y,
data.coords.z
)

SetBlipSprite(
blip,
data.sprite
)

SetBlipColour(
blip,
data.colour
)

SetBlipScale(
blip,
data.scale
)

SetBlipAsShortRange(
blip,
data.shortRange
)

return blip
end

Functions เหล่านี้มี Native แยกสำหรับ Coordinates, Sprite, Colour, Scale และ Short Range ตาม Cfx.re Reference.

66. Blip Name ตั้งได้ไหม

ระบบ GTA/FiveM มี HUD/Text APIs ที่ Resources ใช้กำหนดข้อความให้กับ Map Elements แต่ Implementation ของ Label มักใช้ Text Command Flow ร่วมกับ Blip Handle

ดังนั้นควรใช้ Pattern ที่เข้ากับ Resource/Runtime ที่กำลังพัฒนา และตรวจ Native Reference ปัจจุบันก่อน Copy Code รุ่นเก่า

67. Blip หายแก้อย่างไร

เริ่มจาก

① Blip ถูกสร้างไหม
② Handle มีไหม
③ Sprite ถูกไหม
④ Scale ถูกไหม
⑤ Alpha ถูกไหม
⑥ Display ถูกไหม
⑦ Short Range เปิดไหม
⑧ Resource ยังทำงานไหม

Properties เหล่านี้มี Native ควบคุมแยกกัน จึงควร Debug ทีละ Layer.

68. Blip เห็นเฉพาะตอนเข้าใกล้

ตรวจ

SET_BLIP_AS_SHORT_RANGE

ก่อน

เพราะ Native นี้ถูกออกแบบให้กำหนด Blip แบบ Short Range.

69. Blip Map เยอะเกินไปควรทำอย่างไร

พิจารณา

Short Range
Category
Display
Job Permission
Temporary Blips

เพื่อไม่ให้ Main Map เต็มไปด้วย Icons

FiveM มี Properties สำหรับ Short Range, Categories และ Display Modes แยกกัน.

70. วิธี Debug Blip แบบเร็วที่สุด

ขั้นที่ 1 — สร้าง Blip ง่ายที่สุด

local blip = AddBlipForCoord(
x,
y,
z
)

ตรวจว่า Blip ถูกสร้างหรือไม่.

ขั้นที่ 2 — ตั้ง Sprite

SetBlipSprite(blip, sprite)

ตรวจ Sprite Reference.

ขั้นที่ 3 — ตั้งสี

SetBlipColour(blip, colour)

ขั้นที่ 4 — ตั้ง Scale

SetBlipScale(blip, 0.8)

ขั้นที่ 5 — ตรวจ Display

หาก Main Map กับ Minimap แสดงไม่เหมือนกัน ให้ตรวจ SET_BLIP_DISPLAY.

ขั้นที่ 6 — ตรวจ Short Range

หาก Blip ขึ้นเมื่อเข้าใกล้เท่านั้น ให้ตรวจ SET_BLIP_AS_SHORT_RANGE.

ขั้นที่ 7 — ถ้าต้องการ Route

SetBlipRoute(blip, true)

ขั้นที่ 8 — ถ้าเป็น Entity

ใช้ ADD_BLIP_FOR_ENTITY.

ขั้นที่ 9 — ถ้าเป็นพื้นที่

ใช้ Radius หรือ Area Blip ตาม Shape.

ขั้นที่ 10 — เมื่อไม่ใช้แล้ว

RemoveBlip(blip)

ตารางสรุป FiveM Blip

ต้องการNative ที่ควรดู
เพิ่มจุดคงที่ADD_BLIP_FOR_COORD
เพิ่ม Blip ติด EntityADD_BLIP_FOR_ENTITY
เพิ่มพื้นที่วงกลมADD_BLIP_FOR_RADIUS
เพิ่มพื้นที่สี่เหลี่ยมADD_BLIP_FOR_AREA
เปลี่ยน IconSET_BLIP_SPRITE
เปลี่ยนสีSET_BLIP_COLOUR
เปลี่ยนขนาดSET_BLIP_SCALE
เปลี่ยนความโปร่งใสSET_BLIP_ALPHA
กำหนด Map/MinimapSET_BLIP_DISPLAY
จำกัดระยะSET_BLIP_AS_SHORT_RANGE
เปิด GPS RouteSET_BLIP_ROUTE
เปลี่ยนตำแหน่งSET_BLIP_COORDS
เปลี่ยน RotationSET_BLIP_ROTATION
แบ่ง CategorySET_BLIP_CATEGORY
ลบ BlipREMOVE_BLIP

Natives เหล่านี้อยู่ใน Blip/HUD APIs ของ FiveM.

Checklist FiveM Blip ก่อนใช้จริง

☐ Coordinates ถูก
☐ Sprite ถูก
☐ Colour ถูก
☐ Scale ถูก
☐ Alpha ถูก
☐ Display ถูก
☐ Short Range ถูก
☐ Route ถูก
☐ Category ถูก
☐ ไม่มี Duplicate Blip
☐ Entity Blip ใช้ Entity ที่ถูก
☐ Temporary Blip มี Cleanup
☐ Resource Restart แล้วสร้างใหม่ถูก

Blip แบบไหนควรใช้กับแต่ละงาน

Hospital
→ Coordinate Blip

Police Vehicle
→ Entity Blip

Mission Search Area
→ Radius Blip

Restricted Zone
→ Area Blip

Delivery Destination
→ Coordinate Blip + Route

FiveM มี Native แยกตาม Use Case เหล่านี้ จึงไม่จำเป็นต้องใช้ Coordinate Blip แก้ทุกปัญหา.

Blip กับ Marker ควรใช้ร่วมกันอย่างไร

ตัวอย่าง Garage

Garage Blip
→ ช่วยหา Garage จาก Map

Marker
→ บอกจุด Interaction เมื่อมาถึงพื้นที่

Target/Interaction
→ กดใช้งาน

การแยกหน้าที่แบบนี้ทำให้ Map Navigation กับ World Interaction ไม่ปนกัน โดย Cfx.re เองแยก Blips และ Markers เป็นคนละ Game Reference.

Blip กับ GPS Route ควรใช้ร่วมกันอย่างไร

ตัวอย่าง Delivery

รับงาน
↓
สร้าง Destination Blip
↓
SetBlipRoute(true)
↓
ผู้เล่นเดินทาง
↓
ถึงจุดหมาย
↓
SetBlipRoute(false)
↓
RemoveBlip

SET_BLIP_ROUTE ใช้ควบคุม Route ส่วน REMOVE_BLIP ใช้ลบ Blip เมื่อหมด Lifecycle.

สิ่งที่ไม่ควรทำกับ FiveM Blip

หลีกเลี่ยง

สร้าง Static Blip ทุก Frame
สร้าง Vehicle Blip ใหม่ตลอดเวลา
ไม่เก็บ Blip Handle
ไม่ Remove Mission Blip หลังจบงาน
เปิด Route แล้วไม่ปิด
ใช้ Radius Blipแล้วคาดว่าจะมี Icon
ใช้ Short Range แล้วสงสัยว่าทำไม Blip หายเมื่ออยู่ไกล
สร้าง Blips ทุก Job ให้ผู้เล่นทุกคนโดยไม่จำเป็น
ใช้ Sprite IDs จาก Tutorial เก่าโดยไม่ตรวจ Reference

โดยเฉพาะ Radius Blip ไม่มี Sprite Icon ให้เองตาม Cfx.re Documentation และ Static Coordinate Blip เป็นการสร้าง Blip ใหม่ทุกครั้งที่เรียก Native ไม่ใช่ Update ตัวเดิม.

สูตรจำง่ายสำหรับ FiveM Blip

POINT
→ ADD_BLIP_FOR_COORD

ENTITY
→ ADD_BLIP_FOR_ENTITY

CIRCLE
→ ADD_BLIP_FOR_RADIUS

AREA
→ ADD_BLIP_FOR_AREA

NAVIGATION
→ SET_BLIP_ROUTE

DELETE
→ REMOVE_BLIP

สรุป FiveM Blip คืออะไร

FiveM Blip คือ Icon หรือ Map Element ที่ใช้แสดงตำแหน่งและข้อมูลบน Main Map/Minimap ของ GTA V/FiveM

ถ้าต้องการจุดคงที่ใช้

ADD_BLIP_FOR_COORD

ซึ่งสร้าง Blip จาก Coordinates.

ถ้าต้องการ Blip ที่ติดตาม

Ped
Vehicle
Object

ใช้

ADD_BLIP_FOR_ENTITY

ซึ่งรองรับ Entity Types เหล่านี้โดยตรง.

ถ้าต้องการพื้นที่ค้นหาวงกลมใช้

ADD_BLIP_FOR_RADIUS

แต่ต้องจำว่า Radius Blip ไม่ได้สร้าง Sprite Icon มาให้เอง.

ถ้าต้องการพื้นที่สี่เหลี่ยมสามารถใช้

ADD_BLIP_FOR_AREA

ซึ่งรับตำแหน่งพร้อม Width และ Height.

หลังสร้าง Blip แล้วสามารถปรับ

Sprite
Colour
Scale
Alpha
Display
Short Range
Rotation
Category

ผ่าน Blip Properties ที่ FiveM มีให้.

หากต้องการ GPS Navigation เปิด

SET_BLIP_ROUTE

และเมื่อภารกิจจบสามารถปิด Route หรือลบ Blip ด้วย REMOVE_BLIP.

ถ้า Blip เห็นเฉพาะตอนอยู่ใกล้ ให้ตรวจ Short Range

ถ้า เห็นบน Map แต่ไม่เห็น Minimap ให้ตรวจ Display Mode

ถ้า Icon เล็กหรือจางจนเหมือนหาย ให้ตรวจ Scale และ Alpha

ถ้า รถกำลังเคลื่อนที่แต่ Blip ไม่ตาม ให้พิจารณา Entity Blip แทนการสร้าง Coordinate Blip ใหม่ซ้ำ ๆ

ถ้า มีวง Search Area แต่ไม่มี Icon กลาง นั่นอาจเป็น Behavior ปกติของ Radius Blip และต้องสร้าง Coordinate Blip เพิ่มหากต้องการ Icon.

และถ้า Blip ซ้ำเต็ม Map ให้ตรวจ Creation Lifecycle ก่อน เพราะ Static Blip ควรถูกสร้างครั้งเดียวและเก็บ Handle เพื่อ Update หรือ Remove ภายหลัง

แนวทางของ comsiam คือเลือก Blip Type ให้ตรงกับข้อมูลก่อนเสมอ: จุดคงที่ใช้ Coordinate, สิ่งที่เคลื่อนที่ใช้ Entity, พื้นที่วงกลมใช้ Radius และพื้นที่สี่เหลี่ยมใช้ Area จากนั้นค่อยกำหนด Sprite, สี, Scale, Visibility และ Route วิธีนี้จะทำให้ระบบ Map จัดการง่ายกว่าและลดปัญหา Blip ซ้ำหรือ Blip หายโดยไม่ทราบสาเหตุ

Comments

Popular posts from this blog

FiveM ยังน่าเล่นไหม? Enhanced เปลี่ยน FiveM แค่ไหน

FiveM คืออะไร เล่นอย่างไร สำหรับมือใหม่ เริ่มต้นตั้งแต่ศูนย์

วิธีตั้ง Admin Permission ด้วย add_ace และ add_principal FiveM แบบละเอียด