Bonjour les joueurs de FiveM ! Bienvenue dans ce didacticiel sur la façon de convertir des scripts ESX en QBCore (et vice versa). Si vous connaissez FiveM, vous savez probablement qu'ESX est l'un des frameworks les plus populaires utilisés pour créer des scripts et des mods. Cependant, récemment, un nouveau framework appelé QBCore a gagné en popularité, offrant une gamme de fonctionnalités et d'améliorations intéressantes.
La conversion de vos scripts ESX vers QBCore peut apporter de nombreux avantages, tels que l'amélioration des performances et des fonctionnalités, et l'accès à une communauté croissante de développeurs QBCore.
NOUVEAU : Nous avons lancé un outil de conversion – cliquez ici pour le découvrir !
Table des matières
Liste complète des fonctions
Il s'agit d'une liste pour la conversion des scripts (fonctions pour le client et le serveur).
Mise à jour : octobre 2023
Côté client
esx:onPlayerDeath -> hospital:server:SetDeathStatus esx:playerLoaded -> QBCore:Client:OnPlayerLoaded esx:showAdvancedNotification -> QBCore:Notify esx:showHelpNotification -> QBCore:Notify esx:showNotification -> QBCore:Notify ESX.GetPlayerData -> QBCore.Functions.GetPlayerData ESX.IsPlayerLoaded -> None ESX.SetPlayerData -> QBCore:Player:SetPlayerData ESX.TriggerServerCallback -> QBCore.Functions.TriggerCallback ESX.Game.DeleteObject -> None (Peut utiliser le DeleteEntity natif de FiveM) ESX.Game.DeleteVehicle -> QBCore.Functions.DeleteVehicle ESX.Game.GetClosestObject -> Aucun (Peut utiliser la fonction native FiveM GetClosestObjectOfType) ESX.Game.GetClosestPed -> QBCore.Functions.GetClosestPed ESX.Game.GetClosestPlayer -> QBCore.Functions.GetClosestPlayer ESX.Game.GetClosestVehicle -> QBCore.Functions.GetClosestVehicle ESX.Game.GetObjects -> None (utilise l'énumération) ESX.Game.GetPedMugshot -> Aucun (peut utiliser le RegisterPedheadshot natif de FiveM) ESX.Game.GetPeds -> Aucun (utilise l'énumération) ESX.Game.GetPlayers -> QBCore.Functions.GetPlayers ESX.Game.GetPlayersInArea -> Aucun (utilise l'énumération) ESX.Game.GetVehicleInDirection -> Aucun (utilise le lancer de rayon) ESX.Game.GetVehicles -> QBCore.Functions.GetVehicles ESX.Game.GetVehiclesInArea -> Aucun (utilise l'énumération) ESX.Game.IsSpawnPointClear -> Aucun (utilise getvehiclesinarea) ESX.Game.SetVehicleProperties -> QBCore.Functions.SetVehicleProperties ESX.Game.GetVehicleProperties -> QBCore.Functions.GetVehicleProperties ESX.Game.SpawnLocalObject -> None (pas la peine) ESX.Game.SpawnLocalVehicle -> Aucun (pas la peine) ESX.Game.SpawnObject -> None (peut utiliser FiveM Native CreateObject) ESX.Game.SpawnVehicle -> QBCore.Functions.SpawnVehicle ESX.Game.Teleport -> (peut utiliser SetEntityCoords et SetEntityHeading natifs de FiveM) ESX.Game.Utils.DrawText3D -> QBCore.Functions.DrawText3D
Côté serveur
ESX.CreatePickup -> None (non pertinent et réalisé par qb-inventory) ESX.GetItemLabel -> None (renvoie juste l'étiquette de l'article) ESX.GetPlayerFromId -> QBCore.Functions.GetPlayer ESX.GetPlayerFromIdentifier -> QBCore.Functions.GetPlayerByCitizenId ESX.GetPlayers -> QBCore.Functions.GetPlayers ESX.RegisterServerCallback -> QBCore.Functions.CreateCallback ESX.RegisterUsableItem -> QBCore.Functions.CreateUseableItem ESX.SavePlayer -> QBCore.Player.Save ESX.SavePlayers -> None (pas la peine) ESX.Trace -> Utilise QBCore.Debug mais ne se donne pas la peine de le convertir ESX.UseItem -> QBCore.Functions.UseItem
xPlayer
xPlayer.addAccountMoney -> xPlayer.Functions.AddMoney (account) xPlayer.addInventoryItem -> xPlayer.Functions.AddItem (nom de l'objet) xPlayer.addMoney -> xPlayer.Functions.AddMoney (cash) xPlayer.addWeapon -> xPlayer.Functions.AddItem (nom de l'arme) xPlayer.addWeaponAmmo -> xPlayer.Functions.AddItem (nom de la munition) xPlayer.addWeaponComponent -> xPlayer.Functions.AddItem (nom du composant) xPlayer.canCarryItem -> None (xPlayer.Functions.AddItem vérifie déjà ceci) xPlayer.canSwapItem -> None (xPlayer.Functions.AddItem vérifie déjà ceci) xPlayer.getAccount -> None (utilise les données du joueur) xPlayer.getAccounts -> Aucun (utiliser les données du joueur) xPlayer.getCoords -> None (Peut utiliser FiveM Native GetEntityCoords) xPlayer.getGroup -> xPlayer.Functions.GetPermission xPlayer.getIdentifier -> xPlayer.Functions.GetIdentifier xPlayer.getInventory -> QBCore.Player.LoadInventory xPlayer.getInventoryItem -> xPlayer.Functions.GetItemByName xPlayer.getJob -> None (utilise les données du joueur) xPlayer.getLoadout -> None (fuck loadouts) xPlayer.getMoney -> Aucun (utiliser les données du joueur) xPlayer.getName -> Aucun (utiliser les données du joueur) xPlayer.getWeapon -> xPlayer.Functions.GetItemByName (nom de l'arme) xPlayer.getWeight -> xPlayer.Player.GetTotalWeight xPlayer.hasWeapon -> xPlayer.Functions.GetItemByName (nom de l'arme) xPlayer.hasWeaponComponent -> xPlayer.Functions.GetItemByName (nom du composant) xPlayer.kick -> xPlayer.Functions.Kick xPlayer.removeAccountMoney -> xPlayer.Functions.RemoveMoney (account) xPlayer.removeInventoryItem -> xPlayer.Functions.RemoveItem (nom de l'objet) xPlayer.removeMoney -> xPlayer.Functions.RemoveMoney (cash) xPlayer.removeWeapon -> xPlayer.Functions.RemoveItem (nom de l'arme) xPlayer.removeWeaponAmmo -> xPlayer.Functions.RemoveItem (nom de la munition) xPlayer.removeWeaponComponent -> xPlayer.Functions.RemoveItem (nom du composant) xPlayer.setAccountMoney -> xPlayer.Functions.SetMoney (account) xPlayer.setCoords -> None (utilisé pour la téléportation) xPlayer.setInventoryItem -> xPlayer.Functions.AddItem (nom de l'objet) xPlayer.setJob -> xPlayer.Functions.SetJob xPlayer.setMaxWeight -> None (Il est défini dans la configuration de qb-core) xPlayer.setMoney -> xPlayer.Functions.SetMoney xPlayer.setName -> None (pas la peine) xPlayer.setWeaponTint -> None (qb-weapons le fait) xPlayer.showHelpNotification -> TriggerClientEvent('QBCore:Notify') xPlayer.showNotification -> TriggerClientEvent('QBCore:Notify') xPlayer.triggerEvent -> None (pas la peine) xPlayer.updateCoords -> Aucun (pas la peine)
Evénements
esx:getSharedObject -> QBCore:GetObject esx:setJob -> QBCore:Client:OnJobUpdate esx:onPlayerSpawn -> QBCore:Client:OnPlayerLoaded playerSpawned -> QBCore:Client:OnPlayerLoaded (compatibilité avec le spawnmanager) esx:addInventoryItem -> QBCore:Server:AddItem esx:removeInventoryItem -> QBCore:Server:RemoveItem esx:useItem -> QBCore:Server:UseItem MySQL.Async.fetchScalar() -> exports['ghmattimysql']:scalar() ou QBCore.Functions.ExecuteSql(true, MySQL.Async.fetchAll() -> exports['ghmattimysql']:execute() ou QBCore.Functions.ExecuteSql(true, MySQL.Async.execute() -> exports['ghmattimysql']:execute() ou QBCore.Functions.ExecuteSql(false,
Tutoriel de conversion
Pour convertir les scripts, il suffit d'utiliser la fonction distincte mentionnée plus haut. QBCore partage des fonctions similaires à celles d'ESX, mais avec des noms différents.