Page 25 of 154
Re: Tyhmät kysymykset
Posted: Tue Jan 22, 2008 2:59 pm
by Jonez
Käytinkö nyt tuota objectframea ihan oikein vai onko vika muualla?
Osaatko englantia hyvin? CB:ssä kun on sellainen toiminto, että yleensä se ilmoittaa minkälainen virhe on kyseessä, jos peli ei käynnisty. Kaiken lisäksi se lähes aina kertoo myös rivin millä virhe esiintyy.
Tässä tulee error:
Wrong usage of a keyword.
Keyword 'objectframe' needs to be expressed with a set of brackets at line 58.
Tarkoittaa suunnilleen: Avainsanaa käytetty väärin, avainsana 'objectframe' tarvitsee sulut (brackets) rivillä 58 (at line 58).
Niinpä hyppäsin heti riville 58 ja huomasin että se oli suoraan sanottuna päin mäntyä
Kuten virhe kertoo, et ole käyttänyt sulkuja funkkarissa ObjectFrame. Se tarvitsee kyseisen objektin jonka frame halutaan saada selville. Ja mitä ne ObjectY(vihu1) ja ObjectX(vihu1) siellä tekevät?
Seuraavan koodin kuitenkin pitäisi toimia. En voi (tai jaksa) testata ilman mediaa.
Code: Select all
If ObjectsOverlap( heppu, vihu1 ) And ObjectFrame( huitaisu ) => 1 Then vihu1elämä - 1
Edit. Taas yksi viesti jota editoin sata kertaa...
En nyt kattonut koodiasi tarkemmin, mutta oletko varma ettei sun pitäisikin tehdä tota if-lauseketta näin:
If ObjectsOverlap(
huitaisu, vihu1 ) And ObjectFrame( huitaisu ) => 1 Then vihu1elämä - 1
Re: Tyhmät kysymykset
Posted: Tue Jan 22, 2008 3:52 pm
by beg
Jonez wrote:Käytinkö nyt tuota objectframea ihan oikein vai onko vika muualla?
Osaatko englantia hyvin? CB:ssä kun on sellainen toiminto, että yleensä se ilmoittaa minkälainen virhe on kyseessä, jos peli ei käynnisty. Kaiken lisäksi se lähes aina kertoo myös rivin millä virhe esiintyy.
Tässä tulee error:
Wrong usage of a keyword.
Keyword 'objectframe' needs to be expressed with a set of brackets at line 58.
Tarkoittaa suunnilleen: Avainsanaa käytetty väärin, avainsana 'objectframe' tarvitsee sulut (brackets) rivillä 58 (at line 58).
Niinpä hyppäsin heti riville 58 ja huomasin että se oli suoraan sanottuna päin mäntyä
Kuten virhe kertoo, et ole käyttänyt sulkuja funkkarissa ObjectFrame. Se tarvitsee kyseisen objektin jonka frame halutaan saada selville. Ja mitä ne ObjectY(vihu1) ja ObjectX(vihu1) siellä tekevät?
Seuraavan koodin kuitenkin pitäisi toimia. En voi (tai jaksa) testata ilman mediaa.
Code: Select all
If ObjectsOverlap( heppu, vihu1 ) And ObjectFrame( huitaisu ) => 1 Then vihu1elämä - 1
Edit. Taas yksi viesti jota editoin sata kertaa...
En nyt kattonut koodiasi tarkemmin, mutta oletko varma ettei sun pitäisikin tehdä tota if-lauseketta näin:
If ObjectsOverlap(
huitaisu, vihu1 ) And ObjectFrame( huitaisu ) => 1 Then vihu1elämä - 1
Olisi pitänyt katsoa se "brackets" sanakirjasta.
Taas toimii mainiosti, mutta vihun elämät ei pienene.
Code: Select all
SCREEN 200,100
aloitapeli=LoadObject("media\aloitapeli.bmp")
lopetapeli=LoadObject("media\lopetapeli.bmp")
hiiri=LoadObject ("media\cursor.bmp")
ShowMouse OFF
PositionObject aloitapeli,0,30
PositionObject lopetapeli,0,-20
Repeat
PositionObject hiiri,MouseWX(),MouseWY()
If ObjectsOverlap (hiiri,aloitapeli) And MouseHit(1) Then Goto peli
If ObjectsOverlap (hiiri,lopetapeli) And MouseHit(1) Then End
DrawScreen
Forever
peli:
SCREEN 0,0,0,cbfullscreen
FrameLimit 40
kuollutvihu1=LoadObject("media\kuollutvihu1.bmp",72)
ShowObject kuollutvihu1,OFF
vihu1=LoadObject("media\vihu1.bmp",72)
heppu=LoadObject("media\kamu.bmp",72)
tähtäys=LoadObject("media\hiiri.bmp")
huitaisu=LoadAnimObject("Media\huitaisu2.bmp",150,50,0,11,72)
ShowObject huitaisu,OFF
ObjectRange huitaisu,30,51
PositionObject heppu,500,-400
PositionObject vihu1,500,-425
vihu1elämä=3
Repeat
Text 100,60,""+vihu1elämä
If vihu1elämä<1 Then PaintObject vihu1,kuollutvihu1
If ObjectsOverlap( huitaisu, vihu1 ) And ObjectFrame( huitaisu ) => 8 Then vihu1elämä - 1
PositionObject kuollutvihu1,ObjectX(vihu1),ObjectY(vihu1)
PositionObject tähtäys,MouseWX(),MouseWY()
If KeyDown (17) Then TranslateObject heppu,0,2
If KeyDown (30) Then TranslateObject heppu,-2,0
If KeyDown (31) Then TranslateObject heppu,0,-2
If KeyDown (32) Then TranslateObject heppu,2,0
huitaisu:
If MouseDown(1) Then
PaintObject heppu,huitaisu
PlayObject heppu,0,10,0.40
Else
PlayObject heppu,0
EndIf
PointObject heppu,tähtäys
DrawScreen
Until EscapeKey()
EDIT:Laitan vielä tämmösen kysymyksen tähän etten täytä koko topikkia. Eli miten saisin autoja kulkemaan kartassa niin, että ne kääntyisivät aina käännöksissä sulavasti oikealle tai vasemmalle?
Re: Tyhmät kysymykset
Posted: Tue Jan 22, 2008 4:49 pm
by Marcoder
beg wrote:Taas toimii mainiosti, mutta vihun elämät ei pienene.
Itseasiassa et soita lainkaan tuota "huitaisu"-animaatiota vaan ainoastaan maalaat heppu-objektin sillä.
Näin ollen muuta iffi tällaiseksi.
Code: Select all
If ObjectsOverlap( heppu, vihu1 ) And ObjectFrame( heppu) => 8 Then vihu1elämä - 1
Re: Tyhmät kysymykset
Posted: Tue Jan 22, 2008 7:18 pm
by avuton
Haluan objektin siirtyvän tilestä A tileen B kartan data-kerroksen tunnuksien avulla (esim. A = 1, B = 2)...
Aivot lyö nollaa, ja en keksi, mitä koodia tuohon nuolen osoittamaan kohtaan tulisi heittää.
Code: Select all
siirry (OMA\obj, 1, 2, "(E)nter the tent") 'funktio in action
'----------------------------------------------------------------------'
Function siirry (obj, tile_mistä, tile_mihin, txt$) 'funktio
If GetMap (3, ObjectX(obj), ObjectY(obj)) = tile_mistä Then
Text 100, 420, txt$
If KeyDown(cbKeyE) Then
'aseta pelaaja tileen 2 (data-kerroksen mukaan) <---------------------
EndIf
EndIf
End Function
Re: Tyhmät kysymykset
Posted: Tue Jan 22, 2008 7:27 pm
by tuhoojabotti
käy kartta läpi joka tile ja kun tärppää data kerroksessa niin muuta koordinaatti pikselikoordinaatiksi ja positionobjectii
en itse keksinyt muutakaan
Posted: Tue Jan 22, 2008 10:31 pm
by Myst!c
Jos haluan räiskintäpeliin semmoisen liikkumisen että tietty
ukko ylänuolinäppäimestä menee eteenpäin ja alanuoli-
näppäimestä alas MUTTA, pelissä on myös hiiri ja se voi
liikkua ruudulla vapaasti ja ukko olisi pointobjectilla kokoajan
päin hiirtä, mutta tämäpä ei onnistu koska hiiri on image
ja showmouse hommat sun muut eivät toimi jos lataan hiiren
objektina. Eikä cloneobjectpositionillakaan voi koska hiiri ei
edelleen toimi objektina.
Toivottavasti joku ymmärsi
ongelmani.
Kiitokset etukäteen!
EDIT: Eikä mielellään koodia vaan tapa jolla se toteutetaan.
Pieni koodinpätkä ei tosin haittaa.
Re: Tyhmät kysymykset
Posted: Tue Jan 22, 2008 10:43 pm
by Harakka
Eli ukko liikkuu näppäimistä ilmansuuntiin ja katsoo hiireen? Siinä tapauksessa toteuta liikkuminen translateobjectilla ja laita ukkeli osoittamaan hiireen seuraavalla koodinpätkällä:
Code: Select all
RotateObject ukko, -GetAngle(ObjectX(ukko), ObjectY(ukko), MouseWX(), MouseWY())
Posted: Tue Jan 22, 2008 10:54 pm
by Myst!c
Kiitos paljon.
Toimii kuin unelma, nyt toteuttamaan seuraavaa
juttua toivoen ilman ongelmia.
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 8:51 am
by Myst!c
Tuotaa, tähtäimen seuraaminen onnistuu mutta jos en liikuta
tähtäintä ja ammun niin huomaa että ukko on täsmälleen täht-
äimen vasempaan yläkulmaan päin, kokeilin koon muutoksia
ja sun muita. :/ Jos joku viitsisi auttaa niin kiitos.
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 9:55 am
by Marcoder
Myst!c wrote:Tuotaa, tähtäimen seuraaminen onnistuu mutta jos en liikuta
tähtäintä ja ammun niin huomaa että ukko on täsmälleen täht-
äimen vasempaan yläkulmaan päin, kokeilin koon muutoksia
ja sun muita. :/ Jos joku viitsisi auttaa niin kiitos.
Ilmeisesti piirrät tähtäimen DrawImage:lla.
Toisin kuin objekteilla joilla piirtopiste on kuvan keskellä, kuvat piirretään annettuihin koordinaatteihin alkaen vasemmasta yläkulmasta.
Myös kuvan piirtopisteen voi muuttaa HotSpot-komennolla ja kuvan keskelle se onnistuu vaikka näin:
Code: Select all
HotSpot tähtäin, ImageWidth(tähtäin) / 2, ImageHeight(tähtäin) / 2
Ei siis missään loopissa vaan latauksen jälkeen.
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 2:48 pm
by Myst!c
Öm ensiksi, onkohan minulla vanhempi cb tai jotain koska en ole nähnyt yhtään
tuon vastaista komentoa siellä. :S Ja sitten että paukun menosuunta ei edelleenkään
vaihtunut, se ampuu tähtäimen vasempaan ylänurkkaan edelleen. :/
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 2:58 pm
by Marcoder
Myst!c wrote:Öm ensiksi, onkohan minulla vanhempi cb tai jotain koska en ole nähnyt yhtään
tuon vastaista komentoa siellä. :S Ja sitten että paukun menosuunta ei edelleenkään
vaihtunut, se ampuu tähtäimen vasempaan ylänurkkaan edelleen. :/
Ööö, siis mitä komentoa? HotSpot vai joku muu?
Tässä yksinkertainen koodinpätkä joka havainnollistaa tuota hotspottia.
Auton pitäisi piirtyä hiirikursorin alle siten että kursori on auton keskellä.
Kokeile seuraavaksi niin että kommentoit tuon HotSpot-rivin ja ajat koodia uudestaan. Huomaat eron.
Jos ei vieläkään tyimi niin teet jotain väärin tai sitten puhumme eri asioista. Jos vaikka voisit laittaa jotain koodinpätkää (ammuksen lähtösuunnan asetus ja tähtäimen piirto).
Code: Select all
img = LoadImage("media/car.bmp")
HotSpot img, ImageWidth(img) / 2, ImageHeight(img) / 2
Repeat
DrawImage img, MouseX(), MouseY()
DrawScreen
Forever
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:05 pm
by Myst!c
Ei vieläkään. :S Koodia:
Code: Select all
Type AMMUS
Field obj
End Type
Ukko = LoadObject("Media\guy3.bmp", 72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
hiiri = LoadImage("media/tahtain.bmp")
MaskImage hiiri, cbmagenta
ShowMouse hiiri
HotSpot hiiri, ImageWidth(hiiri) / 2, ImageHeight(hiiri) / 2
Repeat
Drawgame
hiiriX=MouseX()
hiiriY=MouseY()
If MouseHit(1) And reload=0 Then
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj, 6, 10.5
reload=5
EndIf
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
Next luoti
DrawImage hiiri, MouseX(), MouseY()
RotateObject ukko, -GetAngle(ObjectX(ukko), ObjectY(ukko), MouseWX(), MouseWY())
Drawscreen
Forever
Koodi on kauhean näköistä ja niin eespäin.
EDIT: Ja niin että onko mitään muita ratkaisuja koska haluaisin
ymmärtää itsekkin jotain, en osaa käyttää hotspottia, ensimmäinen
kerta ku näen vastaavanlaisen komennon. :S
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:22 pm
by Marcoder
Tuossa pätkässähän ei ukkoa käännetä lainkaan mutta se on toinen juttu se.
Itse alkuperäiseen ongelmaan:
Ei oltu ihan samalla aaltopituudella tuossa aiemmin mutta tuo koodi selvensi asiaa.
Kun luot ammuksen, laitat sen ensin ukon positioon ja asentoon. Sitten siirrät ammusta myös sivusuunnassa (aseen piipun kohdalle tietenkin) .
Ammuksen suunta on edelleen sama kuin ukkelin rintamasuunta joten se menee kohteesta sen verran ohi kuin siirsit sitä sivuttain.
Tuossa osa koodista ja kommentoin ne kohdat joita muutin.
Code: Select all
// KÄÄNNÄ UKKO KOHTI HIIRTÄ
RotateObject ukko, -GetAngle(ObjectX(ukko), ObjectY(ukko), MouseWX(), MouseWY())
If MouseHit(1) And reload=0 Then
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,ukko
// TÄTÄ EI TARVITA
//CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj, 6, 10.5
// KÄÄNNÄ AMMUS KOHTI HIIRTÄ
RotateObject luoti\obj, -GetAngle(ObjectX(luoti\obj), ObjectY(luoti\obj), MouseWX(), MouseWY())
reload=5
EndIf
Myst!c wrote:Koodi on kauhean näköistä ja niin eespäin.
Ihan siedettäväähän tuo. Paljon pahempaakin on nähty
EDIT: Ja niin että onko mitään muita ratkaisuja koska haluaisin
ymmärtää itsekkin jotain, en osaa käyttää hotspottia, ensimmäinen
kerta ku näen vastaavanlaisen komennon. :S
Katso helpistä HotSpotin ohje. Se on aika simppeli juttu.
Toinen mahdollisuus piirtää kuva jonkin tietyn pisteen keskelle olisi:
Code: Select all
DrawImage img, x - ImageWidth(img) / 2, y - ImageHeight(img) / 2
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:28 pm
by Myst!c
Noniin alkoi toimimaan mutta huomasin
kinkkisen ongelman.
Pati ei lähde enää
piipusta vaan se lähtee mistä sattuu, jos
katson ylös niin se melkein lähtee piipusta
ja kun katson alas niin se lähtee vasemmasta
kädestä. :S Ja loput voit päätelläkkin itse
mihin ne kääntyy kun katson muualle.
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:31 pm
by Marcoder
Myst!c wrote:Noniin alkoi toimimaan mutta huomasin
kinkkisen ongelman.
Sori, mun moka
Tuo // TÄTÄ EI TARVITA juttu eli CloneObjectOrientation on sittenkin tarpeellinen.
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:32 pm
by Myst!c
Ei voi olla totta... Ongelma ei juurikaan muuttunut.
Sama juttu että ei lähde piipusta. :/
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:35 pm
by beg
Marcoder wrote:beg wrote:Taas toimii mainiosti, mutta vihun elämät ei pienene.
Itseasiassa et soita lainkaan tuota "huitaisu"-animaatiota vaan ainoastaan maalaat heppu-objektin sillä.
Näin ollen muuta iffi tällaiseksi.
Code: Select all
If ObjectsOverlap( heppu, vihu1 ) And ObjectFrame( heppu) => 8 Then vihu1elämä - 1
Mitenhän saisin vihun vielä menettämään vain yhden elämän per huitaisu ja nytkin se menettää elämää vain kun pelaaja koskettaa sitä?
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:36 pm
by Marcoder
Laitetaan vielä koko koodi jolla ainakin toimii. Mediat muutettu niin että toimii suoraan copypastettuna cb:ssä.
Code: Select all
Type AMMUS
Field obj
End Type
Ukko = LoadObject("Media\guy.bmp", 72)
pati=LoadObject("Media\bullet.bmp")
ShowObject pati,OFF
hiiri = LoadImage("media/target.bmp")
//MaskImage hiiri, cbmagenta
ShowMouse hiiri
HotSpot hiiri, ImageWidth(hiiri) / 2, ImageHeight(hiiri) / 2
Repeat
Drawgame
hiiriX=MouseX()
hiiriY=MouseY()
// KÄÄNNÄ UKKO KOHTI HIIRTÄ
RotateObject ukko, -GetAngle(ObjectX(ukko), ObjectY(ukko), MouseWX(), MouseWY())
If MouseHit(1) And reload=0 Then
luoti.AMMUS = New(AMMUS)
luoti\obj=CloneObject(pati)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
MoveObject luoti\obj, 6, 10.5
// KÄÄNNÄ AMMUS KOHTI HIIRTÄ
RotateObject luoti\obj, -GetAngle(ObjectX(luoti\obj), ObjectY(luoti\obj), MouseWX(), MouseWY())
reload=5
EndIf
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
MoveObject luoti\obj,6
Next luoti
DrawImage hiiri, MouseX(), MouseY()
Drawscreen
Forever
Re: Tyhmät kysymykset
Posted: Wed Jan 23, 2008 3:40 pm
by Myst!c
Kiitos!
Koodisi toimii ja nyt vain katsomaan
mikä minun koodissani oli väärin xD
EDIT: Haa, minulla oli patin liikutus ja patin
kulman määrittäminen ukon kanssa väärinpäin,
vaihdoin niiden paikkaa ja alkoi toimimaan.