[Module] Utiliser la carte du monde

Répondre
Partager Rechercher
Bonjour à tous !!!

Comme indiqué dans l'intitulé, j'aimerais créer une campagne qui permette de naviguer entre chaque zone de la carte du monde .... un peu comme BG ...st
Si on imagine sur une carte, par exemple, 2 villes avec 3 zones qui relient ces deux villes ...J'aimerai que le joueurs passent par ces 3 zones afin de se rendre d'une ville à l'autre ....
Ce qui est bien dans BG, c'est que le joueur à le choix, il peut se rendre d'une zone à une autre sans passer par les zones intermédiaires...mais il peut aussi passer par toutes les zones si il veut .... Moi je ne sais pas si les deux choix sont possibles, donc par défaut je préfère qu'ils soient obligés de passer par certaines zones si il veut aller d'un point à un autre sur la carte du monde ...

Donc pour cela j'ai soigneusement lu le tutorial de Sebajuste sur la création de la carte du monde .... Et forcément, pb ... :
Je n'arrive pas à entrer dans la carte du monde... J'ai placé un déclencheur de type : transition vers la carte du monde ... j'ai paramétré comme le tuto de Sebajuste à indiqué :

https://forums.jeuxonline.info/showt...carte+du+monde

j'ai configurer les valeurs sMap et sOrigin de la transition avec mes tag à moi ( ma carte du monde s'appelle "yrymap" et le tag de la zone de départ est "np")
j'ai également créer un script comme écrit dans le tuto que j'ai placé dans le déclenchement par clic ...

Bref...quand je lance ma campagne et que je me trouve dans ma première zone, devant ma première transition vers la carte du monde, hé ben j'ai beau cliké sur cette zone et marché sur la transition avec mon PJ ....rien ne se passe...mais rien de rien meme pas un chargement ....comme si je marchais sur un sol normal quoi ...
Au secours ....
squall


[Edit Deyonara : Titre modifié pour mieux coller au sujet]
Essaye déjà en utilisant tout bêtement le script suivant :
Code PHP:

void main()
{
    
object oPC GetClickingObject();

    
ShowWorldMap("nom_de_la_carte"oPC"tag_de_la_zone");

Script à mettre dans l'événement "Script déclenché par un clic" de ton déclencheur.

Assure-toi aussi, dans la section "Piège" (?!) des propriétés de ton déclencheur, que le paramètre "Type de déclencheur" affiche bien "Transition de zone".


[Edit]Pour que les scripts d'une carte du monde puissent fonctionner, il faut mettre les informations suivantes en variable locale sur le joueur :
Code PHP:

void main()
{
    
object oPC GetClickingObject();

    
SetLocalString(oPC"00_sWORLD_MAP_NAME""Nom_de_la_carte");
    
SetLocalString(oPC"00_sWORLD_MAP_HOTSPOT_ORIGIN""Tag_de_la_zone_en_cours");

    
ShowWorldMap("Nom_de_la_carte"oPC"Tag_de_la_zone_en_cours");

Merci beaucoup pour ces réponses !!
Mais quand tu dis que pour que les scripts d'une carte du monde puissent fonctionner, il faut mettre les informations suivantes en variable locale sur le joueur ...

C'est à dire? il faut les mettre ou exactement ces info? que veut tu dire par variable locale sur le joueur ?
merci
Ok j'ai fais ce que tu m'as dit ...et toujours rien ....je comprend pas...j'ai l'impression que le jeu n'arrive pas à lier ma carte avec mon module et ma campagne ....
D'ailleurs, lorsque je clique sur l'option "paramétrér le module pour utiliser la campagne sélectionné" (dans léditeur de campagne) ... j'ai un message bizarre...très bizarre meme ^^ qui me dit :

"vous devez sauvegarder votre module pour actualiser ses informations de campagne, puis l'ouvrir à nouveau pour utiliser l'une des ressources mises à jour suite à la modification de la campagne..."

Et à chaque fois que je clique sur ce bouton, il me dit ça, meme si je suis ce que ce message me dit ....et bien sur quand je clique sur ok, ya rien qui se passe ...

Pfff jsuis un peu perdu moi ....
Bon...je pense que c'est parce que ma carte doit etre mal paramétrée , vu que je ne comprends pas bien ce que tu m'as dit plus haut, ua niveau de la variable locale...

Lorsque je charge une carte originale de nwn , ça marche (enfin presque puisque ce n'est pas les bon modules) mais au moins j'ai un écran de map qui se charge ...donc je pense que le problème doit venir de la liaison entre mon module et la map..
please.....help
Citation :
"vous devez sauvegarder votre module pour actualiser ses informations de campagne, puis l'ouvrir à nouveau pour utiliser l'une des ressources mises à jour suite à la modification de la campagne..."
Il faut dans l'ordre :

- Paramétrer le module pour le campagne (donc ça c'est bon).

- Comme dit le message, sauver et fermer le module (tu peux éventuellement relancer l'éditeur).

- Rouvrir le module, et faire une nouvelle carte pour ta nouvelle campagne.


Assure-toi de bien copier tous les fichiers TGA nécessaires dans ton répertoire de campagne (quand je dis tout, c'est tout : la carte, les icônes que tu utilises, etc).

Ensuite tu peux reprendre convenablement le tutoriel que tu as mis en lien.


Une fois tout ça de fait, utilise un script tout bête pour tester la carte :
Code PHP:

void main()
{
    
object oPC GetClickingObject();

    
ShowWorldMap("nom_de_la_carte"oPC"lieu_d'origine");

Pour les variables, je te propose de voir ça quand ta carte s'affichera correctement. Histoire qu'on ne se mélange pas les pinceaux. ^^
Ok ...alors je suppose que ce message est normal alors ... Je m'inquiétais juste de nde voir rien dautre que ce message quand je cliquais sur "paramétrer le module pour la campagne.."
ok ...
mais bon ça marche toujouirs pas .... ..Peut etre que je ne place pas le script au bon endroit .... pourtant j'ai tout fait comme ta dis , j'ai tout vérifié et revérifié ....
ça vient peut etre du type de délcencheur? j'ai pris un déclencheur de type "transition vers la carte du monde" ....
ou alors il faut mettre le module dans le meme dossier que la campagne....
sinon tu me disais un truc a propose des variables locale sur le joueur sinon, la carte ne marche pas ....c'est peut etre ça ? ....

Personne n'a de modules d'exemples à faire partager histoire que je compare un peu ......mici beaucoup!!!!
squall
ha oui ...au fait, ça fait longtemps que je n'étais pas venu sur le forum ...depuis nwn 1 en fait....c'est les capacités du deuxième volet qui m'ont poussé à me remettre....J'ai donc vu que c'est la grande Deyonara qui m'a répondu en personne !!! Je n'avais pas encore vu tout tes post it ..mais franchement, t'es superbe !!! bravo pour ton lexique script, il est vraiment complet et super utile... dommage que je n'ai pas vu la fonction gtr_world_map ^^ ...lol.. je pense qu'elle peut concerner mon problème mais bon...j'ai pas vraiment le niveau pour m'y mettre...et là encore je te dis merci car tes tuto pour le script sont génial ...
Bref, le temps de lacher mon clavier et "standing ovation" pour Deyonara ....On a de la chance d'avoir une femme aussi forte en nwnscript pour nous aider !!! tes modules doivent être des pur meirveille !!!

Bon allez j'arrête
Merci
Squall
Alors... J'ai enfin réussi à faire marcher cette carte du monde.

Pour ce qui est des manipulations, j'ai donc fait ceci dans l'ordre :

Ouvrir le module principal

Créer une nouvelle campagne
  1. Ouvrir le menu "Plug-ins" et cliquer sur "Editeur de campagne". Dans la fenêtre des campagnes, cliquer sur "Ajouter campagne" et sélectionner "New Campaign" qui vient d'apparaître dans la partie gauche de la fenêtre.
  2. Définir les propriétés de la nouvelle campagne :
    • Description : Description de la campagne, affichée en jeu
    • Display Name : Le nom de la campagne, affiché en jeu.
    • Name : C'est le nom interne de la campagne, ainsi que le nom du sous-répertoire créé dans le répertoire "Campaign".
    • KeepJournalSynchedToLeader : Pour un module persistant, il vaut mieux mettre False afin que les joueurs ne synchronisent pas leur journal de quêtes. Pour un module multi-joueur de type "Scenario" ou pour une vraie campagne, on peut mettre True.
    • NoCharacterChanging : D'après le nom, mettre True empêcherait le joueur de séletionner un autre personnage à chaque reconnexion. Pour un module persistant, mieux vaut mettre False.
    • StartingModule : C'est le nom du fichier (sans l'extension), ou le nom du répertoire, du module de départ.
  3. Ajouter un module dans la campagne, deux méthodes possibles :
    • Dans le champ "Modules de campagne" entrez le nom du fichier (avec l'extension), ou du répertoire, du module à incorporer. Cliquer sur le bouton "Ajouter", à droite du champ, pour confirmer (ne vous trompez pas dans le nom).
    • Sous le champ "Modules de campagne", cliquez sur le bouton "Module de" pour rajouter un répertoire, ou sur "Ajouter" pour rajouter un fichier MOD.
    • En cas d'erreur, sélectionner le module dans la liste et cliquer sur "Supprimer".
  4. Cliquer sur "Sauvegarder campagne".
  5. Cliquer sur "Paramétrer le module pour utiliser la campagne sélectionnée".
  6. Fermer l'éditeur de campagne.
Sauvegarder, puis ouvrir à nouveau le module principal
Il faut paramétrer le module correctement afin d'éviter tout problème de chargement. Pour cela, ouvrir le menu "Voir", et cliquer sur "Propriétés module".
  • Nom du module : Mettre un nom différent du nom de fichier (ou du répertoire) du module.
  • Tag du module : Procéder comme ci-dessus.
Créer une nouvelle carte
  1. Mettre les fichiers nécessaires à la création de la nouvelle carte dans le répertoire de votre campagne. Pour les icônes, vous pourrez les trouver dans le répertoire "Campaign\Neverwinter Nights 2 Campaign" du jeu.
  2. Ouvrir le menu "Plug-ins" et cliquer sur "Editeur de la carte du monde". Dans la fenêtre de la carte du monde, ouvrir le menu "Fichier" et cliquer sur "Nouveau".
  3. Définir les propriétés de la nouvelle carte :
    • Height : Mettre 647.
    • Width : Mettre 647.
    • WorldMapName : Le nom de la carte, affiché en jeu.
  4. Cliquer sur "Ajouter", et cliquer à un endroit de la carte pour rajouter un lieu. Il s'affichera alors sur la carte et dans la liste (située à gauche de la fenêtre). Cliquer sur "Choisir" pour ne pas ajouter un lieu par erreur.
  5. Sélectionner le lieu créé (directement sur la carte, ou dans la liste) et définir ses propriétés :
    • ActionScript : Ce script s'exécutera lorsque ce lieu sera sélectionné, et que le joueur aura cliqué sur le bouton "Voyager". Ce script doit être stocké dans le répertoire de votre campagne.
    • ConditionScript : Ce script permet de définir des conditions pour que ce lieu puisse s'afficher sur la carte. Ne pas définir de script revient à laisser ce lieu constamment disponible. Ce script doit être stocké dans le répertoire de votre campagne.
    • Image : Le fichier image du lieu (par ex. "m_village_normal.tga"). Ce fichier doit être situé dans le répertoire de votre campagne.
    • ImageMouseOver : Le fichier image du lieu affiché lorsque la souris passera dessus (par ex. "m_village_hover.tga"). Ce fichier doit être situé dans le répertoire de votre campagne.
    • Image : Le fichier image du lieu affiché lorsqu'il sera sélectionné (par ex. "m_village_pressed.tga"). Ce fichier doit être situé dans le répertoire de votre campagne.
    • DisplayName : Le nom du lieu, affiché en jeu.
    • Height : Mettre 32.
    • Name : Le nom interne du lieu, son Tag.
    • Width : Mettre 32.
  6. Sauvegarder la carte, en évitant d'utiliser des lettres majuscules dans le nom.
Tester la nouvelle carte :
Pour tester, j'ai utilisé le déclencheur prévu à cet effet ("Blueprints" -> "Déclencheurs" -> "Vide" -> "Transition vers la carte du monde"), ainsi qu'un plaçable.

Pour le déclencheur, j'ai uniquement modifié ses variables "sMap" et "sOrigin". Pour "sMap", j'ai mis le nom du fichier de la carte du monde (sans l'extension); pour "sOrigin", j'ai mis le nom interne du lieu (paramètre "Name" du lieu dans l'éditeur de la carte du monde) où le joueur est sensé être.

Pour le plaçable, j'ai utilisé un script de test tout bête, que j'ai mis dans l'événement "OnUsed" :
Code PHP:

void main()
{
    
string sMap "Le nom du fichier de la carte, sans l'extension";
    
string sOrigin "Le nom interne du lieu sur la carte";

    
ShowWorldMap(sMapGetLastUsedBy(), sOrigin);

Enfin j'ai fait un dernier test en ouvrant le menu du joueur, et en cliquant sur "Carte du monde".

A savoir qu'il ne sagit que d'un script de test. Pour que la carte soit pleinement utilisable, il faudra en plus coller deux variables locales sur le joueur (enfin, à ce qu'il paraît):
Code PHP:

// Evénement "OnClick" d'un déclencheur de type "Transition vers la carte du monde".

void main()
{
    
object oPC GetClickingObject();

    
string sMap "Le nom du fichier de la carte, sans l'extension";
    
string sOrigin "Le nom interne du lieu sur la carte";

    
SetLocalString(oPC,"00_sWORLD_MAP_NAME",sMap);
    
SetLocalString(oPC,"00_sWORLD_MAP_HOTSPOT_ORIGIN",sOrigin);

    
ShowWorldMap(sMap,oPC,sOrigin);


[Auto-edit : Rajout du script dont le fonctionnement est recommandé par Obsidian]
Je remonte ce sujet si des intéressés sont... intéressés.

Quelque soit le module (en ligne ou pas), il est toujours utile de savoir comment utiliser la carte du monde. D'autant que le mode "campagne" n'oblige pas à inclure plusieurs module.
Thumbs up
Merci pour ce tuto très bien detaillé.

Concernant le multijoueur, il faut que les joueurs possedent également ce fichier .wmp? Avec le fichier tga? Quelqu'un pourrait continuer le tuto précedent pour les serveurs multi svp? merci
Sarcastique
Citation :
Publié par Cedric@Shed
Merci pour ce tuto très bien détaillé.

Concernant le multijoueur, il faut que les joueurs possèdent également ce fichier .wmp? Avec le fichier tga? Quelqu'un pourrait continuer le tuto précèdent pour les serveurs multi svp? merci
Personne?? Tout le monde est en vacances loin de son PC?
C'est beaucoup moins utile maintenant avec la nouvelle façon de se déplacer sur la carte elle même.

A moins de faire une méta-Carte pour tous les modules et permettant de voyager de région en région ?
Je remonte ce sujet car j'aurais une question en rapport avec le sujet de départ. J'ai mis une carte du monde (tout fonctionne, les transports se font correctement, tout baigne) seulement je voudrais que les zones n'apparaissent sur la carte qu'après que le joueur y soit déja entré une fois par ses propres moyens, ou a défaut la première fois qu'il utilise le transporteur qui l'amène à la carte du monde du côté de cette zone (si il sort à l'ouest, je voudrais qu'il est accès à la zone juste à l'ouest).

Comment dois-je faire ?
Réponse rapide avant d'être privé d'Internet quelques jours, non ce n'est pas Hadopi, c'est les vacances .

Tu peux conditionner l'apparition d'une zone dans la carte du monde par un script à placer dans la propriété ConditionalScript de l'éditeur de carte.

Exemple :

sd_is_visible("q_rrrrr", 10)

Code PHP:

// check if area visible in the world map

int StartingConditional(string sQuestint nState)
{
    return((
GetJournalEntry(sQuestGetFirstPC()) >= nState)); 

La zone est visible si la quête q_rrrr a au moins atteint le niveau 10. On peut évidemment utiliser tout script de type StartConditional qui renvoie vrai ou faux. Par exemple tester une variable globale.
Comment puis-je faire pour le faire apparaitre lors de l'utilisation d'une transition vers la carte du monde ? Autre question, y-a-t-il un moyen pour que la carte du monde dirige vers des points d'arrivées différents en fonction du point d'entrée sur la carte du monde ?

Pour être plus clair, si j'arrive sur la carte du monde par une zone située au sud et que je veux aller au nord, y-a-t-il moyen de faire en sorte que j'entre sur la carte d'arrivée par le sud ?
je up un peu ma question précédente, et j'en ai une nouvelle (oui, je fais feu de tout bois ! ):

j'ai remarqué que la carte du monde ne devient active que lorsque l'on utilise un point transportant vers elle pour la première fois, d'où ma question, comment la rendre active dès le départ ?
Oui, c'est possible. Il te faudra tester une variable globale ou locale au module de départ dans le script que tu indiques dans l'ActionScript du point de la carte d'arrivée.

Si la zone de départ est au Sud et la zone de départ au Nord.

Positionner la variable Depuis par SetLocalInt(GetModule(), "Depuis", 1) par exemple dans le OnEnter de la zone où se trouve la transition carte du monde

Puis dans le script d'action

if (GetLocalInt(GetModule(), "Depuis")==1)

envoyer le groupe au point Sud de la zone Nord

else

envoyer le groupe au point nord de la zone nord

Évidemment on peut prévoir plusieurs valeurs de la variable Depuis pour les différentes directions.


Je vais faire un truc de ce genre (pas une question de direction, mais une question de première fois ou pas) pour mon nouveau mod. Je posterai l'exemple.
Vu que j'y ai répondu sur un autre post, je le copie ici vu que ça a trait au sujet initiale:

pour faire apparaître les zones sur la carte du monde lors de l'utilisation d'un point de transition vers la carte du monde, il suffit de rajouter ce simple morceau de code à celui du point de transition:


Code PHP:

void main(string sMapPoint)
{
SetGlobalInt (sMapPoint "_visible"TRUE);

en remplaçant le "sMapPoint" derrière "SetGlobalInt" par le nom de votre zone dans l'éditeur de carte du monde.

Ensuite, pour vérifier la visibilité de la zone, utiliser ce code:


Code PHP:

int StartingConditional(string sMapPoint)
{
return 
GetGlobalInt(sMapPoint "_visible");

Il suffit de l'utiliser dans l'éditeur de carte du monde pour qu'il demande automatiquement le nom de la zone.

(encore merci au tutorial de Sunjammer pour ces infos)

Voilà, en espérant que ça aide d'autres personnes.
Répondre

Connectés sur ce fil

 
1 connecté (0 membre et 1 invité) Afficher la liste détaillée des connectés