on *:text:!s_hitlist:*:{
.hsave s_hit.hsh s_hit.hsh.tmp
.play #ops_channel s_hit.hsh.tmp
}
on *:playend:{
if $filename == s_hit.hsh.tmp {
.remove s_hit.hsh.tmp
}
}
You could also do this using a loop, but if there are a lot of entries, then the code could flood the channel or server.
Using a timer can get around the flooding problem, but then you can have a very long wait if you have a lot of entries.
Eg: If you had 1000 entries, most networks would kick you off for flooding since my experiments show about 1.5 seconds for 1000 entries (I tested this on a special network where I can not be kicked from the network).
Therefore 1000 lines in 1.5 seconds is far faster than most networks will allow.
Using a timer to get around this, makes the delay about 1000 seconds by the time you get to the last entry. That's 16 minutes 40 seconds from the 999th entry to the 1000th entry.
Far too long for most people to want to wait.
The code I have suggested, will show the information with a 1 second delay between messages.
Please change #ops_channel to the actual name of the channel, and ensure that your hash table is called s_hit.hsh
It is common for a scripter to use s_hit.hsh as the saved file name for a table called s_hit, so please double check this before using my code, as that will also have to be changed if it doesn't match.