mIRC Homepage
Posted By: r_alien User List - 04/11/05 01:11 PM
Is there a way where i can get a script whenever someone joins or leaves a room (only one room i'm connected to) to write the nicks in the room to a file, with the nicks seperated by a comma or on a new line for each nick (prefeably a comma seperating nicks, but not an INI file) in the file?
Posted By: Riamus2 Re: User List - 04/11/05 02:21 PM
/help on join
/help /write

Individual lines:
Code:
on *:join:[color:red]#yourchannel[/color]: {
  write nicks.txt $nick
}


Commas:
Code:
on *:join:[color:red]#yourchannel[/color]: {
  write -al1 nicks.txt $nick $+ ,
}


Just a warning with using commas on a single line... mIRC doesn't easily deal with really long lines. If this is something that you want mIRC to work with, you'll be much better off using individual lines.
Posted By: r_alien Re: User List - 05/11/05 04:18 AM
OK, i got that, and i just tested the on part and on quit, but i wasn't clear enough last night (it was late at night)

But the script needs to be able to generate the total list of users on a channel at a time when a user, joins, leaves or quits.

Is there an easy way to do that? :P And no mIRC will not be reading the file, a PHP script i will create will be reading it, it is easier to do the comma seperated values in PHP, but a nick on each line could also be done.
Posted By: CraZyHanD Re: User List - 05/11/05 01:58 PM
I have a similiar question. Lets say I added 10 people to the list and I want to show the whole list not one line. How is that possible? And I dont want me or ChanBot to show up on the list.
R Alien: You wuold have to put their names in manually or make a script like:
Code:
on *:Join:#: {
 set $+(%,user.,$nick) 
}
on *:Text:!User List:#: {
/notice $nick <-- and thats far as I got, heh.
Posted By: Kelder Re: User List - 06/11/05 02:07 PM
If you can guarantee there will be less than 40 users (actually 900 / (max nick length) users) Then this will return a list of all nicks on a specified channel
Code:
alias allusers {
  var %chan = $$1, %i = 1, %nicks
  while ($nick(%chan,%i)) { var %nicks = $addtok(%nicks,$v1,44), %i = %i + 1 }
  return %nicks
}
; This will write all users to a new line in the file channellist.txt
on !*:JOIN:#yourchannel: { write channellist.txt $allusers($chan) }
on !*:QUIT:#yourchannel: { write channellist.txt $allusers($chan) }


If the channel is bigger, it gets more difficult:

Code:
alias writeallusers {
  var %file = channellist.txt
  var %chan = $$1, %i = 1, %n = $nick(%chan,0)
  fopen allusers %file
  if ($ferr) { 
    echo -stc info Problem occurred with opening file $+(%",file,")
    fclose allusers
    return
    }
  fseek allusers $file(%file).size
  while (%i < %n) { 
    fwrite allusers $nick(%chan,%i) $+ ,
    if ($ferr) { 
      echo -stc info Problem occurred writing to file $+(%",file,")
      fclose allusers
      return
      }
    inc %i
  }
  fwrite -n allusers $nick(%chan,%i)
  fclose allusers
}
; This will write all users to a new line in the file channellist.txt
on !*:JOIN:#yourchannel:writeallusers $chan
on !*:QUIT:#yourchannel:writeallusers $chan
© mIRC Discussion Forums