Créer un item utilisable (nourriture/boisson)

Food
Boisson
Unicorn
Item
ESX

#1

Bonjour à tous.

Comme la demande sur la création et l’utilisation d’item est souvent demandée, il me paraissait évident de créer un premier tutoriel sur cette nouvelle version de FiveM France qui en parle.

Le tutoriel va se découper en plusieurs étapes que vous pourrez trouver dans le sommaire qui va se trouver sous ce message, chaque étape du sommaire contiendra un lien qui vous mènera directement à la section qui vous intéresse.

C’est parti !

SOMMAIRE

PRÉ-REQUIS

Tout d’abord il faut avoir à disposition quelques addons ainsi que des connaissances dont voici la liste :

  • Une base en SQL
  • Une base en LUA (bien que, ne nous mentons pas, vous allez sans doute copier/coller l’exemple et le modifier)
  • es_extended (sinon à quoi ça sert de faire un tuto ESX)
  • esx_basicneeds
  • esx_optionalneeds (facultatif si vous voulez tout mettre dans basicneeds comme des sagouins)
  • esx_status

Nous voilà équipés pour attaquer le tutoriel.

MANGER, BOIRE, VOMIR

Avec ESX on a 3 paramètres qui entrent en compte pour la gestion de la faim, de la soif et du taux d’alcoolémie (après si vous voulez un jour faire un taux supplémentaire en fonction de votre niveau de défonce…)

  1. HUNGER (faim)
  2. THIRST (soif)
  3. DRUNK (saoul)

Ces trois barres sont initialisées avec une valeur de 1 000 000 par défaut (soit 100%)

Dans l’item qu’on va créer, on n’utilisera que les deux premiers parce que… Parce que. L’idée c’est que notre item va augmenter la faim et baisser la soif (en gros on aura - faim mais on aura + soif, vous me suivez ?)

C’est bon, c’est clair ? Next !

EXEMPLE

SQL

SET @NAME := "burgermin";
SET @LABEL := "Burger Minute";
SET @LIMIT := 100;

INSERT INTO `items` (`name`, `label`, `limit`) VALUES
(@NAME, @LABEL, @LIMIT);

Ici on ajoute l’item en DB, avec la structure la plus basique que la table items puisse avoir.

LUA

esx_basicneeds/server/main.lua

ESX.RegisterUsableItem('burgermin', function(source)
local xPlayer = ESX.GetPlayerFromId(source)

xPlayer.removeInventoryItem('burgermin', 1)

TriggerClientEvent('esx_status:add', source, 'hunger', 200000)
TriggerClientEvent('esx_status:remove', source, 'thirst', 5000)    
TriggerClientEvent('esx_basicneeds:onEat', source)
end)

Concrètement, qu’est-ce que je fais avec ce bout de code que vous allez copier/coller comme des cochons ? J’explique :

J’enregistre un item utilisable

ESX.RegisterUsableItem('burgermin', function(source)

A l’utilisation, je retire l’item de l’inventaire

xPlayer.removeInventoryItem('burgermin', 1)

Je rajoute 20% à la barre de faim

TriggerClientEvent('esx_status:add', source, 'hunger', 200000)

Je retire 5% à la barre de soif

TriggerClientEvent('esx_status:remove', source, 'thirst', 5000) 

Je joue l’animation par défaut de la faim telle que définie dans basicneeds

TriggerClientEvent('esx_basicneeds:onEat', source)

Une fois mes bouts de codes ajoutés, et mon serveur relancé, normalement en jeu quand je m’ajoute (ou achète) un item Burger Minute voici le résultat que je suis censé obtenir quand je le sélectionne dans mon inventaire :

firefox_9Cx7TbBCN9

J’en ai 100 sur moi, j’en utilise un, je passe à 99 et mes barres se remplissent/vident.

Vous avez saisi ? Donc pour m’assurer que vous avez bien compris la chose, que tout est ok pour vous, voici un exercice simple pour vous essayer à la chose !

EXERCICE

On va faire un truc simple, vous allez me créer un item tout bête (avec taux d’alcool ou non mais pour l’alcool optionalneeds est requis j’aime autant vous prévenir).

Je vous offre le choix entre un aliment ou une boisson, choisissez celui que vous voulez.

ALIMENT

Mon item doit rajouter 30% de faim et supprimer 10% de soif.

BOISSON

Mon item doit rajouter 15% de soif et supprimer 5% de faim.

BONUS STAGE

Mon item doit rajouter 10% de soif, supprimer 10% de faim et ajouter 5% d’alcool.

Vous êtes libres de poster vos codes exemples à la suite de ce tuto. Je vous rappelle que si vos questions ne portent pas sur le tutoriel en lui-même, toute demande d’aide qui sort du cadre de ce tutoriel doit être postée dans les sections de support prévues à cet effet, les messages qui n’ont pas de rapport avec ce que je vous ai expliqué (et vos exercices) seront supprimés.

Have fun :slight_smile:!


#2

Merci pour le tuto voici ma contribution qui j’espère est correct.

ALIMENT:

ESX.RegisterUsableItem(‘kebab’, function(source)
local xPlayer = ESX.GetPlayerFromId(source)

xPlayer.removeInventoryItem(‘kebab’, 1)

TriggerClientEvent(‘esx_status:add’, source, ‘hunger’, 300000)
TriggerClientEvent(‘esx_status:remove’, source, ‘thirst’, 100000)
TriggerClientEvent(‘esx_basicneeds:onEat’, source)
end)

BOISSON&BONUS:

ESX.RegisterUsableItem(‘vodkbull’, function(source)
local xPlayer = ESX.GetPlayerFromId(source)

xPlayer.removeInventoryItem(‘vodkbull’, 1)

TriggerClientEvent(‘esx_status:add’, source, ‘thirst’, 150000)
TriggerClientEvent(‘esx_status:remove’, source, ‘hunger’, 50000)
TriggerClientEvent(‘esx_status:add’, source, ‘drunk’, 50000)
TriggerClientEvent(‘esx_optionalneeds:onDrink’, source)
end)


a fermé ce sujet #6

Unicorn item