Aller au contenu


Photo
- - - - -

[scm]gestion De Menus


  • Veuillez vous connecter pour répondre
Aucune réponse à ce sujet

#1 Vicolaships

Vicolaships

    .:: MacreaCodeur ::.

  • MacreaCitizen
  • PipPipPipPipPip
  • 2422 messages

Posté 06 November 2007 - 02:39 PM

Ce tutoriel est à la porté d'un codeur SCM initié, il est cependant conseillé d'avoir les bases.

1. Présentation et objectifs
Dans ce tutoriel vous allez apprendre à créer et modifier des menus dans GTA San Andreas

2. Etapes de bases:
2.1 Lancez SannyBuilder
2.2 Créez un main basic (cf: tuto) ainsi qu'un label pour insérer le code
2.3 Pour créer un menu nous allons utiliser les opcodes suivants :
Code
08D4: $id_menu = create_panel_with_title 'TITRE' position X Y width A columns 2 interactive 1 background 2 alignment 1
08DB: set_panel $id_menu column 0 header 'DUMMY' data 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'


2.4 Pour pouvoir sélectionner un menu ou même quitter il va falloir rajouter des suites d'opcodes, en voilà une qui marche parfaitement :

Code
:Menu_open
wait 0
if and
00E1: player 0 pressed_key X
80DF: not actor $PLAYER_ACTOR driving
jf @Menu_open
Player.CanMove($PLAYER_CHAR) = False
08D4: $menu_objet = create_panel_with_title 'DUMMY' position 10.0 140.0 width 60.0 columns 2 interactive 1 background 2 alignment 1
08DB: set_panel $menu_objet column 0 header 'DUMMY' data 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'
09DB: set_panel $menu_objet column 0 width 250

:Menu_quitte
wait 0
if
00E1:   player 0 pressed_key 14
jf @Menu_choisit
08DA: remove_panel $menu_objet
03E6: remove_text_box
Player.CanMove($PLAYER_CHAR) = True
jump @Menu_open

:Menu_choisit
wait 0
if
00E1:   player 0 pressed_key 16
jf @Menu_quitte
08D7: $menu_objet_LIGNE = panel $menu_objet active_row
08DA: remove_panel $menu_objet
03E6: remove_text_box
wait 0
if
  $menu_objet_LIGNE == 0
jf @menu_ligne2
XXXXXXXXXXXXXXXXXXXXXXX
jump @Menu_open

:menu_ligne2
wait 0
if
$menu_objet_LIGNE == 1
jf @menu_ligne3
XXXXXXXXXXXXXXXXXXXXXXX
jump @Menu_open

:menu_ligne3
wait 0
if
$menu_objet_LIGNE == 2
jf @menu_ligne3
XXXXXXXXXXXXXXXXXXXXXXX
jump @Menu_open

Ce menu ne marche qu'avec 3 propositions dans le menu, n'en mettez pas plus elles ne marcheront pas, pour en rajouter il suffit de copier le label "menu_ligne3" en le renommant comme j'ai fait pour les 2 autres. Remplacez les "DUMMY" par des noms d'entrées GXT pour avoir du texte dans votre menu

3. Création d'un menu ON/OFF:
3.1 Créer un menu qui gère une option ON/OFF est bien plus compliqué, il faut un texte qui se modifie et un label qui change selon que l'option ai été activé ou non
3.2Voici un exemple de code qui gère une seule option :

Code
:Label
05A9: s$onoff = 'OFF'
$1 = 0

:Menu
wait 0
if
00E1: player 0 pressed_key 11 // COnversation YES
jf @Menu
Player.CanMove($PLAYER_CHAR) = False
08D4: $menu = create_panel_with_title 'OPTIONS' position 10.0 140.0 width 60.0 columns 2 interactive 1 background 2 alignment 1
08DB: set_panel $menu column 0 header 'DUMMY' data 'GXT_REF' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'
08DB: set_panel $menu1 column 1 header 'DUMMY' data s$onoff 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'
09DB: set_panel $menu column 0 width 250
09DB: set_panel $menu1 column 1 width 100

:Quitte
wait 0
if
00E1:   player 0 pressed_key 14 // Sauter
jf @Choisit
08DA: remove_panel $menu
08DA: remove_panel $menu1
03E6: remove_text_box
wait 100
Player.CanMove($PLAYER_CHAR) = True
jump @Menu

:Choisit
wait 0
if
00E1:   player 0 pressed_key 16 // Sprint
jf @Quitte
08D7: $ligne_choix = panel $menu active_row
08DA: remove_panel $menu
08DA: remove_panel $menu1
03E6: remove_text_box
Player.CanMove($PLAYER_CHAR) = True
wait 0
if
  $ligne_choix == 0
jf @Choisit

:Off_to_on
wait 0
if
  $1 == 0
jf @On_to_off
05A9: s$onoff = 'ON'
015D: set_gamespeed 0.5
$1 = 1
jump @Menu

:On_to_off
wait 0
if
  $1 == 1
jf @Off_to_on
05A9: s$onoff = 'OFF'
015D: set_gamespeed 1.0
$1 = 0
jump @Menu


4. Conclusion:
De cette facon vous pouver créer des menus relativement complexes, il vous suffit de multiplier le code et de faire attention aux IDs. Si vous avez une question n'hésitez pas !


Ce tutoriel est le fruit de plus d'une heure de travail, merci d'en respecter les droits d'auteur
Si vous trouvez des fautes d'orthographes merci de me le signaler par MP

Modifié par Vicolaships, 06 November 2007 - 02:47 PM.





0 utilisateur(s) li(sen)t ce sujet

0 membre(s), 0 invité(s), 0 utilisateur(s) anonyme(s)