Le map.ini est un fichier placer avec votre carte, se fichier sert a faire des changements sur le jeu sans affecter le multijoueur. Avec, vous pouvez changer tous se qui est des donners du jeu: La couleur des pouvoirs, celle des uniters, la force d'attaque d'une uniter, d'un pouvoir, l'ajout de pouvoirs a un hero, d'upgrades,... Se qui peut offrir pour ceux qui le manie bien un jeu totalement different de l'initial.
Je vous conseil de telercharger Notepad++ pour bien vous retrouver dans vos modification d'ini, disponible en telechargement ici: http://www.01net.com/outils/telecharger/wi.../tele29119.html
2)Se procurer un map.ini
Il peut se faire procurer, soit en telechargement:
- http://files.filefront.com/mapini/;8210325;/fileinfo.html
- Soit vous pouvez le créé vous meme(plus pratique) de cette maniere:
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 vous aurez un map.ini parfait asser rapidement.
Si ce n'est pas le cas se serat sans doute a cause de vos parametres qui cache 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 verez dans un map.ini aurons une base copier a partir d'un fichier .ini venant du jeu. Pour faire des modifications ou créé un nouveau code .ini il est indispensable de recuperer les fichiers ini de base.
Pour cela il vous faud: FinalBig, disponible en telechargement: http://frackass.team.free.fr/index.php?fil..._dl&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 appuier sur toutes les touches).
Desormait vous devez posseder un dossier nommer data et où il y a à l'interieur plusieurs fichiers.ini et dossiers, vous pouvez tous les ouvrir en format bloc note et regarder se 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 ensuit dans le dossier qui correspond a l'emplacement de l'uniter 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 une objet autre d'un batiment. Dessus il y a divers chose: 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
Il faud aussi savoir que tous se qui est suivi preceder d'un point virgule( ; )(en vert sur notepad++) sont des donners nuls se qui veut dire qu'elles ne servent a rien jusqu'a se que l'on en retire le point vigule qui les precedent.
A)Le nom de l'objet
C'est la chose la plus importante d'un objet car s'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 se qui s'appelle l'enfant de l'objet, il commence par "ChildObject", puis separer par un espace le nom voulu et separer 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 3em place "le nom auquel il est l'enfant".)
B)Les lignes a part
Les lignes a part qui se charges 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 asser facilements modifier quand on le desir car il ne suffit que de modifier les donner apres leur "égale".
En voici une qui dit que le capitaine de Dale fait partie de la classe uniter 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 rapiditer selon les condition. 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
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 ressencer a ce jour:
1]-Le module Behavior qui se reconnait en commencant toujours par "Behavior =" et qui permet de faire qu'une certaine chose est besoin d'une autre pour se faire declencher. Comme les pouvoir ou declencher plusieurs choses en meme temps suite a un autre module de declencher. Comme la vie du balrog invoquer.
(Ex: Si le hero dans son level a debloquer l'upgrade "Cloacklevel1"(l'l'amelioration cape elfique debloquez lorsque le hero monte jusqu'au niveau prerequi au pouvoir) alors le pouvoir cape elfique peut se faire utiliser).
Ces modules sont souvents 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
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 ces 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
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 dure a modifier car il s'occupe des animations qui sont chacunes uniques sur un model(le roi sorcier n'a pas les meme mouvement qu'un archer elfe) mais peut beaucoups servir quand on veut modifier l'apparance d'un model statique comme un batiment qui ne bouge pas pour des raisons disign. Comme la forge des hommes pour qu'elle ressenble 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 seul fois sur un objet et il sert a indiquer sa vie.
Voici par exemple celui de Dorgoth le seigneur dragon des gobelin:
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
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 seul fois sur un objet et il sert a mettre en relation un sond avec un mouvement. Par exemple a la mort d'un hero on entend toujours son cris, ou quand il ataque un ennemi on entend son épé se cogner contre ce dernier. Il est asser dur a modifier car il faud comprendre quel mouvement se repercute a quel sond.
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
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
Voila desormait vous connaissez tous se qui est utile a connaitre sur une uniter a format brut dans le jeu (Se que j'appelle brut est ce qui n'est pas modifier mais se qui peut l'etre).
5)Faire marcher l'ini d'un objet modifier
Il y a 3 genres de codes sur un objet et 2 de ces genres de code se modifient de la meme façon.
Premierement devant chaque codes il faud entrer le nom de l'objet dont la modification est voulu et quand on a terminer de modifier un objet mettre son "End" de fin(que je vous rapellerait de mettre la plupart du temps).
Ensuit il faud 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 se que l'on veut modifier et le tour est jouer. Quand vous avez fini avec les mofifications de l'objet ajouter le "End" de fin de l'objet.
Ex: Voici par exemple le capitaine de Dale modifier avec la photo de drogoth et son End de fin:
Code
Object DwarvenCaptainofDale
ButtonImage = HIDrogoth
End
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
ArmorSet
Conditions = None
Armor = DrogothArmor
DamageFX = FellBeastDamageFX
End
End
Par exemple le capitaine de Dale modifier 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
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 est toujours un jeu d'enfant quand on a comprit le principe. Car un module a besoin de savoir s'il est un module sur l'objet brut qui vas etre modifier ou si c'est un nouveau module.
A]-Ajouter un module veut dire qu'il faud regarder sur l'objet auquel on veut l'ajouter si il ne l'a pas dejas. Pour ajouter un module il suffit juste de prendre le module que vous vouler (le copier jusqu'a son end de fin(le module draw a souvent 3 End de fin au contraire des autres qui en ont qu'un)).
Voici par exemple le module de temps de vie que j'ai recuperer du balrog( object=>neutral=>neutralunits.ini) :
Code
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime = BALROG_LIFETIME
MaxLifetime = BALROG_LIFETIME
DeathType = FADED
End
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
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 point de vie, tous sa 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
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 dejas present sur un objet il faud 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 se qui nous interesse c'est seulement le nom du module et rien d'autre.
Donc, il faud savoir que le nom du module est le dernier "mot" separer par un espace sur la ligne du module, donc dans le cas suivant c'est "ModuleTag_LifetimeUpdate".
Mais avant il faud placer devant ce nom le mot qui dit se que l'on veut faire avec, dans notre cas le modifier, se qui vas nous faire ajouter ces lignes devant le nom "ReplaceModule"(Replace=replacer/modifier) puis ensuite le nom du module que l'on vient de trouver, se qui vas faire "ReplaceModule ModuleTag_LifetimeUpdate". Vous placerez ensuite le module entier depuis "Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate" jusqu'a son "End" de fin. Se qui ferat:
Code
ReplaceModule ModuleTag_LifetimeUpdate
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime = BALROG_LIFETIME
MaxLifetime = BALROG_LIFETIME
DeathType = FADED
End
Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate
MinLifetime = BALROG_LIFETIME
MaxLifetime = BALROG_LIFETIME
DeathType = FADED
End
Mais il vas encore falloir modifier des choses, car se que vous avez ecrit dit qu'il modifi 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 modifier avec un autre nom, donc modifier "ModuleTag_LifetimeUpdate" de la ligne "Behavior = LifetimeUpdate ModuleTag_LifetimeUpdate".
Vous pouvez entrer n'importe quel nouveau nom! Temps qu'il n'y ai pas d'espace dans celui ci et aucune ponctuation. Je vais lui donner comme nom "Temps_vie_modif" par exemple se qui vas me faire:
Code
ReplaceModule ModuleTag_LifetimeUpdate
Behavior = LifetimeUpdate Temps_vie_modif
MinLifetime = BALROG_LIFETIME
MaxLifetime = BALROG_LIFETIME
DeathType = FADED
End
Behavior = LifetimeUpdate Temps_vie_modif
MinLifetime = BALROG_LIFETIME
MaxLifetime = BALROG_LIFETIME
DeathType = FADED
End
Voila, desormait 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é modifier, ajouter le end de fin du module modifier 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
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'uniter) ne doit jamais etre modifier)
C]-Pour suprimer un module il suffit juste de mettre les lignes suivantes "RemoveModule" devant le nom du module qui veut etre suprimer et mettre un end pour la fermeture de l'objet si les modifs sont terminers.
Se qui fairait si je modifiais le balrog pour que son temps de vie soit suprimer:
Code
Object MordorBalrog
RemoveModule ModuleTag_LifetimeUpdate
End;End de fin de l'objet
RemoveModule ModuleTag_LifetimeUpdate
End;End de fin de l'objet
6)Les codes ini autres des objets
Ils sont asser nombreux, mais je vais vous exposer les plus utilisers dans les map.ini.
Je vais donc presenter ceux ci: les AttributeModifier,les FXlist/FXParticule, les Stances, les Weapon, les ObjectCreationList et l' ExperienceLevel.
Weapon)-Emplacement "Weapon.ini".
C'est l'ini qui regoupe tous se qui revient a faire perdre des points a un objet. Comme par exemple un guerrier du gondor a un Weapon vu qu'il fait perdre des points de vie a un objet adverce, le feu en a aussi un car il produit des dommages au objets alentours, de meme que les archer et les batiment upgrader qui ont soit une protection qui les entourent et qui fait mal au attaquants soit une tour d'archer qui attaque les ennemis au alentour. Tous sa sont des Weapons que l'on pourrait traduire sous le terme d'arme.
Voici celui de Faramir(son arc precisement) avec les legende de a quoi se reffere les lignes:
Code
Weapon FaramirBow
AttackRange = FARAMIR_BOW_RANGE;Longueur d'attaque, se modifi avec un nombre
RangeBonusMinHeight = 10 ;Hauteur de la fleche minimum
RangeBonus = 1 ;Longueur bonus
RangeBonusPerFoot = #MULTIPLY( FARAMIR_BOW_RANGE .01 ) ;Hauteur que prend la fleche suivant la longueur(en pied)
LeechRangeWeapon = Yes ;Arme a distance
WeaponSpeed = 321; distance/sec de la fleche
MinWeaponSpeed = 241 ; Vitesse minimum de la fleche
MaxWeaponSpeed = 481 ; dist/sec maximum
FireFX = FX_RohanArcherBowWeapon;Type d'attaque
ScaleWeaponSpeed = Yes ; Used for lob weapons, scales speed proportional to range
HitPercentage = 100 ;When this weapon is used it will hit exactly 75% of the time.
ScatterRadius = 0.0 ;When this weapon misses it can randomly miss by as much as this distance.
DelayBetweenShots = FARAMIR_BOW_DELAYBETWEENSHOTS ; Temps entre 2 tires
PreAttackDelay = FARAMIR_BOW_PREATTACKDELAY ; temps avant la premiere attaque
PreAttackType = PER_POSITION ; Type de la premiere attaque ??
FiringDuration = FARAMIR_BOW_FIRINGDURATION ; Temps des animations(encoche fleche)
ClipSize = 1 ;si vue des animations prise de fleche
AutoReloadsClip = Yes ;Si recommence attaumatiquement l'animation
AutoReloadWhenIdle = 1 ;??
ClipReloadTime = Min:FARAMIR_BOW_RELOADTIME_MIN Max:FARAMIR_BOW_RELOADTIME_MAX;temps d'anim
ContinuousFireOne = 0
ContinuousFireCoast = FARAMIR_BOW_RELOADTIME_MAX
AntiAirborneVehicle = Yes ;Contre aerien vehicule
AntiAirborneMonster = Yes ;Contre mostre aerien
CanFireWhileMoving = Yes ;peut tirer quand est en mouvement
ProjectileNugget ; Default: Fleche
ProjectileTemplateName = GoodFactionArrow ;Se qui est tirer, un objet(evilsubobject.ini, good...ini)
WarheadTemplateName = FaramirBowWarhead ;Les dommages produits par la fleche dasn un autre weapon
End
End
AttackRange = FARAMIR_BOW_RANGE;Longueur d'attaque, se modifi avec un nombre
RangeBonusMinHeight = 10 ;Hauteur de la fleche minimum
RangeBonus = 1 ;Longueur bonus
RangeBonusPerFoot = #MULTIPLY( FARAMIR_BOW_RANGE .01 ) ;Hauteur que prend la fleche suivant la longueur(en pied)
LeechRangeWeapon = Yes ;Arme a distance
WeaponSpeed = 321; distance/sec de la fleche
MinWeaponSpeed = 241 ; Vitesse minimum de la fleche
MaxWeaponSpeed = 481 ; dist/sec maximum
FireFX = FX_RohanArcherBowWeapon;Type d'attaque
ScaleWeaponSpeed = Yes ; Used for lob weapons, scales speed proportional to range
HitPercentage = 100 ;When this weapon is used it will hit exactly 75% of the time.
ScatterRadius = 0.0 ;When this weapon misses it can randomly miss by as much as this distance.
DelayBetweenShots = FARAMIR_BOW_DELAYBETWEENSHOTS ; Temps entre 2 tires
PreAttackDelay = FARAMIR_BOW_PREATTACKDELAY ; temps avant la premiere attaque
PreAttackType = PER_POSITION ; Type de la premiere attaque ??
FiringDuration = FARAMIR_BOW_FIRINGDURATION ; Temps des animations(encoche fleche)
ClipSize = 1 ;si vue des animations prise de fleche
AutoReloadsClip = Yes ;Si recommence attaumatiquement l'animation
AutoReloadWhenIdle = 1 ;??
ClipReloadTime = Min:FARAMIR_BOW_RELOADTIME_MIN Max:FARAMIR_BOW_RELOADTIME_MAX;temps d'anim
ContinuousFireOne = 0
ContinuousFireCoast = FARAMIR_BOW_RELOADTIME_MAX
AntiAirborneVehicle = Yes ;Contre aerien vehicule
AntiAirborneMonster = Yes ;Contre mostre aerien
CanFireWhileMoving = Yes ;peut tirer quand est en mouvement
ProjectileNugget ; Default: Fleche
ProjectileTemplateName = GoodFactionArrow ;Se qui est tirer, un objet(evilsubobject.ini, good...ini)
WarheadTemplateName = FaramirBowWarhead ;Les dommages produits par la fleche dasn un autre weapon
End
End
Et voici le Weapon qui accompagne sa fleche(n'existe pas quand s'est une epe ou une attaque en mele):
Code
Weapon FaramirBowWarhead
ProjectileCollidesWith = ALLIES ENEMIES NEUTRAL STRUCTURES WALLS;projectile se cogne avec:***, ***,...
RadiusDamageAffects = ENEMIES NEUTRALS ALLIES NOT_SIMILAR ;projectile dommage autour sur:***,***,...
HitStoredTarget = Yes ;
DamageNugget ; Les dommages de la fleche
Damage = FARAMIR_BOW_DAMAGE ;Dommages produits, peut etre remplacer par un nombre
Radius = 0.0; Zone de dommage autour de l'impact(comme les projectils de catapult)
DelayTime = 0 ;Temps avant coup
DamageType = HERO_RANGED ;Type de dommages
DamageFXType = GOOD_ARROW_PIERCE ;FX des dommages
DeathType = NORMAL Type de mort
End
End
ProjectileCollidesWith = ALLIES ENEMIES NEUTRAL STRUCTURES WALLS;projectile se cogne avec:***, ***,...
RadiusDamageAffects = ENEMIES NEUTRALS ALLIES NOT_SIMILAR ;projectile dommage autour sur:***,***,...
HitStoredTarget = Yes ;
DamageNugget ; Les dommages de la fleche
Damage = FARAMIR_BOW_DAMAGE ;Dommages produits, peut etre remplacer par un nombre
Radius = 0.0; Zone de dommage autour de l'impact(comme les projectils de catapult)
DelayTime = 0 ;Temps avant coup
DamageType = HERO_RANGED ;Type de dommages
DamageFXType = GOOD_ARROW_PIERCE ;FX des dommages
DeathType = NORMAL Type de mort
End
End
AttributeModifier)-Emplacement "attributemodifier.ini".
C'est l'ini qui regroupe toutes les modifiquations pendant le jeu d'une uniter , un joueur, ect...
Voici la modifiquation d'une fournaise d'isengard niveau 2:
Code
ModifierList IsengardLumbermillLevel2Production
Category = STRUCTURE ;La categorie
Modifier = PRODUCTION ISENGARD_LUMBERMILL_LVL2_PRODUCTION %; Se qui est modifier
Modifier = COMMAND_POINT_BONUS 25 ; Se qui est modifier
Duration = 0 ;Temps de modif
End
Category = STRUCTURE ;La categorie
Modifier = PRODUCTION ISENGARD_LUMBERMILL_LVL2_PRODUCTION %; Se qui est modifier
Modifier = COMMAND_POINT_BONUS 25 ; Se qui est modifier
Duration = 0 ;Temps de modif
End
Voici une liste de ce qui peut etre modifier:
Code
ARMOR /= Ajoute le nombre d'armure specifier apres.
DAMAGE_ADD /= Ajoute les dommage specifier apres
DAMAGE_MULT /= Multipli le nombre de dommage causer que vous avez par le le nombre specifier
RESIST_FEAR /= Ajoute la resistance a la peur (Pas clair!)
RESIST_TERROR /= Ajoute la resistance a la terreur(Pas clair non plus!)
EXPERIENCE /= Multiplie l'experience que vous avez par le nombre specifier apres
RANGE /= Augmente la surface de tire d'un archer(calculer en %)
SPEED /= Multipli votre vitesse par le nombre specifier apres( Mettre 999999999 pour faire un jeu d'echec! :D )
CRUSH_DECELERATE /= Multipli je ne sais quoi!
RESIST_KNOCKBACK /= Ajoute je ne sais quoi non plus
SPELL_DAMAGE /= Multipli les dommage magique par le nombre specifier(seulement magique)
RECHARGE_TIME /= Multipli le temps de recharge des pouvoir par le nombre specifier
PRODUCTION /= Multipli la vitesse de production d'uniters et de l'argent par le nombre specifier
HEALTH /= Ajoute la vie specifier
HEALTH_MULT, /= Multipli votre vie par le nombre specifier
VISION /= Augmente la taille de la zone de vision
BOUNTY_PERCENTAGE /=
MIN_CRUSH_VELOCITY_PERCENTAGE /=
AUTO_HEAL /=
SHROUD_CLEARING /=
RATE_OF_FIRE /=
DAMAGE_STRUCTURE_BOUNTY_ADD /=
COMMAND_POINT_BONUS /=
CRUSHABLE_LEVEL /=
CRUSHED_DECELERATE /=
INVULNERABLE /=Rend invunerable si le nombre specifier apres est 1
DAMAGE_ADD /= Ajoute les dommage specifier apres
DAMAGE_MULT /= Multipli le nombre de dommage causer que vous avez par le le nombre specifier
RESIST_FEAR /= Ajoute la resistance a la peur (Pas clair!)
RESIST_TERROR /= Ajoute la resistance a la terreur(Pas clair non plus!)
EXPERIENCE /= Multiplie l'experience que vous avez par le nombre specifier apres
RANGE /= Augmente la surface de tire d'un archer(calculer en %)
SPEED /= Multipli votre vitesse par le nombre specifier apres( Mettre 999999999 pour faire un jeu d'echec! :D )
CRUSH_DECELERATE /= Multipli je ne sais quoi!
RESIST_KNOCKBACK /= Ajoute je ne sais quoi non plus
SPELL_DAMAGE /= Multipli les dommage magique par le nombre specifier(seulement magique)
RECHARGE_TIME /= Multipli le temps de recharge des pouvoir par le nombre specifier
PRODUCTION /= Multipli la vitesse de production d'uniters et de l'argent par le nombre specifier
HEALTH /= Ajoute la vie specifier
HEALTH_MULT, /= Multipli votre vie par le nombre specifier
VISION /= Augmente la taille de la zone de vision
BOUNTY_PERCENTAGE /=
MIN_CRUSH_VELOCITY_PERCENTAGE /=
AUTO_HEAL /=
SHROUD_CLEARING /=
RATE_OF_FIRE /=
DAMAGE_STRUCTURE_BOUNTY_ADD /=
COMMAND_POINT_BONUS /=
CRUSHABLE_LEVEL /=
CRUSHED_DECELERATE /=
INVULNERABLE /=Rend invunerable si le nombre specifier apres est 1
Stance)-Emplacement "stances.ini".
Le stance ou plutot les stances sont les postures de combat, donc agressive/default/defensive. Les stances peuvent etre tres simpa a modifier car vous pouvez en créé pour que votre hero soit ultra rapide, invincible, pas/très fort, longueur de vue plus ou moin grade, ect...
Pour les modifiers il faud mettre 3 .ini en raprochement: L'.ini de l'objet dont les stances sont modifier, le stances.ini et le modifierlist.ini.
Donc premierement sur l'ini de votre objet il devrait avoir a peu pres ces lignes:
Code
Behavior = StancesBehavior ModuleTag_StancesBehavior
StanceTemplate = Hero
End
StanceTemplate = Hero
End
(ce sont celles du capitaine de Dale)
Maintenant se qui nous interesse c'est le mot apres "StanceTemplate ="(dans notre cas "Hero"). Vous aller la modifier par un nom de stance dejas disponible ou d'un que vous allez créé. Je vais par exemple en créé un que je vais appeler "Xtra_stance". Je vous laisse le soin de faire en sorte que le module marche sans gamecrash.
Maintenant rendez vous sur le stances.ini .
Copiez par exemple celui appeler "StanceTemplate Hero"(celui qui etait precedement sur l'objet) et renommer le nom "Hero" par le nouveau que vous avez placer sur l'objet, pour moi "Xtra_stance" se qui vas me faire: StanceTemplate Xtra_stance
Maintenant tout se qui suit "AttributeModifier" sont les attributemodifier qui sont utiliser pour changer les caracteristiques de l'objet. Donc changer les noms apres les "AttributeModifier" avec des nouveaux ou d'autre dejas present. Je vais maintenant preceder a la mise en oeuvre de nouvelles caracteristiques presentent quand l'objet serat en posture defensive, donc je vais changer le nom apres "AttributeModifier" de "Stance HoldGroundMoving" et vais en créé un autre appeler "defenseXtra".
Se qui vas me faire:
Code
StanceTemplate Xtra_stance
Stance Aggressive
AttributeModifier HeroStanceAggressive
MeleeBehavior = Amoeba
End
End
Stance HoldGround
AttributeModifier HeroStanceHoldGround
MeleeBehavior = Amoeba
End
End
Stance HoldGroundMoving
AttributeModifier defenseXtra
End
End
Stance Aggressive
AttributeModifier HeroStanceAggressive
MeleeBehavior = Amoeba
End
End
Stance HoldGround
AttributeModifier HeroStanceHoldGround
MeleeBehavior = Amoeba
End
End
Stance HoldGroundMoving
AttributeModifier defenseXtra
End
End
Donc desormait comme vous pouvez le penser ca vas etre direction le attributeModifier.ini pour créé ce nouveau Modifier. Je vais reprendre l'ancien modifier de l'objet qui etait "HeroStanceHoldGround" pour le modifier a ma façon, donc j'ai:
Code
ModifierList HeroStanceHoldGround
Modifier = ARMOR 10%
Modifier = DAMAGE_MULT 80%
Modifier = SPEED 90%
Modifier = VISION -90%
End
Modifier = ARMOR 10%
Modifier = DAMAGE_MULT 80%
Modifier = SPEED 90%
Modifier = VISION -90%
End
Je vais le renommer avec "defenseXtra"(le mot apres "ModifierList") et vait commencer mes modifiquations.(attention les modofiers ont le simboles % se qui veut dire que si vous mettez 100 ca ne vas rien changer!(en pourcent)) Ce qui vas me faire apres mes modifs au niveau les defence et de la vitesse:
Code
ModifierList defenseXtra
Modifier = ARMOR 200%
Modifier = SPEED 500%
End
Modifier = ARMOR 200%
Modifier = SPEED 500%
End
(si vous ne voyez pas la difference je vous plaint
Et voila vous avez modifier les stance d'un objet. Donc avec tous mes codes mon map.ini ressemblerat a ca:
Code
Object DwarvenCaptainofDale
ReplaceModule ModuleTag_StancesBehavior
Behavior = StancesBehavior ModuleTag_StancesBehavior_new
StanceTemplate = Xtra_stance
End
End
End
StanceTemplate Xtra_stance
Stance Aggressive
AttributeModifier HeroStanceAggressive
MeleeBehavior = Amoeba
End
End
Stance HoldGround
AttributeModifier HeroStanceHoldGround
MeleeBehavior = Amoeba
End
End
Stance HoldGroundMoving
AttributeModifier defenseXtra
End
End
ModifierList defenseXtra
Modifier = ARMOR 200%
Modifier = SPEED 500%
End
ReplaceModule ModuleTag_StancesBehavior
Behavior = StancesBehavior ModuleTag_StancesBehavior_new
StanceTemplate = Xtra_stance
End
End
End
StanceTemplate Xtra_stance
Stance Aggressive
AttributeModifier HeroStanceAggressive
MeleeBehavior = Amoeba
End
End
Stance HoldGround
AttributeModifier HeroStanceHoldGround
MeleeBehavior = Amoeba
End
End
Stance HoldGroundMoving
AttributeModifier defenseXtra
End
End
ModifierList defenseXtra
Modifier = ARMOR 200%
Modifier = SPEED 500%
End
7)La place des codes ini dans le map.ini
Pas terminer!

Aide












