Système de Rechargement

Bonjour à tous,

Alors voila, je suis actuellement en train de réaliser un système de rechargement assez simple mais je rencontre un petit soucis, en effet j’ai recréer un blueprint “BaseArme” celui-ci contient toutes les variables et fonctions nécessaire au fonctionnement d’une arme, j’ai ensuite réaliser deux bluprint child “ak” “pistolet” auxquel j’ai régler des valeurs différentes dans la variable “munition” mais lorsque je recharge, par défaut la valeur de “munition” reviens à 30 ce qui empêche d’avoir des armes uniques…

J’ai l’impression que j’ai besoin d’une nouvelle variable type (int) “CapaciteChargeur” pour que chaque arme ais un chargeur différent, mais comment placer cette variable dans ce bazard ?

(j’ai mis un petit commentaire sur le node en question)

Hello !

De ce que je vois, tu as juste besoin de créer une nouvelle variable de type integer dans ton BaseArme pour la quantité de balle par chargeur, variable que tu met en instance editable.
Et ensuite tu get la variable que tu relie à la place de la valeur 30 dans ton subtract.
Ensuite faudra que tu définisse cette valeur par défaut dans chacun des child du BaseArme.

PS: Tu devrais nommer tes variables en anglais, c’est cours et plus pratique :stuck_out_tongue: .

Je crois que c’est ok, merci pour ta solution :slight_smile:

Concernant la solution :
. J’ai ajouter une variable de type int avec comme nom “CapaciteChagreur” ou “ClipSize” en anglais ^^’
. J’ai ajouté la variable en “get” et je l’ai mise à la place du “30” du node int-int
. J’ai mis sur chaque arme, la valeur souhaiter de “CapaciteChargeur”

. Il faut que “CapaciteChargeur” ai la même valeur que “Munition” car c’est “CapaciteChargeur” qui va remettre la valeur de munition après rechargement !

Je peut désormais avoir un chargeur unique pour chaque arme “30 balle pour un fusil d’assaut” “10 balles pour un pistolet”

Hum par contre tu peux optimiser ton code pour rendre ça plus court sans avoir besoin d’enregistrer une variable local:


Sinon tu peux sauvegarder un certain nombre d’info lié a chaque type d’arme, genre le model 3D a utiliser, le nombre de balle dans le chargeur, la puissance des balles, le recul de l’arme etc, tous ça ce sont des informations qui peut différer entre chaque arme et qui peuvent être enregistré sous forme de datatable ou data asset, de cette manière tu pourras faire charger et utiliser ces informations par le BaseArme.

Concrètement tu créé un enum genre E_WeaponType (le nom) et tu rentre dedans tous les types d’arme que tu veut faire.
image

Ensuite tu créé un struct genre Struct_WeaponType, et tu lui met tous les variables qui constitue des informations par type d’arme, genre MagazineSize en integer etc.
image

Puis tu créé une datatable a partir de la structure que tu viens de créer, genre Data_WeaponType, et sur chaque ligne tu met les informations de tes types d’arme et dans le Row Name tu met la même chose que dans le enum, genre si ta fait ton enum:
WeaponType_Handgun, WeaponType_AK47, WeaponType_SniperRifle etc, du coup tu remet la même chose dans le RowName du datatable, ce qui permet de faire le lien entre l’enum et la datatable.
image

Ensuite tu créé une variable WeaponType du type de l’enum (E_WeaponType) et WeaponData du type de la structure (Struct_WeaponType) dans ton BaseArme, et du coup dans chacun des blueprint child de BaseArme tu pourras définir le WeaponType.

Et enfin tu créé un fonction pour charger les donnés de la Datatable et stocker ces informations dans la variable créé juste avant WeaponData.

Il te manquera plus qu’a charger cette fonction au début du BeginPlay par exemple dans le BaseArme.
Et du coup ensuite, t’aura plus besoin d’avoir plein de variable a modifier la valeur directement dans le blueprint de l’arme, mais a la place tout centralisé dans le Datatable.

Et du coup pour ta fonction Recharger avec tous ça pris en compte ça donnera ça:

Rien de bien transcendant ici, mais au moins ta accès rapidement aux infos et tu pourras ajouter, modifier ou supprimer des info comme bon te semble directement dans le Structure, puis remplir dans le datatable, et avoir accès dans le BaseArme.

Merci énormément pour ton astuce, je pense que cela me sera bien utile et sa me feras bien progresser, je suis en train de le mettre en place dans mon projet “main”, je fait très attention car j’ai peur de tout casser ^^’

Il est possible d’utiliser mon blueprint de base ? celui déjà créer pour le mettre directement dans mon “WeaponBase” ou “WeaponData” car j’ai réaliser beaucoup de variables etc… et sa ne serais pas pratique de tout refaire manuellement.

De rien !
Heu par contre j’ai pas compris ce que tu voulais dire, ton blueprint de base, tu parle duquel ?
Et ensuite tu parle de WeaponBase ou WeaponData, mais de ce que tu as dis ou montré tu n’as pas de WeaponBase, du coup je suis perdu ^^'.

Désolé je m’y perd un peu, je voulais dire dans le WeaponType, est-il possible d’importer les variables déjà créer dans mon blueprint “BaseArme” ?

Alors importer si tu parle avec un bouton, un glisser déplacer ou quelque chose du genre non je crois pas, si tu parle manuellement, oui tu peux remettre les mêmes, tant que les variable on un intérêt d’être mis dans le database, une variable qui ne changerais jamais entre les types d’arme n’aurait pas d’intérêt a être dans le WeaponType.

C’est a dire que Munition par exemple tu le garde dans ton blueprint, mais MunitionMax, NomArme, Cadence, CadenceMax, CapaciteChargeur, IsTirAuto? ça tu peux le mettre dans le WeaponType. Par contre, une fois que tu utilise la database pour cela, tu pourras supprimer ces variables, vue que tous leur info sera contenu dans la variable WeaponData, donc quoi qu’il arrive faudra modifier tous le code ou ces variables sont utilisées pour remplacer par l’info du WeaponData (utilise le node Break pour récupérer chaque info).

Après perso j’aurai fait plutôt des data assets pour ça a la place d’une datatable, mais vye que a l’air de débuter, commencer par les datatables c’est jamais une mauvaise idée n_n.

Merci pour les infos ! oui je débute et je ne connais même pas encore tous les termes technique du moteur, je vais tenter de suivre le petit tuto que tu as fait dans le post plus haut et y aller pas à pas pour ne pas tout casser.

Pour ce qui est de remettre chaque variables dans les Blueprint correspondant sa me fait moins peur, c’est beaucoup plus simple.