Page 49 of 50

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 6:39 pm
by esa94
If GetMap2(3, ObjectX(pelihahmo), ObjectY(pelihahmo)) = 1 Then pitäisi toimia

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 6:45 pm
by onkelma
se nyt ei jostain syystä näyttäisi toimivan?

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 6:51 pm
by Art
onkelma wrote:se nyt ei jostain syystä näyttäisi toimivan?
oletko tarkastanut kaikki muuttajat, ja mahd. virheet koodissa ?

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 6:56 pm
by onkelma
Koodi oli lyhkänen joten laitoin tänne. Koottu esimerkin päälle. Ei kyllä tule mieleen mikä ois väärin :?

Code: Select all

Const PAINOVOIMA = -0.3 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


SCREEN 800,600,0,cbwindowed
FrameLimit 40 
'-------------------------------------------------

kenttä=LoadMap("Map1.til","malli tileset.png")
PositionObject kenttä,0,50
MaskObject kenttä,cbmagenta
PlayObject kenttä,0,0,0.5


oikea=LoadAnimObject("pelihahmo.png",40,64,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,40,64 


vasen=LoadAnimObject("pelihahmo2.png",40,64,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,40,64 

pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,40,64 '


'-------------------------------------------------
'Pääsilmukka

Repeat

ClsColor cbsilver

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        PaintObject pelihahmo,oikea .
        If maassa Then PlayObject pelihahmo,2,13,0.3
        vauhti=4 
    ElseIf LeftKey() Then
        PaintObject pelihahmo,vasen 
        If maassa Then PlayObject pelihahmo,2,13,0.25
        vauhti=-4 
    Else 
        PlayObject pelihahmo,0
    EndIf
    
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA
    
    UpdateGame 
    CloneCameraPosition pelihahmo 
    
    maassa=0 
    törmäykset=CountCollisions(pelihahmo)

    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 
            EndIf
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    If KeyDown(cbKeyZ) And maassa Then
        yPlus#=7.7
    EndIf 
    
    
    If GetMap2(3, ObjectX(pelihahmo), ObjectY(pelihahmo)) = 1  Then
     yPlus#=0.5
    EndIf 
    
    
    DrawScreen 

Until EscapeKey()

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 6:58 pm
by esa94
No ensinnäkin nythän pelaaja liikkuu automaattisesti tikkailla jos sattuu niille päätymään...

Toinen ongelma saattaisi olla että objektin sijaintipiste on jossain aivan hevon kuusessa kun sen todennäköisesti pitäisi olla objektin keskellä ainakin tätä varten.
EDIT:

Jaha, GetMap lukee pikseleinä eikä GetMap2. Siinä se ongelma, poista kakkonen.


Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 6:59 pm
by Art
painovoima on vakio ja ei voi muuttua

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 7:03 pm
by onkelma
Kiitoksia! :)

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 8:20 pm
by Awaclus
Art wrote:painovoima on vakio ja ei voi muuttua
Senhän kuuluu ollakin.

EDIT: Onnea, pääsit juuri allekirjoitukseeni.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 8:26 pm
by esa94
Art wrote:painovoima on vakio ja ei voi muuttua
Kiitos tästä fysiikan oppitunnista.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 10:49 pm
by Art

Code: Select all

Const PAINOVOIMA = -0.3 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


SCREEN 800,600,0,cbwindowed
FrameLimit 40 
'-------------------------------------------------

kenttä=LoadMap("Map1.til","malli tileset.png")
PositionObject kenttä,0,50
MaskObject kenttä,cbmagenta
PlayObject kenttä,0,0,0.5


oikea=LoadAnimObject("pelihahmo.png",40,64,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,40,64 


vasen=LoadAnimObject("pelihahmo2.png",40,64,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,40,64 

pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,40,64 


'-------------------------------------------------
'Pääsilmukka

Repeat

ClsColor cbsilver

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        PaintObject pelihahmo,oikea 
        If maassa Then PlayObject pelihahmo,2,13,0.3
        vauhti=4 
    ElseIf LeftKey() Then
        PaintObject pelihahmo,vasen 
        If maassa Then PlayObject pelihahmo,2,13,0.25
        vauhti=-4 
    Else 
        PlayObject pelihahmo,0
    EndIf
    
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA
    
    UpdateGame 
    CloneCameraPosition pelihahmo 
    
    maassa=0 
    törmäykset=CountCollisions(pelihahmo)

    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 
            EndIf
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    If KeyDown(cbKeyZ) And maassa Then
        yPlus#=7.7
    EndIf 

Poistin 2 pistettä väärästä kohtaa ja itselläni ainakin toimii, niin kauvan kunnes ei voi ladata karttaa jota ei mulla luonnollisesti ole..

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Dec 19, 2011 11:08 pm
by Awaclus
Art wrote:

Code: Select all

Const PAINOVOIMA = -0.3 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


SCREEN 800,600,0,cbwindowed
FrameLimit 40 
'-------------------------------------------------

kenttä=LoadMap("Map1.til","malli tileset.png")
PositionObject kenttä,0,50
MaskObject kenttä,cbmagenta
PlayObject kenttä,0,0,0.5


oikea=LoadAnimObject("pelihahmo.png",40,64,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,40,64 


vasen=LoadAnimObject("pelihahmo2.png",40,64,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,40,64 

pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,40,64 


'-------------------------------------------------
'Pääsilmukka

Repeat

ClsColor cbsilver

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        PaintObject pelihahmo,oikea 
        If maassa Then PlayObject pelihahmo,2,13,0.3
        vauhti=4 
    ElseIf LeftKey() Then
        PaintObject pelihahmo,vasen 
        If maassa Then PlayObject pelihahmo,2,13,0.25
        vauhti=-4 
    Else 
        PlayObject pelihahmo,0
    EndIf
    
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA
    
    UpdateGame 
    CloneCameraPosition pelihahmo 
    
    maassa=0 
    törmäykset=CountCollisions(pelihahmo)

    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 
            EndIf
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    If KeyDown(cbKeyZ) And maassa Then
        yPlus#=7.7
    EndIf 

Poistin 2 pistettä väärästä kohtaa ja itselläni ainakin toimii, niin kauvan kunnes ei voi ladata karttaa jota ei mulla luonnollisesti ole..
No shit sherlock. Se koodin alkuosahan on suoraan kopioitu CoolBasicin painovoimaesimerkistä pienillä arvojen muutoksilla, totta kai se toimii. Eikä alkuperäinen kysyjäkään tainnut sanoa mitään sellaisesta, että ohjelma ei käynnisty.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Dec 20, 2011 8:42 am
by naputtelija
Art wrote:

Code: Select all

Const PAINOVOIMA = -0.3 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


SCREEN 800,600,0,cbwindowed
FrameLimit 40 
'-------------------------------------------------

kenttä=LoadMap("Map1.til","malli tileset.png")
PositionObject kenttä,0,50
MaskObject kenttä,cbmagenta
PlayObject kenttä,0,0,0.5


oikea=LoadAnimObject("pelihahmo.png",40,64,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,40,64 


vasen=LoadAnimObject("pelihahmo2.png",40,64,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,40,64 

pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,40,64 


'-------------------------------------------------
'Pääsilmukka

Repeat

ClsColor cbsilver

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        PaintObject pelihahmo,oikea 
        If maassa Then PlayObject pelihahmo,2,13,0.3
        vauhti=4 
    ElseIf LeftKey() Then
        PaintObject pelihahmo,vasen 
        If maassa Then PlayObject pelihahmo,2,13,0.25
        vauhti=-4 
    Else 
        PlayObject pelihahmo,0
    EndIf
    
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA
    
    UpdateGame 
    CloneCameraPosition pelihahmo 
    
    maassa=0 
    törmäykset=CountCollisions(pelihahmo)

    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 
            EndIf
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    If KeyDown(cbKeyZ) And maassa Then
        yPlus#=7.7
    EndIf 

Poistin 2 pistettä väärästä kohtaa ja itselläni ainakin toimii, niin kauvan kunnes ei voi ladata karttaa jota ei mulla luonnollisesti ole..
Sijaitsevatko nuo Map1 ja malli tileset siinä samassa kansiossa kuin tämä koodi? Jos ei, niin ongelma on siinä. Ohjelma siis etsii aina sieltä kansiosta ellet määrittele eteen "Kansio\"(seuraava kansio), "...\"(edellinen kansio) tai "C:\" Tai joku muu levyn kirjain. Esim. jos tiedosto sijaitsee: "C:\matti\desktop\map1.til" niin jos koodisikin on sijainnissa "C:\matti\desktop\koodi.cb" niin LoadMap("map1.til,"kuva.jpg") toimii.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Dec 20, 2011 10:27 am
by Awaclus
naputtelija wrote:
Art wrote:

Code: Select all

Const PAINOVOIMA = -0.3 'painoviman voimakkuus
                        'pienempi->suurempi pv.
                        'positiiviset arvot->
                        'painovoima ylöspäin?!
yPlus#=0                'Tämä hallitsee hyppyä


SCREEN 800,600,0,cbwindowed
FrameLimit 40 
'-------------------------------------------------

kenttä=LoadMap("Map1.til","malli tileset.png")
PositionObject kenttä,0,50
MaskObject kenttä,cbmagenta
PlayObject kenttä,0,0,0.5


oikea=LoadAnimObject("pelihahmo.png",40,64,0,13)
MaskObject oikea,cbMagenta
ShowObject oikea,OFF
ObjectRange oikea,40,64 


vasen=LoadAnimObject("pelihahmo2.png",40,64,0,13)
MaskObject vasen,cbMagenta
ShowObject vasen,OFF
ObjectRange vasen,40,64 

pelihahmo=CloneObject(oikea)
SetupCollision pelihahmo,kenttä,1,4,2
ObjectRange pelihahmo,40,64 


'-------------------------------------------------
'Pääsilmukka

Repeat

ClsColor cbsilver

    vauhti=0 'oletuksena ei liikettä

    If RightKey() Then 
        PaintObject pelihahmo,oikea 
        If maassa Then PlayObject pelihahmo,2,13,0.3
        vauhti=4 
    ElseIf LeftKey() Then
        PaintObject pelihahmo,vasen 
        If maassa Then PlayObject pelihahmo,2,13,0.25
        vauhti=-4 
    Else 
        PlayObject pelihahmo,0
    EndIf
    
    TranslateObject pelihahmo,vauhti,yPlus#
    yPlus=yPlus+PAINOVOIMA
    
    UpdateGame 
    CloneCameraPosition pelihahmo 
    
    maassa=0 
    törmäykset=CountCollisions(pelihahmo)

    For i=1 To törmäykset
        If GetCollision(pelihahmo,i)=kenttä
            If CollisionAngle(pelihahmo,i)=90 Then 
                yPlus#=-1
                maassa=1 
            EndIf
            If CollisionAngle(pelihahmo,i)=270 Then 
                yPlus#=-1
            EndIf
        EndIf
    Next i 
       
    If törmäykset=0 Then PlayObject pelihahmo,12,0
    
    If KeyDown(cbKeyZ) And maassa Then
        yPlus#=7.7
    EndIf 

Poistin 2 pistettä väärästä kohtaa ja itselläni ainakin toimii, niin kauvan kunnes ei voi ladata karttaa jota ei mulla luonnollisesti ole..
Sijaitsevatko nuo Map1 ja malli tileset siinä samassa kansiossa kuin tämä koodi? Jos ei, niin ongelma on siinä. Ohjelma siis etsii aina sieltä kansiosta ellet määrittele eteen "Kansio\"(seuraava kansio), "...\"(edellinen kansio) tai "C:\" Tai joku muu levyn kirjain. Esim. jos tiedosto sijaitsee: "C:\matti\desktop\map1.til" niin jos koodisikin on sijainnissa "C:\matti\desktop\koodi.cb" niin LoadMap("map1.til,"kuva.jpg") toimii.
Ongelmahan ei ole siinä, että koodi ei toimi. Ongelma oli siinä, että alkuperäinen kysyjä (vieras) ei saanut tasohyppelypelissä hahmoa menemään tikkaiden kohdalla ylöspäin. Sen jälkeen, kun Esa oli jo ratkaissut ongelman, Art ensin ilmoitti painovoiman olevan vakio, sitten vähän myöhemmin ilmoitti, että CoolBasicin painovoimaoppitunti toimii ja että hänellä ei ole alkuperäisen kysyjän karttaa, ja sitten sinä lainasit Artia.

faecplam

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Dec 20, 2011 7:05 pm
by aloittelijamies
Yritän saada objecteja (kuten kerättäväviä tavaroita joista saa pisteitä tai hp:ta) peliini. Objectit on sijoitettu tilekarttaan datakerroksen avulla

ja kokeilin tästä topicista hakea koodia hoitamaan homman.

Lopputuloksena peli toimii normaalisti, mutta ilman haluttuja karttaan asetettuja datatilejä ja niille paikoille sijoitettuja objekteja

Saisiko tuohon yllämainittuun koodiin vielä jotain selvennystä yms? Data-arvo(4 kartassa ja myös koodissa) ja cloneobject on jo selvää. Esine objecti on ajettu peliin loadobject kommennolla jo valmiiksi joten cloneobjectista tuskin johtuu.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Dec 20, 2011 8:03 pm
by elmo123
aloittelijamies wrote:Yritän saada objecteja (kuten kerättäväviä tavaroita joista saa pisteitä tai hp:ta) peliini. Objectit on sijoitettu tilekarttaan datakerroksen avulla

ja kokeilin tästä topicista hakea koodia hoitamaan homman.

Lopputuloksena peli toimii normaalisti, mutta ilman haluttuja karttaan asetettuja datatilejä ja niille paikoille sijoitettuja objekteja

Saisiko tuohon yllämainittuun koodiin vielä jotain selvennystä yms? Data-arvo(4 kartassa ja myös koodissa) ja cloneobject on jo selvää. Esine objecti on ajettu peliin loadobject kommennolla jo valmiiksi joten cloneobjectista tuskin johtuu.
Mainitsemassasi koodissa läpikäydään kahden sisäkkäisen For-silmukan avulla koko kartan datakerros läpi.
Sisemmässä loopissa käydään kaikki tilet vaakasuunnassa läpi, ja sitten ulompi silmukka suorittaa saman uudelleen, mutta y-muuttujan kasvettua yhdellä.

Joka tilen kohdalla tarkistetaan tilen data-arvo. Jos se on 4, siis tässä tapauksessa, luodaan objekti.
Objekti sijoitetaan aloittelijoille hieman epäselvin kaavoin:

Code: Select all

tile_leveys*(-0.5*MapWidth() + x - 0.5) + ObjectX(kartta)
Jaetaanpa lauseke osiin:

Code: Select all

tile_leveys * 
(
-0.5 * MapWidth()
 + x
- 0.5
)
+ ObjectX(kartta)
Sulkeiden sisällä kerrotaan kartan leveys -0.5:llä, eli jaetaan se kahdella ja käännetään negatiiviseksi.
Tämä siksi, että maailmakoordinaateissa 0, 0 on keskellä. Jos kartan koko olisi 32*32, ja esine tulisi laittaa kohtaan 16, 16, tulisi esineen ilmestyä maailman keskelle.
Kertomalla -0.5:llä saadaan kartan vasen yläkulma oikeaan paikkaan.
Seuraavaksi lisätään siihen läpikäytävän paikan vaakakoordinaatti. Jos paikka jälleen on 16, -16+16=0. Vastaavasti -16+0=-16, jos paikka olisi vasen reuna.
Puolikkaan poistaminen koordinaateista ei liity luvulla -0.5 kertomiseen. Sen tarkoitus on siirtää objekti tilen keskelle.
Sitten koko komeus kerrotaan tilen leveydellä. Jos tilejen leveys olisi vaikka 32, eikä sillä kerrottaisi edellä saatuja lukuja, vastaisivat koordinaatit silloin pikseleitä. Silloin tilekartan 0, 0 vastaisi maailmakoordinaattien
kohtaa -32, -32, mikä tarkoittaisi tässä tapauksessa kohtaa keskustan vieressä. Koko sulkeissa oleva laskutoimitus palauttaa tilejen koordinaatit maailmassa. Siispä kerrotaan tilen leveydellä.

Lopuksi pieni viilaus, joka useimmissa tilanteissa lienee turha, mutta jos karttaan on liikuteltu, eivät esineet ilmesty oikein. Siispä siirretään esinettä vielä aiottuun kohtaan suhteessa karttaan.

Nyt saatiin muunnettua melko lyhyellä koodilla kartan tilekoordinaatit maailmakoordinaateiksi, mutta vain vaakasuunnassa. Y-koordinaateille tehdään lähes sama:

Code: Select all

tile_leveys*(-0.5*MapHeight() - y + 0.5) + ObjectY(kartta)
SPuntelta unohtui MapHeight()

Ero on siinä, että kartan keskikohdasta vähennetään aiotun paikan y-koordinaatti. Maailmakoordinaateissa Y kasvaa ylöspäin!

Jotta esineitä ilmestyisi kartalle, täytyy totta kai kartan datakerroksesta löytyä arvoja 4. Tilesteriä käytettäessä klikataan DATA-kerros näkyviin ja DATA-tekstiä klikkaamalla se muuttuu siniseksi.
Kirjoita luku 4 ja piirrä.

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Dec 20, 2011 10:58 pm
by aloittelijamies
^ kiitos tästä

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Dec 22, 2011 12:05 am
by MaGetzUb
Funktio kartalle sijoituksesta, olettaen ettei karttaa olla siirretty moveobjektilla:

Code: Select all

Function SijoitaObjKartalle(objekti, mapX, mapY, tilenLeveys = 32, tilenKorkeus = 32)
      PositionObject objekti, (-MapWidth()*tilenLeveys)/2+mapX*tilenLeveys-ObjectSizeX(objekti)/2, (MapHeight()*tilenLeveys)/2-mapY*tilenLeveys-ObjectSizeY(objekti)/2
EndfFunction 
Esimerkki:

Code: Select all

FrameLimit 40 

kartta = LoadMap("Media\cdm2.til","Media\tileset.bmp")
PlayObject kartta,0,0,1

ukko = LoadObject ("Media\guy.bmp",72)

SetupCollision ukko, kartta, 1, 4, 2
PositionObjectMap(ukko, 20, 45) //Tässä kohtaa käytetään tekemääni funktiota.

Repeat


    If LeftKey() Then TurnObject ukko,5
    If RightKey() Then TurnObject ukko,-5
    If UpKey() Then MoveObject ukko,2
    If DownKey() Then MoveObject ukko,-2

    UpdateGame

    CloneCameraPosition ukko

    DrawScreen

Forever

Function PositionObjectMap(objekti, mapX, mapY, tilenLeveys = 32, tilenKorkeus = 32)
      PositionObject objekti, (-MapWidth()*tilenLeveys)/2+mapX*tilenLeveys-ObjectSizeX(objekti)/2, (MapHeight()*tilenLeveys)/2-mapY*tilenLeveys+ObjectSizeY(objekti)/2
EndFunction 

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Dec 22, 2011 11:40 pm
by aloittelijamies
Koodi toimii oikein(ei heitä mitään erroria kun peli käynnistyy,data-arvot syötetty karttaan ja objektki ladattu mutta silti data-arvoisten tilejen kohdalla ei näy yhtään mitään.

Esine joka ladatiin loadobject komennolla toimii ja näkyy, mutta nämä "kloonanut" ei vaikkakin cloneobject komento on oikein.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Dec 23, 2011 1:49 pm
by valscion
aloittelijamies wrote:Koodi toimii oikein(ei heitä mitään erroria kun peli käynnistyy,data-arvot syötetty karttaan ja objektki ladattu mutta silti data-arvoisten tilejen kohdalla ei näy yhtään mitään.

Esine joka ladatiin loadobject komennolla toimii ja näkyy, mutta nämä "kloonanut" ei vaikkakin cloneobject komento on oikein.
Koita heittää vaikka MakeErrorilla virhettä siinä kohtaa kun kloonaat objektin. Näet sillä sitten että toimiiko objektien laittaminen kartalle alunperinkään.

On hyvä tapa tehdä kloonattavat objektit niin, että lataa ensin master-objektin, josta sitten kloonataan kaikki muut objektit. Master-objekti sitten piilotettaisiin käyttämällä ShowObject-komentoa. Näin koodi olisi yhtenäistä kun kaikkia objekteja käsiteltäisiin tyyppikokoelman jäseninä.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Dec 23, 2011 4:29 pm
by MrMonday
Tuli ongelmia kartan kanssa:

Code: Select all

If GetMap(3,ObjectX(bullet),ObjectY(bullet)) = 4 Then
    EditMap map,1,ObjectX(bullet),ObjectY(bullet),15
    EditMap map,3,ObjectX(bullet),ObjectY(bullet),5
    DeleteObject bullet
EndIf 
Eli pitäisi toimia seuraavasti: Jos ammuksen koordinaateissa tilen data-kerroksessa on arvo neljä, muokataan over-kerrokseen tileksi järjestyksessään 15. tile ja data-kerroksen arvoksi viisi, eli muokataan sitä tileä minkä päällä ammus on ja sen jälkeen poistetaan ammus-objekti. Nyt käy kuitenkin niin, että ilmoittaa "EditMap Failed" ja peli kaatuu siihen paikkaan. Kiitos jo etukäteen avusta :)