Inscrit le: 21 Avr 2008 Messages: 1607 Sujets: 81 Spécialité en worldedit: Utiliser le travail des autres Médailles: 3 (En savoir plus...)
Posté le: 17/10/08 12:18 Sujet du message: Inventaire à 12 slots en GUI
Ce tutos est encore en construction, surtout par rapport aux explications encore un peu confuses. Si ça va vraiment pas, dites le, je ferais mon possible le plus rapidement possible.
Introduction : Ce tutorial fait suite au sujet que j'ai posté dans la rubrique déclencheur. Je voudrais remercier Radhamante pour m'avoir expliqué le principe de son système d'inventaire de SaMapSansNom.
J'ai cherché à faire ce système parcequ'il est très rapide à utiliser en combat. 1 seul click et on chage d'inventaire spontanément tout en gardant les bonus passifs. Ce qui n'est pas le cas dans beaucoup de systèmes que j'ai testé.
Niveau: Connaissance moyenne en gui et de l'éditeur d'objet. Tout sera tenté pour être expliqué de manière à être compris d'un débutant qui comprend les grosses bases du gui.
I\ Le fonctionnement de la compétence Inventaire.
Je vais essayer d'expliquer le fonctionnement de cette compétence un peu particulière.
a) Principes
L'inventaire sert à stocker des objets (héhéhé... []). Plusieurs options sont disponibles: si l'unité peut se servir des objets, le nombre de slots disponibles (case pour mettre un objet) ect...
Si on ajoute une compétence Inventaire (Héro) à un Héro, les 2 inventaires vont se superposer. L'unité aura donc 12 slots diponibles.
Pourquoi faire un tuto alors? Parceque si on fait ça, on ne pourra plus accéder aux 6 premiers items qui auront été stocker dans l'inventaire "du dessous", très embêtant pour des items à compétences actives.
Imaginez un gateau mille-feuilles. Les inventaires sont la pâte et les objets sont la crême. On place une feuille de pâte, puis de la crême, encore une feuille encore de la crême.
Que faut-il faire si on veut revoir la première couche de crême?
-Enlever la crême du dessus et la deuxième feuille de pâte.
b)Concrètement
Nous allons donc ajouter une deuxième compétence inventaire à notre Héro. Cependant, il faudra pouvoir revenir d'un inventaire à l'autre pour utiliser les objets actifs, tout en gardant les bonus des objets passifs.
Pour moi, cela reviens à faire le ménage dans les inventaires, à placer les objets ailleurs, enlever les inventaires, puis remettre le bon inventaire avec les bons objets, puis l'autre inventaire avec ses objets. WE va faire ça pour nous, tellement vite qu'on ne se rendra compte de rien.
II\ Mise en place
a) L'éditeur d'objets
Je rajoute un inventaire lorsque le héro acquiert un objet nommé Sac...
J'ai pris le Gantelet de force (parceque j'aime bien la force...) et j'ai supprimé le bonus de +3 en force.
b) L'éditeur de compétences
16 compétences sont à prévoir, pour voir les champs personnalisés, regardez la map exemple.
-Bag Inventory
-Hero Inventory
Sont des compétences basées su Canaliser.
-Inventaire (Sac), (Supplémentaire)
2 compétences copiées de Inventaire (Héro), seul le suffixe éditeur est modifié.
-Inventaire (1), (2), (3), (4), (5), (6)
6 compétences copiées de Inventaire (Héro) avec un nombre de slots variant de 1 à 6. Pourquoi? Parceque ce sont les inventaires du dessous, ceux que l'on va ajouter en premier. Si le héro ne porte que 2 objets et que l'on mets ces objets dans un inventaire à 6 slots, les prochain objets pris iront dans ces slots libre, et pas dans les slots de l'inventaire du dessus. C'est compris?
-Livre de inventaire (1), (2), (3), (4), (5), (6)
Basées sur Livre de Sorts, elles contiennent les compétences ci dessus.
c) Les Variables
Nous allons avoir besoin de 5 variables:
-NumberItem
-NumberItem_Bag
-NumberItem_Hero
Sont des variables Entier sans déploiement avec 0 comme valeur initial.
-SlotsInventaire_Bag
-SlotsInventaire_Hero
Sont des variables Objet avec 6 déploiements.
III\ Les déclencheurs
C'est là qu'il faut s'accrocher un peu, pas pour la difficulté, mais parcequ'on va faire 2 déclos qui doivent absolument fonctionner en association. Ne ratez pas une ligne!
Les premiers, où l'on va désactiver les compétences livre inventaire et où le héro va prendre l'item Sac.
Secret:
Gui:
Trigger:
Initialization
Evénements
Map initialization
Conditions
Actions
Joueur - Désactiver Livre de inventaire 1 for Joueur 1 (Rouge) Joueur - Désactiver Livre de inventaire 2 for Joueur 1 (Rouge) Joueur - Désactiver Livre de inventaire 3 for Joueur 1 (Rouge) Joueur - Désactiver Livre de inventaire 4 for Joueur 1 (Rouge) Joueur - Désactiver Livre de inventaire 5 for Joueur 1 (Rouge) Joueur - Désactiver Livre de inventaire 6 for Joueur 1 (Rouge)
Secret:
Gui:
Trigger:
Add sac
Evénements
Unité - A unit Acquiert un objet
Conditions
(Item-type of (Item being manipulated)) Egal à Sac
Actions
Déclencheur - Turn off (This trigger) Unité - Add Bag inventory to (Triggering unit)
Gui:
Trigger:
Déclencheur - Turn off (This trigger)
Très important car mon système ne marche que pour un Sac. J'ai dis 12 slots, pas 18.
Remarque: On peut aussi remove l'item Sac.
Le deuxième ou le héro utilise la compétence Bag Inventory.
Secret:
Gui:
Trigger:
Use Bag inventory
Evénements
Unité - A unit Initie l'effet d'une compétence
Conditions
(Ability being cast) Egal à Bag inventory
Actions
-------- On compte le nombre d'objet portés par le héro -------- Set NumberItem = (Number of items carried by (Triggering unit)) -------- On va référencer les objets de l'inventaire du dessus et les déplacer pour chaque slots --------
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Set PointItem = (Random point in Bag Inventory 1 <gen>) Set SlotsInventaire_Hero[(Integer A)] = (Item carried by (Triggering unit) in slot (Integer A)) Objet - Move SlotsInventaire_Hero[(Integer A)] to PointItem Custom script: call RemoveLocation( udg_PointItem )
-------- On enlève l'inventaire du dessus -------- Unité - Remove Inventaire (Héros) from (Triggering unit) -------- On calcul le nombre d'items portés par le héro dans chaque inventaire -------- Set NumberItem_Bag = (Number of items carried by (Triggering unit)) Set NumberItem_Hero = (NumberItem - NumberItem_Bag) -------- On va référencer les objets de l'inventaire du dessous et les déplacer pour chaque slots --------
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Set PointItem = (Random point in Bag Inventory 1 <gen>) Objet - Move SlotsInventaire_Bag[(Integer A)] to PointItem Custom script: call RemoveLocation( udg_PointItem )
-------- On enlève l'inventaire du dessous -------- Unité - Remove Inventaire (Sac) from (Triggering unit) Unité - Remove Inventaire (Supplémentaire) from (Triggering unit) Unité - Remove Livre de inventaire 1 from (Triggering unit) Unité - Remove Livre de inventaire 2 from (Triggering unit) Unité - Remove Livre de inventaire 3 from (Triggering unit) Unité - Remove Livre de inventaire 4 from (Triggering unit) Unité - Remove Livre de inventaire 5 from (Triggering unit) Unité - Remove Livre de inventaire 6 from (Triggering unit) -------- La, on va ajouter un inventaire du dessous précis en fonction du nombre d'objets de l'inventaire du dessus précédent --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Hero Egal à 1
Alors - Actions
-------- On ajoute l'inventaire du dessous -------- Unité - Add Livre de inventaire 1 to (Triggering unit) -------- On ajoute les items de l'inventaire du dessus précédent en premier, pour qu'ils soit dessous --------
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
-------- On ajoute l'inventaire du dessus -------- Unité - Add Inventaire (Sac) to (Triggering unit) -------- On ajoute les items de l'inventaire du dessous précédent en deuxième, pour qu'ils soit dessus --------
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Hero Egal à 0
Alors - Actions
Unité - Add Inventaire (Sac) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Hero Egal à 2
Alors - Actions
Unité - Add Livre de inventaire 2 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Sac) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Hero Egal à 3
Alors - Actions
Unité - Add Livre de inventaire 3 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Sac) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Hero Egal à 4
Alors - Actions
Unité - Add Livre de inventaire 4 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Sac) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Hero Egal à 5
Alors - Actions
Unité - Add Livre de inventaire 5 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Sac) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Hero Egal à 6
Alors - Actions
Unité - Add Livre de inventaire 6 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Sac) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Sinon - Actions
Unité - Remove Bag inventory from (Triggering unit) Unité - Add Hero inventory to (Triggering unit)
Le troisième où l'on utilise la compétence Hero Inventory. C'est quasiment un copier coller du précédent, on inverse juste tout ce qui concerne Bag et Hero. Les commentaires sont les mêmes.
Secret:
Gui:
Trigger:
Use Hero inventory
Evénements
Unité - A unit Initie l'effet d'une compétence
Conditions
(Ability being cast) Egal à Hero inventory
Actions
Set NumberItem = (Number of items carried by (Triggering unit))
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Set SlotsInventaire_Bag[(Integer A)] = (Item carried by (Triggering unit) in slot (Integer A)) Set PointItem = (Random point in Hero Inventory 1 <gen>) Objet - Move SlotsInventaire_Bag[(Integer A)] to PointItem Custom script: call RemoveLocation( udg_PointItem )
Unité - Remove Inventaire (Sac) from (Triggering unit) Set NumberItem_Hero = (Number of items carried by (Triggering unit)) Set NumberItem_Bag = (NumberItem - NumberItem_Hero)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Set PointItem = (Random point in Hero Inventory 1 <gen>) Objet - Move SlotsInventaire_Hero[(Integer A)] to PointItem Custom script: call RemoveLocation( udg_PointItem )
Unité - Remove Livre de inventaire 6 from (Triggering unit) Unité - Remove Livre de inventaire 1 from (Triggering unit) Unité - Remove Livre de inventaire 2 from (Triggering unit) Unité - Remove Livre de inventaire 3 from (Triggering unit) Unité - Remove Livre de inventaire 4 from (Triggering unit) Unité - Remove Livre de inventaire 5 from (Triggering unit)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Bag Egal à 1
Alors - Actions
Unité - Add Livre de inventaire 1 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Supplémentaire) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Bag Egal à 0
Alors - Actions
Unité - Add Inventaire (Héros) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Bag Egal à 2
Alors - Actions
Unité - Add Livre de inventaire 2 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Supplémentaire) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Bag Egal à 3
Alors - Actions
Unité - Add Livre de inventaire 3 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Supplémentaire) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Bag Egal à 4
Alors - Actions
Unité - Add Livre de inventaire 4 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Supplémentaire) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Bag Egal à 5
Alors - Actions
Unité - Add Livre de inventaire 5 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Supplémentaire) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
NumberItem_Bag Egal à 6
Alors - Actions
Unité - Add Livre de inventaire 6 to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Bag[(Integer A)] to (Triggering unit)
Unité - Add Inventaire (Supplémentaire) to (Triggering unit)
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
Héros - Give SlotsInventaire_Hero[(Integer A)] to (Triggering unit)
Sinon - Actions
Unité - Remove Hero inventory from (Triggering unit) Unité - Add Bag inventory to (Triggering unit)
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
Posté le: 17/10/08 18:53 Sujet du message:
Un seul mot : super !
Franchement tu viens de m'apprendre un truc ! Je ne savais pas du tout que l'on pouvait exploiter ce bug de Warcraft, donc un grand merci
Les explications sont un peu complexes, mais le système est là, je passe en officiel _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Inscrit le: 18 Aoû 2008 Messages: 1248 Sujets: 59 Spécialité en worldedit: C'est simple. Je suis le plus grand mappeur de tous les temps.
Posté le: 17/10/08 19:44 Sujet du message:
J'avais posté un topic dans la section déclencheur pour savoir comment réaliser ce système et personne n'avait répondu. Je dois dire que là je suis servi
C'est tout bonnement génial _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 17/10/08 21:29 Sujet du message:
Nan mais à vrai dire je suis déçu de ta réaction, quand c'est pas ton tuto tu le défends mieux
Juste une remarque, tu pourrais désactiver les compétences à l'init de la map pour tous les joueurs, plutôt que "tout le temps" les désactiver (inutilement). _________________
Inscrit le: 21 Avr 2008 Messages: 1607 Sujets: 81 Spécialité en worldedit: Utiliser le travail des autres Médailles: 3 (En savoir plus...)
Posté le: 07/11/08 13:13 Sujet du message:
J'ai posté la map exemple dans la section système de Hiveworkshop. Déjà ils m'ont dit qu'il y avait du leak (c'est sûrement les randoms points). Le plus drôle c'est qu'il y a un petit rigolo qui m'a dit que mon système était unoriginal!
Donc comme je vous connais mieux, dites moi ce que vous en pensez, ou si les gars de Hive sont un peu des frustrés de la vie... _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 07/11/08 13:43 Sujet du message:
Ouai y'a du leak sur les points.
Bah les systèmes en gui spa top koa, pas très modulables en autres choses.
Et y'a peut être un tuto/système du genre déjà disponible (en mieux ?)
Sur hive ils critiquent facilement une ressource mais pour l'approuver si tu ne fais pas partie du staff, hf.
( en tous cas pour la section script)
Maintenant il est vrai que tu dois corriger les leak si tu veux qu'il y ait une chance que ton tuto soit admis. _________________
Inscrit le: 21 Avr 2008 Messages: 1607 Sujets: 81 Spécialité en worldedit: Utiliser le travail des autres Médailles: 3 (En savoir plus...)
Posté le: 07/11/08 14:07 Sujet du message:
C'est vrai que mes déclos sont raides comme des pieux. Pour les leaks c'est réparé.
Après, j'ai essayé de faire ce système parcequ'il garde les bonus passifs et les rechargements. Ce qui n'est pas le cas de plusieurs système d'inventaire même en jass.
C'est pas les remarques sur les leaks (ça c'est normal), c'est le fait de me dire que c'est pas original. Vu la tête de la majorité des sorts présentés, je trouve ça drôle. _________________
Inscrit le: 23 Aoû 2007 Messages: 7143 Sujets: 147 Spécialité en worldedit: le troll, le flood, la vulgarité, mon coeur balance Médailles: 2 (En savoir plus...)
Posté le: 07/11/08 14:53 Sujet du message:
Désactive les compétences à l'init de la map aussi.
Je sais que Vexorian a fait un système du genre, InvX ou quelque chose du style.
J'ai pas eu la curiosité de regarder si les objets ont vraiment stockés "réellement" ou si seul les bonus sont émulés.
Regarde dans les forums de wc3campaigns.net et hiveworkshop, voir thehelper.net et assure toi qu'aucun système de ce genre existe, si tu en es certain, défend toi.
Et si tu veux je peux te donner un coup de main à casser du noob aigri.
Inscrit le: 21 Avr 2008 Messages: 1607 Sujets: 81 Spécialité en worldedit: Utiliser le travail des autres Médailles: 3 (En savoir plus...)
Posté le: 07/11/08 16:36 Sujet du message:
SnowWolf a écrit:
Tu peux mettre un screen de warcraft pour voir ce que cela donne ?
Je comprend pas.
Troll-Brain a écrit:
Désactive les compétences à l'init de la map aussi.
Je sais que Vexorian a fait un système du genre, InvX ou quelque chose du style.
J'ai pas eu la curiosité de regarder si les objets ont vraiment stockés "réellement" ou si seul les bonus sont émulés.
Regarde dans les forums de wc3campaigns.net et hiveworkshop, voir thehelper.net et assure toi qu'aucun système de ce genre existe, si tu en es certain, défend toi.
Et si tu veux je peux te donner un coup de main à casser du noob aigri.
PS : Donne le lien de ton post
C'était fait. Avant de faire mon système, j'ai regardé pas mal de trucs, et aucun ne me convenait, trop compliqué ou pas fait avec assez de rigueur.
J'ai supprimé le lien sur Hive, j'étais vexé comme un pou ^^ (ils ne méritent pas...) Je pourrais le remettre avec la nouvelle map exemple. D'ailleurs, il faudrait que je remodifie le tuto.
[edit] C'est bon le tuto est modifié en fonction des différentes améliorations qu'on m'a conseillé et la nouvelle map a été ajoutée.
Toutes les heures sont au format GMT + 1 Heure Aller à la page 1, 2, 3, 4Suivante
Page 1 sur 4
Vous ne pouvez pas poster de nouveaux sujets dans ce forum Vous ne pouvez pas répondre aux sujets dans ce forum Vous ne pouvez pas éditer vos messages dans ce forum Vous ne pouvez pas supprimer vos messages dans ce forum Vous ne pouvez pas voter dans les sondages de ce forum