Dark Basic

Jelentkezz be a hozzászóláshoz.

#27
Kéne egy kis segítség...
Készíttetem egy amatõr bénácska RPG-t, de vannak vele problémák.
Tudom itt nincsenek DBP-sok, de ti még így is könnyebben megfogjátok érteni mint én.

Probléma 01:Nem tudok saját karaktereket megfelelõen beilleszteni a programba, kénytelen voltam kovkákat és gömböket kreálni helyettük.

Így kell beadni egy karaktert:
----------------------------------

tifa=1 : Load object "tifa.x",tifa


Scale object tifa,30,20,35


load image "tifatextura.bmp",tifa
-----------------------------------


Probléma 02:joystick használat, tudom, hogy kell rávenni a programot a joy használatára 2d-s hülyeségeknél mûködik is, de ha itt hozzáadom a programhoz az egész képernyõ ki kékül indításkor.
Így kell használni:
-----------------------------------

if joystick up()=1 then y=y-1
if joystick down()=1 then y=y+1
if joystick left()=1 then x=x-1
if joystick right()=1 then x=x+1
-----------------------------------



----------
A kód:
----------
------------------------------------
Rem Project: RPG
Rem Created: 2009.05.23. 12:46:25

Rem ***** Main Source File *****
REM RGBRPG,
REM DarkBasicPro


Type Character
Rage as Float
Grace as Float
Brains as Float
MaxHP as Float
HP as Float
Money as Float
Level as Float
XP as Float
Name as String
Object as Integer
EndType


Global Player as Character


Type Baddie
Rage as Float
Grace as Float
Brains as Float
HP as Float
XPDrop as Integer
MoneyDrop as Integer
Name as String
Object as Integer
Endtype

Dim Enemies(10) as Baddie

global Fighting as Integer

sync on: sync rate 60
randomize timer()

FirstTimeThrough = 0
Player.Object = 1
Fighting = 0
global Loopy as integer
global Attack as integer
Loopy = 400
Global AttackName$ as String
global DamageFloat as Integer
global Combatant as Integer
global damage as Integer
global FloatTime as Integer

Do

if FirstTimeThrough = 0
NameCharacter() `asks player for a name, keeps it.
StatCharacter() `creates random stats and either rerolls or keeps.
GenerateBaddie() `Might work.
MakeCube() `makes our player object, colours it etc.
MakeWorld() `creates the floor plain, lights etc.
MakeLevel() `generates the buildings/walls of our environment
MakeFloater() `Make the plain that shows damage.
FirstTimeThrough = 1
sync on
endif

if Fighting =0
CubeMovement() `controls the movement of our cube character. WASD keys.
Endif
ThirdPerson() `positions the camera in a 3rd-person style position.
DrawStats()

if Object Collision(1,0)>49
if Object Collision(1,0)<100
Combatant = Object Collision(1,0)-50
DrawBaddieStats()
DoFight()
endif
endif

if Player.XP>100*Player.Level
Level()
endif

if DamageFloat>0
FloatTime=250
DamageFloat = 0
endif

DamageFloater()


Sync
Loop




Function NameCharacter()
sync off
`Now, create our character.
CLS
Set Cursor 0,0
Input "Enter your cube's name:",Player.Name
Print
Print "Welcome ";Player.Name;" the Cube."
Wait 1000
Endfunction



Function StatCharacter()
do
Cls
Set Cursor 0,0
Print Player.Name;", press to re-roll stats, or to accept stats."
Print

`100 stat points initially. Previous method sometimes resulted in Brains=-1 (ironic, really)
`So we've set a 'points left' and made sure each stat is always at least 1.

Player.Rage=1
Player.Grace=1
Player.Brains=1
AmountLeft=97

Player.Rage=Player.Rage+rnd(AmountLeft)
AmountLeft=AmountLeft-Player.Rage+1
Player.Grace=Player.Grace+rnd(AmountLeft)
AmountLeft=AmountLeft-Player.Grace+1
Player.Brains=Player.Brains+AmountLeft

Player.HP=Player.Rage+Player.Grace+Player.Brains
Player.MaxHP=Player.HP
Player.Money=(Player.Brains+Player.Grace)*2
Player.Level=1
`Still not got a good name or system for assigning the main unit of 'barter'. Depends.

`Print out the stats - note, Rage, Grace, and Brains correspond to Red, Green and Blue
`respectively. This will help people figure out the relative skills of an enemy, etc.
Ink RGB(255,0,0),0
Print "(R)age: ";Player.Rage
Ink RGB(0,255,0),0
Print "(G)race: ";Player.Grace
Ink RGB(0,0,255),0
Print "(😎rains: ";Player.Brains
Ink RGB(255,255,255),0
Print "Health: ";Player.HP;"/";Player.MaxHP
Print "Monetary Units: ";Player.Money

Ink RGB(INT(Player.Rage),INT(Player.Grace),INT(Player.Brains)),0
Box 180,30,260,110
Ink RGB(255,255,255),0
`Let the player choose to keep the stats or re-roll.

Do
a$=Lower$(Inkey$())
If a$="r" or a$="y"
wait 300
Exit
endif
Loop

if a$="y" Then Exit
loop
Endfunction



Function MakeCube()

make object cube Player.Object,Player.HP/10
color object Player.Object, rgb(INT(Player.Rage),INT(Player.Grace),INT(Player.Brains))
color backdrop 0
make object collision box Player.Object,-7,-7,-7,7,7,7,0

EndFunction



Function MakeWorld()

autocam off
make object plain 4,800,800
position object 4,0,0,0
rotate object 4,-90,0,0
color object 4,rgb(50,50,50)
set object collision off 4

color ambient light rgb(20,20,20)
autocam on

EndFunction



Function CubeMovement()


CubeAngle#= Object Angle Y(Player.Object)
PosX#=Object Position X(Player.Object)
PosY#=Object Position Y(Player.Object)
PosZ#=Object Position Z(Player.Object)


If Keystate(17)=1 : `"W" key for forward.
` WKey = 1
CubeSpeed# = 1.5

CubeMoveX# = -sin(-Object Angle Y(Player.Object)) * CubeSpeed#
CubeMoveZ# = cos(-Object Angle Y(Player.Object)) * CubeSpeed#


PosX#=PosX#+CubeMoveX#
PosZ#=PosZ#+CubeMoveZ#


CurrentXRot#=Object Angle X(Player.Object)
Xrotate Object Player.Object,CurrentXRot#+5
else
WKey = 0
Endif

If Keystate(31)=1 : `"S" key for reverse.
CubeRevSpeed# = 1.0

CubeRevMoveX# = -sin(-Object Angle Y(Player.Object)) * CubeRevSpeed#
CubeRevMoveZ# = cos(-Object Angle Y(Player.Object)) * CubeRevSpeed#


PosX#=PosX#-CubeRevMoveX#
PosZ#=PosZ#-CubeRevMoveZ#


CurrentXRot#=Object Angle X(Player.Object)
Xrotate Object Player.Object,CurrentXRot#-3

Endif

If Keystate(30)=1 then Yrotate Object Player.Object, Wrapvalue(CubeAngle#-1.5) :`"A" for left.

If Keystate(32)=1 then Yrotate Object Player.Object, Wrapvalue(CubeAngle#+1.5) :`"D" for right.


if object collision (1,5) > 0
dec PosX#,get object collision x()
dec PosY#,get object collision y()
dec PosZ#,get object collision z()
endif


position object Player.Object, PosX#,4.5+(Player.Level/2),PosZ#

EndFunction



Function TestKeys()
Set Cursor 0,0
Print SCANCODE()

EndFunction



Function ThirdPerson()


CameraOffset# = 50

CameraHeight = Object Position Y(Player.Object)+30

OffsetX# = -sin(-Object Angle Y(Player.Object)) * CameraOffset#
OffsetZ# = cos(-Object Angle Y(Player.Object)) * CameraOffset#

Position Camera 0, Object Position X(Player.Object)-OffsetX#, CameraHeight , Object Position Z(Player.Object)-OffsetZ#
Point Camera 0, Object Position X(Player.Object), Object Position Y(Player.Object)+15, Object Position Z(Player.Object)

EndFunction



Function MakeLevel()

make object box 5,100,20,20
make object collision box 5,-50,-10,-10,50,10,10,0
position object 5, 150,0,120

Endfunction


Function GenerateBaddie()

for i = 0 to array count(Enemies())

Enemies(i).Rage=rnd(50)
Enemies(i).Grace=rnd(50)
Enemies(i).Brains=rnd(50)

Enemies(i).HP=(Enemies(i).Rage+Enemies(i).Grace+Enemies(i).Brains)

Enemies(i).XPDrop=(Enemies(i).Rage+Enemies(i).Grace+Enemies(i).Brains)/3
Enemies(i).MoneyDrop=Enemies(i).XPDrop/2


if Enemies(i).Rage>Enemies(i).Grace
if Enemies(i).Rage>Enemies(i).Brains
Enemies(i).Name="Bezerker Ball"
else
Enemies(i).Name="Brainy Ball"
endif
else
if Enemies(i).Grace>Enemies(i).Brains
Enemies(i).Name="Ninja Ball"
else
Enemies(i).Name="Brainy Ball"
endif
endif

Enemies(i).Object=50+i

Make Object Sphere Enemies(i).Object,(Enemies(i).HP)/6
Set Object Collision to Spheres Enemies(i).Object
Set Object Collision on Enemies(i).Object

Position Object Enemies(i).Object,rnd(600)-300,Enemies(i).HP/12,rnd(600)-300
Color Object Enemies(i).Object,rgb(Enemies(i).Rage,Enemies(i).Grace,Enemies(i).Brains)
next i

Endfunction


Function DrawStats()

set cursor 1,1
Print Player.Name," The Lv.",Player.Level," Cube"

ink rgb(255,0,0),0
set cursor 1,17
Print "Rage:"
box 5,33,Player.Rage+5,43

ink rgb(0,255,0),0
set cursor 1,43
Print "Grace:"
box 5,58,Player.Grace+5,68

ink rgb(0,0,255),0
set cursor 1,68
Print "Brains:"
box 5,83,Player.Brains+5,93

ink rgb(255,255,255),0
set cursor 1,94
Print "HP:"
ink rgb(INT(Player.Rage),INT(Player.Grace),INT(Player.Brains)),0
box 3,108,Player.MaxHP+7,120
ink rgb(255,255,255),0
box 5,109,Player.HP+5,119

if keystate(18)=1
set cursor 1,124
Print "XP: ",Player.XP
set cursor 1,138
Print "Money: ",Player.Money
endif
EndFunction



Function DrawBaddieStats()

Collider= Combatant

set cursor screen width()-Text Width (Enemies(Collider).Name)-Text Width (" The Enemy!"),1
Print Enemies(Collider).Name," The Enemy!"

ink rgb(255,0,0),0
set cursor screen width()-Text Width("Rage:"),17
Print "Rage:"
box screen width()-Enemies(Collider).Rage-5,33,screen width()-5,43

ink rgb(0,255,0),0
set cursor screen width()-Text Width ("Grace:"),43
Print "Grace:"
box screen width()-Enemies(Collider).Grace-5,58,screen width()-5,68

ink rgb(0,0,255),0
set cursor screen width()-Text Width("Brains:"),69
Print "Brains:"
box screen width()-Enemies(Collider).Brains-5,84,screen width()-5,94

ink rgb(255,255,255),0

set cursor screen width()-Text Width("HP:"),95
Print "HP:"
box screen width()-Enemies(Collider).HP-5,110,screen width()-5,120

EndFunction



Function DoFight()

Fighting = 1

ConSystemInk()
center Text screen width()/2,screen height()-65,"Fight"
ink rgb(255,255,255),0

BattleTimer()

CombatCamera()




If Keystate(2) = 1 :`Key 1
if Player.Rage>5
Attack = 1
AttackName$ = "Rage Frenzy"
endif
endif

If Keystate(4) = 1 :`Key 3
if Player.Grace>5
Attack = 2
AttackName$ = "Stealth Stab"
endif
endif

If Keystate(7) = 1 :`Key 6
if Player.Brains>40
Attack = 3
AttackName$ = "Emotional Vampirism"
endif
endif

if Keystate(6) = 1 :`Key 5
if Player.Brains>5
Attack = 4
AttackName$ = "Mind Heal"
endif
endif

if Keystate(5) = 1 :`Key 4
if Player.Grace>40
Attack = 5
AttackName$ = "Reactive Momentum"
endif
endif

if Keystate(3) = 1 :`Key 2
if Player.Rage>40
Attack = 6
AttackName$ = "All Or Nothing"
endif
endif

if Attack > 0
ink 0,0
center Text screen width()/2,screen height()-45,AttackName$
ink rgb(255,255,255),0
endif

if Loopy=0
if Attack>0
if object exist(Object Collision(1,0))
eneX=Object Position X(Enemies(Object Collision(1,0)-50).Object)
eneY=Object Position Y(Enemies(Object Collision(1,0)-50).Object)
eneZ=Object Position Z(Enemies(Object Collision(1,0)-50).Object)
endif
DamageBaddie()
endif
endif


if DamageFloat=500
show object 300
position object 300,eneX,eneY+5,eneZ
point object 300,camera position X(),camera position Y(),camera position Z()
DamageFloat=499
endif


EndFunction



Function KillBaddie()

Fighting = 0
Loopy = 400
Player.XP = Player.XP + Enemies(Combatant).XPDrop
Player.Money = Player.Money + Enemies(Combatant).MoneyDrop
delete object Object Collision(1,0)
EndFunction



Function CombatCamera()

XDiff = Object Position X(Object Collision(1,0)) - Object Position X(1)
ZDiff = Object Position Z(Object Collision(1,0)) - Object Position Z(1)

angle# = ATanFull(XDiff, ZDiff)

angle# = WrapValue(angle#)

AngleDiff# = Object Angle Y(1) - angle#

while (AngleDiff# < -180)
AngleDiff# = AngleDiff# + 360
endwhile

while (AngleDiff# > 180)
AngleDiff# = AngleDiff# - 360
endwhile

YRotate Object 1,Object Angle Y(1) - (AngleDiff#/20)

EndFunction



Function ConSystemInk()

BaddieID = Combatant

`RED
if Enemies(BaddieID).Rage+Enemies(BaddieID).Grace+Enemies(BaddieID).Brains > (Player.Rage+Player.Grace+Player.Brains)
ink rgb(255,0,0),0
else

`YELLOW
if Enemies(BaddieID).Rage+Enemies(BaddieID).Grace+Enemies(BaddieID).Brains > ((Player.Rage+Player.Grace+Player.Brains)*0.6)
ink rgb(255,255,0),0
else

`BLUE
if Enemies(BaddieID).Rage+Enemies(BaddieID).Grace+Enemies(BaddieID).Brains > ((Player.Rage+Player.Grace+Player.Brains)*0.4)
ink rgb(0,0,255),0
else

`PALE BLUE
if Enemies(BaddieID).Rage+Enemies(BaddieID).Grace+Enemies(BaddieID).Brains < ((Player.Rage+Player.Grace+Player.Brains)*0.4)
ink rgb(180,180,255),0
endif
endif
endif
endif

EndFunction


Function Level()

Player.Level = Player.Level+1
Player.Rage = Player.Rage+rnd(10)+5
Player.Grace = Player.Grace+rnd(10)+5
Player.Brains = Player.Brains+rnd(10)+5

Player.MaxHP = Player.MaxHP+rnd(10)+10
Player.HP = Player.MaxHP

Scale Object 1,Player.MaxHP,Player.MaxHP,Player.MaxHP

Color Object 1,rgb(Player.Rage,Player.Grace,Player.Brains)

Player.XP=Player.XP-(100*(Player.Level-1))

EndFunction



Function BattleTimer()
if Loopy = 0
Loopy = 400
endif
if Loopy>0
Loopy = Loopy - 1
endif

if Loopy > 250
ink rgb(0,255,0),0
else
if Loopy > 100
ink rgb(255,255,0),0
else
if Loopy > 50
ink rgb(255,128,0),0
else
if Loopy < 51
ink rgb(255,0,0),0
endif
endif
endif
endif

box (screen width()/2)-Loopy/2,screen height()-45,(screen width()/2)+Loopy/2,screen height()-30
ink rgb(255,255,255),0

EndFunction


Function DamageBaddie()

BaddieID = Combatant


If Attack = 1
damage = Player.Rage
Enemies(BaddieID).HP = Enemies(BaddieID).HP - damage
set cursor screen width()/2,screen height()/2
endif


If Attack = 2
damage = (Player.Grace/2)*rnd(3)
if damage <1 then damage=1
Enemies(BaddieID).HP = Enemies(BaddieID).HP - damage
set cursor screen width()/2,screen height()/2
endif


If Attack = 3
damage =(Player.Brains)/1.5
if damage <1 then damage=1
Enemies(BaddieID).HP = Enemies(BaddieID).HP - damage
Player.HP=Player.HP+damage
if Player.HP>Player.MaxHP then Player.HP=Player.MaxHP
set cursor screen width()/2,screen height()/2
endif


if Attack = 4
damage = 1
Player.HP = Player.HP + (Player.Brains*2)
if Player.HP>Player.MaxHP
Player.HP=Player.MaxHP
endif
endif


if Attack = 5
damage = Player.Grace/2+Enemies(BaddieID).Grace
Enemies(BaddieID).HP = Enemies(BaddieID).HP - damage
endif


if Attack = 6
chance = rnd(2)
if chance <=1 then damage = 0
if chance >1 then damage = Player.Rage*2+10
Enemies(BaddieID).HP = Enemies(BaddieID).HP- damage
endif

if Attack > 0
TextureFloater()
DamageFloat=500
Attack = 0
Player.HP=Player.HP-(Enemies(BaddieID).Rage/2)
endif


`if Player.HP<1
` KillPlayer()
`endif

if Enemies(BaddieID).HP < 1
KillBaddie()
endif

EndFunction

Function MakeFloater()

create bitmap 1,32,32
set current bitmap 0
make object plain 300,10,10
set object 300,1,1,0,1,0
hide object 300

EndFunction


Function TextureFloater()

set current bitmap 1
ink 0,0
box 0,0,32,32
ink rgb(128,0,0),0
circle 16,16,10
circle 16,16,9
ink rgb(255,0,0),0
center text 17,9,STR$(damage)
ink rgb(255,255,255),0
get image 400,0,0,32,32
set current bitmap 0
texture object 300,400

EndFunction

Function DamageFloater()

if FloatTime > 0
a = object position x(300)
b# = object position y(300)+0.3
c = object position z(300)

position object 300,a,b#,c
point object 300,camera position X(),camera position Y(),camera position Z()
FloatTime = FloatTime-1

endif

if FloatTime = 0
Hide Object 300
endif


EndFunction

---------------------------------------
#26
Persze, mert csak 3D shooterek vannak a világon, annyira unom már, hogy az összes Magyar PC buzi FPS-t akar csinálni...
repvez
#25
már megoldodott már csak egy magyar oktato leirás kellene hogy hogyan kezdjek neki.
repvez
#24
Siasztok!
Segitségre lenne szügségem megvan a darkbasicpro,de a telepités után kéri hogy tegyem be a lemezt és hiába teszem be a daemont toolsba mindig a valos meghajton keresi és igy nem indul el.Ez is valamilyen védelemmel van ellátva vagy van hozzá crack?
Rafaelo
#23
a dark basic 3d gyorsabb vagy a truevision3d visual basicben??????
ugyértem játék futtatásnál

Mikor lépett az első ember a holdra? hülye vagy az első embernek nem is volt ürhajója!!!

DBoy
#22
anyád!! ez nem ide való kötsög!!

Abit KV8-pro | A64 3000+ | 512 MB DDR | Geforce 6600GT Az AMD legyen veled! ;)

#21
Valaki küldje már el nekem a Delta Force Task Force Dagger telepítõkódját,mert a www.serials.ws oldal vírusos és nem tudtam letölteni!
#20
Hello
Mi az az e-donkey?
TYME
#19
Ja és berdi probálkozz e-donkeyn de ezt nem én mondtam 😊

TYME
#18
Hát a Dark Basic Pro az enyhén durvább mint a sima kezeli a DX 9-et és amit azzal lehet csinálni közel van a mostani játékokhoz még le is szárnyal egy párat a tudádából és ezt onnan tudom h nekem is megvan 😊

#17
Hello
Meg tudnátok mondani honnan szerezhetném meg a Dark Basicot?
#16
dehogynem adtak csak az ma már nem számít profi grafikájúnak
Ph03niXx:ajánlom a darkedit-et vagy a professionalt.

Ph03niXx
#15
SZVSZ elég elfogadható teljesítményt nyújt. Sajnálom, hogy a kezelõfelülete olyan amilyen, egy ilyen progit máshogy is be lehetne csomagolni... De azért jó.

Class is over.

AtomHeart
#14
"de az igez hogy profi 3d shootert vagy valami komolyabb jatekot nem lehet vele csinalni mert pl csak directx 6-os."

Mer, a DX 6.0 koraban nem adtak ki eleg sok profi shootert, ami hasznalta?

YouTube csatornám: www.youtube.com/user/atomheart147/videos

#13
#8: kezdetben 10x annyit szenvedsz vele, a grafika feleannyira lesz jó. Értem... Nem professzionális felhasználásra tervezték, tehát a DB-zõk nem pénzért fejlesztenek nagy projekteket 2-3 évig.

P3 Celeron 1000 Mhz, 512 MB SDRAM, Ati Radeon 9550 256 MB, Maxtor 160 GB Minek több?

#12
Nem click'n'play játékfejlesztõ program hülye gémergyerekeknek, hanem egy programnyelv (semmi objektumorientáltság, Qbasic irányvonal). A sima dark basic dx7-es, a Dark basic pro dx9-es. Ez támogat egy adag effektet: bump mapping, mindenfajta shader, árnyékok, lehet animált textúrát csinálni, de kamerát is be lehet állítani textúrának. Eladható játékot lehet benne összehozni (persze nem kell csúcs grafikára számítani, kb Q3 szinten van a motor. Ja, támogatja a külsõ dll-eket is.

P3 Celeron 1000 Mhz, 512 MB SDRAM, Ati Radeon 9550 256 MB, Maxtor 160 GB Minek több?

#11
azer nem egy click&create szarsag, mert szovegesen kell megirni a jatekot. de az igez hogy profi 3d shootert vagy valami komolyabb jatekot nem lehet vele csinalni mert pl csak directx 6-os. esetleg a proval.

#10
A virtools sem elhanyagolhato, www.virtools.com
AtomHeart
#9
Egyetertek, de inkabb c/c++ :^)
Egyebkent ez a DB nekem egy amolyan click'ncreate szarsagnak tunik, egyszerubb jatekokat csinalhatsz vele, de egy profi 3D shootert soha. A Myst-et is valami ilyensmivel csinaltak mintha...

YouTube csatornám: www.youtube.com/user/atomheart147/videos

#8
Tobbre mesz vele ha megtanulsz valami normalis programnyelvet, mint python vagy java. Persze, tovabb tart de penzt is lehet keresni vele.

DBoy
#7

Abit KV8-pro | A64 3000+ | 512 MB DDR | Geforce 6600GT Az AMD legyen veled! ;)

DBoy
#6
Mi az a darkbasic?
A DarkBASIC egy könnyen kezelhetõ, 3D alkalmazások készítésére is alkalmas basic programnyelv. A parancsok mûködése teljesen magától értetõdõ, használatához nincs szükség programozói ismeretekre. Bõvebb információkért látogass el az ajánlott oldalak valamelyikére!

Abit KV8-pro | A64 3000+ | 512 MB DDR | Geforce 6600GT Az AMD legyen veled! ;)

DBoy
#5
Magyar DarkBasic Játékfejlesztõcsapatok
diedesign
dremphex
--------------------------------------------------------
Aki még tud , ugyanebben a formában írja be!

Abit KV8-pro | A64 3000+ | 512 MB DDR | Geforce 6600GT Az AMD legyen veled! ;)

#4
nem értek hozzá de kedvet kaptam megnézni mi ez 😊)

DBoy
#3
DarkBasical foglalkozó oldalak
Hivatalos DB PAGE
Hivatalos Magyar DB PAGE

Abit KV8-pro | A64 3000+ | 512 MB DDR | Geforce 6600GT Az AMD legyen veled! ;)

DBoy
#2
Sziasztok!Ugy láttam ilyen topic még nincs!
Há legyen! 😊
Dark Basic Topic
Saját illetve más oldalakról való tutorialok,forráskódok!
MAGYARDB Fejlesztõcsapatok munkái,honlapjai!
ÉS MINDEN AMI DARK BASIC!!!!

Abit KV8-pro | A64 3000+ | 512 MB DDR | Geforce 6600GT Az AMD legyen veled! ;)

#1
#1