Exports
DS-Death espone un paio di net event che puoi lanciare da qualsiasi script, tre export lato client per leggere lo stato e rianimare chi ti sta vicino, e una serie di hook nella config per agganciare i tuoi trigger a morte, revive, respawn e così via.
Eventi
Gli eventi sono il punto di integrazione più semplice: lanciali dal tuo ambulance job, dal telefono, da un minigioco o da uno strumento admin.
DS-Death:revive
Rianima il giocatore locale (o il giocatore indicato, se lanciato dal server). Usalo per collegare DS-Death ai flussi di revive esistenti, come l’handler esx_ambulancejob:revive dell’ambulance job ESX.
-- Client side
TriggerEvent('DS-Death:revive')
-- Server side (revives the player whose source is passed in)
TriggerClientEvent('DS-Death:revive', source)DS-Death:lockAnim
Blocca o sblocca l’animazione di morte di DS-Death. Utile quando un altro sistema (ambulance job, minigioco di revive personalizzato) vuole riprodurre la propria animazione mantenendo il giocatore nello stato di knockout di DS-Death. Passa true per bloccare, false per rilasciare.
-- Client side
TriggerEvent('DS-Death:lockAnim', true) -- lock the death animation
TriggerEvent('DS-Death:lockAnim', false) -- release it
-- Server side (target a specific player)
TriggerClientEvent('DS-Death:lockAnim', source, true)Exports
Tutti e tre gli export girano sul client. Le funzioni di stato accettano un server ID opzionale: non passare nulla per interrogare il giocatore locale.
ReviveNear
clientCerca i giocatori a terra vicino al giocatore locale e prova a rianimare il più vicino. Lo script gestisce il controllo dell'item, la progress bar e l'evento di revive, quindi devi solo collegare questo export all'interazione che preferisci (uso di un item, opzione del target, tasto rapido).
Firma
exports['DS-Death']:ReviveNear()Esempio
-- e.g. from a usable-item handler or a target option
exports['DS-Death']:ReviveNear()isPlayerDead
clientIndica se il giocatore specificato è completamente morto (in attesa di respawn). Passa un server ID per interrogare un altro giocatore; non passare nulla per il giocatore locale.
Firma
exports['DS-Death']:isPlayerDead(serverId)Parametri
| Nome | Tipo | Descrizione |
|---|---|---|
| serverId? | number | Server ID del giocatore da interrogare. Di default è il giocatore locale. |
Restituisce
true finché il giocatore è completamente morto, altrimenti false.
Esempio
if exports['DS-Death']:isPlayerDead() then
-- block phone, inventory, etc.
endisPlayerKnocked
clientIndica se il giocatore specificato è attualmente a terra (knockout, ma ancora rianimabile). Stessa forma di isPlayerDead: il server ID è opzionale e per impostazione predefinita è il giocatore locale.
Firma
exports['DS-Death']:isPlayerKnocked(serverId)Parametri
| Nome | Tipo | Descrizione |
|---|---|---|
| serverId? | number | Server ID del giocatore da interrogare. Di default è il giocatore locale. |
Restituisce
true finché il giocatore è a terra e in attesa di revive.
Esempio
local target = GetClosestPlayer()
if exports['DS-Death']:isPlayerKnocked(GetPlayerServerId(target)) then
-- show "Revive" prompt
endHook di config
Oltre a eventi ed export, config.lua include alcune funzioni vuote che puoi estendere senza toccare il core in escrow. Inserisci i tuoi trigger o export in una qualsiasi di queste.
- OnKnocked, OnDeath, OnRevive, OnRespawn: scattano al passaggio di stato corrispondente del giocatore.
- CanDie: restituisci
falseper disattivare del tutto il ciclo di morte (es. dentro un minigioco, una partita di softair o un’arena PvP). - EMSCall: riceve le coordinate del giocatore a terra; indirizzale al trigger di chiamata d’emergenza del tuo telefono.
- Notification: sostituiscila con il tuo sistema di notifiche; riceve un messaggio come stringa.
- CustomProgress / StopCustomProgress: collega qualsiasi progress bar (
ox_lib, UI personalizzata, ecc.) quandoProgressbar = 'CUSTOM'nella config. - DisabledKeys: i controlli disattivati mentre il giocatore è completamente morto. Sovrascrivila per lasciarne attivi altri.
exports['DS-Death']:isPlayerKnocked() da dentro OnKnocked per bloccare altri sistemi (telefono, inventario, radio) senza dover fare polling.