Jump to content

Recommended Posts

Geplaatst: (bewerkt)

K'heb even niks te doen, dus hier komt een tutorial.

Ik begin met wat uitleg, eigenlijk het thread in woorden.

De race komt er als volgt uit te zien: Er is een marker, en als je erin stapt, dan verschijnt er een auto.

Ook komt er 1 checkpoint, en je zorgt voor een timer. De timer start wanneer je door de eerste checkpoint gaat.

Dan verschijnt de tweede, en dus als je zou willen meer. Na de tweede krijg je geld en eindigt de missie.

Ik heb nog even geen tijd om opcodes te vermelden, dat komt later.

:Start
03BC:0@ = create_sphere x y z 1.0;; Je maakt een marker.
jump to missioncheck

:missioncheck
wait 50 ms;; dit is namelijk een loop
if 0
onmission == 0;; een dubbele is omdat het een check is of je missie status gelijk is aan 0
jf onmission
if 0
00F6: player $PLAYER_CHAR 0 ()near_point_on_foot x y z radius 1.0 1.0 1.0
jf missioncheck
jump startrace

:onmission
03BD: destroy_sphere 0@

:still
wait 0 ms;; weer een loop
if 0
onmission == 1
jf start;; Dat is de eerste, waar de marker gemaakt word
jump still

Dit is mijn standaart missie begin. Het zorgt dat de marker verdwijnt als je aan een missie bent, en weer verschijnt waneer je niet meer aan een missie bent.

:startrace
wait 10 ms;; voor het geval hij niet direkt laad is dit ook een loop
request model cheetah;; Dat is de raceauto

:loaded
wait 10 ms
if 0
NOT #cheetah loaded
jf startrace

:missionbuild
fade 100 ms
remove marker mission start
mission attemts+= 1
onmission = 1
create text "The Race" 5000 ms;; Hier moet je even het missie lettertype vinden
$car = Create #cheetah at X, Y, Z;; Dit moet dus een stukje naast jouw zijn...
set car $car z-angel to Z;; De richting van de eerste checkpoint
- Soms moet je zorgen dat de deuren niet op slot zijn -
$check1 = Create checkpoint at X, Y, Z
wait 5000 ms;; Onthoud: We zitten nog in het laadscherm
fade (1) back 100 ms

Hier heb je eigenlijk de missie opgebouwd: Vanaf nu begint de race.

:checkpoint
wait 0 ms
if 0
NOT player_char near_point_in_car $car X, Y, Z
jf second
gosub checker;; Voor een wasted/busted/car check gebruik ik altijd een gosub , dat bespaard je labels
jump checkpoint

:checker
wait 0 ms
if 1;; 2 functies
NOT wasted/busted;; Dat is 1 opcode
NOT car $car destroyed
jf failed
return

:second
remove marker $CHECK1
$CHECK2= create marker at X, Y, Z

:secondR
wait 0 ms
if 0
NOT player_char near_point_in_car $car X, Y, Z
jf completed
gosub checker
jump secondR

:failed
remove marker $check1
remove marker $check2
onmission = 0
jump start

:completed
clear wanted level
money += X;; hoeveel je zelf wilt
remove marker $check2
end_thread

Als je nu een race wil maken met verschillende checkpoints die je op een willekeurige volgorde kan pakken, gaat het behoorlijk anders.

Je moet het zo zien: Er komt een loop die checkt of je bij een van de punten bent. Stel voor dat je bij zo'n punt bent, dan blijft erlangs loopen. Je moet dus zorgen dat hij als je een checkpoint pakt dat label niet meer leest. Dat doe je met een ''schakelaar''. Die schakelaar is een integer value, die op 0 staat als je de checkpoint nog moet pakken, en naar 1 verspringt als je hemt hebt.

alles tot de missieopbouw klopt nog, dus vanaf

:missionbuild
fade 100 ms
remove marker mission start
mission attemts+= 1
onmission = 1
create text "The Race" 5000 ms;; Hier moet je even het missie lettertype vinden
$car = Create #cheetah at X, Y, Z;; Dit moet dus een stukje naast jouw zijn...
set car $car z-angel to Z;; De richting van de eerste checkpoint
- Soms moet je zorgen dat de deuren niet op slot zijn -
$marker1 = Create checkpoint at X, Y, Z
$marker2 = Create checkpoint at X, Y, Z
wait 5000 ms;; Onthoud: We zitten nog in het laadscherm
fade (1) back 100 ms

:integers
$check1 = 0;; De schakelaar van checkpoint 1
$check2 = 0;; De schakelaar van checkpoint 2
$checktotal = 0;; Alle checkpoints samen

:check1
wait 0 ms
if 0
$check1 = 0;; Die moet nul zijn, anders mag hij dit label niet lezen.
jf checker
if 0
player_char near_point_in_car $car X, Y, Z
jfchecker
$check1 += 1;; De schakelaar is omgezet, dus dit label word hierna niet meer gelezen
$checktotal += 1
remove marker $marker1
jump checker

:checker
wait 0 ms
if 0
NOT $checktotal == 2
jf complete
if 1
wasted/busted
car $car destroyed
jf failed
jump check2

:check2
wait 0 ms
if 0
$check2 = 0;; Die moet nul zijn, anders mag hij dit label niet lezen.
jf check1
if 0
player_char near_point_in_car $car X, Y, Z
jf check1
$check2 += 1;; De schakelaar is omgezet, dus dit label word hierna niet meer gelezen
$checktotal += 1
remove marker $marker2
jump check1

De completed en failed blijven ook hezelfde

Bewerkt: door Flotje
Geplaatst:

Dit is zeker geen slechte tutorial flotje.

Toch zal ik als ik jouw was een inleiding maken met wat basis informatie over het programma en hoe je het gebruikt, hoeft niet lang te zijn maar gewoon een beetje simpele uitleg.

Als je niks van het programma afweet zul je waarschijnlijk ook niks van je tut snappen.

Daarnasst vermeld je niet voor welke gta het is (ik gok op vc).

Geplaatst:

Ok, het is voor Vc

Verder ga ik nog een tutorial hierbij voegen, over hoe je een race maakt met verschillende punten die je in willekeurige volgorde mag pakken, en een tut over hoe je eventueel een race auto krijgt die tegen jouw rijd. Je moet wel weten dat ik dat nog nooit gedaan heb, dus ik verzeker niks.

Verder kan ik ook nog niet verzekeren of deze tut klopt, 'thuis' (gescheiden ouders) heb ik de race zelf, dus dan moet ik ze ff vergelijken;)

Geplaatst:
Dit is zeker geen slechte tutorial flotje.

Toch zal ik als ik jouw was een inleiding maken met wat basis informatie over het programma en hoe je het gebruikt, hoeft niet lang te zijn maar gewoon een beetje simpele uitleg.

Als je niks van het programma afweet zul je waarschijnlijk ook niks van je tut snappen.

Daarnasst vermeld je niet voor welke gta het is (ik gok op vc).

Een tut als deze is ook niet bedoelt voor mensen die nog nooit scm gedaan hebben, maar meer voor mensen die de scm al een beetje leren kennen.

Geplaatst:

Ik heb even je quote tags veranderd in de 'code' tags zodat je wel vakjes krijgt, ff wat overzichtelijker ;).

Mooie tutorial trouwens :Y.

Geplaatst:

Goed, dan ga ik als ik weer 'thuis' ben opcodes toevoegen, en controleren of alles klopt. Ik hoop dat 'ie in de Masted Tutorial list komt!!!

Ik ga nog wel meer tut's schrijven...

Geplaatst: (bewerkt)

Ok, om mensen ongeveer te laten zien hoe je mods maakt, ga ik een mod schrijven, die ik nog niet eerder heb gemaakt, dus ik bedoel eigenlijk een tut.

Het gaat over mijn magic mod: Allereerst, mana.

Wat ik wil is dat je een mana level hebt, een maximum mana level, en dat als je mana onder het maximum komt, dat hij dan elke 10 seconden met 2 toeneemt.

Ik begin met de twee integer values:

:mana
$maxman = 25
$curman   = 25

:usage
wait 10 ms
if 0
$maxman > curman;; Dit wil zeggen, je mana is lager dan het maximum
jf usage

:add
wait 5000 ms
$curman += 1
if 0
$curman >= $maxman
jf add
$curman = $maxman;; Om te zorgen dat je mana niet boven het maximum uitkomt
jump usage

Zo, er is nu een nieuwe eenheid: De mana. Ik moet nog iemand vinden die er een balkje bij maakt, althans, ik weet hoe je een balkje maakt, maar iemand die zorgt dat de maximale groote van het balkje 25 is, en de minmale 0.

Nu zal ik een "zweefspreuk maken"

Wat ik nodig heb is: Eerst moet gecheckt worden of het mana groter is dan 0.

Dan moet er constant gecheckt worden of de mana niet onder de nul uitkomt, en als alles goed is, moet je bij een bepaalde knop kunnen zweven (8).

:zweven
wait 0 ms;; Als het hoger dan nul is, is er kans dat de knop niet reageert!
if 0
$curman >= 0
jf zweven
if 0
key_pressed $key;; Hier moet je zelf een knop voor vinden. Als ik meer spreuken heb voeg ik een 'boekje' toe
jf zweven
16@ = 0;; Dit om te zorgen dat je wel constant zweeft, maar dat de mana elke seconde 1 minder word

:zweven2
wait 0 ms
create coordinate from player 0@ 1@ 2@ ofset 0 0 2;; De derde is de hoogte
put player_char at 0@ 1@ 2@


:check
wait 0 ms
if 0
NOT 0 >= $curman
jf zweven
if 0
NOT wasted/busted
jf zweven
if 0
16@ >= 1000
jf zweven2
16@ = 0;; Dit om te zorgen dat je wel constant zweeft, maar dat de mana elke seconde 1 minder word
$curman += -1
jump zweven2

Volgens mij werkt dit gewoon... Ik verheug me op het resultaat :puh:

Ok, na het controleren heb ik dus alweer een fout ontdekt...

In feite zou je nu steeds hoger vliegen in plaats van te zweven, dus moet ik een zorgen dat hij niet steeds een coordinaat hoger gaat, maar op dat coordinaat blijft, door middel van een schakelaartje!

:zweven
wait 0 ms;; Als het hoger dan nul is, is er kans dat de knop niet reageert!
if 0
$curman >= 0
jf zweven
if 0
key_pressed $key;; Hier moet je zelf een knop voor vinden. Als ik meer spreuken heb voeg ik een 'boekje' toe
jf zweven
16@ = 0;; Dit om te zorgen dat je wel constant zweeft, maar dat de mana elke seconde 1 minder word
$la = 0;; dit is het schakelaartje

:zweven2
wait 0 ms
if 0
$la = 0
jf floater
create coordinate from player 0@ 1@ 2@ ofset 0 0 2;; De derde is de hoogte
put player_char at 0@ 1@ 2@
$la += 1;; Het schakelaartje is omgezet:) 
jump check

:floater
wait 0 ms
create coordinate from player 0@ 1@ 2@ ofset 0 0 0;; Dit moet je doen om vallen te voorkomen!
put player_char at 0@ 1@ 2@
jump check

:check
wait 0 ms
if 0
NOT 0 >= $curman
jf zweven
if 0
NOT wasted/busted
jf zweven
if 0
16@ >= 1000
jf zweven2
16@ = 0;; Dit om te zorgen dat je wel constant zweeft, maar dat de mana elke seconde 1 minder word
$curman += -1
jump zweven2

Bewerkt: door Flotje
Geplaatst:

KUTGW - Keep Up The Good Work (Gaat zo voort!)

Mooie Tutorial Flotje.Ik wacht met smart op de volgende tutorial(s).

Greets,

Mickey

Geplaatst: (bewerkt)

Ok, hier komt dan maar mijn volgende.

Weer ga ik gewoon een mod die ik al in gedachten heb, maar nog niet heb uitgewerkt, hier schrijven. Ik heb toch niks beters te doen :puh:

Hoe het eruit komt te zien:

Het word mijn 'Human bowling' mod. Je staat op een landingsbaan, die voor het gemak naar het noorden gericht is. Voor je komen 10 mensen te staan. Je moet gas geven tot een bepaalde lijn, en dan moet je zonder meer gas te geven zo veel mogelijk mensen raken. De auto kies je zelf.

Wat we nodig hebben:

In feite rijd je met je auto in een marker, dan word je auto met jouw erin geteleporteerd naar de plek, en in de goede positie gebracht.

De lijn maak ik als volgt: Ik neem de noordergraad (hoe ver hij naar het noorden moet) van de lijn, en de breedegraad van jouw auto, oftewel, het maakt niet uit hoeveel je slingert, als je maar geen gas meer geeft na die lijn.

we beginnen weer met het standaart begin van een missie:

:Start
$marker = create marker at X, Y, Z;; Je maakt een marker.
jump to missioncheck
:missioncheck
wait 50 ms;; dit is namelijk een loop
if 0
onmission == 0;; een dubbele is omdat het een check is of je missie status gelijk is aan 0
jf onmission
if 0
player_char near_point_in_car X, Y, Z;; nu moet je dus wel in een auto zijn !
jf missioncheck
jump startrace
:onmission
remove $marker
:still
wait 0 ms;; weer een loop
if 0
onmission == 1
jf start;; Dat is de eerste, waar de marker gemaakt word
jump still

Nu begint de missie:

:start
onmission = 1
fade
mission attemts += 1
freeze player;; Dit klopt niet, maar je moet inelkgevaal de speler bevriesen, om problemen te voorkomen
4@ = player_car
put verickle 4@ at X, Y, Z
Set 4@ z_angel to Z
Store 4@ coordinates to 0@ 1@ 2@
3@ = $line;; floatingpoint $line is dus de lijn die je moet passeren
Create character at ...;; Van deze lijn klopt niks, het gaat ff om het idee dat je poppetjes als bowlingkegels neerzet
create text "The Race" 5000 ms;; Dit moet dus zo'n missie text zijn
wait 5000 ms
unfreeze player
fade 1(back)
$killtotal = 0

- eigenlijk moet je nog wat missie uitleg toevoegen, maar dat doe ik pas als de missie werkt;)

:lol
wait 0 ms
if 0
NOT player_char near_point_in_car $car 3@ 1@ 2@;; Zie de vorige label, dit is 'DE lijn'
jf key
gosub check
jump lol

:check
wait 0 ms
if 1
NOT wasted/busted
NOT car $car destroyer
jf failed
return

:key
wait 0 ms
if 0
key pressed $gas_key;; Dus de knop waarbij je gas geeft
jf dead check
jump failed;; Je mag geen gas geven!

:deadcheck
wait 0 ms
gosub check
if 0
hier komt dus een regel die checkt of de bowlingkegels dood zijn
jf key
hier moet je dus voor elke dode kegel 1 optellen bij $kill total
jump key

Failed en completed heb ik geen zin in :puh:

Nou, ik hoop dat er misschien al iemand komt die mijn ideeen gaat verfijnen, anders doe ik het zelf over een week ;)

Bewerkt: door Flotje
Geplaatst:

heel mooi flotje heel mooi

die bowling code heeft geloof ik een paar kleine foutjes.

* weet niet of dit belangerijk is maar toch al je wordt gespawnd dan krijg je eerst de angel(draaiing) en dan pas de positie.

dat moet geloof ik anders om...

je zweef tread heb ik niet totaal doorgelezen maar dat zal wel goed zijn.

in iedergeval een heel erg leuk idee.

je mana streep vindt ik ook leuk bedacht.

knap werk flotje

ik geef ze 8ten

greets

PS: verbeter me als ik iets fout heb gezegt.

Geplaatst:

Je kan gelijk hebben, want ik geloof dat als je teleporteerd dat je hoek dan naar 0 gaat...

Waarschijnlijk zijn er meer fouten, de meeste threads zijn pas goed na een uur uittesten + bugs verwijderen... Deze zijn niet zo heel lang, dus zal wel korter duren, alleen je moet zo vaak je computer opnieuw opstarten...:bonk:

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