Tyhmät kysymykset (I/2009)
Re: Tyhmät kysymykset
Monesti painetaan vaan hit-kerros näkyviin, mutta kuitenkin piirrettään jollain muulla. Mutta jos olet aivan varma, että hitit on kohdallaan pastee vaikka koodisi tänne.
Re: Tyhmät kysymykset
Edelleen, koodissa eikä karttojen teossa ole tehty mitään väärin. olen tarkistanut useita kertoja. kysyn vain satutteko tietämään mitään muuta mahdollisesti vaikuttavaa asiaa?
Re: Tyhmät kysymykset
Veikkaisin että se on tilesterin bugi, nimittäin vanhalla foorumilla näin:Tilester bug wrote:Edelleen, koodissa eikä karttojen teossa ole tehty mitään väärin. olen tarkistanut useita kertoja. kysyn vain satutteko tietämään mitään muuta mahdollisesti vaikuttavaa asiaa?
http://finhost8.futuron.fi/~coolbasi/ol ... ost&p=8240
Kannattaa kokeilla Marcoderin Tilegenia tai Astigman Stigmatoria.Astigma wrote:Mutta luulenpa silti, että törmäyksentunnistuksen pitäisi toimia ihan millä tahansa tilellä eikä pelkästään tilesetin ensimmäisellä tilellä... itsellänikin on se bugi. Bugi on luultavasti Tilesterissä, koska valmiit tilemapit toimivat moitteettomasti, mutta omatekemät eivät toimi. Ukko menee seinien läpi niin että hurahtaa.
EDIT: Näyttäisi siltä, ettei Tilester tallenna ollenkaan törmäyskerrosta. Tein ohjelman, joka näyttää onko tietyssä koordinaateissa seinä, mutta mihinkään kohtaan tilemappia ei ollut tallentunut seinää.
Täältä Tilegen: http://koti.mbnet.fi/marcoder/tilegen/
Täältä Astigmator: http://charged.relaa.net/dl_astigmator.php
Re: Tyhmät kysymykset
Miten kannattaisi toteuttaa pausemenu? Siinä pitäis näkyä kaikenlaisia hahmojen tietoja sekä inventory.
-
- Active Member
- Posts: 126
- Joined: Wed Aug 29, 2007 3:55 pm
Re: Tyhmät kysymykset
Erilliseen looppiin:
Code: Select all
If pause = 1 Then
Repeat
'ja piirretään kaikki oleellinen
Drawscreen
Forever
Endif
Tiimit ja tuotokset:
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
RE:Ydintuho
Drahtlose:Infernalisch, Pienet pelit
-
- Forum Veteran
- Posts: 2396
- Joined: Tue Aug 28, 2007 4:20 pm
Re: Tyhmät kysymykset
Ei kai siinä mitään erillisiä luuppeja tarvita.Funktiot taas ovat hyvä ratkaisu, kunhan projektista ei tule massiivista. CoolBasic sisältää nimittäin funktiorajan.
Code: Select all
Global x#,d
d = 1
While 1
If GetKey()
Pause=not Pause
EndIf
If Pause Then
Paused()
Else
Playing()
EndIf
Draw()
DrawScreen
Wend
// Movement and play
Function Playing()
Text 0,0,"Playing, press ANY key"
x=x+d
If(x>390 Or x<0)Then d=-d
// ...
EndFunction
// Pausing
Function Paused()
Text 0,0,"Paused, press ANY key"
// ...
EndFunction
// Drawing
Function Draw()
Color 255,0,0
Circle x,145,10
// ...
EndFunction
Re: Tyhmät kysymykset
No voiko funktiossa käyttää typen fieldejä? Esim.:
Mulla ei ainakaan toimi =(
Code: Select all
Function testi()
Text 125,30,"HP: "+ukko1\health+" / "+ukko1\healthMAX
End Function
Re: Tyhmät kysymykset
Omassa projektissani ratkaisin tuon ongelman (purkalla?) käyttämällä Gosubia. Se on parempi kuin Goto mutta ei ota parametejä kuten funktiot eikä käytä omia muuttujiaan (eli siis myös ei Globaalit toimivat).
Last edited by temu92 on Thu Sep 18, 2008 8:01 pm, edited 1 time in total.
Re: Tyhmät kysymykset
Ei toimi, koska sinulla ei ole mitään ukko1:htä siellä funktiossa. Ota se joko parametrinä (käyttäen converttoInteger ja -type funktioita) tai hanki se esimerkiksi for-each loopilla.DumBasZ wrote:No voiko funktiossa käyttää typen fieldejä? Esim.:Mulla ei ainakaan toimi =(Code: Select all
Function testi() Text 125,30,"HP: "+ukko1\health+" / "+ukko1\healthMAX End Function
CoolBasic henkilökuntaa
Kehittäjä
Kehittäjä
-
- Newcomer
- Posts: 37
- Joined: Tue Sep 09, 2008 4:17 pm
Re: Tyhmät kysymykset
Moro, olisi taas pikkunen onkelma: Koetan lisätä räjähteiden käyttämismahdollisuutta, ja tällä hetkellä olen saanut sen verran aikaan että hahmo saa viskattua sen C4-paketin sinne eteensä. Semmonen ennää jotta miten sille saa soitettua räjähdysanimaatiota ja että se poistetaan sen jälkeen ja sen semmosta (hoksaatte varmaan mitä sen pitää tehdä jos räjähtämisestä kyse) painamalla esim. z-nappia. Tältä näyttää tuo c4:n lisääminen, jos auttaa ollenkaan:
Kiitoksia jo nyt
Code: Select all
'Aseet & räjähteet''''''''''''''''''''''''''''''''''''''''
If KeyHit (CBKEYx) Then
PlaySound heitto
newC4.c4s=New(c4s)
newC4\obj=CloneObject(c4)
newC4\dmg=150
CloneObjectPosition newC4\obj,hero
CloneObjectOrientation newC4\obj,hero
MoveObject newC4\obj,28
SetupCollision newC4\obj,map,1,4,2
EndIf
Blooddrunk Game Industry [BGI] :
Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla
Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla
Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Re: Tyhmät kysymykset
SuojelusPerkele: Hommahan hoituu simppelisti vain tarkistamalla, painetaanko sitä zetaa, sitten tarkistetaan onko pommeja laisin maassa (tee vaikkapa muuttuja pommielossa, jonka arvon muutat yhdeksi aina pommin pudotuksen yhteydessä ja nollaat räjäyttäessä), ja sitten isketään pommin paikalle räjähdysanimaatio CloneObjectPositionilla. Sitten vain poistat itse pommin ja toistat animaation ja ääniefektin, ja vot. Ja koska sen funktio on todennäköisesti tehdä kipiää vihuille niin vaikka kaiken päälliseksi tarkistetaan onko vihuja tarpeeksi lähellä räjähdystä, ja sitten siirrytään poistelemaan niitä tarpeen mukaan. Kokeileppa näiden ohjeiden varassa omaa viritelmääsi, ja jos ei toimi, tule koodin kanssa apua pyytelemään :).
Ratkaisit juuri universaaliongelman! Hienoa, ota keksi.
Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Filosofia on ajattelun taidetta, mutta sen maalari elää juoden apurahojaan masennukseensa.
Re: Tyhmät kysymykset
Miten saada aikaan zombie-tekoäly, joka pyrkii "levittäytymään", ei kasaantumaan(positionobject:illa(kun vihuja kiertää, ne niistä kasaantuu läjä))?
Re: Tyhmät kysymykset
Laita randomisti strafea MoveObjectilla.
Muokkaa itse.
Code: Select all
MoveObject zombie, 2, rand(-2, 2)
Re: Tyhmät kysymykset
...ainoa vaikutus tuolla on että zombit tärisevät...voisiko zombi ottaa steppiä poispäin lähimmästä yms...?
Re: Tyhmät kysymykset
Sanoinkin että muokkaa itse. Voit laittaa randomimäärän johonkin muuttujaan ja tietyn aikavälein muuttaa sitä. Sitten joka kierroksella samalla komennolla strafetetaan zombeja.
Ellet sitten halua tehdä mainitsemaasi systeemiä. Vihjeenä annan että komennot ovat Distance2, GetAngle2, WrapAngle, Sin, Cos ja TranslateObject. Strafe olisi vaan niin paljon helpompi tehdä vaikkei yhtä hieno olisikaan
Ellet sitten halua tehdä mainitsemaasi systeemiä. Vihjeenä annan että komennot ovat Distance2, GetAngle2, WrapAngle, Sin, Cos ja TranslateObject. Strafe olisi vaan niin paljon helpompi tehdä vaikkei yhtä hieno olisikaan
-
- Newcomer
- Posts: 37
- Joined: Tue Sep 09, 2008 4:17 pm
Re: Tyhmät kysymykset
Kokeilin tuota räjähde hommaa, vaan meni liian vaikias minulle..
Tässä on tämä koodin pelkkä peliosa:
Tässä on tämä koodin pelkkä peliosa:
Code: Select all
PELI:
FrameLimit 45
'tyypit ja niiden kentät
Type zombis'nimi
Field obj'objecti
Field hp'energiat
Field dmg'vahinko
Field speed'nopeus
Field score'pisteet
Field id'minkälainen zombie on
EndType
Type bullets'ammukset
Field obj
Field hp
Field dmg
Field speed
Field id
EndType
Type upgs'asepäivitykset
Field obj
Field hp
Field id
EndType
Type c4s
Field obj
Field hp
Field dmg
Field partikkeli
EndType
Type räjähdykset
Field partikkeli
EndType
'ladataan media
gun_sound=LoadSound ("unlimited\media\thompson.wav")
map=LoadMap("unlimited\media\cdm2.til","unlimited\media\tileset.bmp")
hero=LoadObject("unlimited\media\soldier.bmp",72)
pelimusa=PlaySound ("unlimited\media\HGW_BogA_Tankdefense_v1.mp3")
zombi=LoadObject("unlimited\media\guy.bmp",72)
cow=LoadObject("unlimited\media\cow.bmp",32)
bullet=LoadObject("unlimited\media\bullet.bmp",32)
enemy_sound=LoadSound ("unlimited\media\kuolema2.wav")
enemy_sound2=LoadSound ("unlimited\media\kuolema.mp3")
enemy_sound3=LoadSound ("unlimited\media\kuolema3.wav")
c4=LoadObject("Unlimited\media\c4.bmp")
heitto=LoadSound ("Unlimited\media\whip.wav")
imgPoks=LoadAnimImage("unlimited\media\bang.bmp",32,32,0,8)
ShowObject bullet,OFF
ShowObject zombi,OFF
ShowObject cow,OFF
ShowObject c4,OFF
SetupCollision hero,map,1,4,2
hp=500'sinun energiat
powupg=12'Aseen aloitus teho
speedupg=5'aseen aloitus nopeus
Repeat''''''''''''''''''''''''''''''
If SoundPlaying (pelimusa)=0 Then
pelimusa= PlaySound("unlimited\media\HGW_BogA_Tankdefense_v1.mp3")
EndIf
If hp>0 Then 'jos on energiaa niin suritetaan kaikki
CloneCameraPosition hero
MoveObject hero,UpKey()*6-DownKey()*4
TurnObject hero,LeftKey()*5-RightKey()*5
'Aseet''''''''''''''''''''''''''''''''''''''''
If KeyHit (CBKEYx) Then
PlaySound heitto
newC4.c4s=New(c4s)
newC4\obj=CloneObject(c4)
newC4\dmg=150
CloneObjectPosition newC4\obj,hero
CloneObjectOrientation newC4\obj,hero
MoveObject newC4\obj,28
SetupCollision newC4\obj,map,1,4,2
EndIf
If KeyDown(CBKEYspace) And reload<0
PlaySound gun_sound,40
newBullet.BULLETS= New(BULLETS)
newBullet\obj=CloneObject(bullet)
newbullet\dmg=powupg
newbullet\speed=speedupg
CloneObjectPosition newBullet\obj,hero
CloneObjectOrientation newbullet\obj,hero
MoveObject newBullet\obj,24
reload=5
SetupCollision newbullet\obj,map,1,4,2
EndIf
reload-1
For iBullet.BULLETS= Each BULLETS
If CountCollisions(ibullet\obj) Then ibullet\hp-32
MoveObject iBullet\obj,6'likutetaan luotia
Next iBullet
'Asepäivitykset''''''''''''''''''''''''''''''''
'zombit''''''''''''''''''''''''''''''''''''''''
If luo>130'jos luonti on suurempi kuin 130, niin tehdään zombie
newzombi.zombiS= New(zombiS)
newzombi\obj=CloneObject(zombi)
'Asetetaan vihollinen kohtaan missä ei ole törmäystä
For y=1 To MapWidth()
For x=1 To MapWidth()
If GetMap2(2,x,y)=0 Then PositionObject newzombi\obj,Rand(-600,500),Rand(-600,600)
Next x
Next y
newzombi\id=Rand(1,2)
If newzombi\id =1'Ykkös zombi
newzombi\hp=Rand(90,110):newzombi\dmg=Rand(1,3):newzombi\speed=Rand(2,3):newzombi\score=Rand(10,20)'Asetetaan zombielle kentät
EndIf
If newzombi\id =2'kakkos zombi
PaintObject newzombi\obj,cow
newzombi\hp=Rand(110,130):newzombi\dmg=Rand(2,4):newzombi\speed=Rand(1,2):newzombi\score=Rand(15,25)'toiselle myös
EndIf
SetupCollision newzombi\obj,map,1,4,2
luo=0
EndIf
luo+1
For izombi.zombiS= Each zombiS 'Aloitetaan zombien läpikäynti
'Typerä tekoäly
sidle=Rand(-20,20)
If CountCollisions(izombi\obj) Then MoveObject izombi\obj,0,sidle 'jos kosketaan seinään, niin stepataan
PointObject izombi\obj,hero'zombi tähtää pelaajaan
If ObjectsOverlap(izombi\obj,hero) Then hp-izombi\dmg
For ibullet.bullets=Each bullets
If ObjectsOverlap(ibullet\obj,izombi\obj) Then izombi\hp-ibullet\dmg Then ibullet\hp=-1
If Distance2(iBullet\obj,hero)>600 Or ibullet\hp<0 Then 'jos...niin tuhotaan ammus
DeleteObject iBullet\obj
Delete iBullet
EndIf
Next ibullet
MoveObject izombi\obj,izombi\speed 'liikutetaan zombia nopeutensa verran
if izombi\hp<0
ääni=rand(1,3)
select ääni 'soita ääni
case 1
playsound enemy_sound
case 2
playsound enemy_sound2
case 3
playsound enemy_sound3
EndSelect
score+izombi\score
DeleteObject izombi\obj
Delete izombi
EndIf
Next izombi
EndIf
DrawGame'ettei teksti jää kartan alle
Color cbwhite
Text 530,10,"FPS "+FPS() 'tulosta FPS
Text 470,30,"(FPS limit = 45)"
Text 10,10,"HP "+hp
Text 10,20,"score "+score
If score<50 Then Text 10,40,"rank: MAGGOT"
If score>50 And score<150 Then Text 10,40,"rank: PRIVATE"
If score>150 And score<300 Then Text 10,40,"rank: CORPORAL"
If score>300 And score<500 Then Text 10,40,"rank: SERGEANT"
If score>500 And score<750 Then Text 10,40,"rank: LIEUTENANT"
If score>750 And score<1000 Then Text 10,40,"rank: CAPTAIN"
If score>1000 And score<1300 Then Text 10,40,"rank: MAJOR"
If score>1300 And score<1650 Then Text 10,40,"rank: COLONEL"
If score>1650 And score<2000 Then Text 10,40,"rank: BRIGADIER"
If score>2000 Then Text 10,40,"rank: GENERAL"
If hp<0 Or hp=0 Then Text 350,300,"GAME OVER"
DrawScreen
Forever
Blooddrunk Game Industry [BGI] :
Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla
Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla
Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Re: Tyhmät kysymykset
Miten saan tekstiä objektin päälle?
Coolbasic roguelike-projekti menossa 8)
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Progress bar @@@@@10%@@@@@
Pahasti jäätymässä...
Re: Tyhmät kysymykset
Laita teksti drawgame komennon jälkeen.anttimoi wrote:Miten saan tekstiä objektin päälle?
Suojelusperkele:
Tuossa on jonkunlainen räjähdysjuttu vaikkakin aika huono:
Code: Select all
FrameLimit 40
SCREEN 800,600
Type c4s
Field obj
Field speed
Field id
Field hp
EndType
c4=LoadObject("media\cow.bmp")
hero=LoadObject("media\guy.bmp",32)
zombi=LoadObject("media\guy.bmp",32)
explow=LoadAnimObject("media\bang.bmp",32,32,0,8)
PositionObject zombi,Rand(-300,300),Rand(-200,200)
Repeat '''''''''''''''''''''''''''''''''''''''''''''''
MoveObject hero,UpKey()*6-DownKey()*4
TurnObject hero,LeftKey()*5-RightKey()*5
LoopObject explow,0,8,0.2
reload-1
If KeyHit(cbkeyspace) And reload<0
newc4.c4S= New(c4S)
newc4\obj=CloneObject(c4)
CloneObjectPosition newc4\obj,hero
CloneObjectOrientation newc4\obj,hero
newc4\hp=10
newc4\speed=15
MoveObject newc4\obj,24
reload=15
EndIf
For ic4.c4S= Each c4S
If KeyHit(CBKEYspace) And ic4\speed=0 Then ic4\hp=-1
ic4\speed-1
If ic4\speed<1 Then ic4\speed=0
MoveObject ic4\obj,ic4\speed
If ic4\hp<1 Then
CloneObjectPosition explow,ic4\obj'siirretään räjähdys samaan paikkaan c4n kanssa
explow_time=30'räjähdysaika
ShowObject explow,ON'näytetään räjähdys
DeleteObject ic4\obj
Delete ic4
EndIf
Next ic4
If explow_time<0 Then ShowObject explow,OFF'jos räjähdysaika loppuu niin piilotetaan räjähdys
explow_time-1
'Jos törmätään räjähdyksen kanssa
If ObjectsOverlap(explow,zombi) And explow_time>0 Then PositionObject zombi,Rand(-50,500),Rand(-50,500)
DrawScreen
Forever
Sumu Games: Sam, Ur eye!
-
- Newcomer
- Posts: 37
- Joined: Tue Sep 09, 2008 4:17 pm
Re: Tyhmät kysymykset
Edited: Eipä nyt tyhmiä kysyttäviä, sain ratkaistua
Blooddrunk Game Industry [BGI] :
Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla
Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Unlimited 1.0 = 100%
-Päivityksiä suunnitteilla
Kollaa kestää!
-Suunnitteluvaiheessa
-Tower defence -tyylinen, torju kommunistivyöryt kannaksella
_____
Vertos
Re: Tyhmät kysymykset
olen yrittänyt väsätä jonkinlaista kentän vaihtoa, jossa uutta kenttää "ladatessa" määritellään omat spawn-arvot sun muut. homma on muuten hoidossa, paitsi että itse kentän vaihtaminen ei kunnolla onnistu...voisiko joku auttaa?
oma koodi:(mukana ampumissysteemit sun muut(jotka toimivat))
oma koodi:(mukana ampumissysteemit sun muut(jotka toimivat))
Code: Select all
'------------------------------------------------------------------------------------------------------------
SCREEN 1000,800
FrameLimit 50
'------------------------------------------------------------------
'--------------------------------MAPIT-----------------------------
'------------------------------------------------------------------
kartta = LoadMap("Media\map1.til","Media\tileset.bmp")
'------------------------------------------------------------------
'--------------------------------TYPET-----------------------------
'------------------------------------------------------------------
Type AMMUS
Field obj
Field id
Field dmg
End Type
mAmmus = LoadObject("Media\bullet.bmp")
ShowObject mAmmus,OFF
'-------------------
Type VIHU
Field obj
Field health
End Type
mvihu=LoadObject("Media\guy.bmp",360)
ShowObject mvihu,OFF
uus = 25
'--------------------
Type IVIHU
Field obj
Field health
End Type
mivihu = LoadObject ("media\ukkeli3.bmp",360)
ShowObject mivihu,OFF
iuus = 1500
'-------------------
Type RUHO
Field obj
End Type
mruho = LoadObject ("media\cow.bmp")
ShowObject mruho,OFF
'------------------
Type UPS
Field obj
End Type
mups = LoadObject ("media\bigbullet.bmp")
ShowObject mups,OFF
'------------------------------------------------------------------------
'--------------------------MUUT-LATAUKSET--------------------------------
'------------------------------------------------------------------------
ukko = LoadObject("media\soldier.bmp",360)
PositionObject ukko,0,540
ukkohp = 100
'------------------------------------------------------------------------
aim=LoadObject("Media\target.bmp")
SetupCollision aim, ukko,2,2,2
SetupCollision ukko, aim,2,2,2
SetupCollision ukko, kartta,1,4,2
SetupCollision kartta, ukko,1,4,2
Minigun = 0
M4A1 = 0
M3 = 0
panokset1=12
panokset2=30
panokset3=100
panokset4=8
ASE=0
ASEIDEN_MÄÄRÄ = 4
p_dmg=14
r_dmg=10
kk_dmg=5
m_dmg=5
vihut=0
powerups = 0
spawn = 100
level = 500
tauko=0
kenttä=1
'------------------------------------------------------------------------------------------------------------
'------------------------------------------------------------------------------------------------------------
Repeat
'------------------------------------------------------------------------------------------------------------
'--------------------------------------------------UKKO------------------------------------------------------
'------------------------------------------------------------------------------------------------------------
level -1
If level=0 Then
spawn -1
level=500
EndIf
If vihut>49 Then uus=100
If spawn<1 Then spawn=1
If KeyHit(cbkeyo) Then tauko=1
If tauko=1 Then uus+1
If KeyHit (cbkeyp) Then WaitKey
For v.VIHU= Each VIHU
If Distance2(v\obj,ukko)<20 Then
ukkohp - 1
If ukkohp< 1 Then
MakeError "lol"
EndIf
EndIf
Next v
For iv.IVIHU= Each IVIHU
If Distance2(iv\obj,ukko)<20 Then
ukkohp - 3
If ukkohp< 1 Then
MakeError "lol"
EndIf
EndIf
Next iv
'------------------------------------------------------------------
PositionObject aim,MouseWX(),MouseWY()
PointObject ukko, aim
If KeyDown(cbkeyw) Then MoveObject ukko, 3
If KeyDown(cbkeys) Then MoveObject ukko, -3
If KeyDown(cbkeyd) Then MoveObject ukko, 0, 3
If KeyDown(cbkeya) Then MoveObject ukko, 0, -3
'---------------------------------------------------------------------
'-------------------------AI+SPAWN--------------------------------
'---------------------------------------------------------------------
If uus=0 And tauko=0 Then
v.VIHU = New (VIHU)
v\obj = CloneObject (mvihu)
uus = spawn
v\health = Rand (80,140)
vihut +1
PositionObject v\obj,Rand(200,-200),Rand(-300,-500)
For v.VIHU = Each VIHU
SetupCollision v\obj,kartta,1,4,2
SetupCollision kartta,v\obj,1,4,2
vv.vihu = First(vihu)
vv = After(v)
While vv<>NULL
SetupCollision vv\obj,v\obj,2,2,2
SetupCollision v\obj,vv\obj,2,2,2
vv = After(vv)
Wend
Next v
EndIf
uus = uus-1
'------------------------
For v.VIHU = Each VIHU
PointObject v\obj,ukko
MoveObject v\obj,1
Next v
'-----------------------------------------------------
If iuus=0 Then
iv.IVIHU = New (IVIHU)
iv\obj = CloneObject (mivihu)
iuus = 1500
iv\health = Rand (500,800)
vihut +1
PositionObject iv\obj,Rand(200,-200),Rand(200,-200)
For iv.IVIHU = Each IVIHU
SetupCollision iv\obj,kartta,1,4,2
SetupCollision kartta,iv\obj,1,4,2
Next iv
EndIf
iuus = iuus-1
'------------------------
For iv.IVIHU = Each IVIHU
PointObject iv\obj,ukko
MoveObject iv\obj,1
Next iv
'-------------------------------------------------------------------------
'-----------------------------OSUMAT--------------------------------------
'-------------------------------------------------------------------------
For luoti.AMMUS = Each AMMUS
For v.VIHU = Each VIHU
If ObjectsOverlap (v\obj,luoti\obj) Then
v\health -luoti\dmg
MoveObject v\obj, -5
If v\health<1 Then
tapot +1
uusi -1
vihut -1
ruhoo.RUHO = New (RUHO)
ruhoo\obj = CloneObject (mruho)
CloneObjectPosition ruhoo\obj,v\obj
ObjectLife ruhoo\obj,250
drop=Rand (1,3)
If drop=1 Then
uppi.UPS = New (UPS)
uppi\obj = CloneObject (mups)
CloneObjectPosition uppi\obj,v\obj
EndIf
DeleteObject v\obj
Delete v
EndIf
EndIf
Next v
Next luoti
'--------------------------------------------------
For luoti.AMMUS = Each AMMUS
For v.VIHU = Each VIHU
If ObjectsOverlap (v\obj,luoti\obj) Then
DeleteObject luoti\obj
Delete luoti
Exit
EndIf
Next v
Next luoti
'---------------------------------------------------
For luoti.AMMUS = Each AMMUS
For iv.IVIHU = Each IVIHU
If ObjectsOverlap (iv\obj,luoti\obj) Then
iv\health -luoti\dmg
MoveObject iv\obj, -5
If iv\health<1 Then
tapot +1
powerups +1
vihut -1
ruhoo.RUHO = New (RUHO)
ruhoo\obj = CloneObject (mruho)
CloneObjectPosition ruhoo\obj,v\obj
ObjectLife ruhoo\obj,250
uppi.UPS = New (UPS)
uppi\obj = CloneObject (mups)
CloneObjectPosition uppi\obj,v\obj
DeleteObject iv\obj
Delete iv
EndIf
EndIf
Next iv
Next luoti
'---------------------------------------------------
For luoti.AMMUS = Each AMMUS
For iv.IVIHU = Each IVIHU
If ObjectsOverlap (iv\obj,luoti\obj) Then
DeleteObject luoti\obj
Delete luoti
Exit
EndIf
Next iv
Next luoti
'------------------------------------------------------------------------------------------------------------
'-------------------------------------AMPUMINEN---------------------------------------------------------
'------------------------------------------------------------------------------------------------------------
If KeyHit (2) Then ase = 0
If KeyHit (3) Then ase = 1
If KeyHit (4) Then ase = 2
If KeyHit (5) Then ase = 3
'pistooli
If MouseDown(1) And reload=0 Then
Select ASE
Case 0
If panokset1>0 Then
panokset1-1
luoti.AMMUS = New(AMMUS)
luoti\id=0
luoti\dmg=p_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,5,-3
TurnObject luoti\obj,Rand(3,-3)
reload=25
Else
reload=25
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
panokset1=12
EndIf
EndIf
'rynnäkkökivääri
Case 1
If panokset2>0 And m4a1>29 Then
panokset2-1
luoti.AMMUS = New(AMMUS)
luoti\id=1
luoti\dmg=r_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,3,0
TurnObject luoti\obj,Rand(7,-7)
reload=5
Else
reload=50
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
m4a1-30
panokset2=30
EndIf
EndIf
'konekivääri
Case 2
If panokset3>0 And minigun>99 Then
panokset3-1
luoti.AMMUS = New(AMMUS)
luoti\id=1
luoti\dmg=kk_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,3,0
TurnObject luoti\obj,Rand(10,-10)
reload=1
Else
reload=100
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
panokset3=100
minigun-100
EndIf
EndIf
'haulikko
Case 3
If panokset4>0 And m3>7 Then
panokset4 -1
For i=1 To 10
luoti.AMMUS = New(AMMUS)
luoti\dmg=m_dmg
luoti\obj=CloneObject(mammus)
CloneObjectPosition luoti\obj,ukko
CloneObjectOrientation luoti\obj,ukko
ResetObjectCollision luoti\obj
MoveObject luoti\obj,3,0
TurnObject luoti\obj,Rand(-15,15)
Next i
reload=50
Else
reload=50
If Timer()>lataus+500 Then
valmis=Not valmis
lataus=Timer()
EndIf
If valmis Then
panokset4=8
m3 -8
EndIf
EndIf
EndSelect
EndIf
If reload>0 Then reload=reload-1
For luoti.AMMUS = Each AMMUS
Select luoti\id
Case 0
MoveObject luoti\obj,15
If Distance2(luoti\obj,ukko)>200 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 1
MoveObject luoti\obj,24
If Distance2(luoti\obj,ukko)>400 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 2
MoveObject luoti\obj,32
If Distance2(luoti\obj,ukko)>1000 Then
DeleteObject luoti\obj
Delete luoti
EndIf
Case 3
MoveObject luoti\obj,18
If Distance2(luoti\obj,ukko)>300 Then
DeleteObject luoti\obj
Delete luoti
EndIf
End Select
Next luoti
If m4a1<0 Then m4a1 +100
If minigun<0 Then minigun +30
If m3<0 Then m3 +8
'---------------------------------------------------------
For uppi.UPS = Each UPS
If ObjectsOverlap (uppi\obj,ukko) Then
padit = Rand (1,6)
If padit=1 Then m4a1+30
If padit=2 Then m4a1+30
If padit=3 Then m4a1+30
If padit=4 Then minigun+100
If padit=5 Then m3+8
If padit=6 Then m3+8
DeleteObject uppi\obj
Delete uppi
EndIf
Next uppi
'---------------------------------------------------------
If tapot=1 then kenttä=2
If kenttä = 2 then Gosub map2
'---------------------------------------------------------
UpdateGame
CloneCameraPosition ukko
DrawGame
ShowMouse OFF
DrawScreen
'----------------------------------------------------------
Until EscapeKey()
End
'----------------------------------------------------------
map2:
kartta = LoadMap("Media\map1.til","Media\tileset.bmp")
For v.VIHU = Each VIHU
DeleteObject v\obj
Delete v
Next v
ukko = LoadObject("media\soldier.bmp",360)
PositionObject ukko,0,540
Return