Worldedit
  Worldedit
Le site sur l'éditeur de warcraft 3 !
 
  FAQFAQ   RechercherRechercher   Liste des MembresListe des Membres    Groupes d'utilisateursGroupes d'utilisateurs   medals.php?sid=4c3f32a4d1bea7007b840594c1edac48Médailles   S'enregistrerS'enregistrer 
 ProfilProfil   Se connecter pour vérifier ses messages privésSe connecter pour vérifier ses messages privés   ConnexionConnexion 
  FAQFAQ World Editor   UploadUploader une map ou une image    UploadAjouter sa map à l'annuaire   UploadConsulter l'annuaire

Système d'armes à munitions en Gui
Aller à la page 1, 2  Suivante
 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Tutoriels
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Gevans
Back


Inscrit le: 21 Aoû 2007
Messages: 1930
Sujets: 85

Médailles: 2 (En savoir plus...)
Rédacteur de tuto #1 (Quantité : 1) Gevans (Quantité : 1)

MessagePosté le: 25/01/09 12:05    Sujet du message: Citer

Bon comme promis je mets mon système, je vais surement continuer à l'améliorer notamment en trouvant un moyen de pouvoir tirer en continue, c'est à dire sans avoir à réappuyer sur le bouton tirer.



Comme vous voyez les munitions sont stockées dans un tableau en haut à droite, j'en ai fait un pour chaque joueur et je ne sais pas si c'est très viable mais bon c'est un détail.

Concernant le fonctionnement, tout repose sur un système de 4 variables :

  • bool_arme[a*10+b] (type booléen) : retourne vrai si le joueur a possède l'arme b
  • munition[a*10+b] (type entier) : retourne le nombre de munition du joueur a pour l'arme b
  • arme_port[a] (type entier) : retourne le numéro de l'arme portée par le joueur a
  • arme[c] (type chaine de caractère) : retourne le nom de l'arme c


Voilà à partir de là il n'y a plus grand chose à faire...


a) Initialisation

Secret:

Gui:
Trigger:
Initialisation
Collapse Evénements
Map initialization
Conditions
Collapse Actions
-------- Joueurs --------
Set CONST_nbrplayer = 4
Set unites[1] = Fusilier 0000 <gen>
Set unites[2] = Fusilier 0001 <gen>
Set unites[3] = Fusilier 0002 <gen>
Set unites[4] = Fusilier 0003 <gen>
-------- Armes --------
Set CONST_nbrarm = 4
Set arme[1] = Pistolet
Set muni_max[1] = 5
Set arme[2] = Mitraillette
Set muni_max[2] = 20
Set arme[3] = Fusil
Set muni_max[3] = 15
Set arme[4] = Lance rocket
Set muni_max[4] = 5
-------- Munitions --------
Collapse For each (Integer A) from 1 to CONST_nbrplayer, do (Actions)
Collapse Boucle - Actions
Set bool_arm[(((Integer A) x 10) + 1)] = TRUE
Set bool_arm[(((Integer A) x 10) + 2)] = TRUE
Set munition[(((Integer A) x 10) + 1)] = muni_max[1]
Set munition[(((Integer A) x 10) + 2)] = muni_max[2]
Set arme_port[(Integer A)] = 1
Joueur - Set (Player((Integer A))) Or actuel to munition[(((Integer A) x 10) + 1)]



Un moyen d'avoir accès aux nombres de munitions de l'arme portée actuellement consiste à regarder l'or actuel, c'est un peu plus simple à faire par déclo mais ça empêche d'utiliser l'or dans sa map...


b) Le tableau

On ajoute les armes qu'on possède dans le tableau avec leur nombre de munition, dès qu'on trouve une arme il faudra penser à l'ajouter dans le tableau, si on la perd (ce qui est n'est possible que si on est tué car même avec 0 munition on garde notre arme) on l'enlève.

Secret:

Gui:
Trigger:
Tableau
Collapse Evénements
Temps - Elapsed game time is 1.00 seconds
Conditions
Collapse Actions
Collapse For each (Integer A) from 1 to CONST_nbrplayer, do (Actions)
Collapse Boucle - Actions
Panneau de commandes - Create a leaderboard for (Player group((Player((Integer A))))) titled Arsenal
Set Tableau[(Integer A)] = (Last created leaderboard)
Panneau de commandes - Montrer (Last created leaderboard)
Collapse For each (Integer B) from 1 to CONST_nbrarm, do (Actions)
Collapse Boucle - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
bool_arm[(((Integer A) x 10) + (Integer B))] Egal à  TRUE
Collapse Alors - Actions
Panneau de commandes - Add (Player((Integer B))) to (Last created leaderboard) with label arme[(Integer B)] and value munition[(((Integer A) x 10) + (Integer B))]
Panneau de commandes - Change the color of the value for (Player((Integer B))) in Tableau[(Integer A)] to (100.00%, 80.00%, 20.00%) with 0.00% transparency
Panneau de commandes - Change the color of all labels for Tableau[(Integer A)] to (100.00%, 80.00%, 20.00%) with 0.00% transparency
Collapse Sinon - Actions




c) Changement d'arme

Secret:

Gui:
Trigger:
Changement arme
Collapse Evénements
Unité - A unit Initie l'effet d'une compétence
Collapse Conditions
(Ability being cast) Egal à  Changer d'arme
Collapse Actions
Unité - Order (Triggering unit) to Arrêter
Set i = arme_port[(Player number of (Owner of (Triggering unit)))]
Collapse For each (Integer j) from (i + 1) to CONST_nbrarm, do (Actions)
Collapse Boucle - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
bool_arm[(((Player number of (Owner of (Triggering unit))) x 10) + j)] Egal à  TRUE
Collapse Alors - Actions
Set arme_port[(Player number of (Owner of (Triggering unit)))] = j
Set j = CONST_nbrarm
Sinon - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
i Egal à  arme_port[(Player number of (Owner of (Triggering unit)))]
Collapse Alors - Actions
Collapse For each (Integer j) from 1 to i, do (Actions)
Collapse Boucle - Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
bool_arm[(((Player number of (Owner of (Triggering unit))) x 10) + j)] Egal à  TRUE
Collapse Alors - Actions
Set arme_port[(Player number of (Owner of (Triggering unit)))] = j
Set j = i
Sinon - Actions
Collapse Sinon - Actions
Do nothing
Joueur - Set (Owner of (Triggering unit)) Or actuel to munition[(((Player number of (Owner of (Triggering unit))) x 10) + arme_port[(Player number of (Owner of (Triggering unit)))])]
Partie - Display to (All players) the text: (Nouvelle arme :  + arme[arme_port[(Player number of (Owner of (Triggering unit)))]])



Si on veut changer d'arme, tout le truc c'est d'aller chercher l'arme suivante dans la liste d'arme. Mais le truc vicieux c'est qu'on est pas forcément sur la première arme donc il faut parcourir deux fois la liste (un coup de l'arme qu'on a jusqu'au bout et un coup du début jusqu'à l'arme qu'on a).

Globalement ça marche assez bien mais je pense qu'on peut trouver plus malin...

d) Tirer

Pour le shoot c'est assez simple, on enlève une munition sur l'arme actuel.
Si on est à 0, on lance le changement d'arme automatiquement!

Secret:

Gui:
Trigger:
Attaque
Collapse Evénements
Unité - A unit Initie l'effet d'une compétence
Collapse Conditions
(Ability being cast) Egal à  Tirer
Collapse Actions
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
munition[(((Player number of (Owner of (Triggering unit))) x 10) + arme_port[(Player number of (Owner of (Triggering unit)))])] Supérieur à  0
Collapse Alors - Actions
Set munition[(((Player number of (Owner of (Triggering unit))) x 10) + arme_port[(Player number of (Owner of (Triggering unit)))])] = (munition[(((Player number of (Owner of (Triggering unit))) x 10) + arme_port[(Player number of (Owner of (Triggering unit)))])] - 1)
Joueur - Set (Owner of (Triggering unit)) Or actuel to (((Owner of (Triggering unit)) Or actuel) - 1)
Panneau de commandes - Change the value for (Player(arme_port[(Player number of (Owner of (Triggering unit)))])) in Tableau[(Player number of (Owner of (Triggering unit)))] to munition[(((Player number of (Owner of (Triggering unit))) x 10) + arme_port[(Player number of (Owner of (Triggering unit)))])]
Collapse Sinon - Actions
-------- Plus de munition --------
Unité - Order (Triggering unit) to Arrêter
Set o = 0
For each (Integer A) from 1 to CONST_nbrarm, do (If (bool_arm[(((Player number of (Owner of (Triggering unit))) x 10) + (Integer A))] Egal à  TRUE) then do (Set o = (o + munition[(((Player number of (Owner of (Triggering unit))) x 10) + (Integer A))])) else do (Do nothing))
Collapse If (o Différent de 0) then do (Déclencheur - Run Changement arme <gen> (ignoring conditions)) else do (Partie - Display to (Player group((Owner of (Triggering unit)))) the text: Plus d'arme)




Voilà, je précise tout de même que ce système est en cours d'amélioration, pour l'instant il reste des gros défauts surtout lorsqu'on fait les tests, notamment le fait que tirer ne produit qu'un effet graphique puisque je n'ai pas gérer les dégâts ni les spécificités de chaque arme (ce qui peut se faire facilement en utilisant les différents niveaux du sort Tirer).
Simplement ici je donne un moyen de gérer les munitions assez simple, je pense que ça donne une autre approche même s'il est beaucoup moins complet !

Enfin je continue à l'améliorer pas de soucis.

Je poste quand même la map : Télécharger la map
_________________
Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil.
Topic indispensable
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail Visiter le site web du posteur MSN Messenger
 jk2pach
Invité








MessagePosté le: 25/01/09 18:02    Sujet du message: Citer

Tu sais quoi? On devrait valider les 2 méthode: plus il y a de méthodes, plus le joueur pourra créer son propre système.
_________________
Revenir en haut
 jk2pach
Invité








MessagePosté le: 27/01/09 12:07    Sujet du message: Citer

Gvans: faute de remarques autres que ce bug dû au temps de chargement des boucles, le tuto sera passé en officiel à partir de jeudi (une semaine). Je suggère que tu fasses un topic à part pour le tiens. Histoire d'avoir 2 tutos Wink
_________________
Revenir en haut
 Gevans
Back


Inscrit le: 21 Aoû 2007
Messages: 1930
Sujets: 85

Médailles: 2 (En savoir plus...)
Gevans (Quantité : 1) Rédacteur de tuto #1 (Quantité : 1)

MessagePosté le: 27/01/09 17:38    Sujet du message: Citer

Ok pour le passer en officiel mais pour le spliter en 2...bof mon système n'est pas vraiment terminer pour en faire un tuto.

En plus le mot tuto me dérange un peu parce qu'il s'agit plus d'un système à part entière, j'avais eu l'idée de faire une session : Système où un nom comme ça mais bon...

Enfin c'est ton tuto à toi de voir !
_________________
Si vous recherchez quelque chose, il y a de très grandes chances que vous trouviez la réponse ici alors jetez y un oeil.
Topic indispensable
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail Visiter le site web du posteur MSN Messenger
 jk2pach
Invité








MessagePosté le: 27/01/09 19:50    Sujet du message: Citer

Bon bah on les garde ensemble. J'édite le début pour préciser qu'il y a un deuxième système.
_________________
Revenir en haut
 Crowolf
Animateur


Inscrit le: 21 Avr 2008
Messages: 1607
Sujets: 81
Spécialité en worldedit: Utiliser le travail des autres
Médailles: 3 (En savoir plus...)
Grand décorateur (Quantité : 2) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 27/01/09 21:57    Sujet du message: Citer

Si j'en ai le temps, est-ce que je pourrais compléter par un exemple pour changer les projectiles en fonction des armes? (Genre lance flamme, bazooka, mitraillette, sniper....)
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 27/01/09 22:26    Sujet du message: Citer

Aucun souci. Je peux de toute façon le passer en officiel même sans ton exemple.

En revanche j'ai refait le test avec les orbes, ça ne fonctionne pas chez moi. Tu utilise quelle orbe? (Parce que par l'orbe reste toujours avec une portée de 600 chez moi).
_________________
Revenir en haut
 Crowolf
Animateur


Inscrit le: 21 Avr 2008
Messages: 1607
Sujets: 81
Spécialité en worldedit: Utiliser le travail des autres
Médailles: 3 (En savoir plus...)
Grand décorateur (Quantité : 2) Rédacteur de tuto #3 (Quantité : 1)

MessagePosté le: 27/01/09 23:11    Sujet du message: Citer

J'ai pas testé avec des améliorations de porté, maisje vais voir. Je ne sais pas pourquoi ça ne marcherais pas.
J'utilise l'Orbe de foudre (l'objet), je modifie la compétence orbe de foudre pour lui mettre le graphisme projectile que je veux et l'attaque activée doit être 1.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 jk2pach
Invité








MessagePosté le: 28/01/09 22:33    Sujet du message: Citer

Passé en officiel.
_________________
Revenir en haut
 Remyfire
Ptit Nouveau


Inscrit le: 19 Fév 2008
Messages: 3
Sujets: 1



MessagePosté le: 10/08/09 09:45    Sujet du message: Citer

Sympa ce tutorial, il m'a bien aidé Razz

Mais il j'ai remarqué qu'il y avait quelques fautes étrange dans les déclencheurs comme:
Gui:
Trigger:
Set Son_type_arme[9] = M4A1__Full_Auto_u <gen>
dans le déclencheur variable (9 ?)

Gui:
Trigger:
Collapse For each (Integer A) from 1 to 20, do (Actions)
pour les 5 cas de rechargement de l'arme (20 ?)

Y'avait aussi un bug dans le déclencheur pour lâcher l'arme (dans la map test on peut jeter que une des 2 armes) mais je l'ai refait à la main et ça marche Very Happy

Sinon pour ce qui est de modifier le graphisme du projectile, on peut utiliser la compétence liquide enflammé des orcs Razz
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Envoyer l'e-mail MSN Messenger
 jk2pach
Invité








MessagePosté le: 10/08/09 17:36    Sujet du message: Citer

Remyfire a écrit:
Sympa ce tutorial, il m'a bien aidé Razz

Mais il j'ai remarqué qu'il y avait quelques fautes étrange dans les déclencheurs comme:
Gui:
Trigger:
Set Son_type_arme[9] = M4A1__Full_Auto_u <gen>
dans le déclencheur variable (9 ?)

Gui:
Trigger:
Collapse For each (Integer A) from 1 to 20, do (Actions)
pour les 5 cas de rechargement de l'arme (20 ?)

Y'avait aussi un bug dans le déclencheur pour lâcher l'arme (dans la map test on peut jeter que une des 2 armes) mais je l'ai refait à la main et ça marche Very Happy

Sinon pour ce qui est de modifier le graphisme du projectile, on peut utiliser la compétence liquide enflammé des orcs Razz


Ah exact. (Merci pour liquide enflammé, je l'ignorais!)
_________________
Revenir en haut
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Tutoriels Toutes les heures sont au format GMT + 1 Heure
Aller à la page 1, 2  Suivante
Page 1 sur 2
La question posée dans ce topic a été résolue !

 
Sauter vers:  
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


Powered by phpBB © 2001, 2005 phpBB Group
Traduction par : phpBB-fr.com