FiveM'de harita blipleri nasıl oluşturulur: AddBlipForCoord ve radius blipleri
AddBlipForCoord ile FiveM'de blip oluşturun: sprite, renk, ölçek, kısa menzil, ad etiketi, AddBlipForRadius ile radius blipleri, blipleri kaldırma ve yalnızca iş blipleri.
AddBlipForCoord çağırırsınız ve adı olmayan beyaz nokta veya adı "Blip" veya "NULL" olan blip veya betik durduktan sonra haritada kalan blip elde edersiniz. Blipleri çağrıların sırasını bilirseniz basittir. Bu makale birini oluşturma, adlandırma, yarıçap çizme, kaldırma ve blipleri yalnızca bir işe gösterme konusunda yardımcı olur.
Temel blip
Tüm blip yerleşikleri istemcide çalışır. Bu, bir konumda bir mağaza simgesi oluşturur:
local blip = AddBlipForCoord(25.7, -1347.3, 29.5)
SetBlipSprite(blip, 52)
SetBlipDisplay(blip, 4)
SetBlipScale(blip, 0.8)
SetBlipColour(blip, 2)
SetBlipAsShortRange(blip, true)
BeginTextCommandSetBlipName('STRING')
AddTextComponentSubstringPlayerName('24/7 Shop')
EndTextCommandSetBlipName(blip)Her çağrının yaptığı:
| Yerleşik | Amaç |
|---|---|
AddBlipForCoord |
Blip'i oluşturur ve tutamak döndürür. Tutun. |
SetBlipSprite |
Simge, sayı. |
SetBlipDisplay |
Nerede gösterilir: 4 ana harita ve miniharittadır. |
SetBlipScale |
Boyut. 1.0 normaldir. |
SetBlipColour |
Renk, sayı. |
SetBlipAsShortRange |
true miniharitada yalnızca yakın olduğunda gösterir. |
Spriteler ve renkler için sayılar FiveM belgeleme sitesinde, oyun referanslarında, bliplerde listelenmiştir. Yukarıdaki 52 spriteı bir mağaza simgesidir. Yalnızca beyaz nokta görürseniz, sprite numarası yanlış veya eksikdir.
Adı ayarlayın
Harita ve duraklatma menüsünde gösterilen etiket basit bir dize argümanı değildir. Metin komut yerleşikleri aracılığıyla bu sırayla gider:
BeginTextCommandSetBlipName('STRING')
AddTextComponentSubstringPlayerName('24/7 Shop')
EndTextCommandSetBlipName(blip)Blip zaten var olmalı ve her üçünü de çağırmanız gerekir. Birini atlayın ve ad boştur veya varsayılan gösterir. Ad olmadan, blip efsanede "Blip" veya sprite tarafından görünür.
İpucu: bu çağrıları bir tablo alan işlevde koyun, bu nedenle her blip bir konfigde satırı, on yerleşik satırı yerine.
local function createBlip(data)
local blip = AddBlipForCoord(data.coords.x, data.coords.y, data.coords.z)
SetBlipSprite(blip, data.sprite)
SetBlipDisplay(blip, 4)
SetBlipScale(blip, data.scale or 0.8)
SetBlipColour(blip, data.colour or 0)
SetBlipAsShortRange(blip, data.shortRange ~= false)
BeginTextCommandSetBlipName('STRING')
AddTextComponentSubstringPlayerName(data.name)
EndTextCommandSetBlipName(blip)
return blip
end
local shopBlip = createBlip({
coords = vec3(25.7, -1347.3, 29.5),
sprite = 52,
colour = 2,
name = '24/7 Shop',
})Kısa menzil veya daima görünür
SetBlipAsShortRange(blip, true), blip'in yalnızca oyuncu yakınken miniharitada gösterilmesini ve tam haritada hala görünür olmasını anlamına gelir. false ile, oyuncu nerede olursa olsun daima miniharitada gösterilir, kenar sıkıştırılmış. Mağazalar ve işler için kısa menzil kullanın ve ana hedef için false.
Radius blipleri
Radius blip'i, bir arama bölgesi veya turf gibi bir alan için renkli dairededir. AddBlipForRadius daire yapar ancak simge değil, bu nedenle her ikisini de istiyorsanız aynı yere normal blip ekleyin:
local area = AddBlipForRadius(25.7, -1347.3, 29.5, 150.0)
SetBlipColour(area, 1)
SetBlipAlpha(area, 100)Son argüman metre cinsinden yarıçaptır. Alfa (0 ila 255) ayarlayın düşük veya daire haritayı kaplar. Radius blip'i ayrı tutamakdır, bu nedenle ayrı olarak kaldırın.
Blipleri kaldırın
Daima tutamağı tutun ve blip artık gerekli olmadığında kaldırın:
if DoesBlipExist(shopBlip) then
RemoveBlip(shopBlip)
endBlipleri kaynak durdurulduğunda veya güvenilir bir şekilde kaldırılmaz, bu nedenle işleyicide temizleyin. Olmadan, betiği yeniden başlatmak haritada yinelenenleri yığın:
AddEventHandler('onResourceStop', function(resource)
if resource ~= GetCurrentResourceName() then return end
if DoesBlipExist(shopBlip) then RemoveBlip(shopBlip) end
if DoesBlipExist(area) then RemoveBlip(area) end
end)Yalnızca iş blipleri
Blipleri her oyuncunun kendi istemcisinde oluşturulur, bu nedenle yalnızca iş blip'i anlamı: doğru iş için oluşturun, diğerleri için kaldırın. Oluşturdığunuz tablonun tutun ve iş değişikliklerine tepki verin.
ESX'de:
local blips = {}
local function refreshBlips(job)
for i = #blips, 1, -1 do
RemoveBlip(blips[i])
blips[i] = nil
end
if job and job.name == 'police' then
blips[#blips + 1] = createBlip({
coords = vec3(441.2, -981.9, 30.7),
sprite = 60,
colour = 3,
name = 'Police station',
})
end
end
RegisterNetEvent('esx:playerLoaded', function(xPlayer)
refreshBlips(xPlayer.job)
end)
RegisterNetEvent('esx:setJob', function(job)
refreshBlips(job)
end)QBCore'da (ve uyumluluk katmanı aracılığıyla QBox):
local QBCore = exports['qb-core']:GetCoreObject()
RegisterNetEvent('QBCore:Client:OnPlayerLoaded', function()
refreshBlips(QBCore.Functions.GetPlayerData().job)
end)
RegisterNetEvent('QBCore:Client:OnJobUpdate', function(job)
refreshBlips(job)
end)Her ikisi yukarıdaki refreshBlips ve createBlip aynısını kullanır. Betik oyuncu çevrimiçiyken yeniden başlayabilirse, yüklenen olayı zaten o zaman geçtiğinden mevcut işle başlangıçta refreshBlips bir kez çağırın.
Dikkat: istemcide blip'i gizlemek güvenlik değildir. Oyuncu, istemciyi yama alırsa yine de görebilir. Yasadışı gizli gibi gizli bir yer için, oyuncu bunu kazanana kadar istemciye konumu hiç göndermeyin.
Diğer blip türleri
AddBlipForEntity(entity)araç veya ped'i takip eder.SetBlipRoute(blip, true)blip'e bir GPS rotası çizer.SetBlipFlashes(blip, true)yanıp söner.
Kontrol Listesi
| Semptom | Çözüm |
|---|---|
| Beyaz nokta, simge yok | Geçerli sprite numarası ile SetBlipSprite çağırın |
| Blip'in adı yok veya yanlış | Blip'i oluşturduktan sonra üç çağrılı ad dizisini kullanın |
| Blip çok büyük veya çok küçük | SetBlipScale ayarlayın (1.0 normaldir) |
| Radius çemberi haritayı gizliyor | SetBlipAlpha ile düşürün |
| Betik yeniden başlatılmasından sonra yinelenenleri | onResourceStop içinde RemoveBlip |
| Blip yalnızca bir iş için gösterilmelidir | İş güncelleme olaylarında oluşturun ve kaldırın |
Kısa yanıtlar
Blip'im neden yanlış ad veya ad gösterilmiyor?
Ad, blip var olduktan sonra, bu sırayla BeginTextCommandSetBlipName('STRING'), AddTextComponentSubstringPlayerName(name) ve EndTextCommandSetBlipName(blip) ile ayarlanmalıdır.
Blip'i nasıl kaldırırım?
Oluşturduğunuzda depoladığınız tutamakla RemoveBlip(blip) çağırın. Tutamağı tutmazsanız bu blip'i kaldıramazsınız.
Blip'i yalnızca bir işe nasıl gösterebilirim?
Oyuncunun işi eşleştiğinde oluşturun ve iş değiştiğinde kaldırın. Blip istemcide oluşturulduğundan çerçevenin iş güncelleme olayından yapın.
Bu sorunu yaşatmayan scriptler
Shop CreatorBir dakikadan kısa sürede dükkân kurun — sahipler, çalışanlar, kasalar ve soygunlar dahil.Scripti gör →
Advanced BoostingTabletten araç boosting: D’den S+ sınıfına kontratlar, ekipler ve canlı sıra.Scripti gör →
Quest CreatorGörevler ve NPC diyalogları için oyun içinde düğüm düğüm kurulan görsel editör.Scripti gör →