Jump to content

[SA|SCM] Menu's maken


Recommended Posts

Geplaatst:

Menu's maken



Deze tutorial gaat over het maken van een menu.

In deze tutorial maak ik het script in Cleo3. Maar je kan het script ook in de normale SCM gebruiken.

Benodigdheden:

1. Kennis van scripten met sannybuilder.

2. Sannybuilder

3. Cleo3 library*Optioneel (als je het maakt in scm dan heb je geen cleo3 nodig)

4. Sagxtedit*Optioneel (als je cleo3 gebruikt is het makkelijker om fxt bestanden te gebruiken)

Een fxt bestand maken (alleen als je het script in Cleo3 maakt) :

Als je cleo3 gebruikt dan kan je FXT (FAKE GTA Text Table) gebruiken.

Let wel op dat je gxthook.cleo in je cleo map hebt staan. Om .fxt bestanden te gebruiken moet je een map maken in de map cleo en dan noem je de map: Cleo_text.

In die map kan je fxt bestanden maken. dat doe je door met kladbok een bestand te maken, en het op te slaan als: <naam>.fxt

Een fxt bestand is zo opgebouwd: <GXT ENTRY><SPACE><TEXT>

dus eerst de naam die je het geeft, daarna doe je spatie en daarna de tekst die je wilt gebruiken in je menu. let wel op dat je na de naam niet meerdere spatie's hebt en ook mag je bij de tekst ook geen spatie's erna hebben. Heb je dat wel, dan zie je de tekst in het menu niet.

Het maken van een menu:

we gaan aan de slag met het maken van het menu.

ik maak het script in cleo3. (in een .cs script)

je kan deze manier ook in je normale .scm script gebruiken!!!

in cleo3 zet ja altijd bovenaan:

{$CLEO .cs}

ik doe het heel simpel. als je op een knop druk dan verschijnt het menu, dat doe je op de volgende manier:

		   thread "MENU" 

	   :MENU_8
	 wait 0 
	   08DA: remove_panel $MENU 
	   03E6: remove_text_box 
	   Player.CanMove($PLAYER_CHAR) = True

	   :MENU_85
	 0AB0:   key_pressed 123 //dit is de knop F12
	 jf @MENU_85 
	 jump @MENU_129 // hier springt ie naar label :MENU_129.

:MENU_129
	   Player.CanMove($PLAYER_CHAR) = false
	 0512: show_permanent_text_box 'CLOTHA' //  dit is de standaard tekst voor een menu: // Use ~k~~GO_FORWARD~ and  ~k~~GO_BACK~ to select area.~N~~k~~PED_SPRINT~  Select~N~~k~~VEHICLE_ENTER_EXIT~ Quit

	   08D4: $MENU = create_panel_with_title 'DUMMY' position 29.0 145.0 width 220.0 columns 1 interactive 1 background 1 alignment 1 // maak een menu aan. je kan  de positie, en de breedte makkelijk varanderen.

	   08DB: set_panel $MENU column 0 header 'DUMMY' data 'DUMMY' 'DUMMY'  'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'  'DUMMY' // hier zet je de tekst neer die je hebt  opgeslagen in je gxt of fxt bestand. gta leest de tekst: DUMMY als  leeg. dus als je maar bijv: 2 opties wilt hebben dan moet je de de 2  DUMMY's na data vervangen door je eigen.
	   let wel op dat je het altijd tussen ' ' zet.

	   gosub @MENU_30 // hier spring je naar label  :MENU_30, die ervoor gaat zorgen dat je iets in het menu kan  selecteren, en het menu kan laten verdwijnen.

	 0871: init_jump_table $ROW total_jumps 16 default_jump 0 @MENU_8  jumps 0 @MENU_436 1 @MENU_443 2 @MENU_450 3 @MENU_457 4 @MENU_464 5  @MENU_471 6 @MENU_478 
	 0872: jump_table_jumps 7 @MENU_485 8  @MENU_492 9 @MENU_499 10 @MENU_506 11 @MENU_513 12 @MENU_513 13  @MENU_513 14 @MENU_513 15 @MENU_513 

 //hier zet je neer waarna ie moet springen als je iets selecteerd. Na  jumps 0 zet je steeds neer waarna ie heen moet springen. 0872:  jump_table_jumps haakt erop in.daar ga je verder met tellen tot de 15.  je mag niet minder hebben want dan geeft ie een error. heb je minder  dus stel dat je maar 5 opties hebt. dan tel je tot de 4 (je begint bij  0) en daarna doe je steeds hetzelfde label. omdat je die toch niet  gebruikt. let wel op dat je dan bij: 08DB: set_panel de 1e 5 Dummy's  vervangt voor je eigen.

   :MENU_436
	 jump @MENU_8 

	 :MENU_443
	 jump @MENU_8 

	 :MENU_450
	 jump @MENU_8 

	 :MENU_457
	 jump @MENU_8 

	 :MENU_464
	 jump @MENU_8 

	 :MENU_471
	 jump @MENU_8 

	 :MENU_478
	 jump @MENU_8 

	 :MENU_485
	 jump @MENU_8 

	 :MENU_492
	 jump @MENU_8 

	 :MENU_499
	 jump @MENU_8 

	 :MENU_506
	 jump @MENU_8 

	 :MENU_513
	 jump @MENU_8

hier springt ie steeds naartoe. dit is ook de makkelijktse manier. dus je kan steeds daarin zetten wat er moet gebeuren. dus bijv, bij de eerste:

:MENU_436

jump @MENU_8

kan je van maken:

:MENU_436

02AB: set_actor $PLAYER_ACTOR immunities BP 1 FP 1 EP 1 CP 1 MP 1

jump @MENU_8

//dat zorgt ervoor dat als je de 1e optie selecteert dat je dan niet meer dood kan. zo kan je bij elke iets neerzetten. bij elke springt ie naar label :MENU_8. die staat bovenaan. die zorgt ervoor dat het menu weer weggehaald word en dat je weer kan bewegen.

:MENU_30
	 wait 0 
	 if 
	 00E1:   player 0 pressed_key 15 //enter
	 jf @MENU_72 
	 08DA: remove_panel $MENU 
	 03E6: remove_text_box 
	 Player.CanMove($PLAYER_CHAR) = True
	 jump @MENU_8 

	 :MENU_72
	 wait 0 
	 if 
	 00E1:   player 0 pressed_key 16 //spatie
	 jf @MENU_30 
	 08D7: $ROW = panel $MENU active_row 
	 08DA: remove_panel $MENU 

	 :MENU_106
	 wait 0 
	 if 
	 80E1:   not player 0 pressed_key 16 
	 jf @MENU_106 
	 return

dit stukje zorgt ervoor dat ie gaat checken welke knop je indrukt. dus spatie, dat ie dan de optie selecteerd. en enter, dat ie dan het menu afsluit. al eerder in het script stond er na: 08DB: set_panel: gosub @MENU_30

dat was het. hier alles in 1 code:

		 {$CLEO .cs}


	 thread "MENU" 

	 :MENU_8
	 wait 0
	 08DA: remove_panel $MENU
	 03E6: remove_text_box
	 Player.CanMove($PLAYER_CHAR) = True

	 :MENU_85
	 wait 0 
	 0AB0:   key_pressed 123 
	 jf @MENU_85
	 jump @MENU_129		

	 :MENU_129
	 0512:  show_permanent_text_box 'CLOTHA'  // Use ~k~~GO_FORWARD~ and  ~k~~GO_BACK~ to select area.~N~~k~~PED_SPRINT~  Select~N~~k~~VEHICLE_ENTER_EXIT~ Quit
	 08D4: $MENU = create_panel_with_title 'DUMMY' position 29.0 145.0 width 220.0 columns 1 interactive 1 background 1 alignment 1 
	 08DB:  set_panel $MENU column 0 header 'DUMMY' data 'DUMMY' 'DUMMY' 'DUMMY'  'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY' 'DUMMY'  
	 gosub @MENU_30 
	 0871: init_jump_table $ROW total_jumps 16  default_jump 0 @MENU_8 jumps 0 @MENU_436 1 @MENU_443 2 @MENU_450 3  @MENU_457 4 @MENU_464 5 @MENU_471 6 @MENU_478 
	 0872:  jump_table_jumps 7 @MENU_485 8 @MENU_492 9 @MENU_499 10 @MENU_506 11  @MENU_513 12 @MENU_513 13 @MENU_513 14 @MENU_513 15 @MENU_513 

	 :MENU_436
	 jump @MENU_8 

	 :MENU_443
	 jump @MENU_8 

	 :MENU_450
	 jump @MENU_8 

	 :MENU_457
	 jump @MENU_8 

	 :MENU_464
	 jump @MENU_8 

	 :MENU_471
	 jump @MENU_8 

	 :MENU_478
	 jump @MENU_8 

	 :MENU_485
	 jump @MENU_8 

	 :MENU_492
	 jump @MENU_8 

	 :MENU_499
	 jump @MENU_8 

	 :MENU_506
	 jump @MENU_8 

	 :MENU_513
	 jump @MENU_8 

	 :MENU_30
	 wait 0 
	 if 
	 00E1:   player 0 pressed_key 15 
	 jf @MENU_72 
	 08DA: remove_panel $MENU 
	 03E6: remove_text_box 
	 Player.CanMove($PLAYER_CHAR) = True
	 jump @MENU_8 

	 :MENU_72
	 wait 0 
	 if 
	 00E1:   player 0 pressed_key 16 
	 jf @MENU_30 
	 08D7: $ROW = panel $MENU active_row 
	 08DA: remove_panel $MENU 

	 :MENU_106
	 wait 0 
	 if 
	 80E1:   not player 0 pressed_key 16 
	 jf @MENU_106 
	 return

als je wil weten hoe je het maakt dat als je een optie selecteert dat je nog een menu krijgt, dan kan je altijd even kijken in de: Source van mijn mod: Link

dat was alles, als er een fout in zit of je hebt suggesties? post het dan.

:cya:

Geplaatst:

Mooie tutorial,

Ik heb ooit in een ver verleden de werking van de SCM codes voor ingame menu's uitgezocht, link

leuk dat er nu een handige tutorial voor is.

  • 4 weken later...
Geplaatst:

Mooie tutorial, ik heb er goed gebruik van kunnen maken. Het zou ook geweldig zijn als je de verschillende mogelijkheden in menus kan tonen.

Een reactie plaatsen

Je kan nu een reactie plaatsen en pas achteraf registreren. Als je al lid bent, log eerst in om met je eigen account een reactie te plaatsen.

Gast
Op dit onderwerp reageren...

×   Je hebt text geplaatst met opmaak.   Opmaak verwijderen

  Only 75 emoji are allowed.

×   Je link is automatisch ingevoegd.   In plaats daarvan weergeven als link

×   Je vorige bewerkingen zijn hersteld.   Alles verwijderen

×   You cannot paste images directly. Upload or insert images from URL.

  • Recent actief   0 leden

    • Er zijn hier geen geregistreerde gebruikers aanwezig.
×
×
  • Create New...