Offtopic (I/2012)

Muu yhteisön välinen keskustelu.
User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Offtopic (I/2012)

Post by Jani » Sat Jan 04, 2014 1:09 am

Pettis wrote:Ei kenelläkään sattuis olemaan ylimääräistä beta-kutsua Blizzardin Hearthstoneen?
Niitä ei valitettavasti saanut ylimääräistä, ainoastaan yhden per tunnus. 7.1. alkaa seuraava jako niille, jotka ovat ilmoittautuneet betaan.
EDIT:

I stand corrected.

Last edited by Jani on Mon Jan 06, 2014 11:35 pm, edited 1 time in total.
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
Pettis
The Evil Admin
The Evil Admin
Posts: 1038
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: Offtopic (I/2012)

Post by Pettis » Mon Jan 06, 2014 5:04 pm

Jani wrote:
Pettis wrote:Ei kenelläkään sattuis olemaan ylimääräistä beta-kutsua Blizzardin Hearthstoneen?
Niitä ei valitettavasti saanut ylimääräistä, ainoastaan yhden per tunnus. 7.1. alkaa seuraava jako niille, jotka ovat ilmoittautuneet betaan.
Eri kampanjoissa jaetut kutsut eivät ole mitenkään sidoksissa tunnuksiin. Vasta oli esim. Korean Blizzardilla kampanja josta sai sähköpostiosoitteella kutsuja, mutta itse myöhästyin muutamalla tunnilla sen päättymisestä, niin ei ole kutsua näkynyt.

EDIT: Eipä mitään enää. On näemmä ilmestynyt peli tuonne battle.net launcheriin.
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Offtopic (I/2012)

Post by MaGetzUb » Wed Feb 12, 2014 10:15 pm

Tässä tuli taas pitkästäaikaa räplättyä CoolBasicilla enemmän ja "hakkeroitua" sitä. Ei siis ole kyse kräkkeröinnistä. Huomasin että tekstinhän saa helposti laitettua muistipalaan pelkällä Encrypt kutsulla, kunhan vain luo ensiksi muistipalan jonka pituus on tekstinpituus. :D

Code: Select all

str_ = strmem("Hello world!")

Repeat 
    ClearText 
    s$ = ""
    
    //Luetaan muistipalan koko -1 asti, koska viimmeinen tavu muistipalassa osoittaa vain kohdan,
    //missä tekstinluku pitää lopettaa.
    For i = 0 To MEMBlockSize(str_)-1
        s$ = s$ + Chr(PeekByte(str_, i))
    Next i
    SetWindow ""+s$
    AddText s$ 

DrawScreen
Forever 


Function StrMem(s$)
    mem = MakeMEMBlock(Len(s$))
    Encrypt mem,mem, s$
    Return mem
EndFunction 
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
Jare
Moderator
Moderator
Posts: 860
Joined: Mon Aug 27, 2007 10:18 pm
Location: Helsinki

Re: Offtopic (I/2012)

Post by Jare » Fri Feb 21, 2014 8:23 am

MaGetzUb wrote:Tässä tuli taas pitkästäaikaa räplättyä CoolBasicilla enemmän ja "hakkeroitua" sitä. Ei siis ole kyse kräkkeröinnistä. Huomasin että tekstinhän saa helposti laitettua muistipalaan pelkällä Encrypt kutsulla, kunhan vain luo ensiksi muistipalan jonka pituus on tekstinpituus. :D
Mielenkiintoinen havainto. CoolBasic käyttää muutenkin muistipaloja aika laajasti joka puolella. Kirjoitan nyt aika pitkästi, eikä tämä sepustukseni nyt välttämättä liity suoraan mihinkään. Kunhan vain tykkään itsekkin kokeilla erikoisia juttuja CoolBasicissa :).

Jokainen merkkijono itsessään on muistipala. Vähän aikaa sitten koitin hieman räpeltää tyyppien kanssa. Jokainen typin jäsenhän on muistipala, joka sisältää tiedon edeltävästä jäsenestä, seuraavasta jäsenestä, tyyppikokoelmasta johon jäsen kuuluu, jäseneen tallennetut arvot sekä vielä "ylimääräiset" neljä tavua, joiden merkitys ei itselleni auennut. Nuo tavut sijaitsevat jäsenen muistipalan lopussa, ja testeissäni ne olivat aina arvoltaan nollia.

Näissä testeissä havaitsin jäsenen ensimmäisen kentän arvon sijaitsevan positiossa 12. Arvo tulee lukea kentän tyypin mukaisella funktiolla, esimerkiksi kokonaisluvun olessa kyseessä:

Code: Select all

PeekInt(ConvertToInteger(tyypin_jäsen), 12)
Käytännön ongelmaksi muodostuu se, että tietotyyppiä ei saa automaattisesti mistään selville - se täytyy tietää. Itse tyyppikokoelman määritystietoihin en testeissäni päässyt käsiksi. Muuttujien suhteen homma toimii niin, että tyyppijäsenmuuttujat sisältävät suoraan osoittimen jäsenen muistipalaan. Sen sijaan tyyppiekokoelman tunnisteet - joita jopa niitäkin pystyy joissain tapauksissa lukemaan muuttujina - ovat juoksevia numeroita alkaen ykkösestä.

Tällä koodilla saa tyyppikokoelman numeron selville:

Code: Select all

Type HELLO_WORLD
    //Kenttien määritykset tähän....
EndType

Function Blah(type_index)
    MakeError type_index
EndFunction

Blah(HELLO_WORLD)

Voisi kuvitella, että tuosta tulisi syntaksivirheilmoitus. Ei tule. Tyyppikokoelman tunnisteen voi lukea harvoissa tilanteissa, mutta yksi niistä on käyttäminen funktion parametrina.

(Mielenkiintoinen sivuhuomio on se, että tuo juokseva numero vaikuttaa myös objektien juoksevaan numerointiin: jos ohjelmassa ei ole ainuttakaan tyyppikokoelmaa, ensimmäinen objekti saa numerokseen 1, mutta jos tyyppikokoelmia on, ensimmäisen objektin numero ei ole ykkönen, vaan se on riippuvainen tyyppikokoelmien määrästä). Lisäksi ConvertToInteger() ja ConvertToType() ovat varsin kummallisia funktioita. Mihin niitä tarvitaan? Kyseessä on jonkinlainen syntaksitarkistukseen liittyvä kiertotie. Ne eivät varsinaisesti konvertoi tyyppijäsentä millään tavalla. Muistaakseni CoolBasic sallii suoraan tyyppijäsenen asettamisen kokonaislukumuuttujaan ilman ConvertToIntegerin käyttöä. Sen sijaan itse muuttujan tyyppi on tärkeä jos halutaan lukea tai asettaa jäsenen sisältämiä arvoja: kenoviivan käyttö kokonaislukumuuttujan kohdalla ei ole mitenkään mahdollista.

Jäsenen arvojen lukeminen vaatii siis tietoisuuden arvojen tyypeistä. Jos kyseessä on merkkijono, jäsenen muistipalasta löytyy kokonaisluku, joka kertoo osoittimen itse tekstin sisältävään muistipalaan. Tuon muistipalan voi vaikka käydä poistamassa ja asettamassa tilalle toisen muistipalan. Tai voi muokkailla alkuperäistä muistipalaa. Voit vaikka syöttää saman muistipalan osoittimen kaikille tyyppikokoelman jäsenille johonkin kenttään: näin niillä on yhteinen, jaettu merkkijonomuuttuja. En nyt tiedä sitten, mitä järkeä tässä olisi :D.

Näitä jippoja voisi melkein käyttää vaikkapa universaalin tyyppikokoelman tallennusfunktion tekemiseen: funktio kykenisi tallentamaan minkä tahansa tyyppikokoelman kaikki jäsenet. Mutta valitettavasti ei ihan. Periaatteessa jäsenen muistipalan voisi kyllä käydä läpi loopissa ja tallentaa kaikkien kenttien arvot tiedostoon, mutta tekstimuuttujien tunnistaminen ei ikävä kyllä ole mahdollista. Jollain pitäisi saada selville, onko käsiteltävä nelitavuinen tieto osoitin olemassa olevaan muistipalaan vai ei. Kiertotienä voisi käyttää sitä, että funktiolle erikseen kerrotaan, mitkä kentät ovat merkkijonokenttiä.

Tallennusfunktion tekeminen siis kutakuinkin onnistuisi - lataamisfunktiossa taas olisi omat ongelmansa: Koska itse tyyppikokoelman määritykseen ei saa mitään otetta, ei muistipalakomennoilla minun kokemukseni mukaan ole mahdollista vaikuttaa kokoelman First()- ja Last()-arvoihin. Latausfunktio voisi luoda muistipalan, jossa on sama sisältö kuin tallennetulla jäsenellä, mutta sitä ei pystyisi liittämään tyyppikokoelman ensimmäiseksi tai viimeiseksi jäseneksi niin, että CoolBasic sen noteeraisi. Ongelmia seuraisi For Eachia sekä First():a ja Last():a käyttävissä ohjelmissa.

Periaatteessa voisi kuitenkin luopua tyyppikokoelmista järjestettynä listana ja tyytyä luomaan jäseniä ilman listaa. Jäsen saadaan täysin katoamaan tyyppikokoelman listasta jos sen sisältö kopioidaan toiseen muistipalaan (ja sen sisältämät merkkijonot kopioidaan myös ihan uusiin muistipaloihin) ja sen jälkeen poistetaan alkuperäinen jäsen. Jäsenen uuden muistipalan osoitin voidaan asettaa jäsen.TYYPPi-muuttujan arvoksi, jolloin päästään taas suoraan käsiksi jäsenen kenttien arvoihin. Jäsenen voisi jopa syöttää jäseneksi ihan toiseen tyyppikokoelmaan, mutta aiemmin mainittujen ongelmien vuoksi First() ja Last() -funktiot eivät koskaan näkisi kyseistä jäsentä. Myöskään For Each ei osaisi aloittaa lenkkiä uudesta jäsenestä, mutta toki se kävisi tuon uudenkin jäsenen läpi, jos ketjutus on tehty oikein: uuden kokoelman jonkin jäsenen täytyy sisältää tieto siitä että tämä uusi jäsen on sen seuraaja. Tämä on mahdollista toteuttaa, koska kuten aiemmin mainitsin, jokaisen jäsenen muistipala sisältää osoittimen seuraavan jäsenen muistipalaan - ja myös edellisen jäsenen muistipalaan.

Wall of text päättyy. Varmaan jotkut kohdat olivat aika epäselvästi esitettyjä. Jos asia kiinnostaa, juttelen siitä mielelläni lisää. Sähköpostillakin voi ottaa yhteyttä j-jare.fi. Elikkä viiva pitää muuttaa @-merkiksi. En käy täällä nykyään kovin usein, niin tuo meili on parempi vaihtoehto.

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Offtopic (I/2012)

Post by MaGetzUb » Mon Feb 24, 2014 4:48 pm

Juu tutkiskelin kans Wanhan CoolBasicin tyyppien toimintaa 2012, muutama sivu tätä topikkia taaksepäin.
Voisiko tekstimuistipalan tunnistaa MemblockSize() -komennolla, koska muut tietotyypithän ovat sitten vain 4, 2 tai 1 tavuisia. :)
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

User avatar
Konstaduck
Advanced Member
Posts: 267
Joined: Sat Dec 17, 2011 4:09 pm
Location: Nurmijärvi, Finland
Contact:

Re: Offtopic (I/2012)

Post by Konstaduck » Thu Apr 03, 2014 9:35 am

Hiljaista on ollut, saapa nähdä milloin Zero saa Classicin valmiiksi :)
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
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Offtopic (I/2012)

Post by Jani » Fri Apr 25, 2014 6:54 pm

Onko kukaan muu osallistumassa Ludum Dareen? Itse osallistun Jamiin parin kaverin kanssa. Mitään syytä meillä ei ole edes saada peliä valmiiksi, vaan huvin vuoksihan tähän osallistutaan. Jos joku ei tiedä, mistä on kyse niin tässä vähän selitystä. Ludum Dare Compo/Jam on 48/72h - vastaavasti - pelintekokilpailu. Aihe paljastetaan aamulla kello 4 ja siitä alkaa aika. Lisään tämän viestin loppuun tuotoksemme kun kilpailu on ohi.
Käytämme tälläistä settiä:
  • Kieli: Haxe
  • Pelimoottori: Haxepunk
  • IDE: FlashDevelop
  • Grafiikka: Aseprite / Paint.net
  • Musiikki: FL Studio
  • Ääniefektit: bfxr
Tässä vielä asiaan liittyvä kuva.
Image

EDIT: Aika loppui ja tuotoksemme on tässä: http://www.ludumdare.com/compo/ludum-da ... &uid=34500
Mielipiteitä?
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
Jare
Moderator
Moderator
Posts: 860
Joined: Mon Aug 27, 2007 10:18 pm
Location: Helsinki

Re: Offtopic (I/2012)

Post by Jare » Sat May 10, 2014 2:27 am

Jatkoin CB:n syntaksitarkituksen kanssa leikkimistä.

Ensiksi yksi hieman tylsempi huomio. Muuttujien, funktioiden jne. nimissä ei pitäisi olla sallittuja muut merkit kuin A-Ö,0-9 ja alaviiva. Väärin. Kenoviivan (\) ja pisteen voi myös sijoittaa näihin nimiin - ilman että nimi liittyy mitenkään tyyppeihin - kunhan nimi ei ala pisteellä tai kenoviivalla, tai pääty sellaiseen. Hyötyä tästä ei taida olla, mutta onpahan uusi tapa nimetä vaikka tiettyyn tyyppiin liittyviä vakioita:

Code: Select all

Type Pelaaja
    //Fieldejä tähän....
EndType
Const Pelaaja\Lukumäärä = 5
MakeError Pelaaja\Lukumäärä
CoolBasic tykkää vähän turhan herkästi herjata vääristä tietotyypeistä esimerkiksi perus merkkijonofunktioiden kohdalla: väärän tyyppinen parametri aiheuttaa virheen. Esimerkiksi InStr(oma_funktio(), "haettava") aiheuttaa virheilmoituksen, koska oma_funktio() ei mukamas palauta merkkijonoa. Ratkaisu: lisää funktion nimeen dollarimerkki:

Code: Select all

Function oma_funktio$()
    Return "blaa blaa blaa"
EndFunction
MakeError InStr(oma_funktio(), "haettava")
Samaan tyyliin voit tehdä funktiostasi myös float-tyyppisen (#) tai short-tyyppisen (%). Huomionarvoista on kuitenkin se, että funktion tyyppi ei oikeasti tee funktion paluuarvolle minkäänlaista konversiota: float-tyyppinen funktio palauttaa merkkijonon, jos komennat funktion sisällä Return "abc". Kunhan kusetetaan nipottavaa kääntäjää :).

Jos tykkää lyhyistä funktioiden nimistä, kannattaa vilkaista nämä helmet:

Code: Select all

Function $()
	Return "Dollari"
EndFunction

Function #()
	Return "Risuaita"
EndFunction

Function %()
	Return "Prosentti"
EndFunction

Print $()
Print #()
Print %()
WaitKey
Kuten esimerkistä näkee, noiden kaikkien esittelyt ja kutsut toimivat ilman ongelmia.

Jatketaan. Alan jo tykkäämään näistä kolmesta erikoismerkistä. Oletko koskaan kirjoittanut CoolBasicilla yleiseen käyttöön jotain koodikirjastoa ja toivonut, että sen käyttäjä voisi halutessaan ylikirjoittaa jonkin sinun funktioistasi omalla versiollaan - ilman, että hänen tarvitsisi muokata kirjastosi koodia lainkaan? Näin käyttäjä voisi näppärästi syöttää kirjastollesi pätkän koodia, joka kirjaston tulee ajaa tietyssä tilanteessa.

Yllä mainitut erikoismerkit mahdollistavat ikäänkuin "pohjafunktion" luomisen. Pohjafunktiota kutsutaan silloin, jos toista, ylikirjoittavaa funktioita ei ole määritetty:

Code: Select all

Function funktio#()
	Return "pohjafunktio"
EndFunction

MakeError funktio()
Ei mitään normaalista poikkeavaa tuossa yllä, paitsi että funktion nimeen on lisätty risuaita (voisi olla myös dollari tai prosentti). Huomaa, että kutsuvaiheessa erikoismerkkiä ei käytetä! Sitten koodaaja haluaa ylikirjoittaa pohjafunktion:

Code: Select all

Function funktio#()
	Return "pohjafunktio"
EndFunction

Function funktio()
	Return "ylikirjoittava funktio"
EndFunction

MakeError funktio()
Nyt kun funktio esiintyy kahdella kirjoitustavalla - erikoismerkin kanssa ja ilman sitä - esimerkin kutsu kutsuu nimenomaan sitä funktiota, jossa erikoismerkkiä ei ole. Jos erikoismerkitön funktio puuttuisi, CB osaisi automaattisesti kutsua erikoismerkillistä funktiota. BONUS: Jos haluamme, voimme edelleen kutsua pohjafunktiota, jos lisäämme kutsuun erikoismerkin: MakeError funktio#(), mutta tällöin pohjafunktion esittelyn pitäisi sijaita vasta ylikirjoittavan funktion jälkeen.

Semmosta :)

User avatar
Latexi95
Guru
Posts: 1163
Joined: Sat Sep 20, 2008 5:10 pm
Location: Lempäälä

Re: Offtopic (I/2012)

Post by Latexi95 » Sat May 10, 2014 9:53 pm

Hoh... Aina sitä CB:stä vaan löytyy uusia ominaisuuksia :D

User avatar
koodaaja
Moderator
Moderator
Posts: 1583
Joined: Mon Aug 27, 2007 11:24 pm
Location: Otaniemi - Mikkeli -pendelöinti

Re: Offtopic (I/2012)

Post by koodaaja » Mon May 12, 2014 11:42 am

Vastaavanlaista kikkaa voi käyttää myös globaalien ja lokaalien muuttujien erotteluun, erikoismerkillä varustettuna muuttuja ei viittaakaan alkuperäiseen:

Code: Select all

Global muuttuja#
muuttuja = 5.0

Function printtaa_globaali()
    Print muuttuja
EndFunction

Function printtaa_lokaali()
    Print muuttuja#
EndFunction

printtaa_globaali()
printtaa_lokaali()

WaitKey
En tiedä voiko sitä mihinkään hyödyksi käyttää mutta tietääpähän välttää ainakaan vahingossa määrittelemästä uudelleen.

User avatar
Jani
Devoted Member
Posts: 741
Joined: Fri Oct 31, 2008 5:53 pm

Re: Offtopic (I/2012)

Post by Jani » Thu May 15, 2014 5:49 pm

Hieno löytö Jonezilta. Tässä vielä pientä täydennystä. Funktiosta voi olla kolme versiota, joista kahta voidaan kutsua erikseen. Näin uskaltaisin sanoa, että %-merkki olisi parempi super-funktio.

Code: Select all

Print f()
WaitKey

Function f#()
    Print f%()
    Return "risuaita"
EndFunction

Function f%()
    Return "prosentti"
EndFunction

Function f()
    Print f%()
    'Print f#() // No thank you
    Return "override"
EndFunction
Dead men tell no tales. Also, Python rocks!
Codegolf: 99 bottles of beer (oneliner) - Water map partition

User avatar
atomimalli
Moderator
Moderator
Posts: 226
Joined: Wed Aug 29, 2007 3:55 pm

Re: Offtopic (I/2012)

Post by atomimalli » Sun Jun 22, 2014 3:06 pm

Tuli mieleen, että jos kaipaa tänne keskustelua niin kannattaa irkissä vinkata kun ei tänne jaksa opiskelukiireessä muutenvaan vilkasta, vaikka välissä löytyisikin hiukan aikaa. coolbasicilla tai cb2:lla.

User avatar
Awaclus
Forum Veteran
Posts: 2938
Joined: Tue Aug 28, 2007 2:50 pm
Location: Sulkava

Re: Offtopic (I/2012)

Post by Awaclus » Tue Jun 24, 2014 3:18 am

Voisin kai sitä tännekin tulla ilmoittamaan, että teen nykyään tällaisia.

https://www.youtube.com/watch?v=eCo4B0YsBI4
Every day I'm reshuffling.
[22:19] <@Grandi> Ha! Tiesin koko ajan, että Awaclus_ oli Awaclus. Hieno peitenimimerkki, mutta Grandia et huiputtanut.

User avatar
CCE
Artist
Artist
Posts: 650
Joined: Mon Aug 27, 2007 9:53 pm

Re: Offtopic (I/2012)

Post by CCE » Sun Aug 03, 2014 3:25 pm

Hyvää sunnuntai-iltapäivää.

Image

User avatar
Pettis
The Evil Admin
The Evil Admin
Posts: 1038
Joined: Sun Aug 26, 2007 5:08 pm
Location: Rovaniemi
Contact:

Re: Offtopic (I/2012)

Post by Pettis » Mon Aug 04, 2014 1:41 am

MItä tohon nyt sanois... :D
CB Repository .com - Sinne ne kaikki koodit menneet on!
MunVerkko - Ilmaisia foorumeita ja blogeja

User avatar
Zero
Lead Developer
Lead Developer
Posts: 713
Joined: Sun Aug 26, 2007 2:30 pm
Location: Helsinki, Finland
Contact:

Re: Offtopic (I/2012)

Post by Zero » Mon Aug 04, 2014 8:15 am

Haha
CoolBasic henkilökuntaa
Johtava Suunnittelija
CoolBasic V3, CoolBasic Classic

http://www.coolbasic.com/blog

User avatar
Frozen
Advanced Member
Posts: 282
Joined: Fri Jan 01, 2010 5:46 pm
Location: Suomi

Re: Offtopic (I/2012)

Post by Frozen » Fri Aug 08, 2014 11:41 pm

Nettikaveri heitti jotain mielenkiintoista :)
Image
Työn alla:
Jotakin epäjulkaistua

User avatar
MaGetzUb
Guru
Posts: 1715
Joined: Sun Sep 09, 2007 12:35 pm
Location: Alavus

Re: Offtopic (I/2012)

Post by MaGetzUb » Mon Aug 18, 2014 6:19 am

Kiva nähdä hiljaiseloa CB Classic:sta (Zeron uusia blogipäivityksiä oon lueskellut).. :) Onko tämä nyt ~10vuoden kunniaksi? :D
Solar Eclipse
Meneillä olevat Projektit:
We're in a simulation, and God is trying to debug us.

Mikki0000
Member
Posts: 63
Joined: Wed Dec 28, 2011 12:50 am
Location: Päijät-Häme

Re: Offtopic (I/2012)

Post by Mikki0000 » Sat Dec 06, 2014 12:27 am

Voisiko joku selittää, että miten vaihdetaan käyttäjänimeä?
Lisäksi sen Coolbasic Classikin pitäsi tulla nopeasti tai muuten se on
liian vanhanaikanen kun se julkaistaan joskus vuonna 2060.
exe tiedosto swf muotoon: Lopetettu
Tervetuloa lukemaan foorumin noloimman käyttäjän viestejä!

User avatar
valscion
Moderator
Moderator
Posts: 1585
Joined: Thu Dec 06, 2007 8:46 pm
Location: Espoo
Contact:

Re: Offtopic (I/2012)

Post by valscion » Mon Dec 08, 2014 11:17 am

Mikki0000 wrote:Voisiko joku selittää, että miten vaihdetaan käyttäjänimeä?
Laita viestiä vaikka Pettikselle, hänellä on oikeudet vaihtaa käyttäjätunnuksia.
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

Who is online

Users browsing this forum: No registered users and 17 guests