CoolBasic & netti = cbNetwork

Oletko tehnyt jotain, mistä muut voisivat hyötyä. Postita vinkit tänne.
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post by valscion »

naputtelija wrote:Toimiiko tuo coolbasicin SaveGame tämän kanssa ihan normaalisti? Eli ideana olisi se, että uuden clientin tullessa linjoille sen lähettämä ID tarkastetaan ja jos se on uusi, sama clientin ID tallennetaan serverin puolelle ja peli tallennetaan. Jos se on taas vanha, serveri antaa oman pelitilanteensa takaisin. Entä onko tälle minun idealleni jotain käytännöllisempää ratkaisua?
Kuten Viltzu sanoi, SaveGame on on todella epäkäytännöllinen eikä sitä kannata käyttää missään isohkommassa projektissa. Ei varsinkaan sellaisessa, jossa cbNetwork on osallisena.

Mutta niin, periaate siitä että ID tallennettaisiin johonkin ja sitten sitä verrattaisiin myöhemmin tarkistettaessa että onko client sama, toimii vissiinkin vain silloin kun palvelinta eikä clienttiä ole sammutettu. Muistaakseni client saa ID:n palvelimelta silloin, kun se ensimmäistä kertaa yhdistää palvelimeen. Sitten client voi katkaista yhteyden ja yhdistää uudelleen sammuttamatta ohjelmaa ja saa saman ID:n uudelleen. Mutta mikäli client sammuttaa ohjelman, ei samaa ID:tä tule vaan palvelin tarjoaa clientille uuden ID:n.

Voin olla väärässäkin siitä, että uusi ID tarjottaisiin, jos client on sammutettu välissä. Voi olla, että palvelin antaa clientille aina saman ID:n, kunhan palvelinta ei ole clientin yhdistelyiden välissä sammuteltu. Se ainakin on varmaa, että ID:t eivät pysy samoina jos palvelin sammutetaan ja käynnistetään uudelleen.

Tuon idean voisi ehkä toteuttaa sillä tavalla, että teet palvelimen puolelle jokaiselle clientille omalla algoritmillasi jonkin tunnistamis-ID:n. Kun uusi, tuntematon client yhdistää palvelimelle, palvelin lähettää tuon tunnistus-ID:n clientille joka tallentaa sen. Kun client seuraavan kerran yhdistää palvelimelle, lähettää se yhdistyksen yhteydessä tuon tunnistus-ID:n ja palvelin huomaa sen olevan jo entuudestaan tunnettu. Tällöin palvelin voi lähettää pelin sen hetken tilanteen clientille.

Eli tilanne menisi näin:

Code: Select all

## Client yhdistää palvelimelle ensimmäistä kertaa ##
  1. Client lähettää login-paketin
     - login-paketti sisältää tyhjän tunnistus-ID:n
  2. Palvelin vastaanottaa login-paketin
     - huomaa että tunnistus-ID on tyhjä
  3. Palvelin generoi uuden tunnistus-ID:n
  4. Palvelin lähettää tavaraa
     - generoitu tunnistus-ID
     - pelin alun tilanne
  5. Client vastaanottaa tavaraa
     - tunnistus-ID
     - pelin alun tilanne
  6. Client tallentaa tunnistus-ID:n johonkin tiedostoon
  7. Client pelaa...
     ....
     ....
  8. Client katkaisee yhteyden. Lähettää lopetuspaketin.
  9. Palvelin vastaanottaa lopetuspaketin.
 10. Palvelin tallentaa clientin pelin tiedoston johonkin tiedostoon
    ja/tai tallentaa sen muistiin.
 11. Palvelin poistaa clientin listaltaan.


## Client yhdistää palvelimelle, jolla on jo ollut aikaisemmin ##
  1. Client lukee tiedostosta oman tunnistus-ID:nsä
  2. Client lähettää login-paketin
     - login-paketti sisältää tunnistus-ID:n
  3. Palvelin vastaanottaa login-paketin
     - huomaa ettei tunnistus-ID ole tyhjä
  4. Palvelin etsii, onko tunnistus-ID jo entuudestaan olemassa
     - löytää vastaavuuden
  5. Palvelin lukee muistista/tiedostosta clientin viimekertaisen pelitilanteen
  6. Palvelin lähettää tavaraa
     - jokin tieto siitä, että client on tuttu ja tulossa on pelitietoa
       * Voi olla myös tunnistus-ID, joka on sama kuin clientilla,
         jonka perusteella client huomaa että palvelin on todennut
         pelaajan olevan tuttu. Näin client osaa odottaa pelitietoa.
     - pelin tilanne silloin, kun client viimeksi lopetti
  7. Client vastaanottaa tiedot
     - huomaa että palvelin tunnisti pelaajan
     - asettaa pelin tilanteen siihen, mitä palvelin antoi tietona
  8. Client pelaa...
     ....
     ....
  9. Client katkaisee yhteyden. Lähettää lopetuspaketin.
 10. Palvelin vastaanottaa lopetuspaketin.
 11. Palvelin tallentaa clientin pelin tiedoston johonkin tiedostoon
    ja/tai tallentaa sen muistiin.
 12. Palvelin poistaa clientin listaltaan.
EDIT: Oman algoritmin etuihin kuuluu myös se, että jos clientin IP-osoite vaihtuu, voi palvelin silti tunnistaa clientin samaksi. Idea voi laajeta jopa niin pitkälle, että clientin tunnistus-ID:n voi antaa myös kaverille ja hän pääsee pelaamaan sinun peliäsi. Kuitenkaan useammalla kuin yhdelllä pelaajalle ei voi olla samanaikaisesti sama tunnistus-ID, muutoin pelin lopetuksen yhteydessä tallennustilanne voisi mennä sekaisin.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
naputtelija koulussa

Re: CoolBasic & netti = cbNetwork

Post by naputtelija koulussa »

Juu tein siis oman id:n että kun clientti yhdistää ekan kerran se arpoo ID:n itselleen 10 miljardista vaihtoehdosta, tallentaa sen omaan kryptattuun tiedostoonsa, lähettää sen servulle joka luo sitten oman tiedoston kyseiselle id:lle ja tallentaa siihen koordinaatit, kulman ja kaikki muut kamat. Sitten toisella kerralla clientti pääsee käsiksi siihen serverin tiedostoon ja renderöi sen pohjalta itsensä ja kaikki muut muina ukkoina, jotka näkyvät ympärillä. Eli:

1. Client a painaa nappia ylös.
2. Client b painaa nappia alas
3. Molemmat napinpainallukset lähetetään servulle
4. Joka lähettää uudet koordinaatit joka clientille
5. Jos vastaanotettu on oma id, se renderöi oman ohjattavan ukon.
6. Jos on joku muu, se renderöi sen muualle.
7. Complete multi-client peli!
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: CoolBasic & netti = cbNetwork

Post by naputtelija »

Kysyisin onko tässä koodissa kaikki kohdallaan (olenko unohtanu mitään tärkeää)

Client:

Code: Select all

Include "cbNetwork.cb"
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION  = 254
Const INFO_GET_PLAYERLIST      = 253
Const INFO_MOVING              = 252
Const INFO_GIVE_ID             = 251
Const INFO_NUM_OF_CLIENTS      = 250
Const INFO_SENDING_COORDS      = 249
Const INFO_SENDING_IDS         = 248
Type UKOT
    Field obj
    Field id
End Type
Dim cli (27)
FrameLimit 40 'rajoita pelin toimintanopeutta
ukko = LoadObject("Media\guy.bmp", 72)
If Not FileExists("localdata") Then MakeDir "localdata"
If Not FileExists("localdata") Then MakeError "creating localdata-folder failed."
ChDir "localdata"
StartSearch
    file$=FindFile()
    If file="" Then
        f=OpenToWrite("id")
        id=Rand(1,10000000000)
        WriteInt f,id
        CloseFile f
    EndIf
    If file<>"" Then
        f=OpenToRead("id")
        id=ReadInt(f)
        CloseFile f
    EndIf
EndSearch
ClsColor cbWhite
masterukko=LoadObject("ukko.bmp")
InitClient("local",1234,1000)
_Net_InitMemBlock()
_Net_PutByte(INFO_STARTING_CONNECTION)
_Net_PutByte(id)
ClientSend()
Repeat
    rtn = ClientRead()
    If rtn = 0 Then
        _Net_GetInt()
        infoByte = _Net_GetByte()
    EndIf
    
    If infobyte=INFO_NUM_OF_CLIENTS Then
        numoc=_Net_GetInt()
        For i=1 To numoc
            ukko.UKOT=New(UKOT)
            ukko\obj=CloneObject(masterukko)
        Next i
    EndIf
    
    If infobyte=INFO_SENDING_IDS Then
        For ukko.UKOT = Each UKOT
            count=count+1
            tempid=_Net_GetInt()
            If ukko\id=0 Then ukko\id=tempid
            cli(count)=tempid
        Next ukko
        count=0
    EndIf
        
    If infobyte=INFO_SENDING_COORDS() Then
        For ukko.UKOT = Each UKOT
        
            id2=_Net_GetInt()
            
            If id2=id Then
                PositionObject ukko\obj,_Net_GetInt(),_Net_GetInt()
                RotateObject ukko\obj,_Net_GetInt()
                CloneCameraPosition ukko\obj
            Else
                PositionObject ukko\obj,_Net_GetInt(),_Net_GetInt()
                RotateObject ukko\obj,_net_GetInt()
            EndIf
            
            PositionObject ukko\obj,
        Next ukko
    EndIf
    
    If LeftKey() Then turnplus=5
    If RightKey() Then turnplus=-5   
    
    If UpKey() Then moveplus=2
    If DownKey() Then moveplus=-2
    _NetInitMemBlock()
    _Net_PutByte(INFO_MOVING)
    _Net_PutInt(id)
    _Net_PutByte(moveplus)
    _Net_PutByte(turnplus)
    ClientSend()
    
    
    DrawScreen

Forever
Server:

Code: Select all

Include "cbNetwork.cb"
Dim rtn As integer

Type CLIENTS
    Field id
    Field obj
    Field status As Byte
End Type

masterukko=LoadObject("clients/masterukko.bmp",360)
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION  = 254
Const INFO_GET_PLAYERLIST      = 253
Const INFO_MOVING              = 252
Const INFO_GIVE_ID             = 251
Const INFO_NUM_OF_CLIENTS      = 250
Const INFO_SENDING_COORDS      = 249
Const INFO_SENDING_IDS         = 248

If Not FileExists("clients") Then MakeDir "clients"
If Not FileExists("clients") Then MakeError "creating clients-folder failed."
ChDir "clients"
InitServer(1234,1000)
LoadClients()
Repeat
    SendClients()
    SendIds()
    rtn = ServerRead()
    If rtn = 0 Then
        _Net_GetInt()
        infoByte = _Net_GetByte()
    EndIf
    
    If infobyte=INFO_STARTING_CONNECTION Then
        tempid=_Net_GetInt()                  //otetaan talteen ID
        tempidstr=Str(tempid)                 //tehdään siitä merkkijono
        ChDir "clients"                       //työkansio: clients
        
        StartSearch                           //etsitään vastaavuuksia
            Repeat
                currentfile$=FindFile()       //otetaan talteen nyk. tiedosto
                If currentfile=tempidstr Then //Löytyi!
                EndIf
                
                If currentfile="" Then        //ei löytynyt.
                    newclient(tempid)
                EndIf
            Forever
        EndSearch
    EndIf
    
    If infobyte=INFO_MOVING Then sendstuff()
        
Forever

Function LoadClients()
    StartSearch
        Repeat
            file$=FindFile()
            If file="" Then Exit
            
            f=OpenToRead(file)
                client.CLIENTS = New(CLIENTS)
                client\id=Int(file)
                client\obj=CloneObject(masterukko)
                PositionObject client\obj,ReadInt(f),ReadInt(f)
                RotateObject client\obj,ReadInt(f)
            CloseFile f
            
        Forever
    EndSearch
End Function

Function newclient(ident)
    client.CLIENTS = New(CLIENTS)
    client\id=ident
    client\status=True
    client\obj=CloneObject(masterukko)
    f=OpenToWrite(Str(client\id))
        WriteInt f,ObjectX(client\obj)
        WriteInt f,ObjectY(client\obj)
        WriteInt f,ObjectAngle(client\obj)
    CloseFile f
End Function

Function sendstuff()
    id=_Net_GetInt()
    For client.CLIENTS = Each CLIENTS
        If client\id=id Then
            MoveObject client\obj,_Net_GetByte()
            TurnObject client\obj,_Net_GetByte()
            _Net_InitMemBlock()
            _Net_PutByte(INFO_SENDING_COORDS)
            _Net_PutInt(client\id)
            _Net_PutInt(ObjectX(client\obj))
            _Net_PutInt(ObjectY(client\obj))
            _Net_PutInt(ObjectAngle(client\obj))
            f=OpenToWrite(Str(client\id))
                WriteInt f,ObjectX(client\obj)
                WriteInt f,ObjectY(client\obj)
                WriteInt f,ObjectAngle(client\obj)
            CloseFile f
        EndIf
    Next client
    ServerSend()
End Function

Function SendClients()
    For client.CLIENTS = Each CLIENTS
        count=count+1
    Next client
    _Net_InitMemBlock()
    _Net_PutByte(INFO_NUM_OF_CLIENTS)
    ServerSend()
End Function

Function SendIds()
    _Net_InitMemBlock
    _Net_PutByte(INFO_SENDING_IDS)
    For client.CLIENTS = Each CLIENTS
        _Net_PutInt(client\id)
    Next client
    ServerSend()
End Function 

EDIT:

Hups väärä koodi :)

EDIT:

Muutaman muokkauksen jälkeen käynnistin serverin mutta se ei suostunut käynnistymään! Mikä avuksi?

<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post by valscion »

Koodissa kommentointi ei olisi pahitteeksi...

Ainakin se on ongelmana clientin puolella, että annat heti aluksi InitClient-funktiolle väärän osoitteen. Ei ole olemassa sellaista osoitetta kuin "local" mutta "localhost" on.

EDIT: Lataat clientin puolella muuttujaan "ukko" objektin, mutta yrität käyttää syntaksia "ukko.UKOT = New(UKOT)" ja kääntäjä herjaa. Käytä jotain muuta nimeä tyypin instansseille kuin "ukko", esim. "iUkko.UKOT" tai vastaava.

EDIT2: Ja pari kohtaa sulla on ihan väärällä syntaksilla. "PositionObject ukko\obj," ??? mitäs tuon koodinrivin clientin puolella pitäisi tehdä? Ja palvelimen puolella oli SendIds()-funktiossa "_Net_InitMemBlock", kun tarkoitit varmaankin kutsua funktiota, eli "_Net_InitMemBlock()". Myös clientin puolella olit kirjoittanut "_NetInitMemBlock()". Myös ongelmana "If infobyte=INFO_SENDING_COORDS()" kun tarkoitit varmaan "If infobyte=INFO_SENDING_COORDS". Sekä sinulla oli client-puolella Rand()-funktiossa liian suuri luku ja se aiheutti overflown CB:n kääntäjässä. Poistin parit nollat perästä ja se kääntyy viimeinkin.

Testaisit edes että koodisi kääntyy kun laitat sen tänne...

EDIT3: Huhhuh, että pistät sitten auttajat vielä fiksaamaan koodisi käyttämään oletusmediaa, koska et jaksanut omaa koodiasi muuttaa / jakaa kuvatiedostoja...

EDIT4: Koodisi on sen verran kommentoimatonta ja epäselvästi rakennettua (et hoida nettiliikennettä samalla tavalla kuin chattiesimerkissä tai NetMatchissa), en ehkä jaksa auttaa. Sain koodit kääntymään ja toimimaan, mutta kun client yhdisti palvelimelle, kaatui homma MAViin. Tässä minun muokkaamani koodinpätkät:

Code: Select all

//server.cb
Include "cbNetwork.cb"
Dim rtn As integer

Type CLIENTS
    Field id
    Field obj
    Field status As Byte
End Type

masterukko=LoadObject("Media\ukkeli.bmp",360)
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION  = 254
Const INFO_GET_PLAYERLIST      = 253
Const INFO_MOVING              = 252
Const INFO_GIVE_ID             = 251
Const INFO_NUM_OF_CLIENTS      = 250
Const INFO_SENDING_COORDS      = 249
Const INFO_SENDING_IDS         = 248

If Not FileExists("clients") Then MakeDir "clients"
If Not FileExists("clients") Then MakeError "creating clients-folder failed."
ChDir "clients"
InitServer(1234,1000)
LoadClients()
Repeat
    SendClients()
    SendIds()
    rtn = ServerRead()
    If rtn = 0 Then
        _Net_GetInt()
        infoByte = _Net_GetByte()
    EndIf
   
    If infobyte=INFO_STARTING_CONNECTION Then
        tempid=_Net_GetInt()                  //otetaan talteen ID
        tempidstr=Str(tempid)                 //tehdään siitä merkkijono
        ChDir "clients"                       //työkansio: clients
       
        StartSearch                           //etsitään vastaavuuksia
            Repeat
                currentfile$=FindFile()       //otetaan talteen nyk. tiedosto
                If currentfile=tempidstr Then //Löytyi!
                EndIf
               
                If currentfile="" Then        //ei löytynyt.
                    newclient(tempid)
                EndIf
            Forever
        EndSearch
    EndIf
   
    If infobyte=INFO_MOVING Then sendstuff()
       
Forever

Function LoadClients()
    StartSearch
        Repeat
            file$=FindFile()
            If file="" Then Exit
           
            If Not IsDirectory(file) Then
                f=OpenToRead(file)
                    client.CLIENTS = New(CLIENTS)
                    client\id=Int(file)
                    client\obj=CloneObject(masterukko)
                    PositionObject client\obj,ReadInt(f),ReadInt(f)
                    RotateObject client\obj,ReadInt(f)
                CloseFile f
            EndIf
           
        Forever
    EndSearch
End Function

Function newclient(ident)
    client.CLIENTS = New(CLIENTS)
    client\id=ident
    client\status=True
    client\obj=CloneObject(masterukko)
    f=OpenToWrite(Str(client\id))
        WriteInt f,ObjectX(client\obj)
        WriteInt f,ObjectY(client\obj)
        WriteInt f,ObjectAngle(client\obj)
    CloseFile f
End Function

Function sendstuff()
    id=_Net_GetInt()
    For client.CLIENTS = Each CLIENTS
        If client\id=id Then
            MoveObject client\obj,_Net_GetByte()
            TurnObject client\obj,_Net_GetByte()
            _Net_InitMemBlock()
            _Net_PutByte(INFO_SENDING_COORDS)
            _Net_PutInt(client\id)
            _Net_PutInt(ObjectX(client\obj))
            _Net_PutInt(ObjectY(client\obj))
            _Net_PutInt(ObjectAngle(client\obj))
            f=OpenToWrite(Str(client\id))
                WriteInt f,ObjectX(client\obj)
                WriteInt f,ObjectY(client\obj)
                WriteInt f,ObjectAngle(client\obj)
            CloseFile f
        EndIf
    Next client
    ServerSend()
End Function

Function SendClients()
    For client.CLIENTS = Each CLIENTS
        count=count+1
    Next client
    _Net_InitMemBlock()
    _Net_PutByte(INFO_NUM_OF_CLIENTS)
    ServerSend()
End Function

Function SendIds()
    _Net_InitMemBlock()
    _Net_PutByte(INFO_SENDING_IDS)
    For client.CLIENTS = Each CLIENTS
        _Net_PutInt(client\id)
    Next client
    ServerSend()
End Function 

Code: Select all

//client.cb
Include "cbNetwork.cb"
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION  = 254
Const INFO_GET_PLAYERLIST      = 253
Const INFO_MOVING              = 252
Const INFO_GIVE_ID             = 251
Const INFO_NUM_OF_CLIENTS      = 250
Const INFO_SENDING_COORDS      = 249
Const INFO_SENDING_IDS         = 248
Type UKOT
    Field obj
    Field id
End Type
Dim cli(27)
FrameLimit 40 'rajoita pelin toimintanopeutta
ukko = LoadObject("Media\guy.bmp", 72)
If Not FileExists("localdata") Then MakeDir "localdata"
If Not FileExists("localdata") Then MakeError "creating localdata-folder failed."
ChDir "localdata"
StartSearch
    file$=FindFile()
    If file="" Then
        f=OpenToWrite("id")
        id=Rand(1,100000000)
        WriteInt f,id
        CloseFile f
    ElseIf Not IsDirectory(file) Then
        f=OpenToRead("id")
        id=ReadInt(f)
        CloseFile f
    EndIf
EndSearch
ClsColor cbWhite
masterukko=LoadObject("..\Media\ukkeli.bmp")
InitClient("localhost",1234,1000)
_Net_InitMemBlock()
_Net_PutByte(INFO_STARTING_CONNECTION)
_Net_PutByte(id)
ClientSend()
Repeat
    rtn = ClientRead()
    If rtn = 0 Then
        _Net_GetInt()
        infoByte = _Net_GetByte()
    EndIf
   
    If infobyte=INFO_NUM_OF_CLIENTS Then
        numoc=_Net_GetInt()
        For i=1 To numoc
            iUkko.UKOT=New(UKOT)
            iUkko\obj=CloneObject(masterukko)
        Next i
    EndIf
   
    If infobyte=INFO_SENDING_IDS Then
        For iUkko.UKOT = Each UKOT
            count=count+1
            tempid=_Net_GetInt()
            If iUkko\id=0 Then iUkko\id=tempid
            cli(count)=tempid
        Next iUkko
        count=0
    EndIf
       
    If infobyte=INFO_SENDING_COORDS Then
        For iUkko.UKOT = Each UKOT
       
            id2=_Net_GetInt()
           
            If id2=id Then
                PositionObject iUkko\obj,_Net_GetInt(),_Net_GetInt()
                RotateObject iUkko\obj,_Net_GetInt()
                CloneCameraPosition iUkko\obj
            Else
                PositionObject iUkko\obj,_Net_GetInt(),_Net_GetInt()
                RotateObject iUkko\obj,_net_GetInt()
            EndIf
           
            'PositionObject iUkko\obj,
        Next iUkko
    EndIf
   
    If LeftKey() Then turnplus=5
    If RightKey() Then turnplus=-5   
   
    If UpKey() Then moveplus=2
    If DownKey() Then moveplus=-2
    _Net_InitMemBlock()
    _Net_PutByte(INFO_MOVING)
    _Net_PutInt(id)
    _Net_PutByte(moveplus)
    _Net_PutByte(turnplus)
    ClientSend()
   
   
    DrawScreen

Forever 
EDIT5: Palvelimen puolella vaihdat kansiota repeat-silmukassa If-lausekkeen sisällä mutta et vaihda takaisin yläkansioon. Näin palvelin ajautuu jossain vaiheessa yrittämään väärään kansioon.

Code: Select all

    If infobyte=INFO_STARTING_CONNECTION Then
        tempid=_Net_GetInt()                  //otetaan talteen ID
        tempidstr=Str(tempid)                 //tehdään siitä merkkijono
        ChDir "clients"                       //työkansio: clients
       
        StartSearch                           //etsitään vastaavuuksia
            Repeat
                currentfile$=FindFile()       //otetaan talteen nyk. tiedosto
                If currentfile=tempidstr Then //Löytyi!
                EndIf
               
                If currentfile="" Then        //ei löytynyt.
                    newclient(tempid)
                EndIf
            Forever
        EndSearch
    EndIf 
EDIT6: Kun korjasin tuon edellisen kohdan lisäämällä EndSearchin jälkeen rivin ChDir "..", toimi palvelin MAVittamatta. Mutta client lagaa armottomasti ja syy johtuu ClientSend:n jatkuvasta aikakatkaisusta (timeoutista).

EDIT7: Lähetä aina jonkinmoinen lopetustavu clientin ja palvelimen puolella, kun dataa ei enää tule. Näin palvelin/client tietää lopettaa lukemisen oikeassa kohdassa.

EDIT8: Et voi tietää, onko clientin ja palvelimen puolella sama määrä tyypin jäseniä varmasti. Lähetä palvelimen puolella ensin tulevien ukkojen ID:den määrä ja sen jälkeen lue dataa vastaavasti.

Code: Select all

    If infobyte=INFO_SENDING_IDS Then
        For iUkko.UKOT = Each UKOT
            count=count+1
            tempid=_Net_GetInt()
            If iUkko\id=0 Then iUkko\id=tempid
            cli(count)=tempid
        Next iUkko
        count=0
    EndIf
EDIT9: Liikaa virheitä. Järjestä clientin ja palvelimen puolella nettiliikenne selkeästi lähetykseen ja lukemiseen. Käytä clientin puolella mielummin ClientSendBack-funktiota, niin pelisi ei lagaa vaikka nettiyhteys on hidas. Ota mallia chattiesimerkistä ja NetMatchista. Minä en enää jaksa yrittää auttaa.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
naputtelija
Devoted Member
Posts: 718
Joined: Wed Nov 03, 2010 7:56 pm
Location: Joku piste pohjoisessa.

Re: CoolBasic & netti = cbNetwork

Post by naputtelija »

VesQ wrote:Koodissa kommentointi ei olisi pahitteeksi...

Ainakin se on ongelmana clientin puolella, että annat heti aluksi InitClient-funktiolle väärän osoitteen. Ei ole olemassa sellaista osoitetta kuin "local" mutta "localhost" on.

EDIT: Lataat clientin puolella muuttujaan "ukko" objektin, mutta yrität käyttää syntaksia "ukko.UKOT = New(UKOT)" ja kääntäjä herjaa. Käytä jotain muuta nimeä tyypin instansseille kuin "ukko", esim. "iUkko.UKOT" tai vastaava.

EDIT2: Ja pari kohtaa sulla on ihan väärällä syntaksilla. "PositionObject ukko\obj," ??? mitäs tuon koodinrivin clientin puolella pitäisi tehdä? Ja palvelimen puolella oli SendIds()-funktiossa "_Net_InitMemBlock", kun tarkoitit varmaankin kutsua funktiota, eli "_Net_InitMemBlock()". Myös clientin puolella olit kirjoittanut "_NetInitMemBlock()". Myös ongelmana "If infobyte=INFO_SENDING_COORDS()" kun tarkoitit varmaan "If infobyte=INFO_SENDING_COORDS". Sekä sinulla oli client-puolella Rand()-funktiossa liian suuri luku ja se aiheutti overflown CB:n kääntäjässä. Poistin parit nollat perästä ja se kääntyy viimeinkin.

Testaisit edes että koodisi kääntyy kun laitat sen tänne...

EDIT3: Huhhuh, että pistät sitten auttajat vielä fiksaamaan koodisi käyttämään oletusmediaa, koska et jaksanut omaa koodiasi muuttaa / jakaa kuvatiedostoja...

EDIT4: Koodisi on sen verran kommentoimatonta ja epäselvästi rakennettua (et hoida nettiliikennettä samalla tavalla kuin chattiesimerkissä tai NetMatchissa), en ehkä jaksa auttaa. Sain koodit kääntymään ja toimimaan, mutta kun client yhdisti palvelimelle, kaatui homma MAViin. Tässä minun muokkaamani koodinpätkät:

Code: Select all

koodia 
EDIT5: Palvelimen puolella vaihdat kansiota repeat-silmukassa If-lausekkeen sisällä mutta et vaihda takaisin yläkansioon. Näin palvelin ajautuu jossain vaiheessa yrittämään väärään kansioon.

Code: Select all

    If infobyte=INFO_STARTING_CONNECTION Then
        tempid=_Net_GetInt()                  //otetaan talteen ID
        tempidstr=Str(tempid)                 //tehdään siitä merkkijono
        ChDir "clients"                       //työkansio: clients
       
        StartSearch                           //etsitään vastaavuuksia
            Repeat
                currentfile$=FindFile()       //otetaan talteen nyk. tiedosto
                If currentfile=tempidstr Then //Löytyi!
                EndIf
               
                If currentfile="" Then        //ei löytynyt.
                    newclient(tempid)
                EndIf
            Forever
        EndSearch
    EndIf 
EDIT6: Kun korjasin tuon edellisen kohdan lisäämällä EndSearchin jälkeen rivin ChDir "..", toimi palvelin MAVittamatta. Mutta client lagaa armottomasti ja syy johtuu ClientSend:n jatkuvasta aikakatkaisusta (timeoutista).

EDIT7: Lähetä aina jonkinmoinen lopetustavu clientin ja palvelimen puolella, kun dataa ei enää tule. Näin palvelin/client tietää lopettaa lukemisen oikeassa kohdassa.

EDIT8: Et voi tietää, onko clientin ja palvelimen puolella sama määrä tyypin jäseniä varmasti. Lähetä palvelimen puolella ensin tulevien ukkojen ID:den määrä ja sen jälkeen lue dataa vastaavasti.

Code: Select all

    If infobyte=INFO_SENDING_IDS Then
        For iUkko.UKOT = Each UKOT
            count=count+1
            tempid=_Net_GetInt()
            If iUkko\id=0 Then iUkko\id=tempid
            cli(count)=tempid
        Next iUkko
        count=0
    EndIf
EDIT9: Liikaa virheitä. Järjestä clientin ja palvelimen puolella nettiliikenne selkeästi lähetykseen ja lukemiseen. Käytä clientin puolella mielummin ClientSendBack-funktiota, niin pelisi ei lagaa vaikka nettiyhteys on hidas. Ota mallia chattiesimerkistä ja NetMatchista. Minä en enää jaksa yrittää auttaa.
Nuo on korjattu, kiitos ohjeista!
EDIT:

servu ei vastaa. apua?
client:

Code: Select all

Include "cbNetwork.cb"
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION  = 254
Const INFO_GET_PLAYERLIST      = 253
Const INFO_MOVING              = 252
Const INFO_GIVE_ID             = 251
Const INFO_NUM_OF_CLIENTS      = 250
Const INFO_SENDING_COORDS      = 249
Const INFO_SENDING_IDS         = 248
Type UKOT
    Field obj
    Field id
End Type
Dim cli (27)
FrameLimit 40 'rajoita pelin toimintanopeutta
masterukko = LoadObject("localdata\guy.bmp", 72)
If Not FileExists("localdata") Then MakeDir "localdata"
If Not FileExists("localdata") Then MakeError "creating localdata-folder failed."
ChDir "localdata"
StartSearch
    Repeat
    file$=FindFile()
    If file<>"id" Then
        f=OpenToWrite("id")
        id=Rand(1,2147483647)
        WriteInt f,id
        CloseFile f
        Exit
    EndIf
    If file="id" And file<>"guy.bmp" Then
        f=OpenToRead("id")
        id=ReadInt(f)
        CloseFile f
        Exit
    EndIf
    Forever
EndSearch
ClsColor cbWhite
Color cbBlack
InitClient("localhost",1234)
_Net_InitMemBlock()
_Net_PutByte(INFO_STARTING_CONNECTION)
_Net_PutByte(id)
ClientSendBack()
Repeat
    rtn = ClientRead()
    If rtn = 0 Then
        _Net_GetInt()
        infoByte = _Net_GetByte()
    EndIf
    
    If infobyte=INFO_NUM_OF_CLIENTS Then
        numoc=_Net_GetInt()
        For i=1 To numoc
            ukko.UKOT=New(UKOT)
            ukko\obj=CloneObject(masterukko)
        Next i
    EndIf
    
    If infobyte=INFO_SENDING_IDS Then
        For ukko.UKOT = Each UKOT
            count=count+1
            tempid=_Net_GetInt()
            If ukko\id=0 Then ukko\id=tempid
            cli(count)=tempid
        Next ukko
        count=0
    EndIf
        
    If infobyte=INFO_SENDING_COORDS Then
        For ukko.UKOT = Each UKOT
        
            id2=_Net_GetInt()
            
            If id2=id Then
                PositionObject ukko\obj,_Net_GetInt(),_Net_GetInt()
                RotateObject ukko\obj,_Net_GetInt()
                CloneCameraPosition ukko\obj
            Else
                PositionObject ukko\obj,_Net_GetInt(),_Net_GetInt()
                RotateObject ukko\obj,_net_GetInt()
            EndIf
        Next ukko
    EndIf
    
    If LeftKey() Then turnplus=5
    If RightKey() Then turnplus=-5   
    
    If UpKey() Then moveplus=2
    If DownKey() Then moveplus=-2
    _Net_InitMemBlock()
    _Net_PutByte(INFO_MOVING)
    _Net_PutInt(id)
    _Net_PutByte(moveplus)
    _Net_PutByte(turnplus)
    ClientSendBack()
    If KeyDown(cbKeyEsc) Then shutdown()
    Text 0,0,FPS()
    Text 0,20,infobyte
    DrawScreen

Forever

Function shutdown()
    For ukko.UKOT=Each UKOT
        DeleteObject ukko\obj
        Delete ukko
    Next ukko
    End
End Function 
server:

Code: Select all

Include "cbNetwork.cb"
Dim rtn As integer

Type CLIENTS
    Field id
    Field obj
    Field status As Byte
End Type
SAFEEXIT OFF 
masterukko=LoadObject("clients/masterukko.bmp",360)
Const INFO_STARTING_CONNECTION = 255
Const INFO_CLOSING_CONNECTION  = 254
Const INFO_GET_PLAYERLIST      = 253
Const INFO_MOVING              = 252
Const INFO_GIVE_ID             = 251
Const INFO_NUM_OF_CLIENTS      = 250
Const INFO_SENDING_COORDS      = 249
Const INFO_SENDING_IDS         = 248

If Not FileExists("clients") Then MakeDir "clients"
If Not FileExists("clients") Then MakeError "creating clients-folder failed."


InitServer(1234)
LoadClients()
Repeat
    SendClients()
    SendIds()
    rtn = ServerRead()
    If rtn = 0 Then
        _Net_GetInt()
        infoByte = _Net_GetByte()
    EndIf
    
    If infobyte=INFO_STARTING_CONNECTION Then
        tempid=_Net_GetInt()                  //otetaan talteen ID
        tempidstr=Str(tempid)                 //tehdään siitä merkkijono                     //työkansio: clients
        ChDir "clients"
        StartSearch                           //etsitään vastaavuuksia
            Repeat
                currentfile$=FindFile()       //otetaan talteen nyk. tiedosto
                If currentfile=tempidstr Then //Löytyi!
                EndIf
                
                If currentfile="" Then        //ei löytynyt.
                    newclient(tempid)
                EndIf
            Forever
        EndSearch
        ChDir ".."
    EndIf
    
    If infobyte=INFO_MOVING Then sendstuff()
    If KeyDown (cbKeyEsc) Then shutdown()
    Text 0,0,FPS()
    DrawScreen
Forever

Function LoadClients()
    StartSearch
        Repeat
            file$=FindFile()
            If file="" Then Exit
            If file="masterukko.bmp" Then Goto ignore
            
            f=OpenToRead(file)
                client.CLIENTS = New(CLIENTS)
                client\id=Int(file)
                client\obj=CloneObject(masterukko)
                PositionObject client\obj,ReadInt(f),ReadInt(f)
                RotateObject client\obj,ReadInt(f)
            CloseFile f
            ignore:
        Forever
    EndSearch
End Function

Function newclient(ident)
    client.CLIENTS = New(CLIENTS)
    client\id=ident
    client\status=True
    client\obj=CloneObject(masterukko)
    f=OpenToWrite(Str(client\id))
        WriteInt f,ObjectX(client\obj)
        WriteInt f,ObjectY(client\obj)
        WriteInt f,ObjectAngle(client\obj)
    CloseFile f
End Function

Function sendstuff()
    id=_Net_GetInt()
    For client.CLIENTS = Each CLIENTS
        If client\id=id Then
            MoveObject client\obj,_Net_GetByte()
            TurnObject client\obj,_Net_GetByte()
            _Net_InitMemBlock()
            _Net_PutByte(INFO_SENDING_COORDS)
            _Net_PutInt(client\id)
            _Net_PutInt(ObjectX(client\obj))
            _Net_PutInt(ObjectY(client\obj))
            _Net_PutInt(ObjectAngle(client\obj))
            f=OpenToWrite(Str(client\id))
                WriteInt f,ObjectX(client\obj)
                WriteInt f,ObjectY(client\obj)
                WriteInt f,ObjectAngle(client\obj)
            CloseFile f
        EndIf
    Next client
    ServerSend()
End Function

Function SendClients()
    For client.CLIENTS = Each CLIENTS
        count=count+1
    Next client
    _Net_InitMemBlock()
    _Net_PutByte(INFO_NUM_OF_CLIENTS)
    ServerSend()
End Function

Function SendIds()
    _Net_InitMemBlock()
    _Net_PutByte(INFO_SENDING_IDS)
    For client.CLIENTS = Each CLIENTS
        _Net_PutInt(client\id)
    Next client
    ServerSend()
End Function 

Function shutdown()
    For client.CLIENTS=Each CLIENTS
        DeleteObject client\obj
        Delete client
    Next client
    CloseServer()
    End
End Function

[/edit]
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: CoolBasic & netti = cbNetwork

Post by Konstaduck »

Miten saisin palvelimen vastaamaan cbNetworkin lähettämään toplistapyyntöön? Pitäisikö se toteuttaa JavaScriptilla/HTML:llä? Nyt ollaan pelissä jo siinä vaiheessa, että pitäisi saada palvelimelta TOP 5 - listat...

Kiitän jo valmiiksi kaikkia, ketkä vain tuhlaavat kallista aikaansa ja auttavat minua :lol:
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
temu92
Web Developer
Web Developer
Posts: 1226
Joined: Mon Aug 27, 2007 9:56 pm
Location: Gamindustri
Contact:

Re: CoolBasic & netti = cbNetwork

Post by temu92 »

Lähetät web-palvelimelle HTTP-kutsun (kts. Wikipedia), en muista tukiko cbNetwork niitä jo muutenkin. Palvelin vastaa automaattisesti kutsuun.
User avatar
Timblex
Advanced Member
Posts: 252
Joined: Sun Apr 11, 2010 10:37 am
Location: Kouvola

Re: CoolBasic & netti = cbNetwork

Post by Timblex »

Teet php:llä ojelman joka tulostaa nettisivulle top 5 listan ja sen jälkeen cb koodiisi:

Code: Select all

httpget(osoite$)
httpsavecontent("toplista.txt")
toplist=opentoread("toplista.txt")
Entinen timpe99...
Demokisa 2013 demo valmis, Check it out!
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post by valscion »

http://www.cbrepository.com/codes/code/34/

Siinä on sinulle toimiva funktio, joka hakee netistä joltain sivulta tekstiä ja palauttaa sen merkkijonona.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: CoolBasic & netti = cbNetwork

Post by Konstaduck »

timpe99 wrote:Teet php:llä ojelman joka tulostaa nettisivulle top 5 listan ja sen jälkeen cb koodiisi:

Code: Select all

httpget(osoite$)
httpsavecontent("toplista.txt")
toplist=opentoread("toplista.txt")
Voihh, pitäisi ruveta sitä PHP:ta(kin) opettelemaan. Nyt juuri on kyllä JavaScript kesken, miten tässä kerkeekään revetä joka suuntaan...?
VesQ wrote:http://www.cbrepository.com/codes/code/34/

Siinä on sinulle toimiva funktio, joka hakee netistä joltain sivulta tekstiä ja palauttaa sen merkkijonona.
Tuollahan saa kätevästi arvot talteen sivuilta, vaan miten tallennettua? :o
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post by valscion »

cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: CoolBasic & netti = cbNetwork

Post by Konstaduck »

Mutta jos haluaisin tuon toplistan vaikka omille sivuilleni?
Onhan NetMatchiin:kin nuo serverilistaukset säädetty, ja palvelin vastaa niihin. Miten?

Onko CB:hen funktiot nettisivulle kirjoittelua varten?
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
Viltzu
Guru
Posts: 1132
Joined: Sun Aug 26, 2007 5:45 pm
Location: Alavieska
Contact:

Re: CoolBasic & netti = cbNetwork

Post by Viltzu »

Konstaduck wrote:
Mutta jos haluaisin tuon toplistan vaikka omille sivuilleni?
Onhan NetMatchiin:kin nuo serverilistaukset säädetty, ja palvelin vastaa niihin. Miten?

Onko CB:hen funktiot nettisivulle kirjoittelua varten?
CB tekee http kutsun (esim. "http://viltzu.in/index.php?nick=moi&pisteet=1000"), teet PHP:llä (esimerkiksi) että ottaa arvot $_GET:llä (php:ssä) ja tallentelee ja sit sivu joka lataa ja näyttää tulokset. Enempää en jaksa kirjuutella. PHP:llä onnistuu kivasti $_GET:llä.
Vähän topiikkia selaamalla (KLIK THIS) ja voinet lukea myös miten lähetät melko turvallisesti tiedot top listaan
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post by valscion »

Konstaduck wrote:Onhan NetMatchiin:kin nuo serverilistaukset säädetty, ja palvelin vastaa niihin. Miten?
https://github.com/VesQ/NetMatch/blob/m ... eg/gss.php
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
tuhoojabotti
Advanced Member
Posts: 485
Joined: Tue Aug 28, 2007 3:53 pm
Location: Suomi, Finland
Contact:

Re: CoolBasic & netti = cbNetwork

Post by tuhoojabotti »

VesQ wrote:
Konstaduck wrote:Onhan NetMatchiin:kin nuo serverilistaukset säädetty, ja palvelin vastaa niihin. Miten?
https://github.com/VesQ/NetMatch/blob/m ... eg/gss.php
Tai https://github.com/VesQ/node-NetMatch/b ... gss/GSS.js ;-)
Imagedev.tuhoojabotti.com — “Programmer (noun): An organism that turns caffeine into code.”
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: CoolBasic & netti = cbNetwork

Post by Konstaduck »

Viltzu wrote: CB tekee http kutsun (esim. "http://viltzu.in/index.php?nick=moi&pisteet=1000"), teet PHP:llä (esimerkiksi) että ottaa arvot $_GET:llä (php:ssä) ja tallentelee ja sit sivu joka lataa ja näyttää tulokset. Enempää en jaksa kirjuutella. PHP:llä onnistuu kivasti $_GET:llä.
Vähän topiikkia selaamalla (KLIK THIS) ja voinet lukea myös miten lähetät melko turvallisesti tiedot top listaan
Noniin, alanpas säätäämään tuon PHP:n ja cbNetworkin kanssa. Jospa saisinkin sen toimimaan :D
Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
VerkkoGuru
Member
Posts: 73
Joined: Sat Feb 25, 2012 3:42 pm

Re: CoolBasic & netti = cbNetwork

Post by VerkkoGuru »

Kokeilin tuota Valtzun tutossa olevaa esimerkkiä, joka lataa sivun yle.fi/mobiiliuutiset ja sitten avaa sen selaimeen, valitti tällaista:Incorrect Library version(Cbnetwork.dll)!
User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 3:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: CoolBasic & netti = cbNetwork

Post by Konstaduck »

VerkkoGuru wrote:Kokeilin tuota Valtzun tutossa olevaa esimerkkiä, joka lataa sivun yle.fi/mobiiliuutiset ja sitten avaa sen selaimeen, valitti tällaista:Incorrect Library version(Cbnetwork.dll)!
Sulta puuttuu sieltä samasta kansiosta cbNetwork.dll... ;)
EDIT:

Tai se cbNetork.dll on väärä versio sen cbNetwork.cb:n kanssa

Konstaduck.net
<Ize> Pitäs tehä allekirjotus..
<Ize> Vois keksiä jonkin nasahtavan sanonnan..
<Ize> Siitä tulis upea legenda ja kaikki vaihtaisivat allekirjoituksensa siihen.
<Ize> Ehkä ei kuitenkaa...
VerkkoGuru
Member
Posts: 73
Joined: Sat Feb 25, 2012 3:42 pm

Re: CoolBasic & netti = cbNetwork

Post by VerkkoGuru »

Konstaduck wrote:
VerkkoGuru wrote:Kokeilin tuota Valtzun tutossa olevaa esimerkkiä, joka lataa sivun yle.fi/mobiiliuutiset ja sitten avaa sen selaimeen, valitti tällaista:Incorrect Library version(Cbnetwork.dll)!
Sulta puuttuu sieltä samasta kansiosta cbNetwork.dll... ;)
EDIT:

Tai se cbNetork.dll on väärä versio sen cbNetwork.cb:n kanssa

Kyllä se dll:kin sieltä löytyy. Voi olla, että on väärä versio :l
User avatar
valscion
Moderator
Moderator
Posts: 1599
Joined: Thu Dec 06, 2007 7:46 pm
Location: Espoo
Contact:

Re: CoolBasic & netti = cbNetwork

Post by valscion »

Enpä usko että on väärä versio. Koitappa niin että lähdekoodi/exe ja DLL on samassa kansiossa, josko virhe korjaantuisi. DLL:ää ei tainnut saada ladattua, jos se sijaitsee alikansioissa.
cbEnchanted, uudelleenkirjoitettu runtime. Uusin versio: 0.4.1 — Nyt myös sorsat GitHubissa!
NetMatch - se kunnon nettimättö-deathmatch! Avoimella lähdekoodilla varustettu
vesalaakso.com
Post Reply