Page 1 sur 1
[MOD] Mon petit mod de magasin pour BG2(EE) : l'Interplan
Posté : ven. 12 oct. 2018, 22:39
par deratiseur
Ce qui devait être un ajout impromptu aux merveilleuserie de Lumens est devenu à force de travail un vrai module à part entière.
Voici donc
l'Interplan, un magasin dédié à la magie pour BG2.
Il s"installe aussi sous BG2EE
Mon magasin s'installe dans la promenade de Waukyne, mais pour ceux qui ont une partie en cours, il existe un moyen de le visiter quand même
Les lisez_moi c'est bon pour la santé.
Posté : ven. 12 oct. 2018, 22:55
par DrAzTiK
bravo! Je testerai ça à l'occasion.
Posté : ven. 12 oct. 2018, 23:02
par Freddy_Gwendo
deratiseur a écrit :Il s"installe aussi sous BG2EE, mais le texte des objets n'est pas optimisé pour les EE, il reste les "utilisable par" et "inutilisable par" écrits en dur qui feraient doublon sous BG2EE (de toute façon je déteste sous EE la liste sur-allongée de toutes les classes interdites quand un objet et limité à une seule classe)
La fonction que je t'avais passée ne fonctionne pas ?
Posté : sam. 13 oct. 2018, 04:24
par deratiseur
Freddy_Gwendo a écrit :La fonction que je t'avais passée ne fonctionne pas ?
Mea cupla. Désolé freddy. 6 mois sans toucher à la programmation (Path of exil est passé par là), c’était un foutoir sans borne sur mon disque dur, j'ai complètement oublié que dans le sous/sous/sous/sous/répertoire des outils en vrac j'ai ça : GW_UPDATE_ITM_DESCRIPTION_TO_BGEE
Le modding c'est comme le sport. Si tu t'y met, faut jamais t’arrêter, parcequ'à la moindre interruption, c'est trop la galère de recommencer :/
Posté : sam. 13 oct. 2018, 07:36
par Freddy_Gwendo
De mémoire, j'avais adapté une fonction perso qui n'utilisait que des strings issus de mes fichiers tra (@nnn) et je l'avais adaptée pour qu'elle fonctionne aussi avec les #nnn. S'il faut la modifier, n'hésite pas à demander.
Posté : dim. 04 nov. 2018, 10:49
par deratiseur
Ou on reparle de cette petite fonction de conversion automatique des textes de "inutilisable" format BG2 au format BG2EE :
Tu as écris une fonction pour ça, et elle nécessite un fichier de "référence" externe. Hum....
C'est à dire un fichier qui liste toutes les classes et les kits ?
Et si ce fichier était standardisé ? Tout comme les prompt du weidu, on peut imaginer un fichier par langue, ou des références à inclure dans le tp2
Avec le futur weidu qui va tout centraliser dans des répertoires communs, pourquoi n'irait-il pas chercher un fichier de référence pour automatiquement changer le texte des objets selon une installation sur BG2/BGT ou une EE ?
Bon, ben j'ai trouvé quoi faire pour la semaine : trouver le truc (en me servant de ton fichier) pour convertir automatument les fichiers textes des objets de l'Interplan au format BG2EE. voilà.
Posté : dim. 04 nov. 2018, 13:46
par Freddy_Gwendo
Pas vraiment. Elle nécessite un fichier tra (généralement celui des descriptions d'objets) qui définit deux expressions régulières :
// catch ~Usable by:~
@8999991 = ~[Uu]tilisable[ %tab%]+[Pp]ar[ %tab%]*:~
// catch ~Not usable by~
@8999992 = ~\([Nn]on[ %tab%]+\|[Ii]n\)[Uu]tilisable[ %tab%]+[Pp]ar[ %tab%]*:~
La fonction repère ces lignes et les supprime, ainsi que tout ce qui suit.
Du coup, pour les autres langues, il suffit d'ajouter au fichier tra des objets les expressions correspondantes.
Posté : dim. 04 nov. 2018, 20:44
par deratiseur
Y'a un petit message sympa,
là :
@argent77 had made a macro to help EE-ify item descriptions from vanilla item descriptions; this is now used for the Korean and Russian translations since they lack a dedicated, EE-specific translation
Je m'en vais décortiquer l'Item upgrade v43, moi.....
Parce que l'Interplan serait peut être plus demandé sur BG2EE.
Posté : dim. 04 nov. 2018, 21:05
par Freddy_Gwendo
Je n'ai pas étudié celle-ci, mais fais attention à une chose : avant d'écrire ma fonction, j'avais regardé comment certains mods s'y prenaient et ça ne m'avait pas plu car ils commençaient par insérer la description de l'objet classique dans dialog.tlk, puis la modifiaient pour BG2EE. Résultat : pour chaque objet, on surchargeait le fichier dialog.tlk d'une description qui ne servait à rien. Mon code utilise la description classique de manière temporaire sans l'écrire dans le dialog.tlk.
Posté : dim. 04 nov. 2018, 22:09
par deratiseur
Oui. sur le principe, c'est vrai que ta fonction qui patche avant inscription est plus mieux meilleur bien. Mais je crains de devoir appeler mes fichiers "GW_Items.tra" pour m'en servir, n'ayant trouvé aucun endroit dans le code ou je pourrait modifier ce nom pour appeler un autre fichier (je parle toujours de GW_UPDATE_ITM_DESCRIPTION_TO_BGEE.tpa)
Posté : dim. 04 nov. 2018, 22:22
par Freddy_Gwendo
Pas besoin :ajoute les deux références dans les fichiers tra des objets utilisés par les mods. Je doute qu'ils utilisent @8999991 et @8999992 !
Posté : lun. 05 nov. 2018, 19:07
par deratiseur
Rah..... j'ai changé @8999991 et @8999992 en @36 et @37, et j'ai inclus dans le setup.tra français :
@36 = ~[Uu]tilisable[ %tab%]+[Pp]ar[ %tab%]*:~
@37 = ~\([Nn]on[ %tab%]+\|[Ii]n\)[Uu]tilisable[ %tab%]+[Pp]ar[ %tab%]*:~
Je charge ta macro en l'incrustant dans le "Always" avec INCLUDE
Ca marche, la macro ne me crée plus des erreurs d'installation. ok, j'avance.
mais je n'arrive pas à modifier le texte de mes objets sous BG2EE
j'ai essayé :
COPY ~Derats_Magasin_2/Objets/pxl2kaar.itm~ ~override~ SAY NAME2 @807 SAY DESC @808 LPF GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE END
ça marche pas
j'ai essayé :
LOAD_TRA ~Derats_Magasin_2/Languages/%LANGUAGE%/Magasin2-objets.tra~ LPF GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE END
Bien sur, ça marche pas.
11 ans que je modde et je suis toujours un newbie. Ras la casquette.
Posté : lun. 05 nov. 2018, 21:11
par Freddy_Gwendo
Normal, il faut un peu modifier la procédure de copie des objets :
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Objets/pxl2kaar.itm~ ~override~ SAY NAME2 @807 SAY DESC @808
devient
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Objets/pxl2kaar.itm~ ~override~ SAY NAME2 @807
LPF ~GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE~ STR_VAR GW_desc_to_update = "@808" END
Exemples utilisés dans mon mod :
Code : Tout sélectionner
COPY ~%MOD_FOLDER%/objets/Armes/GWEpC01.itm~ ~override/GWEpC01.itm~ SAY NAME1 @8000001 SAY NAME2 @8000101
LPF ~GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE~ STR_VAR GW_desc_to_update = "@8000102" GW_undesc_to_update = "@8000002" END
BUT_ONLY
COPY ~%MOD_FOLDER%/objets/armes/GWStafCj.itm~ ~override/GWStafCj.itm~ SAY NAME1 @8130001 SAY NAME2 @8130205
LPF ~GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE~ STR_VAR GW_undesc_to_update = "@8130003" END
COPY ~%MOD_FOLDER%/objets/magie/GWBag07A.itm~ ~override/GWBag07A.itm~ SAY NAME1 @8360014 SAY NAME2 @8360014 // Réserve de flèches
LPF ~GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE~ STR_VAR GW_desc_to_update = "@8360015" END
BUT_ONLY
COPY ~%MOD_FOLDER%/objets/magie/GWTome54.itm~ ~override/GWTome54.itm~ SAY NAME1 @8380002 SAY NAME2 @8380413 SAY UNIDENTIFIED_DESC @8380414
LPF ~GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE~ STR_VAR GW_desc_to_update = "@8380415" END
N'oublie-pas
d'avoir chargé le fichier tra auparavant
de déclarer les valeurs @nnnn entre guillemets dans la fonction car elles sont déclarées comme alphanumériques.
Posté : lun. 05 nov. 2018, 23:10
par deratiseur
Bon, j'ai essayer de trouver le truc en épluchant le code, mais je n'y suis pas arrivé
Concrètement :
COPY ~Derats_Magasin_2/Objets/pxl2kaar.itm~ ~override~ SAY NAME2 @807 LPF ~GW_WRITE_ITM_DESCRIPTIONS_TO_BGEE~ STR_VAR GW_desc_to_update = "@808" END
Sur BG2EE ça marche, ça zappe le texte "utilisable par" et tout ce qui va après.
Mais sous BG2, ça remplace tout le texte descriptif de l'objet par "GW_desc_to_update". Qu'est ce que j'ai raté ?
Posté : lun. 05 nov. 2018, 23:31
par Freddy_Gwendo
Tu peux m'envoyer le code avec le tra ?
Comme ça, ça ne me dit rien alors que ça fonctionne nickel sur mon mod.
Peut être une déclaration de fonction qui merdouille...
Posté : mar. 06 nov. 2018, 07:35
par Freddy_Gwendo
Je ne comprends pas ce qui s'est passé. Il y a si longtemps que je t'ai passé le code.
Mais j'ai trouvé l’origine du problème, sans doute un mauvais copier-coller de mon côté quand j'avais adapté le code pour toi. Bref, il manquait deux contrôles quand le jeu n'est pas EE.
J'ai testé le code ci-joint avec ton mod sur trois objets pris au hasard (pas les parchemins, ça n'aurait servi à rien) et ça fonctionne.
Pour l'instant, la fonction ne traite pas les cas "Utilisable uniquement par :" parce que je souhaitais conserver cette ligne dans EE.
Dans ton tp2, il faudra donc modifier les lignes d'installation des objets par :
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Objets/pxl2etoi.itm~ ~override~ SAY NAME2 @801
LPF ~GW_EE~ STR_VAR GW_desc_to_update = ~@802~ END
COPY ~Derats_Magasin_2/Objets/pxl2kaar.itm~ ~override/gw2kaar.itm~ SAY NAME2 @807
LPF ~GW_EE~ STR_VAR GW_desc_to_update = "@808" END
COPY ~Derats_Magasin_2/Objets/pxl2johr.itm~ ~override/gwl2johr.itm~ SAY NAME2 @80101
LPF ~GW_EE~ STR_VAR GW_desc_to_update = ~@80102~ END
...
Sinon, fais attention à ton fichier tra : j'y ai repéré plein d'espaces insécables (sans doute des scories de tes fichiers odt) qui s'affichent par un "." dans BG2. Il suffit de remplacer Alt-0160 par " " avec Notepad.
Enfin, je suis plutôt partisan de dédier le fichier setup.tra à la procédure d'installation et d'y enlever toute référence installant des objets ou ds sorts, ainsi que les formules d'expression régulière. Mais c'est toi qui vois...
Posté : mar. 06 nov. 2018, 11:44
par deratiseur
Bon, ben c'est cool si ça marche, parce que comme ça je pourrais aussi m'en servir dans le DUKP, parce que la aussi j'ai une longue liste d'objets qui demandent patchage (même s'il y une chance infinitésimale qu'un joueur non tricheur drope ces objets, je suis un perfectionniste)
Pour les espaces insécables, il va sérieusement falloir que je pense à un autre logiciel qu'Open office. Les espaces insécables me causent soucis depuis longtemps déjà, mais aussi la tabulation automatique dès que je commence une ligne par un tiret, le point de "numérotation" automatique dès que je commence plus de 2 lignes par un numéro, etc.... j'ai décoché pleins de trucs dans les options "correction automatique" mais ça continue. Au bout d'un moment....
Question :
perso j’écris
COPY ~Derats_Magasin_2/Objets/pxl2etoi.itm~ ~override~
je l'ai vu dans le premier module dont je me suis inspiré pour commencer à créer, et ça marche très bien depuis le premier kit que j'ai crée.
mais je vois souvent (et toi y compris) écrit à la place :
COPY ~Derats_Magasin_2/Objets/pxl2etoi.itm~ ~override/pxl2etoi.itm~
Qu'est ce que ça change ?
De même, le retour à la ligne que tu me conseilles pour l'instruction LPF au lieu d'une tabulation après le NAME 2, qu'est ce que ça change ?
Posté : mar. 06 nov. 2018, 13:18
par deratiseur
Youpi, ça marche. merci beaucoup
Posté : mar. 06 nov. 2018, 20:12
par Freddy_Gwendo
deratiseur a écrit :Youpi, ça marche. merci beaucoup
Farpait. Je ne comprends vraiment pas ce qu'il s'est passé pour que mes contrôles aient disparu dans cette version.
deratiseur a écrit :perso j’écris
je l'ai vu dans le premier module dont je me suis inspiré pour commencer à créer, et ça marche très bien depuis le premier kit que j'ai crée.
mais je vois souvent (et toi y compris) écrit à la place :
Code : Tout sélectionner
COPY ~Derats_Magasin_2/Objets/pxl2etoi.itm~ ~override/pxl2etoi.itm~
Qu'est ce que ça change ?
Rien. D'ailleurs, ta formulation est meilleure et plus rapide. La mienne est une scorie de mes tests : j'ai installé tes objets avec ton code, puis sous un nom différent (en changeant le préfixe) avec le mien pour vérifier la différence dans NI.
De même, le retour à la ligne que tu me conseilles pour l'instruction LPF au lieu d'une tabulation après le NAME 2, qu'est ce que ça change ?
Rien en termes de codage : WeiDU gère très bien les espaces, les tabulations et les retour à la ligne.
En revanche, je privilégie ce format pour une meilleure lisibilité. Ce qui est très pratique quand on relit des lignes des codes écrites des années auparavant, ou simplement celles d'un autre moddeur. Une grande partie de mon travail sur 1PP a consisté à rendre ses milliers de lignes de code intelligibles à la lecture.
C'est aussi la raison pour laquelle je préfère les fonctions WeiDU ALTER_EFFECT, ALTER_HEADER... aux SAY 0xnn et WRITE_xxxx 0xnn : on sait tout de suite ce que l'on modifie, et surtout, ça évite de devoir modifier les adresses si l'on modifie l'objet en lui ajoutant/retirant des effets ou des headers.
Pour les espaces insécables, il va sérieusement falloir que je pense à un autre logiciel qu'Open office. Les espaces insécables me causent soucis depuis longtemps déjà, mais aussi la tabulation automatique dès que je commence une ligne par un tiret, le point de "numérotation" automatique dès que je commence plus de 2 lignes par un numéro, etc.... j'ai décoché pleins de trucs dans les options "correction automatique" mais ça continue. Au bout d'un moment...
De mémoire, il existe des contrôles pour gérer tout ceci. Mais comme je ne l'utilise que pour le traitement de texte classique (surtout pas pour moder), je les ai conservés sur ma dernière machine.