Aller au contenu

[scm]gestion De Menus


Vicolaships

Messages recommandés

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 :

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 :

 

: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 :

 

: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
Lien vers le commentaire
Partager sur d’autres sites

Rejoindre la conversation

Vous pouvez publier maintenant et vous inscrire plus tard. Si vous avez un compte, connectez-vous maintenant pour publier avec votre compte.

Invité
Répondre à ce sujet…

×   Collé en tant que texte enrichi.   Coller en tant que texte brut à la place

  Seulement 75 émoticônes maximum sont autorisées.

×   Votre lien a été automatiquement intégré.   Afficher plutôt comme un lien

×   Votre contenu précédent a été rétabli.   Vider l’éditeur

×   Vous ne pouvez pas directement coller des images. Envoyez-les depuis votre ordinateur ou insérez-les depuis une URL.

Chargement
×
×
  • Créer...