2D textbox following 3D object (FFVII style) by NE07th Nov 2003 20:30
|
---|
Summary Way awsome those Final Fantasy text dialogs... check it out ;) Description Ever wanted to create your own RPG but don`t know how to make textboxes? well here is an example... Code ` This code was downloaded from The Game Creators ` It is reproduced here with full permission ` http://www.thegamecreators.com Rem ------------------------------------------------- Rem -- Author : Vincent Hoogendam -- Rem -- Demo : How to display a message box 3d/2d -- Rem -- E-mail : vincent.hoogendam@lycos.nl -- Rem ------------------------------------------------- Rem First set the display mode (I`ve used 800,600,32) but it can be modified set display mode 800,600,32 dispx# as integer dispy# as integer dispx#=800 dispy#=600 line1$="Enter sentance number 1" line2$="Enter sentance number 2" line3$="Enter sentance number 3" line4$="Enter sentance number 4" line5$="Enter sentance number 5" line6$="Enter sentance number 6" line7$="Enter sentance number 7" Rem where must the dialog appear (wich object "says" something?) Object#=1 Rem "Name of object" Who$="Vincent" set text font "lucida console" currentline#=1 make object cube 1,10 scale object 1,10,10,10 load image "dialog.png",1 load image "arrow.png",2 do set cursor 0,0 print screen fps() print dx#-mousex()," - ",dy#-mousey() dxtemp#=object screen x(object#) dytemp#=object screen y(object#) if dxtemp#+238>dispx# then dx#=dispx#-238 else dx#=dxtemp# if dytemp#+119>dispy# then dy#=dispy#-119 else dy#=dytemp# sprite 1,dx#,dy#,1 y#=wrapvalue(y#+1) yrotate object 1,y# move object 1,0.1 rem -------------------------- rem - create the colored box - rem -------------------------- for a=1 to 115 ink rgb((255/115)*a,0,0),1 box dx#+6,dy#+2+(a),dx#+232,dy#+2+(a)+2 next a rem -------------------------- rem - place the disired text - rem - and do the animation - rem -------------------------- if text_animation_complete#=0 textcount#=textcount#+1 : if textcount#=5 then textcount#=0 : char#=char#+1 ink rgb(255,255,255),1 set cursor dx#+10,dy#+10 print Who$+":" if currentline#=1 set cursor dx#+10,dy#+10+12 print left$(line1$,char#) if char#=len(line1$) then currentline#=2 : char#=0 endif if currentline#=2 set cursor dx#+10,dy#+10+12 print line1$ set cursor dx#+10,dy#+10+24 print left$(line2$,char#) if char#=len(line2$) then currentline#=3: char#=0 endif if currentline#=3 set cursor dx#+10,dy#+10+12 print line1$ set cursor dx#+10,dy#+10+24 print line2$ set cursor dx#+10,dy#+10+36 print left$(line3$,char#) if char#=len(line3$) then currentline#=4: char#=0 endif if currentline#=4 set cursor dx#+10,dy#+10+12 print line1$ set cursor dx#+10,dy#+10+24 print line2$ set cursor dx#+10,dy#+10+36 print line3$ set cursor dx#+10,dy#+10+48 print left$(line4$,char#) if char#=len(line4$) then currentline#=5: char#=0 endif if currentline#=5 set cursor dx#+10,dy#+10+12 print line1$ set cursor dx#+10,dy#+10+24 print line2$ set cursor dx#+10,dy#+10+36 print line3$ set cursor dx#+10,dy#+10+48 print line4$ set cursor dx#+10,dy#+10+60 print left$(line5$,char#) if char#=len(line5$) then currentline#=6: char#=0 endif if currentline#=6 set cursor dx#+10,dy#+10+12 print line1$ set cursor dx#+10,dy#+10+24 print line2$ set cursor dx#+10,dy#+10+36 print line3$ set cursor dx#+10,dy#+10+48 print line4$ set cursor dx#+10,dy#+10+60 print line5$ set cursor dx#+10,dy#+10+72 print left$(line6$,char#) if char#=len(line6$) then currentline#=7: char#=0 endif if currentline#=7 set cursor dx#+10,dy#+10+12 print line1$ set cursor dx#+10,dy#+10+24 print line2$ set cursor dx#+10,dy#+10+36 print line3$ set cursor dx#+10,dy#+10+48 print line4$ set cursor dx#+10,dy#+10+60 print line5$ set cursor dx#+10,dy#+10+72 print line6$ set cursor dx#+10,dy#+10+84 print left$(line7$,char#) if char#=len(line7$) then text_animation_complete#=1:char#=0 endif else ink rgb(255,255,255),1 set cursor dx#+10,dy#+10 print Who$+":" set cursor dx#+10,dy#+10+12 print line1$ set cursor dx#+10,dy#+10+24 print line2$ set cursor dx#+10,dy#+10+36 print line3$ set cursor dx#+10,dy#+10+48 print line4$ set cursor dx#+10,dy#+10+60 print line5$ set cursor dx#+10,dy#+10+72 print line6$ set cursor dx#+10,dy#+10+84 print line7$ hide mouse if flash_returnkey#=0 then sprite 2,dx#+215,dy#+95,2 else sprite 2,9000,9000,2 flashreturn#=flashreturn#+1 if flashreturn#=30 if flash_returnkey#=0 flash_returnkey#=1 flashreturn#=0 else flash_returnkey#=0 flashreturn#=0 endif endif if returnkey()=1 then gosub textdone endif loop textdone: show mouse end |