Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
Posté le: 26/03/08 11:50 Sujet du message: Saut idéal en GUI
Excusez-moi mais je met une note de violet dans ce tuto pour commencer :
...
...
...
Très bien ! Je suis l'homme le plus heureux sur Terre maintenant !
Commençons !
Alors à quoi sert ce tuto? A vous expliquer comment faire un sort de saut sur Warcraft III entièrement en Gui, sans leak, et avec de nombreux système qui rendent le saut presque... parfait (Troll-Brain cherche pas à dire quelque chose là dessus ).
Alors voilà les caractéristiques du saut :
Le Héros (ici le Maître lame effectue une animation qui est synchronisée avec le saut) ;
Lorsque le Héros saute, il ne subit aucun dégât d'attaque ;
Lorsque le Héros saute, il est insensible au sort ;
Lors du saut, le Héros n'est pas mis en pause ;
A la fin du saut, un effet spécial est crée et le Héros inflige des dégâts au unité ennemies terrestres proches.
I/ La partie Editeur d'objets
a) Le Saut
Tout d'abord il va falloir créer le sort en lui-même. Appuyez sur Ctrl + F et cherchez le sort Canaliser, puis créez-en un sur son modèle. Faite toutes les modifications de personnalisation de votre sorts. Faites attention à la partie "Donnée" du sort, qui peut parfois empêcher le sort de marcher. Pensez aussi à changer l'ID de l'ordre de base, pour na pas porter à confusion avec d'autres sorts. Ici j'utilise de collecte de bois du Feu follet, mais vous pouvez bien évidemment mettre autre chose
Mettez donc les valeurs qui suivent :
b) Les autres Compétences nécessaires
Après cet ajout, vous allez devoir créer 3 autres compétences, qui serviront durant le saut.
Cherchez la compétence Immunité contre les sorts et créez une compétence sur ce modèle. Ne changez rien.
Procédez de la même façon pour le sort Peau dure. Ici vous changerez juste les valeurs de dégâts minimum à 0 et de dégâts ignorés au maximum que vous pouvez. Pas la peine de changer les descriptions de ces sorts.
Cherchez maintenant Livre de sorts. Enlevez la "Compétence objet" et changez l'ID d'ordre de base en celui d'une compétence peu utilisée. Pui dans la liste des sorts mettez les deux sorts crées précédemment.
Ok ! Maintenant ajoutez la compétence Saut à votre Héros (ce serait bête de l'oublier --' ).
Très bien on a fini avec cette partie.
II/ La partie Déclencheurs
Dans cette partie je ne vais pas vous expliquer tous les petits détails, pour la seule et simple raison que j'ai fait un système qui permet de changer les principales caractéristiques du saut en changeant certaines variables. Les Mappeurs les plus expérimentés pourront facilement changer ce qu'ils veulent.
Voici les 3 déclencheurs :
Gui:
Trigger:
Jump Initialization
Evénements
Map initialization
Conditions
Actions
-------- Here you can set all Variables -------- -------- Ici vous pouvez paramêtrer toutes les variables -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- The Jump's Duration (in seconds) - Minimum = 1 second - Maximum = 3 seconds -------- -------- La Durée du Sort (en secondes) - Minimum = 1 seconde - Maximum = 3 secondess -------- Set Jump_duration = 1.50 -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- The Splash of damage when the Hero lands -------- -------- La Zone de dégâts lorsque le Héros atterrit -------- Set Jump_splash = 250.00 -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- Damage dealed (3 levels) -------- -------- Dégâts infligés (3 niveaux) -------- Set Jump_damage[1] = 75.00 Set Jump_damage[2] = 125.00 Set Jump_damage[3] = 200.00 -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- This is the Special Effect created after the Hero lands -------- -------- C'est l'Effet Spécial crée après l'atterrissage du Héros -------- Set Jump_string[1] = AbilitiesSpellsOrcWarStompWarStompCaster.mdl -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- Don't modify anything here -------- -------- Ne modifiez rien ici -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° --------
Groupe joueur - Pick every player in (All players) and do (Actions)
Boucle - Actions
Joueur - Désactiver Add Invulnerable for (Picked player) Joueur - Désactiver Forme de corbeau for (Picked player)
-------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- -------- It deletes the lagg -------- -------- Enlève le lagg -------- Set Jump_location[1] = (Center of (Playable map area)) Unité - Create 1 Dummy Jump for Neutre Passif at Jump_location[1] facing Orientation bâtiment par défaut degrees Unité - Add Add Invulnerable to (Last created unit) Custom script: call RemoveLocation( udg_Jump_location[1] ) Unité - Remove (Last created unit) from the game -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° --------
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Jump_duration Inférieur ou égal à 1.00
Alors - Actions
Set Jump_duration = 1.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Jump_duration Supérieur à 3.00
Alors - Actions
Set Jump_duration = 3.00
Sinon - Actions
Gui:
Trigger:
Jump Spell
Evénements
Unité - A unit Initie l'effet d'une compétence
Conditions
(Ability being cast) Egal à Jump
Actions
Set Jump_custom_value = (Jump_custom_value + 1) Unité - Set the custom value of (Casting unit) to Jump_custom_value -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- Set Jump_location[1] = (Position of (Casting unit)) Set Jump_location[2] = (Target point of ability being cast) -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- Set Jump_angle[Jump_custom_value] = (Angle from Jump_location[1] to Jump_location[2]) Set Jump_distance[Jump_custom_value] = (Distance between Jump_location[1] and Jump_location[2]) -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- Custom script: call RemoveLocation( udg_Jump_location[2] ) Custom script: call RemoveLocation( udg_Jump_location[1] ) -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- Set Jump_real[Jump_custom_value] = 0.00 -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- Unité - Add Add Invulnerable to (Casting unit) Unité - Add Forme de corbeau to (Casting unit) Unité - Add classification of Une unité de type Péon to (Casting unit) Wait 0.01 seconds Unité - Order (Casting unit) to Tenir la position Animation - Change (Casting unit)'s animation speed to (85.00 / Jump_duration)% of its original speed Unité - Turn collision for (Casting unit) Off Animation - Play (Casting unit)'s attack slam animation -------- °°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°° -------- Groupe unité - Add (Casting unit) to Jump_group[1] Déclencheur - Turn on Jump Movements <gen>
Gui:
Trigger:
Jump Movements
Evénements
Temps - Every 0.01 seconds of game time
Conditions
Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
(Number of units in Jump_group[1]) Egal à 0
Alors - Actions
Déclencheur - Turn off (This trigger)
Sinon - Actions
Groupe unité - Pick every unit in Jump_group[1] and do (Actions)
Boucle - Actions
Set Jump_real[(Custom value of (Picked unit))] = (Jump_real[(Custom value of (Picked unit))] + 0.01)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Jump_real[(Custom value of (Picked unit))] Egal à (Jump_duration + 0.01)
Alors - Actions
Set Jump_unit = (Picked unit) Unité - Remove classification of Une unité de type Péon from (Picked unit) Unité - Remove Forme de corbeau from (Picked unit) Unité - Remove Add Invulnerable from (Picked unit) Unité - Turn collision for (Picked unit) On Animation - Reset (Picked unit)'s animation Animation - Change (Picked unit)'s animation speed to 100.00% of its original speed Groupe unité - Remove (Picked unit) from Jump_group[1] Set Jump_location[1] = (Position of (Picked unit)) Effet spécial - Create a special effect at Jump_location[1] using Jump_string[1] Set Jump_group[2] = (Units within Jump_splash of Jump_location[1] matching ((((Owner of (Matching unit)) is an enemy of (Owner of (Picked unit))) Egal à TRUE) and ((((Matching unit) is Une unité terrestre) Egal à TRUE) and (((Matching unit) is Un bâtiment) Egal à FALSE))))
Groupe unité - Pick every unit in Jump_group[2] and do (Actions)
Boucle - Actions
Unité - Cause Jump_unit to damage (Picked unit), dealing Jump_damage[(Level of Jump for Jump_unit)] damage of attack type Normal and damage type Normal
Set Jump_location[1] = (Position of (Picked unit)) Set Jump_location[2] = (Jump_location[1] offset by (Jump_distance[(Custom value of (Picked unit))] / (Jump_duration x 100.00)) towards Jump_angle[(Custom value of (Picked unit))] degrees) Unité - Move (Picked unit) instantly to Jump_location[2], facing Jump_angle[(Custom value of (Picked unit))] degrees Custom script: call RemoveLocation( udg_Jump_location[2] ) Custom script: call RemoveLocation( udg_Jump_location[1] )
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Jump_real[(Custom value of (Picked unit))] Inférieur ou égal à (Jump_duration / 2.00)
Alors - Actions
Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) + (4.50 / Jump_duration)) at 0.00
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Jump_real[(Custom value of (Picked unit))] Supérieur à (Jump_duration / 2.00)
Alors - Actions
Animation - Change (Picked unit) flying height to ((Current flying height of (Picked unit)) - (4.50 / Jump_duration)) at 0.00
Sinon - Actions
La hauteur du saut ne changera pas selon la durée de celui-ci.
Je tiens à vous expliquer certaines lignes :
Gui:
Trigger:
Actions
Groupe joueur - Pick every player in (All players) and do (Actions)
Boucle - Actions
Joueur - Désactiver Add Invulnerable for (Picked player) Joueur - Désactiver Forme de corbeau for (Picked player)
Cette ligne de Gui permet d'exploiter un "bug" de Warcraft qui peut énormément servir. En effet dans cette ligne on désactive les compétences Livre de sort que l'on a crée précédemment ainsi que Forme de corbeau qui est utilisé pour permettre à l'unité de voler. Cependant malgré le fait d'interdire la compétence, les effet resteront les même sur l'unité. Ainsi l'unité ne sera pas mise en pause durant son saut, mais on ne verra pas les icônes assez moches des trois compétences utilisées ! (Je suis un génie ).
Gui:
Trigger:
Actions
Set Jump_location[1] = (Center of (Playable map area)) Unité - Create 1 Dummy Jump for Neutre Passif at Jump_location[1] facing Orientation bâtiment par défaut degrees Unité - Add Add Invulnerable to (Last created unit) Custom script: call RemoveLocation( udg_Jump_location[1] ) Unité - Remove (Last created unit) from the game
Cette ligne permet d'enlever un petit lag qui se produit lorsque le sort de saut est utilisé pour la première fois dans la Carte.
III/ La Map
Je vous ai bien entendu concocté une Map exemple. La Map comporte le sort de saut et est très agréable à tester. Je l'ai créée un jour où je m'ennuyais
Pour la télécharger cliquez ici ou allez la chercher directement dans l'annuaire.
Dans le déclencheur Jump Initialization, vous pouvez changer certains paramètres :
Jump_duration, c'est le temps que mettra le saut pour être effectué. Le minimum est 1 seconde et le maximum est 3 secondes (bon bien sûr vous remarquerez que c'est facilement modifiable plus bas dans le même déclencheur mais bon ^.^) ;
Jump_splash, c'est le zone qui sera prise pour infliger des dégâts aux unités ennemies terrestres proches ;
Jump_damage, c'est les dégâts infligés selon le niveau du sort ;
Jump_string[1], c'est le chemin de l'effet spécial utilisé à la fin du saut (laissez vide pour qu'il n'y en ai pas).
Maintenant vous pouvez proposer vos améliorations pour rendre le sort meilleur. Je suis actuellement en train de réfléchir quant à implanter un système "anti-bug" qui empêche au Héros d'aller sur les falaise et de se retrouver ainsi bloqué (j'utilise déjà ce système dans plusieurs de mes Cartes ). _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Dernière édition par Rommstein60 le 04/04/08 07:07; édité 1 fois
Inscrit le: 21 Aoû 2007 Messages: 915 Sujets: 47 Spécialité en worldedit: Faire des maps avec 500 déclos en GUI alors que 2 en JASS suffisent Médailles: 1 (En savoir plus...)
Posté le: 26/03/08 15:05 Sujet du message:
Tien j'avais essayé il y a quelques jours mais j'ai pas réussit ^^
PS : on cible l'endroit ou le hero va sauter ?
EDIT : J'ai vu la map c'est vraiment bien fait _________________
Inscrit le: 21 Aoû 2007 Messages: 915 Sujets: 47 Spécialité en worldedit: Faire des maps avec 500 déclos en GUI alors que 2 en JASS suffisent Médailles: 1 (En savoir plus...)
Posté le: 26/03/08 15:15 Sujet du message:
Ou on peux changer la distance du saut ? _________________
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
Posté le: 26/03/08 16:11 Sujet du message:
Euh ben c'est en anglais parce que j'ai envie d'en faire profiter mes amis du Clan CBS
(Quoique ils sont déjà assez forts pour faire ce système mais bon ).
Alors approuvé? _________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Inscrit le: 23 Aoû 2007 Messages: 4766 Sujets: 136 Spécialité en worldedit: Keskesapeutfout' Médailles: 1 (En savoir plus...)
Posté le: 26/03/08 18:02 Sujet du message: Re: Saut parfait en GUI
Rommstein60 a écrit:
Alors à quoi sert ce tuto? A vous expliquer comment faire un sort de saut sur Warcraft III entièrement en Gui, sans leak, et avec de nombreux système qui rendent le saut presque... parfait (Troll-Brain cherche pas à dire quelque chose là dessus ).
_________________
Leçon n°1 du WorldEdit : « Le violet > Troll-Brain »
Inscrit le: 22 Nov 2007 Messages: 677 Sujets: 27 Spécialité en worldedit: Jamais sortir ses projets ?
Posté le: 03/04/08 08:00 Sujet du message:
Un vrai timer à la place de l'événement périodique ?
(Tu pourra avoir un effet plus réaliste normalement car une cadence plus rapide et aussi évité d'avoir deux saut qui ont une différence de temps d'exécution de 50%. mdr )
Toutes les heures sont au format GMT + 1 Heure Aller à la page 1, 2, 3, 4, 5Suivante
Page 1 sur 5
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