The 14th Black Crusade - PÄIVITETTY 31.3.

Jaa meneillään olevat projektisi tai valmiit pelit muun yhteisön kanssa täällä.
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: The 14th Black Crusade

Post by tuhoojabotti »

plääh tääs kaatu maviin ;( sen härskin kuvan voisi poistaa siitä slaashin dungeonista sorry en ihan muista niitä kenttien nimiä :D mutta se uus recoil systeemi mikä heittää tähtäimen huitsin nevadaan on ihan surkee vie ilon pelistä ;(
EDIT:

voisit myös laittaa niin että törmäys seinään poistaisi osan nopeudesta eihän ne kumistä oo tehty? se vaatisi kuitenkin muutosta törmäys systeemiin eli 2 torso palaa yhden sijaan että tietää törmäys puolen ?

EDIT:

voisi myös laittaa readmen / muun helppi tiedoston kaikille napeille ynnä muille :D

EDIT:

tietty myös vaihdettavat napit olisi poikaa ja semmosia ominaisuuksia että esim veren määrää voi nopeasti muuttaa esim asetukset sivulla jossa on myös nappien edit työkalu :D äänien lujuudet ehkä aseeditori :D

Last edited by tuhoojabotti on Mon Feb 11, 2008 9:11 pm, edited 3 times in total.
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
Mysterius Coder
Active Member
Posts: 133
Joined: Mon Aug 27, 2007 8:13 pm

Re: The 14th Black Crusade

Post by Mysterius Coder »

OMG tämä peli alkaa vähitellen käydä koukuttavaksi. Löysin hetken peleilun jälkeen itseni koukussa. 5 minuutin sessio oli venynyt puoleen tuntiin. Näin yksinkertainen sielu olen. Necronit rulaa Bwhaaa! Uskallakin antaa tämän projektin kaatua, mie kostan :mrgreen: Sen verran voisin pistää, että laita siihen valikkoon joku Start buttoni, wasd ohjaus olis kiva ja rullasta aseenvaihto kans. Siinäpä kaikki. Tai eipä sittenkään, keksin kamalan uber juonen.
Sota on jatkunut iäti. Voittaja ei ole koskaan ratkennut. Nyt kuitenkin vanhijen vihollisten on liittouduttava kun tuntematon voima Infinity palaa olemassaoloon. Infinityn armeijat rynnivät pitkin maailmankaikkeutta. ainoa toivo on yhdistää sotivat puolet väliaikaisesti ja käydää sotaan yhtenäisinä. MArinet ja kaaosmarinet solmivat välirauhan ja alkavat kasata voimiaan. Kaikki pitäisi saada mukaan. Infinity, kaiken alku ja loppu on herännyt.
lol joo mulla oli taas tylsää.
Kyllä minä osaan, mutta kun mieli on tällasen kaaoksen vallassa, niin ei siitä mitään tule.
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: The 14th Black Crusade

Post by MaGetzUb »

tuhoojabotti wrote:plääh tääs kaatu maviin ;( sen härskin kuvan voisi poistaa siitä slaashin dungeonista sorry en ihan muista niitä kenttien nimiä :D mutta se uus recoil systeemi mikä heittää tähtäimen huitsin nevadaan on ihan surkee vie ilon pelistä ;(
EDIT:

voisit myös laittaa niin että törmäys seinään poistaisi osan nopeudesta eihän ne kumistä oo tehty? se vaatisi kuitenkin muutosta törmäys systeemiin eli 2 torso palaa yhden sijaan että tietää törmäys puolen ?

EDIT:

voisi myös laittaa readmen / muun helppi tiedoston kaikille napeille ynnä muille :D

EDIT:

tietty myös vaihdettavat napit olisi poikaa ja semmosia ominaisuuksia että esim veren määrää voi nopeasti muuttaa esim asetukset sivulla jossa on myös nappien edit työkalu :D äänien lujuudet ehkä aseeditori :D

Sen verran, mitä minä itse tiedän, niin eihän 2:ta törmäys tarkistus palaa tarvita, koska pelaaja voi liikkua vain yhteen suuntaan, eli tarttee vaan sitä yhtä palaa siirrellä pari pikseliä aina ukon "suunnan" mukaan. :) Koskahan törmäys tulee tapahtumaan aina siihen suuntaan, mihin päin ukko kävelee. ;)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: The 14th Black Crusade

Post by -Z- »

programmer of DSG wrote:...eli tarttee vaan sitä yhtä palaa siirrellä pari pikseliä aina ukon "suunnan" mukaan. :) Koskahan törmäys tulee tapahtumaan aina siihen suuntaan, mihin päin ukko kävelee. ;)
Fail! Ukolla voi juosta/lentää takaperinkin. Ja tuo nimi on muuten hyvä, en olisi itse paljon parempaa keksinyt. Ei mitään hömppää, vaan kunnolla Warrhammeriin liittyvä nimi, muttei kuitenkaan mistään kopioitu.

Milloin saadaan lisää pelattavaa?
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: The 14th Black Crusade

Post by MaGetzUb »

Siis eih! Tuo homma tarvitsee vain yhen palasen, ja sitä ei periaatteessa tarvitse liikutella yhtään.
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
REGALIS (en ehtinyt kirjautua)

Re: The 14th Black Crusade

Post by REGALIS (en ehtinyt kirjautua) »

Ei tuossa mitään kahta törmäyspalikkaa tarvita. Jos hahmo törmää sivuttaissuunnassa liikkuessaan oikealle, se on varmasti törmännyt oikealla sivullaan.

Sitä paitsi törmäysreunaa ei edes tarvitse tietää, koska nopeuden kääntäminen vastakkaiseksi ja interpoloiminen kohti nollaa riittää.
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: The 14th Black Crusade

Post by tuhoojabotti »

joo ihan sama en oo mikään super kooderi kun en saa ees pelejäni valmiiksi :D mutta joo...
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: The 14th Black Crusade

Post by MaGetzUb »

Olin kerrankin oikeassa! :D Mut saadaankos jo jotai uuttaa, testingiks??
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: The 14th Black Crusade

Post by regalis »

Viimeisin versio on nyt ladattavissa netistä. En tehnyt eiliseen päivitykseen mitään muita lisäyksiä, kuin että bottien puheet, uuden rekyylisysteemin ja hylsyt saa kytkettyä halutessaan pois. Suurin osa tällä sivulla mainituista parannuksista lisätään jossain vaiheessa peliin.
Mitään ase-editoria ei imo tarvita, kun nytkin muokkaaminen hoituu suht helposti notepadilla ja paintilla. Weapon-tiedostoa vaan tutkimaan ja modeja kyhäämään. Muutan vielä datatiedostot INI-muotoon, niin että niitä on helpompi muokata.

Nyt olen tutkinut vähän Marcoderin nettifunktioita, ja saattaa ehkä olla etäisesti yhden promillen varmuudella melkein mahdollista että alkeellisen nettipelin tekeminen saattaisi ehkä onnistua. (Eli ei kannata todellakaan vielä innostua)
iTKEVAnAKKI wrote:Ja nyt täytät tän: ;)
Minä, Regalis, lupaan, että jos projektini "The 14th Black Crusade" kehitys lopetetaan, annan sen sourcen CoolBasic foorumille levitykseen. Jos en anna sorsaa minulle saa antaa banaania.

Noniin. :D Aloin tänään virittelemään nettipeliä, ja sainkin sen toimimaan jotenkuten. Tai oikeastaan clienteille lähetetään ainoastaan muiden clienttien pelihahmojen koordinaatit, pelihahmon kuva ja käden kulma, mutta alku sekin on. Älkää silti vielä odottako liikoja, ei ole todellakaan varmaa että saan nettipelin toimimaan kunnolla!
Last edited by regalis on Wed Feb 13, 2008 10:35 pm, edited 1 time in total.
iTKEVAnAKKI
Advanced Member
Posts: 335
Joined: Tue Aug 28, 2007 3:55 pm
Location: Siellä jossain

Re: The 14th Black Crusade

Post by iTKEVAnAKKI »

Ja nyt täytät tän:
Minä (nikkis) lupaan, että jos projektini "The 14th Black Crusade" kehitys lopetataan, annan sen sourcen CoolBasic foorumille levitykseen. Jos en anna sorsaa minulle saa antaa banaania.
;)

Alkaa tää projekti oleen jo todella mahtava. Nettipeli enään ni täydellinen!
Projektit:
Joku projekti meneillään... Mitähän siitäkin tulee ;)
User avatar
-Z-
Devoted Member
Posts: 682
Joined: Tue Aug 28, 2007 3:33 pm
Location: In ur danmaku, grazin ur bullets

Re: The 14th Black Crusade

Post by -Z- »

iTKEVAnAKKI wrote:Nettipeli enään ni täydellinen!
Ja kenttäeditori! Älä unohda kenttäeditoria! Niin, ja pelattavia hahmojakin voisi olla enemmän. Kartoista nyt puhumattakaan. Joku capture the flag - pelimuoto voisi olla kiva. Muuten, oletko tehnyt grafiikat itse?
"Fallout 3 (#10) marked a shift in the industry, a move that saw the western RPG begin to surpass its Japanese counterparts." -IGN top 100 RPGs of all time
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: The 14th Black Crusade

Post by regalis »

Hahmoja tulee vielä ainakin örkit.

Grafiikoista melkein kaikki GFX-kansiossa olevat kuvat ja osa maastonpaloista ovat minun ja kavereideni piirtämiä. Karttatekstuurit ja suurin osa maastonpaloista on hankittu mm. soldatin foorumeilta ja muualta netistä.

Itseasiassa olen jo tehnyt kenttäeditorin. Kaikki kentät on tehty sillä. Voisin nyt pistää sen tähän, vaikka se onkin vielä todella vaikeakäyttöinen ja ulkoasultaan karu... Tein koko homman käytännössä kokonaan yhden illan aikana, joten mitenkään käyttäväystävällinen se ei todellakaan ole. Ja koodi on hirveää purkkaa. Koodi täytyy olla tallennettuna 14th BC:n kansioon, jotta se toimii.

Code: Select all

SCREEN 800, 600

Dim scenery(500)
Dim scenerynames(500) As String
Dim rain(500, 5) As Float

Type SCENERYOBJECTS
    Field sceX      As Float
    Field sceY      As Float
    Field layer     As integer
    Field name      As String
End Type

Type WAYPOINTS
    Field Xcoord
    Field Ycoord
    Field speedX    As Float
    Field speedY    As Float
    Field speedX2    As Float
    Field speedY2    As Float    
    Field newX
    Field newY
    Field newX2
    Field newY2
End Type

Global backlayer

rainAmount = 500
raintype = 1

backvisible = True
hitvisible = True
overvisible = True 

circ = MakeImage(5,5)
DrawToImage circ
    Color cbdarkred
    Circle 0,0, 5
    Color cbred
    Circle 1,1, 3
DrawToScreen 
Color cbwhite

For i = 0 To RainAmount
    Rain(i,0) = Rand(1, 800)
    rain(i,01) = Rand(-600, 0)
Next i

AddText "Ladataan maastonkappaleita..."
DrawScreen 

ChDir "SCENERY"

StartSearch
    Repeat
        file$ = FindFile()
        If file$ = "" Then Exit
        AddText "file: " +file
        DrawScreen 
        If IsDirectory(file) = False And file <> "Thumbs.db" Then 
            scenery(maastonkappaleet) = LoadImage(file$)
            MaskImage scenery(maastonkappaleet), 0, 255, 0
            scenerynames(maastonkappaleet) = file$
            maastonkappaleet + 1
        EndIf 
    Forever
EndSearch

ChDir ".."
ChDir "MAPS"

Repeat
    ClearText
    LoadedMap$ = Input ("Karttatiedoston polku (jos tiedostoa ei ole olemassa, se luodaan): ")
    If KeyHit(cbkeyreturn) Then 
        If FileExists(loadedmap) Then
            kartanpolku$ = Loadedmap         
            Gosub mapload
            CloseInput
            Goto EDITOR
        Else
            kartanpolku$ = Loadedmap    
            CloseInput             
            Goto NEWLEVEL
        EndIf 
    EndIf 
    DrawScreen
Forever

NEWLEVEL:
ChDir "MAPS"

Repeat 
    texture$ = Input ("Tekstuuritiedoston polku: ")
    DrawScreen
Until KeyHit(cbkeyreturn)

MapTexture = LoadImage(texture) 
CloseInput 

Repeat 
    shape$ = Input ("Karttatiedoston polku: ")
    DrawScreen
Until KeyHit(cbkeyreturn)

MapShape = LoadImage(shape) 
CloseInput 

AddText "Luodaan karttaa..."
DrawScreen

MaskImage MapShape, 0, 255, 0
ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2

Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))

HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
DrawToImage HitLayer
    For x = 0 To Xkerroin
        For y = 0 To Ykerroin
            DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
        Next y
    Next x
DrawImage MapShape, 0, 0

BackLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))

DrawToScreen

EDITOR:

showpoints = True 

Repeat 

Color cbwhite 

    ClearText
    AddText "FPS: " +FPS()
    AddText "Valitse tasojen näkyvyys A-, S- ja D-näppäimillä."
    AddText "Luo waypointeja klikkaamalla hiiren oikeaa painiketta."
    AddText "Valitse taustaväri painamalla control-näppäintä"
    AddText "Valitse sateen tyyppi 1, 2 tai 3 -näppäintä"
    AddText " "
    AddText "Taustakerros: " +backvisible
    
    If KeyHit(30) Then
        If backvisible = False Then backvisible = True Else backvisible = False
    EndIf
    If backvisible = True Then DrawImage backlayer, WorldToScreenX(0), WorldToScreenY(0)
    
    AddText "Törmäyskerros: " +hitvisible
    If KeyHit(31) Then
        If hitvisible = False Then hitvisible = True Else hitvisible = False
    EndIf     
    If hitvisible = True Then DrawImage hitlayer, WorldToScreenX(0), WorldToScreenY(0)    
    
    AddText "Päälliskerros: " +overvisible
    If KeyHit(32) Then
        If overvisible = False Then overvisible = True Else overvisible = False
    EndIf
    If overvisible = True Then DrawImage overlayer, WorldToScreenX(0), WorldToScreenY(0) 
    
    AddText ""
    AddText "Muokattava kerros: " + editedlayer
    
    If KeyHit(16) Then EditedLayer = 1
    If KeyHit(17) Then editedlayer = 2
    If KeyHit(18) Then editedlayer = 3
    
    TranslateCamera  RightKey() * 5 - LeftKey() * 5, UpKey() * 5 - DownKey() * 5
    
    if KeyHit(59) Then Gosub SaveMap
    
    If KeyHit(157) Then
        Repeat 
            ClearText
            AddText "colorsetup: " +colorsetup
            AddText "RED 1: " +r1
            AddText "GREEN 1: " + g1
            AddText "BLUE 1: " +b1
            AddText "RED 2: " +r2
            AddText "GREEN 2: " + g2
            AddText "BLUE 2: " +b2          
            Select colorsetup
                Case 0
                    If LeftKey() Then R1 - 1
                    If RightKey() Then R1 + 1
                Case 1
                    If LeftKey() Then G1 - 1
                    If RightKey() Then G1 + 1 
                Case 2
                    If LeftKey() Then B1 - 1
                    If RightKey() Then B1 + 1   
                Case 3
                    If LeftKey() Then R2 - 1
                    If RightKey() Then R2 + 1
                Case 4
                    If LeftKey() Then G2 - 1
                    If RightKey() Then G2 + 1 
                Case 5
                    If LeftKey() Then B2 - 1
                    If RightKey() Then B2 + 1 
                    If KeyHit(208) Then Exit                  
            End Select
            If KeyHit(200) Then colorsetup - 1
            If KeyHit(208) Then colorsetup + 1

            DrawScreen 
        Forever 
        MakeGradient(ImageWidth(backlayer) * 1.5, ImageHeight(backlayer) * 1.5, r1, g1, b1, r2, g2, b2)
    EndIf
    
    Select RainType
        Case 1
            For i = 0 To RainAmount
                If Rain(i,2) = 0 Then Rain(i,2) = Rnd(4,5)
                If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                Rain(i,0) = Rain(i,0) - rain(i, 2)
                Rain(i,1) = Rain(i,1) + rain(i, 3)
                
                Dot rain(i,0), rain(i,1)
                
                If Rain(i,1) > 800 Or rain(i,0) < 0 Then Rain(i,1) = 0 : Rain(i,0) = Rand(2,1800)
            Next i
        Case 2
            For i = 0 To RainAmount
                rain(i,2) = 0
                If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                Rain(i,0) = Rain(i,0) - rain(i, 2)
                Rain(i,1) = Rain(i,1) + rain(i, 3)
                
                Dot rain(i,0), rain(i,1)
                
                If Rain(i,1) > 800 Then Rain(i,1) = 0 : Rain(i,0) = Rand(0,800)
            Next i             
    End Select
        
    If KeyHit(cbkey1) Then raintype = 1
    If KeyHit(cbkey2) Then raintype = 2
    If KeyHit(cbkey3) Then raintype = 3
    
    If KeyHit(cbkeyZ) Then
        If showpoints = False Then showpoints = True Else showpoints = False
    EndIf 
    
    AddText "PlacingWaypoint: " +placingwaypoint
    
    If MouseHit(2) And placingwaypoint = False Then
        way.WAYPOINTS = New(WAYPOINTS)
        waypointAmount + 1
        way\Xcoord = MouseWX()
        way\Ycoord = MouseWY()
        PlacingWaypoint = True 
    EndIf    
    
    If PlacingWaypoint = True Then
        AddText "Klikkaamalla hiiren vasemmalla painikkeella saat valittua mihin suuntaan"
        AddText "botti lähtee tullessaan waypointille."
        AddText "Voit luoda toisen vaihtoehtoisen suunnan klikkaamalla hiiren keskimmäisellä"
        AddText "painikkeella. Tullessaan waypointille, johon on tallennettu kaksi suuntaa, "
        AddText "botti lähtee sattumanvaraisesti toiseen niistä."
        angle = GetAngle(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
        dist = Distance(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
        Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY()
        If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
        If MouseHit (1) Then 
            If Dist > 5 Then way\speedX = Cos(angle) : way\speedy = Sin(angle)
            way\newX = MouseWX()
            way\newY = MouseWY()            
            placingWaypoint = False
        EndIf 
        If MouseHit(3) Then
            If Dist > 5 Then way\speedX2 = Cos(angle) : way\speedY2 = Sin(angle)
            way\newX2 = MouseWX()
            way\newY2 = MouseWY()
        EndIf
    ElseIf showpoints = True
        For way.WAYPOINTS = Each WAYPOINTS
            DrawImage circ, WorldToScreenX(way\Xcoord) - 3, WorldToScreenY(way\Ycoord) - 3
            Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX), WorldToScreenY(way\newY)
            If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
        Next way
    EndIf 
    
    If placingScenery = ON Then
        DrawImage scenery(whatscenery), MouseX(), MouseY()
        If MouseHit(1) Then 
            If Editedlayer = 1 Then
                DrawToImage BackLayer
            ElseIf EditedLayer = 2
                DrawToImage HitLayer
            ElseIf EditedLayer = 3
                DrawToImage OverLayer
            EndIf 
            DrawImage scenery(whatscenery), MouseWX(), -MouseWY()
            DrawToScreen
            sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
            sce\sceX = MouseWX()
            sce\sceY = -MouseWY()
            sce\layer = editedlayer
            sce\name = scenerynames(whatscenery)
            sceneryamount + 1
            PlacingScenery = OFF
        EndIf 
    EndIf     
    
    For i = 0 To maastonkappaleet
        Text 650, i *10, scenerynames(i)
        If MouseX() > 650 Then 
            If MouseY() > i * 10 And MouseY() < 10 * i + 10 Then 
                Box 650, i * 10, 150, 10, 0
                If MouseHit(1) And scenery(i) <> 0 Then 
                    PlacingScenery = ON 
                    WhatScenery = i
                EndIf 
            EndIf
        EndIf 
    Next i

    DrawScreen
Forever

'******************************************************************************************

SAVEMAP:
ChDir "MAPS"
m = OpenToWrite (kartanpolku)
    WriteLine m, shape
    WriteLine m, texture
    WriteLine m, raintype
    WriteLine m, R1
    WriteLine m, G1    
    WriteLine m, B1    
    WriteLine m, R2
    WriteLine m, G2    
    WriteLine m, B2       
    
    WriteLine m, "************************ MAASTONKAPPALEET: ***************************"
    
    WriteLine m, sceneryamount
    For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
        WriteLine m, sce\name    
        WriteLine m, sce\sceX
        WriteLine m, sce\sceY
        WriteLine m, sce\layer
    Next sce
    
    WriteLine m, "***************************** WAYPOINTIT ****************************** "
    
    WriteLine m, waypointamount
    For way.WAYPOINTS = Each WAYPOINTS
        WriteLine m, way\Xcoord
        WriteLine m, way\Ycoord
        WriteLine m, way\speedX
        WriteLine m, way\speedY
        WriteLine m, way\speedX2
        WriteLine m, way\speedY2
    Next way
CloseFile m
Return

ChDir ".."

MAPLOAD:

    m = OpenToRead (kartanpolku)
        shape$ = ReadLine (m)
        texture$ = ReadLine (m)
        raintype = ReadLine (m)
        R1 = ReadLine (m)
        G1 = ReadLine(m)
        B1 = ReadLine(m)
        R2 = ReadLine(m)
        G2 = ReadLine(m)
        B2 = ReadLine(m)
        
        empty = ReadLine(m)
        
        sceneryamount = ReadLine (m)
        For i = 1 To sceneryamount
            sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
            sce\name = ReadLine (m)            
            sce\sceX = ReadLine (m)
            sce\sceY = ReadLine (m)
            sce\layer = ReadLine (m)
        Next i
        
        empty = ReadLine(m)        
        
        waypointamount = ReadLine (m)
        For i = 1 To waypointamount
            way.WAYPOINTS = New(WAYPOINTS)
            
            way\Xcoord = ReadLine (m)
            way\Ycoord = ReadLine (m)
            way\speedX = ReadLine (m)
            way\speedY = ReadLine (m)
            way\speedX2 = ReadLine (m)
            way\speedY2 = ReadLine (m)
            
        Next i
    CloseFile m
    
    ChDir "MAPS"    

    'luodaan layerit
    MapTexture = LoadImage(texture) 
    
    MapShape = LoadImage(shape) 
    
    MaskImage MapShape, 0, 255, 0
    ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2
    
    Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
    Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))
    
    HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    DrawToImage HitLayer
        For x = 0 To Xkerroin
            For y = 0 To Ykerroin
                DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
            Next y
        Next x
        DrawImage MapShape, 0, 0
    DrawToScreen 
    
    MapX = ImageWidth(MapShape)
    MapY = ImageHeight(MapShape)

    BackLayer = MakeImage (Mapx, MapY)
    
    OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    
    Color cbwhite
    
    'piirretään maasto
    For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
        If sce\layer = 1 Then 
            DrawToImage BackLayer
        ElseIf sce\layer = 2
            DrawToImage HitLayer
        ElseIf sce\layer = 3
            DrawToImage OverLayer
        EndIf
        
        For i = 0 To maastonkappaleet
            If scenerynames(i) = sce\name And sce\sceX < MapX And sce\sceX < MapY Then 
                DrawImage scenery(i), sce\sceX, sce\sceY
            EndIf 
        Next i

    Next sce
            
    DrawToScreen
    
    ChDir ".."
            
Return 

'******************************************************************************************
Function ScreenToWorldX(sc)
  wc = CameraX() - ScreenWidth() / 2 + sc
  Return wc
End Function

Function ScreenToWorldY(sc)
  wc = CameraY() + ScreenHeight() / 2 - sc
  Return wc
End Function

Function WorldToScreenX(wc)
  sc = -CameraX() + ScreenWidth() / 2 + wc
  Return sc
End Function

Function WorldToScreenY(wc)
  sc = CameraY() + ScreenHeight() / 2 - wc
  Return sc
End Function

Function MakeGradient(width, height, R1#, G1#, B1#, R2#, G2#, B2#)
    Rdifference# = (Max(R1, R2) - Min(R1,R2)) / height
    Gdifference# = (Max(G1, G2) - Min(G1,G2)) / height
    Bdifference# = (Max(B1, B2) - Min(B1,B2)) / height
    DrawToImage BackLayer
    For i = 1 To height
        Color R1 + Rdifference *i, G1 + Gdifference *i, B1 + Bdifference * i
        Line 0, i, width, i
    Next i
    DrawToScreen 
End Function 
-Q-näppäin valitsee pohjakerroksen kerrokseksi johon piirretään
-W-näppäin valitsee hit-kerroksen kerrokseksi johon piirretään
-E-näppäin valitsee over-kerroksen kerrokseksi johon piirretään
-A-näppäin vaihtaa pohjakerroksen näkyvyyttä
-S-näppäin vaihtaa hit-kerroksen näkyvyyttä
-D-näppäin vaihtaa over-kerroksen näkyvyyttä
-1, 2, 3 -näppäimistä valitaan sateen tyyppi (ei toimi vielä itse pelissä)
-Z-näppäin piilottaa waypointit.
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: The 14th Black Crusade

Post by tuhoojabotti »

muokkasin hiukan (siis käyttäjä ystävällisemmäksi) ja lisäsin yhden tärkeän ominaisuuden jos ei haluukkaan spriteä voi painaa hiiren oikeaa nappia (2) niin se aborttaa meinaa tuli 160 spriteä kun kentässä sitten oli vain ~60 kun heitin ne aina ulko puolelle karttaa :D

Code: Select all

    SCREEN 800, 600

    Dim scenery(500)
    Dim scenerynames(500) As String
    Dim rain(500, 5) As Float

    Type SCENERYOBJECTS
        Field sceX      As Float
        Field sceY      As Float
        Field layer     As integer
        Field name      As String
    End Type

    Type WAYPOINTS
        Field Xcoord
        Field Ycoord
        Field speedX    As Float
        Field speedY    As Float
        Field speedX2    As Float
        Field speedY2    As Float   
        Field newX
        Field newY
        Field newX2
        Field newY2
    End Type

    Global backlayer

    rainAmount = 500
    raintype = 1
    
    entityso=False 

    backvisible = True
    hitvisible = True
    overvisible = True

    circ = MakeImage(5,5)
    DrawToImage circ
        Color cbdarkred
        Circle 0,0, 5
        Color cbred
        Circle 1,1, 3
    DrawToScreen
    Color cbwhite

    For i = 0 To RainAmount
        Rain(i,0) = Rand(1, 800)
        rain(i,01) = Rand(-600, 0)
    Next i

    font=LoadFont("arial")

    AddText "Ladataan maastonkappaleita..."
    DrawScreen

    ChDir "SCENERY"

    StartSearch
        Repeat
            file$ = FindFile()
            If file$ = "" Then Exit
            AddText "file: " +file
            DrawScreen
            If IsDirectory(file) = False And file <> "Thumbs.db" Then
                scenery(maastonkappaleet) = LoadImage(file$)
                MaskImage scenery(maastonkappaleet), 0, 255, 0
                scenerynames(maastonkappaleet) = file$
                maastonkappaleet + 1
            EndIf
        Forever
    EndSearch

    ChDir ".."
    ChDir "MAPS"

    Repeat
        ClearText
        LoadedMap$ = Input ("Karttatiedoston polku (jos tiedostoa ei ole olemassa, se luodaan): ")
        If KeyHit(cbkeyreturn) Then
            If FileExists(loadedmap) Then
                kartanpolku$ = Loadedmap         
                Gosub mapload
                CloseInput
                Goto EDITOR
            Else
                kartanpolku$ = Loadedmap   
                CloseInput             
                Goto NEWLEVEL
            EndIf
        EndIf
        DrawScreen
    Forever

    NEWLEVEL:
    ChDir "MAPS"

    Repeat
        texture$ = Input ("Tekstuuritiedoston polku: ")
        DrawScreen
    Until KeyHit(cbkeyreturn)

    MapTexture = LoadImage(texture)
    CloseInput

    Repeat
        shape$ = Input ("Karttatiedoston polku: ")
        DrawScreen
    Until KeyHit(cbkeyreturn)

    MapShape = LoadImage(shape)
    CloseInput

    AddText "Luodaan karttaa..."
    DrawScreen

    MaskImage MapShape, 0, 255, 0
    ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2

    Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
    Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))

    HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    DrawToImage HitLayer
        For x = 0 To Xkerroin
            For y = 0 To Ykerroin
                DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
            Next y
        Next x
    DrawImage MapShape, 0, 0

    BackLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))

    DrawToScreen

    EDITOR:

    showpoints = True

    Repeat

    Color cbwhite

        //ClearText //reset text 
         
        Text 0,0, "FPS: " +FPS()
        Text 0,14, "Valitse tasojen näkyvyys A-, S- ja D-näppäimillä."
        Text 0,28, "Luo waypointeja klikkaamalla hiiren oikeaa painiketta."
        Text 0,42, "Valitse kentän taustaväri painamalla control-näppäintä."
        Text 0,56, "Valitse sateen tyyppi 1, 2 tai 3 -näppäintä."
        Text 0,70, "Paina r avataksesi sprite palkin."
        
        If entityso=True Then 
            Text 0, 196,"valitse sprite klikkaamalla (vasen nappi(1))" 
            Text 0, 210,"sijoita sprite haluamaasi paikkaan ja klikkaa hiiren vasenta nappia (1)"
            Text 0,224,"jos muutat mielesi ja et haluakkaan valittua spriteä paina hiiren oikeaa nappia (2)"
        EndIf 
        
     
        
        If KeyHit(cbkeyr) Then entityso=Not entityso

       
        If KeyHit(30) Then backvisible=Not backvisible 

        If backvisible = True Then DrawImage backlayer, WorldToScreenX(0), WorldToScreenY(0)
       
        
        If KeyHit(31) Then hitvisible=Not hitvisible 
  
        If hitvisible = True Then DrawImage hitlayer, WorldToScreenX(0), WorldToScreenY(0) 
        
   
        
        If KeyHit(32) Then overvisible=Not overvisible 

        If overvisible = True Then DrawImage overlayer, WorldToScreenX(0), WorldToScreenY(0)
             

        If backvisible=1 Then 
        Text 0,84,"Taustakerros näkyy"
        Else 
        Text 0,84,"Taustakerros ei näy"
        EndIf 

        If hitvisible=1 Then 
        text 0,98,"Törmäyskerros näkyy"
        Else 
        Text 0,98,"Törmäyskerros ei näy"
        EndIf        

        If overvisible=1 Then 
        Text 0,112,"Päälliskerros näkyy"
        Else 
        Text 0,112,"Päälliskerros ei näy"
        EndIf 



       
        If KeyHit(16) Then EditedLayer = 1
        If KeyHit(17) Then editedlayer = 2
        If KeyHit(18) Then editedlayer = 3
        
        Select editedlayer
            Case 0
                Text 0,140,"Muokattava kerros: "
            Case 1
                Text 0,140,"Muokattava kerros: back-kerros"
            Case 2
                Text 0,140,"Muokattava kerros: hit-kerros"
            Case 3
                Text 0,140,"Muokattava kerros: over-kerros"
        EndSelect 
        
        TranslateCamera  RightKey() * 5 - LeftKey() * 5, UpKey() * 5 - DownKey() * 5
       
        If KeyHit(59) Then Gosub SaveMap
       
        If KeyHit(157) Then
            Repeat
                ClearText
                AddText "colorsetup: " +colorsetup
                AddText "RED 1: " +r1
                AddText "GREEN 1: " + g1
                AddText "BLUE 1: " +b1
                AddText "RED 2: " +r2
                AddText "GREEN 2: " + g2
                AddText "BLUE 2: " +b2         
                Select colorsetup
                    Case 0
                        If LeftKey() Then R1 - 1
                        If RightKey() Then R1 + 1
                    Case 1
                        If LeftKey() Then G1 - 1
                        If RightKey() Then G1 + 1
                    Case 2
                        If LeftKey() Then B1 - 1
                        If RightKey() Then B1 + 1   
                    Case 3
                        If LeftKey() Then R2 - 1
                        If RightKey() Then R2 + 1
                    Case 4
                        If LeftKey() Then G2 - 1
                        If RightKey() Then G2 + 1
                    Case 5
                        If LeftKey() Then B2 - 1
                        If RightKey() Then B2 + 1
                        If KeyHit(208) Then Exit                 
                End Select
                If KeyHit(200) Then colorsetup - 1
                If KeyHit(208) Then colorsetup + 1

                DrawScreen
            Forever
            MakeGradient(ImageWidth(backlayer) * 1.5, ImageHeight(backlayer) * 1.5, r1, g1, b1, r2, g2, b2)
        EndIf
       
        Select RainType
            Case 1
                For i = 0 To RainAmount
                    If Rain(i,2) = 0 Then Rain(i,2) = Rnd(4,5)
                    If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                    Rain(i,0) = Rain(i,0) - rain(i, 2)
                    Rain(i,1) = Rain(i,1) + rain(i, 3)
                   
                    Dot rain(i,0), rain(i,1)
                   
                    If Rain(i,1) > 800 Or rain(i,0) < 0 Then Rain(i,1) = 0 : Rain(i,0) = Rand(2,1800)
                Next i
            Case 2
                For i = 0 To RainAmount
                    rain(i,2) = 0
                    If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                    Rain(i,0) = Rain(i,0) - rain(i, 2)
                    Rain(i,1) = Rain(i,1) + rain(i, 3)
                   
                    Dot rain(i,0), rain(i,1)
                   
                    If Rain(i,1) > 800 Then Rain(i,1) = 0 : Rain(i,0) = Rand(0,800)
                Next i             
        End Select
           
        If KeyHit(cbkey1) Then raintype = 1
        If KeyHit(cbkey2) Then raintype = 2
        If KeyHit(cbkey3) Then raintype = 3
       
        If KeyHit(cbkeyZ) Then
            If showpoints = False Then showpoints = True Else showpoints = False
        EndIf
       
        Text 0,164,"PlacingWaypoint: " +placingwaypoint
       
        If MouseHit(2) And placingwaypoint = False And placingScenery=False Then
            way.WAYPOINTS = New(WAYPOINTS)
            waypointAmount + 1
            way\Xcoord = MouseWX()
            way\Ycoord = MouseWY()
            PlacingWaypoint = True
        EndIf   
       
        If PlacingWaypoint = True Then
            AddText "Klikkaamalla hiiren vasemmalla painikkeella saat valittua mihin suuntaan"
            AddText "botti lähtee tullessaan waypointille."
            AddText "Voit luoda toisen vaihtoehtoisen suunnan klikkaamalla hiiren keskimmäisellä"
            AddText "painikkeella. Tullessaan waypointille, johon on tallennettu kaksi suuntaa, "
            AddText "botti lähtee sattumanvaraisesti toiseen niistä."
            angle = GetAngle(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
            dist = Distance(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
            Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY()
            If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
            If MouseHit (1) Then
                If Dist > 5 Then way\speedX = Cos(angle) : way\speedy = Sin(angle)
                way\newX = MouseWX()
                way\newY = MouseWY()           
                placingWaypoint = False
            EndIf
            If MouseHit(3) Then
                If Dist > 5 Then way\speedX2 = Cos(angle) : way\speedY2 = Sin(angle)
                way\newX2 = MouseWX()
                way\newY2 = MouseWY()
            EndIf
        ElseIf showpoints = True
            For way.WAYPOINTS = Each WAYPOINTS
                DrawImage circ, WorldToScreenX(way\Xcoord) - 3, WorldToScreenY(way\Ycoord) - 3
                Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX), WorldToScreenY(way\newY)
                If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
            Next way
        EndIf
       
        If placingScenery = ON Then
            DrawImage scenery(whatscenery), MouseX(), MouseY()
            If MouseHit(1) Then
                If Editedlayer = 1 Then
                    DrawToImage BackLayer
                ElseIf EditedLayer = 2
                    DrawToImage HitLayer
                ElseIf EditedLayer = 3
                    DrawToImage OverLayer
                EndIf
                DrawImage scenery(whatscenery), MouseWX(), -MouseWY()
                DrawToScreen
                sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
                sce\sceX = MouseWX()
                sce\sceY = -MouseWY()
                sce\layer = editedlayer
                sce\name = scenerynames(whatscenery)
                sceneryamount + 1
                PlacingScenery = OFF
            EndIf
            If MouseHit(2) Then 
                PlacingScenery = OFF
            EndIf 
        EndIf     
        
      If entityso=1 Then //entiry select open=1
      Color cbsilver
      Box 640,0,300,800
       SetFont font 
        For i = 0 To maastonkappaleet
            Color cbblack 
            Text 650, i *11, scenerynames(i)
            If MouseX() > 650 Then
                If MouseY() > i * 11 And MouseY() < 11 * i + 11 Then
                    Box 650-1, i * 11, 150, 11+1, 0
                    If MouseHit(1) And scenery(i) <> 0 Then
                        PlacingScenery = ON
                        WhatScenery = i
                    EndIf
                EndIf
            EndIf
        Next i
       EndIf 

        DrawScreen
    Forever

    '******************************************************************************************

    SAVEMAP:
    ChDir "MAPS"
    m = OpenToWrite (kartanpolku)
        WriteLine m, shape
        WriteLine m, texture
        WriteLine m, raintype
        WriteLine m, R1
        WriteLine m, G1   
        WriteLine m, B1   
        WriteLine m, R2
        WriteLine m, G2   
        WriteLine m, B2       
       
        WriteLine m, "************************ MAASTONKAPPALEET: ***************************"
       
        WriteLine m, sceneryamount
        For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
            WriteLine m, sce\name   
            WriteLine m, sce\sceX
            WriteLine m, sce\sceY
            WriteLine m, sce\layer
        Next sce
       
        WriteLine m, "***************************** WAYPOINTIT ****************************** "
       
        WriteLine m, waypointamount
        For way.WAYPOINTS = Each WAYPOINTS
            WriteLine m, way\Xcoord
            WriteLine m, way\Ycoord
            WriteLine m, way\speedX
            WriteLine m, way\speedY
            WriteLine m, way\speedX2
            WriteLine m, way\speedY2
        Next way
    CloseFile m
    Return

    ChDir ".."

    MAPLOAD:

        m = OpenToRead (kartanpolku)
            shape$ = ReadLine (m)
            texture$ = ReadLine (m)
            raintype = ReadLine (m)
            R1 = ReadLine (m)
            G1 = ReadLine(m)
            B1 = ReadLine(m)
            R2 = ReadLine(m)
            G2 = ReadLine(m)
            B2 = ReadLine(m)
           
            empty = ReadLine(m)
           
            sceneryamount = ReadLine (m)
            For i = 1 To sceneryamount
                sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
                sce\name = ReadLine (m)           
                sce\sceX = ReadLine (m)
                sce\sceY = ReadLine (m)
                sce\layer = ReadLine (m)
            Next i
           
            empty = ReadLine(m)       
           
            waypointamount = ReadLine (m)
            For i = 1 To waypointamount
                way.WAYPOINTS = New(WAYPOINTS)
               
                way\Xcoord = ReadLine (m)
                way\Ycoord = ReadLine (m)
                way\speedX = ReadLine (m)
                way\speedY = ReadLine (m)
                way\speedX2 = ReadLine (m)
                way\speedY2 = ReadLine (m)
               
            Next i
        CloseFile m
       
        ChDir "MAPS"   

        'luodaan layerit
        MapTexture = LoadImage(texture)
       
        MapShape = LoadImage(shape)
       
        MaskImage MapShape, 0, 255, 0
        ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2
       
        Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
        Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))
       
        HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
        DrawToImage HitLayer
            For x = 0 To Xkerroin
                For y = 0 To Ykerroin
                    DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
                Next y
            Next x
            DrawImage MapShape, 0, 0
        DrawToScreen
       
        MapX = ImageWidth(MapShape)
        MapY = ImageHeight(MapShape)

        BackLayer = MakeImage (Mapx, MapY)
       
        OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
       
        Color cbwhite
       
        'piirretään maasto
        For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
            If sce\layer = 1 Then
                DrawToImage BackLayer
            ElseIf sce\layer = 2
                DrawToImage HitLayer
            ElseIf sce\layer = 3
                DrawToImage OverLayer
            EndIf
           
            For i = 0 To maastonkappaleet
                If scenerynames(i) = sce\name And sce\sceX < MapX And sce\sceX < MapY Then
                    DrawImage scenery(i), sce\sceX, sce\sceY
                EndIf
            Next i

        Next sce
               
        DrawToScreen
       
        ChDir ".."
               
    Return

    '******************************************************************************************
    Function ScreenToWorldX(sc)
      wc = CameraX() - ScreenWidth() / 2 + sc
      Return wc
    End Function

    Function ScreenToWorldY(sc)
      wc = CameraY() + ScreenHeight() / 2 - sc
      Return wc
    End Function

    Function WorldToScreenX(wc)
      sc = -CameraX() + ScreenWidth() / 2 + wc
      Return sc
    End Function

    Function WorldToScreenY(wc)
      sc = CameraY() + ScreenHeight() / 2 - wc
      Return sc
    End Function

    Function MakeGradient(width, height, R1#, G1#, B1#, R2#, G2#, B2#)
        Rdifference# = (Max(R1, R2) - Min(R1,R2)) / height
        Gdifference# = (Max(G1, G2) - Min(G1,G2)) / height
        Bdifference# = (Max(B1, B2) - Min(B1,B2)) / height
        DrawToImage BackLayer
        For i = 1 To height
            Color R1 + Rdifference *i, G1 + Gdifference *i, B1 + Bdifference * i
            Line 0, i, width, i
        Next i
        DrawToScreen
    End Function 
EDIT:

pistin prewiev:in spriteille :D

Code: Select all

    SCREEN 800, 600

    Dim scenery(500)
    Dim scenerynames(500) As String
    Dim rain(500, 5) As Float

    Type SCENERYOBJECTS
        Field sceX      As Float
        Field sceY      As Float
        Field layer     As integer
        Field name      As String
    End Type

    Type WAYPOINTS
        Field Xcoord
        Field Ycoord
        Field speedX    As Float
        Field speedY    As Float
        Field speedX2    As Float
        Field speedY2    As Float   
        Field newX
        Field newY
        Field newX2
        Field newY2
    End Type

    Global backlayer

    rainAmount = 500
    raintype = 1
    
    entityso=False 

    backvisible = True
    hitvisible = True
    overvisible = True

    circ = MakeImage(5,5)
    DrawToImage circ
        Color cbdarkred
        Circle 0,0, 5
        Color cbred
        Circle 1,1, 3
    DrawToScreen
    Color cbwhite

    For i = 0 To RainAmount
        Rain(i,0) = Rand(1, 800)
        rain(i,01) = Rand(-600, 0)
    Next i

    font=LoadFont("arial")

    AddText "Ladataan maastonkappaleita..."
    DrawScreen

    ChDir "SCENERY"

    StartSearch
        Repeat
            file$ = FindFile()
            If file$ = "" Then Exit
            AddText "file: " +file
            DrawScreen
            If IsDirectory(file) = False And file <> "Thumbs.db" Then
                scenery(maastonkappaleet) = LoadImage(file$)
                MaskImage scenery(maastonkappaleet), 0, 255, 0
                scenerynames(maastonkappaleet) = file$
                maastonkappaleet + 1
            EndIf
        Forever
    EndSearch

    ChDir ".."
    ChDir "MAPS"

    Repeat
        ClearText
        LoadedMap$ = Input ("Karttatiedoston polku (jos tiedostoa ei ole olemassa, se luodaan): ")
        If KeyHit(cbkeyreturn) Then
            If FileExists(loadedmap) Then
                kartanpolku$ = Loadedmap         
                Gosub mapload
                CloseInput
                Goto EDITOR
            Else
                kartanpolku$ = Loadedmap   
                CloseInput             
                Goto NEWLEVEL
            EndIf
        EndIf
        DrawScreen
    Forever

    NEWLEVEL:
    ChDir "MAPS"

    Repeat
        texture$ = Input ("Tekstuuritiedoston polku: ")
        DrawScreen
    Until KeyHit(cbkeyreturn)

    MapTexture = LoadImage(texture)
    CloseInput

    Repeat
        shape$ = Input ("Karttatiedoston polku: ")
        DrawScreen
    Until KeyHit(cbkeyreturn)

    MapShape = LoadImage(shape)
    CloseInput

    AddText "Luodaan karttaa..."
    DrawScreen

    MaskImage MapShape, 0, 255, 0
    ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2

    Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
    Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))

    HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    DrawToImage HitLayer
        For x = 0 To Xkerroin
            For y = 0 To Ykerroin
                DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
            Next y
        Next x
    DrawImage MapShape, 0, 0

    BackLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))

    DrawToScreen

    EDITOR:

    showpoints = True

    Repeat

    Color cbwhite

        //ClearText //reset text 
         
        Text 0,0, "FPS: " +FPS()
        Text 0,14, "Valitse tasojen näkyvyys A-, S- ja D-näppäimillä."
        Text 0,28, "Luo waypointeja klikkaamalla hiiren oikeaa painiketta."
        Text 0,42, "Valitse kentän taustaväri painamalla control-näppäintä."
        Text 0,56, "Valitse sateen tyyppi 1, 2 tai 3 -näppäintä."
        Text 0,70, "Paina r avataksesi sprite palkin."
        
        If entityso=True Then 
            Text 0, 196,"valitse sprite klikkaamalla (vasen nappi(1))" 
            Text 0, 210,"sijoita sprite haluamaasi paikkaan ja klikkaa hiiren vasenta nappia (1)"
            Text 0,224,"jos muutat mielesi ja et haluakkaan valittua spriteä paina hiiren oikeaa nappia (2)"
        EndIf 
        
     
        
        If KeyHit(cbkeyr) Then entityso=Not entityso

       
        If KeyHit(30) Then backvisible=Not backvisible 

        If backvisible = True Then DrawImage backlayer, WorldToScreenX(0), WorldToScreenY(0)
       
        
        If KeyHit(31) Then hitvisible=Not hitvisible 
  
        If hitvisible = True Then DrawImage hitlayer, WorldToScreenX(0), WorldToScreenY(0) 
        
   
        
        If KeyHit(32) Then overvisible=Not overvisible 

        If overvisible = True Then DrawImage overlayer, WorldToScreenX(0), WorldToScreenY(0)
             

        If backvisible=1 Then 
        Text 0,84,"Taustakerros näkyy"
        Else 
        Text 0,84,"Taustakerros ei näy"
        EndIf 

        If hitvisible=1 Then 
        text 0,98,"Törmäyskerros näkyy"
        Else 
        Text 0,98,"Törmäyskerros ei näy"
        EndIf        

        If overvisible=1 Then 
        Text 0,112,"Päälliskerros näkyy"
        Else 
        Text 0,112,"Päälliskerros ei näy"
        EndIf 



       
        If KeyHit(16) Then EditedLayer = 1
        If KeyHit(17) Then editedlayer = 2
        If KeyHit(18) Then editedlayer = 3
        
        Select editedlayer
            Case 0
                Text 0,140,"Muokattava kerros: "
            Case 1
                Text 0,140,"Muokattava kerros: back-kerros"
            Case 2
                Text 0,140,"Muokattava kerros: hit-kerros"
            Case 3
                Text 0,140,"Muokattava kerros: over-kerros"
        EndSelect 
        
        TranslateCamera  RightKey() * 5 - LeftKey() * 5, UpKey() * 5 - DownKey() * 5
       
        If KeyHit(59) Then Gosub SaveMap
       
        If KeyHit(157) Then
            Repeat
                ClearText
                AddText "colorsetup: " +colorsetup
                AddText "RED 1: " +r1
                AddText "GREEN 1: " + g1
                AddText "BLUE 1: " +b1
                AddText "RED 2: " +r2
                AddText "GREEN 2: " + g2
                AddText "BLUE 2: " +b2         
                Select colorsetup
                    Case 0
                        If LeftKey() Then R1 - 1
                        If RightKey() Then R1 + 1
                    Case 1
                        If LeftKey() Then G1 - 1
                        If RightKey() Then G1 + 1
                    Case 2
                        If LeftKey() Then B1 - 1
                        If RightKey() Then B1 + 1   
                    Case 3
                        If LeftKey() Then R2 - 1
                        If RightKey() Then R2 + 1
                    Case 4
                        If LeftKey() Then G2 - 1
                        If RightKey() Then G2 + 1
                    Case 5
                        If LeftKey() Then B2 - 1
                        If RightKey() Then B2 + 1
                        If KeyHit(208) Then Exit                 
                End Select
                If KeyHit(200) Then colorsetup - 1
                If KeyHit(208) Then colorsetup + 1

                DrawScreen
            Forever
            MakeGradient(ImageWidth(backlayer) * 1.5, ImageHeight(backlayer) * 1.5, r1, g1, b1, r2, g2, b2)
        EndIf
       
        Select RainType
            Case 1
                For i = 0 To RainAmount
                    If Rain(i,2) = 0 Then Rain(i,2) = Rnd(4,5)
                    If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                    Rain(i,0) = Rain(i,0) - rain(i, 2)
                    Rain(i,1) = Rain(i,1) + rain(i, 3)
                   
                    Dot rain(i,0), rain(i,1)
                   
                    If Rain(i,1) > 800 Or rain(i,0) < 0 Then Rain(i,1) = 0 : Rain(i,0) = Rand(2,1800)
                Next i
            Case 2
                For i = 0 To RainAmount
                    rain(i,2) = 0
                    If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                    Rain(i,0) = Rain(i,0) - rain(i, 2)
                    Rain(i,1) = Rain(i,1) + rain(i, 3)
                   
                    Dot rain(i,0), rain(i,1)
                   
                    If Rain(i,1) > 800 Then Rain(i,1) = 0 : Rain(i,0) = Rand(0,800)
                Next i             
        End Select
           
        If KeyHit(cbkey1) Then raintype = 1
        If KeyHit(cbkey2) Then raintype = 2
        If KeyHit(cbkey3) Then raintype = 3
       
        If KeyHit(cbkeyZ) Then
            If showpoints = False Then showpoints = True Else showpoints = False
        EndIf
       
        Text 0,164,"PlacingWaypoint: " +placingwaypoint
       
        If MouseHit(2) And placingwaypoint = False And placingScenery=False Then
            way.WAYPOINTS = New(WAYPOINTS)
            waypointAmount + 1
            way\Xcoord = MouseWX()
            way\Ycoord = MouseWY()
            PlacingWaypoint = True
        EndIf   
       
        If PlacingWaypoint = True Then
            AddText "Klikkaamalla hiiren vasemmalla painikkeella saat valittua mihin suuntaan"
            AddText "botti lähtee tullessaan waypointille."
            AddText "Voit luoda toisen vaihtoehtoisen suunnan klikkaamalla hiiren keskimmäisellä"
            AddText "painikkeella. Tullessaan waypointille, johon on tallennettu kaksi suuntaa, "
            AddText "botti lähtee sattumanvaraisesti toiseen niistä."
            angle = GetAngle(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
            dist = Distance(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
            Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY()
            If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
            If MouseHit (1) Then
                If Dist > 5 Then way\speedX = Cos(angle) : way\speedy = Sin(angle)
                way\newX = MouseWX()
                way\newY = MouseWY()           
                placingWaypoint = False
            EndIf
            If MouseHit(3) Then
                If Dist > 5 Then way\speedX2 = Cos(angle) : way\speedY2 = Sin(angle)
                way\newX2 = MouseWX()
                way\newY2 = MouseWY()
            EndIf
        ElseIf showpoints = True
            For way.WAYPOINTS = Each WAYPOINTS
                DrawImage circ, WorldToScreenX(way\Xcoord) - 3, WorldToScreenY(way\Ycoord) - 3
                Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX), WorldToScreenY(way\newY)
                If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
            Next way
        EndIf
       
        If placingScenery = ON Then
            DrawImage scenery(whatscenery), MouseX(), MouseY()
            If MouseHit(1) Then
                If Editedlayer = 1 Then
                    DrawToImage BackLayer
                ElseIf EditedLayer = 2
                    DrawToImage HitLayer
                ElseIf EditedLayer = 3
                    DrawToImage OverLayer
                EndIf
                DrawImage scenery(whatscenery), MouseWX(), -MouseWY()
                DrawToScreen
                sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
                sce\sceX = MouseWX()
                sce\sceY = -MouseWY()
                sce\layer = editedlayer
                sce\name = scenerynames(whatscenery)
                sceneryamount + 1
                PlacingScenery = OFF
            EndIf
            If MouseHit(2) Then 
                PlacingScenery = OFF
            EndIf 
        EndIf     
        
      If entityso=1 Then //entiry select open=1
      Color cbsilver
      Box 640,0,300,600
       SetFont font 
        For i = 0 To maastonkappaleet
            Color cbblack 
            Text 650, i *11, scenerynames(i)
            If MouseX() > 650 Then
                If MouseY() > i * 11 And MouseY() < 11 * i + 11 Then
                    Box 650-1, i * 11, 150, 11+1, 0 
                        tScenery=i //minkä päällä hiiri on (määrää thumb imagen)
                    If MouseHit(1) And scenery(i) <> 0 Then
                        PlacingScenery = ON
                        WhatScenery = i
                    EndIf
                EndIf
            EndIf
        Next i
        //thumb image 
        Color cbsilver 
        Box 520,500,100,100,1
        If tScenery<maastonkappaleet Then 
        thumb=CloneImage (scenery(tScenery))
        EndIf 
        ResizeImage thumb,98,98
        DrawImage thumb, 521,501
       EndIf 

        DrawScreen
    Forever

    '******************************************************************************************

    SAVEMAP:
    ChDir "MAPS"
    m = OpenToWrite (kartanpolku)
        WriteLine m, shape
        WriteLine m, texture
        WriteLine m, raintype
        WriteLine m, R1
        WriteLine m, G1   
        WriteLine m, B1   
        WriteLine m, R2
        WriteLine m, G2   
        WriteLine m, B2       
       
        WriteLine m, "************************ MAASTONKAPPALEET: ***************************"
       
        WriteLine m, sceneryamount
        For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
            WriteLine m, sce\name   
            WriteLine m, sce\sceX
            WriteLine m, sce\sceY
            WriteLine m, sce\layer
        Next sce
       
        WriteLine m, "***************************** WAYPOINTIT ****************************** "
       
        WriteLine m, waypointamount
        For way.WAYPOINTS = Each WAYPOINTS
            WriteLine m, way\Xcoord
            WriteLine m, way\Ycoord
            WriteLine m, way\speedX
            WriteLine m, way\speedY
            WriteLine m, way\speedX2
            WriteLine m, way\speedY2
        Next way
    CloseFile m
    Return

    ChDir ".."

    MAPLOAD:

        m = OpenToRead (kartanpolku)
            shape$ = ReadLine (m)
            texture$ = ReadLine (m)
            raintype = ReadLine (m)
            R1 = ReadLine (m)
            G1 = ReadLine(m)
            B1 = ReadLine(m)
            R2 = ReadLine(m)
            G2 = ReadLine(m)
            B2 = ReadLine(m)
           
            empty = ReadLine(m)
           
            sceneryamount = ReadLine (m)
            For i = 1 To sceneryamount
                sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
                sce\name = ReadLine (m)           
                sce\sceX = ReadLine (m)
                sce\sceY = ReadLine (m)
                sce\layer = ReadLine (m)
            Next i
           
            empty = ReadLine(m)       
           
            waypointamount = ReadLine (m)
            For i = 1 To waypointamount
                way.WAYPOINTS = New(WAYPOINTS)
               
                way\Xcoord = ReadLine (m)
                way\Ycoord = ReadLine (m)
                way\speedX = ReadLine (m)
                way\speedY = ReadLine (m)
                way\speedX2 = ReadLine (m)
                way\speedY2 = ReadLine (m)
               
            Next i
        CloseFile m
       
        ChDir "MAPS"   

        'luodaan layerit
        MapTexture = LoadImage(texture)
       
        MapShape = LoadImage(shape)
       
        MaskImage MapShape, 0, 255, 0
        ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2
       
        Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
        Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))
       
        HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
        DrawToImage HitLayer
            For x = 0 To Xkerroin
                For y = 0 To Ykerroin
                    DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
                Next y
            Next x
            DrawImage MapShape, 0, 0
        DrawToScreen
       
        MapX = ImageWidth(MapShape)
        MapY = ImageHeight(MapShape)

        BackLayer = MakeImage (Mapx, MapY)
       
        OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
       
        Color cbwhite
       
        'piirretään maasto
        For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
            If sce\layer = 1 Then
                DrawToImage BackLayer
            ElseIf sce\layer = 2
                DrawToImage HitLayer
            ElseIf sce\layer = 3
                DrawToImage OverLayer
            EndIf
           
            For i = 0 To maastonkappaleet
                If scenerynames(i) = sce\name And sce\sceX < MapX And sce\sceX < MapY Then
                    DrawImage scenery(i), sce\sceX, sce\sceY
                EndIf
            Next i

        Next sce
               
        DrawToScreen
       
        ChDir ".."
               
    Return

    '******************************************************************************************
    Function ScreenToWorldX(sc)
      wc = CameraX() - ScreenWidth() / 2 + sc
      Return wc
    End Function

    Function ScreenToWorldY(sc)
      wc = CameraY() + ScreenHeight() / 2 - sc
      Return wc
    End Function

    Function WorldToScreenX(wc)
      sc = -CameraX() + ScreenWidth() / 2 + wc
      Return sc
    End Function

    Function WorldToScreenY(wc)
      sc = CameraY() + ScreenHeight() / 2 - wc
      Return sc
    End Function

    Function MakeGradient(width, height, R1#, G1#, B1#, R2#, G2#, B2#)
        Rdifference# = (Max(R1, R2) - Min(R1,R2)) / height
        Gdifference# = (Max(G1, G2) - Min(G1,G2)) / height
        Bdifference# = (Max(B1, B2) - Min(B1,B2)) / height
        DrawToImage BackLayer
        For i = 1 To height
            Color R1 + Rdifference *i, G1 + Gdifference *i, B1 + Bdifference * i
            Line 0, i, width, i
        Next i
        DrawToScreen
    End Function 
[/edit]
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: The 14th Black Crusade

Post by regalis »

Hienoa, olin itse ajatellut seuraavaksi tekeväni editoriin juuri nuo lisäämäsi ominaisuudet. :) Korjasin koodistasi muutaman bugin: osa teksteistä meni kartan alle ja waypointteja lisätessä teksti meni muiden tekstien päälle.

Code: Select all

SCREEN 800, 600

    Dim scenery(500)
    Dim scenerynames(500) As String
    Dim rain(500, 5) As Float

    Type SCENERYOBJECTS
        Field sceX      As Float
        Field sceY      As Float
        Field layer     As integer
        Field name      As String
    End Type

    Type WAYPOINTS
        Field Xcoord
        Field Ycoord
        Field speedX    As Float
        Field speedY    As Float
        Field speedX2    As Float
        Field speedY2    As Float   
        Field newX
        Field newY
        Field newX2
        Field newY2
    End Type

    Global backlayer

    rainAmount = 500
    raintype = 1
   
    entityso=False

    backvisible = True
    hitvisible = True
    overvisible = True

    circ = MakeImage(5,5)
    DrawToImage circ
        Color cbdarkred
        Circle 0,0, 5
        Color cbred
        Circle 1,1, 3
    DrawToScreen
    Color cbwhite

    For i = 0 To RainAmount
        Rain(i,0) = Rand(1, 800)
        rain(i,01) = Rand(-600, 0)
    Next i

    AddText "Ladataan maastonkappaleita..."
    DrawScreen

    ChDir "SCENERY"

    StartSearch
        Repeat
            file$ = FindFile()
            If file$ = "" Then Exit
            AddText "file: " +file
            DrawScreen
            If IsDirectory(file) = False And file <> "Thumbs.db" Then
                scenery(maastonkappaleet) = LoadImage(file$)
                MaskImage scenery(maastonkappaleet), 0, 255, 0
                scenerynames(maastonkappaleet) = file$
                maastonkappaleet + 1
            EndIf
        Forever
    EndSearch

    ChDir ".."
    ChDir "MAPS"

    Repeat
        ClearText
        LoadedMap$ = Input ("Karttatiedoston polku (jos tiedostoa ei ole olemassa, se luodaan): ")
        If KeyHit(cbkeyreturn) Then
            If FileExists(loadedmap) Then
                kartanpolku$ = Loadedmap         
                Gosub mapload
                CloseInput
                Goto EDITOR
            Else
                kartanpolku$ = Loadedmap   
                CloseInput             
                Goto NEWLEVEL
            EndIf
        EndIf
        DrawScreen
    Forever

    NEWLEVEL:
    ChDir "MAPS"

    Repeat
        texture$ = Input ("Tekstuuritiedoston polku: ")
        DrawScreen
    Until KeyHit(cbkeyreturn)

    MapTexture = LoadImage(texture)
    CloseInput

    Repeat
        shape$ = Input ("Karttatiedoston polku: ")
        DrawScreen
    Until KeyHit(cbkeyreturn)

    MapShape = LoadImage(shape)
    CloseInput

    AddText "Luodaan karttaa..."
    DrawScreen

    MaskImage MapShape, 0, 255, 0
    ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2

    Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
    Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))

    HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    DrawToImage HitLayer
        For x = 0 To Xkerroin
            For y = 0 To Ykerroin
                DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
            Next y
        Next x
    DrawImage MapShape, 0, 0

    BackLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
    OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))

    DrawToScreen
    
    font=LoadFont("arial")
   SetFont font

    EDITOR:

    showpoints = True
   
    Repeat
    
        Color cbwhite

        ClearText
        Locate 10, 300        
         
        If KeyHit(cbkeyr) Then entityso=Not entityso

        If KeyHit(30) Then backvisible=Not backvisible

        If backvisible = True Then DrawImage backlayer, WorldToScreenX(0), WorldToScreenY(0)
       
        If KeyHit(31) Then hitvisible=Not hitvisible
 
        If hitvisible = True Then DrawImage hitlayer, WorldToScreenX(0), WorldToScreenY(0)
       
        If KeyHit(32) Then overvisible=Not overvisible

        If overvisible = True Then DrawImage overlayer, WorldToScreenX(0), WorldToScreenY(0)
        
        Text 0,0, "FPS: " +FPS()
        Text 0,14, "Valitse tasojen näkyvyys A-, S- ja D-näppäimillä."
        Text 0,28, "Luo waypointeja klikkaamalla hiiren oikeaa painiketta."
        Text 0,42, "Valitse kentän taustaväri painamalla control-näppäintä."
        Text 0,56, "Valitse sateen tyyppi 1, 2 tai 3 -näppäintä."
        Text 0,70, "Paina r avataksesi sprite palkin."
       
        If entityso=True Then
            Text 0, 196,"valitse sprite klikkaamalla (vasen nappi(1))"
            Text 0, 210,"sijoita sprite haluamaasi paikkaan ja klikkaa hiiren vasenta nappia (1)"
            Text 0,224,"jos muutat mielesi ja et haluakkaan valittua spriteä paina hiiren oikeaa nappia (2)"
        EndIf             

        If backvisible=1 Then
            Text 0,84,"Taustakerros näkyy"
        Else
            Text 0,84,"Taustakerros ei näy"
        EndIf

        If hitvisible=1 Then
            text 0,98,"Törmäyskerros näkyy"
        Else
            Text 0,98,"Törmäyskerros ei näy"
        EndIf       

        If overvisible=1 Then
            Text 0,112,"Päälliskerros näkyy"
        Else
            Text 0,112,"Päälliskerros ei näy"
        EndIf

        If KeyHit(16) Then EditedLayer = 1
        If KeyHit(17) Then editedlayer = 2
        If KeyHit(18) Then editedlayer = 3
       
        Select editedlayer
            Case 0
                Text 0,140,"Muokattava kerros: "
            Case 1
                Text 0,140,"Muokattava kerros: back-kerros"
            Case 2
                Text 0,140,"Muokattava kerros: hit-kerros"
            Case 3
                Text 0,140,"Muokattava kerros: over-kerros"
        EndSelect
       
        TranslateCamera  RightKey() * 5 - LeftKey() * 5, UpKey() * 5 - DownKey() * 5
       
        If KeyHit(59) Then Gosub SaveMap
       
        If KeyHit(157) Then
            Repeat
                ClearText
                AddText "colorsetup: " +colorsetup
                AddText "RED 1: " +r1
                AddText "GREEN 1: " + g1
                AddText "BLUE 1: " +b1
                AddText "RED 2: " +r2
                AddText "GREEN 2: " + g2
                AddText "BLUE 2: " +b2         
                Select colorsetup
                    Case 0
                        If LeftKey() Then R1 - 1
                        If RightKey() Then R1 + 1
                    Case 1
                        If LeftKey() Then G1 - 1
                        If RightKey() Then G1 + 1
                    Case 2
                        If LeftKey() Then B1 - 1
                        If RightKey() Then B1 + 1   
                    Case 3
                        If LeftKey() Then R2 - 1
                        If RightKey() Then R2 + 1
                    Case 4
                        If LeftKey() Then G2 - 1
                        If RightKey() Then G2 + 1
                    Case 5
                        If LeftKey() Then B2 - 1
                        If RightKey() Then B2 + 1
                        If KeyHit(208) Then Exit                 
                End Select
                If KeyHit(200) Then colorsetup - 1
                If KeyHit(208) Then colorsetup + 1

                DrawScreen
            Forever
            MakeGradient(ImageWidth(backlayer) * 1.5, ImageHeight(backlayer) * 1.5, r1, g1, b1, r2, g2, b2)
        EndIf
       
        Select RainType
            Case 1
                For i = 0 To RainAmount
                    If Rain(i,2) = 0 Then Rain(i,2) = Rnd(4,5)
                    If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                    Rain(i,0) = Rain(i,0) - rain(i, 2)
                    Rain(i,1) = Rain(i,1) + rain(i, 3)
                   
                    Dot rain(i,0), rain(i,1)
                   
                    If Rain(i,1) > 800 Or rain(i,0) < 0 Then Rain(i,1) = 0 : Rain(i,0) = Rand(2,1800)
                Next i
            Case 2
                For i = 0 To RainAmount
                    rain(i,2) = 0
                    If rain(i,3) = 0 Then rain(i,3) = Rnd(2,4)
                    Rain(i,0) = Rain(i,0) - rain(i, 2)
                    Rain(i,1) = Rain(i,1) + rain(i, 3)
                   
                    Dot rain(i,0), rain(i,1)
                   
                    If Rain(i,1) > 800 Then Rain(i,1) = 0 : Rain(i,0) = Rand(0,800)
                Next i             
        End Select
           
        If KeyHit(cbkey1) Then raintype = 1
        If KeyHit(cbkey2) Then raintype = 2
        If KeyHit(cbkey3) Then raintype = 3
       
        If KeyHit(cbkeyZ) Then
            If showpoints = False Then showpoints = True Else showpoints = False
        EndIf
       
        Text 0,164,"PlacingWaypoint: " +placingwaypoint
       
        If MouseHit(2) And placingwaypoint = False And placingScenery=False Then
            way.WAYPOINTS = New(WAYPOINTS)
            waypointAmount + 1
            way\Xcoord = MouseWX()
            way\Ycoord = MouseWY()
            PlacingWaypoint = True
        EndIf   
       
        If PlacingWaypoint = True Then
            AddText "Klikkaamalla hiiren vasemmalla painikkeella saat valittua mihin suuntaan"
            AddText "botti lähtee tullessaan waypointille."
            AddText "Voit luoda toisen vaihtoehtoisen suunnan klikkaamalla hiiren keskimmäisellä"
            AddText "painikkeella. Tullessaan waypointille, johon on tallennettu kaksi suuntaa, "
            AddText "botti lähtee sattumanvaraisesti toiseen niistä."
            angle = GetAngle(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
            dist = Distance(WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY())
            Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), MouseX(), MouseY()
            If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
            If MouseHit (1) Then
                If Dist > 5 Then way\speedX = Cos(angle) : way\speedy = Sin(angle)
                way\newX = MouseWX()
                way\newY = MouseWY()           
                placingWaypoint = False
            EndIf
            If MouseHit(3) Then
                If Dist > 5 Then way\speedX2 = Cos(angle) : way\speedY2 = Sin(angle)
                way\newX2 = MouseWX()
                way\newY2 = MouseWY()
            EndIf
        ElseIf showpoints = True
            For way.WAYPOINTS = Each WAYPOINTS
                DrawImage circ, WorldToScreenX(way\Xcoord) - 3, WorldToScreenY(way\Ycoord) - 3
                Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX), WorldToScreenY(way\newY)
                If way\speedX2 <> 0 Then Line WorldToScreenX(way\Xcoord), WorldToScreenY(way\Ycoord), WorldToScreenX(way\newX2), WorldToScreenY(way\newY2)
            Next way
        EndIf
       
        If placingScenery = ON Then
            DrawImage scenery(whatscenery), MouseX(), MouseY()
            If MouseHit(1) Then
                If Editedlayer = 1 Then
                    DrawToImage BackLayer
                ElseIf EditedLayer = 2
                    DrawToImage HitLayer
                ElseIf EditedLayer = 3
                    DrawToImage OverLayer
                EndIf
                DrawImage scenery(whatscenery), MouseWX(), -MouseWY()
                DrawToScreen
                sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
                sce\sceX = MouseWX()
                sce\sceY = -MouseWY()
                sce\layer = editedlayer
                sce\name = scenerynames(whatscenery)
                sceneryamount + 1
                PlacingScenery = OFF
            EndIf
            If MouseHit(2) Then
                PlacingScenery = OFF
            EndIf
        EndIf     
       
      If entityso=1 Then //entiry select open=1
      Color cbsilver
      Box 640,0,300,600
        For i = 0 To maastonkappaleet
            Color cbblack
            Text 650, i *11, scenerynames(i)
            If MouseX() > 650 Then
                If MouseY() > i * 11 And MouseY() < 11 * i + 11 Then
                    Box 650-1, i * 11, 150, 11+1, 0
                        tScenery=i //minkä päällä hiiri on (määrää thumb imagen)
                    If MouseHit(1) And scenery(i) <> 0 Then
                        PlacingScenery = ON
                        WhatScenery = i
                    EndIf
                EndIf
            EndIf
        Next i
        //thumb image
        Color cbsilver
        Box 520,500,100,100,1
        If tScenery<maastonkappaleet Then
            thumb=CloneImage (scenery(tScenery))
        EndIf
        ResizeImage thumb,98,98
        DrawImage thumb, 521,501
       EndIf

        DrawScreen
    Forever

    '******************************************************************************************

    SAVEMAP:
    ChDir "MAPS"
    m = OpenToWrite (kartanpolku)
        WriteLine m, shape
        WriteLine m, texture
        WriteLine m, raintype
        WriteLine m, R1
        WriteLine m, G1   
        WriteLine m, B1   
        WriteLine m, R2
        WriteLine m, G2   
        WriteLine m, B2       
       
        WriteLine m, "************************ MAASTONKAPPALEET: ***************************"
       
        WriteLine m, sceneryamount
        For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
            WriteLine m, sce\name   
            WriteLine m, sce\sceX
            WriteLine m, sce\sceY
            WriteLine m, sce\layer
        Next sce
       
        WriteLine m, "***************************** WAYPOINTIT ****************************** "
       
        WriteLine m, waypointamount
        For way.WAYPOINTS = Each WAYPOINTS
            WriteLine m, way\Xcoord
            WriteLine m, way\Ycoord
            WriteLine m, way\speedX
            WriteLine m, way\speedY
            WriteLine m, way\speedX2
            WriteLine m, way\speedY2
        Next way
    CloseFile m
    Return

    ChDir ".."

    MAPLOAD:

        m = OpenToRead (kartanpolku)
            shape$ = ReadLine (m)
            texture$ = ReadLine (m)
            raintype = ReadLine (m)
            R1 = ReadLine (m)
            G1 = ReadLine(m)
            B1 = ReadLine(m)
            R2 = ReadLine(m)
            G2 = ReadLine(m)
            B2 = ReadLine(m)
           
            empty = ReadLine(m)
           
            sceneryamount = ReadLine (m)
            For i = 1 To sceneryamount
                sce.SCENERYOBJECTS = New(SCENERYOBJECTS)
                sce\name = ReadLine (m)           
                sce\sceX = ReadLine (m)
                sce\sceY = ReadLine (m)
                sce\layer = ReadLine (m)
            Next i
           
            empty = ReadLine(m)       
           
            waypointamount = ReadLine (m)
            For i = 1 To waypointamount
                way.WAYPOINTS = New(WAYPOINTS)
               
                way\Xcoord = ReadLine (m)
                way\Ycoord = ReadLine (m)
                way\speedX = ReadLine (m)
                way\speedY = ReadLine (m)
                way\speedX2 = ReadLine (m)
                way\speedY2 = ReadLine (m)
               
            Next i
        CloseFile m
       
        ChDir "MAPS"   

        'luodaan layerit
        MapTexture = LoadImage(texture)
       
        MapShape = LoadImage(shape)
       
        MaskImage MapShape, 0, 255, 0
        ResizeImage MapShape, ImageWidth(MapShape) * 2, ImageHeight(MapShape) * 2
       
        Xkerroin = RoundUp(ImageWidth(mapshape) / ImageWidth(MapTexture))
        Ykerroin = RoundUp(ImageHeight(mapshape) / ImageHeight(MapTexture))
       
        HitLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
        DrawToImage HitLayer
            For x = 0 To Xkerroin
                For y = 0 To Ykerroin
                    DrawImage MapTexture, ImageWidth(Maptexture) * x, ImageHeight(Maptexture) * y
                Next y
            Next x
            DrawImage MapShape, 0, 0
        DrawToScreen
       
        MapX = ImageWidth(MapShape)
        MapY = ImageHeight(MapShape)

        BackLayer = MakeImage (Mapx, MapY)
       
        OverLayer = MakeImage (ImageWidth(MapShape), ImageHeight(MapShape))
       
        Color cbwhite
       
        'piirretään maasto
        For sce.SCENERYOBJECTS = Each SCENERYOBJECTS
            If sce\layer = 1 Then
                DrawToImage BackLayer
            ElseIf sce\layer = 2
                DrawToImage HitLayer
            ElseIf sce\layer = 3
                DrawToImage OverLayer
            EndIf
           
            For i = 0 To maastonkappaleet
                If scenerynames(i) = sce\name And sce\sceX < MapX And sce\sceX < MapY Then
                    DrawImage scenery(i), sce\sceX, sce\sceY
                EndIf
            Next i

        Next sce
               
        DrawToScreen
       
        ChDir ".."
               
    Return

    '******************************************************************************************
    Function ScreenToWorldX(sc)
      wc = CameraX() - ScreenWidth() / 2 + sc
      Return wc
    End Function

    Function ScreenToWorldY(sc)
      wc = CameraY() + ScreenHeight() / 2 - sc
      Return wc
    End Function

    Function WorldToScreenX(wc)
      sc = -CameraX() + ScreenWidth() / 2 + wc
      Return sc
    End Function

    Function WorldToScreenY(wc)
      sc = CameraY() + ScreenHeight() / 2 - wc
      Return sc
    End Function

    Function MakeGradient(width, height, R1#, G1#, B1#, R2#, G2#, B2#)
        Rdifference# = (Max(R1, R2) - Min(R1,R2)) / height
        Gdifference# = (Max(G1, G2) - Min(G1,G2)) / height
        Bdifference# = (Max(B1, B2) - Min(B1,B2)) / height
        DrawToImage BackLayer
        For i = 1 To height
            Color R1 + Rdifference *i, G1 + Gdifference *i, B1 + Bdifference * i
            Line 0, i, width, i
        Next i
        DrawToScreen
    End Function
Nettipeli on edennyt jonkin verran, nyt servuja pystyy tekemään "server-aulaan", josta kaikki peliä pelaavat näkevät ne. Pistin molemmilta koneiltani pelin pyörimään ja liityin samaan serveriin, eikä mitään ongelmaa ollut. Eli toisen pelaajan näki ja kentässä pystyi liikumaan. Vielä on kuitenkin todella paljon tekemistä, eikä ole lähellekkään varmaa, että saan kaiken toimimaan kunnolla.
Mysterius Coder
Active Member
Posts: 133
Joined: Mon Aug 27, 2007 8:13 pm

Re: The 14th Black Crusade

Post by Mysterius Coder »

Nyt kun olet hikiotsassa tekemässä nettipeliä, isken uuden ehdotuksen Vaatimuksen... Eli: Hahmon kustomointi! Laita mahdollisimman moni kehon osa erilliseksi ja niistä useita tyylejä. Sitten on jo melko täydellistä. ( ooh ja joku hahmokuva :O ) Tämmöstä tämä on tämä pelien kehitys, kun saat jotain jotenkin toimimaan niin uusi vaatimuus pläjäytetään päin naamaa.
Kyllä minä osaan, mutta kun mieli on tällasen kaaoksen vallassa, niin ei siitä mitään tule.
Myst!c
Advanced Member
Posts: 259
Joined: Fri Dec 21, 2007 11:49 am
Location: Kemi

Re: The 14th Black Crusade

Post by Myst!c »

Mysterius Coder wrote:Nyt kun olet hikiotsassa tekemässä nettipeliä, isken uuden ehdotuksen Vaatimuksen... Eli: Hahmon kustomointi! Laita mahdollisimman moni kehon osa erilliseksi ja niistä useita tyylejä. Sitten on jo melko täydellistä. ( ooh ja joku hahmokuva :O ) Tämmöstä tämä on tämä pelien kehitys, kun saat jotain jotenkin toimimaan niin uusi vaatimuus pläjäytetään päin naamaa.
Tämä peli alkaa lähenemään täydellistä soldat kloonia.. Ainoa puute soldatissa on se ettei siinä ole tarina"moodia", se vielä ja mysteriusin "lisäilyt" niin tämä alkaa jo hipomaan alelaarien kaupallista tasoa. =)))

(HIENOA!!)
Every Legend Has A Start!
regalis
Advanced Member
Posts: 268
Joined: Mon Aug 27, 2007 9:44 pm

Re: The 14th Black Crusade

Post by regalis »

Mysterius Coder wrote:Nyt kun olet hikiotsassa tekemässä nettipeliä, isken uuden ehdotuksen Vaatimuksen... Eli: Hahmon kustomointi! Laita mahdollisimman moni kehon osa erilliseksi ja niistä useita tyylejä.
Olisihan se kieltämättä hienoa, jos hahmot koostuisivat soldatin tapaan erillisistä osista (eivätkä animaatiotiedostot veisi niin paljon tilaa), mutta sellaisen systeemin tekemisessä olisi kyllä aikamoinen homma. Ja nämä perinteiset animaatiot ovat jonkin verran nopeampia, kuin se että joka raajan kulma tarkistettaisiin erikseen joka framessa. Pitää miettiä tätä sitten kun muut osa-alueet ovat vähän paremmalla mallilla...
Eräs...

Re: The 14th Black Crusade

Post by Eräs... »

Mysterius Coder wrote:
Sota on jatkunut iäti. Voittaja ei ole koskaan ratkennut. Nyt kuitenkin vanhijen vihollisten on liittouduttava kun tuntematon voima Infinity palaa olemassaoloon. Infinityn armeijat rynnivät pitkin maailmankaikkeutta. ainoa toivo on yhdistää sotivat puolet väliaikaisesti ja käydää sotaan yhtenäisinä. MArinet ja kaaosmarinet solmivat välirauhan ja alkavat kasata voimiaan. Kaikki pitäisi saada mukaan. Infinity, kaiken alku ja loppu on herännyt.
lol joo mulla oli taas tylsää.
Katsoppa Cooderi tuo kursivoitu alue. Kaaos ei KOSKAAN solmi välirauhaa. EI KOSKAAN! Loppuun asti, tai sitten ihan palasina kotiin nuolemaan haavoja, mutta ei rauhoja...
Guest

Re: The 14th Black Crusade

Post by Guest »

Vaikuttaa käyvältä peliltä, vaikka maveja, kuten jo sanottiin tulee kyllä harmillisesti. Olisiko sellaisessa ideaa, että laittaisit jokaiselle eri äijälle (tarkoitan noita, joilla voi itse pelata) jonkin ns. erikoisuuden? Esim. tuon Imperial Guardin jetti kestäisi pisimpään, koska on vähiten painoa kannettavana? Tai vaikka tuo Plague Marinella olisi hyvä kestävyys, mutta nopeus hidas? Muille keksitty on toki, mutta en jaksa niitä kaikkia tähän tunkea, jos se vaikka olisikin turhaa.

(Ei niin) Off-Topic:

Mikä on lempibottinne/pelaajanne (tarkoitan noita pelattavia edelleen,sori jos selitän oudosti) ja miksi?
reino

Re: The 14th Black Crusade

Post by reino »

Guest wrote:Vaikuttaa käyvältä peliltä, vaikka maveja, kuten jo sanottiin tulee kyllä harmillisesti. Olisiko sellaisessa ideaa, että laittaisit jokaiselle eri äijälle (tarkoitan noita, joilla voi itse pelata) jonkin ns. erikoisuuden? Esim. tuon Imperial Guardin jetti kestäisi pisimpään, koska on vähiten painoa kannettavana? Tai vaikka tuo Plague Marinella olisi hyvä kestävyys, mutta nopeus hidas? Muille keksitty on toki, mutta en jaksa niitä kaikkia tähän tunkea, jos se vaikka olisikin turhaa.

(Ei niin) Off-Topic:

Mikä on lempibottinne/pelaajanne (tarkoitan noita pelattavia edelleen,sori jos selitän oudosti) ja miksi?
Siis sekä lempibotti että hahmo?
Post Reply