Oyez, oyez !

Les résultats du vote sur les meilleurs RPG de tous les temps sont désormais dévoilés dans ce message !

Merci à toutes et à tous pour votre participation !

N'hésitez pas à aller commenter, ajouter des jeux auxquels vous n'auriez pas pensé...

[WMP] Modification du fichier worldmap.wmp et compatibilité avec d'autres mods

Répondre
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne

[WMP] Modification du fichier worldmap.wmp et compatibilité avec d'autres mods

.

Message par mirandir »

Hello,

J'ai quelques petites questions concernant la modification du fichier worldmap.wmp, pour un mod que je suis en train de créer (presque terminé d'ailleurs ^^ ).
Ce mod nécessite le BG1NPC (et donc BGT).

Dans ce mod, j'ai ajouté une "rencontre aléatoire" qui se déclenche quand on quitte la ville de Nashkel (les fameuses cartes où « Les ennemis vous attaquent, défendez-vous », qui s'affichent aléatoirement quand on voyage d'une zone à une autre dans BG1).

Au niveau technique, le fichier worldmap.wmp contient pour chaque carte du jeu la liste des éventuelles cartes sur lesquelles on peut se faire attaquer durant un voyage, avec un probabilité de déclenchement (je ne sais pas si je suis clair ?).

Pour ajouter ma nouvelle carte à la liste des "rencontres aléatoires" en partance de Nashkel, je patche le fichier worldmap.wmp lors de l'installation du mod, avec WeiDU.

Mon code ressemble à ça :

Code : Tout sélectionner

COPY_EXISTING ~worldmap.wmp~ ~override/worldmap.wmp~
WRITE_ASCII 0xf9ac ~manouvellecarte~
WRITE_ASCII 0xfdec ~manouvellecarte~
WRITE_ASCII 0xfc3c ~manouvellecarte~

Première question : est-ce une "bonne" façon de faire, ou y a-t-il mieux pour parvenir à mes fins ? Je n'ai rien vu de tel dans la documentation de WeiDU et lors de mes recherches, mais sait-on jamais ^^ .

Dans tous les cas, ce code marche (ce qui est déjà bien !!), mais c'est parce que le fichier worldmap.wmp est toujours le même après une installation de BGT (du moins d'après mes tests, peut-être que ce n'est pas toujours le cas ?).

Mon problème vient des autres mods qui modifient le fichier worldmap.wmp, et notamment le fameux WorldMap.


Deuxième question : y-a-t-il beaucoup d'autres mods qui modifient le fichier worldmap.wmp ?

Et si j'ai bien compris, le mod WorldMap est amené à être installé en dernier (ou pas loin) pour des raisons de compatibilité, ce qui veut dire qu'il va modifier le fichier worldmap.wmp et écraser les modifications faites auparavant par mon mod. J'ai testé et effectivement, c'est ce qu'il semble se passer.


Ma troisième question est donc : est-ce possible de gérer ça, pour rendre mon mod compatible avec WorldMap ?

N'hésitez à me demander plus de détails si je ne suis pas clair :gign:

Et merci d'avance ;)
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Avatar du membre
Luren
Adepte de Grondemarteau
Ver charognard
Messages : 658
Enregistré le : dim. 20 juin 2010, 08:51
Localisation : Sûrement quelque part mais je n'arrive pas à bien voir où.
Statut : Hors ligne
.

Message par Luren »

Il semble que tu n'aies pas d'autre choix que de placer l'installation de ton mod après celle de Worldmap et d'en tenir compte ou alors de faire un mod qui soit incompatible avec lui.

Afin d'être compatible avec lui, est-ce que tu ne pourrais pas faire une modification conditionnelle, liée à la présence de Worldmap ? Du style :
si Worldmap est présent -> modification x du fichier worldmap.wmp
autrement -> modification y du fichier worldmap.wmp


Parmis les mods pour BG1, le mod "Stone of Askavar" modifie aussi le fichier worldmap.wmp. Tu pourrais peut-être t'inspirer de son fonctionnement ?
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Merci Luren.

J'ai regardé comment faisait Stone of Askavar, et, même si ça ne m'aide pas à faire que Worldmap conserve mes modifications, je m'en suis inspiré pour changer mon code afin que le patch marche même si le fichier WORLDMAP.WMP a été modifié par un autre mod. Je me suis dit qu'ainsi, la compatibilité avec Worldmap serai assuré si on installe mon mod après Worldmap. Sauf que... ça ne marche pas ^^

Mon nouveau code fonctionne toujours quand j'installe mon mod juste après avoir installé BGT et BG1NPC, mais ne marche pas quand Worldmap est installé. Et je ne comprend pas pourquoi (erreur de ma part, peut-être ?). Voici mon nouveau code :

Code : Tout sélectionner

READ_LONG 0x38 "link-offset" // on lit à quel offset commence les informations sur les liens entre les cartes, et on stocke ça dans la variable link-offset
READ_LONG 0x3C "link-count" // on lit le nombre de liens différents qui existent dans le fichier
SET "unique" = "0" // indicateur d'unicité et de réussite


FOR (i = "%link-offset%"; i<"%link-count%" * 216 ; i+=216) BEGIN // pour chaque lien, on va lire le nom de l'entry-point (216 est la "distance" entre chaque début d'entry-point)
	READ_ASCII (i + 4) "entry-point-name" (8) // (4 est la "distance" entre i et le nom de l'entry-point)

	PATCH_IF (("%entry-point-name%" STRING_EQUAL_CASE "EXIT3700") && ("%unique%" = "0")) BEGIN // si le nom de l'entry-point est EXIT3700, on patche la première entrée de la liste des cartes de rencontre aléatoire
		WRITE_ASCII (i + 44) ~gtt#01~ //(44 est la "distance" entre i et la première entrée de la liste des cartes de rencontre aléatoire)
		SET "unique" = "1" // on n'en patche qu'une
	END
END
ACTION_IF ("%unique%" != "1") THEN BEGIN FAIL @600 END
Le soucis est que quand j'installe mon mod et que Worldmap est déjà installé, il me met quand même ma variable "unique" à 1, sauf que le fichier WORLDMAP.WMP n'est pas patché (ou alors pas patché au bon endroit). Une idée ?

Question bonus : comment fait-on pour afficher une variable de type texte avec WeiDU ? Car il serait utile d'afficher le contenu de "%entry-point-name%" au moment où il exécute SET "unique" = "1", sauf que si je fais PRINT "%entry-point-name%", WeiDU m'insulte en disant qu'il ne peut pas convertir cette variable en entier.
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Bon, j'ai refait mon code, il est nettement plus flexible maintenant et fonctionne quelque soit le fichier WORLDMAP.WMP que je lui mets sous la dent (celui généré par le mod Worldmap également) :gign:

Pour la compatibilité avec Worldmap, je vais mettre dans le readme qu'il faut installer mon mod après Worldmap, pi c'est tout ^^

Voici mon nouveau code :

Code : Tout sélectionner

COPY_EXISTING ~worldmap.wmp~ ~override/worldmap.wmp~

READ_LONG 0x30 "area-count"
READ_LONG 0x34 "area-offset"

READ_LONG 0x38 "link-offset"
READ_LONG 0x3C "link-count"

FOR (i = 0 ; i < "%area-count%" ; i = i + 1) BEGIN
	READ_ASCII ("%area-offset%" + (i * 240)) "area-name" (6)
	PATCH_IF ("%area-name%" STRING_EQUAL_CASE "AR3700") BEGIN
		READ_LONG ("%area-offset%" + (i * 240) + 80) "area-3700-north-link-number"
		SET "area-3700-north-link-offset" = ("%link-offset%" + ("%area-3700-north-link-number%" * 216))
		SET "area-3700-random-encounter-0-for-north-link-offset" = ("%area-3700-north-link-offset%" + 44)
		WRITE_ASCII "%area-3700-random-encounter-0-for-north-link-offset%" ~macarte~
	END		
END
BUT_ONLY_IF_IT_CHANGES
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

La compatibilité avec le mod Worldmap s'obtient en suivant les instructions qui sont fournies avec le mod dans des fichiers doc. Elle consiste à créer des fichiers qui indiquent les lieux ajoutés et les liens entre zones, et à les copier comme il faut dans le répertoire worldmap (à ne pas confondre avec bp-bgt-worldmap, qui est le répertoire du mod lui-même).
Dans ton cas, cela suppose de modifier des liens entre zones. Il te faudra peut-être modifier le fichier de liens fourni par BGT, puisque c'est lui qui donne les liens pour la partie BG.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Merci Isaya, j'étais visiblement passé à coté de ce fichier.

J'ai regardé, et effectivement la meilleur solution semble être de patcher le fichier map_mods_links.tbl créé par BGT.
Et ça marche !

Mon code de compatibilité avec Worldmap est donc :

Code : Tout sélectionner

ACTION_IF FILE_EXISTS ~worldmap/map_mods_links.tbl~ THEN BEGIN
	COPY ~worldmap/map_mods_links.tbl~  ~worldmap~
	REPLACE_TEXTUALLY EXACT_MATCH ~AR3700    N         AR3200      EXIT3700    2         4          N        N        N        N        N        0~ ~AR3700    N         AR3200      EXIT3700    2         4          newmap   N        N        N        N        0~
END ELSE BEGIN
	FAIL ~mon message d'erreur~
END
Merci à tous les deux pour votre aide précieuse !
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Bonsoir,

Je fais remonter ce sujet car, suite au retour de Marvin qui a testé mon mod, je me suis aperçu que le code ci-dessus ne fonctionnait pas avec l'option "Utiliser la carte de Throne of Bhaal dans le style étoffe" de Worldmap. Cette option semble ignorer les modifications faites au fichier map_mods_links.tbl.

Pourtant, c'est la solution indiquée dans la documentation de Worldmap pour rendre les mods compatibles...

Est-ce que l'un(e) d'entre vous a une idée de comment faire pour rendre mon mod compatible avec cette option de Worldmap (la documentation de Worldmap n'évoque pas cette option) ?
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Le problème que tu signales est assez surprenant. L'option "style étoffe" pour ToB conserve la petite carte de ToB mais ne change en principe que le fond pour lui donner l'aspect d'étoffe. J'ai du mal à voir comment ce choix impacte la carte employée dans SoA + mega mods et BGT, d'autant qu'il s'agit bien de deux cartes distinctes dans BG2 et ToB (imposé par le moteur).
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Avatar du membre
Haplo74
Minotaure
Messages : 1737
Enregistré le : dim. 08 avr. 2012, 20:20
Localisation : Paris
Statut : Hors ligne
.

Message par Haplo74 »

Bonjour Mirandir et Isaya,

Je n'y connais pour ainsi dire rien en modding mais est-ce que cela ne pourrait pas venir de l'option (non signalée dans le fichier WeiDu.log) "temps de trajets révisés", par rapport à l'option standard "temps de trajets originaux" ?
De par la structure des répertoires de worldmap, il y a un fichier new_map_mod_links.tbl dans "revised".

Haplo74
Modérateur des sections "le bazar de l'aventurier", "la taverne de Château-Suif", "la taverne d'Amkethran" et "le comptoir d'Amn".
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Bonjour Haplo,

Effectivement, tu as raison : il semble que j'ai été un peu vite dans mes tests d'hier. J'en ai refait aujourd'hui, et il s'agit bien de l'option "temps de trajets révisés" qui pose problème. L'option "temps de trajets originaux" fonctionne bien avec les deux styles de carte (étoffe pour ToB ou non).

Ça permet d'éclairer le problème car, comme Isaya l'a justement fait remarquer, l'option "carte étoffe pour ToB" ne touche pas à la carte de BG2.

Néanmoins, il reste maintenant à voir s'il est possible d'arranger ça, car je n'ai pas l'impression que l'auteur de Worldmap ait prévu un mécanisme de modification similaire à celui utilisé par l'option "temps de trajets originaux". Une idée ?
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Je pense qu'il te suffit tout simplement d'appliquer ton patch, en l'adaptant si nécessaire si le temps de trajet a changé par rapport au fichier non "revised", au fichier bp-bgt_worldmap\revised\tbl\new_map_mods_links_bgt.tbl.
Apparemment, d'après le code, Worldmap recrée le fichier bp-bgt_worldmap\revised\tbl\new_map_mods_links.tbl en assemblant le contenu des fichiers des mods présents, plus ce qu'on a ajouté.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

En effet, mais ça ne marchera que si Worldmap a déjà été décompressé dans le dossier de Baldur's Gate. S'il est décompressé et installé après l'installation de Garrick : les contes d'un troubadour, et que l'utilisateur choisi les durées de voyage révisées, le problème se pose toujours.
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Avatar du membre
Isaya
Adepte de Grondemarteau
Planaire
Messages : 6990
Enregistré le : mar. 22 juil. 2003, 21:03
Localisation : Plaisir
Contact :
Statut : Hors ligne
.

Message par Isaya »

Je ne comprends pas ton hésitation.

Si tu prévois une installation de base avec BGT sans Worldmap, tu es obligé de patcher directement le fichier wmp pour modifier la transition en question.
Si tu prévois une installation ultérieure de BP-BGT-Worldmap (version non révisée), tu dois patcher le fichier que BGT aura créé dans worldmap.
Si tu prévois une installation ultérieure de BP-BGT-Worldmap (version révisée), tu dois patcher le fichier dans BP-BGT-Worldmap/revised.
Si tu prévois une installation de ton mod après Worldmap, tu es là-aussi obligé de patcher le fichier wmp (cas n°1).

Dans tous les cas, à défaut de pouvoir deviner les intentions du joueur, il me semble que tu n'as pas le choix : il te faut patcher la carte du monde, au cas où le joueur n'utilise pas Worldmap, et faire le nécessaire pour que ça marche avec Worldmap, c'est à dire patcher les fichiers dans worldmap (qui doit exister grâce à BGT) et celui de revised, si jamais le répertoire existe.

Dans le guide d'utilisation de Worldmap, j'ai toujours indiqué qu'il fallait l'extraire en premier, parce que c'était les instructions des auteurs ou des spécialistes des méga-installations. Si les gens ne respectent pas les instructions, tant pis pour eux ! Et de toute façon, tu n'as pas d'autre solution, il me semble.
:!: Peu disponible
Guide d'installation (et FAQ) de Baldur's Gate, Baldur's Gate II, Baldur's Gate Trilogy (BGT), BG1Tutu, Widescreen, BGEE
Pensez à utiliser à la fonction Recherche pour trouver une réponse à votre question !
Avatar du membre
mirandir
Adepte de Grondemarteau
Ver charognard
Messages : 674
Enregistré le : mer. 09 févr. 2011, 10:30
Contact :
Statut : Hors ligne
.

Message par mirandir »

Oui, c'est exactement ce que je me suis dit cet après-midi est j'ai donc mis à jour mon mod en conséquence ;)

Merci, Isaya.
« Pssst. Tu as remarqué comme elle me dévore du regard ? Hein ? Tu as vu ça ? La façon dont elle a regardé la courbe de mon os occipital ? »
Répondre

Retourner vers « Cartes et Cartes du monde »

Qui est en ligne

Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 1 invité