Tutorial Threads, de basis

Dit is een basis van Threads maken, voordat je deze tutorial doorleest moet je al een beetje kunnen SCM-en. Hiermee bedoel ik dat je auto's/hidden packages/wapens kunnen plaatsen en een kleine ervaring hebben.

We gaan maken dat je een auto kan kopen.
Je hebt de Missionbuilder v1.3 hebben om missies te kunnen maken, verder heb je de PLAYERPOSITION tool nodig om coördinaten op te nemen uit vc.

Voordat we beginnen worden hier een aantal dingen uitgelegd:

X Y Z coordinaat Vaak zie je coördinaten staan in codes. Deze moet je halen uit vc met de Playerposition tool. Druk in vc op F4 en de coördinaat in de tool. Haal wel de komma's weg.
0001: wait 0 ms Deze code zorgt ervoor hoelang het duurt voordat de volgende regel wordt gelezen. Het is normaal om de tijd op 100 te zetten. 1000 Ms = 1 seconde.
00D6: if 0 Deze code zorgt ervoor dat in de volgende regel(s) iets gecheckt wordt. Er staat IF 0 als er een check wordt gedaan, IF 1 als er 2 worden gedaan.....enz.
004D: jump_if_false ££Label00B8E0 Deze code volgt na een IF. Als het niet klopt wat er in de IF wordt gecheckt wordt er naar een label gejumpt. Anders wordt de label uitgevoerd tenzij je eerst in een marker moet staan.
0002: jump ££Label00B720 Er wordt gejumpt naar een label. Vaak wordt deze gebruikt om de hoofdlabel telkens te herhalen zodat die telkens wordt uitgevoerd.



Allereerst zoek je naar create_thread . Je moet nu zoiets vinden:

                     

004F:

Kopieer hier een regel van en geen de Label een naam:

004F: create_thread ££Labelbuy

Deze code zorgt ervoor dat VC je Thread gaat lezen. Zonder deze code gebeurt er niets.

Nu gaan we de Thread beginnen:

Stap 1:




:Labelbuy
0001: wait 100 ms   
03A4: name_thread "BUY"


Ontleding:
:Labelbuy De naam van de Label, deze moet overeenkomen met de create thread code, dus LABELBUY (De 2 pond tekens worden vervangen door een dubbele punt)
0001: wait 0 ms Geeft aan hoe lang het duurt voordat VC de volgende regel gaat lezen, het is het handig om daarbij 100 in te vullen. 1000 ms is 1 echte seconde.
03A4: name_thread "BUY1" Geeft aan hoe de thread heet. Tussen de haakjes moet je een naam invullen. Deze code is niet noodzakelijk.

Stap 2:

Nu gaan we de volgende label maken. Neem 2 Enters en maak een nieuwe label: :Labelbuyload Je hoeft geen jumps te maken want de main leest gewoon door.

:Labelbuy
0001: wait 0 ms   
03A4: name_thread "BUY"

:labelbuyload
03BC: $3F = create_sphere -1734.270 -1708.423 13.887  5.0
0247: request_model #DELUXO
038B: load_requested_models

Ontleding:
03BC: $3F = create_sphere -1734.270 -1708.423 13.887 5.0 Er wordt nu een sphere gemaakt; een rondje waarin je kan gaan staan. $3F = de naam van de sphere.
0247: request_model #DELUXO Hier wordt aangegeven welke models VC straks nodig heeft, deze stap is niet noodzakelijk maar vc zal minder snel vastlopen.
0038B: load_requested_models Nu gaat VC de models die nodig zijn laden (DELUXO)

Stap 3:

We gaan nu de laatste label maken.
 


Ontleding:
00d6: if 0 VC gaat nu iets checken. Wat hij gaat checken staat in de volgende regel.
00e3: player $PLAYER_CHAR 0 ()near_point -1734.270 -1708.423 radius 1.0 1.0 De IF 0 die in de vorige regel stond gaat checken of deze regel klopt, hij gaat checken of De player (tommy) in de buurt van de coördinaat is. Erna zie je staan RADIUS 1.0 1.0. Dit geeft de grote van het gebied rond de coördinaat aan. 2.0 is normaal.
004d: jump_if_false ££Labelbuy2 Deze regel wordt ingeschakeld als de regel die hierboven staat niet klopt; Tommy is niet in de buurt van de coördinaat. Er wordt verwezen naar de label: ££Labelbuy2 (de dubbele punt wordt vervangen door 2 pond tekens). Nu gaat VC weer lezen vanaf :Labelbuy2, pas als klopt wat in de IF 0 staat, gaat hij de volgende regel lezen.
Nu komt er weer een IF 0; oftewel een nieuwe check. Er staat: 010A: player $PLAYER_CHAR money > 2500. Hierin wordt gecheckt of dat de player genoeg geld heeft, als het ware staat er: heeft de player meer geld dan 2500. Zoniet gaat hij weer terug naar het begin van de label (door de JUMP_IF_FALSE code).
0109: player $PLAYER_CHAR money += -2500 Nu gaan we over tot actie: er wordt 2500 geld van de Player afgetrokken.
00A5: $10 = create_car #DELUXO at -1724.941 -1707.464 14.387 Er wordt een auto gemaakt. De auto verschijnt op de coördinaat. $10 = de autonaam.
0175: set_car $10 z_angle_to 0.0 Deze regel geeft de draaihoek van de auto aan. Als je goed kijkt zie je dat er verwezen wordt naar de car $10
0001: wait 5000 ms Er wordt weer een wait geplaatst. Deze moet hoog zijn want anders wordt er gelijk weer een auto neergezet als je geld genoeg hebt, er moet genoeg tijd zijn om uit de marker te komen.
0002: jump ££Labelbuy2 Nu jumpt VC weer terug naar het begin van de label. Dit zorgt ervoor dat je nog een keer de auto kan kopen. Als je wilt dat je maar 1 keer een auto kan kopen vervang je deze regel door:

004E: end_thread

Er wordt voor gezorgd dat de Thread uitgeschakeld wordt.

Nu is de Thread af en je kan door in een marker te gaan staan een car kopen. Binnenkort kan er een vervolg komen. Stel vragen in een ander forum.

Druk op F7 en alles wordt opgeslagen. Als er geen foutmeldingen worden gemeld kan je het gaan testen in vc.


Bij fouten:

Je kan 3 dingen fout hebben gedaan:
- Heb je deze regel op de goede plaats gezet? 004F: create_thread ££Labelbuy1
- Heb je de Labels op de goede plaats gezet?
- Ben je goed in de marker gaan staan? Want in deze regel is de radius maar heel klein, hij zou eigenlijk hoger moeten zijn.

Made by Wauzie ©