JGuntherS Geplaatst: 14 februari 2006 Rapport Share Geplaatst: 14 februari 2006 Mijn 2e tutorial: Het maken van een missie in SA. Inhoudsopgave: -- Introductie -- Een missie definiëren -- Een missie starten -- Het "frame" van een missie -- De plek in het script voor de missie -- Handige stukjes code Introductie: Ik raad je aan eerst een beetje ervaring op te doen. Je kunt deze tutorial volgen. IF's en threads zijn heel belangrijk voor het schrijven van een missie. Deze tekst, geschreven door PatrickW, geeft je ook een boel informatie. Het is dan wel voor VC, maar er zijn vele overeenkomsten met het SA-script-formaat. Een missie definieren: Een missie moet je aan het begin van het script definiëren. Je moet je missie bij dit stuk zetten: :JGS1 0001: wait 100 ms 03A4: name_thread 'PANC_1' 0005: $2000 = 40.30668 0005: $2001 = 20.28515 0005: $2002 = 14.26602 :JGS1_0 02A7: $2003 = create_icon_marker_and_sphere 34 at $2000 $2001 $2002 0004: $eiland_m1_on = 1 :JGS1_2 0001: wait 100 ms 00D6: if 0 0038: $ON_MISSION == 0 004D: jump_if_false ££JGS1_5 00D6: if 1 0038: $ON_MISSION == 0 0038: $eiland_m1_on == 0 004D: jump_if_false ££JGS1_3 02A7: $2003 = create_icon_marker_and_sphere 34 at $2000 $2001 $2002 0004: $eiland_m1_on = 1 :JGS1_3 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false ££JGS1_2 00D6: if 0 00FF: actor $PLAYER_ACTOR 0 ()near_point_on_foot $2000 $2001 $2002 radius 3.0 3.0 2.0 004D: jump_if_false ££JGS1_2 00D6: if 0 03EE: player $PLAYER_CHAR controllable 004D: jump_if_false ££JGS1_2 0164: disable_marker $2003 0004: $eiland_m1_on = 0 00BA: text_styled 'JGS_M1' 1500 ms 2 0050: gosub ££PANCCAM 0417: start_mission (missienummer) :JGS1_4 0001: wait 0 ms 00D6: if 0 0038: $m_135_tried == 1 004D: jump_if_false ££JGS1_4 0004: $m_135_tried = 0 00D6: if 0 0038: $m_135_done == 1 004D: jump_if_false ££JGS1_2 00BE: text_clear_all 03E6: remove_text_box 01E3: text_1number_styled 'M_PASS' 1000 5000 ms 1 0318: set_latest_mission_passed 'PANCA_1' 030C: set_mission_points += 1 0394: play_music 1 01BD: $184 = current_time_in_ms 0109: player $PLAYER_CHAR money += 1000 0110: clear_player $PLAYER_CHAR wanted_level 004E: end_thread :JGS1_5 00D6: if 0 0038: $eiland_m1_on == 1 004D: jump_if_false ££JGS1_2 0164: disable_marker $2003 0004: $eiland_m1_on = 0 0002: jump ££JGS1_2 :PANCCAM 0002: jump ££PANCCAM5 :PANCCAM1 0169: set_fade_color 0 0 0 016A: fade 0 () 500 ms :PANCCAM2 00D6: if 0 016B: fading 004D: jump_if_false ££PANCCAM3 0001: wait 0 ms 00BE: text_clear_all 03E6: remove_text_box 0002: jump ££PANCCAM2 :PANCCAM3 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false ££PANCCAM4 016A: fade 0 () 0 ms 02EB: restore_camera_with_jumpcut 0687: $PLAYER_ACTOR 016A: fade 0 () 0 ms :PANCCAM4 0051: return :PANCCAM5 00D6: if 0 0256: player $PLAYER_CHAR defined 004D: jump_if_false ££PANCCAM6 03E6: remove_text_box 01B4: set_player $PLAYER_CHAR frozen_state 0 (frozen) 0050: gosub ££PANCCAM1 :PANCCAM6 0051: return Kijkt en leert. Een goede oefening is trouwens om deze thread te begrijpen. Het "frame" van een missie: Het frame van een missie ziet er ongeveer zo uit: :M_BEGIN 0050: gosub £M_CODE 00D6: if 0 0112: wasted_or_busted 004D: jump_if_false £M_KLAAR 0050: gosub £M_FAIL :M_KLAAR 0050: gosub £M_OPSCHONEN 004E: end_thread :M_CODE ;; de echte code van de missie ;; als de missie faalt, moet je deze code gebruiken: 0002: jump £M_FAIL :M_PASS ;; als je mijn thread gebruikt moet je deze code hier neerzetten: 0004: $m_135_done = 1 0002: jump £M_OPSCHONEN :M_FAIL 00BA: text_styled 'M_FAIL' 5000 ms 1; MISSION FAILED! :M_OPSCHONEN ;; opschoondingen hier ;; als je mijn thread gebruikt moet je deze code hier neerzetten: 0004: $m_135_tried = 1 0051: return De plek in het script voor de missie: Een nieuwe missie zet je altijd onder laatse missie en boven het eerste externe script (in de normale SA is dat externe script AAA) In de normale SA: 01B4: set_player $PLAYER_CHAR frozen_state 1 (unfrozen)03BF: set_player $PLAYER_CHAR ignored_by_everyone_to 0 (false) 02A3: toggle_widescreen 0 (off) 0004: $ON_MISSION = 0 ;; integer values 01BD: $184 = current_time_in_ms 00D8: mission_cleanup 004E: end_thread 0051: return Hier komt je missie ;----------------------------------------------------- DEFINE EXTERNAL_SCRIPT_START AAA ; Originally: player using parachute ; The AAA script is created internally ;----------------------------------------------------- DEFINE EXTERNAL_SCRIPT_START AMMU ; Originally: npc actors with parachutes 0005: $9585 = 0.0 ;; floating-point values Handige stukjes code: Racecheckpoints: Racecheckpoints maak je met opcode 06D5 op deze manier: 06D5: $cpID = create_racing_checkpoint_at X Y Z X2 Y2 Z2 type 0 radius 3.0 X Y Z zijn de coordinaten van dit checkpoint, X2 Y2 Z2 zijn de coordinaten van het volgende checkpoint. Het type kan 0 t/m 4 zijn. Als het 0 is, dan wordt het een rood CP met een pijl naar het volgende CP. Bij 1 wordt het een rood finish-CP. 2 weet ik niet, en 3/4 zouden corona's moeten zijn, dat heb ik zelf niet gecontroleerd. Vervolgens moet er een stuk code komen dat controleert of de speler door het CP heen is gegaan. Meestal is dat zoiets als dit: :MissC2a 0001: wait 0 00D6: if 0 00EE: actor $PLAYER_ACTOR 0 ()near_point_in_car X Y radius 7.0 7.0 004D: jf ££MissC2a -- meer code -- Een raceCP vernietig je weer met 06D6 op deze manier: 06D6: destroy_racing_checkpoint $cpID OPROEP: heeft iemand nog stukjes code die in dit rubriekje passen? Voor troubleshooting kun je onderaan in de tutorial die helemaal bovenaan in deze post genoemd wordt kijken. Deze tutorial is nog onder constructie, ik ga hem nog uitbreiden. Als je nog suggesties/andere dingen hebt, kun je die hier posten. Veel plezier Reageren Link to comment Delen op andere websites More sharing options...
D@V!D Geplaatst: 15 februari 2006 Rapport Share Geplaatst: 15 februari 2006 Goede tutorial, nog niet helemaal compleet maar dat had je al gezegd ik had toch even een vraag... 0186: $61 = create_marker_above_car $60 wat betekend de $60? En hoe stel je deze code in? Reageren Link to comment Delen op andere websites More sharing options...
JGuntherS Geplaatst: 15 februari 2006 Auteur Rapport Share Geplaatst: 15 februari 2006 $60 is de variabele (om precies te zijn, een handle-variabele) van de auto waarboven een marker/pijl moet worden geplaatst. Dat moet een auto zijn die gemaakt is met de opcode 00A5. Het mag GEEN geparkeerde auto zijn die gemaakt wordt met 014B/014C! Reageren Link to comment Delen op andere websites More sharing options...
pimh Geplaatst: 15 februari 2006 Rapport Share Geplaatst: 15 februari 2006 Vraagje: hoe maak ik een auto voor die marker met de 00A5 opcode? Reageren Link to comment Delen op andere websites More sharing options...
JGuntherS Geplaatst: 15 februari 2006 Auteur Rapport Share Geplaatst: 15 februari 2006 Antwoordje : 00A5: $AUTO = create_car #MODELID at X Y Z. Die coördinaten zijn drijvende-komma (floating-point) getallen, bijvoorbeeld 3.0 of 678.9. Reageren Link to comment Delen op andere websites More sharing options...
Blastov Geplaatst: 15 februari 2006 Rapport Share Geplaatst: 15 februari 2006 Goede tutorial, ik hoop dat die snel af is Reageren Link to comment Delen op andere websites More sharing options...
pimh Geplaatst: 15 februari 2006 Rapport Share Geplaatst: 15 februari 2006 Bedankt Het werkt zeker alleen als het midden in een missie script staat, maar dat is erg logisch Reageren Link to comment Delen op andere websites More sharing options...
D@V!D Geplaatst: 16 februari 2006 Rapport Share Geplaatst: 16 februari 2006 het gaat al goed met mijn missie ik ben toch nog even een vraagje: hoe zet je tekst/uitleg van je missie bij je missie? v.b.--> rechtsonderin beeld zie je bij het begin van een missie eerst Gele letters en daarna uitleg in witte letters onderin beeld. mijn vraag: hoe krijg je die gele en witte letters? Reageren Link to comment Delen op andere websites More sharing options...
JGuntherS Geplaatst: 16 februari 2006 Auteur Rapport Share Geplaatst: 16 februari 2006 (bewerkt) Er zijn bepaalde opcodes voor tekst, en ik moet eerlijk bekennen, ik ken ze ook niet allemaal . Een goede plek om te zoeken is op deze website. De gele letters kan ik je al geven: 00BA: text_styled 'GXTENTRY' 1500 ms 2. Op de plaats van GXTENTRY moet je de naam van het stukje tekst uit een GXT-bestand zetten. Bewerkt: 17 februari 2006 door JGuntherS Reageren Link to comment Delen op andere websites More sharing options...
JGuntherS Geplaatst: 3 maart 2006 Auteur Rapport Share Geplaatst: 3 maart 2006 * BUMP * Heeft iemand nog ideeen/dingen die ik in deze tut moet zetten? Ik kan zelf niet zoveel meer bedenken. Reageren Link to comment Delen op andere websites More sharing options...
Flame^ Geplaatst: 11 maart 2006 Rapport Share Geplaatst: 11 maart 2006 * BUMP *Heeft iemand nog ideeen/dingen die ik in deze tut moet zetten? Ik kan zelf niet zoveel meer bedenken. Misschien kan je wat codes voor CP's etc laten zien, ikzelf vind deze tutorial er al erg aardig uitzien en wat al wat meer van SCM dan voorheen . Reageren Link to comment Delen op andere websites More sharing options...
JGuntherS Geplaatst: 11 maart 2006 Auteur Rapport Share Geplaatst: 11 maart 2006 (bewerkt) Goed idee, ik denk dat ik gewoon een heel stuk met handige stukjes code maak . Heeft iemand daar nog ideeën voor? EDIT: Het racecheckpoint deel is toegevoegd . Bewerkt: 12 maart 2006 door JGuntherS Reageren Link to comment Delen op andere websites More sharing options...
GTACLAN Geplaatst: 5 april 2006 Rapport Share Geplaatst: 5 april 2006 Ik snap er geen zak van Reageren Link to comment Delen op andere websites More sharing options...
Blastov Geplaatst: 5 april 2006 Rapport Share Geplaatst: 5 april 2006 Waarom post je dan ? Daar hebben wij toch niks aan ? Zeg dan wat je niet snapt. Reageren Link to comment Delen op andere websites More sharing options...
JGuntherS Geplaatst: 5 april 2006 Auteur Rapport Share Geplaatst: 5 april 2006 (bewerkt) Ik snap er geen zak van Wat snap je precies niet? Dan kunnen we je verder helpen . Blaster was me voor . Bewerkt: 5 april 2006 door JGuntherS 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.