Page 3 of 154

Re: Tyhmät kysymykset

Posted: Thu Sep 06, 2007 7:05 pm
by koodaaja
koppanen wrote:ööö nyt meni sormi suuhun... miteen mää muutan sen et kuinka lähelt se kamera sitä ukkoo seuraa..?
Mitä tarkoitat, "lähellä"? Camerafollowia vai kenties sitä, että hahmo olisi suurempi näytöllä?

Re: Tyhmät kysymykset

Posted: Thu Sep 06, 2007 7:47 pm
by Kerosiinipelle
Tarkennan kysymystäni. Siis: Miten saa objectsoverlapin ja tälläiset toimimaan typeillä tehtyjen vihujen kanssa? Jos laitan ObjectsOverlap(vihu\obj,jack,3) MAVaa.

Re: Tyhmät kysymykset

Posted: Thu Sep 06, 2007 8:34 pm
by koodaaja
Kerosiinipelle wrote:Tarkennan kysymystäni. Siis: Miten saa objectsoverlapin ja tälläiset toimimaan typeillä tehtyjen vihujen kanssa? Jos laitan ObjectsOverlap(vihu\obj,jack,3) MAVaa.
Poistatko vihu\obj:n törmäyksen sattuessa? Silloin sinun pitää muistaa, ettei deletoitua objektia voi käytttää enää mitenkään. Ja onhan sinulla jack -niminen objekti? Kannattanee lähettää vähän enemmän koodia kuin yksi funkkarikutsu parametreineen, kyllähän Moveobject ukko, 1:kin mavaa, jos ukkoa ei ole. Vähän sitä koodia siis, mieluiten vaikka vihujen läpikäyntisilmukka.

Re: Tyhmät kysymykset

Posted: Sat Sep 08, 2007 5:55 pm
by Kerosiinipelle
No, tässä on koodi.
Ja tässä on ongelma: Mavaa, jos koodiin merkittyyn kohtaan laittaa iffiä.

Code: Select all


SCREEN 1024,768,0,0
SetWindow "Peli", 3, "Are you sure you want to quit?"
Goto Valikko


Valikko:

Goto Level1

Level1:

Type AMMUS
    Field obj
End Type 

Type VIHUT 'vihut
    Field enemy1
End Type

FrameLimit 30  'rajoita nopeutta
DrawToWorld ON 'mahdollistaa piirtämisen maailmaan

'lataa kartta
kartta = LoadMap("media\cdm2.til","media\tileset.bmp")
ObjectPickable kartta, ON 'aseta se poimittavaksi
PlayObject kartta,0,0,1 'animoi kartta

'lataa pelaaja
jack = LoadObject ("media\guy.bmp",72)

ObjectPickable jack, 2 'aseta se poimittavaksi

pati=LoadObject("media\bullet.bmp")
ShowObject pati,OFF

Kohde = LoadObject ("media\car2.bmp")
PositionObject kohde,-53,0
          
enemy=LoadObject("media\guy.bmp",72)
PositionObject enemy, 600,200
ShowObject enemy,OFF

'----------------------


SetupCollision jack, kartta, 1, 4, 2
SetupCollision enemy, kartta, 1, 4, 2



Repeat

'---------------------------


    'Ukon ohjaus
    If KeyDown(cbKeyA) Then TurnObject jack,5
    If KeyDown(cbKeyD) Then TurnObject jack,-5
    If KeyDown(cbKeyW) Then MoveObject jack,2
    If KeyDown(cbKeyS) Then MoveObject jack,-1.6
    If KeyDown(cbKeyQ) Then MoveObject jack,0,-2
    If KeyDown(cbKeyE) Then MoveObject jack,0,2
    
    UpdateGame
    
CloneCameraPosition jack

UpdateGame    
    
    DrawGame
DrawToWorld ON    
    '--------------------------

  
        If KeyDown(cbKeyF) And reload=0 Then    
        luoti.AMMUS = New(AMMUS) 'luo uusi ammus
        luoti\obj=CloneObject(pati) 'tee klooni
        'asetetaan pati samaan paikkaan
        CloneObjectPosition luoti\obj,jack               
        'käännetään pati samaan suuntaan
        CloneObjectOrientation luoti\obj,jack           
        reload=0 'aseen lataus        
    EndIf
    'päivitä aseen lataaminen
    If reload>0 Then reload=reload-1

    'Päivitä kaikki ammukset
    For luoti.AMMUS = Each AMMUS
        MoveObject luoti\obj,6
        
If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) <> 0 Then
            DeleteObject luoti\obj
            Delete luoti
            EndIf

   'TÄHÄN LUOTEIHIN LIITTYVÄ IF-HOMMA NIIN MAVAA,
   'esimerkiksi (poista heittomerkit)
   'If ObjectsOverlap (luoti\obj,kohde,3) Then
   'DeleteObject luoti\obj
   'Delete luoti
   'EndIf
   

    Next luoti

    
    '----------------------

Vihollinen.VIHUT = New(VIHUT)       
Vihollinen\enemy1=CloneObject(enemy) 
PositionObject Vihollinen\enemy1,100,623



    DrawScreen 'piirrä näyttö

Forever


Re: Tyhmät kysymykset

Posted: Sat Sep 08, 2007 6:21 pm
by otto90x
Kerosiinipelle wrote:No, tässä on koodi.
Ja tässä on ongelma: Mavaa, jos koodiin merkittyyn kohtaan laittaa iffiä.
Ongelma on se että poistat ensin luodin ja sitten vielä katsot onko se poistettu luoti kohteen päällä, tämän takia se antaa virheilmoituksen. Kokeile seuraavaa:

Code: Select all

If GetMap(2, ObjectX(luoti\obj), ObjectY(luoti\obj)) <> 0 or  ObjectsOverlap (luoti\obj,kohde,3) Then
    DeleteObject luoti\obj
    Delete luoti
EndIf

Re: Tyhmät kysymykset

Posted: Sat Sep 08, 2007 8:13 pm
by Kerosiinipelle
Okei... mutta miten tuohon lisätään kohteen healthinmenetys niin että se ei menetä enua jos luoti osuu seinään?

Re: Tyhmät kysymykset

Posted: Sat Sep 08, 2007 8:34 pm
by otto90x
Kerosiinipelle wrote:Okei... mutta miten tuohon lisätään kohteen healthinmenetys niin että se ei menetä enua jos luoti osuu seinään?
No esimerkiksi näin:

Code: Select all

if *törmäys seinään* then
    *poista luoti*
elseif *törmäys ukkoon* then
   *poista luoti*
   *vähennä hp*
endif
Ja tämä sitten ei ole oikeaa koodia vaan pistät noiden tähdellä merkattujen tilalle sen koodin mitä käytät kyseiseen toimintoon.

Re: Tyhmät kysymykset

Posted: Sun Sep 09, 2007 9:23 pm
by Zrazy_Coder
Tämä kysymys ei kyllä mitenkään koske koodissa tapamaani virhettä tai sellasta. Eli mun rpg on muuten aika pitkällä , mutta grafiikat no ne on vähä sellaset "Onko toi lehmä vai kana" ?. Eli mistäköhän sais ilmaseks grafiikkaa ? Enkä viitti mitää grafiikko ottaa mun projektiin kun en oo yhtää varma tuleeko siitä koskaa valmis. Eli tietääks kukaa mistä saisi ilmaseks ylhäältäpäin kuvattuja tilesettejä kuvia ihmisiä petoja jne.

Re: Tyhmät kysymykset

Posted: Mon Sep 10, 2007 4:52 pm
by Guest
Miten saisin tekstipeliini "skriptin", jolla saa arvottua että: Meneekö ruutuun1 vai 2?
Or ei ainakaan auta Elsellä olen kokeillut myös, mutta aina se menee ruutu1:een.
Helpejä olen yrittänyt katsoa, mutta en ole tällaiseen ongelmaan ratkaisua löytänyt tai sitten olen vain niin noob etten ole löytänyt.
Jos tuo koodi on huonoa (niinkuin se varmaan onkin) voi toki neuvoa parempi tapa miten kannattaa tehdä.

Code: Select all

alku:

ClearKeys

Repeat
Text 10,10, "Tervetuloa pelaamaan tekstipeliä"
VerticalText 375,50, "Valikko"

Text 10,50, "1.Mene kauppaan"
Text 10,60, "2.Mene kotiin"
Text 10,70, "3.Arvonta"

If KeyHit (cbkey1) Then Goto ruutu1
If KeyHit (cbkey2) Then Goto ruutu2
If KeyHit (cbkey3) Then Goto ruutu1 Or ruutu2

DrawScreen
Until EscapeKey()

ruutu1:

ClearKeys

Repeat
Text 10,10, "Tulit kauppaan"

DrawScreen
Until EscapeKey()

ruutu2:

ClearKeys

Repeat
Color cbYellow
Text 10,10, "Tulit kotiin"

DrawScreen
Until EscapeKey()

Re: Tyhmät kysymykset

Posted: Mon Sep 10, 2007 5:18 pm
by Harakka
Käyttämällä Rand()-funktiota, joka palauttaa sattumanvaraisen luvun.

Code: Select all

randomi = rand(0,1)
If keyhit(cbkeyspace) and randomi = 1 then goto ruutu3
Tai tiiviimmin:

Code: Select all

If KeyHit(cbkeyspace) and rand(1) then goto ruudu3

Re: Tyhmät kysymykset

Posted: Mon Sep 10, 2007 6:04 pm
by Guest
Kiitos Harakka avusta nyt sain pelittämään ;)

Re: Tyhmät kysymykset

Posted: Mon Sep 10, 2007 6:09 pm
by vieras
Eli yritän tässä väsätä jonkinmoista hahmonluontisysteemiä kokeilu- ja harjoittelumielessä. Ongelmana on vain se, että nykyisessä muodossaan systeemi ei "tallenna" hahmo-tyypin fieldejä vaan unohtaa ne aina seuraavaan vaiheeseen siirryttäessä. Apua kaipaan ongelman ratkaisussa ja ehdotukset mahdollisesta yksinkertaisemmasta systeemistä otan mielelläni vastaan. ;)

Code: Select all

SCREEN 640,480
FrameLimit 40

courier=LoadFont("courier new",40) 'ladataan fontit
courier1=LoadFont("courier new",16)
courier2=LoadFont("courier new",24)

Type hahmo 'määritetään tyypit
    Field gender$
    Field race$ 
    Field weapons$
    Field magic$
    Field name$
End Type

Global moodi 'määritetään muuttujat globaaleiksi
Global hahmomoodi
Global valinta
Global hahmo

Repeat 'pääsilmukka alkaa

    //HAHMONLUONTI:
    
    PELAAJA_yleis.hahmo = New(hahmo)
    
    moodi=10
    
    If moodi=10 And hahmomoodi=0 Then 'SUKUPUOLI
        Color 96,127,13
        Box 80,60,480,360,1
        Color 192,0,0
        Box 79,59,482,362,0
        Box 430,70,120,340,0
        SetFont courier2
        hl_loota(90,70,"Gender","-choose the gender of thine character-",1,0)
        hl_loota1(90,110,"Race")
        hl_loota1(90,150,"Abilities")
        hl_loota1(90,190,"Weapons")
        hl_loota1(90,230,"Magic")
        hl_loota1(90,270,"Name")
        ElseIf hahmomoodi=1 Then 'VALINTA
            Color 96,127,13
            Box 160,120,320,240,1
            Color 192,0,0
            Box 158,118,324,244,0
            SetFont courier2
            hl_loota(200,150,"Male","-continue-",2,1)
            hl_loota(330,150,"Female","-continue-",2,2)
            If valinta=1 Then 
                PELAAJA_yleis\gender$ = "Male"
                ElseIf valinta=2 Then
                    PELAAJA_yleis\gender$ = "Female"
            EndIf
        ElseIf hahmomoodi=2 Then 'ROTU
            Color 96,127,13
            Box 80,60,480,360,1
            Color cbwhite
            SetFont courier1
            Text 433,73,"Gender: "+ PELAAJA_yleis\gender$
            Color 192,0,0
            Box 79,59,482,362,0
            Box 430,70,120,340,0
            SetFont courier2
            hl_loota1(90,70,"Gender")
            hl_loota(90,110,"Race","-choose the race of thine character-",3,0)
            hl_loota1(90,150,"Abilities")
            hl_loota1(90,190,"Weapons")
            hl_loota1(90,230,"Magic")
            hl_loota1(90,270,"Name")
        ElseIf hahmomoodi=3 Then 'VALINTA
            Color 96,127,13
            Box 160,120,320,240,1
            Color 192,0,0
            Box 158,118,324,244,0
            SetFont courier2
            hl_loota(200,150,"Human","-continue-",4,3)
            hl_loota(330,150,"Elf","-continue-",4,4) 
            hl_loota(200,190,"Dwarf","-continue-",4,5)
            hl_loota(330,190,"Halfling","-continue-",4,6)             
            hl_loota(265,230,"Half-Orc","-continue-",4,7)
            If valinta=3 Then 
                PELAAJA_yleis\race$="Human"
                ElseIf valinta=4 Then
                    PELAAJA_yleis\race$="Elf"
                ElseIf valinta=5 Then
                    PELAAJA_yleis\race$="Dwarf"
                ElseIf valinta=6 Then
                    PELAAJA_yleis\race$="Halfling"
                ElseIf valinta=7 Then
                    PELAAJA_yleis\race$="Half-Orc"  
            EndIf   
        ElseIf hahmomoodi=4 Then 'OMINAISUUDET
            Color 96,127,13
            Box 80,60,480,360,1
            Color cbwhite
            SetFont courier1
            Text 433,73,"Gender: "+ PELAAJA_yleis\gender$ +" "
            Text 433,88,"Race: "+ PELAAJA_yleis\race$ +" "          
            Color 192,0,0
            Box 79,59,482,362,0
            Box 430,70,120,340,0
            SetFont courier2
            hl_loota1(90,70,"Gender")
            hl_loota1(90,110,"Race")
            hl_loota(90,150,"Abilities","-choose the abilities of thine character-",5,0)
            hl_loota1(90,190,"Weapons")
            hl_loota1(90,230,"Magic")
            hl_loota1(90,270,"Name")
    EndIf
    
    DrawScreen 'piirretään kaikki

Forever 'pyöritetään ikuisesti

'---------------------

//hahmonluontilootafunktio AUKI
Function hl_loota(x,y,txt$,info$,z,a)
    Color cbred
    Box x,y,120,35,0
    Color cbwhite
    CenterText x+60,y+6,txt$
    Color cbyellow
    If MouseX()>=x And MouseX()<=x+120 And MouseY()>=y And MouseY()<=y+35 Then
        Box x+2,y+2,114,31,0
        CenterText 320,440,info$
            If MouseHit(1) Then
                valinta=a
                hahmomoodi=z
            EndIf
    EndIf  
End Function

//hahmonluontilootafunktio VARATTU
Function hl_loota1(x,y,txt$)
    Color cbsilver
    Box x,y,120,35,1
    Color cbdark
    CenterText x+60,y+6,txt$
    Color cbred
    If MouseX()>=x And MouseX()<=x+120 And MouseY()>=y And MouseY()<=y+35 Then
        Box x+2,y+2,114,31,0
    EndIf  
End Function

Re: Tyhmät kysymykset

Posted: Mon Sep 10, 2007 6:24 pm
by TheFish
Tuossa on vikana se, että lisäät typeen pääsilmukan sisällä aina uuden jäsenen (ja se näyttää aina uusimman jäsenen tietoja sivulla).

Code: Select all

PELAAJA_yleis.hahmo = New(hahmo)
Siirrä tuo silmukan ulkopuolelle tai tee viritelmä jolla uusi hahmo luodaan vain kun tarvitaan.

Re: Tyhmät kysymykset

Posted: Mon Sep 10, 2007 6:55 pm
by vieras
TheFish wrote:Tuossa on vikana se, että lisäät typeen pääsilmukan sisällä aina uuden jäsenen (ja se näyttää aina uusimman jäsenen tietoja sivulla).

Code: Select all

PELAAJA_yleis.hahmo = New(hahmo)
Siirrä tuo silmukan ulkopuolelle tai tee viritelmä jolla uusi hahmo luodaan vain kun tarvitaan.
Näimpä! Kiitän! :P

Re: Tyhmät kysymykset

Posted: Wed Sep 12, 2007 8:29 am
by vilQuri
Miten saan ladattu peliini Jonkun fontin, ilman että sitä on asennettu mihinkään Fonts kansioon. Tai onkos se edes mahdollista.
:?: :shock:

Re: Tyhmät kysymykset

Posted: Wed Sep 12, 2007 2:57 pm
by Harakka
Ei onnistu. Coolbasic osaa käyttää vain windowsin fonttikansiossa olevia fontteja.

Re: Tyhmät kysymykset

Posted: Wed Sep 12, 2007 3:04 pm
by vilQuri
Kiitti pitää kai järkätä joku install homma

Re: Tyhmät kysymykset

Posted: Wed Sep 12, 2007 4:02 pm
by koppanen
koodaaja wrote:
koppanen wrote:ööö nyt meni sormi suuhun... miteen mää muutan sen et kuinka lähelt se kamera sitä ukkoo seuraa..?
Mitä tarkoitat, "lähellä"? Camerafollowia vai kenties sitä, että hahmo olisi suurempi näytöllä?
siis tarkotan et se ukkoo katotais "ylempää" niin et kartaa näkyis enemmän... ja tieety se ukkoki ois pienenpi.. mahollist?

no mut onks sit mahollist muuttaa tilen kokoa lennos..? eli jos normaalist on 32*32 nii et muuttais sen vaik 16*16 ?
EDIT: joo unohtakaa xD too complicated to me xD

Re: Tyhmät kysymykset

Posted: Wed Sep 12, 2007 4:30 pm
by CCE
Ei ole, tälläistä kartan skaalausta ei ole tällä hetkellä tuettuna CoolBasicissa.

Ellet sitten koodaa karttamoottoriasi itse ;)

Re: Tyhmät kysymykset

Posted: Wed Sep 12, 2007 5:46 pm
by Astigma
koppanen wrote:no mut onks sit mahollist muuttaa tilen kokoa lennos..? eli jos normaalist on 32*32 nii et muuttais sen vaik 16*16 ?
On. Peliä ladatessa teet tilesetistäsi pienennoksen (tai suurennoksen) ResizeImage-komennolla. Tämän jälkeen lataat taulukkoon kaikkien kartan kerroksien tiedot. Tämän jälkeen sinulla on kaikki avaimet miltei reaaliaikaiseen tilekartan "zoomaukseen". Kun haluat muuttaa tilen kokoa, luot uuden tyhjän tilekartan, johon liität aiemmin pienennetyn tilesetin ja datan saat taulukosta. Tämä ei vie paljoa suoritusaikaa. Jos haluat palata takaisin suurempaan tilekokoon, yksinkertaisesti luot taas uuden tyhjän tilekartan ja teet saman homman, mutta käytät normaalikokoista tilesettiä. Tietysti muistat poistaa joka välissä vanhan tilekartan muistia viemästä.

Tällä tavoin on toteutettu myös A Stigmatorin zoomaustoiminto.