In a vague attempt to redeem my idiocy;
You need a diffuse texture in texture stage 0, a normal texture in texture stage 1 - without textures you will get just black cube
You need to set the effect technique to DBLight8 to see the lights
All your lights are positioned in a straight line inside the cubes boundaries with same range(not a large enough range) and the same color so you wont see much the way they are currently setup
I could be wrong but setting DB lights as directional won`t affect the shader lights type, think that part needs to be in the shader
Although you did declare arrays for light colour - they are currently not floats which they need to be as GG said values are between 0.0 and 1.0
This is by no means a good example(especially as i havent coloured spheres that mark the light positions very well as light 0 is in use, prob better to hide light 0 and create an 8th db light - Im sure you can do this) but will give you an idea of how things work, use the same shader code you already have and just find a normal and diffuse texture to use;
`main template
`untitled.dba
`======================
sync on
sync rate 60
load object "cube.dbo",1
set object light 1,1
autocam off
load effect "Normal mapping.dbs",1,0
set object effect 1,1
load image "leather_D.dds",1
load image "leather_N.dds",2
texture object 1,0,1
texture object 1,1,2
set effect technique 1,"DBLight8"
dim lightred(7) as float
dim lightgreen(7) as float
dim lightblue(7) as float
for u = 0 to 7
if u>0 then make light u
lightred(u) = rnd(255)/255.0
lightgreen(u) = rnd(255)/255.0
lightblue(u) = rnd(255)/255.0
make object sphere u+10,10
set object diffuse u+10,rgb(lightred(u)*255,lightgreen(u)*255,lightblue(u)*255)
set object ambient u+10,rgb(lightred(u)*255,lightgreen(u)*255,lightblue(u)*255)
set object emissive u+10,rgb(lightred(u)*255,lightgreen(u)*255,lightblue(u)*255)
NEXT u
position light 0,rnd(100)-150,rnd(100)+50,rnd(100)+50
position light 1,rnd(100)-150,rnd(100)+50,rnd(100)+50
position light 2,rnd(100)+50,rnd(100)-150,rnd(100)+50
position light 3,rnd(100)+50,rnd(100)+50,rnd(100)-150
position light 4,rnd(100)-150,rnd(100)-150,rnd(100)+50
position light 5,rnd(100)-50,rnd(100)-150,rnd(100)+50
position light 6,rnd(100)+50,rnd(100)-150,rnd(100)-150
position light 7,rnd(100)+50,rnd(100)+50,rnd(100)+50
set light range 1,50000
set light range 2,500
set light range 3,100
set light range 4,5000
set light range 5,5000
set light range 6,5000
set light range 7,5000
ambientR as float
ambientG as float
ambientB as float
ambientR = 0.25
ambientG = 0.25
ambientB = 0.25
element = Get Object Effect(1,-1)
null = make vector4(1)
set vector4 1,ambientR,ambientG,ambientB,0
set effect constant vector 1,"AmbientColor",1
for i = 0 to 7
position object i+10,light position x(i),light position y(i),light position z(i)
set vector4 1,light position x(i),light position y(i),light position z(i),light range(i)
set effect constant vector element "LightPos",i,1
set vector4 1,lightred(i),lightgreen(i),lightblue(i),1.0
set effect constant vector element "LightColor",i,1
next i
null = delete vector4(1)
release effect pointer
zz=camera position z()
do
position camera 0,0,0
yrotate camera camera angle y()+mousemovex()
move camera zz
rotate object 1, object angle x(1)+1.00,object angle y(1)+1,object angle z(1)+1.00
sync
LOOP
Edit; In fact there is plenty wrong with my code(ambient instead of ambience for example!!) - suggest you wait on better example from GG though my earlier points are definately worth noting
Edit2; The following is much better, it uses just 6 lights to show clearer more obvious results and is easier to read;
`main template
`untitled.dba
`======================
sync on
sync rate 60
autocam off
load object "cube.dbo",1
load image "leather_D.dds",1
load image "leather_N.dds",2
load effect "Normal mapping.dbs",1,0
set effect technique 1,"DBLight6"
set object effect 1,1
texture object 1,0,1
texture object 1,1,2
dim lightred(5) as float
dim lightgreen(5) as float
dim lightblue(5) as float
lightred(0) = 1.0
lightgreen(0) = 0.0
lightblue(0) = 0.0
lightred(1) = 0.0
lightgreen(1) = 1.0
lightblue(1) = 0.0
lightred(2) = 0.0
lightgreen(2) = 0.0
lightblue(2) = 1.0
lightred(3) = 1.0
lightgreen(3) = 1.0
lightblue(3) = 0.0
lightred(4) = 0.0
lightgreen(4) = 1.0
lightblue(4) = 1.0
lightred(5) = 1.0
lightgreen(5) = 0.0
lightblue(5) = 1.0
for u = 0 to 5
if u>0 then make light u
make object sphere u+10,10
set object diffuse u+10,rgb(lightred(u)*255,lightgreen(u)*255,lightblue(u)*255)
set object ambience u+10,rgb(lightred(u)*255,lightgreen(u)*255,lightblue(u)*255)
set object emissive u+10,rgb(lightred(u)*255,lightgreen(u)*255,lightblue(u)*255)
next u
position light 0,-100,0,0
position light 1,100,0,0
position light 2,0,-100,0
position light 3,0,100,0
position light 4,0,0,-100
position light 5,0,0,100
set light range 1,500
set light range 2,500
set light range 3,500
set light range 4,500
set light range 5,500
set ambient light 100
ambientR as float
ambientG as float
ambientB as float
ambientR = 0.25
ambientG = 0.25
ambientB = 0.25
element = Get Object Effect(1,-1)
null = make vector4(1)
set vector4 1,ambientR,ambientG,ambientB,0
set effect constant vector 1,"AmbientColor",1
for i = 0 to 5
position object i+10,light position x(i),light position y(i),light position z(i)
set vector4 1,light position x(i),light position y(i),light position z(i),light range(i)
set effect constant vector element "LightPos",i,1
set vector4 1,lightred(i),lightgreen(i),lightblue(i),1.0
set effect constant vector element "LightColor",i,1
next i
null = delete vector4(1)
release effect pointer
do
position camera 0,0,0
yrotate camera camera angle y()+mousemovex()
xrotate camera camera angle x()+mousemovey()
move camera -300
sync
LOOP