UI / NUI kuralları
Her kaynağın kendi NUI sayfası vardır (ui_page 'html/index.html'). bs_ui HUD’dur, bildirimler ve paylaşılan parçalardır.
Aynı anda tek panel: bs:ui:opened / bs:ui:closed
Section titled “Aynı anda tek panel: bs:ui:opened / bs:ui:closed”Paneliniz açıldığında bunu duyurursunuz. Diğer her panel bunu duyar ve kendini kapatır. Sizinki kapandığında bunu da duyurursunuz. bs_config’den gerçek kod:
local function close() if not isOpen then return end isOpen = false SetNuiFocus(false, false) SendNUIMessage({ action = 'close' }) TriggerEvent('bs:ui:closed', 'config')end
local function open() if isOpen then return close() end isOpen = true SetNuiFocus(true, true) SendNUIMessage({ action = 'open', data = data }) TriggerEvent('bs:ui:opened', 'config')end
-- another UI took over: step asideAddEventHandler('bs:ui:opened', function(what) if what ~= 'config' and isOpen then close() endend)
AddEventHandler('onResourceStop', function(res) if res == GetCurrentResourceName() and isOpen then SetNuiFocus(false, false) TriggerEvent('bs:ui:closed', 'config') endend)Kurallar:
- Her iki olayda da panel adınızı iletin. İşleyiciler bunu denetler; herhangi bir kapanışa tepki veren bir işleyici arazi haritasını aylarca bozdu.
- Çifti her çıkışta eşleştirin: kapatma düğmesi, Esc, aç/kapa tuşu, başka bir arayüzün açılması, kaynak durması. Birini kaçırırsanız oyuncu fare imleciyle ve oyunsuz kalır.
opened’ı açıldıktan sonra duyurun ve kendi işleyicinizden kendinizi kapatın, başkalarının yapacağını varsaymayın.
/refreshui (bs_ui) panik düğmesidir: her şeyi kapatır, odağı bırakır ve nil ile bs:ui:closed tetikler.
Bildirimler
Section titled “Bildirimler”-- clientTriggerEvent('bs:ui:notify', { type = 'info', title = 'Radio', message = 'Signal found.', duration = 3000 })-- serverTriggerClientEvent('bs:ui:notify', src, { type = 'error', title = 'Denied', message = 'Nope.' })Kodda kullanılan türler: info, success, error.
scale.js
Section titled “scale.js”Sayfalar 1920x1080 için yerleştirilir. Her çözünürlüğe uymaları için paylaşılan ölçekleyiciyi dahil edin:
<script src="https://cfx-nui-bs_ui/html/shared/scale.js"></script><body>’yi transform ile ölçekler: --ui-scale = clamp(min(w/1920, h/1080), 0.6, 1.25). Oyuncular bunu ayarlardan geçersiz kılabilir (0.6 ile 1.4 arası).
Kullanırken bilinmesi gerekenler:
- Sayfa CSS’inde
vh/vwdeğerlerinicalc(Nvh / var(--ui-scale, 1))olarak yazın, böylece gerçek görünüm alanı oranları kalırlar. clientX/clientYveya bir bounding rect’tenstyle.left/topayarlayan JS,BSScale.get()’e bölmelidir.BSScale.w()/BSScale.h()yerel görünüm alanını verir.<html data-bs-noscale>ile devre dışı bırakın.
Ev stili
Section titled “Ev stili”- Her sayfada
html, body { background: transparent !important; }. Aksi halde oyunun üstünde siyah bir ekran olur. - Boştayken her karede NUI mesajı yok. Değişiklikte gönderin veya sınırlayın (drone HUD’u uçarken her 150 ms’de gönderir, bu yaklaşık üst sınırdır).
- Palet, neredeyse siyah üzerinde kehribar / pas / kemik / toz. bs_ui CSS jetonlarını ve
bs_menu/html/css/faction-hub.cssdosyasını yeniden kullanın. Harici yazı tipi veya CDN yok; oyuncuların bunlara internet erişimi olmayabilir ve zaten bir gizlilik meselesidir. - Simgeler:
bs_ui/html/js/icons.jsiçinde çizgi simgeler. - Sesler:
bs_ui/html/js/sound.jskonumsal sesleri yönetir (maxDistance, panning).
bs19.org · Privacy · Terms · Cookie settings
Cookies and outside content
The site only needs two essential cookies to keep you logged in and protect forms. Videos and streams from YouTube and Twitch load from their servers, which can set their own cookies, so they stay off until you say yes. Nothing is pre-ticked and you can change your mind any time with "Cookie settings" at the bottom of every page. Details.
Questions about the server, the framework or the site? A real person reads this, usually within a day.