Ajouter de nouveaux objets dans les Leveled Lists
Posté : 05 sept. 2012, 21:26
Une Leveled List, ou en français un objet nivelé ("mettre au même niveau"), est une liste d'objets parmi lesquels le jeu en choisira un ou plusieurs pour les ajouter de façon dynamique aux personnages et conteneurs.
Le problème, c'est que plusieurs mods modifiant directement les mêmes Leveled Lists sont pour la plupart incompatibles. Il faudra donc les rajouter par scripts.
Pour ceci, nous allons donc tout d'abord créer une FormList. C'est une liste d'objets divers et variés. Nous la nommerons LaListe dans ce tuto:
Une fois ceci fait, il nous reste à glisser les objets qui seront plus tard ajoutés aux Leveled Lists, dans la FormList. Je rajoute ici des armes dans la FormList:
Maintenant, la partie la plus délicate. Il nous faut créer une quête avec un Alias attaché au joueur. La quête s'appelle ici MonAjout, notez bien les cases qui sont cochées:
Maintenant, le script. Les Leveled Lists modifiées par script sont remises à la normales à chaque chargement du jeu, il faut donc que le script se lance à chaque chargement:
Avec un petit script légèrement plus avancé, on peut même ajouter les objets selon le niveau du joueur, voire carrément randomiser le tout:
N'oubliez pas de bien remplir vos Properties bien entendu. Ce script est utile lorsque vous souhaitez ajouter plusieurs objets d'une traite.
Bon travail
Le problème, c'est que plusieurs mods modifiant directement les mêmes Leveled Lists sont pour la plupart incompatibles. Il faudra donc les rajouter par scripts.
Pour ceci, nous allons donc tout d'abord créer une FormList. C'est une liste d'objets divers et variés. Nous la nommerons LaListe dans ce tuto:



Code : Tout sélectionner
scriptname _ScriptDuTuto Extends ReferenceAlias
LeveledItem Property ArmesBandits Auto
FormList Property ListeArmes Auto
Event OnInit()
Int RandItems = Utility.RandomInt(1,5)
Int RandLevel = Utility.RandomInt(0,1)
Int PlayerLevel = PlayerREF.GetLevel()
Int Index = 0
While Index < ListesArmes.GetSize() ; si nous n'avons pas ajouté tous les objets, alors...
ArmesBandits.AddForm(ListesArmes.GetAt(Index), PlayerLevel + RandLevel, RandItems) ; ... On ajoute entre une et cinq armes de chaque ;exemplaire qui apparaîtront au niveau du joueur + un nombre aléatoire entre 0 et 1 (donc soit au niveau actuel soit au prochain niveau)...
Index += 1 ; puis on passe à l'objet suivant dans la FormList.
EndWhile
EndEvent
Event OnPlayerLoadGame()
Int Index = 0
While Index < ListesArmes.GetSize() ; si nous n'avons pas ajouté tous les objets, alors...
ArmesBandits.AddForm(ListesArmes.GetAt(Index), 5, 2) ; ... On ajoute deux armes de chaque exemplaire qui apparaîtront au niveau 5...
Index += 1 ; puis on passe à l'objet suivant dans la FormList.
EndWhile
EndEvent
Code : Tout sélectionner
scriptname _ScriptDuTuto Extends ReferenceAlias
Actor Property PlayerREF Auto
LeveledItem Property ArmesBandits Auto
FormList Property ListeArmes Auto
Event OnInit()
Int RandItems = Utility.RandomInt(1,5)
Int RandLevel = Utility.RandomInt(0,1)
Int PlayerLevel = PlayerREF.GetLevel()
Int Index = 0
While Index < ListesArmes.GetSize() ; si nous n'avons pas ajouté tous les objets, alors...
ArmesBandits.AddForm(ListesArmes.GetAt(Index), PlayerLevel + RandLevel, RandItems) ; ... On ajoute entre une et cinq armes de chaque ;exemplaire qui apparaîtront au niveau du joueur + un nombre aléatoire entre 0 et 1 (donc soit au niveau actuel soit au prochain niveau)...
Index += 1 ; puis on passe à l'objet suivant dans la FormList.
EndWhile
EndEvent
Event OnPlayerLoadGame()
Int RandItems = Utility.RandomInt(1,5)
Int RandLevel = Utility.RandomInt(0,1)
Int PlayerLevel = PlayerREF.GetLevel()
Int Index = 0
While Index < ListesArmes.GetSize() ; si nous n'avons pas ajouté tous les objets, alors...
ArmesBandits.AddForm(ListesArmes.GetAt(Index), PlayerLevel + RandLevel, RandItems) ; ... On ajoute entre une et cinq armes de chaque ;exemplaire qui apparaîtront au niveau du joueur + un nombre aléatoire entre 0 et 1 (donc soit au niveau actuel soit au prochain niveau)...
Index += 1 ; puis on passe à l'objet suivant dans la FormList.
EndWhile
EndEvent
N'oubliez pas de bien remplir vos Properties bien entendu. Ce script est utile lorsque vous souhaitez ajouter plusieurs objets d'une traite.
Bon travail