Voila un ptit tuto pour modifier Fable
Tout d abord, il vous faut quelques outils
- Fable tools (pour ouvrir les fichiers .wad)
- Wordpad ou autre éditeur de texte
- Tng parser (utile pour ouvrir les .tng mais pas indispensable)
Dispo ici:
http://fable.lanpirates.netIl vous faut aussi le document texte (names.bin) qui contient les codes des differents objets et autres du jeu
http://fable.lanpirates.net On peut maintenant commencer.
Pour cet exemple, on va ajouter un ennemi (un Minion) au niveau de l air de Pique-nique. Une fois la créature tuée, vous pourrez ramasser un ptit sac contenant de l’or.
1) On récupère le fichier FinalAlbion.wad(\Fable\Data\Levels) que l'on met sur son PC
2) On ouvre ce fichier avec Fable Tools et on cherche le fichier PicnicArea.tng
3) Ensuite petit clic droit sur le fichier et on choisit "export"
4) On ouvre ce fichier avec wordpad et on cherche (avec l'option rechercher)
"CREATURE_HORNET_PICNIC"
Vous devriez avoir le code suivant:
QUOTE
NewThing AICreature;
Player 2;
UID 18446741874686298194;
DefinitionType "CREATURE_HORNET_PICNIC";
ScriptName WaspChaser;
ScriptData "NULL";
ThingGamePersistent FALSE;
ThingLevelPersistent FALSE;
StartCTCPhysicsNavigator;
PositionX 49.711914;
PositionY 43.758545;
PositionZ 30.000967;
RHSetForwardX -0.913544;
RHSetForwardY -0.406726;
RHSetForwardZ 0.0;
RHSetUpX 0.000397;
RHSetUpY -0.000892;
RHSetUpZ 0.999994;
EndCTCPhysicsNavigator;
StartCTCTargeted;
Targetable TRUE;
EndCTCTargeted;
StartCTCEditor;
EndCTCEditor;
StartCTCContainerRewardHero;
EndCTCContainerRewardHero;
StartCTCEnemy;
FriendsWithEverythingFlag FALSE;
EnableFollowersEnemyProxy TRUE;
FactionName "";
EndCTCEnemy;
Health 2.0;
OverridingBrainName NULL;
HasInformation FALSE;
WanderWithInformation FALSE;
WaveWithInformation FALSE;
EnableCreatureAutoPlacing FALSE;
AllowedToFollowHero FALSE;
RegionFollowingOverriddenFromScript FALSE;
RespondingToFollowAndWait TRUE;
CanBeCourted FALSE;
CanBeMarried FALSE;
InitialPosX 3153.711914;
InitialPosY 3563.758545;
InitialPosZ 30.000967;
EndThing;
5) Vous copiez cette partie dans un nouveau fichier texte et vous faites les modifications ci dessous
Je vous décompose un peu les différentes rubriques
- NewThing AICreature;
Correspond au script de A.I de la créature (Pas besoin de le modifier ici)
- UID 18446741874686298194;
Chiffre à modifier si vous avez déjà effectue cet événement
On peut changer le premier chiffre et le remplacer par une valeur comprise entre 0 et 9
- DefinitionType "CREATURE_HORNET_PICNIC";
Définit le script à charger (créature ou séquence)
Ici on va remplacer "CREATURE_HORNET_PICNIC"; par "CREATURE_MINION_WARDOG";
- ThingGamePersistent FALSE;
ThingLevelPersistent FALSE;
Dans ce cas la créature va revenir à chaque fois que vous revenez dans la zone.
Si vous voulez qu elle n apparaisse qu une seule fois, remplacez FALSE par TRUE pour les 2 termes
ScriptName WaspChaser;
Signifie que cette créature va apparaître pour l'événement WaspChaser
Ici on veut qu elle apparaisse quand on y va donc pas pour un événement particulier
On change donc ScriptName WaspChaser; par ScriptName NULL;
StartCTCPhysicsNavigator;
Correspond aux coordonnées de la créature
Ici on ne va pas les changer
StartCTCContainerRewardHero;
EndCTCContainerRewardHero;
Pour rajouter un objet que la créature va laisser tomber une fois morte, il faut ajouter entre ces 2 lignes le code suivant :
ContainerContents[0] "Item name";
Ici on veut qu elle laisse de l or donc on marque
ContainerContents[0] "OBJECT_GOLD_1000000"
On aura alors
StartCTCContainerRewardHero;
ContainerContents[0] "OBJECT_GOLD_1000000";
EndCTCContainerRewardHero;
La créature peut laisser tomber plusieurs objets dans ce cas on aurait
StartCTCContainerRewardHero;
ContainerContents[0] "OBJECT_GOLD_1000000";
ContainerContents[1] "nom de l objet";
ContainerContents[2] "nom de l objet";
EndCTCContainerRewardHero;
N.B: La liste des objets se trouve dans names.txt
FriendsWithEverythingFlag FALSE;
Indique si la créature est hostile ou amie
FALSE correspond à hostile
TRUE correspond a ami
Voila on a fini de modifier notre petit script
6) Maintenant on va coller tout ça dans PicnicArea.tng dans la section XXXSectionStart NULL; pour que cet événement advienne sans interférer sur d autres quêtes
On obtient donc
QUOTE
XXXSectionStart NULL;
NewThing AICreature;
Player 2;
UID 18446741874686298191;
DefinitionType "CREATURE_MINION_WARDOG";
ScriptName NULL;
ScriptData "NULL";
ThingGamePersistent TRUE;
ThingLevelPersistent TRUE;
StartCTCPhysicsNavigator;
PositionX 49.711914;
PositionY 43.758545;
PositionZ 30.000967;
RHSetForwardX -0.913544;
RHSetForwardY -0.406726;
RHSetForwardZ 0.0;
RHSetUpX 0.000397;
RHSetUpY -0.000892;
RHSetUpZ 0.999994;
EndCTCPhysicsNavigator;
StartCTCTargeted;
Targetable TRUE;
EndCTCTargeted;
StartCTCEditor;
EndCTCEditor;
StartCTCContainerRewardHero;
ContainerContents[0] "OBJECT_GOLD_1000000";
EndCTCContainerRewardHero;
StartCTCEnemy;
FriendsWithEverythingFlag FALSE;
EnableFollowersEnemyProxy TRUE;
FactionName "";
EndCTCEnemy;
Health 2.0;
OverridingBrainName NULL;
HasInformation FALSE;
WanderWithInformation FALSE;
WaveWithInformation FALSE;
EnableCreatureAutoPlacing FALSE;
AllowedToFollowHero FALSE;
RegionFollowingOverriddenFromScript FALSE;
RespondingToFollowAndWait TRUE;
CanBeCourted FALSE;
CanBeMarried FALSE;
InitialPosX 3153.711914;
InitialPosY 3563.758545;
InitialPosZ 30.000967;
EndThing;
7) Le problème c est que maintenant votre fichier.tng va être trop gros et faire planter le chargement de la zone ou ne pas être accepter lors de la modification du .wad
Il faut donc supprimer un autre élément:
Ici, on va supprimer un banc dans la section XXXSectionStart NULL;
Recherchez "OBJECT_BENCH" et supprimez cet objet (CAD tout le code).
8) On peut maintenant fermer notre PicnicArea.tng en sauvegardant les modifications.
9) On relance Fables tools et on importe notre nouveau PicnicArea.tng (clic droit import) dans le FinalAlbion.wad
10) On rebalance le nouveau FinalAlbion.wad dans la bobox et c fini
Le tutorial original est de
Leviathan-Ran disponible sur le site
http://fable.lanpirates.net