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
©