leo11 Fondateur
Nombre de messages : 1685 Age : 33 Location : Champagne (france) Add-On : Oui, vive l'addon. Date d'inscription : 13/01/2008
| Sujet: Comprendre et modifier un objet: Informations de base sur le map.ini Lun 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.iniVous 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 objetPour 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 ) 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'objetC'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 partLes 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 setLes 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 modulesLes 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 | |
|
leo11 Fondateur
Nombre de messages : 1685 Age : 33 Location : Champagne (france) Add-On : Oui, vive l'addon. Date d'inscription : 13/01/2008
| Sujet: Re: Comprendre et modifier un objet: Informations de base sur le map.ini Sam 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 setIl 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<
****************************************************************************************************************** | |
|