Page 1 sur 2 12 DernièreDernière
Affichage des résultats 1 à 30 sur 36

Discussion: [CRE] Fichiers cre : Utilité des champs rarement utilisés

  1. #1
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013

    [CRE] Fichiers cre : Utilité des champs rarement utilisés

    Je suis en train de terminer une procédure de création automatique de fichiers .cre.

    J'y ai inclus la plupart des champs classiques, mais je me demande si ça vaut la peine que je me penche sur le codage de ceux-ci :

    Code:
    0x006b 	1 (byte) 	Fatigue (0-100)
    0x006c 	1 (byte) 	Intoxication (0-100)
    0x006d 	1 (byte) 	Luck
    
    0x0082 	1 (byte) 	Turn undead level
    0x0083 	1 (byte) 	Tracking skill (0-100)
    0x0084 	32 (char array) Tracking target
    
    0x0276 	5 (bytes) 	OBJECT.IDS references
    
    0x027c 	2 (word) 	Global actor enumeration value
    0x027e 	2 (word) 	Local (area) actor enumeration value
    En effet, soit je ne sais pas à quoi ils correspondent, soit je ne vois pas leur utilité car j'ai comme l'impression (ou bien j'ai lu) qu'ils ne sont pas utilisés par le moteur.

    Les avez-vous déjà utilisés, comment et dans quel but ?


    Par ailleurs, j'aimerais savoir comment vous calculez le champ 0x0018 qui sert essentiellement au codage des créatures convoquées :

    Code:
    0x0018 	4 (dword) 	Creature Power Level (for summoning spells) / XP of the creature (for party members)

    Edit.

    Pendant que j'y suis, voici la liste des différents "créatures flags" :

    Code:
    BIT0	Show longname in tooltip (Identified)
    BIT1	No corpse
    BIT2	Keep corpse
    BIT3	Original class was Fighter
    BIT4	Original class was Mage
    BIT5	Original class was Cleric
    BIT6	Original class was Thief
    BIT7	Original class was Druid
    BIT8	Original class was Ranger
    BIT9	Fallen Paladin
    BIT10	Fallen Ranger
    BIT11	Exportable
    BIT12	Hide injury status in tooltip
    BIT13	Quest critical / affected by alternative damage (Large creature)
    BIT14	Can activate "Can not be used by NPC" triggers (Moving between areas)
    BIT15	Been in Party
    BIT16	Restore item in hand (Holding item)
    BIT17	Un-sets bit 16 (Clear all flags)
    
    BIT24	Related to random walk [Allegiance tracking]
    BIT25	id [General tracking]
    BIT26	id [Race tracking]	
    BIT27	id [Class tracking]
    BIT28	id [Specific tracking]
    BIT29	id [Gender tracking]
    BIT30	id [Alignment tracking]
    BIT31	Un-interruptable (memory only)
    Si certains n'ont aucun intérêt car ils concernent des faits de jeu ou la gestion de NPC (BIT 3 à 11 par exemple), ou bien sont utilisables pour répondre à des événements précis (BIT1 ou 2 notamment) , avez-vous utilisé les autres, sachant que la plupart des créatures vanilla ne contiennent que les BIT0-24-26 ?

    Je pense notamment aux BIT 24 à 30 qui semblent permettre une détection par script. Dans ce cas, pourquoi les BIT 25, et 27 à 30 ne sont-ils quasiment jamais cochés dans les fichiers vanilla ?
    Dernière modification par Freddy_Gwendo ; 12/08/2015 à 09h08.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  2. #2
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 167
    le 0x0018 c'est la valeur pour quand tu convoques la créature avec l'effet #167 (convocation via 2da). C'est arrondi au supérieur.
    Par exemple, si ta créature à 30"xp" en 0x0018 et que ton sort en effet #167 convoque 100"xp de créatures" tu en convoqueras 4 (30x3 = 90, il reste de la place ->4).

    c'est pratique si tu veux invoquer des créatures aléatoires : dans l'exemple si dessus, si tu crées 4 créatures que tu veux invoquer aléatoirement, et que tu assignes la valeur 0x0018=30 à chacune, et que tu les liste toutes dans un 2DA, et que tu appelles ce 2DA avec l'effet 167 à valeur 100 dans un sort, ce sort te convoquera 4 créatures au hasard parmi les 4 possibles.
    Si tu veux en convoquer 5 tu as le choix : soit passer la valeur 0x0018 à 20 soit passer la variable de l'effet 167 à 150.
    Le maitre de l'essaim utilise beaucoup la valeur 0x0018.
    Mon module de kits pour BG2, BGEE, BG2EE et IWDEE
    Mon module de magasin pour BG2 et BG2EE
    Mon module de magasin d'objets cheatés pour BG2, BGEE, BG2EE et IWDEE
    Tout autre chose, du contenu pour le jeu de société Munchkin

  3. #3
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    OK, c'est un peu comme je l'imaginais. Mais ton explication est bien plus claire. J'irai faire un tour dans le DUKP ce soir pour voir comment tu l'as utilisée.

    Mais comme c'est une "pure" valeur de modding qui dépend des sorts de convocation créés, je vais la laisser en variable à définir par l'utilisateur dans la fonction. Ça n'a donc aucun sens d'essayer de la calculer automatiquement.

    J'avais peur qu'elle ait un lien plus direct avec le champ 0x0014 (XP gained for killing this creature).

    Et un souci de moins, un !
    Si les retours concernant les autres champs sont du même type, la semaine commencera plutôt bien en m'épargnant un boulot fastidieux.

    Merci !
    Dernière modification par Freddy_Gwendo ; 12/08/2015 à 09h18.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  4. #4
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 167
    Citation Envoyé par Freddy_Gwendo Voir le message
    J'irai faire un tour dans le DUKP ce soir pour voir comment tu l'as utilisée.
    En fait regarde aussi le chasseur de vermine, il utilise pleinement cet effet et n'a que 2 sorts de convocation pour tout voir d'un coup.
    Mon module de kits pour BG2, BGEE, BG2EE et IWDEE
    Mon module de magasin pour BG2 et BG2EE
    Mon module de magasin d'objets cheatés pour BG2, BGEE, BG2EE et IWDEE
    Tout autre chose, du contenu pour le jeu de société Munchkin

  5. #5
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Vérifié sur le DUKP : effectivement, l'utilisation est assez simple. Un autre regard sur les sorts vanilla m'a conforté dans la décision de laisser ce champ en saisie libre avec une valeur par défaut à 0.

    Par ailleurs, selon de vieux échanges entre les concepteurs d'IESDP, le champ 0x083 (Tracking skill) n'est pas utilisé. Et un de moins à intégrer dans la procédure !
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  6. #6
    Avatar de Luren
    Luren est déconnecté Barbare des terres gelées
    Date d'inscription
    juin 2010
    Localisation
    Sûrement quelque part mais je n'arrive pas à bien voir où.
    Messages 
    573
    En effet, soit je ne sais pas à quoi ils correspondent, soit je ne vois pas leur utilité car j'ai comme l'impression (ou bien j'ai lu) qu'ils ne sont pas utilisés par le moteur.

    Les avez-vous déjà utilisés, comment et dans quel but ?
    Les paramètres Fatigue, Intoxication et Luck peuvent avoir un intérêt du point de vue du scénario. Un personnage fatigué, intoxiqué (-> ce qui inclus ivre, quand on boit trop dans les tavernes), chanceux ou malchanceux (Luck <100) aura des taux de réussite différents dans les combats (puisque ces paramètres influent sur les lancés de dé).
    Par exemple dans IWD2, au début dans Targos, on est peut aller demander à un groupe de mercenaires qui se sont fait payer pour venir en aide à la ville assiégée de se bouger un peu, vu qu'ils passent leur temps à s'alcooliser dans une taverne... les choses peuvent s'envenimer et l'on peut se retrouver à les combattre. Le fichier .cre respecte le scénario et les mercenaires ont une valeur de 10 en intoxication (alcool).

    C'est aussi un moyen d'abaisser globalement les stats d'un même personnage. Tu peux ainsi avoir différentes versions .cre d'un même personnage dont certaines stats comme la fatigue ou l'intoxication varieront selon les moments de ton histoire et influeront sur sa capacité de combat.

    En tout cas, ces trois paramètres semblent fonctionner et être pris en charge par le moteur.
    Dernière modification par Luren ; 13/08/2015 à 09h16.

    un projet de mod pour Icewind Dale 2

  7. #7
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Pour ces trois-là (Fatigue, Intoxication, Luck), effectivement, je connaissais leur utilité, mais dans BG2, je n'ai trouvé aucune valeur > 0.

    Je comptais tester un perso ivre avec eux mais tu me confirmes que ça fonctionne dans IWD2.

    Mais vu leur faible utilisation et comme les valeurs "naturellement" modifiées par les sorts et les effets sont celles de STATE.ids , je vais quand même les considérer comme des valeurs de pure modding et les laisser tripatouiller par le moddeur s'il en a besoin.

    Bref, inutile d'alourdir la procédure qui est déjà bien assez complexe.

    Merci encore pour le retour.

    Par ailleurs, je n'ai pas encore trouvé d'info sur 0x0082 (Turn undead level) qui elle, si elle fonctionne vraiment, m'apparaît très utile pour les prêtres.
    Dernière modification par Freddy_Gwendo ; 14/09/2015 à 22h21.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  8. #8
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Je viens de vérifier sur IESDP : les champs Fatigue, Intoxication et Luck d'IWD2 n'ont pas les mêmes adresses que ceux de BG2.

    Donc c'est définitif, je ne les inclus pas dans la procédure et les laisse modifier directement par l'utilisateur.

    Je termine les flags et les status avant de mettre en partage la procédure.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  9. #9
    Date d'inscription
    décembre 2007
    Localisation
    GAP, Hautes alpes
    Messages 
    2 167
    Pour tester la 0x0082 (Turn undead level) c'est facile : crée une partie d'introduction avec un nouveau personnage prêtre. Crée un squelette perso et invoque le à la console. Vois si ton prêtre peut le détruire ou le repousser avec "repousser les MVs".
    Modifis alors le 0x0082 dudit squelette en mettant 20 et ré-invoque le. Si tu peux encore le repousser, c'est que la valeur ne sert à rien. Sinon, tu sais qu'elle fonctionne

    Pour modifier ton squelette SANS devoir relancer le jeu, utilise l'astuce citée ici (tests et modifications en temps réel)
    Mon module de kits pour BG2, BGEE, BG2EE et IWDEE
    Mon module de magasin pour BG2 et BG2EE
    Mon module de magasin d'objets cheatés pour BG2, BGEE, BG2EE et IWDEE
    Tout autre chose, du contenu pour le jeu de société Munchkin

  10. #10
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Euh...

    Si la variable fait bien ce que je pense qu'elle devrait faire, c'est la valeur du prêtre qui doit changer : le niveau auquel il repousse les mort-vivants.
    Mais je peux me tromper.

    Je testerai ça se soir : d'abord ton idée, parce que la plus rapide, et si j'ai tort, tant mieux, j'aurai gagné du temps !


    PS : Champs flags et status intégrés pour les valeurs utilisées usuellement (pas les 32 valeurs de chaque champ dont certaines ne servent à rien ou sont utilisées dans des cas très précis). Reste celles du fichier specific à rajouter à une procédure de lecture automatique, plus une partie des valeurs concernant les sorts que je peux automatiser "relativement" facilement.
    Dernière modification par Freddy_Gwendo ; 14/09/2015 à 22h22.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  11. #11
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Voici l'état actuel de la procédure en état de fonctionner :

    Code:
    LAM ~GW_READ_2DAS~						// Construction de tableaux de variables pour attribuer directement les valeurs ids et 2da.
    
    ACTION_PHP_EACH Creatures_NPC AS donnees => Creature BEGIN	// A partir d'un tableau créé avec OpenOffice
    
    COPY_EXISTING ~%donnees_1%.cre~  ~override/%Creature%.cre~	// ToDO Différencier avec ~Diamant_Eternel/Clones/%donnees_1%.cre~  ~override/%Creature%.cre~
      TO_UPPER %DEST_RES%
    
      PATCH_IF (SOURCE_SIZE > 0x2d3) THEN BEGIN			// protects against invalid files
    
    	LPM ~GW_CRE_DEF_VARIABLES~				// Redéfinition des variables pour leur intégration dans le fichier .cre
    
    // Création aléatoire des caractéristiques
    // ---------------------------------------
    	PATCH_IF ("%GW_random_stats%" STRING_COMPARE_CASE "Y" = 0) BEGIN	// Données créées aléatoirement
    		LPF ~GW_CRE_STATS_RANDOM~ RET GW_str_random GW_str_ex_random GW_dex_random GW_int_random GW_wis_random GW_con_random GW_chr_random END
    		LPF ~GW_CRE_STATS_ADJUST~ INT_VAR GW_str_random GW_str_ex_random GW_dex_random GW_int_random GW_wis_random GW_con_random GW_chr_random
    				          RET GW_str_ajust GW_str_ex_ajust GW_dex_ajust GW_int_ajust GW_wis_ajust GW_con_ajust GW_chr_ajust END // adjust statistics to match class and racial minimums, maximums and modifiers
    	END ELSE BEGIN								// Données fixées par le moddeur
    
    // Ajustement des caractéristiques
    // -------------------------------
    		LPF ~GW_CRE_STATS_ADJUST~ INT_VAR GW_str GW_str_ex GW_dex GW_int GW_wis GW_con GW_chr RET GW_str_ajust GW_str_ex_ajust GW_dex_ajust GW_int_ajust GW_wis_ajust GW_con_ajust GW_chr_ajust END	// adjust statistics to match class and racial minimums, maximums and modifiers
    	END
    
    // Forçage des caractéristiques (Y = définies par l'utilisateur - N = calculées)
    // -----------------------------------------------------------------------------
    	LPF ~GW_CRE_STATS_ENFORCE~ INT_VAR GW_str GW_str_ex GW_dex GW_int GW_wis GW_con GW_chr GW_str_ajust GW_str_ex_ajust GW_dex_ajust GW_int_ajust GW_wis_ajust GW_con_ajust GW_chr_ajust 
    				   STR_VAR GW_force_stats RET GW_nvstr GW_nvstr_ex GW_nvdex GW_nvint GW_nvwis GW_nvcon GW_nvchr END
    
    // Ajustement du THAC0 selon la classe et le niveau
    // ------------------------------------------------
    	LPF ~GW_CRE_THAC0_ADJUST~ INT_VAR GW_thac0 GW_nvlevel1 GW_rechTH STR_VAR FileTH2DA Classecre RET GW_thac0_ajust END
    	LPF ~GW_CRE_THAC0_ENFORCE~ INT_VAR GW_thac0 GW_thac0_ajust STR_VAR GW_force_thac0 RET GW_nvthac0 END
    
    // Ajustement des JS selon la classe, le niveau et la race (mixée à la Constitution pour les Nains, Gnomes...)
    // -----------------------------------------------------------------------------------------------------------
    	LPF ~GW_CRE_JS_ADJUST~ INT_VAR GW_save_vs_death GW_save_vs_wands GW_save_vs_poly GW_save_vs_breath GW_save_vs_spell GW_nvlevel1 GW_nvlevel2 GW_nvlevel3 GW_save_palouf
    				STR_VAR	File1JS2DA File2JS2DA File3JS2DA JSmulti RET GW_save_vs_death_ajust GW_save_vs_wands_ajust GW_save_vs_poly_ajust GW_save_vs_breath_ajust GW_save_vs_spell_ajust END
    	LPF ~GW_CRE_JS_ENFORCE~ INT_VAR	GW_save_vs_death GW_save_vs_wands GW_save_vs_poly GW_save_vs_breath GW_save_vs_spell
    				GW_save_vs_death_ajust GW_save_vs_wands_ajust GW_save_vs_poly_ajust GW_save_vs_breath_ajust GW_save_vs_spell_ajust
    				STR_VAR GW_force_JS RET GW_nvsave_vs_death GW_nvsave_vs_wands GW_nvsave_vs_poly GW_nvsave_vs_breath GW_nvsave_vs_spell END
    
    // Calcul des HP selon la classe, le niveau et la constitution
    // -----------------------------------------------------------
    	LPF ~GW_CRE_HP_CALC~ INT_VAR GW_nvlevel1 GW_nvlevel2 GW_nvlevel3 GW_nvcon GW_dice_size GW_dice_bonus STR_VAR Classecre1 Classecre2 Classecre3 HPMulti GW_full_HP RET GW_hp_calc END
    	LPF ~GW_CRE_HP_ENFORCE~ INT_VAR GW_hp GW_hp_calc STR_VAR GW_force_HP RET GW_nvhp_current GW_nvhp_max END
    
    // Calcul de la valeur CONNAISSANCE selon la classe, le niveau, l'intelligence et la sagesse
    // -----------------------------------------------------------------------------------------
    	LPF ~GW_CRE_LORE_CALC~ INT_VAR GW_lore GW_nvlevel1 GW_nvlevel2 GW_nvlevel3 GW_nvint GW_nvwis STR_VAR Classecre1 Classecre2 Classecre3 HPMulti RET GW_nvlore END
    
    // Calcul de la valeur du Kit
    // --------------------------
    	LPF ~GW_CRE_KIT_DEF~ STR_VAR GW_kit_lib RET GW_nvkit END
    
    // Ecriture des valeurs de la créature
    // -----------------------------------
    	LPF ~GW_WRITE_CRE~ INT_VAR GW_nvxp GW_nvgold GW_nvhp_current GW_nvhp_max GW_nvanimation // GW_nvxp_power
    		GW_nvcolor_metal GW_nvcolor_minor GW_nvcolor_major GW_nvcolor_skin GW_nvcolor_leather GW_nvcolor_armor GW_nvcolor_hair GW_nvreputation GW_nvhide_in_shadows 
    		GW_nvac_natural GW_nvac_effective GW_nvac_crushing GW_nvac_missile GW_nvac_piercing GW_nvac_slashing
    		GW_nvthac0 GW_nvattacks GW_nvsave_vs_death GW_nvsave_vs_wands GW_nvsave_vs_poly GW_nvsave_vs_breath GW_nvsave_vs_spell 
    		GW_nvresist_fire GW_nvresist_cold GW_nvresist_electricity GW_nvresist_acid GW_nvresist_magic GW_nvresist_magic_fire GW_nvresist_magic_cold 
    		GW_nvresist_slashing GW_nvresist_crushing GW_nvresist_piercing GW_nvresist_missile GW_nvdetect_illusions GW_nvset_traps GW_nvlore GW_nvopen_locks GW_nvmove_silently 
    		GW_nvfind_traps GW_nvpick_pockets GW_nvlevel1 GW_nvlevel2 GW_nvlevel3 GW_nvsex GW_nvstr GW_nvstr_ex GW_nvstr GW_nvint GW_nvdex GW_nvwis GW_nvcon GW_nvchr GW_nvmorale 
    		GW_nvmorale_break GW_nvmorale_recovery GW_nvkit GW_nvreaction GW_nvgeneral GW_nvrace GW_nvclass GW_nvgender GW_nvalignment 
    		STR_VAR GW_nvcre_flags GW_nvcre_status GW_nvportrait GW_nvscript_override GW_nvscript_class GW_nvscript_race GW_nvscript_general GW_nvscript_default GW_nvdeath_variable GW_nvdialog 
    	 END
    
      END
    END
    L'affectation de soundsets clonés fonctionne aussi ainsi que l'attribution de compétences aux armes à partir du tableau, mais je cherche encore un moyen de le faire automatiquement, ou au moins de vérifier que les valeurs attribuées sont compatibles avec la classe et le niveau.
    Id. pour les sorts et les objets.

    Lorsque tout sera en place, je communiquerai aussi le fichier des fonctions et macros.
    Dernière modification par Freddy_Gwendo ; 25/08/2015 à 01h17.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  12. #12
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Ça y est : calcul du nombre de points de compétences martiales selon la classe et le niveau, et vérification que les valeurs attribuées sont compatibles avec la classe, et si besoin est, le kit. Si la valeur saisie est supérieure au maximum prévue, elle est corrigée et un message prévient qu'il reste x points à attribuer.

    J'ai renoncé à attribuer automatiquement les points dans les compétences car ça suppose de vérifier l'équipement de la créature (quel type d'armes elle porte), et c'est trop pénible.

    En revanche, je réfléchis à la possibilité d'attribuer certains points selon des critères pré-établis : combat à deux armes, armes à deux mains, etc...
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  13. #13
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Ajouts :

    1. Calcul aléatoire possible du montant d'or possédé par les créatures.
    2. Calcul automatique de la Furtivité du Rôdeur.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  14. #14
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Ajouts :

    1. Calcul automatique de la valeur de Pick-pocket pour les Bardes.
    2. Ajout de la prise en compte des kits pour la vérification des caractéristiques des persos.
    3. Calcul automatique du nombre d'attaques par round.
    4. Attribution automatique d'un bonus spécial lorsque trois * sont attribuées au combat à deux armes pour supprimer le malus de la main secondaire.
    Dernière modification par Freddy_Gwendo ; 04/09/2015 à 17h23.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  15. #15
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013

    Table de TAC0 pour les monstres

    J'ai créé une table 2da pour attribuer automatiquement le TAC0 des monstres.

    Qu'en pensez-vous ?

    Est-elle crédible, jouable ?

    Je suis preneur de toute modification pertinente.
    Fichiers attachés Fichiers attachés
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  16. #16
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Ça avance :

    - Ajout de l'attribution automatique des sorts divins connus selon le niveau et la classe (prêtre, druide, paladin et rôdeur, mono ou multi-classés).
    - Ajout de la procédure automatique de lecture des CLAB et d'attribution des capacités innées (connues et mémorisées) selon le niveau. Un grand merci aux définitions d'arrays de Stratagems qui m'ont permis de simplifier mon code, déjà assez complexe en l'état !
    - Ajout de l'attribution automatique des capacités AP_******* des fichiers CLAB après transformation en effets à appliquer sur les créatures.

    Là, je butte sur les fichiers LUA. Sur le principe, la procédure est simple à définir. En pratique, c'est une autre paire de manches à coder...
    Dernière modification par Freddy_Gwendo ; 14/09/2015 à 22h24.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  17. #17
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Comme je cale toujours sur les LUA, j'ai avancé en ajoutant certains effets spéciaux :

    - Effet "bump" pour les dragons et certains PNJ qui doivent se frayer leur chemin pour initier les dialogues : Spell Effect: NPCBump [300]
    - Détection automatique des créatures invisibles : Spell Effect: Invisible Detection by Script [193]
    - Immunité à l'attaque sournoise : Protection: Backstab [292]
    - State: Infravision [63]
    - Recoloration des créatures (effets 8, 9, 51 et 52) à partir d'une table "maison".
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  18. #18
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    - Modification de l'attribution des couleurs à partir des valeurs RGB avec ou sans effet de transparence (#65 et/ou #66) et suppression automatique des effets de colorations existants (merci à Isaya pour m'avoir expliqué pourquoi ce code fonctionnait sans que je comprenne pourquoi !).
    - Ajout d'une procédure permettant d'attribuer automatiquement des caractéristiques spéciales par type de créature (Troll, Dragon, Mort-Vivant, Démon...) : soit par écriture directe dans le fichier, soit par acquisition d'objets leur attribuant ces caractéristiques, soit par ajout d'effets globaux dans le fichier de la créature.
    Dernière modification par Freddy_Gwendo ; 26/09/2015 à 04h40.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  19. #19
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    J'ai modifié mes fonctions pour qu'elles puissent servir à ajouter des immunités à des créatures OU à objets

    Liste des fonctions d'immunités :

    • GW_ADD_SPECIAL_EFFECTS : Two Weapon Skill +2 Stat: THAC0 Modifier (Off-Hand) - NPCBump [300] - Invisible Detection by Script [193] - Protection from Backstab [292] - Infravision [63] - Protection from Turn [297].
    • GW_IMMUN_POISON : Immunité au Poison.
    • GW_IMMUN_DISEASE : Immunité à la Maladie.
    • GW_IMMUN_BLEEDING : Immunité à l'Hémorragie.
    • GW_IMMUN_BLIND : Immunité à la Cécité.
    • GW_IMMUN_CHARM : Immunité aux Charmes.
    • GW_IMMUN_CONFUS : Immunité à la Confusion.
    • GW_IMMUN_DEATH : Immunité à la Mort.
    • GW_IMMUN_DRAIN : Immunité à l'Absorption d'énergie.
    • GW_IMMUN_FEAR : Immunité à la Peur.
    • GW_IMMUN_HOLD : Immunité à l'Immobilisation.
    • GW_IMMUN_ILLUSION : Immunité à l'Illusion.
    • GW_IMMUN_MIND_EFFECTS : Immunité aux effets affectant l'Esprit.
    • GW_IMMUN_PETRIF : Immunité à la Pétrification.
    • GW_IMMUN_SILENCE : Immunité au Silence.
    • GW_IMMUN_SLEEP : Immunité au Sommeil.
    • GW_IMMUN_SLOW : Immunité à la Lenteur.
    • GW_IMMUN_STUN : Immunité à l'Étourdissement.
    • GW_IMMUN_MISSILE_NORM : Immunité aux projectiles normaux.
    • GW_IMMUN_FLIGHT : Immunité des créatures volantes à certains sorts.
    • GW_IMMUN_ENTANGLE : Immunité à l'effet d'Enchevêtrement.
    • GW_IMMUN_WEB : Immunité à l'effet de Toile.



    Il me reste :

    1. à définir et/ou coder les immunités suivantes : Enchantement, Son, Métamorphose, Protection vs Loi, Mal et compagnie, immunités à certains sorts ou à des niveaux de sorts. Ainsi que la régénération.
    2. Rajouter une fonction spéciale pour les adapter aux sorts.
    3. Définir une routine pour classer les sorts selon leurs effets et les intégrer directement dans les immunités.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  20. #20
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Comme je n'arrive toujours pas à trouver un moyen simple de gérer les sorts mémorisables dans les HLA, je me suis concentré sur d'autres points :

    1. FONCTION GW_IMMUN_POLYM : Immunité à la Métamorphose.
    2. FONCTION GW_CRE_IMMUN : AJOUT automatique d'un objet accordant des immunités particulières à un type de créature.
    3. Ajout automatique des effets de régénération.
    4. Id. pour les immunités aux armes.
    5. Id. pour les immunités ou traits spéciaux à des sous-types de créatures.

    Le tout appelé par des tables 2da qui permettent soit d'ajouter des effets dans le fichier cre., soit de doter les créatures d'objets (anneaux, amulettes, ceintures...) qui leur donnent ces immunités.

    Par ailleurs, une procédure permet de créer ces objets selon le type d'immunité choisi.

    Enfin, et c'est en cours et presque terminé, j'ai rajouté des contrôles qui permettent de ne pas saisir de valeurs (ex : ID reprend les données du fichier source, AF signifie que l'on a pas encore défini certaines caractéristiques. Dans ce cas, la procédure entre des données basiques afin de ne pas planter le tp2 et un fichier txt est créé avec la liste des données manquantes et leur valeur de remplacement temporaire.
    Dernière modification par Freddy_Gwendo ; 15/10/2015 à 12h23.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  21. #21
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Ajout de :

    - Modification de la vitesse de déplacement de la créature : soit State: Haste [16] (0 Normal Haste - 1 Improved Haste - 2 Speed haste without attack bonuses) ,soit Stat: Modifier (II) [176].


    Sinon, la plupart des contrôles sont effectifs :

     Cliquer ici pour révéler le texte



    Je mets de côté les derniers ajustements car la procédure fonctionne en l'état et je me focalise sur des éléments plus concrets du mod.
    J'y reviendrai à l'occasion.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  22. #22
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 125
    Salut Freddy,

    ça fait un moment que je veux poster sur ton sujet. Car je ne suis pas sur d'avoir tout compris.

    Pour moi, tu es à des années lumières devant moi au niveau technique. Donc je vais essayer d'y voir clair.

    Tu as fait des fonctions pour le TP2 afin d'automatiser des caractéristiques de créatures?

    Je comprends pas trop comment l'intégrer dans mon mod.

    Moi j'utilise DLTCEP, je crée un CRE avec les caractéristiques dont j'ai besoin. Et parfois je me dis combien il devrait avoir de points vie, de THACO etc... selon son niveau. C'est sur l'automatisation de ce point que tu travailles?

  23. #23
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Citation Envoyé par Cocrane Voir le message
    Tu as fait des fonctions pour le TP2 afin d'automatiser des caractéristiques de créatures?

    Je comprends pas trop comment l'intégrer dans mon mod.

    Moi j'utilise DLTCEP, je crée un CRE avec les caractéristiques dont j'ai besoin. Et parfois je me dis combien il devrait avoir de points vie, de THACO etc... selon son niveau. C'est sur l'automatisation de ce point que tu travailles?
    En fait, j'en avais marre de faire des aller-retour entre la doc et mes fichiers pour vérifier que mes créatures étaient conformes. Alors, j'ai commencé par faire un tableau OpenOffice avec quelques valeurs calculées (PV par exemple selon la classe et le niveau).
    Mais ça n'allait pas bien loin : il y a plus de 120 variables à renseigner par créature.

    Alors j'ai commencé par automatiser la procédure avec WeiDU. Le principe est simple : je lis les fichiers ids et 2da qui contrôlent les règles du jeu, puis WeiDU renseigne automatiquement les champs.
    Par exemple, les PV, les THAC0, les JS, le nombre d'attaques par round, la réputation, la connaissance, etc...

    Petit-à-petit, le projet s'est étoffé : maintenant, je peux choisir de créer aléatoirement les stats des persos, vérifier si celles que j'ai entrées "manuellement" sont conformes aux règles et décider de les corriger ou pas.

    De même, j'en avais assez de renseigner les sorts à la main : pour l'instant, la procédure calcule automatiquement les sorts divins mémorisables par les persos et les rentre en mémoire. Il ne reste plus qu'à saisir à la main ce que l'on veut apprendre.
    Idem pour les kits : quand je crée un cavalier, toutes ses habilités sont automatiquement insérées dans le fichier .cre.

    Là, je viens de terminer les fonctions d'immunités : par exemple, les morts-vivants disposeront automatiquement des immunités qui leur sont propres. Idem pour les dragons. Plus besoin de les saisir, ni de leur ajouter un objet particulier : WeiDU le fait tout seul.

    Pareil pour la coloration : j'ai créé un fichier 2da qui recense toutes les colorations dont j'ai besoin. Il suffit que je renseigne la colonne COLOR par GOLEMAMB pour que WeiDU écrive les codes correspondant à la coloration du Golem d'Ambre que je t'avais passé.

    Enfin, comme c'est pénible de remplir toutes les colonnes du tableau, je viens de terminer les contrôles qui permettent de zapper certaines saisies et les remplacent par des valeurs "moyennes".

    Bref, je suis en train de tester tout ça avec mes créatures à partir d'un fichier calc d'OpenOffice : dans mon tp2, je lance la sous-routine (203_creatures.tpa) qui charge le fichier OpenOffice (en fait une version csv) et les librairies de fonctions et de macros, puis fait le travail toute seule : selon que je copie un fichier existant ou que j'en crée un nouveau, tout est automatique.

    Si je veux modifier une valeur, par exemple augmenter une créature d'un, ou bien modifier ses PV (les rendre maximum ou aléatoires) il suffit que je modifie un champ du tableau et que je relance la routine.

    J'ai même poussé le vice jusqu'à automatiser l'attribution des noms des créatures.

    Bref, tout est malléable et modifiable à tout instant. Si je veux rajouter une immunité aux sorts de soins (ce que je vais faire bientôt), il me suffit de rajouter la fonction adéquate (en fait, un copier-coller d'une fonction existante en modifiant ses paramètres) et de rajouter une ligne au fichier 2da qui gère les immunités pour qu'elle soit prise en compte.
    Id. si je veux rajouter une coloration. Là je n'ai plus qu'à ajouter la ligne GOLEMBLEU avec ses paramètres dans le fichier GWCRECOL.2da et à saisir GOLEMBLEU dans la colonne COLOR de la créature X pour qu'elle soit colorée en conséquence.


    Bref, si ça t'intéresse, tu pourras utiliser la procédure et l'adapter à tes besoins en ajoutant ou en modifiant des paramètres.

    Le plus gros du boulot a été fait (près de 10 000 lignes de code), là je teste.

    Tout n'est pas renseigné mais pour l'instant, il ne me reste plus qu'à saisir à la main les sorts mémorisés (leur nombre est déjà calculé selon le niveau).
    Dernière modification par Freddy_Gwendo ; 13/02/2016 à 21h06.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  24. #24
    Date d'inscription
    mars 2010
    Localisation
    Paris
    Messages 
    1 125
    Impressionnant. C'est le mot.

    Effectivement ça pourrait être un gain de temps très intéressant.

    Je n'ai pas le recul sur le confort d'utilisation mais l'aspect automatisation des règles est vraiment un atout.


    Donc Ok pour le tester, lorsque tu seras satisfait de ton code.

    En tout cas bravo.

    Avec tes passionnés comme toi BG a encore une longue vie.

  25. #25
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Je pense qu'une version "utilisable" sera disponible d'ici une semaine ou deux : il faut que je la teste sur plus de 200 ou 300 créatures pour m'assurer qu'elle fonctionne plus ou moins et identifier les éventuels dysfonctionnements. Puis rédiger un petit guide d'utilisation qui prévoira les cas où ça ne fonctionne pas, car il y en aura forcément !

    Mais je vais consacrer mon week-end à finaliser le chapitre I du mod (sans les scripts de créatures, ou plutôt en les dotant de scripts "vanilla") pour le proposer en test.

    Plus quelques bam à pondre, et enfin me mettre à jour avec Infinity Animations (publier mon fix de la wyverne blanche et inscrire l'animation du Golem d'Ambre), maintenant que SHS est de retour.

    Tu pourras enfin l'inclure dans ton tp2 sans squatter le slot du golem d'argile.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  26. #26
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Bon, j'ai un léger problème avec la fonction CREATE : Toutes mes créatures dotées d'objets créés avec elle provoquent invariablement un CTD :

    ASSERTION FAILED! Return Address: 0x9FFB75 File: ChVidImage3d.cpp Line: 899 Expression: FALSE Message: CVidCell::FXRender3dSetPalette: LoadFrame() failed
    Pourtant, ces fichiers ne sont pas corrompus.

    Chose encore plus étrange, lorsque je les charge et les sauve dans DLTCEP, sans les modifier, miracle : plus de CTD !

    Bref, quelqu'un a-t-il une petite idée du pourquoi du comment de ce foutu bug ?

    Sinon, je vais devoir modifier ma fonction et me passer de CREATE, mais ça me gonfle plus que sérieusement !
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  27. #27
    Date d'inscription
    juillet 2003
    Localisation
    Plaisir
    Messages 
    6 955
    Peux-tu poster les deux fichiers avant et après réenregistrement par DLTCEP, s'il te plaît ? Une comparaison au niveau binaire permettra de mettre en évidence ce qui a été changé.

    Par le passé, Shadow Keeper était connu pour enregistrer de façon non standard, en ne suivant pas forcément l'ordre habituel (après tout il y a des offsets dans certains formats pour le début de chacun des blocs, rien n'oblige à ce qu'ils soient toujours dans le même ordre). A l'époque cela avait causé des tensions entre son auteur et le responsable de TeamBG, qui avait annoncé vouloir faire une version modifiée de Shadow Keeper. La légende dit que c'est la raison pour laquelle les sources n'ont plus été mises en ligne à partir d'une certaine version.

    Bref, il me semble que DLTCEP réenregistre les fichiers dans l'ordre considéré habituel et corrige également certains défauts lorsqu'il en trouve (en particulier pour la worldmap).
    Peut-être y a-t-il un phénomène de ce type-là qui corrige ton fichier.

    Quasiment tous les éditeurs hexa doivent permettre de faire une comparaison. Kdiff3 pourrait déjà t'indiquer si quelque chose à changé.
    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 !

  28. #28
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Argh ! Désolé, j'étais persuadé de l'avoir fait...

    Je t'envoie deux séries : un casque et une plate.

    Ce qui m'étonne, c'est que c'est une fonction WeiDU, donc elle devrait fonctionner...
    Dernière modification par Freddy_Gwendo ; 12/11/2015 à 15h34. Motif: Suppression des fichiers liés devenus inutiles
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  29. #29
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Confirmation, c'est bien la fonction CREATE qui pose problème.

    J'ai remplacé

    Code:
    ACTION_FOR_EACH GW_HelmH3 IN ~GWHelmOr~ BEGIN
    	CREATE ITM "%GW_HelmH3%"
    		LPF ~GW_CREATE_ITEM~ STR_VAR GW_item_type = HELMH3 END
    		LPF~GW_ITM_COLORISATION~ STR_VAR GW_item_code = H3 GW_itm_color = "SHINY_GOLD" END
    
    LPF ag_spl_itm_validity RET valid END	// Une fonction empruntée à DS pour vérifier la validité du fichier créé : ça marche !
    PRINT "valid = %valid%"
    END
    
    ACTION_FOR_EACH GW_PlateC IN ~GWPlatOr~ BEGIN
    	CREATE ITM "%GW_PlateC%"
    		LPF ~GW_CREATE_ITEM~ INT_VAR GW_item_bonus_AC = 3 STR_VAR GW_item_type = FULLPLATE END
    		LPF~GW_ITM_COLORISATION~ STR_VAR GW_item_code = 4A GW_itm_color = "SHINY_GOLD" END
    
    LPF ag_spl_itm_validity RET valid END
    PRINT "valid = %valid%"
    END
    par

    Code:
    ACTION_FOR_EACH GW_HelmH3 IN ~GWHelmOr~ BEGIN
    	COPY ~Diamant_Eternel/Clones/GWCreate.itm~  ~override/%GW_HelmH3%.itm~	// Un fichier itm vide.
    		LPF ~GW_CREATE_ITEM~ STR_VAR GW_item_type = HELMH3 END
    		LPF~GW_ITM_COLORISATION~ STR_VAR GW_item_code = H3 GW_itm_color = "SHINY_GOLD" END
    
    LPF ag_spl_itm_validity RET valid END
    PRINT "valid = %valid%"
    END
    
    ACTION_FOR_EACH GW_PlateC IN ~GWPlatOr~ BEGIN
    	COPY ~Diamant_Eternel/Clones/GWCreate.itm~  ~override/%GW_PlateC%.itm~
    		LPF ~GW_CREATE_ITEM~ INT_VAR GW_item_bonus_AC = 3 STR_VAR GW_item_type = FULLPLATE END
    		LPF~GW_ITM_COLORISATION~ STR_VAR GW_item_code = 4A GW_itm_color = "SHINY_GOLD" END
    
    LPF ag_spl_itm_validity RET valid END
    PRINT "valid = %valid%"
    END
    Et plus de CTD.

    Je pensais que ça provenait de ma librairie de fonctions, mais apparemment non puisqu'elles fonctionnent dans le second cas.

    D'ailleurs les voici :

     Cliquer ici pour révéler le texte


    Ça résout provisoirement mon problème en me permettant une installation sans bug.

    Sauf que j'ai utilisé la fonction CREATE pour créer des effets qui paraissent nickel dans NI et DLTCEP ; mais s'ils se comportent de la même manière ingame, il faut que je revois toute ma procédure. C'est peut-être ce dysfonctionnement qui explique pourquoi mes effets de bonus au toucher et aux dégâts contre les dragons ne fonctionnent pas et ont ruiné la vocation de mon Kit du Chevalier de Diamant.

    J'ai donc posé la question à Wisp en attendant de trouver une soluce par ici.
    Dernière modification par Freddy_Gwendo ; 21/10/2015 à 13h21.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

  30. #30
    Date d'inscription
    avril 2011
    Localisation
    Égaré dans un vortex entre Féérune et le Royaume de Diamant Éternel
    Messages 
    5 013
    Réponse obtenue et solution trouvée.

    Je l'ai publiée ici pour une meilleure lisibilité.
    CARPE DIEM...
    Co-modérateur de La Forge et de La Chambre des Scribes
    Moddeur qui s'arrache les cheveux...

Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 3
    Dernier message: 21/03/2016, 10h46
  2. CRE et champs à mettre dans l'interface
    Par Cocrane dans le forum Éditeur Baldur's Gate
    Réponses: 1
    Dernier message: 13/03/2011, 17h02
  3. [SPL] Où trouver les sorts utilisés par Irenicus dans ses cutscenes ?
    Par Panzerchreck dans le forum Sorts et projectiles
    Réponses: 8
    Dernier message: 01/05/2008, 16h06
  4. [JEU] De l'utilité du roublard
    Par Coranyell dans le forum L'Académie de Padhiver (NWN 1)
    Réponses: 10
    Dernier message: 16/11/2005, 23h46
  5. TOP5 des sorts les plus utilisés
    Par Lord Blitz dans le forum Le Monastère du Corbeau Noir (Icewind Dale 2)
    Réponses: 26
    Dernier message: 22/12/2004, 13h09

Règles de messages

  • Vous ne pouvez pas créer de nouvelles discussions
  • Vous ne pouvez pas envoyer des réponses
  • Vous ne pouvez pas envoyer des pièces jointes
  • Vous ne pouvez pas modifier vos messages
  •  

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251