Posté le: 07/06/11 22:30 Sujet du message: Demande d'aide sur déclencheur d'unité
Bonjour, ça fait 3 jours que je bloque sur la création d'une carte. Je suis depuis 1 semaine en train de créer une nouvelle adaptation frozen de la carte " Merlin - Acheteur Vendeur". Pour ceux qui ne connaissent pas le principe, il y a 4 vendeurs qui reçoivent toutes les minutes des unités et qui par une commande vendent ces unités aux acheteurs qui doivent se faire la guerre entre eux. Exemple de commande de vente, si je veux fixer le prix des unités a 2000 or, la commande est "offre 2000". Et pour les acheteurs, ils ont les commandes p1, p2, p3 et p4 pour acheter, avec le chiffre qui correspond au n° du vendeur.
Voila la situation, maintenant je vous pose mon problème. Je n'avais jamais crée de carte avant, j'ai réussis a mettre tout les paramètre de jeu, les tableaux des taux d'or, les unités personnalisés comme "Le Maître"...
1er probleme : j'arrive a faire apparaitre les unités des vendeurs... Cependant, j'aimerai que ces unités arrivent de façon aléatoire mais pas tant que ça... Je m'explique, j'aimerai par exemple qu'il y est autant de chance de pouvoir avoir a vendre des goules que des fantassins ou des archers... Mais que les chances d'avoir un héros soit plus petite que des goules par exemple... E n fait, je n'arrive meme pas a faire apparaître des unités au hasard... Sauf, les unités neutres... ( problématique)
2eme problème, j'aimerai créer les commandes offre et p1 etc... Mais je n'y arrive pas non plus. Sachant que si par exemple vous avez 6 grunts a vendre et que vous tapez "offre 3000" , il sera affiché "{nom du joueur} propose 3000 d'or pour 6 grunts. (Pour acheter , TAPEZ : p1) "
3eme probleme : il y a une limitation de nourriture de 80. Cependant, les unités n'affichent aucun changement visible dans le cadre en haut a droite signalant le nombre de nourriture utilisé sur le nombre de nourrriture max. Mais le taux de nourriture y est quand meme puisqu'il y a une limitation de soldat...
J'ai cherché en vain et j'aurai espéré que vous me donneriez une solution a mon problème. Merci d'avance. _________________
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 07/06/11 23:02 Sujet du message:
Tu t'es trompé de section ^^
Pour le 1er problème, tu utilises la fonction random, genre par exemple,
Gui:
Trigger:
Initialisation mêlée
Evénements
Temps - Every 30.00 seconds of game time
Conditions
Actions
Set Entier = (Random integer number between 1 and 10)
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Entier Supérieur ou égal à 1 Entier Inférieur ou égal à 3
Alors - Actions
Unité - Create 4 Fantassin for Joueur 1 (Rouge) at (Center of (Playable map area)) facing Orientation bâtiment par défaut degrees
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Entier Supérieur ou égal à 4 Entier Inférieur ou égal à 6
Alors - Actions
Unité - Create 4 Grunt for Joueur 1 (Rouge) at (Center of (Playable map area)) facing Orientation bâtiment par défaut degrees
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Entier Supérieur ou égal à 7 Entier Inférieur ou égal à 8
Alors - Actions
Unité - Create 1 Chevalier de la mort for Joueur 1 (Rouge) at (Center of (Playable map area)) facing Orientation bâtiment par défaut degrees
Sinon - Actions
If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Si - Conditions
Entier Supérieur ou égal à 9 Entier Inférieur ou égal à 10
Alors - Actions
Unité - Create 1 Chasseur de démon for Joueur X at (Center of Region) facing Orientation bâtiment par défaut degrees
Sinon - Actions
Avec Entier une variable de type entier, et Région c'est la région où tu veux qu'ils apparaissent
Ici y'aura 30% de chances (3/10) de créer un fantassin, 30% de créer un grunt, 20% (2/10) de créer un chevalier de la mort et 20% de créer un chasseur de démons.
Il y a des moyens plus rapides je pense, on pourrait aussi stocker des types d'unités dans une variable à déploiement,
Gui:
Trigger:
Déclencheur sans titre 002
Evénements
Map initialization
Conditions
Actions
Set Unit[1] = Fantassin Set Unit[2] = Fantassin Set Unit[3] = Fantassin Set Unit[4] = Grunt Set Unit[5] = Grunt Set Unit[6] = Grunt Set Unit[7] = Chevalier de la mort Set Unit[8] = Chevalier de la mort Set Unit[9] = Chasseur de démon Set Unit[10] = Chasseur de démon
Gui:
Trigger:
Déclencheur sans titre 003
Evénements
Temps - Every 30.00 seconds of game time
Conditions
Actions
Set Entier = (Random integer number between 1 and 10) Unité - Create 1 Unit[Entier] for Joueur 1 (Rouge) at (Center of Region) facing Orientation bâtiment par défaut degrees
Je pense que c'est plus rapide comme ceci, tu stockes ton fantassin dans 3 index, de même pour ton grunt, et tu stockes ton chevalier dans 2 index, de même pour le chasseur, ainsi il y a ici 10 index dont 3 occupés par le fantassin, il aura donc 30% de chances d'apparaître, le chevalier quant à lui occupe seulement 2 index sur 10, il aura donc 20% de chances d'apparaître. Après je ne sais pas si une de mes deux méthodes est optimale ^^
Pour le second problème, pour créer des commandes où tu réutilises un élément de la commande, tu utilises ce modèle de déclencheur :
Gui:
Trigger:
Déclencheur sans titre 001
Evénements
Joueur - Joueur 1 (Rouge) types a chat message containing offre as Une sous-chaîne
Conditions
Actions
Partie - Display to (All players) the text: ((Name of (Triggering player)) + (Substring((Entered chat string), 7, (Length of (Entered chat string)))))
C'est relativement plus compliqué ^^
Pour mettre deux textes à la suite (Nom du joueur + l'offre faite) tu utilises la fonction concatenate strings. En string 1 tu vas mettre "Joueur - Name of Triggering player" et en string 2 tu vas réutiliser des concatenate strings (avec en string 1 l'espace, très important :p) où tu mettras en string 2 cette fois si la fonction Substring. La fonctino Substring te permet d'utiliser des éléments de la commande (ici la valeur de l'offre) donc tu précises dans quelle chaîne de texte tu veux extraire un élément (ici "Entered chat string"), à partir de quel endroit tu veux extraire (ici on extrait à partir du 7e caractère (offre 3 = le 3 est bien à la 7e place)) et jusqu'à où (ici tu vas jusqu'à la fin de la chaîne de texte donc "Length of (Entered chat string" !
Pour créer une commande p1 c'est plus simple,
Gui:
Trigger:
Déclencheur sans titre 001 Copier
Evénements
Joueur - Joueur 1 (Rouge) types a chat message containing p1 as Une sous-chaîne
Conditions
Actions
Groupe unité - Pick every unit in (Units in Region) and do (Actions)
Boucle - Actions
Unité - Change ownership of (Picked unit) to (Triggering player) and Changer couleur Unité - Move (Picked unit) instantly to (Center of Region_Destination)
Region_Destination est la région où les unités arrivent, et Région est la région où sont les unités du vendeur 1 (car la commande est p1)
Ces deux commandes ne fonctionnent ici que lorsque c'est le joueur 1 qui les écrit, pense à modifier les évènements !
Enfin pour le problème 3, j'ai pas compris quel était le problème donc je peux pas t'aider ^^ _________________
Merci beaucoup pour ta réponse . Et désolé je savais pas ou mettre ce sujet ^^. Je vois ça tout de suite et je te dis si ça fonctionne bien _________________
En fait pour la 3eme partie je pense résoudre le probleme autrement Merci quand meme ^^ Après je passerai a la 2eme partie. A la fin, je présenterai ma map sur le forum _________________
J'ai un autre probleme, pour la partie 2, comment faire pour que quand un acheteur fait p1 par exemple, il verse la somme d'or au vendeur 1, équivalent a ce qu'il avait marqué en faisant offre 1000 par exemple? _________________
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 09/06/11 15:50 Sujet du message:
Gui:
Trigger:
Déclencheur sans titre 001 Copier
Evénements
Joueur - Joueur 1 (Rouge) types a chat message containing p1 as Une sous-chaîne
Conditions
((Triggering player) Or actuel) Supérieur ou égal à (Integer((Substring((Entered chat string), 7, (Length of (Entered chat string))))))
Actions
Joueur - Add ((Integer((Substring((Entered chat string), 7, (Length of (Entered chat string)))))) x -1) to (Triggering player) Or actuel Joueur - Add (Integer((Substring((Entered chat string), 7, (Length of (Entered chat string)))))) to Joueur 1 (Rouge) Or actuel
Groupe unité - Pick every unit in (Units in Region) and do (Actions)
Boucle - Actions
Unité - Change ownership of (Picked unit) to (Triggering player) and Changer couleur Unité - Move (Picked unit) instantly to (Center of Region_Arrivee)
Tu rajoutes une condition et deux actions au déclencheur précédent ^^
Pour passer d'un entier à un texte, tu utilises la fonction "Conversion - Convert String to Integer", et pour les opérations tu utilises la fonction "Arithmetic"
La condition que tu cherches est de type Integer comparaison ! _________________
J'ai un dernier probleme ^^ (promis après je vous embete plus... Normalement! ) : J'ai 2 tableaux affichant l'or des joueur, un pour l'or des acheteur et 1 autre pour celui des vendeurs. Au début j'avais mis seulement le tableau des acheteurs. Puis quand j'ai voulu mettre celui des vendeurs, celui des acheteurs ne s'affiche plus. Or, normalement, j'ai crée une commande pour que le tableau vendeur ne s'affiche QUE quand 1 des vendeurs écrit "score" . Or il s'affiche des le départ, remplaçant le tableau acheteur et en plus les données des vendeurs n'y sont meme pas...
Et aussi, j'ai fais un test avec d'autre joueur pour essayer les commandes, et quand on fait "offre" le probleme est que ça ne marche aps a 100%. Par exemple, sur la carte originale, quand on fait offre 10 000, le prix s'arrete a l'espace. C'est a dire que ça fait offre 10. Alors que dans ma map, ça fait offre 10 000 (or il faudrait mettre 10000 donc sans l'espace). En gros je pourrai mettre carrement une phrase, meme pas de chiffre... Et du coup, l'acheteur ne verse pas d'argent... _________________
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
Posté le: 10/06/11 22:51 Sujet du message:
Pour avoir joué de nombreuses fois à merlin acheteur vendeur, quand on dit "offre phrase aléatoire" l'offre est de 0, au final ça reste fidèle à l'original ^^
J'ai pas trop compris ton histoire de tableau x), montre tes déclos pour voir _________________
En fait, pour les tableaux, j'ai mis pour les 2
"Set {variable du tableau en question} = Last leaderboard create"
Du coup, j'ai qu'un tableau sur les 2 et je ne sais pas par quoi je dois remplacer pour avoir les 2 tableaux.
Et pour le probleme des offres, c'est que du coup, quand un acheteur achete, les unités sont bien téléporté, change de camp, etc... Mais le vendeur ne gagne pas l'argent qu'il devrait avoir... Et du coup meme l'acheteur dépense pas d'argent. C'est pour ça que j'ai posé le probleme de la commande "offre". _________________
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