2. Why are you evaling the function call?
Err, it's not just that he's evaling the function call, it's that he's evaling the returned value of the function call. TQS-defined functions auto return the last line which would be the schedule applied to the last client. So you'd be running
eval( some number ); which would just syntax error. It makes no sense.
Speaking of making no sense, I have no idea what your
getRandomClient() function is trying to do. Its name implies that it, well, returns a random client. Cool.
return ClientGroup.getObject(getRandom(0, clientGroup.getCount()-1));. Your version seems to, for some reason, get as many random clients as there are on the server (note: it's totally possible that it'll get the same client every single time since it gets a new random one each iteration) and then schedules it to be sent 'hi' after a second.