For panos2.panokset2=Each panokset2
MoveObject panos2\obj,panos2\nopeus/100
For oma.omat=Each omat
If ObjectsOverlap(panos2\obj,oma\obj,3) Then
oma\kesto=oma\kesto-panos2\vahinko
DeleteObject panos2\obj
Delete panos2
EndIf
Next oma
Next panos2
Mavia ei siis tule joka kerta, vaan satunnaisesti silloin tällöin. Sitä ei siis tule kun tuon objektin poistamisen jättää pois. Omasta mielestäni objektia ei enää yritetä käyttää sen poistamisen jälkeen joten missä vika?
Sepi wrote:Eli ongelma on siis se, että tyyppikokoelmasta objektin poistaminen tuottaa mavin.
Mavia ei siis tule joka kerta, vaan satunnaisesti silloin tällöin. Sitä ei siis tule kun tuon objektin poistamisen jättää pois. Omasta mielestäni objektia ei enää yritetä käyttää sen poistamisen jälkeen joten missä vika?
Jos omia on enemmän kuin yksi ja panos2 poistetaan ennen viimeistä omaa, niin kyllä sen objektia yritetään käyttää poiston jälkeen.
Tässä korjattu:
For panos2.panokset2=Each panokset2
MoveObject panos2\obj,panos2\nopeus/100
For oma.omat=Each omat
If ObjectsOverlap(panos2\obj,oma\obj,3) Then
oma\kesto=oma\kesto-panos2\vahinko
tuho = 1
EndIf
Next oma
If tuho = 1 then
DeleteObject panos2\obj
Delete panos2
tuho=0
Endif
Next panos2
No, pelissä on koodia tällä lähemmäs kaksi tuhatta riviä niin se ei ihan onnistu, mutta edittaan tähän myöhemmin tuota taistelua/ampumisvaihetta koskevan koodin
For oma.omat=Each omat
For oma2.omat2=Each omat2
If Distance2(oma\obj,oma2\obj)<oma\nytetaisyys And oma2\kesto>0 Then
If oma2\kesto>0 Then
oma\nytetaisyys=Distance2(oma\obj,oma2\obj)
oma\nytnumero=oma2\numero
EndIf
EndIf
Next oma2
If ObjectsOverlap(hiiriobj,oma\obj) Then Text 0,300,"ETÄISYYS: "+oma\nytetaisyys then text 0,310,"NUMERO: "+oma\nytnumero
Next oma
For oma2.omat2=Each omat2
For oma.omat=Each omat
If Distance2(oma2\obj,oma\obj)<oma2\nytetaisyys And oma\kesto>0 Then
If oma\kesto>0 Then
oma2\nytetaisyys=Distance2(oma2\obj,oma\obj)
oma2\nytnumero=oma\numero
EndIf
EndIf
Next oma
If ObjectsOverlap(hiiriobj,oma2\obj) Then Text 0,300,"ETÄISYYS: "+oma2\nytetaisyys then text 0,310,"NUMERO: "+oma2\nytnumero
Next oma2
ajastin+2
If ajastin<100 Then
SetFont iso
CenterText 320,240,"3"
SetFont fontti
EndIf
If ajastin<200 And ajastin>99 Then
SetFont iso
CenterText 320,240,"2"
SetFont fontti
EndIf
If ajastin<300 And ajastin>199 Then
SetFont iso
CenterText 320,240,"1"
SetFont fontti
EndIf
If ajastin>299 Then taistellaan=1
If taistellaan=1 Then
For oma.omat=Each omat
For oma2.omat2=Each omat2
If oma2\numero=oma\nytnumero Then
PointObject oma\obj,oma2\obj
If Distance2(oma\obj,oma2\obj)>250 Then
MoveObject oma\obj,2+oma\nopeus/5
Else
If oma\lataus=0 Then
panos.panokset=New(panokset)
panos\obj=CloneObject(panos1)
CloneObjectOrientation panos\obj,oma\obj
CloneObjectPosition panos\obj,oma\obj
panos\nopeus=oma\aselnopeus
panos\vahinko=oma\asevahinko
oma\lataus=6000/oma\asenopeus
AddText "PAU"
EndIf
EndIf
EndIf
Next oma2
If oma\lataus>0 Then oma\lataus-1
Next oma
For oma2.omat2=Each omat2
For oma.omat=Each omat
If oma\numero=oma2\nytnumero Then
PointObject oma2\obj,oma\obj
If Distance2(oma2\obj,oma\obj)>250 Then
MoveObject oma2\obj,2+oma2\nopeus/5
Else
If oma2\lataus=0 Then
panos2.panokset2=New(panokset2)
panos2\obj=CloneObject(panos1)
CloneObjectOrientation panos2\obj,oma2\obj
CloneObjectPosition panos2\obj,oma2\obj
panos2\nopeus=oma2\aselnopeus
panos2\vahinko=oma2\asevahinko
oma2\lataus=6000/oma2\asenopeus
AddText "PAU"
EndIf
EndIf
EndIf
Next oma
If oma2\lataus>0 Then oma2\lataus-1
Next oma2
For panos.panokset=Each panokset
MoveObject panos\obj,panos\nopeus/100
For oma2.omat2=Each omat2
If ObjectsOverlap(panos\obj,oma2\obj,3) Then
oma2\kesto=oma2\kesto-panos\vahinko
tuho = 1
EndIf
Next oma2
If tuho = 1 then
DeleteObject panos\obj
Delete panos
tuho=0
EndIf
Next panos
For panos2.panokset2=Each panokset2
MoveObject panos2\obj,panos2\nopeus/100
For oma.omat=Each omat
If ObjectsOverlap(panos2\obj,oma\obj,3) Then
oma\kesto=oma\kesto-panos2\vahinko
tuho = 1
EndIf
Next oma
If tuho = 1 then
DeleteObject panos2\obj
Delete panos2
tuho=0
EndIf
Next panos2
EndIf
Heheh, ongelmana siellä ainakin on että kun ammus1 osuu ukkeli2 niin tuho on 1 ja MOLEMMAT AMMUKSET TUHOTAAN, syy: Molemmissa if lausekkesiaa(ammus1 -> ukkeli2 ja ammus2 -> ukkeli1) sanotaan lopussa tuho = 1, ja lopussa sanotaan että jos tuho=1 niin tuhotaan ammus1, tällainen on myös ammus2:kosen kohdalla, joten molemat tuhotaan. Tee siis muuttuja tuho2. Tai oikeastaan tuo on TPC:tä, eli The Purkka Codea. No niinhän melkein aina aloittelijoilla... Itse asiassa et tarvitse tuollaisia tuhoamis muuttujia vaan voit tuhota ammukset silloin kun sanot että: tuho=1. Sitten... no joo, sanon vain, että opettele jo nyt sisentämään. Koodi näyttää paljon siistemmältä ja silloin siä pysty lukemaan ja sitä ymmärtää helpommin... Minulla meni hetki löytää viimeisen EndIf:n alkupää...
Tulipas pitkää... Toivottavasti ymmärsit edes puolet.
Tuolla tuho2:sen tekemisellä ei ollut mitään merkitystä, mikä oli ihan odotettavissa koska tuo tuhon tarkistus käydään eri loopeissa ja nollataan kummankin jälkeen. Lisäksi mitäpä jos lukisit noita aiempiakin viestejä niin tuo tuhon tekeminen tuolla tuho-muuttujalla nimenomaan ehdotettiin minulle tehtäväksi. Syynkin näet ylempää.