Jump to content
Bekijk in de app

Een betere weg om onze GTA community te volgen. Leer meer.

GTAGames.nl - De Nederlandse Grand Theft Auto Community!

Een volledig scherm app op het beginscherm inclusief notificaties, badges en meer.

Om deze app op je iPhone en iPad te installeren
  1. Druk op het icoon in Safari
  2. Scroll in het menu en druk op Zet op beginscherm.
  3. Druk op Voeg toe rechts bovenaan.
Om deze app op je Android toe te voegen
  1. Druk op het 3-punten menu (⋮) rechts bovenaan in de browser.
  2. Druk op Toevoegen aan beginscherm of Installeer app.
  3. Druk op Toevoegen om te bevestigen.
Geplaatst:
comment_1411131

Goedemorgen GTAForum,

Deze tutorial is op aanvraag van Correcthost, dit is mijn eerste tutorial dus als jullie nog fouten vinden meld ze dan a.u.b!

Inleiding:

In deze tutorial wil ik graag uitleggen hoe je een (kleine) cutscene maakt. Ik maak de cutscene in een stripped main.scm, oftewel een lege main.scm. Daarom leg ik eerst nog wat andere dingen uit over de lege main.scm. Ook gebruik ik mijn eigen stuk land van Platform Training, jullie kunnen het natuurlijk gewoon in SA doen.

Veel plezier en succes met het volgen van de tut! :tu:

Wat heb je nodig?

- GTA San Andreas

- Sannybuilder 3.04

- GTA SA GXT Editor

- GTA SA Place Manager

- Een lege main.scm (Let op: Je download nu eigenlijk Map Cleaner van Steve-M maar in de .zip is een map genaamd ''extra'' hierin staat de lege scm.

Laten we beginnen:

Ten eerste moet je Sannybuilder geïnstalleerd hebben samen met GTA SA natuurlijk. Daarbij moet je ook de GXT Editor en Place Manager in aparte mappen hebben staan waar je ze snel en gemakkelijk kan terugvinden.

Wanneer je dit allemaal klaar hebt kunnen we echt beginnen.

Start Sannybuilder. Nu klik je op het kleine gele mapje bovenin:

screen1mfv.jpg

Zoek de lege main.scm op en open hem, het kan zijn dat Sannybuilder vraagt naar je SA map maar dit is alleen het geval wanneer je hem voor het eerst gebruikt. Ook moet je in het scherm waar je de main.scm opzoekt bij ''bestandstypen'' compiled scripts selecteren:

screen2vhm.jpg

Als het goed is heb je hem nu geopend, als eerste gaan we een code aanpassen. Zoek de volgende code op:

01F0: set_max_wanted_level_to 6

Verander de 6 naar 0, hierdoor is je maximum wanted level 0 sterren.

Nu gaan we aanpassen waar je spawnt, zoek deze code op:

$7 = 0.0 
$6 = 0.0 
$5 = 30.0

Dit zijn variables die coördinaten bevatten, je ziet ook verder in het script deze code:

$PLAYER_CHAR = Player.Create(#NULL, $7, $6, $5)

Je wordt dus op die coördinaten gespawnt, om een lang verhaal kort te houden:

Verander de coördinaten achter de variables naar jou gewenste start positie. De $7 staat voor de X, de $6 voor Y en de $5 voor Z.

Je kunt deze coördinaten verkrijgen door de Place Manager te gebruiken, start de place manager en start GTA SA op. Vervolgens ga je naar je gewenste start positie toe en keer je terug naar Windows, klik dan in de place manager op ''Add place''. Nu zullen de coördinaten verschijnen. Nu kun je de coördinaten overschrijven of kopiëren uit het ''places configuratie bestand''. Vergeet niet de komma's in de coördinaten te veranderen naar punten!!

Maar er is nog een probleem, helemaal onderaan staat dit:

Model.Load(#HYDRA)

:MAIN_383
wait 0 
if 
  Model.Available(#HYDRA)
else_jump @MAIN_383 
$4 = Car.Create(#HYDRA, $7, $6, $5)
036A: put_actor $PLAYER_ACTOR in_car $4

Deze code geeft aan dat wanneer je een new game start gelijk in een hydra spawnt. Dat moeten we natuurlijk niet hebben. Verwijder alle codes die ik in mijn vorige code box liet zien zodat je deze overhoud:

016C: restart_if_wasted_at $7 $6 $5 angle 0.0 town_number 0 

:MAIN_383
fade 1 1000 
wait 100 
03E6: remove_text_box

Nu worden we op de juiste plek gespawnt, we kunnen geen wanted level krijgen en we worden niet in een hydra gespawnt. Nu gaan we met de cutscene beginnen.

Nu gaan we een sphere maken. Een sphere is zo'n rode ronde cirkel waar je in moet lopen om een missie te starten.

Zet onder deze code:

:MAIN_383
fade 1 1000 
wait 100

Deze code:

03BC: $108 = create_sphere_at x y z radius 3.0

Je ziet een variable staan, $108. Deze mag je naar een willekeurig getal noemen. Daarna komen de x, y en z, deze mag je natuurlijk zelf invullen maar zorg er wel voor dat hij op een redelijke plaats staat. Dan staat er nog ''radius 3.0'', dit is de grote van de sphere, zet dit op 2.0.

Klik nu bovenin op dit knopje en vervolgens op het SA logo ernaast:

screen3w.jpg

Als het goed is heb je dit als resultaat:

screen4jbw.jpg

Zet nu voor de jump in deze code 2 schuine streepjes neer:

:MAIN_441
wait 2500 
//jump @MAIN_441

Vervolgens zet je hieronder :MAIN_420:

:MAIN_441
wait 2500 
//jump @MAIN_441

:MAIN_420

We gaan nu uitbreiden zodat de sphere wordt verwijderd, het beeld verduistert en vervolgens de cutscene start.

:MAIN_420
wait 0
if
00ED:   actor $PLAYER_ACTOR 0 near_point 460.0074 -1841.482 radius 2.0 2.0 on_foot  
jf @MAIN_420
03BD: destroy_sphere $140 
fade 0 1000
wait 1000
02A3: enable_widescreen 1
Player.CanMove($PLAYER_CHAR) = False
Camera.SetPosition(x, y, z, 0.0, 0.0, 0.0)
Camera.PointAt(x, y, z, 2)
fade 1 1000
wait 1000

Even op een rijtje wat er nu gebeurt:

  • Het script kijkt of de speler vlakbij een plek is, zo ja dan:
  • Wordt de sphere verwijderd
  • Wordt het beeld donker
  • Wordt de ''widescreen'' ingesteld
  • Kan de speler niet meer bewegen
  • Wordt de camera verplaatst
  • en wordt het beeld weer normaal

Alles spreekt nu eigenlijk voor zich behalve de camera, namelijk deze 2 codes:

Camera.SetPosition(x, y, z, 0.0, 0.0, 0.0)
Camera.PointAt(x, y, z, 2)

De eerste code geeft aan waar de camera zich bevindt en de tweede code geeft aan waar de camera zich op richt. De x, y en z in beide codes spreken voor zich. De eerste code, waar de camera hangt en de tweede code waar hij naartoe kijkt. Dat kan op een actor, of ander punt zijn.

Nu willen we graag instellen hoe lang de camera op een ander punt staat en richt. Dit kunnen we doen door een ''wait'' aan te passen. Als het goed is heb je nu ongeveer deze code:

:MAIN_420
wait 0
if
00ED:   actor $PLAYER_ACTOR 0 near_point 460.0074 -1841.482 radius 2.0 2.0 on_foot  
jf @MAIN_420
03BD: destroy_sphere $140 
fade 0 1000
wait 1000
02A3: enable_widescreen 1
0A48: enable_menu_access_in_widescreen_mode 1 
Player.CanMove($PLAYER_CHAR) = False
Camera.SetPosition(468.8174 , -1848.294, 15.148442, 0.0, 0.0, 0.0)
Camera.PointAt($7, $6, $5, 2)
fade 1 1000
wait 1000

Verander nu de 1000 van de allerlaatste ''wait'' in bijvoorbeeld 10000. Nu zal de camera 10 seconden (10000ms) op dat ene punt hangen en op dat ene punt staren. Je kunt natuurlijk de 10000 ook in een lager of hoger getal invullen.

Klik nu weer bovenin op compile knopje en weer op het San Andreas logo, nu kun je het begin van je cutscene bekijken! Maar wanneer de ''wait'' ophoudt crasht het spel. Dit komt omdat er verder geen script meer is en de camera nog niet goed staat.

We gaan nu text toevoegen aan onze cutscene, hier hebben we de GXT Editor nodig die je, als het goed is, hebt gedownload. Start de Editor op en zoek en open de american.gxt hij zou normaal in de text map moeten staan in de GTA SA map. Klik nu onder ''table name'' de MAIN aan en klik op ''entry'' en vervolgens add...:

screen5qxy.jpg

Geef nu je entry een naam en type in het grote vak rechts je tekst. Vervolgens klik je op je entry onder ''entry name''. Sla nu het bestand op en ga weer terug naar Sannybuilder.

Eenmaal in Sannybuilder zoek je weer de code van de cutscene, verwerk nu deze code:

00BB: show_text_lowpriority GXT 'TUT' time 5000 flag 1

in de cutscene code:

:MAIN_420
wait 0
if
00ED:   actor $PLAYER_ACTOR 0 near_point 460.0074 -1841.482 radius 2.0 2.0 on_foot  
jf @MAIN_420
03BD: destroy_sphere $140 
fade 0 1000
wait 1000
02A3: enable_widescreen 1
0A48: enable_menu_access_in_widescreen_mode 1 
Player.CanMove($PLAYER_CHAR) = False
Camera.SetPosition(468.8174 , -1848.294, 15.148442, 0.0, 0.0, 0.0)
Camera.PointAt($7, $6, $5, 2)
fade 1 1000
00BB: show_text_lowpriority GXT 'TUT' time 5000 flag 1
wait 10000

In de code die ik je net gaf staat ''TUT'', dit moet je veranderen naar de naam van je entry. Je kunt ook meerdere teksten achter elkaar zetten door simpelweg de regel opnieuw onder de code te zetten. Maar let op, in de staat 5000, oftewel 5 seconden. Stel dat je bij allebei de codes 6000 neerzet dan duurt het in totaal 12 seconden. Maar de wait gaat maar tot 10 seconden. Dus moet je de wait ook aanpassen in lengte.

Nu gaan we ervoor zorgen dat de camera naar een andere punt springt. We voegen deze code toe:

0936: set_camera 468.8174 -1848.294 15.148442 position_to 457.8174 -1838.294 15.148442 time 20000 drop_mode 1 
wait 2000 
Camera.SetPosition(457.8174, -1838.294, 15.148442, 0.0, 0.0, 0.0)
wait 10000

We krijgen dus dit:

:MAIN_420
wait 0
if
00ED:   actor $PLAYER_ACTOR 0 near_point 460.0074 -1841.482 radius 2.0 2.0 on_foot  
jf @MAIN_420
03BD: destroy_sphere $140 
fade 0 1000
wait 1000
02A3: enable_widescreen 1
0A48: enable_menu_access_in_widescreen_mode 1 
Player.CanMove($PLAYER_CHAR) = False
Camera.SetPosition(468.8174, -1848.294, 15.148442, 0.0, 0.0, 0.0)
Camera.PointAt($7, $6, $5, 2)
fade 1 1000
00BB: show_text_lowpriority GXT 'TUT' time 5000 flag 1
wait 6000
0936: set_camera x y z position_to x y z time 20000 drop_mode 1 
wait 2000 
Camera.SetPosition(x, y, z, 0.0, 0.0, 0.0)
wait 10000

De camera verplaatst zich nu langzaam naar de nieuwe plek. Bij deze code:

0936: set_camera x y z position_to x y z time 20000 drop_mode 1

zijn de eerste x, y en z de coördinaten van waar de camera eerst stond en de tweede x, y en z zijn de coördinaten waar de camera naartoe gaat.

Nu plaats je nog een wait onderaan en gaan we naar het laatste gedeelte. Hoe zetten we de camera weer goed?

Dat kan door de volgende code:

02A3: enable_widescreen 0
Camera.Restore
Player.CanMove($PLAYER_CHAR) = True

De code geeft aan dat de widescreen wordt uitgeschakeld, de camera wordt goed gezet en dat de speler weer kan lopen. Dit is naar mijn weten alleen maar mogelijk in een thread, dus die gaan we even maken.

Zoek deze code op:

:MAIN_383
fade 1 1000 
wait 100
03BC: $140 = create_sphere_at 460.0074 -1841.482 8.148442 radius 2.0 
03E6: remove_text_box

Dus waar je de sphere hebt gemaakt. Vervolgens zet je eronder:

create_thread @MAIN_420

Nu hebben we een thread gemaakt, maar nu nog het einde. Ga helemaal naar beneden naar het einde van je script en zet er dit neer:

end_thread

Nu is de thread gemaakt en moet de cutscene werken!

Dit is mijn hele code tot nu toe:

:MAIN_383
fade 1 1000 
wait 100
03BC: $140 = create_sphere_at 460.0074 -1841.482 8.148442 radius 2.0 
03E6: remove_text_box 
create_thread @MAIN_420

:MAIN_441
wait 2500 
//jump @MAIN_441 

:MAIN_420
wait 0
if
00ED:   actor $PLAYER_ACTOR 0 near_point 460.0074 -1841.482 radius 2.0 2.0 on_foot  
jf @MAIN_420
03BD: destroy_sphere $140 
fade 0 1000
wait 1000
02A3: enable_widescreen 1
0A48: enable_menu_access_in_widescreen_mode 1 
Player.CanMove($PLAYER_CHAR) = False
Camera.SetPosition(468.8174, -1848.294, 15.148442, 0.0, 0.0, 0.0)
Camera.PointAt($7, $6, $5, 2)
fade 1 1000
00BB: show_text_lowpriority GXT 'TUT' time 5000 flag 1
wait 6000
0936: set_camera 468.8174 -1848.294 15.148442 position_to 457.8174 -1838.294 15.148442 time 10000 drop_mode 1
0920: point_camera $7 $6 $5 transverse_to $7 $6 $5 time 10000 mode 1   
wait 10000
Camera.SetPosition(457.8174, -1838.294, 15.148442, 0.0, 0.0, 0.0)
Camera.PointAt($7, $6, $5, 2) 
wait 5000
02A3: enable_widescreen 0
Camera.Restore
Player.CanMove($PLAYER_CHAR) = True
end_thread

Ik hoop dat jullie er iets van geleerd hebben en bedankt voor het lezen!

Vragen, commentaar enz. zijn allemaal welkom!

Grtz RD :cya:

Featured Replies

Geplaatst:
  • Auteur
comment_1453763
Zo leer je het jezelf (en anderen) verkeerd aan, en dat probeer ik te voorkomen.

Volgens mij beschouw je me nu als een gevaarte. :7

>>> Door Dutchy3010: Nee hoor, ik beschouw je als iemand die nog veel moet leren, maar alvast wel wat je weet wil delen met andere mensen. Goede instelling! :tu:<<<

Ik zal kijken of ik nog iets kan opsteken van die tutorial.

Btw, misschien is een soort tutorial check handig? Hierbij worden tutorials eerst door een moderator bekeken en wanneer hij hem goed genoeg vind wordt hij zichtbaar voor het publiek...

Grtz...

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

Recent actief 0

  • Er zijn hier geen geregistreerde gebruikers aanwezig.

Configureer push berichten

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.