PPArkisto

World of Many Mysteries v112

Yleinen pelikeskustelu

Sivu 1 / 1

Viestit

Sivu 1 / 1
Rekisteröitynyt:
23.10.2006
Kirjoitettu: perjantai, 29. elokuuta 2008 klo 00.02
Muokattu: 29.08.2008 klo 12.28
Eli tein joskus aikanaan tällaisen ropen:
World of Many Mysteries v112

+50 eri aluetta, +130 loitsua, +130 taitoa , +30 rotua, +20 luokkaa/kiltaa, n. 500 esinettä ja 60 tehtävää joita suorittamalla saa bonus taitoja.

Palaute on tervetullutta, mutta tosiaan, aloitin tämän tekemisen joskus 97/98 ku vielä olin amiksessa, joten englannin kielen kielioppi virheistä ei kannata välittää. Mitään ylitse pääsemättömiä bugeja ei pitäisi olla, mutta jotain pieni varmasti voi löytyä.

En ole kyllä päivittänyt peliä pariin vuoteen, mutta olen ajatellut muuttaa pelin graafiselle käyttöliittymälle ja todennäköisesti Symbian S60 (eli Nokian puhelimen) alustalle... jossan välissä.
"Katso, minä sanon teille salaisuuden: emme kaikki kuolemaan nuku, mutta kaikki me muutumme, yhtäkkiä, silmänräpäyksessä, viimeisen pasunan soidessa; sillä pasuna soi, ja kuolleet nousevat katoamattomina, ja me muutumme." - 1. Kor. 15:51-52
Rekisteröitynyt:
05.06.2002
Kirjoitettu: perjantai, 29. elokuuta 2008 klo 22.00
Aa, tää on se peli mistä ohjelmointiaiheessa puhuit. Kuulostaa kivalta, mutta harmikseni en kokeilemaan pääse.. Linuxilla kun koittaa winen kautta pyörittää niin DOS memory-arena erroria tulee. Täytyy myöhemmin koittaa vielä virtuaalikoneessa tms.

Btw, ihan mielenkiinnosta kysyn että oisko lähdekoodeja mahollista saada? Itellä on ollut rogueliken tekeminen projektina jo pidemmän aikaa, mutta muutama seikka toteutuksen puolesta askarruttaa (peliohjelmointitausta lähentelee nollaa, vaikka muuten monien ohjelmointikielien niksit on hallussa), niin en oo mitään vielä uskaltanut koodailla. :P

Lisäks toi fileshost näyttää tarjoavan vaan 30 päivän ajan tuota pakettia ladattavaksi ellei maksamaan rupea. Jos kiinnostaa, niin voin tuota hostia omalta palvelimeltani ihan ilman mitään korvauksia. ;)
Rekisteröitynyt:
01.05.2006
Kirjoitettu: perjantai, 29. elokuuta 2008 klo 23.05
Muokattu: 29.08.2008 klo 23.06
Yritin clerical elffilla tappaa jonkun pojan, mutta kuolin :(
Rekisteröitynyt:
23.10.2006
Kirjoitettu: perjantai, 29. elokuuta 2008 klo 23.27
Muokattu: 29.08.2008 klo 23.47
Saa hostata ja voin jossain välissä katella lähdekoodit, mutta on tehty Basicilla, joten en usko että kauheana hyötyä on...

Pitipä asentaa vanha QBasic ja oikein kauhistutti miten tulee kuin virtana mieleen kaikki pikanäppäimetkin, vaikka 2004 vuonna viimeksi edes kääntänyt, ja kunnolla en ole koodannut ainakaan 5 vuoteen. smile

Mutta uppasin näämmä jonku jämä version, jossa kun kuolee ei joudu *******i vaan bugittaa ja heittäää DOS:siin, sillä kuoleminen pitäisi johtaa *******i josta pääsee aikanaan pois, mutta menettää jonkun verran expaa.
"Katso, minä sanon teille salaisuuden: emme kaikki kuolemaan nuku, mutta kaikki me muutumme, yhtäkkiä, silmänräpäyksessä, viimeisen pasunan soidessa; sillä pasuna soi, ja kuolleet nousevat katoamattomina, ja me muutumme." - 1. Kor. 15:51-52
Rekisteröitynyt:
05.06.2002
Kirjoitettu: perjantai, 29. elokuuta 2008 klo 23.39
Lainaus:29.08.2008 Ergopad kirjoitti:
Saa hostata ja voin jossain välissä katella lähdekoodit, mutta on tehty Basicilla, joten en usko että kauheana hyötyä on...
Eiköhän siitä ainaki vähäsen olis. :)
Lähinnä askarruttaa, että mikä olis paras tapa tehdä toi liikkumissysteemi kartalla, eli miten esim. määritellä mitkä portaat vie minnekkin, ja miltä reunalta pääsee minnekkin itse kartalla..

mirror: http://cene.ath.cx/d/WOMM_v112.rar
Rekisteröitynyt:
23.10.2006
Kirjoitettu: lauantai, 30. elokuuta 2008 klo 00.05
Muokattu: 30.08.2008 klo 00.25
No tässä "voi kuolla". razz

WOMM.EXE

Tee data taulukko esim:

vaikka tällainen 6x6. Ja eri lukuarvo taulukossa tarkoittaa jotakin, esim 0 = seinä, 1 = nurmikkoa ja 2 = portaat ylös. Ja sitten talletat pelaajan positien vaikka kaksi alkioiseen taulukkoon 2x1 tai kahteen muuttujaan, toiseen x koordinaatti ja toiseen y kordinaatti. Ja jos pelaaja vaikka painaa < niin sitten sekataan taulukon koordinaatit (x-1,y) että voiko liikkua ja päivitetään ruutu tai annetaan ilmoitus "kävelit päin seinää toope!". smile

0,0,0,0,0,0
0,0,0,0,1,0
0,1,1,1,1,0
0,1,1,1,1,0
0,1,1,2,0,0
0,0,0,0,0,0


Tässäpä koodit hyvin hyvin hyvin varhaisesta versiosta. smile

RANDOMIZE TIMER
CLEAR
CLS
SCREEN 0
DIM map(20, 20)
px = 2
py = 2
COLOR 7
flyhp = 10
COLOR 7
maxhp = 100
maxep = 100
hp = maxhp
ep = maxep
FOR y = 1 TO 20
FOR x = 1 TO 20
READ map(x, y)
NEXT x
NEXT y
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
DATA 0,1,1,1,1,1,0,0,0,0,1,1,1,1,1,1,1,1,1,0
DATA 0,0,1,1,1,1,1,1,1,1,1,1,1,0,0,1,2,1,1,0
DATA 0,0,1,1,0,0,0,0,1,1,2,1,0,1,0,1,1,2,1,0
DATA 0,0,1,1,1,2,1,1,1,1,2,0,0,0,0,1,1,1,2,0
DATA 0,0,0,0,0,0,0,1,1,1,1,1,1,0,0,0,0,1,0,0
DATA 0,1,1,0,0,2,2,1,0,2,0,1,1,0,0,0,0,2,0,0
DATA 0,1,1,1,1,1,0,0,0,2,0,1,1,0,0,0,0,2,0,0
DATA 0,2,0,0,0,1,0,0,0,2,0,0,0,1,1,1,1,2,0,0
DATA 0,2,1,0,0,0,0,0,1,2,0,0,0,1,0,0,1,2,1,0
DATA 0,1,0,1,1,1,0,0,0,2,0,0,0,1,0,0,0,0,1,0
DATA 0,1,0,1,1,1,0,0,0,1,1,1,1,1,0,0,0,0,1,0
DATA 0,1,0,1,1,1,1,1,1,1,0,0,0,1,1,1,1,0,1,0
DATA 0,1,0,0,0,0,0,0,0,1,0,1,1,1,1,1,1,0,1,0
DATA 0,2,0,0,1,1,1,1,0,1,0,1,0,0,0,1,0,0,1,0
DATA 0,2,0,0,0,1,1,1,0,2,0,1,2,2,1,1,0,0,1,0
DATA 0,1,1,0,0,0,1,0,1,2,0,0,0,0,0,1,0,0,1,0
DATA 0,1,1,0,0,0,1,0,1,1,1,1,1,1,1,1,0,0,1,0
DATA 0,1,1,1,2,2,1,1,1,1,1,1,0,0,0,1,1,1,1,0
DATA 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
GOSUB look
b$ = ""
a$ = ""
typo = 0
LOCATE , , 1
GOSUB comline
ticktime = TIMER + 15
DO
startep = ep
starthp = hp
lining = 0
b$ = INKEY$
IF b$ "" THEN
IF b$ = CHR$(cool THEN GOSUB backspace
IF b$ = CHR$(13) THEN GOSUB commands
a$ = a$ + b$
PRINT b$;
END IF
IF TIMER > ticktime THEN
DO
IF hp < maxhp THEN hp = hp + CINT(RND * 5 + 5): IF hp > maxhp THEN hp = maxhp
IF ep < maxep THEN ep = ep + CINT(RND * 5 + 5): IF ep > maxep THEN ep = maxep
ticktime = ticktime + 15
LOOP UNTIL ticktime > TIMER
END IF
IF ep > startep OR hp > starthp THEN
resthp = CINT(hp - starthp)
IF resthp < 1 THEN resthp = 0
restep = CINT(ep - startep)
IF restep < 1 THEN restep = 0
COLOR 15
IF POS(0) > 1 THEN PRINT : lining = 1
PRINT "Health restores ";
COLOR 15: PRINT "+"; resthp; "Hp +"; restep; " Ep": COLOR 7
END IF

LOOP
REM ** DIRECTIONS **
commands:
IF a$ = "n" THEN
IF map(px, py - 1) = 0 THEN PRINT "There's no way to get there milord!"
IF map(px, py - 1) > 0 AND ep > 0 THEN py = py - 1: ep = ep - 1: PRINT "You travel to north.": GOSUB look
END IF
IF a$ = "s" THEN
IF map(px, py + 1) = 0 THEN PRINT "There's no way to get there milord!"
IF map(px, py + 1) > 0 AND ep > 0 THEN py = py + 1: ep = ep - 1: PRINT "You travel to south.": GOSUB look
END IF
IF a$ = "w" THEN
IF map(px - 1, py) = 0 THEN PRINT "There's no way to get there milord!"
IF map(px - 1, py) > 0 AND ep > 0 THEN px = px - 1: ep = ep - 1: PRINT "You travel to east.": GOSUB look
END IF
IF a$ = "e" THEN
IF map(px + 1, py) = 0 THEN PRINT "There's no way to get there milord!"
IF map(px + 1, py) > 0 AND ep > 0 THEN px = px + 1: ep = ep - 1: PRINT "You travel to west.": GOSUB look
END IF
IF a$ = "look" OR a$ = "l" THEN GOSUB look
IF a$ = "score" THEN GOSUB skillsinfo
IF a$ = "help" THEN GOSUB help
IF a$ = "kill fly" THEN
IF map(px, py) = 1 THEN PRINT "There's no fly in here, milord!"
IF map(px, py) > 1 THEN GOSUB killfly
END IF
IF hp < 1 THEN PRINT "You are dead R.I.P": END
b$ = ""
a$ = ""
GOSUB comline
RETURN

look:
FOR my = -4 TO 4
FOR mx = -4 TO 4
COLOR 15
IF mx = 0 AND my = 0 THEN PRINT "@"; : GOTO harppi
mxx = mx + px
myy = my + py
outofscreen = 0
IF mxx < 0 THEN outofscreen = 1
IF myy < 0 THEN outofscreen = 1
IF mxx > 19 THEN outofscreen = 1
IF myy > 19 THEN outofscreen = 1
IF outofscreen = 1 THEN COLOR 8: PRINT "^"; : GOTO harppi
IF map(mxx, myy) = 0 THEN COLOR 2: PRINT "&";
IF map(mxx, myy) = 1 THEN COLOR 6: PRINT ".";
IF map(mxx, myy) = 2 THEN COLOR 8: PRINT "&#190;";
harppi:
NEXT mx
PRINT
NEXT my
COLOR 7
PRINT "You are in forest, you are able to travel to.."
IF map(px, py) = 2 THEN PRINT "Deadly looking fly spins around you."
'IF map(px, py + 1) > 0 THEN PRINT "(S)outh"
'IF map(px, py - 1) > 0 THEN PRINT "(N)orth"
'IF map(px - 1, py) > 0 THEN PRINT "(W)est"
'IF map(px + 1, py) > 0 THEN PRINT "(E)ast"
RETURN

skillsinfo:
PRINT
PRINT "+----------------------------------------+"
PRINT name$; " the "; race$
PRINT "+----------------------------------------+"
PRINT "Hit Points:", hp; "/"; maxhp
PRINT "Endurance Points:"; ep; "/"; maxep
PRINT "+----------------------------------------+"
RETURN

REM ** THE FLY **
killfly:
flyhp = 10
DO
dam = 0
dam = INT((RND) * 4 + INT(attack / 2)) + weapclass
IF dam < 3 THEN PRINT "You fist make some scratches and little wounds at fly."
IF dam = 3 OR dam = 4 THEN PRINT "As you kick fly's bones make *CRACK*."
IF dam > 4 AND dam < 10 THEN PRINT "Your AMAZING STRIKE makes fly's blood and limbs fly everywhere."
IF dam > 9 THEN PRINT "You use all of you strength to BATTLEASSAULT causing HEAVY wounds!!"
IF INT((RND) * 50 + findweak + 1) = 50 THEN dam = dam * 2: PRINT "...suddenly you see opportunity to hit CRITICAL HIT causing even more damage!!": fwskill = fwskill + 5
flyhp = flyhp - dam
IF flyhp < 1 THEN PRINT "Fly is dead, R.I.P.": fightskill = fightskill + 2: map(px, py) = 9: RETURN
dam2 = 0
dam2 = INT((RND) * 10) - armclass
PRINT "Fly hits you"; dam2; "times causing some small wounds."
IF INT((RND) * 50 + dodge + 1) = 50 THEN dam2 = INT(dam2 / 2): PRINT "You DODGE hit make it more lighter!.": dodgeskill = dodgeskill + 5
hp = hp - dam2
IF flyhp > 0 THEN PRINT "Fly HP:"; flyhp; "/10"
IF hp < 1 THEN PRINT "Your are dead, R.I.P.": END
PRINT "HP:"; hp; "/"; maxhp; "EP:"; ep; "/"; maxep
INPUT "Do you want to (E)scape, fly will be restored? ", a$
PRINT
LOOP UNTIL a$ = "e"
RETURN


help:
PRINT "Movement: n, s, w, e"
PRINT "Information: help, score, i(inventory)"
PRINT "Handling: get 'item',wear(/wield) 'item', loot(corpse) "
PRINT "1/! Replay last command"
PRINT "Use 'skill/spell name'"
PRINT "Kill 'monster'"
RETURN

backspace:
IF LEN(a$) > 0 THEN a$ = LEFT$(a$, LEN(a$) - 1)
IF POS(0) > 1 THEN LOCATE CSRLIN, POS(0) - 1
PRINT " ";
IF POS(0) > 1 THEN LOCATE CSRLIN, POS(0) - 1
b$ = ""
RETURN

comline:
IF POS(0) > 1 THEN PRINT
PRINT "Hp:"; hp; "/"; maxhp; "Ep:"; CINT(ep); "/"; maxep; "EXP:"; xp;
PRINT ">"; a$;
RETURN

"Katso, minä sanon teille salaisuuden: emme kaikki kuolemaan nuku, mutta kaikki me muutumme, yhtäkkiä, silmänräpäyksessä, viimeisen pasunan soidessa; sillä pasuna soi, ja kuolleet nousevat katoamattomina, ja me muutumme." - 1. Kor. 15:51-52
Rekisteröitynyt:
05.06.2002
Kirjoitettu: lauantai, 30. elokuuta 2008 klo 00.26
Joo ei tuossa ole mitää ongelmaa, tarkotin nyt lähinnä sitä, että kun kävelen vaikka portaat ylös, niin minne olis kivuttominta pistää tieto että minne ne portaat johtaa, jne.
Rekisteröitynyt:
23.10.2006
Kirjoitettu: lauantai, 30. elokuuta 2008 klo 00.33
Muokattu: 30.08.2008 klo 00.36
No eipä taida olla muuta keinoa, kun tehdä taulukko joka sisältää esim 5 arvoa: ex, ey, area_id, ox, oy. Ja sitten checkataan onko löytyykö kyseistä koordinaattia taulukosta...

ex = pääsy x-koordinaatti
ey = pääsy y-koordinaatti
area_id = uuden kartan id, tai sitten nimi stringinä tms.
ox = uuden arean alotus x-koordinaatti
oy = uuden arean alotus y-koordinaatti

Ja ehdottomasti kannattaa heti alkuun laittaa joka alue/kerros/paikka omaan tiedostoon, ja ladata uusi tiedosto aina kun pelaaja vaihtaa paikkaa. Ja muutenkin olio-ohjelmointia seuraten.
"Katso, minä sanon teille salaisuuden: emme kaikki kuolemaan nuku, mutta kaikki me muutumme, yhtäkkiä, silmänräpäyksessä, viimeisen pasunan soidessa; sillä pasuna soi, ja kuolleet nousevat katoamattomina, ja me muutumme." - 1. Kor. 15:51-52
Rekisteröitynyt:
05.06.2002
Kirjoitettu: lauantai, 30. elokuuta 2008 klo 00.41
Lainaus:30.08.2008 Ergopad kirjoitti:
No eipä taida olla muuta keinoa, kun tehdä taulukko joka sisältää esim 5 arvoa: ex, ey, area_id, ox, oy. Ja sitten checkataan onko löytyykö kyseistä koordinaattia taulukosta...

ex = pääsy x-koordinaatti
ey = pääsy y-koordinaatti
area_id = uuden kartan id, tai sitten nimi stringinä tms.
ox = uuden arean alotus x-koordinaatti
oy = uuden arean alotus y-koordinaatti
Aah, nyt aivot naksahti. Näinhän se tietysti menee. :)

Lainaus:Ja ehdottomasti kannattaa heti alkuun laittaa joka alue/kerros/paikka omaan tiedostoon, ja ladata uusi tiedosto aina kun pelaaja vaihtaa paikkaa. Ja muutenkin olio-ohjelmointia seuraten.
Se oli tarkotus. :)
Pienimuotosta moottoria olin jo aiemmin väsännyt (lähinnä inventory jne.), ja nyt tuli taas innostusta lisää. Josko sitä vaikka huomenna koittas kunnon yöunien jälkeen jatkaa. :)
Rekisteröitynyt:
23.10.2006
Kirjoitettu: lauantai, 30. elokuuta 2008 klo 01.52
Mukava kuulla. Jostakin se alkaa, niinku ite alotin noilla parilla sadalla koodirivillä ja se kasvo sinne 10 000 riviin loppusaltaan, eikä tiedä vaikka jonku vuoden päästä on koodamassa jossakin porukassa oikeeta kunnon peliä, sen takia ku alko tekeen omaa. wink Ja mitä itekki olen työhaastatteluissa käynyt, niin kyllä on sanottu, että harrasteneisuus on plussa. Ei sitä koulussa/kursseilla opita koodamaan, vaan itse tekemällä.

Ja hyvin pitkälle noiden Basicci koodausten vuoksi nytkin tienaan itelle, vaimolle ja muksulle leivän pöytään koodarina. smile

Ja kannattaa heti kehittää, esim tavarat, dynaamisiksi olioiksi/luokiksi joihin on sitten helppo lisätä uusia asioita, kuten uusia boonuksia. Ja engine sellaiseksi, että jokainen taito ja loitsu esimerkiksi on omassa tiedostossa ja enginelle syötetään vaan indeksi/nimi ja engine hoitaa lopun toteutuksen. Ja stattien (str,dex,con jne.) bonukset kannatta kans miettiä järkevästi, että ei tarvitsisi jokaisen loitsun/taidon kohdalla laskea bonusta uudelleen, vaan että se tuotaisiin parametrina engineltä.
"Katso, minä sanon teille salaisuuden: emme kaikki kuolemaan nuku, mutta kaikki me muutumme, yhtäkkiä, silmänräpäyksessä, viimeisen pasunan soidessa; sillä pasuna soi, ja kuolleet nousevat katoamattomina, ja me muutumme." - 1. Kor. 15:51-52
Sivu 1 / 1