B) De l'upgrade au commandset en passant par le commandButton et ses imagesMaintenant il faut donner a votre objet son utilité et les upgrades qu'il pourra rechercher.
Alors premièrement je vais vous expliquer comment tout se rallie: L'objet forge se rallie aux commandButtons grâce a son commandset , et aux commandButtons se rallient les upgrades.
Ce qu'on va schématiser comme ceci : Upgrade > CommandButton > Commandset > Objet forge(Sachant que la flèche veut dire "
est dans")
a) L'upgradeLes upgrades ne peuvent qu'être créés. Ils regroupent la durée, le prix et sur quoi s'applique la recherche ainsi que, parfois, ce qui doit être recherché avant.
En voici un avec une legende: - Citation :
- Upgrade Upgrade_TechnologyHache
DisplayName = CONTROLBAR:ConstructGondorSentryTower
Type = PLAYER
BuildCost = 20
BuildTime = 5
End
--Nom de l'upgrade, celui qui reaparaitrat sur le commandButton
--Nom donner apres la recherche(qui s'affiche en haut de l'écran apres la recherche, fonctionne avec le map.str)
-- Le type sur lequel il s'applique, les deux types sont: PLAYER et OBJECT . Le type PLAYER est un upgrade qui s'aplique a tous le joueur(ex: recherche étendard dans la forge) et le type OBJECT ne s'applique qu'a l'objet donné(ex: recherche fleche sur archer).
--Coût de construction
--Temps de construction(en seconde je croit)
Voila, désormais qu'on maîtrise mieux le sujet, je vais par exemple créer celui-ci, qui nous servira tout au long du tuto, et qui va s'appliquer a tout le joueur:
- Code:
-
Upgrade Upgrade_Nouvelle_epee
DisplayName = RECHERCHER-epee
Type = PLAYER
BuildCost = 300
BuildTime = 10
End
(Le fait d'avoir appelé la recherche de mon upgrade "RECHERCHER-epee" va me faire faire un map.str comme celui ci:)
- Code:
-
RECHERCHER-epee
"Epee"
End
b) Les commandButtonMaintenant que nous possédons notre upgrade, attaquons-nous au commandButton.
Pour commencer il faut savoir qu'un commandButton ne peut pas être créé! Il vas donc falloir en rechercher un que vous n'allez pas utiliser sur votre carte (comme ceux de pouvoirs non utilisés [recherchez en priorité ceux qui ont la photo que vous voulez]) dans votre CommandButton.ini, préalablement extrait du ini.big.
Je vais choisir par exemple -vu que je n'utiliserai pas sur ma carte de batisseur d'isengard- le CommandButton de création d'armureries qui est (je l'ai trouvé en me baladant un peut n'importe où sur le commandButton.ini):
- Code:
-
CommandButton Command_ConstructIsengardArmory
Command = FOUNDATION_CONSTRUCT
Object = IsengardArmory
TextLabel = CONTROLBAR:ConstructIsengardArmory
ButtonImage = BIArmory
ButtonBorderType = BUILD
DescriptLabel = CONTROLBAR:ToolTipIsengardArmory
Radial = Yes
End
Je vais donc:
- lui retirer sa command et lui en donner une autre qui va être PLAYER_UPGRADE (vu que je désire créer un commandButton qui offre un upgrade à un joueur)
- Lui retirer la ligne "
object =" pour y mettre à la place "Upgrade = "
mon upgrade"" (mon upgrade = celui que je viens de créer, à savoir: Upgrade_Nouvelle_epee).
- Changer son
TextLabel et son
DescriptLabel par des nouveaux(pour changer la description et le nom du commandButton).
- Lui rajouter une "Options" qui sera: CANCELABLE (étant donné qu'une fois recherché il ne devra plus l'être [ca vas griser le button la recherche une fois la recherche finie]).
- Et enfin changer son "
ButtonBorderType =" par la valeur "UPGRADE" (vu que c'est un upgrade).
Ce qui va faire: - Code:
-
CommandButton Command_ConstructIsengardArmory
Command = PLAYER_UPGRADE
Options = CANCELABLE
Upgrade = Upgrade_Nouvelle_epee
ButtonBorderType = UPGRADE
TextLabel = UPGRADE_RECHERCHER-epee
ButtonImage = BIArmory
DescriptLabel = UPGRADE_RECHERCHER-epee_DESCRIPTION
Radial = Yes
InPalantir = No
End
Et voila, vous avez un commandButton qui s'occupe de rechercher votre upgrade!
Entre temps vous remarquerez qu'il y a la valeur:
Radial = Yes et
InPalantir = No , la valeur "
Radial" sert à mettre le commandButton autour de votre objet et la "
InPalantir" sert a mettre le commandButton dans la fiche de l'objet).
(Bien entendu le DescriptLabel doit être mis dans le map.str.)
c) L'image du commandButtonMaintenant vous remarquerez sans doute que le BoutonImage de votre commandButton n'a pas été modifié, ce qui va vous mettre le dessin d'une forge sur le commandButton que vous venez de créer, qui va peut-être vous servir a rechercher votre épée; donc vous conviendrez que cette image ne serait pas très appropriée.
Vous pourriez essayer de changer ce nom par un autre nom d'image directement mais cela ne vous servirait a rien vu qu'il est impossible de changer l'image d'un commandButton directement a partir de celui-ci!
Il va donc falloir modifier l'image-source de votre commandButton, celle qui est derrière la ligne
"ButtonImage =", qui s'appelle donc: BIArmory!
Mais attention, si un autre commandButton ou autre chose utilise cette même image, celle-ci sera modifiée! Donc il va falloir que vous choisissiez vos commandButton très précisément pour ne pas avoir deux commandButton qui ont la même image!
Donc on va maintenant faire une petite recherche; vous allez rechercher dans votre ini.big(celui de votre répertoire d'installation) "
BIArmory".
Vous trouverez cela: - Code:
-
MappedImage BIArmory
Texture = BuildingRadialButtons_201.tga
TextureWidth = 256
TextureHeight = 256
Coords = Left:192 Top:0 Right:256 Bottom:64
Status = NONE
End
Ensuite recherchez l'image d'un commandButton qui vous intéresse, par exemple celle d'amélioration des épées elfes.
Il va vous falloir aller faire un tour sur le commandButton de la recherche d'amélioration d'épée elfe pour trouver l'image de celle-ci(commandButton.ini).
Après être aller faire un tour sur ce commandButton j'ai trouvé qu'elle s'appelait:
BEEregionForge_ForgedBlades .
Je suis donc retourné sur mon ini.big pour faire une recherche de celle-ci et j'ai trouvé ça:
- Code:
-
MappedImage BEEregionForge_ForgedBlades
Texture = BuildingRadialButtons_152.tga
TextureWidth = 256
TextureHeight = 256
Coords = Left:0 Top:192 Right:64 Bottom:256
Status = NONE
End
Maintenant on va tout garder de celle-ci, mais on va changer sa première ligne avec le nom de votre image de départ que vous voulez modifier:
BIArmory .
Ca vas vous faire ca: - Code:
-
MappedImage BIArmory
Texture = BuildingRadialButtons_152.tga
TextureWidth = 256
TextureHeight = 256
Coords = Left:0 Top:192 Right:64 Bottom:256
Status = NONE
End
Voila, votre image a été modifiée et vous avez a présent une image d'épée elfique sur votre commandButton au lieu de la forge d'isengard.
Ensuite, si vous voulez ajouter des photos qui étaient dans les fichiers extraits des Textures*.big, vous le pouvez.
Voici, un mappedimage avec sa legende pour se faire: - Citation :
- MappedImage BPMMumakilPen
Texture = BuildingRadialButtons_151.tga
TextureWidth = 256
TextureHeight = 256
Coords = Left:0 Top:0 Right:192 Bottom:192
Status = NONE
End
-- Le nom de l'image straite des textures**.big
-- La taille total de l'image choisie en largeur
-- La taille total de l'image choisie en longueur
-- Le cadre de l'image prélevée(vous permet de prendre un certaint morceau de l'image.
Donc il vous suffira de prendre le nom de la photo de votre commandButton, de compléter selon sa taille et le cadre que vous voulez et ce sera bon: vous aurez alors une image qui n'était à l'origine pas présente dans le jeu!
Et voila, vos commandButton sont beaux et leurs images sont appropriées!
d) Le commandsetVous voici déjà à la dernière étape qui consiste a entrer le commandButton dans l'objet avec le commandset.
Comme barahir en parle déjas sur son tuto je ne vais pas m'y attarder. Vous allez en créer un nouveau que je vais appeler pour exemple:
Set_Pouvoir_Epee et y mettre le commandButton que vous venez de modifier.
Se qui va vous faire: - Code:
-
CommandSet Set_Pouvoir_Epee
1 = Command_ConstructIsengardArmory
End
Et voila, plus qu'a ajouter le commandset sur notre objet, sous la valeur:
- Code:
-
CommandSet = Set_Pouvoir_Epee
.
Voici ce que ça nous fera: - Code:
-
Object IsengardArmory
ReplaceModule ModuleTag_Draw
Draw = W3DScriptedModelDraw ModuleTag_Draw_new
OkToChangeModelColor = Yes
UseStandardModelNames = Yes
DefaultModelConditionState
Model = GBGHGenGazC
End
End
End
SelectPortrait = BPCOutpost
DisplayName = OBJECT:Outpost
Description = OBJECT:OutpostDescription
CommandSet = Set_Pouvoir_Epee
End ;fermeture de l'objet
Et maintenant voici le map.ini que l'on s'efforce de créer depuis tout à l'heure(il est primordial de mettre les codes dans un sens précis pour qu'ils soient pris en compte, qui est ce sens: Objet > upgrade > image > commandButton > CommandSet).
Donc voici notre map.ini final avec un petit code couleur: - Citation :
Object IsengardArmory
ReplaceModule ModuleTag_Draw
Draw = W3DScriptedModelDraw ModuleTag_Draw_new
OkToChangeModelColor = Yes
UseStandardModelNames = Yes
DefaultModelConditionState
Model = GBGHGenGazC
End
End
End
SelectPortrait = BPCOutpost
DisplayName = OBJECT:Outpost
Description = OBJECT:OutpostDescription
CommandSet = Set_Pouvoir_Epee
End
Upgrade Upgrade_Nouvelle_epee
DisplayName = UPGRADE_RECHERCHER-epee
Type = PLAYER
BuildCost = 300
BuildTime = 10
End
MappedImage BIArmory
Texture = BuildingRadialButtons_152.tga
TextureWidth = 256
TextureHeight = 256
Coords = Left:0 Top:192 Right:64 Bottom:256
Status = NONE
End
CommandButton Command_ConstructIsengardArmory
Command = PLAYER_UPGRADE
Options = CANCELABLE
Upgrade = Upgrade_Nouvelle_epee
ButtonBorderType = UPGRADE
TextLabel = UPGRADE_RECHERCHER-epee
ButtonImage = BIArmory
DescriptLabel = UPGRADE_RECHERCHER-epee_DESCRIPTION
Radial = Yes
InPalantir = No
End
CommandSet Set_Pouvoir_Epee
1 = Command_ConstructIsengardArmory
End
Et votre map.str: - Code:
-
RECHERCHER-epee
"Epee"
End
UPGRADE_RECHERCHER-epee_DESCRIPTION
"Recherche un épée pour votre héro"
End
C'est bon tout est fait, maintenant vous avez bien le sens décrit au debut!
e) Les menusEnsuite vous pouvez faire des commandButtons assez particuliers, qui, eux, vous serviront à faire des menus et à mieux organiser vos autres commandButton!
Voici la nouvelle forme de votre commandset quand il y a un menu.
Sur chaque commadset qui possède un menu il faut rajouter cette ligne:
- Code:
-
InitialVisible = "Nombre"
Comme vous l'aurez compris ce sont les commandButton qui sont visibles dès le debut! Par exemple: si vous avez un commandset avec 2 commandButton de menu ou bien un commandButton de menu et un autre, et bien vous mettrez alors comme nombre sur cette ligne 2.
Ex: - Code:
-
CommandSet Cool_Exemple
InitialVisible = 2 ;les deux premier de la liste
1 = COmmandBUtton_de_menu_1 ;serat visble 1
2 = COmmandBUtton_de_menu_2 ;serat visible 2
3 = COmmandBUtton_de_autre_chose-1 ;serat invisible 3
4 = COmmandBUtton_de_autre_chose-2 ;serat invisible 4
5 = COmmandBUtton_de_autre_chose-3 ;serat invisible 5
Et voila pour ce qui est du Commandset.
Ensuite c'est le commandButton qui va subir des modifications. Donc, comme pour le commandButton prédédent, prenez n'importe lequel tant que vous ne l'utiliserez pas autre part sur votre carte!
Je vais prendre pour mon exemple le commandButton de construction de mines(que j'ai trouvé en cherchant au hasard dans le commandButton.ini) qui est:
- Code:
-
CommandButton Command_ConstructIsengardExplosiveMine
Command = UNIT_BUILD
Object = IsengardExplosiveMine
Options = NEED_UPGRADE CANCELABLE
NeededUpgrade = Upgrade_IsengardSiegeWorksLevel3 ; originally WorksLevel2
TextLabel = CONTROLBAR:ConstructIsengardExplosiveMine
ButtonImage = BISiegeWorks_DemoTeam
ButtonBorderType = BUILD
DescriptLabel = CONTROLBAR:ToolTipBuildIsengardExplosiveMine
Radial = Yes
InPalantir = Yes
ShowProductionCount = Yes
End
De même que l'ancien, nous allons tout changer sur ce commandButton et juste garder son nom et son image.
Pour lui mettre à la suite de son nom et de son image:
- Code:
-
Command = PUSH_VISIBLE_COMMAND_RANGE
TextLabel = **
ButtonBorderType = SYSTEM
DescriptLabel = **
Radial = Yes
CommandRangeStart = 6
CommandRangeCount = 8
End
Ce qui va nous faire: - Code:
-
CommandButton Command_ConstructIsengardExplosiveMine
ButtonImage = BISiegeWorks_DemoTeam ;l'image de depart
Command = PUSH_VISIBLE_COMMAND_RANGE
TextLabel = **
ButtonBorderType = SYSTEM
DescriptLabel = **
Radial = Yes
CommandRangeStart = 6
CommandRangeCount = 8
End
Ensuite vous pouvez changer le nom et la description du commandButton (
DescriptLabel et
TextLabel) et délimiter les zones du menu!
A côté de
"CommandRangeStart =" vous devez mettre le numéro du commandButton auquel le menu commence avec -1 a ce nombre!
Par exemple j'ai ce commandset:
- Code:
-
CommandSet Exemple_cool
InitialVisible = 2 ;les deux premier seront visibles
1 = Command_ConstructIsengardExplosiveMine ;mon menu
2 = CommandButton_autre ;une zone que je ne veut PAS dans mon menu
3 = CommandButton_autre2 ;une zone que je veut dans mon menu
4 = CommandButton_autre3 ;une zone que je veut dans mon menu
Alors le numero après CommandRangeStart sera 2 car je veux que ce soit le commandButton à la 3ème ligne qui soit le premier de mon menu et auquel il faut retirer 1! (3-1 =2)
Ensuite, à côté de
"CommandRangeCount =" il va falloir entrer le nombre de commandButton visibles après le premier commandButton du menu, en gros sur l'exemple précédent j'aurai entré 2 si je voulais que mes commandButton "CommandButton_autre3 " et "CommandButton_autre3" soient visibles dans mon menu!
Après sur vos menus mettez ce commandButton:
Command_RadialBack pour faire des retours au menu principal!
Et voila!