Jotain tuon kaltaista voisi kyllä miettiä, jos nyt ei mitään muuta keksi, mutta tyypeillä sen voisi saada hoidettua. Pitäisi muutenkin siistiä koodista monet taulukot tyypeiksi, kun jotenkin fiksumpia monessa kohtaa.Latexi95 wrote:Enkä voisit tehdä Typen johon laitat erikoistilen koordinaatit kun aktivoit sen. Sitten on olet liikkunut niin voit verrata koordinaatteja typessä oleviin. Mikäli ollaan jo liian kaukana, niin vaihdetaan tile takaisin ja poistettaan typen jäsen.
Tyhmät kysymykset (I/2012)
Re: Tyhmät kysymykset (I/2012)
Re: Tyhmät kysymykset (I/2012)
Olen tässä väsäillyt systeemiä jolla voi valita soitettavan kappaleen jonka voi sitten kuunnella painamalla välilyöntiä.
Ongelma on kuitenkin siinä, kun yritän pysäyttää kappaleen niin ohjelma heittää "Unknown runtime exception" tai "Memory access violation" -virheilmoitusta vuorotellen.
Miten saisin koodin toimimaan siten että kappaleen soitto lopetetaan välittömästi välilyöntiä uudestaan painettaessa?
Ongelma on kuitenkin siinä, kun yritän pysäyttää kappaleen niin ohjelma heittää "Unknown runtime exception" tai "Memory access violation" -virheilmoitusta vuorotellen.
Miten saisin koodin toimimaan siten että kappaleen soitto lopetetaan välittömästi välilyöntiä uudestaan painettaessa?
Code: Select all
Include "sdk/include/cbAPI.cb"
playmusic=OFF
If FileDialog(OPEN_FILE_DLG, "*.*", "", "|*.*|") = IDOK Then
play = LoadSound(FileDialogData(FD_FULLNAME))
EndIf
Repeat
If KeyHit(cbkeyspace) Then
playmusic=Not playmusic
If playmusic Then
PlaySound play
Else
StopSound play
EndIf
EndIf
Text 10,10,"Press space to play and stop the music"
DrawScreen
Until EscapeKey()
Re: Tyhmät kysymykset (I/2012)
Manuaalissa lukee LoadSoundin kohdalla seuraavasti: Lataa äänitiedoston muistiin, jotta sitä voitaisiin soittaa. Yleensä isot äänitiedostot (musiikit) kannattaa soittaa suoraan kovalevyltä muistin säästämiseksi (PlaySound-komento), mutta pienet efektit, joita käytetään paljon, kannattaa ladata muistiin.Akuji wrote:Olen tässä väsäillyt systeemiä jolla voi valita soitettavan kappaleen jonka voi sitten kuunnella painamalla välilyöntiä.
Ongelma on kuitenkin siinä, kun yritän pysäyttää kappaleen niin ohjelma heittää "Unknown runtime exception" tai "Memory access violation" -virheilmoitusta vuorotellen.
Miten saisin koodin toimimaan siten että kappaleen soitto lopetetaan välittömästi välilyöntiä uudestaan painettaessa?
Ehkä sinun kannattaisi kokeilla tallentaa play-muuttujaan suoraan PlaySoundin palauttama arvo, jonka sitten tarvittaessa pysäytät. Sitten kun haluat uudelleen aloittaa toistamisen, kutsut vain playsoundia uudelleen ja tallennat sen arvon taas muuttujaan. Eli vähän samalla tavalla kuin StopSound-komennon esimerkissä.
En koodistasi sinänsä löydä mitään virhettä. Yhden iffin sisennys on tosin vähän jännästi ja se meinasi aluksi hämätä.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset (I/2012)
Minä löydän tuosta virheen. Se on nimenomaan se, että StopSoundille annetaan LoadSoundilta saatu ääni eikä PlaySoundilta saatu kanavamuuttuja. Se todennäköisesti aiheuttaa ongelman.
Re: Tyhmät kysymykset (I/2012)
Aivan tosiaan. PlaySoundinhan palautusarvo oli se joka StopSoundille piti antaaLatexi95 wrote:Minä löydän tuosta virheen. Se on nimenomaan se, että StopSoundille annetaan LoadSoundilta saatu ääni eikä PlaySoundilta saatu kanavamuuttuja. Se todennäköisesti aiheuttaa ongelman.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset (I/2012)
Mitenköhän mahtaisi onnistua CurveAngle:n tai CurveValue:n toteuttaminen FPS-riippumattomasti delta-arvon avulla?
Re: Tyhmät kysymykset (I/2012)
Multiplier on delta-arvo sopivasti suhteutettuna.Kumiankka wrote:Mitenköhän mahtaisi onnistua CurveAngle:n tai CurveValue:n toteuttaminen FPS-riippumattomasti delta-arvon avulla?
Code: Select all
Function smooth#(_new#,_old#,_smooth#)
Return _old + (_new - _old) * (1.0 / _smooth) * multiplier
EndFunction
Re: Tyhmät kysymykset (I/2012)
Nyt on pää ihan jumissa enkä mitenkään keksi, miten teen apulinjat hiirenosoittimelle mitä pitkin se sitten liikkuu.
Eli pitäis saada hiirenosotin liikkumaan ruudulla 32pikselin välein y ja x akselilla
voin tietysti tehä
ja screeni on 800pikselii eli pitäis tehä -400asti toi homma
Eli pitäis saada hiirenosotin liikkumaan ruudulla 32pikselin välein y ja x akselilla
voin tietysti tehä
Code: Select all
If mousewx()=400 or mousewx()=368 or mousewx()=336 then
siirrä osoitin hiirenx koordinaattiin
If mousewy()=400 or mousewy()=368 or mousewy()=336 then
siirrä osoitin hiireny koordinaattiin
Re: Tyhmät kysymykset (I/2012)
Kannattaa tehdä niin että piilotat varsinaisen hiiren ja käytät jotain valmista hiirtä esittävää kuvaa ikään kuin kursorina. Piirrät tämän kuvan vain hiiren koordinaatin määrittämiin, tietyssä ruudukossa oleviin kohtiin. Esimerkki ja sen kommentit toivottavasti havainnollistavat, että miten moinen onnistuisi.Paskatraali wrote:Nyt on pää ihan jumissa enkä mitenkään keksi, miten teen apulinjat hiirenosoittimelle mitä pitkin se sitten liikkuu.
Eli pitäis saada hiirenosotin liikkumaan ruudulla 32pikselin välein y ja x akselilla
voin tietysti tehäja screeni on 800pikselii eli pitäis tehä -400asti toi hommaCode: Select all
If mousewx()=400 or mousewx()=368 or mousewx()=336 then siirrä osoitin hiirenx koordinaattiin If mousewy()=400 or mousewy()=368 or mousewy()=336 then siirrä osoitin hiireny koordinaattiin
Code: Select all
' Luodaan vähän isompi ruutu, parempi testi
SCREEN 640, 480
' Ladataan kursoria esittävä kuva
cursorImg = LoadImage("Media/cursor.bmp")
' Asetetaan ladatun kuvan piirtokeskipisteeksi kuvan keskipiste.
' Tämä siksi että kuvassa kursorin kohtaa osoittava pää on tasan
' kuvan keskellä.
HotSpot cursorImg
' Piilotetaan varsinainen hiiri
ShowMouse OFF
Repeat
' Piirretään selkeyden vuoksi 32*32 ruudukko kahdella sisäkkäisellä
' for-silmukalla
Color cbDark
For x = 0 To ScreenWidth() Step 32
For y = 0 To ScreenHeight() Step 32
' Ylhäältä alas
Line x, 0, x, ScreenHeight()
' Vasemmalta oikealle
Line 0, y, ScreenWidth(), y
Next y
Next x
' Lasketaan hiiren koordinaatit 32 pikselin välein olevalla matkalla.
' Koska MouseX ja MouseY palauttavat kokonaisluvun, näiden jakaminen
' luvulla 32 tuottaa aina alaspäin pyöristetyn kokonaisluvun -
' esimerkiksi laskutoimitus ( 50 / 32 ) tuottaisi luvun 1. Kun tämän
' jälkeen saatu luku kerrotaan uudelleen 32:lla, saadaan 32:n pikselin
' välin menevä luku.
mx = (MouseX() / 32) * 32
my = (MouseY() / 32) * 32
' Piirretään hiiren paikkaa osoittava kuvamme lasketuille arvoille
DrawImage cursorImg, mx, my
DrawScreen
Forever
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Re: Tyhmät kysymykset (I/2012)
Mikäs tossa on vikana kun toi cursorimg1 menee ihan erikohtaan kun cursorimg
Code: Select all
Type objektit
Field obj
End Type
SCREEN 800,800
muuri=LoadObject("Media\palikka.bmp")
ShowObject muuri,OFF
cursorImg1 = LoadObject("Media/target.bmp")
cursorImg = LoadObject("Media/target.bmp")
' Asetetaan ladatun kuvan piirtokeskipisteeksi kuvan keskipiste.
' Tämä siksi että kuvassa kursorin kohtaa osoittava pää on tasan
' kuvan keskellä.
' Piilotetaan varsinainen hiiri
ShowMouse OFF
Repeat
Color cbDark
For x = 0 To ScreenWidth() Step 32
For y = 0 To ScreenHeight() Step 32
Line x, 0, x, ScreenHeight()
Line 0, y, ScreenWidth(), y
Next y
Next x
'
mx = (MouseWX() / 32) * 32
my = (MouseWY() / 32) * 32
If MouseHit(1) Then
seinä.objektit = New(objektit) 'luo uusi ammus
seinä\obj=CloneObject(muuri) 'tee klooni
'asetetaan pati samaan paikkaan
PositionObject seinä\obj,mx,my
ObjectOrder seinä\obj,-1
numero=numero+1
EndIf
For seinä.objektit = Each objektit
If MouseDown(2) And ObjectsOverlap(cursorimg,seinä\obj) Then
DeleteObject seinä\obj
Delete seinä
EndIf
Next seinä
PositionObject cursorImg, MouseWX(),MouseWY()
PositionObject cursorImg1, mx,my
Text 0,0,numero
Text 0,20,MouseWX()+" "+MouseWY()
DrawScreen
Forever
Re: Tyhmät kysymykset (I/2012)
Tässä on kaksi ongelmaa. Ensinnäkin, kun haluat keskittää objektin joka 32 pikselin välein, et oikeastaan halua toimia pikeleiden 0, 32, 64, jne kanssa, vaan itse asiassa niiden "puolikkaiden", eli 0 + 16, 32 + 16 (48)..., jne, koska haluat asettaa objektin gridin keskelle, joka on siis kohdassa x + 16.
Toinen ongelma on nollakoordinaattien kanssa. Tässä tapauksessa en ole ikinä keksinyt mitään muuta ratkaisua, kuin tarkastaa onko hiiri nollakoordinaattien plus- vai miinuspuolella, ja korjata asia sen mukaan.
Eli vaihda tämä kohta koodia:
Tähän:
Toinen ongelma on nollakoordinaattien kanssa. Tässä tapauksessa en ole ikinä keksinyt mitään muuta ratkaisua, kuin tarkastaa onko hiiri nollakoordinaattien plus- vai miinuspuolella, ja korjata asia sen mukaan.
Eli vaihda tämä kohta koodia:
Code: Select all
mx = (MouseWX() / 32) * 32
my = (MouseWY() / 32) * 32
Code: Select all
mx = ((MouseWX() + 16) / 32) * 32
my = ((MouseWY() + 16) / 32) * 32
//tehdään pieni koordinaattimuunnos origo ylitettäessä
If MouseWX() < -16 Then mx - 32
If MouseWY() < -16 Then my - 32
Re: Tyhmät kysymykset (I/2012)
Kuinka toteuttaa reaaliaikainen piirtojärjestyksen tarkistus?
Eli olen tekemässä pientä peliä, joka on kuvattu yläviistosta. Ei suoraan ylhäältäpäin, eikä sivusta, vaan n. 45 asteen kulmasta, kuten vanhoilla RPG-peleillä on monesti ollut tapana. Siksi peliin tarvitsisi jonkinlaisen piirtojärjestyksen tarkistuksen, jolla pitäisi tarkistaa että onko jonkin laatikon Y-arvo pienempi kuin toisen. Jos laatikko liikutetaan toisen objektin taakse, edempänä oleva objekti piirretään päällimmäiseksi, ja kun taas laatikko liikutetaan takaisin etualalle se hyppää päällimmäiseksi...
Tiedän että ObjectOrderia voisi käyttää ainakin objekteilla tehtäessä, mutten osaa tuota tarkistusta tehdä järkevästi. Miten tarkistaa mikä objekti piirretään päällimmäiseksi, kun taulukolla on luotu vaikka 50 laatikkoa ja kaikki poukkoilevat ruudulla randomisti x ja y-akselilla? Ja miten toteuttaa tämä ilman objektikäskyjä
Eli olen tekemässä pientä peliä, joka on kuvattu yläviistosta. Ei suoraan ylhäältäpäin, eikä sivusta, vaan n. 45 asteen kulmasta, kuten vanhoilla RPG-peleillä on monesti ollut tapana. Siksi peliin tarvitsisi jonkinlaisen piirtojärjestyksen tarkistuksen, jolla pitäisi tarkistaa että onko jonkin laatikon Y-arvo pienempi kuin toisen. Jos laatikko liikutetaan toisen objektin taakse, edempänä oleva objekti piirretään päällimmäiseksi, ja kun taas laatikko liikutetaan takaisin etualalle se hyppää päällimmäiseksi...
Tiedän että ObjectOrderia voisi käyttää ainakin objekteilla tehtäessä, mutten osaa tuota tarkistusta tehdä järkevästi. Miten tarkistaa mikä objekti piirretään päällimmäiseksi, kun taulukolla on luotu vaikka 50 laatikkoa ja kaikki poukkoilevat ruudulla randomisti x ja y-akselilla? Ja miten toteuttaa tämä ilman objektikäskyjä
-
- Devoted Member
- Posts: 594
- Joined: Tue Sep 30, 2008 4:30 pm
- Location: Ruudun toisella puolella
Re: Tyhmät kysymykset (I/2012)
jonkinnäköinen sorttaus y-koordinaatin perusteella on varmasti paikallaan. En itse ole semmosta tehnyt, sillä mun projektit jotka on tuolla kuvakulmalla toteutettu on yleensä perustunut taulukkoon, jonka voi vaan renderöidä oikeassa järjestyksessä (eli taka-ala ensin ja sieltä sitten edetään for-loopissa edemmäs). Taisipa niissä jopa olla jonkinnäköistä hahmospriteä tms., mutta sen piirto taisi tapahtua aina sen tilen kohdalla loopissa jonka päällä se on. Eli toinen tapa on siis tehdä kartta taulukkoon (ns. tilemappi, mutta teetkin sen koodissa), käydä sitä läpi kahdella for-loopilla ja piirtää objektit tilen päälle silloin, kun for-looppien koordinaatit ovat samat kuin objektin koordinaatit.KaiPr12 wrote:Kuinka toteuttaa reaaliaikainen piirtojärjestyksen tarkistus?
Eli olen tekemässä pientä peliä, joka on kuvattu yläviistosta. Ei suoraan ylhäältäpäin, eikä sivusta, vaan n. 45 asteen kulmasta, kuten vanhoilla RPG-peleillä on monesti ollut tapana. Siksi peliin tarvitsisi jonkinlaisen piirtojärjestyksen tarkistuksen, jolla pitäisi tarkistaa että onko jonkin laatikon Y-arvo pienempi kuin toisen. Jos laatikko liikutetaan toisen objektin taakse, edempänä oleva objekti piirretään päällimmäiseksi, ja kun taas laatikko liikutetaan takaisin etualalle se hyppää päällimmäiseksi...
Tiedän että ObjectOrderia voisi käyttää ainakin objekteilla tehtäessä, mutten osaa tuota tarkistusta tehdä järkevästi. Miten tarkistaa mikä objekti piirretään päällimmäiseksi, kun taulukolla on luotu vaikka 50 laatikkoa ja kaikki poukkoilevat ruudulla randomisti x ja y-akselilla? Ja miten toteuttaa tämä ilman objektikäskyjä
Pahoittelen selitykseni mahdollista epäselvyyttä, ei ole tullut CBllä koodailtua taas hetkeen..
Re: Tyhmät kysymykset (I/2012)
Mulla on tyyppi CHARACTER johon joka ikinen hahmo kuuluu, myös pelaajan hahmo (pelaajan hahmo tarkistetaan char\IsControlled -muuttujan avulla joten ohjattavia voi olla myös useampi kuin yksi). Koko peli on kuva-, ei objektipohjainen ja olen yrittänyt väsätä törmäyksentunnistusta perustuen boxoverlap -komentoon. Idea on että jokaisen hahmon neljällä sivulla on "laatikko" ja kun tälläinen laatikko on hahmon pohjan kohdalla niin silloin sen laatikon suuntaan ei pääse enää liikkumaan. Ongelma onkin vain siinä, että systeemi heittää mavia. Tiedän että se johtuu for loopista mutta ilman sitä koko törmäys ei kai teoriassa edes voi toimia? Mikä avuksi?
Koodi avuksi. Kommentointi englanniksi (kutsun koodinpätkiä välillä vain koodiksi ja välillä ohjelmiksi) mutta jos ymärtää niin pitäisi aika hyvin selvitä mitä tuossa tapahtuu
Koodi avuksi. Kommentointi englanniksi (kutsun koodinpätkiä välillä vain koodiksi ja välillä ohjelmiksi) mutta jos ymärtää niin pitäisi aika hyvin selvitä mitä tuossa tapahtuu
Code: Select all
//<DRAW DISTANCE>
//Here we calculate the draw distance. It is a box that is the size of the screen and it is attached to the camera.
DrawDistX1 = ScreenWidth()/2 + CameraX()
DrawDistX2 = -ScreenWidth()/2 + CameraX()
DrawDistY1 = ScreenHeight()/2 + CameraY()
DrawDistY2 = -ScreenHeight()/2 + CameraY()
//<CHARACTERS>
//This section of the program controls all that is related to characters.
DrawToWorld ON, ON, ON
For char.CHARACTER = Each CHARACTER
//<SUMMARY>
//These few lines of code update the character collision box locations
char\Col1X = char\PosX
char\Col1Y = -char\PosY + gTileSize
Color cbblue
Box char\Col1X, char\Col1Y, gTileSize, gTileSize
//<PLAYER MOVEMENT>
//Player movement is controlled within this section of the program.
If char\IsControlled = True Then
//<SUMMARY>
//This piece of code checks that 1. You are pressing the specified movement key and 2. That you have reached your current waypoint, before it does anything.
//If both conditions are true, then the facing of the player is altered (the actual representation of this is done in the drawing section).
//After changing the facing the program checks whether one of your four collision boxes are overlapping another character/collision piece.
//If true, you won't budge a bit and only play a sound named "bump".
//If false, the program will move your waypoint to a specified point.
If KeyDown(CBKeyW) And char\ReachedPos = True Then
char\Facing = 1
'For char.CHARACTER = Each CHARACTER
If BoxOverlap(char\Col1X, char\Col1Y, gTileSize, gTileSize, char\PosX, char\PosY, gTileSize, gTileSize)
//PlaySound Bump
Else
char\MoveY - gTileSize
char\ReachedPos = False
EndIf
'Next char
ElseIf KeyDown(CBKeyS) And char\ReachedPos = True Then
char\Facing = 2
ElseIf KeyDown(CBKeyA) And char\ReachedPos = True Then
char\Facing = 3
ElseIf KeyDown(CBKeyD) And char\ReachedPos = True Then
char\Facing = 4
EndIf
//<SUMMARY>
//This code checks whether you are at your destination.
//If false it moves you according to your facing.
If char\ReachedPos = False And char\Facing = 1 Then
char\PosY - 1
ElseIf char\ReachedPos = False And char\Facing = 2 Then
ElseIf char\ReachedPos = False And char\Facing = 3 Then
ElseIf char\ReachedPos = False And char\Facing = 4 Then
EndIf
//<SUMMARY>
//This code simply checks if you are at your destination and if true, the flag is set to true
If char\PosX = char\MoveX And char\PosY = char\MoveY Then
char\ReachedPos = True
EndIf
EndIf
//<CHARACTER DRAWING>
//Character drawings are controlled within this section of the program
//<SUMMARY>
//This program checks whether the character is inside the draw distance. If true then flag to draw the character is set to true, else to false.
If char\PosX =< DrawDistX1 And char\PosX => DrawDistX2 And char\PosY =< DrawDistY1 And char\PosY => DrawDistY2 Then
char\IsDrawn = True
Else
char\IsDrawn = False
EndIf
//<SUMMARY>
//This program checks whether a flag to draw the character is set to true, and if it is, the character is drawn
//Future: Disassemble chars to body parts and assemble the parts on screen according to what has been selected.
If char\IsDrawn = True Then
DrawImage char\Img, char\PosX, char\PosY
EndIf
Next char
DrawToWorld OFF, OFF, OFF
Re: Tyhmät kysymykset (I/2012)
Nähtävästi ongelma siis tulee tässä kohdassa, jos ottaa kommenttimerkit For:n ja Next:n edestä pois:Paroni wrote:Mulla on tyyppi CHARACTER johon joka ikinen hahmo kuuluu, myös pelaajan hahmo (pelaajan hahmo tarkistetaan char\IsControlled -muuttujan avulla joten ohjattavia voi olla myös useampi kuin yksi). Koko peli on kuva-, ei objektipohjainen ja olen yrittänyt väsätä törmäyksentunnistusta perustuen boxoverlap -komentoon. Idea on että jokaisen hahmon neljällä sivulla on "laatikko" ja kun tälläinen laatikko on hahmon pohjan kohdalla niin silloin sen laatikon suuntaan ei pääse enää liikkumaan. Ongelma onkin vain siinä, että systeemi heittää mavia. Tiedän että se johtuu for loopista mutta ilman sitä koko törmäys ei kai teoriassa edes voi toimia? Mikä avuksi?
Code: Select all
'For char.CHARACTER = Each CHARACTER
If BoxOverlap(char\Col1X, char\Col1Y, gTileSize, gTileSize, char\PosX, char\PosY, gTileSize, gTileSize)
//PlaySound Bump
Else
char\MoveY - gTileSize
char\ReachedPos = False
EndIf
'Next char
Toinen ongelma, joka tulee ilmi vasta ensimmäisen ratkettua, on se, että törmätessä toiseen hahmoon kuuluu "bump"-ääni, mutta hahmo liikkuu silti eteenpäin. Tämä johtuu siitä, kun törmäys on tarkistettu ja vaikka olisi törmätty niin silti jatketaan törmäysten etsimistä ja laitetaan hahmo liikkeelle jos ei kaikkiin hahmoihin törmätä. Kokeileppa toimiiko seuraavanlainen koodi (en ole varma mitenpäin nuo hahmot olet tarkoittanut):
Code: Select all
Collided = False //Törmäystä ei tapahdu ellei toisin todisteta
For char2.CHARACTER = Each CHARACTER
If char <> char2
If BoxOverlap(char2\Col1X, cha2r\Col1Y, gTileSize, gTileSize, char\PosX, char\PosY, gTileSize, gTileSize)
Collided = True
Exit //Koska törmäys tapahtui, ei ole järkeä jatkaa etsimistä
EndIf
EndIf
Next char2
If Collided
//PlaySound Bump
ElseIf
char\MoveY - gTileSize
char\ReachedPos = False
EndIf
Re: Tyhmät kysymykset (I/2012)
No sehän toimi pienen säädön jälkeen oikein nätisti. Kiitos paljon
En ole itseasiassa aikasemmin edes törmännyt tuollaiseen "if char2<>char then" -koodiin joten ihan hyvä että kysyin.
En ole itseasiassa aikasemmin edes törmännyt tuollaiseen "if char2<>char then" -koodiin joten ihan hyvä että kysyin.
Re: Tyhmät kysymykset (I/2012)
EDIT:
IDE sekoilee:Rupesi toimimaan, kun poistin keskenjääneen IE8-päivityksen.
- Attachments
-
- cb_bug_1.PNG (28.6 KiB) Viewed 17577 times
Last edited by Cooler on Sat Jan 26, 2013 3:55 pm, edited 1 time in total.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
-
- Devoted Member
- Posts: 718
- Joined: Wed Nov 03, 2010 7:56 pm
- Location: Joku piste pohjoisessa.
Re: Tyhmät kysymykset (I/2012)
>>Lataa urlmonin uusin versio netistäCooler wrote:IDE sekoilee:
>>Etsi alkuperäinen urlmon.dll
>>Korvaa alkuperäinen uudella
>>Done
Tai sitten voit päivittää Windows XPn service packin/version/.NET:in. Ohjeet pitäisi löytyä netistä. Tämä on kyllä paljon työläämpää, mutta korjaa kaikki muutkin dll-viat.
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Re: Tyhmät kysymykset (I/2012)
Miksiköhän seuraava koodi ei toimi?
Code: Select all
If pwn\IsDrawn = True Then
If pwn\UpdatePawn = True Then
AssemblePawn(pwn\ID)
EndIf
DrawImage pwn\Img, pwn\PosX, pwn\PosY-(ImageHeight(pwn\Img)-TileSize), pwn\Facing-1 //Kun tästä poistaa pwn\Facing-1 niin kuva piirtyy, mutta vain ensimmäinen frame, muuten vain tyhjää
EndIf
...
Function AssemblePawn(id)
For pwn.PAWN = Each PAWN
For char.CHARACTER = Each CHARACTER
If char\ID = pwn\Owner Then
If pwn\IsAssembled = True Then
DeleteImage pwn\Img
pwn\IsAssembled = False
ElseIf pwn\IsAssembled = False
pwn\Img = MakeImage(TileSize*4, TileSize*2, 4)
DrawToImage pwn\Img
For f = 0 To 3
DrawImage char\Body, TileSize*f, 0, f
Next f
DrawToScreen
pwn\IsAssembled = True
pwn\UpdatePawn = False
Exit
EndIf
EndIf
Next char
Next pwn
EndFunction
Re: Tyhmät kysymykset (I/2012)
Onhan Pwn\Facing suurempi kuin nolla?Paroni wrote:Miksiköhän seuraava koodi ei toimi?Code: Select all
If pwn\IsDrawn = True Then If pwn\UpdatePawn = True Then AssemblePawn(pwn\ID) EndIf DrawImage pwn\Img, pwn\PosX, pwn\PosY-(ImageHeight(pwn\Img)-TileSize), pwn\Facing-1 //Kun tästä poistaa pwn\Facing-1 niin kuva piirtyy, mutta vain ensimmäinen frame, muuten vain tyhjää EndIf ... Function AssemblePawn(id) For pwn.PAWN = Each PAWN For char.CHARACTER = Each CHARACTER If char\ID = pwn\Owner Then If pwn\IsAssembled = True Then DeleteImage pwn\Img pwn\IsAssembled = False ElseIf pwn\IsAssembled = False pwn\Img = MakeImage(TileSize*4, TileSize*2, 4) DrawToImage pwn\Img For f = 0 To 3 DrawImage char\Body, TileSize*f, 0, f Next f DrawToScreen pwn\IsAssembled = True pwn\UpdatePawn = False Exit EndIf EndIf Next char Next pwn EndFunction
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition
Codegolf: 99 bottles of beer (oneliner) - Water map partition