A Little Slow, But It Works
Set Display Mode 1024,768,32
`Set Display Mode 800,600,32
`Set Text Size 30
hide mouse
Sync On
Sync Rate 0
Backdrop On
Color BackDrop 0
Dim MessageQueue$(0) as string
Dim messageTimer(0) as integer
Dim MessageColor(0) as integer
Dim MessageUser(0) as integer
Dim MessageSpeed(0) as integer
Global MaxMessages = 10000
Do
For n = 1 to 50 : AddMessage(Rnd(200),Chr$(Rnd(200)),RGB(50,Rnd(255),50),Rnd(50)) : Next n
UpdateMessages(10000)
Sync
Loop
Function AddMessage(Un,s$,Color,Speed)
count = Array Count(messageQueue$(0))
If count = MaxMessages Then RemoveMessage()
Add To Queue MessageQueue$(0)
Add To Queue MessageTimer(0)
Add To Queue MessageUser(0)
Add To Queue MessageColor(0)
Add To Queue MessageSpeed(0)
Last = Array Count(MessageQueue$(0))
MessageQueue$(Last) = s$
MessageTimer(Last) = timer()
MessageColor(Last) = Color
MessageUser(Last) = Un
MessageSpeed(Last) = Speed
EndFunction
Function AddWord(Un,s$,Color,Speed)
For n = 1 To Len(s$)
r = RGBr(Color)+Rnd(20)-5
g = RGBg(Color)+Rnd(20)-5
b = RGBb(Color)+Rnd(20)-5
AddMessage(Un-1+n,Mid$(s$,n),RGB(r,g,b),Speed+Rnd(1))
Next n
EndFunction
Function RemoveMessage()
Remove From Queue MessageQueue$(0)
Remove From Queue MessageTimer(0)
Remove From Queue MessageColor(0)
Remove From Queue MessageUser(0)
Remove From Queue MessageSpeed(0)
endfunction
Function UpdateMessages(delay)
count = array count(messageQueue$(0))
For Un = 1 To 100
For i = 1 to count
If MessageUser(i) = Un
Ink MessageColor(i),0
x = Text Width("__________")+(Un*Text Width("_"))
y = (Timer()/MessageSpeed(i))-(MessageTimer(i)/MessageSpeed(i))
Text x,y,messageQueue$(i)
EndIf : Next i : Next Un
For i = 1 to count
If MessageTimer(i) + delay < timer()
RemoveMessage()
Dec count,1
Dec i,1 : EndIf : Next i
endfunction