J'aurais, svp, besoin de votre aide pour créer un script affichant un menu (se déclenchant par exemple lors du port d'un anneau), menu permettant de dégrader de façon permanente et irréversible un talent de son choix (parmi les 21 disponibles, donc menu comportant au moins 21 boutons).
Merci beaucoup.
Objectif
Contrairement à un classique Donjons&Dragons, il me semble que le système de progression des TES est vraiment "particulier" (d'aucuns diraient "tordu", même s'il faut bien reconnaître qu'il n'y a pas plus logique) : ainsi, contrôler à la perfection la progression d'un personnage est plutôt délicat (entre parenthèses, je trouve cela assez gênant pour un jeu dit de rôle). Il est à peu près facile de gagner des points selon l'orientation choisie, mais il encore plus facile de bêtement "gaspiller" des points (cf. Leveling du Wiwiki, ou l'Efficient Leveling de l'UESP).
PS : il y avait un script de menu dans Morrowind/Tribunal lié à un anneau, je ne sais plus lequel (je crois aussi qu'il y avait une limitation en termes de nombres de boutons possibles).
PS n°2 (un peu beaucoup hors sujet) : un mod sans doute intéressant à propos de la progression des personnages...
[EDIT n°2]
Voilà à quoi ressemble le script (finalement, il est associé à un livre) :
ScriptName LivreDeLaPoisseSCRIPT ; // Based on the "MessageBox Tutorial" of the ElderScrolls.com TESCS Wiki \\ ; \\ Thanks to this website, its team and its contributors! // short Choosing short Choice short Decreasing ; permet d'ajuster le "pas" short Value begin onEquip ; initialisation set Choosing to -1 set Choice to -1 set Decreasing to 1 end begin MenuMode 1026 if ( Choosing == 0 ) return elseif ( Choosing == -1 ) ; menu général messageBox "Choix de la caractéristique possédant le talent à dégrader :" "Combat" "Furtivité" "Magie" "-- Quitter --" set Choosing to 1 elseif ( Choosing == 1 ) set Choice to GetButtonPressed if ( Choice > -1 ) if ( Choice == 0 ) set Choosing to -10 ; menu combat elseif ( Choice == 1 ) set Choosing to -11 ; menu combat elseif ( Choice == 2 ) set Choosing to -12 ; menu combat elseif ( Choice == 3 ) set Choosing to 0 ; quitter endif endif elseif ( Choosing == -10 ) ; -> menu combat messageBox "Choix du talent à dégrader (combat) :" "Arme lourde" "Armurerie" "Armure lourde" "Athlétisme" "Combat à mains nues" "Lame" "Parade" "-- Retour à la première page --" set Choosing to 10 elseif ( Choosing == 10 ) set Choice to GetButtonPressed if ( Choice > -1 ) set Choosing to -1 if ( Choice == 0 ) set Value to Player.getActorValue Blunt set Value to Value - Decreasing Player.setActorValue Blunt Value message "Arme lourde : %.0f", Value elseif ( Choice == 1 ) set Value to Player.getActorValue Armorer set Value to Value - Decreasing Player.setActorValue Armorer Value message "Armurerie : %.0f", Value elseif ( Choice == 2 ) set Value to Player.getActorValue HeavyArmor set Value to Value - Decreasing Player.setActorValue HeavyArmor Value message "Armure lourde : %.0f", Value elseif ( Choice == 3 ) set Value to Player.getActorValue Athletics set Value to Value - Decreasing Player.setActorValue Athletics Value message "Athlétisme : %.0f", Value elseif ( Choice == 4 ) set Value to Player.getActorValue HandtoHand set Value to Value - Decreasing Player.setActorValue HandtoHand Value message "Combat à mains nues : %.0f", Value elseif ( Choice == 5 ) set Value to Player.getActorValue Blade set Value to Value - Decreasing Player.setActorValue Blade Value message "Lame : %.0f", Value elseif ( Choice == 6 ) set Value to Player.getActorValue Block set Value to Value - Decreasing Player.setActorValue Block Value message "Parade : %.0f", Value elseif ( Choice == 7 ) ; set Choosing to -1 endif endif elseif ( Choosing == -11 ) ; -> menu furtivité messageBox "Choix du talent à dégrader (furtivité) :" "Acrobatie" "Armure légère" "Discrétion" "Éloquence" "Marchandage" "Précision" "Sécurité" "-- Retour à la première page --" set Choosing to 11 elseif ( Choosing == 11 ) set Choice to GetButtonPressed if ( Choice > -1 ) set Choosing to -1 if ( Choice == 0 ) set Value to Player.getActorValue Acrobatics set Value to Value - Decreasing Player.setActorValue Acrobatics Value message "Acrobatie : %.0f", Value elseif ( Choice == 1 ) set Value to Player.getActorValue LightArmor set Value to Value - Decreasing Player.setActorValue LightArmor Value message "Armure légère : %.0f", Value elseif ( Choice == 2 ) set Value to Player.getActorValue Sneak set Value to Value - Decreasing Player.setActorValue Sneak Value message "Discrétion : %.0f", Value elseif ( Choice == 3 ) set Value to Player.getActorValue Speechcraft set Value to Value - Decreasing Player.setActorValue Speechcraft Value message "Éloquence : %.0f", Value elseif ( Choice == 4 ) set Value to Player.getActorValue Mercantile set Value to Value - Decreasing Player.setActorValue Mercantile Value message "Marchandage : %.0f", Value elseif ( Choice == 5 ) set Value to Player.getActorValue Marksman set Value to Value - Decreasing Player.setActorValue Marksman Value message "Précision : %.0f", Value elseif ( Choice == 6 ) set Value to Player.getActorValue Security set Value to Value - Decreasing Player.setActorValue Security Value message "Sécurité : %.0f", Value elseif ( Choice == 7 ) ; set Choosing to -1 endif endif elseif ( Choosing == -12 ) ; -> menu magie messageBox "Choix du talent à dégrader :" "Alchimie" "Altération" "Destruction" "Guérison" "Illusion" "Invocation" "Mysticisme" "-- Retour à la première page --" set Choosing to 12 elseif ( Choosing == 12 ) set Choice to GetButtonPressed if ( Choice > -1 ) set Choosing to -1 if ( Choice == 0 ) set Value to Player.getActorValue Alchemy set Value to Value - Decreasing Player.setActorValue Alchemy Value message "Alchimie : %.0f", Value elseif ( Choice == 1 ) set Value to Player.getActorValue Alteration set Value to Value - Decreasing Player.setActorValue Alteration Value message "Altération : %.0f", Value elseif ( Choice == 2 ) set Value to Player.getActorValue Destruction set Value to Value - Decreasing Player.setActorValue Destruction Value message "Destruction : %.0f", Value elseif ( Choice == 3 ) set Value to Player.getActorValue Restoration set Value to Value - Decreasing Player.setActorValue Restoration Value message "Guérison : %.0f", Value elseif ( Choice == 4 ) set Value to Player.getActorValue Illusion set Value to Value - Decreasing Player.setActorValue Illusion Value message "Illusion : %.0f", Value elseif ( Choice == 5 ) set Value to Player.getActorValue Conjuration set Value to Value - Decreasing Player.setActorValue Conjuration Value message "Invocation : %.0f", Value elseif ( Choice == 6 ) set Value to Player.getActorValue Mysticism set Value to Value - Decreasing Player.setActorValue Mysticism Value message "Mysticisme : %.0f", Value elseif ( Choice == 7 ) ; set Choosing to -1 endif endif endif end
J'ai l'impression que c'est un peu lourd : est-il possible de l'optimiser, svp ?
Merci
Modifié par BG3, 08 août 2009 - 14:02.