Aller au contenu

API des zombies

bs_zombies est gros, mais ce dont les autres ressources ont besoin tient en une courte liste. Tout est sur la page API de bs_zombies avec fichier et ligne.

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 répondent aussi à partir du statebag bsZombie pour un ped en réseau que ce client n’a pas encore adopté. Utilisez-les, ne vérifiez pas les modèles, le modèle peut être celui de vanilla.

Autres helpers client : Live() (table des walkers adoptés), Count(), HostedCount(), HasWalker(id), IsBeingAttacked(), HordeActive(), PlayerProtectedInVehicle().

Le registre serveur possède la santé. Les dégâts client sont signalés par le tireur, mais pour quelque chose que vous possédez côté serveur (une tourelle, un piège), passez par :

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

Il vérifie que le walker est à moins de range de x, y. La tourelle de bs_gadgets l’utilise ; voyez bs_gadgets/server pour le déroulé (le client trouve la cible, le serveur vérifie cadence et munitions, puis GadgetHit).

Attirer des walkers vers un point :

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

Le gadget leurre l’appelle à chaque impulsion.

Pour les choses scénarisées (les vagues de horde de bs_events les utilisent) :

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

Les walkers taggés échappent au far-cull tant qu’ils sont taggés. Ils comptent toujours dans les plafonds du pool, vous ne pouvez pas spawner au-delà de Streaming.PoolGuard.maxNetworked. Et le plancher de spawn (100 m de chaque joueur) s’applique toujours.

-- 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()
BagSur
bsZombiepedid du registre. S’il est là, c’est le nôtre
zType, zGait, zCrawl, zFeed, zReach, zState, zMhp, zGround, zApppedétat du mode en réseau
bsZombieDeadpedcadavre en réseau

Ne supprimez jamais vous-même un walker en réseau. Le serveur suit les suppressions inattendues, recrée le walker si un joueur est proche et signale le propriétaire dans bs_guard (zombie_entity_deleted). Si vous devez les faire disparaître, utilisez le tag d’événement + EventClear, ou demandez au registre.

Le balayage de population de bs_world ignore déjà tout ce qui porte bsZombie. Si votre ressource nettoie aussi des peds, vérifiez d’abord IsWalkerPed.

GlobalState.bsZombieMode vaut 'networked' ou 'legacy'. La plupart des exports fonctionnent pareil dans les deux.