Jump to content

Recommended Posts

Geplaatst:

Hallo, ik ben pas begonnen met leren van SCM-modding. Ik heb de tutorial "Een echte missie (Rockstar style)" gelezen, en aangepast.

Ik heb geprobeerd meerdere targets toe te voegen, spawnen was geen probleem. Maar zodra ik een van de targets vermoorde was de missie al voltooid.

Dit heb ik proberen op te lossen door er dit van te maken:

:MISSION_2
thread 'TUT 2'
gosub @MISSION_2_MAIN
if wasted_or_busted
then
gosub @MISSION_2_FAIL
end
gosub @MISSION_2_CLEANUP
end_thread

//-------------------------------------
:MISSION_2_MAIN
//Load models
model.Load(#m4)
model.Load(#BMYDRUG)
model.Load(#WMYDRUG)
model.Load(#HMYDRUG)
model.Load(#BIKDRUG)
model.Load(#HECK1)
model.Load(#TURISMO)
model.load(#TEC9)
038B: load_requested_models
wait 0 ms
if and
model.Available(#m4)
model.Available(#HECK1)
model.Load(#BMYDRUG)
model.Load(#WMYDRUG)
model.Load(#HMYDRUG)
model.Load(#BIKDRUG)
model.Available(#TURISMO)
004D: jump_if_false @MISSION_2_MAIN


0674: set_car_model #TURISMO numberplate "-COFFEE-"
$car_num = car.Create(#TURISMO, 1716.183, 2774.52, 10.57681)
$victim0 = Actor.Create(CIVMALE, #BIKDRUG, 1726.654, 2773.975, 14.57351)
$victim1 = Actor.Create(CIVMALE, #BMYDRUG, 1711.231, 2771.608, 11.03594)
$victim2 = Actor.Create(CIVMALE, #WMYDRUG, 1721.05, 2778.415, 11.03594)
$victim3 = Actor.Create(CIVMALE, #BIKDRUG, 1720.846, 2773.042, 11.03594)
$victim4 = Actor.Create(CIVMALE, #HMYDRUG, 1716.569, 2777.375, 11.03594)
$innocent0 = Actor.Create(CIVMALE, #HECK1, 1720.272, 2775.302, 11.03594)
0187: $victim_marker = create_marker_above_actor $victim0
0187: $victim_marker1 = create_marker_above_actor $victim1
0187: $victim_marker2 = create_marker_above_actor $victim2
0187: $victim_marker3 = create_marker_above_actor $victim3
0187: $victim_marker4 = create_marker_above_actor $victim4

01B2: give_actor $PLAYER_ACTOR weapon 31 ammo 350 // Load the weapon model before using this
01B2: give_actor $victim0 weapon 372 ammo 100 // Load the weapon model before using this
01B2: give_actor $victim1 weapon 372 ammo 100 // Load the weapon model before using this
01B2: give_actor $victim2 weapon 372 ammo 100 // Load the weapon model before using this
01B2: give_actor $victim3 weapon 372 ammo 100 // Load the weapon model before using this
01B2: give_actor $victim4 weapon 372 ammo 100 // Load the weapon model before using this

repeat
wait 0 ms
if actor.Dead($innocent0)
then
jump @MISSION_2_FAIL
end
until actor.dead($victim0)
jump @MISSION_2_0 

:MISSION_2_0
wait 0 ms
actor.Dead($victim1)
jump @MISSION_2_1

:MISSION_2_1
wait 0 ms
actor.Dead($victim2)
jump @MISSION_2_2

:MISSION_2_2
wait 0 ms
actor.Dead($victim3)
jump @MISSION_2_3

:MISSION_2_3
wait 0 ms
actor.Dead($victim4)

:MISSION_2_PASSED
0394: play_music 1
$MISSIONS_PASSED += 1
Player.Money($PLAYER_CHAR) += 12134
01E3: show_text_1number_styled GXT 'M_PASS' number 12134 time 5000 style 1 // MISSION PASSED!~n~~w~$~1~
return

//-------------------------------------
:MISSION_2_FAIL
00BA: show_text_styled GXT 'M_FAIL' time 5000 style 1 // ~r~MISSION FAILED!
// Hier kun je alles kwijt wat moet gebeuren als de missie gefaald is. Bv. bepaalde dingen weer terugdraaien
0555: remove_weapon 31 from_actor $PLAYER_ACTOR
return

//-------------------------------------
:MISSION_2_CLEANUP
$ONMISSION = 0
// Hier komt alle code om dingen op te ruimen die voor de missie zijn geladen
// En om speciale settings voor deze missie terug te zetten naar normaal
Marker.Disable($victim_marker)
Marker.Disable($victim_marker1)
Marker.Disable($victim_marker2)
Marker.Disable($victim_marker3)
Marker.Disable($victim_marker4)
010D: set_player $PLAYER_CHAR wanted_level_to 0
model.Destroy(#WMYDRUG)
model.Destroy(#BMYDRUG)
model.Destroy(#HMYDRUG)
model.Destroy(#BIKDRUG)
model.Destroy(#HECK1)
mission_cleanup
return

Dit werkt beter, maar als ik "victim4" neerschiet is de missie direct voltooid.

Hoe kan ik dit het beste oplossen?

En de targets staan helemaal niks te doen, (hoe) kan ik de peds laten bewegen. En hoe kan ik ze terug laten schieten?

Geplaatst:

:MISSION_2_0
wait 0 ms
actor.Dead($victim1)
jump @MISSION_2_1

:MISSION_2_1
wait 0 ms
actor.Dead($victim2)
jump @MISSION_2_2

:MISSION_2_2
wait 0 ms
actor.Dead($victim3)
jump @MISSION_2_3

:MISSION_2_3
wait 0 ms
actor.Dead($victim4)

Dit werkt natuurlijk niet, want er staat alleen een conditie, en geen "if-jump_if_false"-structuur. Makkelijker is ook om alles in één lus te laten, zoals dit:

MISSION_2
wait 0 ms
if and
actor.Dead($victim0)
actor.Dead($victim1)
actor.Dead($victim2)
actor.Dead($victim3)
actor.Dead($victim4)
jf @MISSION_2

Wil je meerdere condities in één lus doen, schrijf dan "if and". Wil je dat maar één van die mannetjes afgeschoten wordt (in dit geval, dus maar één conditie van de lijst hoeft goed te zijn), schrijf dan "if or". Wil je maar één conditie gebruiken, schrijf dan alleen "if". :)

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