27
Drak Basic, PRO : Játékfejlesztés ! Tutorialok,Forráskódok.STB.
  • nick név
    #1
    #1
  • 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!!!!
  • DBoy
    #3
    DarkBasical foglalkozó oldalak
    Hivatalos DB PAGE
    Hivatalos Magyar DB PAGE
  • nick név
    #4
    nem értek hozzá de kedvet kaptam megnézni mi ez :))
  • DBoy
    #5
    Magyar DarkBasic Játékfejlesztőcsapatok
    diedesign
    dremphex
    --------------------------------------------------------
    Aki még tud , ugyanebben a formában írja be!
  • 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!
  • DBoy
    #7
    ragames
    red-planet
  • Devla
    #8
    Tobbre mesz vele ha megtanulsz valami normalis programnyelvet, mint python vagy java. Persze, tovabb tart de penzt is lehet keresni vele.
  • 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...
  • GixEr
    #10
    A virtools sem elhanyagolhato, www.virtools.com
  • orkenyid
    #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.
  • Emmegki
    #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.
  • Emmegki
    #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.
  • 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?
  • 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ó.
  • orkenyid
    #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.
  • berdi
    #17
    Hello
    Meg tudnátok mondani honnan szerezhetném meg a Dark Basicot?
  • 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 :)
  • TYME
    #19
    Ja és berdi probálkozz e-donkeyn de ezt nem én mondtam :)
  • berdi
    #20
    Hello
    Mi az az e-donkey?
  • Tikic
    #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!
  • DBoy
    #22
    anyád!! ez nem ide való kötsög!!
  • Rafaelo
    #23
    a dark basic 3d gyorsabb vagy a truevision3d visual basicben??????
    ugyértem játék futtatásnál
  • repvez
    Szüli
    #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?
  • repvez
    Szüli
    #25
    már megoldodott már csak egy magyar oktato leirás kellene hogy hogyan kezdjek neki.
  • InterFoxSOFT
    #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...
  • InterFoxSOFT
    #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 [R] to re-roll stats, or [Y] 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 "(B)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

    ---------------------------------------