Salta ai contenuti

API zombie

bs_zombies è grande, ma ciò che serve alle altre risorse è un elenco breve. Tutto è nella pagina API di bs_zombies con file e riga.

Client:

if exports.bs_zombies:IsWalkerPed(ped) then
local id = exports.bs_zombies:WalkerIdOf(ped) -- registry id, nil if not a walker
end
local crawler = exports.bs_zombies:IsCrawlerPed(ped)

IsWalkerPed/WalkerIdOf rispondono anche dallo statebag bsZombie per un ped in rete che questo client non ha ancora adottato. Usali, non controllare i modelli, il modello può essere quello vanilla.

Altri helper del client: Live() (tabella dei camminatori adottati), Count(), HostedCount(), HasWalker(id), IsBeingAttacked(), HordeActive(), PlayerProtectedInVehicle().

Il registro del server possiede la salute. Il danno del client è segnalato da chi spara, ma per qualcosa che tu possiedi sul server (una torretta, una trappola) passa da:

-- server
exports.bs_zombies:GadgetHit(src, walkerId, damage, x, y, range, weapon)

Controlla che il camminatore sia entro range da x, y. La torretta di bs_gadgets lo usa, guarda bs_gadgets/server per il flusso (il client trova il bersaglio, il server controlla cadenza e munizioni, poi GadgetHit).

Attira i camminatori verso un punto:

-- server
exports.bs_zombies:EventNoise(x, y, z, loud)

Il gadget esca lo chiama a ogni impulso.

Per cose scriptate (le ondate di orde di bs_events le usano):

-- server
exports.bs_zombies:EventSpawn(x, y, 'walker', { tag = 'myres:wave1', hpScale = 1.0 })
exports.bs_zombies:EventDrive('myres:wave1', x, y, z, seconds) -- push tagged walkers towards a point
local n = exports.bs_zombies:EventCount('myres:wave1')
exports.bs_zombies:EventClear('myres:wave1', keepAsNormal)

I camminatori taggati saltano la rimozione a distanza finché sono taggati. Contano comunque nei limiti del pool, non puoi superare Streaming.PoolGuard.maxNetworked. E il minimo di comparsa (100 m da ogni giocatore) vale ancora.

-- server
exports.bs_zombies:SafeZones() -- zone list
exports.bs_zombies:SafeZonesPadded()
exports.bs_zombies:Total() -- registry count
exports.bs_zombies:Heat(zoneId)
exports.bs_zombies:Snapshot()
BagSu
bsZombiepedid del registro. Se c’è, è nostro
zType, zGait, zCrawl, zFeed, zReach, zState, zMhp, zGround, zApppedstato della modalità di rete
bsZombieDeadpedcadavere in rete

Non eliminare mai da solo un camminatore in rete. Il server tiene traccia delle eliminazioni inattese, ricrea il camminatore se un giocatore è vicino e segnala il proprietario in bs_guard (zombie_entity_deleted). Se devono sparire, usa il tag dell’evento e EventClear, oppure chiedi al registro.

La pulizia della popolazione di bs_world salta già tutto ciò che ha bsZombie. Se anche la tua risorsa ripulisce i ped, controlla prima IsWalkerPed.

GlobalState.bsZombieMode è 'networked' o 'legacy'. La maggior parte degli export funziona allo stesso modo in entrambe.