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
ตัวอย่าง
HospitalPolice StationGarageBankShopJob LocationPlayerVehicleMission 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 แบบ
HospitalGarageBank
ที่แสดงเป็น Icon อย่างเดียว
แล้วเปิด Route เฉพาะเมื่อผู้เล่นเลือกจุดหมาย
เพราะ Route ถูกควบคุมแยกด้วย SET_BLIP_ROUTE.
⑥ วิธีสร้าง Blip พื้นฐาน
สำหรับตำแหน่งคงที่ใช้
local blip = AddBlipForCoord(300.0,-500.0,30.0)
ADD_BLIP_FOR_COORD สร้าง Blip สำหรับ Coordinates ที่ระบุ.
⑦ AddBlipForCoord ใช้กับอะไร
เหมาะกับสถานที่ที่ไม่เคลื่อนที่ เช่น
HospitalPolice StationBankGarageShopJob CenterDealerAirport
เพราะ Blip ถูกสร้างจากตำแหน่ง X/Y/Z โดยตรง.
⑧ Blip Handle คืออะไร
เมื่อสร้าง
local blip = AddBlipForCoord(...)
ค่าที่คืนมาคือ Blip Handle
จากนั้นใช้ Handle นี้กับ Functions เช่น
SET_BLIP_SPRITESET_BLIP_COLOURSET_BLIP_SCALESET_BLIP_DISPLAYSET_BLIP_ROUTEREMOVE_BLIP
ตระกูล Native เหล่านี้ใช้ Blip Handle เพื่อแก้ Properties ของ Blip ที่สร้างแล้ว.
⑨ Sprite คืออะไร
Sprite คือรูป Icon ของ Blip
เช่น Blip อาจมีหน้าตาเป็น
PoliceHospitalGarageVehicleStoreMission
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 เล็กจนมองไม่เห็น
กรณีเดียวกัน
ตรวจ
ScaleAlphaDisplay
เพราะ Icon อาจมีอยู่แต่ถูกตั้ง Scale หรือ Alpha จนมองเห็นยาก.
⑱ Alpha คืออะไร
Alpha กำหนดความโปร่งใสของ Blip
FiveM มี
SET_BLIP_ALPHA
สำหรับตั้ง Alpha Channel ของสี Blip.
ตัวอย่าง
SetBlipAlpha(blip, 128)
ทำให้ Blip โปร่งกว่าค่าเต็ม
⑲ Blip มีอยู่แต่เหมือนหาย
ตรวจ
AlphaDisplayShort RangeScale
ก่อนสร้าง 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 ย่อย
อาจเหมาะกว่า
ส่วน
HospitalPolice StationAirport
อาจต้องการให้หาได้จาก 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 VehicleMission VehicleNPCPedObject
เพราะ 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 doWait(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 AreaDanger ZoneMission AreaGang 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 AreaEvent ZoneWork AreaCustom 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 ไหม
ควรพิจารณา เช่น
EmergencyBusinessesGaragesJobsGovernmentTransport
เพื่อให้ 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.
เหมาะกับ
EmergencyMission AlertTemporary 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_COORDADD_BLIP_FOR_ENTITYSET_BLIP_SPRITE
จึงไม่ได้ขึ้นกับ ESX.
ESX จะเกี่ยวข้องก็ต่อเมื่อ Blip Visibility ขึ้นกับ Job หรือ Player Data
52. Blip ต้องใช้ QBCore ไหม
ไม่จำเป็นเช่นเดียวกัน
ตัว Blip System เป็น Native ของ GTA/FiveM
QBCore อาจถูกใช้สำหรับ Logic เช่น
Police-only BlipMechanic-only BlipGang BlipJob 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 เป็น
GlobalPer-playerPer-jobTemporary
และใครควรเป็น Source of Truth
55. Blip ส่วนตัวของ Player ควรทำอย่างไร
เช่น
Job DestinationPersonal WaypointQuest Target
หากมีเฉพาะ Player คนนั้นที่ควรเห็น Blip ก็ควรออกแบบให้ Visibility/Creation เป็น Per-player แทน Global โดยไม่จำเป็น
56. Blip ชั่วคราวต้องลบไหม
ควร
เช่น
Mission TargetDelivery LocationSearch AreaTemporary 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 BlipEvent Trigger→ Create Blip อีกCharacter Load→ Create Blip อีก
แต่ไม่ได้ตรวจว่ามี Blip เดิมอยู่แล้ว
ผลคือ Icons ซ้อนกันหลายตัว
60. อย่าสร้าง Static Blip ใน Loop
ผิดแนวคิด เช่น
while true doWait(1000)AddBlipForCoord(100.0,200.0,30.0)end
เพราะ ADD_BLIP_FOR_COORD สร้าง Blip ใหม่ทุกครั้งที่ถูกเรียก.
Static Blip ควรถูกสร้างครั้งเดียว
61. ควรเก็บ Handle ของ Blip
ตัวอย่าง
local hospitalBlip = nil
แล้ว
Create→ เก็บ HandleUpdate→ ใช้ 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
CreateCleanupRestartCharacter 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 blipend
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 RangeCategoryDisplayJob PermissionTemporary 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 ติด Entity | ADD_BLIP_FOR_ENTITY |
| เพิ่มพื้นที่วงกลม | ADD_BLIP_FOR_RADIUS |
| เพิ่มพื้นที่สี่เหลี่ยม | ADD_BLIP_FOR_AREA |
| เปลี่ยน Icon | SET_BLIP_SPRITE |
| เปลี่ยนสี | SET_BLIP_COLOUR |
| เปลี่ยนขนาด | SET_BLIP_SCALE |
| เปลี่ยนความโปร่งใส | SET_BLIP_ALPHA |
| กำหนด Map/Minimap | SET_BLIP_DISPLAY |
| จำกัดระยะ | SET_BLIP_AS_SHORT_RANGE |
| เปิด GPS Route | SET_BLIP_ROUTE |
| เปลี่ยนตำแหน่ง | SET_BLIP_COORDS |
| เปลี่ยน Rotation | SET_BLIP_ROTATION |
| แบ่ง Category | SET_BLIP_CATEGORY |
| ลบ Blip | REMOVE_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 BlipPolice Vehicle→ Entity BlipMission Search Area→ Radius BlipRestricted Zone→ Area BlipDelivery Destination→ Coordinate Blip + Route
FiveM มี Native แยกตาม Use Case เหล่านี้ จึงไม่จำเป็นต้องใช้ Coordinate Blip แก้ทุกปัญหา.
Blip กับ Marker ควรใช้ร่วมกันอย่างไร
ตัวอย่าง Garage
Garage Blip→ ช่วยหา Garage จาก MapMarker→ บอกจุด 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_COORDENTITY→ ADD_BLIP_FOR_ENTITYCIRCLE→ ADD_BLIP_FOR_RADIUSAREA→ ADD_BLIP_FOR_AREANAVIGATION→ SET_BLIP_ROUTEDELETE→ REMOVE_BLIP
สรุป FiveM Blip คืออะไร
FiveM Blip คือ Icon หรือ Map Element ที่ใช้แสดงตำแหน่งและข้อมูลบน Main Map/Minimap ของ GTA V/FiveM
ถ้าต้องการจุดคงที่ใช้
ADD_BLIP_FOR_COORD
ซึ่งสร้าง Blip จาก Coordinates.
ถ้าต้องการ Blip ที่ติดตาม
PedVehicleObject
ใช้
ADD_BLIP_FOR_ENTITY
ซึ่งรองรับ Entity Types เหล่านี้โดยตรง.
ถ้าต้องการพื้นที่ค้นหาวงกลมใช้
ADD_BLIP_FOR_RADIUS
แต่ต้องจำว่า Radius Blip ไม่ได้สร้าง Sprite Icon มาให้เอง.
ถ้าต้องการพื้นที่สี่เหลี่ยมสามารถใช้
ADD_BLIP_FOR_AREA
ซึ่งรับตำแหน่งพร้อม Width และ Height.
หลังสร้าง Blip แล้วสามารถปรับ
SpriteColourScaleAlphaDisplayShort RangeRotationCategory
ผ่าน 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
Post a Comment