Page 1 of 1

Pikselintarkka ObjectsOverlap ja MAV

Posted: Tue Aug 28, 2007 5:07 pm
by Drath
Huomasin että itselläni cb-ohjelmat kaatuilevat satunnaisesti maviin kun käytää objectsoverlappia ja sen kanssa pikselintarkkaa tarkistusta. Seuraava koodi on suoraan CB:n manuaalista joten minussa ei mitään vikaa pitäisi olla :).

Code: Select all

FrameLimit 40
ShowMouse OFF
DrawToWorld ON

soldier=LoadObject("Media\soldier.bmp",360)
ObjectRange soldier,46

target=LoadObject("Media\crosshair.bmp")

'some text 
Color cbblack
AddText "1 = Box-based"
AddText "2 = Circle-based"
AddText "3 = Pixel-based"

'default 
method=1

ClsColor cbwhite

Repeat

    'Change mode
    If KeyHit(cbkey1) Then method=1
    If KeyHit(cbkey2) Then method=2
    If KeyHit(cbkey3) Then method=3

    TurnObject soldier,1
    Select method
        Case 1 'box
            Box ObjectX(target) -8,ObjectY(target)+8,16,16,OFF
            Box ObjectX(soldier) -23,ObjectY(soldier)+23,46,46,OFF
            Text 100,250,"Overlap (box): "+ObjectsOverlap(soldier,target,1)
        Case 2 'circle
            Circle ObjectX(target) -8,ObjectY(target)+8,16,OFF
            Circle ObjectX(soldier) -23,ObjectY(soldier)+23,46,OFF
            Text 100,250,"Overlap (circle): "+ObjectsOverlap(soldier,target,2)
        Case 3 'pixel
            Text 100,250,"Overlap (pixel): "+ObjectsOverlap(soldier,target,3)
    End Select
    
    PositionObject target,MouseX() -200, -MouseY()+150

    DrawScreen

Until EscapeKey()
Tuo koodi kaatuu kun painaa kolmosta ja sitten laittaa tähtäimen sotilaan päälle. Se ei kuitenkaan aina kaadu heti vaan saattaa toimia hetken kunnes kaatuu. Onko kellään muulla samanlaisia ongelmia?

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Tue Aug 28, 2007 5:12 pm
by Skapth
Samalla tavalla kävi minullakin. Memory access violation ei tullut aivan heti vaan parin sekunnin jälkeen hiiren laittamisesta sotilaan päälle.

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Tue Aug 28, 2007 6:08 pm
by Jonez
Sama.

Ongelma korjaantuu ainakin mulla, kun säätää sen pyöritysarvon esim. 72:een.
Outo bugi. Ei kyllä hajuakaan että mistä voisi johtua.

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Tue Aug 28, 2007 6:31 pm
by Drath
No, onpahan tässäkin nyt sitten yksi uusi juttu mitä kannattaa tarkistaa kun metsästää pelissään maveja.

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Tue Aug 28, 2007 10:37 pm
by koodaaja
Itselläni tuo toimi moitteetta. Lienee konekohtainen ongelma.. Kokeikaapa te, joilla pukittaa, tuleeko moista käännettyyn .EXE:en?

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Wed Aug 29, 2007 8:38 am
by KilledWhale
Minullakaan ei tullut minkäänlaista virhettä, vaikka jätin hiiren objektin päälle pariksi minuutiksi.

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Wed Aug 29, 2007 11:37 pm
by mza
Joskus aikaisemmin jo huomasin, että cb:ssä näitä konekohtaisia maveja on. Nyt kun Zerokin on paikalla, niin on toivoa jopa ratkaisusta. :D Tässä mavittava koodi lyhyempänä:

Code: Select all

soldier=LoadObject("Media\soldier.bmp",360)
target=LoadObject("Media\crosshair.bmp")

Repeat
    TurnObject soldier,1
    a=ObjectsOverlap(soldier,target,3)
    DrawScreen
Forever
Mavittaa ainakin pyöritysarvoilla 90,179,180,220,360, mutta ei 72. Mav tulee myös, jos muutan objektien nimet. Mav ei tule, jos sotilasta ei pyöritetä tai törmäystä ei tarkisteta. Sama vika myös exe:ssä. Kone on uudehko ja käyttis Win XP, että ei siitäkään pitäisi kai johtua.

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Wed Aug 29, 2007 11:41 pm
by koodaaja
mza wrote:Joskus aikaisemmin jo huomasin, että cb:ssä näitä konekohtaisia maveja on. Nyt kun Zerokin on paikalla, niin on toivoa jopa ratkaisusta. :D Tässä mavittava koodi lyhyempänä:

Code: Select all

soldier=LoadObject("Media\soldier.bmp",360)
target=LoadObject("Media\crosshair.bmp")

Repeat
    TurnObject soldier,1
    a=ObjectsOverlap(soldier,target,3)
    DrawScreen
Forever
Mavittaa ainakin pyöritysarvoilla 90,179,180,220,360, mutta ei 72. Mav tulee myös, jos muutan objektien nimet. Mav ei tule, jos sotilasta ei pyöritetä tai törmäystä ei tarkisteta. Sama vika myös exe:ssä. Kone on uudehko ja käyttis Win XP, että ei siitäkään pitäisi kai johtua.
Ihan mielenkiinnosta, mitä tapahtuu jos lisäät johonkin väliin vaikka updategamen? Vai auttaisiko, jos ensin tarkistettaisiin ja sitten vasta pyöritettäisiin? Kannattanee kokeilla. Ja Zero voisi tietysti valaista asiaa.

Re: Pikselintarkka ObjectsOverlap ja MAV

Posted: Wed Aug 29, 2007 11:45 pm
by mza
Ei auta järjestyksen vaihtaminen tai updategame missään välissä. :|
Bugittaa jopa eri objekteilla, jos koodi on muuten sama.