Page 9 of 23

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Mar 29, 2012 11:20 pm
by naputtelija
Hmm... Jossain täälläpäin oli joku exenpurkamistuto. Voisitteko vähän täsmentää, kuka sen kirjoitti ja mistä se löytyy?

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 30, 2012 12:15 am
by Viltzu
naputtelija wrote:Hmm... Jossain täälläpäin oli joku exenpurkamistuto. Voisitteko vähän täsmentää, kuka sen kirjoitti ja mistä se löytyy?
Exenpurkamis... UPX pakattu -> UPX -d filu.exe. Tässä vähän varmaa kysymykseesi liittyen asiaa viewtopic.php?p=38114#p38114

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 30, 2012 10:30 am
by naputtelija
Viltzu wrote:
naputtelija wrote:Hmm... Jossain täälläpäin oli joku exenpurkamistuto. Voisitteko vähän täsmentää, kuka sen kirjoitti ja mistä se löytyy?
Exenpurkamis... UPX pakattu -> UPX -d filu.exe. Tässä vähän varmaa kysymykseesi liittyen asiaa viewtopic.php?p=38114#p38114
Kiitos. Minulla olisi matematiikassa sellainen yhtälö, jota en ymmärrä:

(2e^4/3e^5)^2 pitäisi olla sievennettynä 4/9e^2. Minä en vain ymmärrä, miten se sievennetään. Auttaisitteko idioottia?

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Mar 30, 2012 11:32 am
by koodaaja
(2e^4/(3e^5))² = (2*e*e*e*e/(3*e*e*e*e*e))² = (2/(3e))² = 2²/(3²e²) = 4/(9e²)

Jos millään tapaa selventää. Eli jaettaessa potenssit voi yksinkertaisesti vähentää, a^x/a^y = a^(x-y). Ja koska e:n potenssi jäisi tuossa negatiiviseksi, se jää jakajaan. Ja yleisenä huomiona, virtuaalimaailmoissa pyöriessä kannattaa kirjoittaa a/(bc) eikä vain a/bc, esimerkiksi kaikki näkemäni laskimet laskevat jälkimmäisen muodossa (a/b)c, mikä on tyystin eri asia kuin haluttiin. a/b/c toimii myös.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Apr 01, 2012 6:00 pm
by axu
Olen yrittänyt tässä kirjoittaa koodia, joka järjestäisi typekokoelman jäsenet tietyn numeerisen arvon mukaan, mutta jostakin syystä en nyt saa aikaiseksi edes hitaasti toimivaa järjestysfunktiota. Milloin ohjelma jää ikuiseen silmukkaan, milloin kaatuu Mitä Auttavimpiin Virheilmoituksiin ja sain aikaan jopa virheimoituksen, jota en ollut ennen nähnyt :O
Huomasin myös, että Insertissä on erikoinen bugi. Yritäpä saada joku kokoelman jäsen toiseksi jäseneksi. Insert t, After(First(mytype)) lisääkin t:n yllättävästi kolmanneksi jäseneksi :S
Tässäpä hyvin pelkistetty koodi, jonka tarkoituksena on vain saada jäsenet järjestykseen. Kaatuu Insertin kohdalla seuraavanlaiseen virheilmoitukseen: "ERROR: Memory leak due to invalid type access attempt." (eli älä aja jos tämä pelottaa).

Code: Select all

Type Block
    Field Z#
End Type

For i = 1 To 10
    nB.Block = New(Block)
    nB\Z = Rnd(50)
Next i

Repeat
    Swap = False
    iB.Block = After(First(Block))
    While iB <> NULL
        jB.Block = Before(iB)
        
        If iB\Z > jB\Z Then Insert iB, Before(jB) : Swap = True
        iB = After(iB)
    Wend
Until Swap = False
EDIT:

Tuohan tietenkin kaatuu heti ensimmäisellä kerralla, koska Before(jB) = Before(Before(iB)) = Before(Before(After(First(Block))) = Before(First(Block)). Mutta kaatuu se silti vaikka menisi muuttamaan tuon rivin 12 iB.Block = After(After(First(Block))), en keksi järkevää syytä.


Re: Tyhmät kysymykset (I/2011)

Posted: Sun Apr 01, 2012 7:40 pm
by Awaclus
axu wrote:Olen yrittänyt tässä kirjoittaa koodia, joka järjestäisi typekokoelman jäsenet tietyn numeerisen arvon mukaan, mutta jostakin syystä en nyt saa aikaiseksi edes hitaasti toimivaa järjestysfunktiota. Milloin ohjelma jää ikuiseen silmukkaan, milloin kaatuu Mitä Auttavimpiin Virheilmoituksiin ja sain aikaan jopa virheimoituksen, jota en ollut ennen nähnyt :O
Huomasin myös, että Insertissä on erikoinen bugi. Yritäpä saada joku kokoelman jäsen toiseksi jäseneksi. Insert t, After(First(mytype)) lisääkin t:n yllättävästi kolmanneksi jäseneksi :S
Tässäpä hyvin pelkistetty koodi, jonka tarkoituksena on vain saada jäsenet järjestykseen. Kaatuu Insertin kohdalla seuraavanlaiseen virheilmoitukseen: "ERROR: Memory leak due to invalid type access attempt." (eli älä aja jos tämä pelottaa).

Code: Select all

Type Block
    Field Z#
End Type

For i = 1 To 10
    nB.Block = New(Block)
    nB\Z = Rnd(50)
Next i

Repeat
    Swap = False
    iB.Block = After(First(Block))
    While iB <> NULL
        jB.Block = Before(iB)
        
        If iB\Z > jB\Z Then Insert iB, Before(jB) : Swap = True
        iB = After(iB)
    Wend
Until Swap = False
EDIT:

Tuohan tietenkin kaatuu heti ensimmäisellä kerralla, koska Before(jB) = Before(Before(iB)) = Before(Before(After(First(Block))) = Before(First(Block)). Mutta kaatuu se silti vaikka menisi muuttamaan tuon rivin 12 iB.Block = After(After(First(Block))), en keksi järkevää syytä.

Voisin kuvitella, että tämä on helpointa toteuttaa käyttämällä kahta tyyppikokoelmaa, joista ensimmäistä oikeasti käytetään ja toinen on melkein koko ajan jäsenetön, mutta pitää sisällään samat fieldit kuin ensimmäinenkin. Sitten tarkistaa, mikä tyyppikokoelman 1 jäsenistä on tietyltä numeroarvoltaan suurin tai pienin ja tekee identtisen uuden jäsenen tyyppikokoelmaan 2 ja poistaa sen jäsenen tyyppikokoelmasta 1. Sitten toistaa tätä kunnes tyyppikokoelma 1 on tyhjä, ja sitten samaan tapaan "kopioi" jäsenet tyyppikokoelmasta 2 kokoelmaan 1, mutta tällä kertaa sen voi tehdä suoraan järjestyksessä ja sitten poistaa ne kokoelmasta 2.

Ei varmasti ole optimaalisin tapa, ja voi olla vaikea hyödyntää jotain universaalisti toimivaa funktiota tehdessä, mutta tällä tavalla minä tämän ongelman ratkaisin joku aika takaperin kun tällaista systeemiä yhdessä projektissa tarvitsin.

Re: Tyhmät kysymykset (I/2011)

Posted: Sun Apr 01, 2012 8:42 pm
by axu
Chaosworm wrote:Voisin kuvitella, että tämä on helpointa toteuttaa käyttämällä kahta tyyppikokoelmaa, joista ensimmäistä oikeasti käytetään ja toinen on melkein koko ajan jäsenetön, mutta pitää sisällään samat fieldit kuin ensimmäinenkin. Sitten tarkistaa, mikä tyyppikokoelman 1 jäsenistä on tietyltä numeroarvoltaan suurin tai pienin ja tekee identtisen uuden jäsenen tyyppikokoelmaan 2 ja poistaa sen jäsenen tyyppikokoelmasta 1. Sitten toistaa tätä kunnes tyyppikokoelma 1 on tyhjä, ja sitten samaan tapaan "kopioi" jäsenet tyyppikokoelmasta 2 kokoelmaan 1, mutta tällä kertaa sen voi tehdä suoraan järjestyksessä ja sitten poistaa ne kokoelmasta 2.

Ei varmasti ole optimaalisin tapa, ja voi olla vaikea hyödyntää jotain universaalisti toimivaa funktiota tehdessä, mutta tällä tavalla minä tämän ongelman ratkaisin joku aika takaperin kun tällaista systeemiä yhdessä projektissa tarvitsin.
Kuulostaa kyllä aika työläältä ja hitaalta tavalta... Mietin, voisiko jotain tehdä tallentamalla muistipaloihin typeosoittimet (converttointeger), järjestämällä muistipalan sisällä osoittimet järjestykseen ja siitä jotenkin muutettua itse tyyppikokoelman jäsenet.

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Apr 02, 2012 7:39 am
by MetalRain
Tai sitten voi käyttää pelkästään muistipaloja.

Code: Select all

määrä=10

//luodaan lista alkioille
lista=MakeMEMBlock(4+määrä*4)

//ensimmäiset neljä tavua merkkaa alkioiden määrää
PokeInt lista,0,määrä
//näin voidaan varata listaan kokoa ennen sen käyttöä
//sillä listan koon muuttaminen jatkuvasti vie aikaa

For i=1 To määrä
    //luodaan uusi alkio
    alkio=MakeMEMBlock(8)
    
    PokeFloat alkio,0,Rnd(-1.0,1.0)
    PokeInt alkio,4,Rand(1,1000)
    
    Print PeekInt(alkio,4)+" "+PeekFloat(alkio,0)

    //kirjoitetaan alkio listaan
    PokeInt lista,i*4,alkio
Next i

Print "---"

t=Timer()

//järjestetään lista 0 tavusta alkavan liukuluvun suhteen
lista=QuickSortByFloat(lista,0)
//tai kokonaisluvun mukaan
//lista=QuickSortByInt(lista,4)

t= Timer()-t

//haetaan niin monta alkiota kuin lista sisältää
For i=1 To määrä
    alkio=PeekInt(lista,i*4)
    //tulostetaan arvot
    Print PeekInt(alkio,4)+" "+PeekFloat(alkio,0)
Next i

Print "Sorting took "+t+" ms!"
WaitKey 



//List on muistipala jonka alussa on kokonaislukuna alkioiden lukumäärä
//Alkiot ovat omia muistipalojansa ja voivat sisältää mitä tahansa arvoja
//Funktio etsii järjestettävää desimaalilukua alkiosta floatposition arvon perusteella, 
//oletuksena alkion alusta.
Function QuickSortByFloat(list,floatposition=0)
    //http://en.wikipedia.org/wiki/Quicksort

    listsize = PeekInt(list,0)
   
    If listsize=1 Then Return list
    
    pivot = Rand(1,listsize)
    
    pivotitem = PeekInt(list,pivot*4)
    
    pivotvalue# = PeekFloat(pivotitem,floatposition)

    For i=1 To listsize
    
        If i<>pivot Then 
            
            iteritem = PeekInt(list,i*4)
    
            If iteritem Then 
            
                itervalue# = PeekFloat(iteritem,floatposition)
            
                If itervalue# < pivotvalue# Then 
                    If Not lesserlist Then lesserlist = MakeMEMBlock(listsize*4)
                    lesserlistitems = lesserlistitems + 1
                    PokeInt lesserlist,lesserlistitems*4,iteritem
                
                ElseIf itervalue# > pivotvalue# Then 
                    If Not greaterlist Then greaterlist = MakeMEMBlock(listsize*4)
                    greaterlistitems = greaterlistitems + 1
                    PokeInt greaterlist,greaterlistitems*4,iteritem
                   
                ElseIf itervalue# = pivotvalue# Then 
                    If Not pivotlist Then pivotlist = MakeMEMBlock(listsize*4)
                    PokeInt pivotlist, pivotlistitems*4,iteritem
                    pivotlistitems = pivotlistitems+1
                EndIf 
            EndIf 
        EndIf 
    Next i
    
    listpointer=4
    
    If lesserlistitems > 0 Then 
    
        PokeInt lesserlist,0,lesserlistitems
    
        If lesserlistitems > 1 Then sortedless = QuickSortByFloat(lesserlist,floatposition) Else sortedless = lesserlist

        sortedlesssize = PeekInt(sortedless,0)
        MemCopy sortedless,4,list,listpointer,sortedlesssize*4
        
        listpointer=listpointer+sortedlesssize*4
        
        DeleteMEMBlock sortedless
    EndIf 
    
    PokeInt list,listpointer,pivotitem
    
    listpointer=listpointer+4
    
    If pivotlistitems > 0 Then 
        
        MemCopy pivotlist,0,list,listpointer,pivotlistitems*4

        DeleteMEMBlock pivotlist
        
        listpointer=listpointer+pivotlistitems*4
    EndIf 
    
    If greaterlistitems > 0 Then 
        
        PokeInt greaterlist,0,greaterlistitems
        
        If greaterlistitems> 1 Then sortedgreater = QuickSortByFloat(greaterlist,floatposition) Else sortedgreater = greaterlist
        
        sortedgreatersize = PeekInt(sortedgreater,0)
        MemCopy sortedgreater,4,list,listpointer,sortedgreatersize*4
        
        DeleteMEMBlock sortedgreater
    EndIf 
        
    PokeInt list,0,(sortedlesssize+1+pivotlistitems+sortedgreatersize)

    Return list
    
End Function

//List on muistipala jonka alussa on kokonaislukuna alkioiden lukumäärä
//Alkiot ovat omia muistipalojansa ja voivat sisältää mitä tahansa arvoja
//Funktio etsii järjestettävää kokonaislukua alkiosta intposition arvon perusteella, 
//oletuksena alkion alusta.
Function QuickSortByInt(list,intposition=0)
    //http://en.wikipedia.org/wiki/Quicksort

    listsize = PeekInt(list,0)
   
    If listsize=1 Then Return list
    
    pivot = Rand(1,listsize)
    
    pivotitem = PeekInt(list,pivot*4)
    
    pivotvalue = PeekInt(pivotitem,intposition)

    For i=1 To listsize
    
        If i<>pivot Then 
            
            iteritem = PeekInt(list,i*4)
    
            If iteritem Then 
            
                itervalue = PeekInt(iteritem,intposition)
            
                If itervalue < pivotvalue Then 
                    If Not lesserlist Then lesserlist = MakeMEMBlock(listsize*4)
                    lesserlistitems = lesserlistitems + 1
                    PokeInt lesserlist,lesserlistitems*4,iteritem
                
                ElseIf itervalue > pivotvalue Then 
                    If Not greaterlist Then greaterlist = MakeMEMBlock(listsize*4)
                    greaterlistitems = greaterlistitems + 1
                    PokeInt greaterlist,greaterlistitems*4,iteritem
                   
                ElseIf itervalue = pivotvalue Then 
                    If Not pivotlist Then pivotlist = MakeMEMBlock(listsize*4)
                    PokeInt pivotlist, pivotlistitems*4,iteritem
                    pivotlistitems = pivotlistitems+1
                EndIf 
            EndIf 
        EndIf 
    Next i
    
    listpointer=4
    
    If lesserlistitems > 0 Then 
    
        PokeInt lesserlist,0,lesserlistitems
    
        If lesserlistitems > 1 Then sortedless = QuickSortByInt(lesserlist,intposition) Else sortedless = lesserlist

        sortedlesssize = PeekInt(sortedless,0)
        MemCopy sortedless,4,list,listpointer,sortedlesssize*4
        
        listpointer=listpointer+sortedlesssize*4
        
        DeleteMEMBlock sortedless
    EndIf 
    
    PokeInt list,listpointer,pivotitem
    
    listpointer=listpointer+4
    
    If pivotlistitems > 0 Then 
        
        MemCopy pivotlist,0,list,listpointer,pivotlistitems*4

        DeleteMEMBlock pivotlist
        
        listpointer=listpointer+pivotlistitems*4
    EndIf 
    
    If greaterlistitems > 0 Then 
        
        PokeInt greaterlist,0,greaterlistitems
        
        If greaterlistitems> 1 Then sortedgreater = QuickSortByInt(greaterlist,intposition) Else sortedgreater = greaterlist
        
        sortedgreatersize = PeekInt(sortedgreater,0)
        MemCopy sortedgreater,4,list,listpointer,sortedgreatersize*4
        
        DeleteMEMBlock sortedgreater
    EndIf 
        
    PokeInt list,0,(sortedlesssize+1+pivotlistitems+sortedgreatersize)

    Return list
    
End Function

Re: Tyhmät kysymykset (I/2011)

Posted: Mon Apr 02, 2012 9:53 am
by axu
MetalRain wrote:Tai sitten voi käyttää pelkästään muistipaloja.
Tämä olisi muuten hyvä idea, mutta koodista tulee helposti vaikeaselkoista kun dataa on paljon (>10 muuttujaa) ja merkkijonoja ei voi toteuttaa järkevästi.
Huomasin muuten, että käytät tuossa QuickSortia järjestysalgoritmina. Itse olin ajatellut käyttää Insertion Sortia, mutta en ole oikein varma. Käyttötarkoitus on järjestää kokoelman jäsenet piirtojärjestykseen. Pelissä ei ole montaa liikkuvaa asiaa, joten järjestys on useimmiten lähes oikea, muutama jäsen on väärässä paikassa. Todennäköisesti järjestettäviä kohteita on 10-40. Kumpi on tällöin nopeampi? Toisaalta minulla olisi kätkössä jo valmis CombSort11 implementaatio, mitenköhän se toimisi tässä?

Hyvin nukutun yön jälkeen aloin miettiä ongelmaa toisesta näkökulmasta. Miksi minun pitäisi käydä tyyppikokoelma läpi For...Each lausekkeella? Edellisestä ajatuksestani voi jättää viimeisen kohdan pois, eli tyypit saa jäädä koskemattomaksi, laaditaan vain taulukko (tai muistipala), joka sisältää jäsenten osoittimet ja läpikäydään aina siinä järjestyksessä. Koodina kutakuinkin näin:

Code: Select all

Dim Tyypit(1)
For iB.Block = Each Block
    n + 1
Next iB
ReDim Tyypit(n)
iB = First(Block)
For i = 0 To n - 1
    Tyypit(i) = ConvertToInteger(iB)
    iB = After(iB)
Next i

//---järjesteleminen tähän

For i = 0 To n - 1
    iB = ConvertToType(Tyypit(i))
    //Tähän jotain toimintaa
Next i

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Apr 03, 2012 7:25 pm
by Konstaduck
Mitähän mahtaisi tarkoittaa kuvan ongelma?

Image

Re: Tyhmät kysymykset (I/2011)

Posted: Tue Apr 03, 2012 8:59 pm
by Timblex
Johtuu luultavasti siitä, että sinulla on liian paljon täysin samanlaisia komentoja peräkkäin joten CoolBasicin exenkirjoittaja valittaa.
EDIT:

Tämä sama virheilmoitus tulee myös jos yrität tunkea esim. merkkijonoon liian pitkää tekstiä eli toisin sanoen, kun tietotyypin kapasiteetti ylitetään.


Re: Tyhmät kysymykset (I/2011)

Posted: Wed Apr 04, 2012 10:26 pm
by duck
miten toteutetaan vihollisen tasainen kääntyminen pelaajaa kohti?
eli huolimatta pelaajan kulmasta viholliseen nähden, vihollinen kääntyy samaa tasaista vauhtia pelaajaa kohti.

curveanglella ja pointobjectilla molemmilla tulee tietyissä tilanteissa liian jyrkät kääntymiset.

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Apr 04, 2012 11:03 pm
by axu
duck wrote:miten toteutetaan vihollisen tasainen kääntyminen pelaajaa kohti?
eli huolimatta pelaajan kulmasta viholliseen nähden, vihollinen kääntyy samaa tasaista vauhtia pelaajaa kohti.

curveanglella ja pointobjectilla molemmilla tulee tietyissä tilanteissa liian jyrkät kääntymiset.
En nyt jaksa miettiä läpikotaisin miten se tapahtuu, mutta kyseessähän on 2 askelta: 1. Selvitetään pitääkö kääntyä myötä- vai vastapäivään. 2. Käännytään halutun määrän verran.
Toinen kohta tuskin tuottaa vaikeuksia, mutta ensimmäinen niinkin. Tätä varten vihollisen nykyisen kulman ja vihollisen ja pelaajan välisen kulman erotus pitää ensin selvittää. Sitten tutkitaan, pitääkö kääntyä vastapäivään (positiivinen suunta), eli onko tuo kulma 0<x<180 vai myötäpäivään, 180<x<360.

Re: Tyhmät kysymykset (I/2011)

Posted: Wed Apr 04, 2012 11:19 pm
by duck
jeps ,kiitos. tuosta oli apua. lähes kaikkea getangleilla leikkimistä olikin jo kokeiltu :D
ehkä vielä illalla saa taas päivitystä projektiin :)

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Apr 05, 2012 3:01 pm
by Konstaduck
timpe99 wrote:Johtuu luultavasti siitä, että sinulla on liian paljon täysin samanlaisia komentoja peräkkäin joten CoolBasicin exenkirjoittaja valittaa.
EDIT:

Tämä sama virheilmoitus tulee myös jos yrität tunkea esim. merkkijonoon liian pitkää tekstiä eli toisin sanoen, kun tietotyypin kapasiteetti ylitetään.

Tai sitten siitä, että tuota MakeErroria oli lähemmäs kahtasataatuhattariviä. Pelleilin sisentäjällä, ja siitä tulikin sitten lisääjä. Täytti koko tiedoston ensimmäisellä merkkijonolla :D

Onko CB:ssä muuten minkäänlaista koodirajoitusta? Siis sillein että johonkin pisteeseen asti antaa koodata, mutta sen jälkeen antaa Erroria, että vähennä koodia??

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Apr 05, 2012 4:53 pm
by Timblex
Konstaduck wrote:
timpe99 wrote:Johtuu luultavasti siitä, että sinulla on liian paljon täysin samanlaisia komentoja peräkkäin joten CoolBasicin exenkirjoittaja valittaa.
EDIT:

Tämä sama virheilmoitus tulee myös jos yrität tunkea esim. merkkijonoon liian pitkää tekstiä eli toisin sanoen, kun tietotyypin kapasiteetti ylitetään.

Tai sitten siitä, että tuota MakeErroria oli lähemmäs kahtasataatuhattariviä. Pelleilin sisentäjällä, ja siitä tulikin sitten lisääjä. Täytti koko tiedoston ensimmäisellä merkkijonolla :D

Onko CB:ssä muuten minkäänlaista koodirajoitusta? Siis sillein että johonkin pisteeseen asti antaa koodata, mutta sen jälkeen antaa Erroria, että vähennä koodia??
No tuotahan minä juuri tarkoitin. Ja ei ole mitään koodirajaa ainakaan minun tietääkseni, jos olisi niin joku jolle se on tullut vastaan olisi varmaan kirjoitellut asiasta foorumille.

Re: Tyhmät kysymykset (I/2011)

Posted: Thu Apr 05, 2012 10:56 pm
by Viltzu
Muistelisin että editorissa oli jokin jännyys eikä näyttänyt kaikkia rivejä kun niitä oli paljon. Yli 6000 riviä. En enää edes muista mistä tämä tieto on peräisin enkä edes nyt jaksa testailla.
EDIT:

Chaosworm wrote:Minulla ainakin yli 100 000 riviä näkyi toimivan ihan hyvin.
Okei tämä selvä. :)[/edit]

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Apr 06, 2012 7:12 am
by Awaclus
Viltzu wrote:Muistelisin että editorissa oli jokin jännyys eikä näyttänyt kaikkia rivejä kun niitä oli paljon. Yli 6000 riviä. En enää edes muista mistä tämä tieto on peräisin enkä edes nyt jaksa testailla.
Minulla ainakin yli 100 000 riviä näkyi toimivan ihan hyvin.

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Apr 06, 2012 8:49 am
by Konstaduck
Taas näitä CB:n hämäriä erroreja... Selittäkääs minulle, mitä tuossa tilanteessa pitäisi tehdä?
EDIT:

Ja tuo koko virheilmoitus menee näin: Sovellus tai DLL C:/Program Files/CoolBasic/Omat/Funktiokirjastot/cbChipmunk/cbChipmunk/cbChipmunk.cb ei ole kelvolinen windows NT - vedos. Tarkista tämä asennuslevykkeeltä

Image

Re: Tyhmät kysymykset (I/2011)

Posted: Fri Apr 06, 2012 8:57 am
by Timblex
Tuo Windows NT vedos viittaa siihen että sen pitäisi olla dll mutta tuossa lukee, että tiedosto on cbChipmunk.cb vaikka sen pitäisi varmaankin olla cbChipmunk.dll