Jump to content

The San Andreas Stories ! help topic


Recommended Posts

Geplaatst:

Hier is m'n probleem

Alles werkt :puh: das dus goed :puh:

Maar ik spawn alles 2 keer dus ipv 4 auto's 8, 8 ballas 16, ...

Iemand die kan helpen is vriendelijk bedankt :puh:

DEFINE OBJECTS 0
DEFINE MISSIONS 0
DEFINE EXTERNAL_SCRIPTS -1 // Use -1 to not write AAA script
DEFINE UNKNOWN_EMPTY_SEGMENT 0
DEFINE UNKNOWN_THREADS_MEMORY 0

// --------------------
// THE STRIPPED MAIN THREAD
// contains initial info
// --------------------
thread 'MAIN'
var
$PLAYER_CHAR: Player
$PLAYER_ACTOR: Actor
$ON_MISSION: Integer
end // var
01F0: set_max_wanted_level_to 6
042C: set_total_missions_to 1
030D: set_total_mission_points_to 1
set_wb_check_to 0
00C0: set_current_time 8 0
04E4: unknown_refresh_game_renderer_at 2488.5601 -1666.84
Camera.SetAtPos(2488.5601, -1666.84, 13.38)
$PLAYER_CHAR = Player.Create(#NULL, 2488.5601, -1666.84, 13.38)
$PLAYER_ACTOR = Actor.EmulateFromPlayer($PLAYER_CHAR)
Camera.SetBehindPlayer
set_weather 0
wait 0
0180: set_on_mission_flag_to $ON_MISSION
$PLAYER_CHAR.SetClothes("PLAYER_FACE", "HEAD", Head)
$PLAYER_CHAR.SetClothes("JEANSDENIM", "JEANS", Legs)
$PLAYER_CHAR.SetClothes("SNEAKERBINCBLK", "SNEAKER", Shoes)
$PLAYER_CHAR.SetClothes("VEST", "VEST", Torso)
$PLAYER_CHAR.Build
$PLAYER_CHAR.CanMove = True
fade 1 (out) 0
select_interior 0
0629: change_stat 181 (islands unlocked) to 4
016C: restart_if_wasted at 2027.77 -1420.52 15.99 angle 137.0 unknown 0
016D: restart_if_busted at 1550.68 -1675.49 14.51 angle 90.0 unknown 0
create_thread @MODEL_1

:MODEL_1
Model.Load(#GREENWOO)
Model.Load(#SLAMVAN)
Model.Load(#BLISTAC)
Model.Load(#NEBULA)
Model.Load(#BALLAS1)
Model.Load(#BALLAS2)
Model.Load(#BALLAS3)
Model.Load(#M4)
Model.Load(#MICRO_UZI)
Model.Load(#AK47)
Model.Load(#MP5LNG)
Model.Load(#TEARGAS)
Model.Load(#DESERT_EAGLE)
Model.Load(#SHOTGSPA)
Model.Load(#TEC9)
038B: load_requested_models

:MODEL_2
if or
not Model.Available(#GREENWOO)
not Model.Available(#SLAMVAN)
not Model.Available(#BLISTAC)
not Model.Available(#NEBULA)
not Model.Available(#BALLAS1)
else_jump @MODEL_2_1
wait 0
jump @MODEL_2

:MODEL_2_1
if or
not Model.Available(#BALLAS2)
not Model.Available(#BALLAS3)
not Model.Available(#M4)
not Model.Available(#MICRO_UZI)
not Model.Available(#AK47)
else_jump @MODEL_2_2
wait 0
jump @MODEL_2_1

:MODEL_2_2
not Model.Available(#MP5LNG)
not Model.Available(#TEARGAS)
not Model.Available(#DESERT_EAGLE)
not Model.Available(#SHOTGSPA)
not Model.Available(#TEC9)
else_jump @MODEL_3
wait 0
jump @MODEL_2_2

:MODEL_3
01E8: create_forbidden_for_vehicles_cube 1800.12 -1000.12 10.1 2000.34 -1200.64 50.4
1@ = Actor.Create(#BALLAS1, 7, 1959.677, -1133.989, 25.78574)
2@ = Actor.Create(#BALLAS3, 7, 1959.454, -1136.415, 25.78247)
3@ = Actor.Create(#BALLAS2, 7, 1959.613, -1134.804, 25.78532)
4@ = Actor.Create(#BALLAS3, 7, 1959.316, -1141.196, 25.96783)
5@ = Actor.Create(#BALLAS1, 7, 1959.316, -1141.196, 25.96783)
6@ = Actor.Create(#BALLAS2, 7, 1960.051, -1129.927, 25.9688)
7@ = Actor.Create(#BALLAS3, 7, 1959.496, -1128.334, 25.95642)
8@ = Car.Create(#GREENWOO, 1977.446, -1138.705, 25.58647)
Car.Health(8@) = 20000
9@ = Car.Create(#SLAMVAN, 1977.403, -1133.005, 25.58266)
Car.Health(9@) = 20000
10@ = Car.Create(#BLISTAC, 1961.219, -1132.361, 25.51761)
Car.Health(10@) = 20000
11@ = Car.Create(#NEBULA, 1961.07, -1137.721, 25.63652)
Car.Health(11@) = 20000
Actor.WeaponAccuracy(1@) = 95
Actor.WeaponAccuracy(2@) = 95
Actor.WeaponAccuracy(3@) = 95
Actor.WeaponAccuracy(4@) = 95
Actor.WeaponAccuracy(5@) = 95
Actor.WeaponAccuracy(6@) = 95
Actor.WeaponAccuracy(7@) = 95
04EB: AS_actor 3@ crouch 1
04EB: AS_actor 4@ crouch 1
04EB: AS_actor 6@ crouch 1
Actor.Health(1@) = 1900
Actor.Health(2@) = 2100
Actor.Health(3@) = 1500
Actor.Health(4@) = 1500
Actor.Health(5@) = 1200
Actor.Health(6@) = 1800
Actor.Health(7@) = 2000
01B2: give_actor 1@ weapon 28 ammo 40000 // Load the weapon model before using this
01B2: give_actor 2@ weapon 30 ammo 40000 // Load the weapon model before using this
01B2: give_actor 3@ weapon 29 ammo 40000 // Load the weapon model before using this
01B2: give_actor 4@ weapon 30 ammo 40000 // Load the weapon model before using this
01B2: give_actor 5@ weapon 28 ammo 40000 // Load the weapon model before using this
01B2: give_actor 6@ weapon 29 ammo 40000 // Load the weapon model before using this
01B2: give_actor 7@ weapon 30 ammo 40000 // Load the weapon model before using this
0332: set_actor 2@ bleeding_to 1
0332: set_actor 5@ bleeding_to 1
0332: set_actor 7@ bleeding_to 1
05E2: AS_actor 1@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 2@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 3@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 4@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 5@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 6@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 7@ kill_actor $PLAYER_ACTOR
0350: set_actor 1@ hold_position 1 when_attacked
0350: set_actor 2@ hold_position 1 when_attacked
0350: set_actor 3@ hold_position 1 when_attacked
0350: set_actor 4@ hold_position 1 when_attacked
0350: set_actor 5@ hold_position 1 when_attacked
0350: set_actor 6@ hold_position 1 when_attacked
0350: set_actor 7@ hold_position 1 when_attacked
0446: set_actor 1@ immune_to_headshots 0
0446: set_actor 2@ immune_to_headshots 0
0446: set_actor 3@ immune_to_headshots 0
0446: set_actor 4@ immune_to_headshots 0
0446: set_actor 5@ immune_to_headshots 0
0446: set_actor 6@ immune_to_headshots 0
0446: set_actor 7@ immune_to_headshots 0
01B2: give_actor $PLAYER_ACTOR weapon 17 ammo 10
01B2: give_actor $PLAYER_ACTOR weapon 24 ammo 200000
01B2: give_actor $PLAYER_ACTOR weapon 27 ammo 200000
01B2: give_actor $PLAYER_ACTOR weapon 32 ammo 200000
01B2: give_actor $PLAYER_ACTOR weapon 31 ammo 200000
01B9: set_actor $PLAYER_ACTOR armed_weapon_to 32

:actor_dead
wait 0 ms
if and
0118: actor 1@ dead
0118: actor 2@ dead
0118: actor 3@ dead
0118: actor 4@ dead
0118: actor 5@ dead
0118: actor 6@ dead
0118: actor 7@ dead
else_jump @actor_dead

13@ = Actor.Create(#BALLAS3, 7, 1966.64, -1053.611, 24.26657)
14@ = Actor.Create(#BALLAS2, 7, 1968.537, -1055.761, 24.48814)
15@ = Actor.Create(#BALLAS3, 7, 1967.435, -1059.578, 24.51511)
16@ = Actor.Create(#BALLAS1, 7, 1967.433, -1061.558, 24.67076)
01B2: give_actor 13@ weapon 30 ammo 40000 // Load the weapon model before using this
01B2: give_actor 14@ weapon 29 ammo 40000 // Load the weapon model before using this
01B2: give_actor 15@ weapon 30 ammo 40000 // Load the weapon model before using this
01B2: give_actor 16@ weapon 28 ammo 40000 // Load the weapon model before using this
Actor.Health(13@) = 1000
Actor.Health(14@) = 800
Actor.Health(15@) = 950
Actor.Health(16@) = 850
05E2: AS_actor 13@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 14@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 15@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 16@ kill_actor $PLAYER_ACTOR
0446: set_actor 13@ immune_to_headshots 1
0446: set_actor 14@ immune_to_headshots 1
0446: set_actor 15@ immune_to_headshots 1
0446: set_actor 16@ immune_to_headshots 1
wait 20000 ms
12@ = Actor.Create(#BALLAS1, 7, 1965.803, -1056.212, 24.43505)
01B2: give_actor 12@ weapon 28 ammo 40000 // Load the weapon model before using this
Actor.Health(12@) = 800
05E2: AS_actor 12@ kill_actor $PLAYER_ACTOR
0446: set_actor 12@ immune_to_headshots 1

:ACTOR_DEAD_2
wait 0 ms
if and
0118: actor 13@ dead
0118: actor 14@ dead
0118: actor 15@ dead
0118: actor 16@ dead
else_jump @ACTOR_DEAD_2

0394: play_music 1
01E3: show_text_1number_styled GXT 'M_PASS' number 10000 time 5000 style 1 // MISSION PASSED!~n~~w~$~1~
Player.Money($PLAYER_CHAR) += 25000
Model.Destroy(#GREENWOO)
Model.Destroy(#SLAMVAN)
Model.Destroy(#BLISTAC)
Model.Destroy(#NEBULA)
Model.Destroy(#BALLAS1)
Model.Destroy(#BALLAS2)
Model.Destroy(#BALLAS3)
Model.Destroy(#TEC9)
Model.Destroy(#M4)
Model.Destroy(#MICRO_UZI)
Model.Destroy(#AK47)
Model.Destroy(#MP5LNG)
Model.Destroy(#DESERT_EAGLE)
Model.Destroy(#SHOTGSPA)
Model.Destroy(#TEARGAS)
end_thread

Tom :cya:

Geplaatst:

Een fout die ik zo snel even kan zien is in ieder geval dit:

:MODEL_2_2
not Model.Available(#MP5LNG)
not Model.Available(#TEARGAS)
not Model.Available(#DESERT_EAGLE)
not Model.Available(#SHOTGSPA)
not Model.Available(#TEC9)
else_jump @MODEL_3
wait 0
jump @MODEL_2_2

Waar is de "if or" gebleven? ;) Dat alles spawnt, kan, maar het is erg instabiel op deze manier. Voor de rest heb ik eigenlijk nog niet serieus gekeken (eerst dit probleempje maar eens oplossen). Toen ik de code probeerde, sloeg hij vast (dat kan dankzij het bovenstaande code), dus dat allereerst oplossen is een goed begin :Y

Edit: Toch de fout gevonden, en wel in de volgende code:

create_thread @MODEL_1

:MODEL_1

Je kunt een voorstelling maken van een mannetje, dat door die code loopt. Op het moment dat hij "create_thread" tegenkomt, verdubbeld hij zich. Dus wat er in feiten hierboven gebeurd is: de main thread, create thread => aanmaken van een tweede mannetje, en ze lopen beiden door. De ene wordt aangemaakt in :MODEL_1, de ander gaat door vanaf de create_thread. Met andere woorden, ze komen tegelijk aan in :MODEL_1 (die komt er immers gelijk na). Daarom lopen er dus 2 mannetjes door dezelfde label, en krijg je dus alles dubbel...

Dit is eenvoudig op te lossen door na de thread een loop te maken, waardoor één mannetje daarin blijft steken, en het andere mannetje verder kan in de andere thread met als gevolg dat er maar één mannetje door die code komt. Dus in codevorm:

create_thread @MODEL_1

:MAIN_LOOP
wait 5000 ms
jump @MAIN_LOOP

:MODEL_1

Succes verder :)

Geplaatst:

hey,

Ik had een vraagje. ik heb dus 6 Grove Street members gespawnt, en 4 ballas gang members. ze hebben ook allemaal een marker boven hun hoofd, de ballas een rode en de Grove's een blauwe. nu wil ik als er 1 actor dood gaat dat die marker dan gelijk verdwijnt.

nu blijven de pijlen ook nog boven hun hoofd als ze al dood zijn, en ze gaan dan pas weg als alle mede gang leden ook dood zijn, dus als alle ballas dood zijn gaan alle rode pijlen weg en als alle grove's dood zijn gaan alle blauwe weg.

Hoe zorg ik ervoor dat gelijk als er een actor dood gaat de marker ook verdwijnt.

Alvast heel erg bedankt!

Greetz,

Black Force.

Geplaatst:
hey,

Ik had een vraagje. ik heb dus 6 Grove Street members gespawnt, en 4 ballas gang members. ze hebben ook allemaal een marker boven hun hoofd, de ballas een rode en de Grove's een blauwe. nu wil ik als er 1 actor dood gaat dat die marker dan gelijk verdwijnt.

nu blijven de pijlen ook nog boven hun hoofd als ze al dood zijn, en ze gaan dan pas weg als alle mede gang leden ook dood zijn, dus als alle ballas dood zijn gaan alle rode pijlen weg en als alle grove's dood zijn gaan alle blauwe weg.

Hoe zorg ik ervoor dat gelijk als er een actor dood gaat de marker ook verdwijnt.

Alvast heel erg bedankt!

Greetz,

Black Force.

Je hebt dan waarschijnlijk ergens een lus, waarin je wacht tot alle actors dood zijn, en na aflkoop van die lus verwijder je de markers.

Voor het gedrag dat je graag wilt, moet je binnen die lus, telkens alle actors individueel aflopen, kijken of ze dood zijn, en in dat geval de marker verwijderen.

Geplaatst:

oke ik snap het, maar als ik het dan zo doe, is het nog steeds fout, de markers verdwijnen nog steeds niet.

:INTROcheck1

wait 10

if

8@.Dead

jf @ INTROcheck1

jump @INTROmarkerdis1

:INTROmarkerdis1

9@.Disable

(9@ is in dit geval de marker die boven 8@ hangt).

weet iemand wat ik hier toch nog niet goed doe dan?

alvast heel erg bedankt!

Greetz,

Black Force

Geplaatst:

Dat is logisch... Stel eens voor wat de code in feiten zegt. Er spawnen een aantal mannetjes. Daarna, moet je ze afschieten. Je schiet er één af. Maar, dat wilt niet zeggen, dat degene die je afschiet, 8@ is. Dat kunnen makkelijk één van de andere actors zijn. Bijvoorbeeld: nummer 1 staat hieronder in de code (8@ dus). Nummer 2 schiet je af. Op dat moment, is de code dus nog in de lus aan het wachten tot je nummer 1 afgeschoten hebt. Daarna schiet je (bijvoorbeeld) nummer 1 af, en dan zal je zien dat de marker van nummer 1 verdwijnt, en waarschijnlijk ook gelijk de marker van nummer 2 (als je de code van nummer 2 gelijk erna zou zetten). Deze manier werkt alleen als je de volgorde weet waarin de actors dood gaan...

Geplaatst:

nee ik moest er eigelijk nog even bij vermelden dat ik die code voor elke actor heb staan. dus voor alle actors die gespawnt zijn, is ook zo'n code-tje. dus er staat 10x die code met de juiste var's erin.

Geplaatst:
nee ik moest er eigelijk nog even bij vermelden dat ik die code voor elke actor heb staan. dus voor alle actors die gespawnt zijn, is ook zo'n code-tje. dus er staat 10x die code met de juiste var's erin.

Heb je die 10 versies van de code dan allemaal in een eigen thread staan, dus 10 losse threads?

Of staan ze allemaal onder elkaar in dezelfde thread ?

Ik vermoed dat laatste, maar dan heb je dus precies wat dutchy3010 al zei:

Je blijft in het eerste stukje code hangen zolang de actor die daar in gechecked wordt nog leeft. En ondertussen kom je dus nooit bij een van die andere actors om te checken. je gaat pas naar de volgende actor als die eerste dood is.

Je hebt dus in feite 10 mini-lusjes gemaakt die achter elkaar worden uitgevoerd, maar wat je nodig hebt is 1 grote lus, waarin alle actors telkens allemaal worden gechecked.

Geplaatst:

en kun je daar dan een voorbeeldcode van geven, want ik zou echt niet weten hoe je met 1 code alle actors moet checken en dat dan de marker weggaat als er zo'n ballas of Grove dood is.

Greetz,

Black Force

Geplaatst:

$to_go = 0
repeat
 wait 0 ms

 if 8@ > 0
 then
if 0118: actor 8@ dead
then
  $to_go += 1
  8@ = 0
  marker.disable(9@)
end
 end

 if 10@ > 0
 then
if 0118: actor 10@ dead
then
  $to_go += 1
  10@ = 0
  marker.disable(11@)
end
 end

 if 12@ > 0
 then
if 0118: actor 12@ dead
then
  $to_go += 1
  12@ = 0
  marker.disable(13@)
end
 end

until $to_go == 3

Dit is voor 3 actors. Als je het niet snapt, moet je het maar zeggen en dan leggen we het uit. ;)

  • 2 weken later...
Geplaatst: (bewerkt)

Hey,

Ik zit weer met een probleem. ik heb nu 1 missie afgerond, nu wilde ik aan de tweede beginnen, en daar gebruik ik dus weer een nieuwe startthread voor, en die zet in gelijk onder de eerste. de startthread die ik gebruik is van JgunterS en dat is deze:

:StrtTh1 var	
$MarkerX: Float	
$MarkerY: Float	
$MarkerZ: Float	
$MarkerH: Marker	
$MarkerOn: Float	
$MissionRunning: Integer	
$MTried: Integer	
$MPassed: Integer 
end	
thread 'StrtTh'
$MarkerX = 2492.378
$MarkerY = -1667.843
$MarkerZ = 13.34375
:StrtTh1_0
$MarkerH.CreateIconAndSphere(34, $MarkerX, $MarkerY, $MarkerZ)
$MarkerOn = 1
:StrtTh1_2
wait 100
if   
$ON_MISSION == 0
jf @StrtTh1_5
if and   
$ON_MISSION == 0   
$MarkerOn == 0
jf @StrtTh1_3
$MarkerH.CreateIconAndSphere(34, $MarkerX, $MarkerY, $MarkerZ)
$MarkerOn = 1
:StrtTh1_3
wait 0
if   
$PLAYER_CHAR.Defined
jf @StrtTh1_3
if  
00FF: actor $PLAYER_ACTOR 0 ()near_point_on_foot $MarkerX $MarkerY $MarkerZ radius 3.0 3.0 2.0
jf @StrtTh1_2
if   
$PLAYER_CHAR.Controllable
jf @StrtTh1_2
$MarkerH.Disable
$MarkerOn = 0
$PLAYER_CHAR.CanMove = false
00BA: text_styled 'MsName' 1500 ms 2 // Dit is een GXT-entry, die "Shooting the Balla" bevat. Deze GXT-entry moet in de table MAIN
fade 0 1500
wait 1500
start_mission 0
:StrtTh1_4
wait 10
if   
$MTried == 1
jf @StrtTh1_4
$MTried = 0
if   
$MPassed == 1
jf @StrtTh1_2
00BE: text_clear_all
03E6: remove_text_box
01E3: text_1number_styled 'M_PASS' 1000 5000 ms 1
0318: set_latest_mission_passed 'MsName' // Dit is een GXT-entry, die "Shooting the Balla" bevat. Deze GXT-entry moet in de table MAIN
030C: set_mission_points += 1
0394: play_music 1
$PLAYER_CHAR.Money += 1000
$PLAYER_CHAR.ClearWantedLevel
end_thread
:StrtTh1_5
if   
$MarkerOn == 1
jf @StrtTh1_2
$MarkerH.Disable
$MarkerOn = 0
jump @StrtTh1_2

dat heb ik dus 2 keer onder elkaar staan, nu heb ik dus, als ik new game start, 2 ronde rode cirkels staan, maar ik wil die 2e pas laten verschijnen als de eerste missie gehaald is, hoe doe ik dat?

alvast bedankt!

Black Force

EDIT: sorry dubbelpost :duh:

Bewerkt: door Black Force
Geplaatst:

Volgens mij is er een vrij eenvoudige oplossing voor je probleem. Je hebt namelijk niet gecheckt hoeveel Mission Points ze hebben in het begin. Dus als je de thread pas laat beginnen op het moment dat Mission Points 1 is, staat hij er dan pas. Hopelijk is dit wat je bedoelde.... :)

Geplaatst:

en die missionpoints is dan $Mpassed = 1 , dus dat is dan 1 missiepunt.

Dus de check word dan:

:Labelnaam
if
$Mpassed = 1
jf @ Labelnaam
create_thread @Mission2

moet dat dan zoiets worden, en hoe zit dat dan met $Mtried die ook in de startthread staan, hoe moeten die dan staan in de 2e startthread, gewoon hetzelfde?

Greetz,

Black Force

En alvast bedankt voor je hulp :tu:

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