Inscrit le: 12 Sep 2009 Messages: 801 Sujets: 64 Spécialité en worldedit: Ne pas.
Posté le: 02/12/10 14:39 Sujet du message: Recipes
Yop tout le monde
Dans ce tutoriel, je vais vous parler des recipes et comment les faire.
Sommaire
I/ Introduction au recipe 1) Définition du recipe
II/ Recipe objets 1) Recipe avec deux objets différents 1.1) Editeur d'objets 1.2) Déclencheurs
2) Recipe avec deux objets identiques 2.1) Editeur d'objets 2.2) Déclencheurs
III/ Recipe sorts 1) Recipe avec deux sorts différents 1.1) Editeur d'objets 1.2) Déclencheurs
_______
I/ Introduction au recipe 1) Définition du recipe
Un recipe est une combinaison de deux widgets* créant un ou plusieurs nouveau widget étant généralement plus puissant.
Exemple : Une unité a un objet "Gant de force +4", lorsque qu'elle trouve un autre "Gant de force +4", cela lui créera des "Gants de force +8".
Widget : Gadget, tout ce qui est dans wc3 (unité, bâtiment, sort, objet etc) et qui est personnalisable.
II/ Recipe objets 1) Recipe avec deux objets différents
C’est le système le plus basique et le plus simple. Généralement, on prend un objet (voir deux) et un parchemin de recipe. (Qui est aussi un objet).
Il peut tout de même être amélioré de sorte à ce qu’on n’ait pas besoin d’un slot libre pour faire le recipe lorsque l’on a un inventaire complet.
Exemple : Un héros a 6 objets, dans ces 6 objets, il a un Gant de force +4, mais pour faire le recipe, il lui manque le Parchemin de Recipe : Gant de force +4. En temps normal, il aurait eu besoin d’un slot en plus pour accomplir son recipe, avec le deuxième système de recipe, même si son inventaire est plein, son Gant de force +4 se transformera.
1.1) Editeur d'objets
Pour les objets, vous avez besoin de deux ou plus objets acteurs du recipe. Pour mes exemples, je prends un Gant de Force +4, et un Parchemin de Recipe : Gant de Force +4.
Généralement, l’item transformé gagne le double de ses caractéristiques qu’il avait avant la transformation. Donc le prix de l’item transformé doit être doublé. (Ou ajoutez la moitié du prix du Parchemin de Recipe)
1.2) Déclencheurs
Tout d’abord, l’événement. Il suffit juste de savoir quand une unité obtient un objet.
Gui:
Trigger:
Unité - A unit Acquiert un objet
Ensuite, la condition (Je préfère faire avec des If/then/else, on a besoin que d’un déclencheur comme ça.)
Gui:
Trigger:
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
((Triggering unit) has an item of type Gant|cffffcc00s|r de force +4) Egal à TRUE ((Triggering unit) has an item of type Parchemin de Recipe : Gants de Force +4) Egal à TRUE
Ensuite, les actions afin de donner le nouvel objet, qui doit donc être fraichement créé
Gui:
Trigger:
Actions
Set Var_Point = (Position of (Triggering unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
((Triggering unit) has an item of type Gant|cffffcc00s|r de force +4) Egal à TRUE ((Triggering unit) has an item of type Parchemin de Recipe : Gants de Force +4) Egal à TRUE
Alors - Actions
Objet - Remove (Item carried by (Triggering unit) of type Gant|cffffcc00s|r de force +4) Objet - Remove (Item carried by (Triggering unit) of type Parchemin de Recipe : Gants de Force +4) Objet - Create Gant|cffffcc00s|r de force +8 at Var_Point Effet spécial - Create a special effect at Var_Point using AbilitiesSpellsHumanHolyBoltHolyBoltSpecialArt.mdl Effet spécial - Destroy (Last created special effect) Unité - Order (Triggering unit) to Clic droit (Last created item)
Sinon - Actions
Custom script: call RemoveLocation(udg_Var_Point)
J’explique, car je sais que certains vont me sauter dessus en hurlant tel des forcenés, pour ça :
Gui:
Trigger:
Unité - Order (Triggering unit) to Clic droit (Last created item)
Je mets cette action tout simplement car si par hasard vous mettiez un autre déclencheur impliquant l’objet fraichement créé avec comme événement
Gui:
Trigger:
Unité - A unit Acquiert un objet
celui-ci ne se déclenchera pas.
Voilà pour la première partie du tutoriel !
2) Recipe avec deux objets identiques
C’est le système le plus dur (mais pas trop, hein). Ce système-là, « augmente » de niveau l’objet ayant subi la transformation.
Exemple : Un héros a 4 objets, dans ces 4 objets, il possède deux Gants de Force +8, le système de recipe transformera donc automatiquement ces Gants de Force +8 en Gants de Force +16 2.1) Editeur d'objets
Pour les objets, vous avez besoin de deux objets acteurs du recipe. Pour mes exemples, je prends deux Gants de Force +8.
Généralement, les items transformés accumulent leurs bonus qu’ils avaient avant la transformation. Donc le prix de l’item transformé doit être doublé.
2.2) Déclencheurs
Comme lorsque l’on a deux objets différents, il faut cet événement :
Gui:
Trigger:
Unité - A unit Acquiert un objet
Mais cette fois, il faut une autre structure pour le déclencheur, une simple condition demandant deux objets identiques ne marcheraient pas.
Voici donc le déclencheur complet, puis les explications :
Gui:
Trigger:
Actions
Set Var_Point = (Position of (Triggering unit))
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Item-type of (Item being manipulated)) Egal à Gant|cffffcc00s|r de force +8
Alors - Actions
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Item-type of (Item carried by (Triggering unit) in slot (Integer A))) Egal à Gant|cffffcc00s|r de force +8
Alors - Actions
Set Int_Item = (Int_Item + 1)
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Int_Item Egal à 2
Alors - Actions
For each (Integer A) from 1 to 2, do (Actions)
Boucle - Actions
Objet - Remove (Item carried by (Triggering unit) of type Gant|cffffcc00s|r de force +8)
Objet - Create Gant|cffffcc00s|r de force +16 at Var_Point Unité - Order (Triggering unit) to Clic droit (Last created item) Effet spécial - Create a special effect at Var_Point using AbilitiesSpellsHumanHolyBoltHolyBoltSpecialArt.mdl Effet spécial - Destroy (Last created special effect) Set Int_Item = 0
Sinon - Actions
Set Int_Item = 0
Sinon - Actions
Custom script: call RemoveLocation(udg_Var_Point)
Gui:
Trigger:
Si - Conditions
(Item-type of (Item being manipulated)) Egal à Gant|cffffcc00s|r de force +8
Là on vérifie tout simplement si l’objet venant d’être pris est bien l’objet acteur de la transformation.
Gui:
Trigger:
For each (Integer A) from 1 to 6, do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Item-type of (Item carried by (Triggering unit) in slot (Integer A))) Egal à Gant|cffffcc00s|r de force +8
Alors - Actions
Set Int_Item = (Int_Item + 1)
Là, on vérifie si il possède plus d’un objet acteur de la transformation.
Et enfin, à chaque fois que l’on trouve un nouvel objet remplissant les conditions, on ajoute 1 à Int_Item, qui permettra de savoir si le héros possède bien 2 objets identiques.
Gui:
Trigger:
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Int_Item Egal à 2
Alors - Actions
For each (Integer A) from 1 to 2, do (Actions)
Boucle - Actions
Objet - Remove (Item carried by (Triggering unit) of type Gant|cffffcc00s|r de force +8)
Objet - Create Gant|cffffcc00s|r de force +16 at Var_Point Unité - Order (Triggering unit) to Clic droit (Last created item) Effet spécial - Create a special effect at Var_Point using AbilitiesSpellsHumanHolyBoltHolyBoltSpecialArt.mdl Effet spécial - Destroy (Last created special effect) Set Int_Item = 0
Et là, on vérifie s’il possède bien 2 Gants de Force +8 via la variable entire Int_Item. Si il en possède 2, on fait une boucle enlevant 2 (et pas plus, pas moins) Gants de Force +8. Puis on créer des Gants de Force +16 et ordonne au héros de les prendre.
Voilà pour la deuxième partie du tutoriel ! _________________
||**||
Dernière édition par DaKanibal le 04/12/10 14:37; édité 10 fois
Inscrit le: 06 Nov 2007 Messages: 184 Sujets: 17 Spécialité en worldedit: Faire lagger
Posté le: 03/12/10 21:36 Sujet du message:
Je pense qu'il veut parler de ça. _________________
La théorie, c'est quand on sait tout et que rien ne fonctionne.
La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Ici, nous avons réuni théorie et pratique : Rien ne fonctionne... et personne ne sait pourquoi !
Inscrit le: 12 Sep 2009 Messages: 801 Sujets: 64 Spécialité en worldedit: Ne pas.
Posté le: 03/12/10 21:54 Sujet du message:
Ah, ouais. J'avais pas vu.
Le mien sera plus complet t'façon ! De plus, j'vois pas en quoi je "pigeon" ton tuto, vu que je le rédige seul grâce à mes trouvailles du we. _________________
Ouep, je saurais comment faire, mais ça peut en aider, je pensais juste d'expliquer comment le faire sans multiplier les déclos dans tous les sens. _________________
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: 06/12/10 19:39 Sujet du message:
@ MeTeOr : Ton tuto n'avait pas été validé parce que tu n'avais pas tenu compte des suggestions.
Pour le tuto, il te faut encore expliquer un objet améliorable plusieurs fois en achetant le même recipe peut-être?
Ensuite, pour l'histoire des slots pleins, il y a l'astuce d'utiliser des tomes comme objets achetés.
Sinon, j'ai vu quelques fautes d'orthographes mais ça a l'air bon pour l'instant. _________________
Inscrit le: 12 Sep 2009 Messages: 801 Sujets: 64 Spécialité en worldedit: Ne pas.
Posté le: 06/12/10 22:21 Sujet du message:
Je finirais la deuxième partie du tutoriel plus tard. (Dans pas trop longtemps, vous inquiétez pas !)
Et aussi, j'ai cherché un moyen de faire un système de Recipe semi-automatique.
Secret:
Gui:
Trigger:
For each (Integer A) from 1 to Int_LastIndexGemmes[1], do (Actions)
Boucle - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
((Triggering unit) has an item of type TypObj_TypeObjetRecipe[(Integer A)]) Egal à TRUE ((Triggering unit) has an item of type TypObj_TypeObjetRecipe[((Integer A) + 12)]) Egal à TRUE
Alors - Actions
Objet - Remove (Item carried by (Triggering unit) of type TypObj_TypeObjetRecipe[(Integer A)]) Objet - Remove (Item carried by (Triggering unit) of type TypObj_TypeObjetRecipe[((Integer A) + 12)]) Objet - Create TypObj_TypeObjetRecipe[((Integer A) + 13)] at Point_PosReciper Unité - Order (Triggering unit) to Clic droit (Last created item) Effet spécial - Create a special effect at (Position of (Triggering unit)) using AbilitiesSpellsHumanHolyBoltHolyBoltSpecialArt.mdl Effet spécial - Destroy (Last created special effect)
Sinon - Actions
Do nothing
Qui créer automatiquement les recipes lorsqu'il y a plusieurs niveaux de l'objet.
Exemple :
Gant +4 + Gemme niveau 1 = Gant +5
Gant +5 + Gemme niveau 2 = Gant +6
Etc.
Il suffit juste d'assigner les items à des variables dans un déclencheur et de changer l'index des variables de ce déclencheur pour chaque type objet. _________________
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