Imladris production
Vous souhaitez réagir à ce message ? Créez un compte en quelques clics ou connectez-vous pour continuer.

Imladris production

Le forum français de création de cartes et de mods pour Bataille pour la Terre du Milieu
 
AccueilRechercherDernières imagesS'enregistrerConnexion
-50%
Le deal à ne pas rater :
-50% sur les sacs à dos pour ordinateur portable Urban Factory ...
19.99 € 39.99 €
Voir le deal

 

 Comprendre et modifier un objet: Informations de base sur le map.ini

Aller en bas 
AuteurMessage
leo11
Fondateur
leo11


Nombre de messages : 1685
Age : 33
Location : Champagne (france)
Add-On : Oui, vive l'addon.
Date d'inscription : 13/01/2008

Comprendre et modifier un objet: Informations de base sur le map.ini Empty
MessageSujet: Comprendre et modifier un objet: Informations de base sur le map.ini   Comprendre et modifier un objet: Informations de base sur le map.ini Icon_minitimeLun 14 Jan - 0:30

1)Qu'est et a quoi sert le map.ini?
Le map.ini est un fichier placé avec votre carte (dans le dossier de votre carte plus précisément). Ce fichier sert à faire des changements sur le jeu sans affecter le multijoueur. Avec, vous pouvez changer tout ce qui est des données du jeu: La couleur des pouvoirs, celle des unités, la force d'attaque d'une unité, d'un pouvoir, l'ajout de pouvoirs a un héro, d'upgrades,... Ce qui peut offrir pour ceux qui le manient bien un jeu totalement différent de l'initial.
Je vous conseille de telercharger Notepad++ pour bien vous retrouver dans vos modifications d'ini, disponible en telechargement ici:

Notepad++

2)Se procurer un map.ini

Vous pouvez vous le procurer, soit en telechargement:
- http://files.filefront.com/mapini/;8210325;/fileinfo.html
- Soit vous pouvez le créer vous meme(plus pratique) de cette manière:
il suffit juste de prendre un fichier et de le renommer map.ini, si un message demande si vous etes sùr de vouloir changer l'extension du fichier, cliquez oui, et le tour est joué. Vous avez votre map.ini .
Si ce n'est pas le cas ce sera sans doute a cause de vos parametres qui cachent l'extention des fichiers l'orsque l'on les renomme. Pour faire en sorte que l'extention apparaisse allez dans une fenêtre Windows(comme Mes documents) et en haut a gauche allez dans Outils=> Options des dossiers=>Affichage=> et décochez "Masquer les extentions dont le type est connu par windows" (vers le bas de la liste). Et ensuite renommez le fichier dont vous voulez qu'il devienne un map.ini!


3)Recuperer les fichiers ini de base du jeu

Tous les codes que vous verrez dans un map.ini aurons une base copiée a partir d'un fichier .ini venant du jeu. Pour faire des modifications ou créer un nouveau code .ini il est indispensable de recuperer les fichiers ini de base.
Pour cela il vous faut: FinalBig, disponible en telechargement: http://frackass.team.free.fr/index.php?file=Download&op=description&dl_id=2
Avec finalBig vous pouvez decompresser(ou plutot debigger) un fichier.big! Allez dans le dossier d'installation de votre jeu Seigneur des anneaux et utiliser finalBig sur ini.big!
Une fois dessus aller dans: edit =>Extract all =>(message) Oui =>(Choisir un emplacement de decompression) Ok => et enfin attendre que ca se fasse decompresser(une minute environ ou votre ordi ne repond plus et où il vaut mieu ne pas appuyer sur toutes les touches).
Desormais vous devez posseder un dossier nommé data et où il y a à l'interieur plusieurs fichiers.ini et dossiers, vous pouvez tous les ouvrir en format bloc note et regarder ce qui les compose(la plupart du temps au debut c'est du charabia)!


4)Comprendre l'ini d'un objet

Pour commencer les .ini d'un objet se trouvent dans le dossier "object", et ensuite dans le dossier qui correspond a l'emplacement de l'unité dans le jeu.
(Ex:Neutral comporterat le balrog, golum,... goodfaction comporterat toutes les unités du bien,... ect.)

Prenez n'importe quel objet de votre choix, de preference un objet autre d'un batiment. Dessus il y a diverses choses: Le nom de l'objet, des modules, des lignes a part ne faisant pas parti de module et des ensembles de lignes que je vais(par manque de vocabulaire Smile ) appeler set.
Il faud aussi savoir que tout ce qui est precedé d'un point virgule( ; )(en vert sur notepad++) sont des données nulles, ce qui veut dire qu'elles ne servent a rien jusqu'a ce que l'on en retire le point virgule qui les precedent.


A)Le nom de l'objet
C'est la chose la plus importante d'un objet car c'est son seul moyen de se faire reconnaitre par l'ordinateur. Il commence toujours pas "Object ***" et les asterix prennent la place de son nom.
Par exemple voici le nom du capitaine de Dale:
Code:
Object DwarvenCaptainofDale
Ensuite il y a ce qui s'appelle l'enfant de l'objet, il commence par "ChildObject", puis separé par un espace le nom voulu et separé par un autre espace le nom de l'objet auquel c'est l'enfant. Il sert a reprendre entierement un objet et lui rajouter ou lui modifier plusieurs choses. Par exemple le roi theoden a son enfant d'objet qui est celui ci:
Code:
ChildObject RohanTheodenCavalry RohanTheoden
(Donc 1er place "ChildObject", 2eme place "Le nom voulu" et 3eme place "le nom auquel il est l'enfant".)




B)Les lignes a part
Les lignes a part qui se chargent de donner toutes les choses obligatoires dès le debut du jeu, comme la texture d'un objet, sa classe dans le jeu, son nom, sa puissance d'attaque, ect... Elles se font assez facilement modifier quand on le desire car il ne suffit que de modifier les données apres leur "égal".
En voici une qui dit que le capitaine de Dale fait partie de la classe unitée dans l'editeur:
Code:
EditorSorting       = UNIT
Ou encor son portrait dans le jeu:
Code:
SelectPortrait = HPCaptainOfDalePortrait




C)Les set
Les set regroupent les Weaponset, Armorset LocomotorSet et où je vais aussi regrouper les AutoResolveWeapon, AutoResolveArmor et AutoResolveBody. Les set servent a definir l'armure, l'arme et la rapidité selon les conditions. Par exemple si la condition "switch arme" est activée alors le hero a une attaque differente d'avant, de meme pour monter a cheval ou non. Les autoresolves servent a resoudre quel est l'arme, l'armure ou la vitesse initiale de l'objet.
Voici les deux armorset du capitaine de Dale et son AutoresolveArmor:
Code:
   ArmorSet
      Conditions     = None
      Armor        = HeroArmor
      DamageFX      = NormalDamageFX
   End
   ArmorSet
      Conditions     = MOUNTED
      Armor        = HeroArmorMounted
      DamageFX      = NormalDamageFX
   End

   AutoResolveArmor
      Armor    = AutoResolve_CaptainOfDaleArmor
   End



D)Les modules
Les modules sont un ensemble de lignes. Il existe quatre types de modules ressencés a ce jour:

1]-Le module Behavior qui se reconnait en commencant toujours par "Behavior =" et qui permet de faire qu'une certaine chose ait besoin d'une autre pour se faire declencher. Comme les pouvoirs ou declencher plusieurs choses en meme temps suite a un autre module de declenché. Comme la vie du balrog invoqué.
(Ex: Si le hero dans son level a debloqué l'upgrade "Cloacklevel1"(l'l'amelioration cape elfique debloquée lorsque le hero monte jusqu'au niveau prérequi au pouvoir) alors le pouvoir cape elfique peut se faire utiliser).
Ces modules sont souvent presents plusieurs fois dans un .ini car ils servent pour les pouvoirs.
Voici un module Behavior se trouvant sur le balrog qui lui restreint son temps de vie:
Code:
   Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate;Le nom du Behavior et sa fonction
      MinLifetime      = BALROG_LIFETIME;Le temps de vie minimum
      MaxLifetime      = BALROG_LIFETIME;Le temps de vie maximum
      DeathType      = FADED;Le type de mort
   End;La fermeture du module


2]-Le module Draw qui se reconnait en commencant toujours par "Draw = " et qui s'ocuppe d'assurer le modele de l'objet(le modele d'un loup est par exemple différent de celui d'un guerrier homme, ect...) ainsi que ces animations.(deplacement, attaque,ect...). Il est souvent present que deux fois sur un objet et rarement trois fois ou plus.
Voici un module Draw du capitaine de Dale et qui se charge de mettre les animations au mouvement ainsi que ses particules:
Code:
   Draw = W3DScriptedModelDraw DustEffects;Nom du module et sa fonction
      DefaultModelConditionState;Debut des models et des animations
        Model = None
      End
      IdleAnimationState
      End
      AnimationState = MOUNTED MOVING WADING
         ParticleSysBone = None FootstepSlash
      End
      AnimationState = MOUNTED MOVING ACCELERATE
         ParticleSysBone = None GenericSiegeTrailDust
      End
      AnimationState = MOUNTED MOVING ACCELERATE
         ParticleSysBone = None GenericSiegeTrailDust
      End
      AnimationState = MOUNTED MOVING
      End
   End;Fermeture du module
Le module draw est tres dur a modifier car il s'occupe des animations qui sont chacunes uniques sur un model(le roi sorcier n'a pas les meme mouvements qu'un archer elfe) mais peut beaucoup servir quand on veut modifier l'apparence d'un model statique comme un batiment qui ne bouge pas pour des raisons design. Comme la forge des hommes pour qu'elle ressemble a une statue, ect...



3]-Le module Body qui se reconnait en commencant toujours par "Body =". Il n'est present la plupart du temps qu'une seule fois sur un objet et il sert a indiquer sa vie.
Voici par exemple celui de Drogoth le seigneur dragon des gobelins:
Code:
   Body = RespawnBody ModuleTag_02;Fonction et nom du module
      CheerRadius      = EMOTION_CHEER_RADIUS;Debut des donners du module
      MaxHealth       = DROGOTH_HEALTH
      HealingBuffFx    = None
   End;Fermeture du module


4]-Le module ClientBehavior qui se reconnait en commencant toujours par "ClientBehavior =". Il n'est present la plupart du temps qu'une seule fois sur un objet et il sert a mettre en relation un son avec un mouvement. Par exemple a la mort d'un hero on entend toujours son cris, ou quand il attaque un ennemi on entend son épée se cogner contre ce dernier. Il est assez dur a modifier car il faut comprendre quel mouvement se repercute a quel son.
Voici par exemple celui du capitaine de Dale:
Code:
ClientBehavior = AnimationSoundClientBehavior ModuleTag_AnimAudioBehavior;Nom et fonction
MaxUpdateRangeCap = 800
AnimationSound = Sound:FootstepDirtA   Animation:GUFaramir_SKL.GUFaramir_RUNA  Frames:2 12
AnimationSound = Sound:FootstepDirtA   Animation:GUFaramir_SKL.GUFaramir_RUNB  Frames:2 12

AnimationSound = Sound:WeaponSwitchBow   Animation:GUFaramir_SKL.GUFaramir_ATKC  Frames:18

AnimationSound = Sound:SwordShingClean1   Animation:GUFaramir_SKL.GUFaramir_STHA     Frames:21
AnimationSound = Sound:SwordIntoScabbard1   Animation:GUFaramir_SKL.GUFaramir_STHB     Frames:11
AnimationSound = Sound:WeaponSwitchBow   Animation:GUFaramir_SKL.GUFaramir_STHB     Frames:28

AnimationSound = Sound:SwordIntoScabbard1   Animation:GUFaramir_SKL.GUFaramir_STHC  Frames:2
AnimationSound = Sound:WeaponSwitchBow   Animation:GUFaramir_SKL.GUFaramir_STHC  Frames:3
AnimationSound = Sound:SwordShingClean1   Animation:GUFaramir_SKL.GUFaramir_STHD  Frames:6
AnimationSound = Sound:BodyFallGenericNoArmor  Animation:GUFaramir_SKL.GUFaramir_DIEA  Frames:88
AnimationSound = Sound:BodyFallGenericNoArmor  Animation:GUFaramir_SKL.GUFaramir_DIEB  Frames:85
AnimationSound = Sound:BodyFallGenericNoArmor  Animation:GUFaramir_SKL.GUFaramir_DIEC  Frames:49
AnimationSound = Sound:BodyFallSoldier      Animation:GUFaramir_SKL.GUFaramir_LNDA     Frames:3
AnimationSound = Sound:BodyFallSoldier      Animation:GUFaramir_SKL.GUFaramir_LNDB     Frames:2

End;Fermeture du module


Ensuite, il faud aussi comprendre a peut près a ce que correspond chaque choses sur un module et se qu'il faud respecter pour ne pas avoir de game crash! Voici un module que j'ai colorier de différente manière et ou j'ai integrer une legende(le temps de vie du balrog):

Citation :
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime = BALROG_LIFETIME;Le temps de vie minimum
MaxLifetime = BALROG_LIFETIME;Le temps de vie maximum
DeathType = FADED;Le type de mort

End

-- C'est le type de Module, il donne la première fonction du module(draw, behavior,...(s'écrit avec une majuscule au début))
-- C'est la fonction du module, elle donne l'effet le plus raprocher possible du module, il y en existe pleins, mais ils sont tous donner a un type de module précis(un LifetimeUpdate n'ira pas sur un module de type Draw.)
-- C'est le nom du module, ce peut etre n'importe quel formation de lettre tant qu' il n'est pas séparer en deux par un espace
-- Ce sont les codes, ils sont uniques a la fonction du module, c'est ce qui se fait modifier pour avoir des changements sur un effet.
-- C'est le "End" de fin, le "End" a toujours une majuscule comme première lettre, il sert ici a fermer le module.





Voila desormais vous connaissez tout ce qui est utile a connaitre sur une unité a format brut dans le jeu (Ce que j'appelle brut est ce qui n'est pas modifié mais qui peut l'etre).


Dernière édition par leo11 le Mer 25 Fév - 16:42, édité 9 fois
Revenir en haut Aller en bas
https://imladrisproduction.forumotion.com
leo11
Fondateur
leo11


Nombre de messages : 1685
Age : 33
Location : Champagne (france)
Add-On : Oui, vive l'addon.
Date d'inscription : 13/01/2008

Comprendre et modifier un objet: Informations de base sur le map.ini Empty
MessageSujet: Re: Comprendre et modifier un objet: Informations de base sur le map.ini   Comprendre et modifier un objet: Informations de base sur le map.ini Icon_minitimeSam 19 Jan - 12:17

5)Faire marcher l'ini d'un objet modifié

Il y a 3 genres de codes sur un objet(modules, sets, lignes a part) dont 2 de ces genres de code qui se modifient de la meme façon(lignes a part et sets) ainsi que 1 autre qui se modifie de plusieurs manieres differentes(modules).
Premierement devant chaque code il faud entrer le nom de l'objet dont la modification est voulue et quand on a terminé de modifier un objet mettre son "End" de fin(que je vous rapellerai de le mettre la plupart du temps).
Ensuite il faut choisir ce que l'on veut modifier:


A) Modification de lignes a part et set
Il n'est rien de plus simple, il suffit juste de copier la ligne ou le set entier(jusqua son End) modifier ce que l'on veut modifier et le tour est joué. Quand vous avez fini avec les mofifications de l'objet ajoutez le "End" de fin de l'objet.
Ex: Voici par exemple le capitaine de Dale modifié avec la photo de drogoth et son End de fin:


Code:
Object DwarvenCaptainofDale
ButtonImage = HIDrogoth
End


Par exemple: le capitaine de Dale modifier avec l'armure de Drogoth et son End de fin:


Code:
Object DwarvenCaptainofDale
ArmorSet
Conditions      = None
Armor          = DrogothArmor
DamageFX        = FellBeastDamageFX
End
End


Par exemple: le capitaine de Dale modifié avec la photo de drogoth, l'armure de Drogoth et son End de fin:


Code:
Object DwarvenCaptainofDale
ButtonImage = HIDrogoth

ArmorSet
Conditions      = None
Armor          = DrogothArmor
DamageFX        = FellBeastDamageFX
End
End



B) Modification de modules

Ca devient un peut plus difficile a ce moment là mais c'est toujours un jeu d'enfant quand on a compris le principe. Car un module a besoin de savoir s'il est un module sur l'objet brut qui va etre modifié ou si c'est un nouveau module.


Mais avant je vais vous faire comprendre a peu près comment les end sont repartient! Premièrement un "End ai fait pour fermer un ensemble de code(les codes d'un objet, les codes d'un module,...) et pour chaque debut d'ensemble de codes il y aurrat un "End " à la fin.
Voici un module draw dont j'ai colorier les end et les debut de codes pour mieu s'y retrouver:

Citation :
Object Tree07 ;Un arbre
ReplaceModule ModuleTag_01
Draw = W3DScriptedModelDraw Athelas_model
DefaultModelConditionState
Model = PCornstalk01
End

ModelConditionState = BURNED
Model = PTGrass04
End

AnimationState = AFLAME
ParticleSysBone = None FireTreeSmall
ParticleSysBone = None TreeEmbers
End

AnimationState = DYING BURNED
ParticleSysBone = None FireTreeSmall
ParticleSysBone = None TreeEmbers
End
End
End
End

Voici ce qui devrait vous permettre de vous y retrouver au niveau des "End".


A]-Ajouter un module veut dire qu'il faut regarder sur l'objet auquel on veut l'ajouter si il ne l'a pas deja. Pour ajouter un module il suffit juste de prendre le module que vous voulez (le copier jusqu'a son end de fin(le module draw a souvent 3 End de fin au contraire des autres qui n'en ont qu'un)).
Voici par exemple le module de temps de vie que j'ai recuperé du balrog( object=>neutral=>neutralunits.ini) :


Code:
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
    MinLifetime        = BALROG_LIFETIME
    MaxLifetime        = BALROG_LIFETIME
    DeathType        = FADED
End


Le modifier et ajouter devant le module tout entier "AddModule"(Add= ajouter) et ajouter un "End" pour fermer le module. En pensant eventuellement, si on pense arreter les modifications de l'objet là, mettre le "End" qui ferme l'objet et ses modifs.
Exemple: Le capitaine de Dale avec un temps de vie:


Code:
Object DwarvenCaptainofDale
AddModule    ;module ajouter
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime    = 3600
MaxLifetime    = 3600
DeathType        = FADED
End;End du module brut
End;End de fermeture du module modifier
End;End de fin de l'objet


Maintenant le capitaine de dale avec deux modules en plus, le temps de vie et (le module n'etait pas sur le capitaine de Dale) un nombre maximum de points de vie, tout ça ajouter:


Code:
Object DwarvenCaptainofDale
AddModule
Body = ActiveBody ModuleTag_MakesKillWork
MaxHealth = 9999999999
End
End    ;End de fermeture du module modifier
AddModule    ;module ajouter
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime    = 3600
MaxLifetime    = 3600
DeathType        = FADED
End;End du module brut
End;End de fermeture du module modifier
End;End de fin de l'objet




B]-Pour modifier un module qui etait deja present sur un objet il faut s'assurer de son nom. Je vais prendre le cas du balrog(object=>neutral=>neutralunits.ini) dont je vais modifier son temps de vie.
Le nom du module et sa fonction sont: "Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate", mais nous ce qui nous interesse c'est seulement le nom du module et rien d'autre.
Donc, il faut savoir que le nom du module est le dernier "mot" separé par un espace sur la ligne du module, donc dans le cas suivant c'est "ModuleTag_LifetimeUpdate".
Mais avant il faut placer devant ce nom le mot qui dit ce que l'on veut faire avec, dans notre cas le modifier, ce qui va nous faire ajouter ces lignes devant le nom "ReplaceModule"(Replace=replacer/modifier) puis ensuite le nom du module que l'on vient de trouver, ce qui va faire "ReplaceModule ModuleTag_LifetimeUpdate". Vous placerez ensuite le module entier depuis "Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate" jusqu'a son "End" de fin. Ce qui fera:


Code:
ReplaceModule ModuleTag_LifetimeUpdate
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime        = BALROG_LIFETIME
MaxLifetime        = BALROG_LIFETIME
DeathType        = FADED
End


Mais il vas encore falloir modifier des choses, car ce que vous avez ecrit dit qu'il modifier un module d'un certain nom et que ce nouveau module porte le meme nom que l'ancien, ce qui vas provoquer un gamecrash au lancement de votre carte.
Donc il vas falloir modifier le nom du module modifié avec un autre nom, donc modifier "ModuleTag_LifetimeUpdate" de la ligne "Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate".
Vous pouvez entrer n'importe quel nouveau nom! Tant qu'il n'y a pas d'espace dans celui-ci et aucune ponctuation. Je vais lui donner comme nom "Temps_vie_modif" par exemple ce qui va me faire:


Code:
ReplaceModule ModuleTag_LifetimeUpdate
Behavior = LifetimeUpdate Temps_vie_modif
MinLifetime        = BALROG_LIFETIME
MaxLifetime        = BALROG_LIFETIME
DeathType        = FADED
End


Voila, desormais il n'y a plus qu'a appliquer le nom de l'objet (Object MordorBalrog) pour que l'ordinateur sache que c'est le module de cette objet qui a été modifié, ajouter le end de fin du module modifié et le end de fin de l'objet si vous avez fini ces modification. Ca devrait vous faire ça:


Code:
Object MordorBalrog
ReplaceModule ModuleTag_LifetimeUpdate
Behavior = LifetimeUpdate Temps_vie_modif
MinLifetime        = 6000
MaxLifetime        = 6000
DeathType        = FADED
End;End du module brut
End;End de fermeture du module modifier
End;End de fin de l'objet

(la fonction du module, en l'occurence "LifetimeUpdate"(qui indique a l'ordinateur que ca reviendrat au temps de vie de l'unité) ne doit jamais etre modifiée si vous ne voulez recevoir de game crasch pendant la partie ou ne pas faire fonctionner votre .ini)



C]-Pour supprimer un module il suffit juste de mettre les lignes suivantes "RemoveModule" devant le nom du module qui doit etre suprimé et mettre un end pour la fermeture de l'objet si les modifs sont termineées sans mettre se qui suit le module initial.
Ce qui ferait, si je modifiais le balrog pour que son temps de vie soit suprimé:



Code:
Object MordorBalrog
RemoveModule ModuleTag_LifetimeUpdate
End;End de fin de l'objet



******************************************************************************************************************

Si vous avez des questions supplémentaires à poser à propos de ce tutoriel, veuillez les poser dans la section "Discussion" qui se trouve >ICI<

******************************************************************************************************************


Revenir en haut Aller en bas
https://imladrisproduction.forumotion.com
 
Comprendre et modifier un objet: Informations de base sur le map.ini
Revenir en haut 
Page 1 sur 1
 Sujets similaires
-
» modifier la distance de vue de la caméra de base
» Demande d'informations
» Modification de base
» Objet infranchissable
» objet CINE

Permission de ce forum:Vous ne pouvez pas répondre aux sujets dans ce forum
Imladris production :: Ini codes et .str :: Tutoriaux-
Sauter vers: