Voir le sujet précédent :: Voir le sujet suivant |
Auteur |
Message |
rgf Membre reconnu
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
|
|
Revenir en haut |
|
|
Zaitan Membre honoraire
Inscrit le: 16 Oct 2015 Messages: 219 Sujets: 17 Spécialité en worldedit: Soigner les petits détails
|
Posté le: 04/03/16 23:37 Sujet du message: |
|
|
rfg, je t'avouerais que je n'ai pas bien compris comment ce que tu me proposes fonctionne.
Je suis toutefois en train d'essayer de comprendre comment fonctionne les hashtables. Ça a l'air génial quand on sait bien s'en servir!
Par contre, ça fonctionne pas encore. J'arrive pas à scanner le terrain de manière efficace. Voici comment je m'y prend pour un essai:
Comme je peux pas stocker des types de terrains, je les transforme en entiers avec des conditions.
Je scan un petit terrain de 3x3 cases. Il me semble qu'une case mesure 128x128 (c'est ce que j'ai trouvé comme info sur l'éditeur). Alors pour chaque x et y, je déplace la zone à scanner de 128.
J'ai mis une déclencheur texte pour m'indiquer le résultat des scans et je n'obtient que des 0.
Bref. Si vous voyez mon erreur, je suis intéressé. Si vous scanneriez différemment, je serais aussi intéressé. _________________
|
|
Revenir en haut |
|
|
rgf Membre reconnu
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
|
|
Revenir en haut |
|
|
Zaitan Membre honoraire
Inscrit le: 16 Oct 2015 Messages: 219 Sujets: 17 Spécialité en worldedit: Soigner les petits détails
|
Posté le: 05/03/16 15:32 Sujet du message: |
|
|
Ok RGF. Ta solution me semble meilleure. Mais je ne comprend pas comment enregistrer à la fois le terrain avant qu'il soit modifié, sa position sur la carte et comment le restituer ensuite.
En fait, tu me montres des variables: 'cases[compteurCase]' et 'casesPosition[compteurCase]' dont je ne connais pas le type. Donc je comprend pas comment ça marche.
Voici comment je génère la flétrissure. Tu verras, c'est vraiment du bricolage mais je savais pas comment faire autrement.
_________________
|
|
Revenir en haut |
|
|
rgf Membre reconnu
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
|
Posté le: 05/03/16 17:31 Sujet du message: |
|
|
Les variables cases et casesPosition sont des variables à déploiement, des tableaux en gros. Ce sont des variables qui lient un index (un entier) à une donnée du type de la variable à déploiement. Tu dois pouvoir trouver des précisions là-dessus sur le forum ou ailleurs ^^
Pour les créer tu fais quelque chose comme ça :
Pour casesPosition, c'est pareil mais le type de variable est "Point".
compteurCase est une variable simple de type Entier.
Il faut alors reprendre les déclencheurs que j'avais donné plus haut :
avant chaque génération de flétrissure (Order unit to use last created item) tu mets ces trois lignes :
Elles servent à stocker la position de la case dans casesPosition à l'index compteurCase et le type de terrain dans cases au même index.
Ensuite on incrémente l'index (on lui ajoute 1) pour avancer dans le tableau et remplir la suite des variables à déploiement.
En gros, là on remplit d'abord cases[0] et casesPosition[0] car compteurCase vaut 0 au départ, puis cases[1] et casesPosition[1] car on a incrémenté compteurCase etc...
Quand tu veux relancer la game, tu insères ces lignes :
Gui: | Trigger: Actions |
Elles vont itérer sur tous les index des deux variables à déploiement (Integer A prend successivement les valeurs 0, 1, ... jusqu'à compteurCase qui est le dernier index ayant été utilisé durant la partie) et pour chaque index de 0 à compteurCase on remet le type de terrain à celui que tu as sauvegardé dans cases[index] à la position casesPosition[index].
On oublie pas de remettre compteurCase à 0 pour réinitialiser le système.
Si ce n'est pas assez clair n'hésite pas à poser des questions ! _________________
Croâh ?
|
|
Revenir en haut |
|
|
Zaitan Membre honoraire
Inscrit le: 16 Oct 2015 Messages: 219 Sujets: 17 Spécialité en worldedit: Soigner les petits détails
|
Posté le: 06/03/16 15:16 Sujet du message: |
|
|
Merci RGF! Je connaissais pas le déploiement! C'est tellement plus simple d'utiliser ça! Merci!
Toutefois, je ne sais pas comment lancer la compétence 'dissipation' du prêtre par déclencheur! _________________
|
|
Revenir en haut |
|
|
rgf Membre reconnu
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
|
|
Revenir en haut |
|
|
Zaitan Membre honoraire
Inscrit le: 16 Oct 2015 Messages: 219 Sujets: 17 Spécialité en worldedit: Soigner les petits détails
|
Posté le: 06/03/16 21:49 Sujet du message: |
|
|
Je sais utiliser un dummy, faire des portées globales et tout ça, c'est juste que je ne sais pas comment lui ordonner de lancer le sort 'dissipation' du prêtre. Je ne trouve pas ça dans les déclencheurs. _________________
|
|
Revenir en haut |
|
|
rgf Membre reconnu
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
|
Posté le: 06/03/16 23:07 Sujet du message: |
|
|
Effectivement, en fait je sais pas pourquoi mais l'ordre se trouve dans les ordres unités et pas dans les ordres points.
Tu peux utiliser le jass pour ça :
Gui: | Trigger: Custom script: call IssuePointOrderLoc(udg_dummyUnit, 852057, casesPosition[GetForLoopIndexA()]) |
_________________
Croâh ?
|
|
Revenir en haut |
|
|
Zaitan Membre honoraire
Inscrit le: 16 Oct 2015 Messages: 219 Sujets: 17 Spécialité en worldedit: Soigner les petits détails
|
Posté le: 11/03/16 09:42 Sujet du message: |
|
|
J'ai mis du temps à répondre car j'ai eu très peu de temps pour reprendre Worldedit cette semaine.
Merci beaucoup rgf. Je vois maintenant beaucoup mieux comment m'y prendre.
J'ai toutefois encore un problème: la flétrissure change également le terrain autour d'elle en terre abîmée, qu'elle soit crée par déclencheur ou par compétence. Est-il possible d'éviter cela? _________________
|
|
Revenir en haut |
|
|
BasuraHead Ptit Nouveau
Inscrit le: 13 Fév 2016 Messages: 26 Sujets: 1 Spécialité en worldedit: Imaginer des choses que je n'implémenterais jamais
|
Posté le: 11/03/16 17:33 Sujet du message: |
|
|
Je ne suis pas sur qu'utiliser la compétence du prêtre soit la bonne solution puisqu'elle ne restaure pas le terrain précédent mais le transforme en dirt. Cela dit, l'action Environment - Create/Remove Blight devrait fonctionner. Je ne sais pas bien pourquoi elle demande de choisir un joueur mais ça n'est probablement pas important. C'est peut-être afin de désigner un joueur en particulier comme source de l'action, étant donné que la flétrissure est un élément de gameplay avec lequel on peut interagir (création/destruction) et pas simplement une partie du tileset. Fais des tests si tu as le temps, ce sera sans doute le plus simple.
Pour ce qui est des arbres, dissipation fonctionne bien et il n'existe pas d'action analogue à celle disponible pour les tuiles. Il faut juste faire attention à bien restaurer le terrain par déclencheur afin de ne pas se retrouver avec de la dirt en dessous ensuite. Sinon la solution alternative serait de remplacer directement les arbres flétris par des arbres non flétris, mais je ne pense pas qu'une solution soit plus intéressante que l'autre étant donné que tu manipules déjà les tuiles.
Pour ce qui est de ton problème de tuiles adjacentes, je ne sais pas s'il y existe une solution simple étant donné que les mécaniques associées à la flétrissure ne sont pas modifiables directement. La solution qui découle logiquement du système de stockage de l'information du terrain c'est de stocker, au lancement de la compétence, l'information des cases adjacentes à la case flétrie et de les restaurer immédiatement après. Cela dit, il est bien possible que ça soit perceptible par le joueur (et donc un peu moche) mais ça vaut peut-être le coup de tester.
L'autre solution serait de ne pas utiliser flétrissure. En fait, tu pourrais remplacer la texture d'une tuile non utilisée de ton tileset par la texture de flétrissure et l'utiliser comme un terrain normal. Tu pourrais interragir très simplement avec chaque tuile en utilisant l'action Environment - Change Terrain Type in (Region) to (Type), ce qui devrait en toute logique épargner les cases adjacentes. Cela dit, tu devrais manuellement flétrir les arbres en les remplaçant. Tu perdrais également le bonus de régénération aux morts-vivants, ce que tu peux recréer toi-même mais qui demande du travail supplémentaire. Enfin, disparaitraient également les nuages verts qui apparaissent sur la flétrissure par endroits (ce qui n'est probablement pas une grande perte).
Cela étant dit, je me disais que tu allais peut-être avoir un problème dans certains cas: quand tu enregistres l'information d'une case, vérifie bien que tu ne l'as pas déjà enregistré précédemment. Sinon, si le terrain a déjà été flétri ou même modifié, tu enregistreras plusieurs fois la même tuiles et ce avec des informations erronées.
Cela dit, tu peux y palier très simplement en restaurant les tuiles dans l'ordre inverse du tableau car la première itération de l'enregistrement (la bonne) sera la dernière appliquée.
EDIT: C'est probablement la meilleure solution en fait. Tu ne stockes que peu d'information superflue et tu évites les vérifications systématiques qui ont un cout important. Tant que tu n'utilises pas les informations stockées pour autre chose c'est nickel.
A voir ce que rgf en pense, il saura sans doute mieux que moi te conseiller la solution la plus efficace. _________________
Dernière édition par BasuraHead le 12/03/16 11:49; édité 2 fois |
|
Revenir en haut |
|
|
Zaitan Membre honoraire
Inscrit le: 16 Oct 2015 Messages: 219 Sujets: 17 Spécialité en worldedit: Soigner les petits détails
|
Posté le: 11/03/16 19:33 Sujet du message: |
|
|
Merci pour ta réponse.
Ça devient vraiment compliqué pour pas grand chose sur la map, mais j'ai quand même envie de réussir.
En fait, le déclencheur qui met ou enlève la flétrissure ne fonctionne pas pour enlever la flétrissure posée par une compétence (crâne sacrificiel). Je vais donc voir comment je peux la placer autrement. _________________
|
|
Revenir en haut |
|
|
BasuraHead Ptit Nouveau
Inscrit le: 13 Fév 2016 Messages: 26 Sujets: 1 Spécialité en worldedit: Imaginer des choses que je n'implémenterais jamais
|
Posté le: 12/03/16 11:41 Sujet du message: |
|
|
Tu peux la créer directement avec la même action, Environment - Create/Remove Blight. _________________
|
|
Revenir en haut |
|
|
Zaitan Membre honoraire
Inscrit le: 16 Oct 2015 Messages: 219 Sujets: 17 Spécialité en worldedit: Soigner les petits détails
|
Posté le: 12/03/16 14:34 Sujet du message: |
|
|
Oui c'est ce que je pense faire.
Je vous tiendrai au courant quand j'aurai avancé. _________________
|
|
Revenir en haut |
|
|
rgf Membre reconnu
Inscrit le: 09 Mar 2009 Messages: 1154 Sujets: 54 Spécialité en worldedit: Croâ ?
|
|
Revenir en haut |
|
|
|