.:TOM:. Geplaatst: 6 september 2007 Rapport Geplaatst: 6 september 2007 Hier komen al onze vragen en problemen die te maken hebben met scm. Tom Reageren
.:TOM:. Geplaatst: 6 september 2007 Auteur Rapport Geplaatst: 6 september 2007 Hier is m'n probleem Alles werkt das dus goed Maar ik spawn alles 2 keer dus ipv 4 auto's 8, 8 ballas 16, ... Iemand die kan helpen is vriendelijk bedankt 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 Reageren
Dutchy3010 Geplaatst: 7 september 2007 Rapport Geplaatst: 7 september 2007 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 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 Reageren
Black Force Geplaatst: 8 september 2007 Rapport Geplaatst: 8 september 2007 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. Reageren
PatrickW Geplaatst: 8 september 2007 Rapport Geplaatst: 8 september 2007 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. Reageren
Black Force Geplaatst: 9 september 2007 Rapport Geplaatst: 9 september 2007 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 Reageren
Dutchy3010 Geplaatst: 9 september 2007 Rapport Geplaatst: 9 september 2007 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... Reageren
Black Force Geplaatst: 10 september 2007 Rapport Geplaatst: 10 september 2007 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. Reageren
PatrickW Geplaatst: 10 september 2007 Rapport Geplaatst: 10 september 2007 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. Reageren
Black Force Geplaatst: 11 september 2007 Rapport Geplaatst: 11 september 2007 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 Reageren
Dutchy3010 Geplaatst: 11 september 2007 Rapport Geplaatst: 11 september 2007 $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. Reageren
Black Force Geplaatst: 12 september 2007 Rapport Geplaatst: 12 september 2007 Ja ik snap hem wel hoor Dutchy, hartstikke bedankt!! Reageren
Black Force Geplaatst: 23 september 2007 Rapport Geplaatst: 23 september 2007 (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 Bewerkt: 23 september 2007 door Black Force Reageren
Dutchy3010 Geplaatst: 28 september 2007 Rapport Geplaatst: 28 september 2007 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.... Reageren
Black Force Geplaatst: 28 september 2007 Rapport Geplaatst: 28 september 2007 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 Reageren
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.