Skip to main content

server/main.lua

Initiallisez la faction au joueur au joueur qui ce connecte

  • Query :

    • Au début de votre fichier vous avez cette variable :

      local loadPlayer = 'SELECT `accounts`, `job`, `job_grade`, `group`, `position`, `inventory`, `skin`, `loadout`'
    • Remplacez là par celle-ci :

      local loadPlayer = 'SELECT `accounts`, `job`, `job_grade`, `faction`, `faction_grade`, `group`, `position`, `inventory`, `skin`, `loadout`'
  • Les boucles:

    💡Savez vous que ...

    Vous pouvez chercher toute les boucles dans votre editeur de texte via ctrl+f copié : while not next(ESX.Jobs) do et remplacer par ceci : while not next(ESX.Jobs) and not next(ESX.Factions) do

    • Cherchez dans le fichier toute les boucles ci-dessous :

      while not next(ESX.Jobs) do
      Wait(50)
      end
    • Et remplacez les par ceci :

      while not next(ESX.Jobs) and not next(ESX.Factions) do
      Wait(50)
      end
  • Dans la function function loadESXPlayer(identifier, playerId, isNew)

    • Table userData

      • Remplacez la variable

        local userData = {accounts = {}, inventory = {}, job = {}, loadout = {}, playerName = GetPlayerName(playerId), weight = 0}
      • Par celle ci :

        local userData = {accounts = {}, inventory = {}, job = {}, faction = {}, loadout = {}, playerName = GetPlayerName(playerId), weight = 0}
    • Variable (faction, gradef, factionObject, gradefObject)

      • En dessous de :

        local job, grade, jobObject, gradeObject = result.job, tostring(result.job_grade)
      • Ajoutez ceci :

        local faction, gradef, factionObject, gradefObject = result.faction, tostring(result.faction_grade)
    • Charger la faction object pour le player object

      • Au dessus de :

        -- Job
        if ESX.DoesJobExist(job, grade) then
        jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade]
        else
        print(('[^3WARNING^7] Ignoring invalid job for ^5%s^7 [job: ^5%s^7, grade: ^5%s^7]'):format(identifier, job, grade))
        job, grade = 'unemployed', '0'
        jobObject, gradeObject = ESX.Jobs[job], ESX.Jobs[job].grades[grade]
        end
      • Ajoutez ceci :

        --Faction
        if ESX.DoesFactionExist(faction, gradef) then
        factionObject, gradefObject = ESX.Factions[faction], ESX.Factions[faction].grades[gradef]
        else
        print(('[^3WARNING^7] Ignoring invalid faction for %s [faction: %s, grade: %s]'):format(identifier, faction, gradef))
        faction, gradef = 'nofaction', '0'
        factionObject, gradefObject = ESX.Factions[faction], ESX.Factions[faction].grades[gradef]
        end

        userData.faction.id = factionObject.id
        userData.faction.name = factionObject.name
        userData.faction.label = factionObject.label

        userData.faction.grade = tonumber(gradef)
        userData.faction.grade_name = gradefObject.name
        userData.faction.grade_label = gradefObject.label
        userData.faction.grade_salary = gradefObject.salary

        userData.faction.skin_male = {}
        userData.faction.skin_female = {}

        if gradefObject.skin_male then
        userData.faction.skin_male = json.decode(gradefObject.skin_male)
        end
        if gradefObject.skin_female then
        userData.faction.skin_female = json.decode(gradefObject.skin_female)
        end
    • Ajoutez l'object faction sur la création du player objet

      • Trouvez cette variable :

        local xPlayer = CreateExtendedPlayer(playerId, identifier, userData.group, userData.accounts, userData.inventory, userData.weight, userData.job, userData.loadout, userData.playerName, userData.coords)
      • Puis remplacez là par celle-ci :

        local xPlayer = CreateExtendedPlayer(playerId, identifier, userData.group, userData.accounts, userData.inventory, userData.weight, userData.job, userData.faction, userData.loadout, userData.playerName, userData.coords)
    • Envoyez le player objet au client (ESX.PlayerData)

      • Trouvez la function ci-dessous :

        xPlayer.triggerEvent('esx:playerLoaded',
        {
        accounts = xPlayer.getAccounts(),
        coords = xPlayer.getCoords(),
        identifier = xPlayer.getIdentifier(),
        inventory = xPlayer.getInventory(),
        job = xPlayer.getJob(),
        loadout = xPlayer.getLoadout(),
        maxWeight = xPlayer.getMaxWeight(),
        money = xPlayer.getMoney(),
        sex = xPlayer.get("sex") or "m",
        firstName = xPlayer.get("firstName") or "John",
        lastName = xPlayer.get("lastName") or "Doe",
        dateofbirth = xPlayer.get("dateofbirth") or "01/01/2000",
        height = xPlayer.get("height") or 120,
        dead = false
        }, isNew, userData.skin)
      • Remplacez là par celle-ci :

        xPlayer.triggerEvent('esx:playerLoaded',
        {
        accounts = xPlayer.getAccounts(),
        coords = xPlayer.getCoords(),
        identifier = xPlayer.getIdentifier(),
        inventory = xPlayer.getInventory(),
        job = xPlayer.getJob(),
        faction = xPlayer.getFaction(),
        loadout = xPlayer.getLoadout(),
        maxWeight = xPlayer.getMaxWeight(),
        money = xPlayer.getMoney(),
        sex = xPlayer.get("sex") or "m",
        firstName = xPlayer.get("firstName") or "John",
        lastName = xPlayer.get("lastName") or "Doe",
        dateofbirth = xPlayer.get("dateofbirth") or "01/01/2000",
        height = xPlayer.get("height") or 120,
        dead = false
        }, isNew, userData.skin)
  • Vous pouvez modifier la function callback par défaut

    • Cherchez la fonction ESX.RegisterServerCallback('esx:getOtherPlayerData', function(source, cb, target) et Remplacez là par celle-ci

      ESX.RegisterServerCallback('esx:getOtherPlayerData', function(source, cb, target)
      local xPlayer = ESX.GetPlayerFromId(target)

      cb({identifier = xPlayer.identifier, accounts = xPlayer.getAccounts(), inventory = xPlayer.getInventory(), job = xPlayer.getJob(), faction = xPlayer.getFaction(), loadout = xPlayer.getLoadout(), money =xPlayer.getMoney(), position = xPlayer.getCoords(true)})
      end)
    • Cherchez la fonction ESX.RegisterServerCallback('esx:getPlayerData', function(source, cb) et Remplacez là par celle-ci

      ESX.RegisterServerCallback('esx:getPlayerData', function(source, cb)
      local xPlayer = ESX.GetPlayerFromId(target)

      cb({identifier = xPlayer.identifier, accounts = xPlayer.getAccounts(), inventory = xPlayer.getInventory(), job = xPlayer.getJob(), faction = xPlayer.getFaction(), loadout = xPlayer.getLoadout(), money =xPlayer.getMoney(), position = xPlayer.getCoords(true)})
      end)