Przejdź do głównej zawartości

API zombie

bs_zombies jest duży, ale inne zasoby potrzebują krótkiej listy. Wszystko jest na stronie API bs_zombies z plikiem i linią.

Klient:

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 odpowiadają też ze statebaga bsZombie dla sieciowego peda, którego ten klient jeszcze nie przejął. Używaj ich, nie sprawdzaj modeli, model może być waniliowy.

Inne pomocniki klienta: Live() (tabela przejętych szwendaczy), Count(), HostedCount(), HasWalker(id), IsBeingAttacked(), HordeActive(), PlayerProtectedInVehicle().

Rejestr serwera jest właścicielem zdrowia. Obrażenia klienta zgłasza strzelec, ale dla czegoś, co ty posiadasz na serwerze (wieżyczka, pułapka), idź przez:

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

Sprawdza, czy szwendacz jest w promieniu range od x, y. Używa tego wieżyczka bs_gadgets, zobacz bs_gadgets/server (klient znajduje cel, serwer sprawdza szybkostrzelność i amunicję, potem GadgetHit).

Przyciągnij szwendaczy do punktu:

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

Gadżet wabik wywołuje to przy każdym pulsie.

Dla skryptowanych rzeczy (używają tego fale hord bs_events):

-- 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)

Oznaczeni szwendacze pomijają odrzucanie z dala, dopóki są oznaczeni. Nadal liczą się do limitów puli, nie da się zespawnować ponad Streaming.PoolGuard.maxNetworked. I dolny próg spawnu (100 m od każdego gracza) nadal obowiązuje.

-- 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()
BagNa
bsZombiepedid rejestru. Jeśli jest, jest nasz
zType, zGait, zCrawl, zFeed, zReach, zState, zMhp, zGround, zApppedstan trybu sieciowego
bsZombieDeadpedsieciowe zwłoki

Nigdy sam nie usuwaj sieciowego szwendacza. Serwer śledzi nieoczekiwane usunięcia, tworzy szwendacza ponownie, jeśli gracz jest blisko, i oflaguje właściciela w bs_guard (zombie_entity_deleted). Jeśli mają zniknąć, użyj tagu zdarzenia i EventClear albo zapytaj rejestr.

Sprzątanie populacji w bs_world już pomija wszystko z bsZombie. Jeśli twój zasób też czyści pedy, najpierw sprawdź IsWalkerPed.

GlobalState.bsZombieMode to 'networked' albo 'legacy'. Większość eksportów działa tak samo w obu.