Crypteq Geplaatst: 2 september 2008 Rapport Share Geplaatst: 2 september 2008 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. Reageren Link to comment Delen op andere websites More sharing options...
Timske Geplaatst: 2 september 2008 Rapport Share Geplaatst: 2 september 2008 Goede tutorial, goed uitgelegd Reageren Link to comment Delen op andere websites More sharing options...
Crypteq Geplaatst: 2 september 2008 Auteur Rapport Share Geplaatst: 2 september 2008 Goede tutorial, goed uitgelegd dankje Reageren Link to comment Delen op andere websites More sharing options...
Crypteq Geplaatst: 8 september 2008 Auteur Rapport Share Geplaatst: 8 september 2008 verder geen reacties? Reageren Link to comment Delen op andere websites More sharing options...
PatrickW Geplaatst: 9 september 2008 Rapport Share Geplaatst: 9 september 2008 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. Reageren Link to comment Delen op andere websites More sharing options...
wesley123 Geplaatst: 3 oktober 2008 Rapport Share Geplaatst: 3 oktober 2008 Mooie tutorial, ik heb er goed gebruik van kunnen maken. Het zou ook geweldig zijn als je de verschillende mogelijkheden in menus kan tonen. Reageren Link to comment Delen op andere websites More sharing options...
Recommended Posts
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.