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=dca71b785d036159a0bfd1aac1413fd6Mé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

Déplacement de côtes

 
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre
Voir le sujet précédent :: Voir le sujet suivant  
Auteur Message
 Kaoss
Membre reconnu


Inscrit le: 25 Fév 2014
Messages: 1164
Sujets: 164
Spécialité en worldedit: La simplicité


MessagePosté le: 11/11/15 13:16    Sujet du message: Déplacement de côtes Citer

Bonjour à tous, existerai-il un moyen de faire en sorte qu'un bateau ne puisse se déplacer que près des côtes ou sur les terrains terre-eau ? Il faudrait en plus que d'autres bateaux puissent s'éloigner des côtes ...

A part créer des régions partout, je ne vois vraiment pas ...

Merci de vos réponses Smile
_________________
Ensemble, nous le pouvons. Sauvons le tchat !
http://worldedit.free.fr/forum/chatbox_mod/chatbox.php


Pseudo Battle.net : Chaos
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Zaitan
Membre honoraire


Inscrit le: 16 Oct 2015
Messages: 219
Sujets: 17
Spécialité en worldedit: Soigner les petits détails


MessagePosté le: 11/11/15 20:15    Sujet du message: Citer

Salut!

Je viens de tester une idée, et elle fonctionne très bien.

J'ai changé le type de mouvement d'un bateau de 'naval' à 'volant'. Ensuite, j'ai entouré l'eau peu profonde de 'bloqueur de chemin air'. Ainsi, une unité navale se déplacera sans problème sur l'eau, et une unité 'volante' ne pourra aller que sur les eaux peu profondes.

Si ta carte utilise aussi des unités volantes, peut-être peux-tu désactiver leurs collisions?

C'est un peu du bricolage, mais au moins ça fonctionne sans que ce soit trop compliqué.

A+
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé Visiter le site web du posteur
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2004
Sujets: 49

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

MessagePosté le: 12/11/15 11:00    Sujet du message: Citer

Le mieux serait en effet de trouver un type de chemin spécifique, dans common.j on a cela:
Jass:

    constant pathingtype        PATHING_TYPE_ANY                = ConvertPathingType(0)
    constant pathingtype        PATHING_TYPE_WALKABILITY        = ConvertPathingType(1)
    constant pathingtype        PATHING_TYPE_FLYABILITY         = ConvertPathingType(2)
    constant pathingtype        PATHING_TYPE_BUILDABILITY       = ConvertPathingType(3)
    constant pathingtype        PATHING_TYPE_PEONHARVESTPATHING = ConvertPathingType(4)
    constant pathingtype        PATHING_TYPE_BLIGHTPATHING      = ConvertPathingType(5)
    constant pathingtype        PATHING_TYPE_FLOATABILITY       = ConvertPathingType(6)
    constant pathingtype        PATHING_TYPE_AMPHIBIOUSPATHING  = ConvertPathingType(7)

//============================================================================
// Terrain API
//
native GetTerrainCliffLevel         takes real x, real y returns integer
native SetWaterBaseColor            takes integer red, integer green, integer blue, integer alpha returns nothing
native SetWaterDeforms              takes boolean val returns nothing
native GetTerrainType               takes real x, real y returns integer
native GetTerrainVariance           takes real x, real y returns integer
native SetTerrainType               takes real x, real y, integer terrainType, integer variation, integer area, integer shape returns nothing
native IsTerrainPathable            takes real x, real y, pathingtype t returns boolean
native SetTerrainPathable           takes real x, real y, pathingtype t, boolean flag returns nothing

Tu n'as pas nécessairement besoin d'utiliser le Jass, tu peux par exemple utiliser si l'éditeur de terrain ne le permet pas, un éditeur de terrain personnalisé.

Pour terrain type le GUI nous renseigne ce que c'est:
Gui:
Trigger:
Environment - Change terrain type at (Center of (Playable map area)) to Lordaeron Summer - Dirt using variation -1 in an area of size 1 and shape Circle

Le terrain type désigne le tileset à utiliser.

SetTerrainPathable permet de changer le type de chemin d'une cellule aux coordonnées spécifiées, par exemple PATHING_TYPE_WALKABILITY sert à indiquer si une unité peut marcher dessus. Ce qui est intéressant c'est qu'il s'agit d'un flag, c'est à dire qu'une cellule peut avoir plusieurs pathingtype différents de définis.

Il te faut donc choisir un type de chemin non utilisé dans ta carte (exemple amphibious), l'employer pour tes embarcations et définir le flag tout autour des côtes.
Par déclencheur tu peux le faire avec IsTerrainPathable et calculer la distance à la terre ferme ou la hauteur des fonds marins.


EDIT: J'ai fait un déclencheur de teste avec une unité amphibienne
Gui:
Trigger:
Actions
Set mapWidth = (Width of (Entire map))
Set mapHeight = (Height of (Entire map))
Set widthCellCount = (Integer((mapWidth / Largeur cellule)))
Set heigthCellCount = (Integer((mapHeight / Largeur cellule)))
Set mapOrigin = (Point((Min X of (Entire map)), (Min Y of (Entire map))))
Collapse For each (Integer xIndex) from 0 to widthCellCount, do (Actions)
Collapse Boucle - Actions
Collapse For each (Integer yIndex) from 0 to heigthCellCount, do (Actions)
Collapse Boucle - Actions
Set cellLocation = (mapOrigin offset by (((Real(xIndex)) x Largeur cellule), ((Real(yIndex)) x Largeur cellule)))
Collapse If (All Conditions are True) then do (Then Actions) else do (Else Actions)
Collapse Si - Conditions
(Terrain pathing at cellLocation of type En marchant is off) Egal à  FALSE
(Terrain pathing at cellLocation of type Flottant is off) Egal à  FALSE
Collapse Alors - Actions
Effet spécial - Create a special effect at cellLocation using DoodadsRuinsWaterSeaweed0Seaweed00.mdl
Environnement - Set terrain pathing at cellLocation of type Chemin amphibie to On
Collapse Sinon - Actions
Effet spécial - Create a special effect at cellLocation using DoodadsBarrensPlantsBarrens_TreeDoodadBarrens_TreeDoodad9.mdl
Environnement - Set terrain pathing at cellLocation of type Chemin amphibie to Off

Cela empêche bien l'unité d'aller dans l'eau profonde, par contre l'unité peut marcher sur terre alors que la terre a bien le flag amphibious retiré. J'en conclus que le type amphibien d'une unité lui permet de marcher sur les terrains avec le flag amphibious et walkable, le nom porte à confusion.
Tu peux rechercher avec un autre flag de chemin et trouver un qui convient, le tout est de savoir quel type de mouvement permet d'aller sur quel type de terrain.
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
 Kaoss
Membre reconnu


Inscrit le: 25 Fév 2014
Messages: 1164
Sujets: 164
Spécialité en worldedit: La simplicité


MessagePosté le: 12/11/15 13:21    Sujet du message: Citer

Merci beaucoup, je vais examiner ces 1 solutions vendredi soir ...

Par contre, tous ces bricolage ne vont-ils pas faire lagger la carte ?parce que dans la map concernée, on contrôle beaucoup d'unités
_________________
Ensemble, nous le pouvons. Sauvons le tchat !
http://worldedit.free.fr/forum/chatbox_mod/chatbox.php


Pseudo Battle.net : Chaos
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé
 Ayane
Bot administrateur


Inscrit le: 17 Sep 2007
Messages: 2004
Sujets: 49

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

MessagePosté le: 12/11/15 19:38    Sujet du message: Citer

Le terrain d'une carte est stocké sur une grille composé de cellules allouée au chargement de la carte à partir des données chargées des fichiers.
Une cellule contient plusieurs données dont un flag de chemin qui nous intéresse.
Il alloue également une grille supérieure de collisions pour les doodads qui a une plus grande précision que les cellules.
Lorsqu'une unité se déplace le gestionnaire de collisions va tester les différentes couches de collision, si il en rencontre une qu'il ne peut pas traverser alors l'unité ne pourra pas la traverser:
- Vérifie les données des cellules (terrain pathing type).
- Vérifie la couche de collision des doodads.
- Vérifie la collision avec les autres objets (unités).

Ma solution c'est juste de changer la valeur de la variable de chaque cellule, cela boucle seulement sur toutes les cellules à l'initialisation, cela devrait prendre moins de 1ms.

La solution Zaitan place pleins de doodads sans réel modèle 3D qui vont modifier la couche de collision des doodads, je ne suis pas sûr de comment ils sont gérés, mais cela ne devrait normalement pas trop gêner l'exécution. Le défaut c'est que tu dois placer manuellement en faisant attention à ne pas faire de trou, et si tu modifie le terrain tu devra modifier les bloqueurs.

Il y a également la solution de modifier les fichiers de chemin qui sont chargées avec la carte (et donc générés à la sauvegarde de la carte).
_________________
Revenir en haut
Voir le profil de l'utilisateur Envoyer un message privé MSN Messenger
Montrer les messages depuis:   
Poster un nouveau sujet   Répondre au sujet    Worldedit Index du Forum -> Autre Toutes les heures sont au format GMT + 1 Heure
Page 1 sur 1

 
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