Jump to content
Search In
  • More options...
Find results that contain...
Find results in...
Bienvenue Guest!

Rejoignez la communauté pour avoir accès à l'entièreté du site! Une fois que vous serez enregistré, vous pourrez créer, aider, partager et discuter avec les membres de la communauté et également participer à l'amélioration du site. Alors, qu'attendez vous ? Enregistrez-vous !

Sign in to follow this  
Kanda Sorata

intermédiaire Avoir le poids de esx_jb_truck par véhicule

Recommended Posts

Kanda Sorata

Niveau requis : Intermédiaire

 

Informations :

 

Avec ce tutoriel, vous serez en mesure de définir le poids de chaque véhicule séparément par modèle et non plus par type de véhicule dans le script suivant :

 

 

I. Modification du fichier config.lua

Révélation

A. Étape 1

Révélation

Tout d'abord, nous commencerons par modifié le fichier config.lua du script. Ce qui nous intéresse est la table Config.VehicleLimit.
Elle est actuellement composée comme suit :


Config.VehicleLimit = {
    [0] = 30000, --Compact
    [1] = 40000, --Sedan
    [2] = 70000, --SUV
    [3] = 25000, --Coupes
    [4] = 30000, --Muscle
    [5] = 10000, --Sports Classics
    [6] = 5000, --Sports
    [7] = 5000, --Super
    [8] = 5000, --Motorcycles
    [9] = 180000, --Off-road
    [10] = 300000, --Industrial
    [11] = 70000, --Utility
    [12] = 100000, --Vans
    [13] = 0, --Cycles
    [14] = 5000, --Boats
    [15] = 20000, --Helicopters
    [16] = 0, --Planes
    [17] = 40000, --Service
    [18] = 40000, --Emergency
    [19] = 0, --Military
    [20] = 300000, --Commercial
    [21] = 0, --Trains
}

 

Il va donc falloir la modifié de sorte à ce qu'elle ressemble à celle-ci :
 


Config.VehicleLimit = {
    T20 = 30000,
    SEMINOLE = 40000,
    SULTAN = 70000,
    SULTANRS = 25000,
    VEHICLEX = 30000,
    VEHICLEX2 = 10000,
    VEHICLEX3 = 5000,
[...]
}

Une fois cette modification apportée, nous pouvons passer à l'étape suivante !

 

 

 

 

II. Modification du client.lua

Révélation

A. Étape 1 - La fonction VehicleInFront()

Révélation

Nous allons donc nous diriger dans le fichier client/client.lua du script et modifier la fonction VehicleInFront comme ceci :

 


function VehicleInFront()
    local pos = GetEntityCoords(GetPlayerPed(-1))
    local entityWorld = GetOffsetFromEntityInWorldCoords(GetPlayerPed(-1), 0.0, 4.0, 0.0)
    local rayHandle = CastRayPointToPoint(pos.x, pos.y, pos.z, entityWorld.x, entityWorld.y, entityWorld.z, 10, GetPlayerPed(-1), 0)
	local a, b, c, d, result = GetRaycastResult(rayHandle)
	if DoesEntityExist(result) then
		return result
	end
end

pour ajouter une sécurité et toujours être sur que l'entité que la fonction nous retourne existe dès qu'on cherche en face de nous.
Cette fonction sers à récupérer une entité devant le joueur, elle peut renvoyer diverses valeurs lorsque modifiées correctement, comme les peds, les joueurs, les murs etc.
Contrairement à la native GetClosestVehicle(...) qui ne retourne pas tous les véhicules (hélicos,bateaux et/ou certaines motos ou quad), elle récupère absolument tous les véhicules, aussi bien les aéronefs que les deux roues, ou les véhicules d'urgences ou encore les bateaux.

 

B. Étape 2 - La fonction openmenuvehicle()

Révélation

Toujours le fichier client/client.lua nous allons donc modifier notre deuxième fonction, la fonction openmenuvehicle() et nous allons la modifiée légèrement.

 

  • Commençons par modifié la ligne 90 qui, originalement contient ceci en code :

local vehicle   =VehicleInFront()

Nous modifierons cette ligne pour qu'elle devienne ceci :


local vehFront = VehicleInFront()

Ceci nous permettra de retirer plus tard une autre variable qui est en "trop". Ce code stock dans une variable (ici VehFront) le résultat de la fonction que nous précédemment modifié. En règle général, c'est une série de chiffre qu'elle renvoi, différente en fonction du véhicule que nous regardons. On appelle ça le hash du véhicule.

 

 

  • Nous allons ensuite ajouté une ligne après la ligne 90, sur laquelle nous ajouterons ce code :

local vehModele = GetDisplayNameFromVehicleModel(GetEntityModel(vehFront))

Ce code permet de récupérer le modèle du véhicule que nous regardons, en nous servant de la variable précédente VehFront. Nous utilisons pour cela deux natives, qui sont assez parlantes lorsque vous les lisez.

 

  • Ligne 92, modifiez la variable utilisez dans la native par celle-ci : vehFront . La ligne ressemblera donc à ça :

globalplate  = GetVehicleNumberPlateText(vehFront)

 

  • Rendez-vous ensuite à la ligne 98 afin d'y trouver ce code :

local vehFront = VehicleInFront()

Supprimez le ! Nous n'en avons plus besoin désormais puisque cette variable est désormais stockée au début de la fonction.

 

  • Retrouvons nous ensuite à la ligne 102 et 104, où nous trouverons ce code :

local model = GetDisplayNameFromVehicleModel(GetEntityModel(closecar)) --Ligne 102

local class = GetVehicleClass(vehFront) --Ligne 104

Supprimez également ces lignes.

 

  • Maintenant, à la ligne 107 qui correspond à celle-ci :

if locked == 1 or class == 15 or class == 16 or class == 14 then

Cette condition vérifie si le véhicule est verrouiller et si le véhicule est un hélicoptère, bateau, ou moto. Nous allons la modifier plus simplement, et comme nous ne regardons plus la classe des véhicules, de façon fonctionnelle. Pour ceci nous utiliserons un booléen grâce à la native IsThisModelACar.
 


 if locked == 1 or IsThisModelACar(vehModel) then

Tout simplement.

 

C'est désormais fini pour cette fonction !

 

C. Étape 3 - L'event esx_truck_inventory:getInventoryLoaded

Révélation
  • Pour cette troisième étape, nous nous rendons à la ligne 299 et ensuite à la ligne 395, où ce trouve cette variable :

local typeVeh = GetVehicleClass(vehFront)

Que nous modifierons, afin de ne plus récupérer la classe du véhicule, qui désormais est obsolète, mais à nouveau le modèle de celui-ci. Pour ce faire, rien de plus simple il suffit de ré-utiliser les natives déjà utilisées plus tôt, de sorte à ce que la variable, ressemble à ceci :


local typeVeh = GetDisplayNameFromVehicleModel(GetEntityModel(vehFront))

 

 

Et c'est tout ! Vous avez désormais terminé de modifié le script !

 

Conclusions :

Vous pouvez désormais configurer le poids de chaque véhicule indépendamment, sachez que cela risque d'être long, puisque je n'ai pas de liste pré-faire à vous fournir.


Cependant je peut vous conseiller d'utiliser ce bout de code pour connaître le modèle du véhicule.

Révélation


local testvar = GetDisplayNameFromVehicleModel(GetEntityModel(vehFront))
ESX.ShowNotification("Modèle du véhicule : "..testvar)

Ajoutez ce code par exemple dans la fonction VehicleInFront, comme ceci :

 

function VehicleInFront()
    local pos = GetEntityCoords(GetPlayerPed(-1))
    local entityWorld = GetOffsetFromEntityInWorldCoords(GetPlayerPed(-1), 0.0, 4.0, 0.0)
    local rayHandle = CastRayPointToPoint(pos.x, pos.y, pos.z, entityWorld.x, entityWorld.y, entityWorld.z, 10, GetPlayerPed(-1), 0)
	local a, b, c, d, result = GetRaycastResult(rayHandle)
	if DoesEntityExist(result) then
		ESX.ShowNotification("Modèle du véhicule : "..GetDisplayNameFromVehicleModel(GetEntityModel(result)))
		return result
	end
end


 

 

/!\ Attention toute fois, les noms doivent exactement correspondre à ce qui vous sera affiché en jeu (donc en majuscule, prioritairement) /!\

 

 

image.png

 

 

Share this post


Link to post
Share on other sites
loumani

Pour information cela fonctionne parfaitement bien merci a toi, je vais faire une petite "base de donnée" avec les véhicules vanilla pour ceux qui le souhaite contactez moi :D

Share this post


Link to post
Share on other sites
Kanda Sorata

Pas de soucis, n'hésite pas à la partager ici si tu en as envie ;)

Share this post


Link to post
Share on other sites
loumani

je rencontre un petit pb : Pour les bateaux quoi qu'il arrive il me dis ce coffre est fermé 

Share this post


Link to post
Share on other sites
loumani

Bon je rencontre un probléme domage pour faire une base de donner propre, en effet les Bateaux - Remorque - Hélicopter - avions, leurs coffres son fermés qu'oi qu'il arrive ce qui est domage surtout pour les remorque et les bateaux 

 

Share this post


Link to post
Share on other sites
JagerBom
Il y a 3 heures, loumani a dit :

Bon je rencontre un probléme domage pour faire une base de donner propre, en effet les Bateaux - Remorque - Hélicopter - avions, leurs coffres son fermés qu'oi qu'il arrive ce qui est domage surtout pour les remorque et les bateaux 

 

je sais pas si ils ont des coffres

sinon t'as qu'a faire, si le type de vehicule est bateau ou avion, alors ouvre le coffre

 

Share this post


Link to post
Share on other sites
loumani
il y a 3 minutes, JagerBom a dit :

je sais pas si ils ont des coffres

sinon t'as qu'a faire, si le type de vehicule est bateau ou avion, alors ouvre le coffre

 

Oui c'est ce que je vais faire, de base il ont pas de réel coffre mais parlant logique une remorque est un coffre a lui seul mdr :D

Share this post


Link to post
Share on other sites
Kanda Sorata

Retirer cette partie devrait corriger le problème de la condition :

 

or IsThisModelACar(vehModel)

 

Share this post


Link to post
Share on other sites
loumani

LE fait de retirer

IsThisModelACar(vehModel)

, fait juste que tu as plus le essage qui dis que 'est fermé mais tu y a toujours pas acces

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

En utilisant ce site, vous acceptez les présents règlements Terms of Use, Privacy Policy,Guidelines.