Originally Posted By: Riamus2
Here's one that will do that as well. If someone leaves the channel (part/quit), they lose their spot. Only ops can use !next/!done and the script will do what you asked for those commands.

** Replace all occurences of #chan with your channel name.

Code:
on *:join:#chan: {
  write joinlist.txt $nick
}

on *:part:#chan: {
  if ($read(joinlist.txt,w,$nick)) { write -dl $readn joinlist.txt }
}

on *:quit: {
  if ($read(joinlist.txt,w,$nick)) { write -dl $readn joinlist.txt }
}

on *:text:!next:#chan: {
  if ($nick isop $chan) {
    if ($lines(joinlist.txt) == 0) { msg $chan No users waiting for help. | return }
    set %help.next $read(joinlist.txt,1)
    while (%help.next !ison $chan) {
      write -dl1 joinlist.txt
      if ($lines(joinlist.txt) == 0) { msg $chan No users waiting for help. | return }
      set %help.next $read(joinlist.txt,1)
    }
    mode $chan +v %help.next
    msg $chan %help.next $+ , how may we help you?
  }
}

on *:text:!done:#chan: {
  if ($nick isop $chan) {
    if (%help.next ison $chan) { ban -ku10 $chan %help.next }
  }
}


It works but if someone already have op


[16:30:58] [Join-#help] Tombraider
[16:30:58] [Mode-#help] ChanServ +o Tombraider
[16:44:13] [Join-#help] gast
[16:46:03] @BigSmoke : !next
[16:46:03] <@VoiceBot> Tombraider, how may we help you?
[16:46:03] [Mode-#help] VoiceBot +v Tombraider
[16:46:08] @BigSmoke : !next
[16:46:08] <@VoiceBot> Tombraider, how may we help you?
[16:46:09] @BigSmoke : !next
[16:46:09] <@VoiceBot> Tombraider, how may we help you?

but he leaves gast (and Tombraider is op) zo why he give him voice