CN Ambulance — aperçu

CN Ambulance

Job EMS avec bridge ESX / QB / QBox, NUI, brancard, distress, facturation et anti combat-log. Fournit esx_ambulancejob.

Dépendances

  • Obligatoires : ox_lib, mysql-async (ou couche compatible MySQL.Async).
  • Ciblage (selon Config.Interaction) : qtarget, qb-target, ox_target, ou mode nui.
  • Inventaire / systèmes : configurés dans Config.Systems — ox_inventory, qb-inventory, qs, etc.
  • Optionnel : téléphone distress (ex. gksPhone), wasabi_crutch, envi-prescriptions, AdvancedParking, carburant / clés véhicules selon config.

Installation

  1. Conserver le nom de dossier cn-ambulance.
  2. Dans server.cfg : ensure ox_lib puis ensure cn-ambulance.
  3. Importer les items depuis items.lua (tables ox_inventory / qb_core / qbox).
  4. SQL optionnels dans _install_first/sql/ (audit factures, etc.) si vous activez les fonctionnalités correspondantes.
  5. Tables mort complète / anti combat-log : créées ou décrites selon config.lua.

Guide détaillé dans la ressource : install.md.

Configuration

  • Config.Frameworkauto, esx, qb, qbox.
  • Config.Interaction et Config.Systems — inventory, fuel, vehicleKeys.
  • Timers : Config.RespawnTimer, Config.BleedoutTimer, distress (Config.DistressControl, cooldown).
  • Facturation : Config.Billing, Config.BillingRealism.
  • Compat QB hospital : Config.QBHospitalAlert, Config.QBDoctorAlert, Config.QBGetDoctors.
  • Debug : Config.Debug avec scopes (revive, death, stretcher, etc.).

Écrans de mort

L’expérience « mort / agonisant » repose sur la logique client (functions.lua, client.lua) et l’UI NUI (web/), avec timers configurables.

  • Bleedout / respawn : Config.BleedoutTimer, Config.RespawnTimer — définissent le délai avant respawn forcé et les options affichées.
  • Last stand / crawl : Config.LastStand, Config.DisableLastStandCrawl.
  • Touches mort : Config.EnabledKeys.dead — touches autorisées à l’écran (ex. distress).
  • Couleur UI : Config.UIColor (thème interface mort / EMS).
  • Knockout : Config.KnockoutFeature et events associés (cn-ambulance:disableKnockoutLoop, etc.).
Les détails visuels (HTML/CSS) sont dans web/. Les notifications personnalisées sont documentées en commentaire dans client/client.lua (~ligne 96).

Exports & événements

Cette ressource s’intègre surtout via events et compatibilité hospital / esx_ambulancejob. Exemples côté client :

  • RegisterNetEvent('cn-ambulance:revive'), cn-ambulance:heal, cn-ambulance:notify
  • RegisterNetEvent('cn-ambulance:syncRequests') — dispatch demandes EMS
  • Événements brancard / drag patient : cn-ambulance:placeOnStretcher, cn-ambulance:dragPatient*
  • Compat QB : hospital:server:ambulanceAlert, hospital:server:SetDeathStatus, callbacks doctors

Côté serveur, prise en charge facturation, lit, inventaire ; exports tiers selon config (qb-management, inventaires, etc.).

State bags

La synchronisation de l’état « mort » avec le dispatch utilise une logique serveur/client cohérente avec les statebags Rockstar / OneSync (commentaires dans functions.lua / server.lua — évitement des courses entre setDeathStatus et distress).

Si vous étendez le script, préférez un seul flux serveur pour le statut mort et vérifiez les observateurs clients (timing statebag vs ped).

Personnalisations

  • Notifications : remplacer les appels dans client/client.lua par votre système.
  • Bridge : bridge/client.lua, bridge/server.lua, bridge/shared.lua.
  • Strings : strings.lua pour i18n.
  • NUI menu métier : client/nui_menu.lua + web/app.js.

Problèmes fréquents

  • Double job ambulance : désinstallez esx_ambulancejob si vous utilisez le provide de cn-ambulance.
  • Target invisible : vérifiez Config.Interaction et que la ressource target est démarrée avant.
  • Items manquants : copier depuis items.lua vers votre inventaire.
  • MySQL errors : vérifier que mysql-async est bien chargé et les tables SQL optionnelles importées.