Jump to content

Simpele actor spawn = sa crash.


Recommended Posts

Geplaatst:
Lijkt me sterk, er zitten altijd 5 seconden tussen. Wanneer je het een halve minuut ofzo wilt laten zijn, hoef je alleen die wait van 5000 te verhogen naar een leuk getal. Wat je ook kunt doen, is kijken of je ver genoeg uit de buurt bent voor je haar weer spawnt. Dan moet je een lus maken waarin je controleert hoe ver de Player van de Actor is, met behulp van de volgende opcode:

0104:   actor $PLAYER_ACTOR near_actor 1@ radius 15.0 15.0 15.0 sphere 0

Die 15.0 staan voor x-y-z coördinaten. De sphere 0 zegt dat hij geen sphere eromheen wilt trekken, dat zou ik als ik jou was ook niet gewilt hebben: dat ziet er niet uit. :7

Ik zal er wel wat mee om prutsen en kijken wat het resultaat zal zijn. ^_^ Bedankt dutchy. _O_

  • Reacties 89
  • Created
  • Laatste reactie

Top Posters In This Topic

  • Bierbuikje

    40

  • Dutchy3010

    32

  • Beagle

    8

  • Crypteq

    3

Top Posters In This Topic

Posted Images

Geplaatst:

Dat laatste, uit de buurt gaan, is trouwens ook een stuk mooier. Dan zie je de actor meestal niet of niet goed uit de lucht vallen. Als je actors spawnt, "vallen" die namelijk naar de goede plek. Het is dus niet mooi, om dan ervoor te staan. Als je dus een eind uit de buurt bent, kan je dat niet zien. :)

Geplaatst:

Ik heb nu de code: (Wordt wel een lange code ondertussen. :puh:

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .CS}

//-------------MAIN---------------
:Bierbuikje
Model.Load(#VWFYWAI)
Model.Load(#MINIGUN)
038B: load_requested_models
jump @Bierbuikje1

:Bierbuikjeeenhalf
Model.Load(#VWFYWAI)
Model.Load(#MINIGUN)
038B: load_requested_models
jump @Bierbuikje1

:Bierbuikje1
if or
  not Model.Available(#VWFYWAI)
  not Model.Available(#MINIGUN)
else_jump @Bierbuikje2
wait 0
jump @Bierbuikje1

:Bierbuikje2
10@ = Actor.Create(CivFemale, #VWFYWAI, 2490.563, -1688.95, 13.51973)
01B2: give_actor 10@ weapon 38 ammo 30000 // Load the weapon model before using this
01B9: set_actor 10@ armed_weapon_to 38
05E2: AS_actor 10@ kill_actor $PLAYER_ACTOR
Actor.WeaponAccuracy(10@) = 90
Actor.Health(10@) = 2000
0350: set_actor 10@ maintain_position_when_attacked 1
Model.Destroy(#VWFYWAI)
Model.Destroy(#MINIGUN)

repeat
 wait 100
until 0118:   actor 10@ dead

wait 5000
009B: destroy_actor 10@
jump @Bierbuikje3

:Bierbuikje3
if
0104:   actor $PLAYER_ACTOR near_actor 1@ radius 15.0 15.0 15.0 sphere 0
else_jump @Bierbuikjeeenhalf
wait 0
jump @Bierbuikje3

0A93: end_custom_thread

Maar mijn SA crasht op het moment dat hij bij label 'Bierbuikje3' komt. ( Denk ik, op het moment dat hij moet herladen. )

Of heb ik hem fout neergezet?

Geplaatst:

Je hebt actor 1@ gedaan, jouw actor heet 10@. Ik kopieer altijd alleen de code uit SannyBuilder, je moet hem zelf verder invullen. :puh:

jump @Bierbuikje3

:Bierbuikje3

Die jump is nutteloos, trouwens.

Ohja, je code is niet zo heel lang hoor. De code die PatrickW en ik geschreven hebben, is op dit moment 9192 regels lang. :puh:

Geplaatst:
Je hebt actor 1@ gedaan, jouw actor heet 10@. Ik kopieer altijd alleen de code uit SannyBuilder, je moet hem zelf verder invullen. :puh:

jump @Bierbuikje3

:Bierbuikje3

Die jump is nutteloos, trouwens.

Ohja, je code is niet zo heel lang hoor. De code die PatrickW en ik geschreven hebben, is op dit moment 9192 regels lang. :puh:

Oeps, was ik vergeten. :puh: En wat moet er allemaal niet staan in 9192 regels? :puh:

Geplaatst:

Tuurlijk veel checks, maar ook HEEL veel andere dingen. Design Your Own Mission is een super grote SCM-mod, ook al beseft men dat hier niet zo goed... Maar we gaan offtopic, ontopic weer graag. :)

Geplaatst:

Ik probeer nu 2 actors te spawnen met wapen en dat ze ook weer respawnen, maar sa crasht weer. Eerlijk gezegd had ik het ook wel verwacht, maar ik weet niet hoe op te lossen.

Dit is de code:

{$CLEO .CS}

:Bierbuikje
Model.Load(#BALLAS1)
Model.Load(#FAM1)
Model.Load(#DESERT_EAGLE)
jump @Bierbuikje2

:BierbuikjeBallas
Model.Load(#BALLAS1)
Model.Load(#DESERT_EAGLE)
jump @BierbuikjeBallas2

:BierbuikjeGrove
Model.Load(#FAM1)
Model.Load(#DESERT_EAGLE)
jump @BierbuikjeGrove2

:Bierbuikje2
10@ = Actor.Create(GANG1, #BALLAS1, -2323.607, -1637.773, 483.7031)
11@ = Actor.Create(GANG2, #FAM1, -2331.161, -1635.413, 483.7031)
01B2: give_actor 10@ weapon 24 ammo 30000
01B2: give_actor 11@ weapon 24 ammo 30000
01B9: set_actor 10@ armed_weapon_to 24
01B9: set_actor 11@ armed_weapon_to 24
05E2: AS_actor 10@ kill_actor 11@
05E2: AS_actor 11@ kill_actor 10@
Actor.WeaponAccuracy(10@) = 0
Actor.WeaponAccuracy(11@) = 0
Actor.Health(10@) = 2000
Actor.Health(11@) = 2000

:Bierbuikje3
if
   0350: set_actor 10@ maintain_position_when_attacked 1
else_jump @Bierbuikje4
jump @BierbuikjeBallas2

:Bierbuikje4
if
   0350: set_actor 11@ maintain_position_when_attacked 1
else_jump @Bierbuikje3
jump @BierbuikjeGrove2

:BierbuikjeBallas2
Model.Destroy(#BALLAS1)
Model.Destroy(#DESERT_EAGLE)

repeat
 wait 100
until 0118:   actor 10@ dead

wait 5000
009B: destroy_actor 10@

jump @BierbuikjeBallas

:BierbuikjeGrove2
Model.Destroy(#FAM1)
Model.Destroy(#DESERT_EAGLE)

repeat
 wait 100
until 0118:   actor 11@ dead

wait 5000
009B: destroy_actor 11@

jump @BierbuikjeGrove

0A93: end_custom_thread

Het probleem zit denk ik hier:

:Bierbuikje3
if
0350: set_actor 10@ maintain_position_when_attacked 1
else_jump @Bierbuikje4
jump @BierbuikjeBallas2

:Bierbuikje4
if
0350: set_actor 11@ maintain_position_when_attacked 1
else_jump @Bierbuikje3
jump @BierbuikjeGrove2

Maar ik heb geen idee hoe ik het moet oplossen, laat staan wat het eigenlijk inhoud. Wel weet ik dat het erin moet, maar het liefst wil ik weten hoe het moet en wat het doet.

Alvast bedankt. :tu:

Geplaatst:

Mijn code hierboven is een beetje heel erg rommelig, maar kan iemand mij laten zien hoe je 2 player spawns in 1 bestandje maakt? Ik kan wel 2 bestandjes aanmaken, maar ik wil leren hoe je het in 1 doet. En dat is mij nog niet gelukt. Alvast bedankt. :tu:

Geplaatst:

// This file was decompiled using sascm.ini published by Seemann (http://sannybuilder.com/files/SASCM.rar) on 13.10.2007

{$VERSION 3.1.0027}
{$CLEO .CS}

//-------------MAIN---------------
:Bierbuikje
Model.Load(#VWFYWAI)
Model.Load(#VWFYWAI)
Model.Load(#MINIGUN)
038B: load_requested_models
jump @Bierbuikje1

:Bierbuikjeeenhalf
Model.Load(#VWFYWAI)
Model.Load(#VWFYWAI)
Model.Load(#MINIGUN)
038B: load_requested_models
jump @Bierbuikje1

:Bierbuikje1
if or
  not Model.Available(#VWFYWAI)
  not Model.Available(#VWFYWAI)
  not Model.Available(#MINIGUN)
else_jump @Bierbuikje2
wait 0
jump @Bierbuikje1

:Bierbuikje2
10@ = Actor.Create(CivFemale, #VWFYWAI, 2490.563, -1688.95, 13.51973)
11@ = Actor.Create(CivFemale, #VWFYWAI, $X, $Y, $Z)
01B2: give_actor 10@ weapon 38 ammo 30000 // Load the weapon model before using this
01B2: give_actor 11@ weapon 38 ammo 30000 // Load the weapon model before using this
01B9: set_actor 10@ armed_weapon_to 38
01B9: set_actor 11@ armed_weapon_to 38
05E2: AS_actor 10@ kill_actor $PLAYER_ACTOR
05E2: AS_actor 11@ kill_actor $PLAYER_ACTOR
Actor.WeaponAccuracy(10@) = 90
Actor.WeaponAccuracy(11@) = 90
Actor.Health(10@) = 2000
Actor.Health(11@) = 2000
0350: set_actor 10@ maintain_position_when_attacked 1
0350: set_actor 11@ maintain_position_when_attacked 1
Model.Destroy(#VWFYWAI)
Model.Destroy(#MINIGUN)

repeat
 wait 100
until 0118:   actor 10@ dead

wait 5000
009B: destroy_actor 10@

jump @Bierbuikjeeenhalf

0A93: end_custom_thread

Ik weet niet of dit goed werkt, zou wel moeten. Alleen weet ik niet bij de repeat hoe je precies meerdere untils er bij zet :cab: Beetje onhandig, maarja :puh:

Geplaatst:

Om nog even terug te komen hierop:

:Bierbuikje3
if
0350: set_actor 10@ maintain_position_when_attacked 1
else_jump @Bierbuikje4
jump @BierbuikjeBallas2

:Bierbuikje4
if
0350: set_actor 11@ maintain_position_when_attacked 1
else_jump @Bierbuikje3
jump @BierbuikjeGrove2

Ik zie niet in wat je met die if-jf wilt bereiken? Deze opcode zorgt ervoor dat de actor blijft staan op het moment dat hij aangevallen wordt. Dit is een opcode die een eigenschap mee geeft aan een actor, net zoiets als het toevoegen van een wapen aan een actor, niet een opcode waarmee je iets opvraagt (bijvoorbeeld of een actor dood is). Beagle hierboven had het al wel verbetert, maar ik wilde toch nog even uitleg erbij geven.

@ Beagle...

Je kunt een repeat-wait-until maar 1 conditie geven. Althans, ik weet niet hoe Bierbuikje het precies wilt. Je kunt achter de "until" maar 1 conditie zetten. Maar binnen de repeat-wait-until structuur kan je wel dingen zeggen. Toch zou ik het gewoon simepeler maken. Repeat-until is vooral handig als je iets de hele tijd wilt doen tot je een bepaalde conditie hebt gehaald. Deze keer zou ik dus gewoon een if-structuur maken.

Ik neem aan dat je ze allebei wilt spawnen op het moment dat ze beiden dood zijn? Anders moet je je begin-structuur wat aanpassen.

:DOOD
wait 0 
if and
0118:   actor 10@ dead
0118:   actor 11@ dead
jf @DOOD
jump @Bierbuikje

Wat nog meer niet ok is aan je code:

11@ = Actor.Create(CivFemale, #VWFYWAI, $X, $Y, $Z)

Je hebt de variabelen niet gedefinieerd. Waarschijnlijk spawnt deze actor dus gewoon op punt 0,0, maar ik neem aan dat dat niet de bedoeling is. ;) Dus of een lijstje maken met gedefinieerde variabelen voor deze opcode ($X = ..., $Y = ..., $Z = ...), of gewoon de coördinaten daar invullen.

Ohja, twee keer al die Model.Load is onzin... Dat is echt nergens voor nodig.

En nog een tip voor je code: je actors zijn heel sterk en alles, maar je kunt ze met 1 headshot doden. Wie weet immuun maken voor headshots?

Geplaatst:

Oeps, die modellen laden en requesten is inderdaad niet nodig, even niet aan gedacht. De $X $Y $Z coordinaten bedoelde ik meer dat BB zelf de coordinaten in kon vullen :engel: Bij de repeat-wait-until structuur wist ik niet zeker of je meerdere condities kon stellen, dus had ik het er maar bij gehouden. Ach ja, weer wat geleerd :)

Geplaatst: (bewerkt)

Ik probeer nu het aller domste gevecht op de wereld te maken, maar hoe spawn ik een actor in een auto? Ik heb het niet gevonden in de tuts. :N

Alvast bedankt. _O_

Hieronder: toppie. :tu:

Bewerkt: door Bierbuikje
Geplaatst:

Dat is niet zo heel moeilijk:

0129: 41@ = create_actor_pedtype 23 model #SPECIAL02 in_car 35@ driverseat 
01C8: 40@ = create_actor_pedtype 23 model #SPECIAL01 in_car 35@ passenger_seat 0

Die eerste creer je een actor op de bestuurdersstoel, die tweede op de andere 3 mogelijkheden. Die 0 op het laatst kan je daarvoor variëren.

  • 3 weken later...
Geplaatst:

Ik ben weer even bezig gegaan, san andreas opgestart, alles laadt rustig, maar dan... Dan zie ik niet wat er zou moeten gebeuren. Er horen 4 ballas mannetjes en 1 grove mannetje te spawnen in grovestreet. Maar het gebeurt niet. Weet iemand hoe? Het script is wel geladen, dat kan ik zien in het menu.

{$CLEO .CS}

:ModelLoad
Model.Load(#FAM1)
Model.Load(#BALLAS1)
Model.Load(#BALLAS2)
Model.Load(#BALLAS3)
Model.Load(#DESERT_EAGLE)
jump @ModelControle

:ModelLoad2
Model.Load(#FAM1)
Model.Load(#BALLAS1)
Model.Load(#BALLAS2)
Model.Load(#BALLAS3)
Model.Load(#DESERT_EAGLE)

:ModelControle
if or
not Model.Available(#FAM1)
not Model.Available(#BALLAS1)
not Model.Available(#BALLAS2)
not Model.Available(#BALLAS3)
not Model.Available(#DESERT_EAGLE)
else_jump @ModelSpawn
wait 0
jump @ModelControle

:ModelSpawn
10@ = Actor.Create(Gang2, #FAM1, 2517,37, -1686,822, 13,56062)
11@ = Actor.Create(Gang1, #BALLAS1, 2513,876, -1682,905, 13,42083)
//
12@ = Actor.Create(Gang1, #BALLAS1, 2505,62, -1669,457, 13,37159)
13@ = Actor.Create(Gang1, #BALLAS2, 2506,693, -1667,886, 13,37623)
14@ = Actor.Create(Gang1, #BALLAS3, 2506,494, -1666,531, 13,38731)
//
01B2: give_actor 10@ weapon 24 ammo 30000 // Load the weapon model before using this
01B2: give_actor 11@ weapon 24 ammo 30000 // Load the weapon model before using this
//
01B2: give_actor 12@ weapon 24 ammo 30000 // Load the weapon model before using this
01B2: give_actor 13@ weapon 24 ammo 30000 // Load the weapon model before using this
01B2: give_actor 14@ weapon 24 ammo 30000 // Load the weapon model before using this
//
01B9: set_actor 10@ armed_weapon_to 24
01B9: set_actor 11@ armed_weapon_to 24
//
01B9: set_actor 12@ armed_weapon_to 24
01B9: set_actor 13@ armed_weapon_to 24
01B9: set_actor 14@ armed_weapon_to 24
//
Actor.WeaponAccuracy(10@) = 90
Actor.WeaponAccuracy(11@) = 90
//
Actor.WeaponAccuracy(12@) = 90
Actor.WeaponAccuracy(13@) = 90
Actor.WeaponAccuracy(14@) = 90
//
Actor.Health(10@) = 2000
Actor.Health(11@) = 1000
//
Actor.Health(12@) = 1000
Actor.Health(13@) = 1000
Actor.Health(14@) = 1000
//
0350: set_actor 10@ maintain_position_when_attacked 1
0350: set_actor 11@ maintain_position_when_attacked 1
//
0350: set_actor 12@ maintain_position_when_attacked 1
0350: set_actor 13@ maintain_position_when_attacked 1
0350: set_actor 14@ maintain_position_when_attacked 1
//
Model.Destroy(#FAM1)
Model.Destroy(#BALLAS1)
Model.Destroy(#BALLAS2)
Model.Destroy(#BALLAS3)
Model.Destroy(#DESERT_EAGLE)

repeat
 wait 100
until 0118:   actor 10@ dead

repeat
 wait 100
until 0118:   actor 11@ dead

repeat
 wait 100
until 0118:   actor 12@ dead

repeat
 wait 100
until 0118:   actor 13@ dead

repeat
 wait 100
until 0118:   actor 14@ dead

wait 5000
009B: destroy_actor 10@
009B: destroy_actor 11@
009B: destroy_actor 12@
009B: destroy_actor 13@
009B: destroy_actor 14@

jump @ModelLoad2

0A93: end_custom_thread

Excuses voor de vele repeat ... until, maar ik wist niet hoe ik het moest inkorten. ;)

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