Jump to content

Een ''New Game missie''


Recommended Posts

Geplaatst:

Hallo iedereen,

Ik ben momenteel bezig met een missie voor mijn TC mod Tiberium Return.

Ik heb nu een lange code samen met Beagle gemaakt maar jammer genoeg crasht hij, het gaat om een missie dat gelijk start wanneer je een new game start.

Dit is de volledige main.scm van de mod, onderaan zie je het ''missie'':

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007
DEFINE OBJECTS 1
DEFINE OBJECT SANNY BUILDER 3.04	  

DEFINE MISSIONS 0

DEFINE EXTERNAL_SCRIPTS 0 // Use -1 in order not to compile AAA script

DEFINE UNKNOWN_EMPTY_SEGMENT 0

DEFINE UNKNOWN_THREADS_MEMORY 0

{$VERSION 3.1.0027}

//-------------MAIN---------------
thread 'MAIN' 
fade 0 0 
042C: set_total_missions_to 0 
030D: set_max_progress 0 
01F0: set_max_wanted_level_to 6 
set_wb_check_to 0 
00C0: set_current_time_hours_to 10 minutes_to 0 
$7 = -138.1155 
$6 = -136.909 
$5 = 10.06569 
04E4: unknown_refresh_game_renderer_at $7 $6 
Camera.SetAtPos($7, $6, $5)
062A: change_float_stat 165 to 999.0 
062A: change_float_stat 23 to 999.0 
062A: change_float_stat 21 to 0.0 
062A: change_float_stat 163 to 999.0 
062A: change_float_stat 160 to 999.0 
062A: change_float_stat 229 to 999.0 
062A: change_float_stat 223 to 999.0 
062A: change_float_stat 230 to 999.0 
0629: change_integer_stat 181 to 4 
0629: change_integer_stat 68 to 0 
$PLAYER_CHAR = Player.Create(#NULL, $7, $6, $5)
07AF: $PLAYER_GROUP = player $PLAYER_CHAR group 
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Camera.SetBehindPlayer
Actor.Angle($PLAYER_ACTOR) = 190.0
set_weather 1 
Player.SetClothes($PLAYER_CHAR, "BBALLJACKRSTAR", "BBJACK", Torso)
Player.SetClothes($PLAYER_CHAR, "JEANSDENIM", "JEANS", Legs)
Player.SetClothes($PLAYER_CHAR, "SNEAKERBINCBLK", "SNEAKER", Shoes)
Player.SetClothes($PLAYER_CHAR, "PLAYER_FACE", "HEAD", Head)
Player.Build($PLAYER_CHAR)
select_interior 0 
Player.CanMove($PLAYER_CHAR) = True
01B7: release_weather 
016C: restart_if_wasted_at $7 $6 $5 angle 0.0 town_number 0 
032B: $MYWEAP = create_weapon_pickup #MP5LNG group 15 ammo 350 at -132.5553 -135.6695 10.06114 
fade 1 1000 
wait 100 
03E6: remove_text_box 
create_thread @MAIN_439 

:MAIN_427
wait 2500 
jump @MAIN_427 

:MAIN_439
00BA: show_text_styled GXT 'HANS' time 1000 style 2  // Test name
Model.Load(#fbi)
038B: load_requested_models 

:MAIN_461
if 
  not Model.Available(#fbi)
jf @MAIN_487 
wait 0 
jump @MAIN_461 

:MAIN_487
10@ = Actor.Create(COP, #fbi, -130.8409, -132.7771, 12.0)
Model.Destroy(#fbi)

Ik krijg dus onder het laden een crash, kan iemand me hiermee helpen?

Alvast bedankt, RD :cya:

Geplaatst:

Hier moet een wait in.

:MAIN_461

PPPPPPPPPPPPPP <<< Hier de wait.

if

not Model.Available(#fbi)

jf @MAIN_487

wait 0 PPPPPPPPPPPPPP <<<Deze wait kan weg.

jump @MAIN_461

Geplaatst:
Hier moet een wait in.

:MAIN_461

PPPPPPPPPPPPPP <<< Hier de wait.

if

not Model.Available(#fbi)

jf @MAIN_487

wait 0 PPPPPPPPPPPPPP <<<Deze wait kan weg.

jump @MAIN_461

Bedankt voor je reactie Bierbuikje, maar het heeft geen effect.

Geplaatst:
De 'weather' en 'select_interior' code moeten zijn:

01B6: set_weather 1

04BB: select_interior 0

Hier kan het niet aan liggen, want als ik het gedeelte vanaf create_thread @MAIN_439 tot het eind verwijder werkt alles goed.

Grtz RD

Geplaatst:
Hier moet een wait in.

:MAIN_461

PPPPPPPPPPPPPP <<< Hier de wait.

if

not Model.Available(#fbi)

jf @MAIN_487

wait 0 PPPPPPPPPPPPPP <<<Deze wait kan weg.

jump @MAIN_461

Wat een onzin... Er moet in de lus minstens 1 wait zijn. Aangezien de lus ":MAIN_461 jump @MAIN_461" is, moet tussen die twee minstens 1 wait staan. En die staat er. Het maakt echt niet uit waar die staat. Het is goed als hij staat zoals Revolution-Designer het deed.

De 'weather' en 'select_interior' code moeten zijn:

01B6: set_weather 1

04BB: select_interior 0

Ook dit is onzin, want dit is gewoon de verkorte schrijfwijze van sanny builder.

De echte fout is waarschijnlijk erg simpel: je hebt aan het einde geen "end_thread" geplaatst.

Geplaatst:
Hier moet een wait in.

:MAIN_461

PPPPPPPPPPPPPP <<< Hier de wait.

if

not Model.Available(#fbi)

jf @MAIN_487

wait 0 PPPPPPPPPPPPPP <<<Deze wait kan weg.

jump @MAIN_461

Wat een onzin... Er moet in de lus minstens 1 wait zijn. Aangezien de lus ":MAIN_461 jump @MAIN_461" is, moet tussen die twee minstens 1 wait staan. En die staat er. Het maakt echt niet uit waar die staat. Het is goed als hij staat zoals Revolution-Designer het deed.

De 'weather' en 'select_interior' code moeten zijn:

01B6: set_weather 1

04BB: select_interior 0

Ook dit is onzin, want dit is gewoon de verkorte schrijfwijze van sanny builder.

De echte fout is waarschijnlijk erg simpel: je hebt aan het einde geen "end_thread" geplaatst.

Heel erg bedankt Dutchy!

Alles werkt nu vlekkeloos!

Geplaatst:

Sorry voor de dubbelpost, maar ik heb nog een vraagje/probleempje.

Dit is nu de hele code van het missie:

create_thread @MAIN_439

:MAIN_427
wait 2500 
jump @MAIN_427 

:MAIN_439
00BA: show_text_styled GXT 'HANS' time 1000 style 2  // Test name
Model.Load(#FBI)
Model.Load(#PATRIOT)
038B: load_requested_models 

:MAIN_462
wait 0 
if and
Model.Available(#FBI)
Model.Available(#PATRIOT)
jf @MAIN_462 

//Patriot
0674: set_car_model #PATRIOT numberplate "TIBER" 
00A5: $patriot = create_car #PATRIOT at -108.4109 -99.65368 11.95162 
Car.Angle($patriot)= 270.0
0224: set_car $patriot health_to 250

// Actors
1@ = Actor.Create(Cop, #FBI, -107.1102, -101.8393, 11.951)
2@ = Actor.Create(Cop, #FBI, -111.4697, -104.664, 11.951)
3@ = Actor.Create(Cop, #FBI, -115.0584, -101.7463, 11.951)
4@ = Actor.Create(Cop, #FBI, -112.2585, -97.15633, 11.951)

//Destroyen
Model.Destroy(#PATRIOT)
Model.Destroy(#FBI)

0187: $marker1 = create_marker_above_actor 1@ 
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
0187: $marker2 = create_marker_above_actor 2@ 
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
0187: $marker3 = create_marker_above_actor 3@ 
05E2: AS_actor 3@ kill_actor $PLAYER_ACTOR
0187: $marker4 = create_marker_above_actor 4@ 
05E2: AS_actor 4@ kill_actor $PLAYER_ACTOR

:checkifdood
wait 0
if and
actor.Dead(1@)
actor.Dead(2@)
actor.Dead(3@)
actor.Dead(4@)
jf @checkifdood
Marker.Disable($marker1)
Marker.Disable($marker2)
Marker.Disable($marker3)
Marker.Disable($marker4)

0186: $marker5 = create_marker_above_car $patriot
0165: set_marker $marker5 color_to 2

:checkifincar
wait 0
if 
Actor.InCar($PLAYER_ACTOR, $patriot)
jf @checkifincar
Marker.Disable($marker5)

$coordinaat = Marker.CreateIconAndSphere(0, -32.57082, -46.97571, 11.95944)
00EE: actor $PLAYER_ACTOR 0 near_point -32.57082 -46.97571 radius 4.0 4.0

0394: play_music 1
01E3: show_text_1number_styled GXT 'M_PASS' number 50 time 5000 style 1 // MISSION PASSED!

end_thread

Maar wanneer ik in de auto stap, dus de Patriot, dan is het gelijk mission passed.

Maar ik wil naar de marker rijden, en wanneer ik in de marker sta het missie halen.

Grtz RD :cya:

Geplaatst:

Je moet wel een if enzo plaatsen :7

 :checkifincar
wait 0
if 
Actor.InCar($PLAYER_ACTOR, $patriot)
jf @checkifincar
Marker.Disable($marker5)

$coordinaat = Marker.CreateIconAndSphere(0, -32.57082, -46.97571, 11.95944)
00EE: actor $PLAYER_ACTOR 0 near_point -32.57082 -46.97571 radius 4.0 4.0

0394: play_music 1
01E3: show_text_1number_styled GXT 'M_PASS' number 50 time 5000 style 1 // MISSION PASSED!

Dus dan word het (bijvoorbeeld) dit:

:checkifincar
wait 0
if 
Actor.InCar($PLAYER_ACTOR, $patriot)
jf @checkifincar
Marker.Disable($marker5)
$coordinaat = Marker.CreateIconAndSphere(0, -32.57082, -46.97571, 11.95944)

:Checknearpoint
wait 0
if  
00EE: actor $PLAYER_ACTOR 0 near_point -32.57082 -46.97571 radius 4.0 4.0
else_jump @Checknearpoint
jump @Missionpassed

:Missionpassed
0394: play_music 1
01E3: show_text_1number_styled GXT 'M_PASS' number 50 time 5000 style 1 // MISSION PASSED!

Geplaatst: (bewerkt)
$coordinaat = Marker.CreateIconAndSphere(0, -32.57082, -46.97571, 11.95944)

00EE: actor $PLAYER_ACTOR 0 near_point -32.57082 -46.97571 radius 4.0 4.0

0394: play_music 1

01E3: show_text_1number_styled GXT 'M_PASS' number 50 time 5000 style 1 // MISSION PASSED!

end_thread[/code]

Maar wanneer ik in de auto stap, dus de Patriot, dan is het gelijk mission passed.

Maar ik wil naar de marker rijden, en wanneer ik in de marker sta het missie halen.

Grtz RD :cya:

Ik raad je aan om in plaats van dit te doen: (los te zetten)

00EE: actor $PLAYER_ACTOR 0 near_point -32.57082 -46.97571 radius 4.0 4.0

Gewoon dit te doen:

:if_in_point

wait 0

if

00EE: actor $PLAYER_ACTOR 0 near_point -32.57082 -46.97571 radius 4.0 4.0

jf @if_in_point

Dan wordt namelijk gecontroleerd of hij op dat punt is. Bij de eerste doet dat hij dat niet. Dan vraagt hij zegmaar op of je daar bent, en zo niet dan pech en gaat hij door.

Edit, BC7 was me net voor. :puh:

Bewerkt: door Bierbuikje
Geplaatst:

Bedankt, het werkt!

Ik zal binnenkort waarschijnlijk een filmpje posten over het missie. :)

Grtz RD

Geplaatst:

Ik weet niet of je het al wist, maar met een eigen Mpack kun je je bijvoorbeeld als Soldaat op je eiland spawnen etc. En dan kun je al beginnen met missies enzo ;)

Geplaatst:

Dan heb ik nog een vraagje, ik heb daarnet de tutorial van Dutchy gelezen over spheres, markers en icons.

Nu heb ik dus missie 1 af, maar wil ik graag missie 2 starten doordat de player in een sphere gaat staan. (zo'n rood rond ding)

Nu heb ik mijn missie @MAIN_494 of :MAIN_494 genoemd, bovenin heb ik dit neergezet bij ''DEFINE MISSIONS'':

DEFINE MISSIONS 1
DEFINE MISSION 0 AT @MAIN_494

Onderin heb ik een sphere aangemaakt, dus onder mijn eerste missie:

...MAIN_1067 
Marker.Disable($MARKER5)
Marker.Disable($MARKER6)
Marker.Disable($MARKER7)

0394: play_music 1 
01E3: show_text_1number_styled GXT 'M_PASS' number 500 time 5000 style 1  // MISSION PASSED!~n~~w~$~1~
end_thread 

03BC: 10@ = create_sphere_at -28.70982 -52.80603 11.85 radius 2.0

In de tutorial stond dat ik dit moest toevoegen:

00EC:   actor $PLAYER_ACTOR 0 near_point $c1 $c2 radius 1.0 1.0

Maar hierdoor start mijn missie nog niet, ook word de sphere geen eens ''gespawnt'' in-game dus zie ik geen sphere. Weet iemand hoe ik mijn missie kan starten door in een zichtbare sphere te gaan staan? :?

Grtz RD :cya:

Geplaatst: (bewerkt)

Doe het als volgt:

03BC: 149@ = create_sphere_at $X $Y $Z radius 1.0

:TEST
wait 0
if
00ED:   actor $PLAYER_ACTOR 0 near_point $X $Y $Z radius 1.0 1.0 on_foot
jf @TEST
Voila nu start je je nieuwe missie

PS: Dat gebeurt, en ik heb hem momenteel op msn dus whatever ;)

Bewerkt: door .:TOM:.

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