All pastes #554611 Raw Edit

announcer.mrc

public text v1 · immutable
·published 2007-06-10 06:15 UTC
rendered paste body
/*
/   IRC Announcer edited by Tengu
/   Load it:
/   /load -rs announcer.mrc
/   and follow the directions.
/   Edit the script file 
*/

on *:LOAD:{
  set %tbs_ia_port $$?="Enter the port you want this script to listen: "
  set %tbs_announce_chan  $$?="Enter announce channel name (#channel): "
}

on *:CONNECT: {
  if ( $portfree( %tbs_ia_port ) ) {
    socklisten tbs_ia %tbs_ia_port
  }
  else {
    echo 4Port %tbs_ia_port is not free! Listener not started!
  }
}

on *:DISCONNECT: {
  sockclose tbs_ia
}

on *:SOCKLISTEN:tbs_ia: {
  echo -a $time 4*7*8* 3SiTENAME Connection:2 $sockname - 14incoming connection
  ;--- $sockname stands for the name of the socket, i.e. tbs_ia

  sockaccept tbs_ia_inc $+ $rand(100,999) $+ $ticks
  ;--- This will accept the incoming connection on port %tbs_ia_port,
  ;--- and will name the connection tbs_ia1-999. It can be any number
  ;--- from 100 to 999. Some people, including myself, like to use $ticks
  ;--- in the socket name, as its highly unlikely the script will even
  ;--- try to accept the connection under a sockname that already
  ;--- exists (as compared to $rand). Even better, I use a combination:
  ;--- sockaccept blah $+ $rand(100,999) $+ $ticks.
}

on *:SOCKREAD:tbs_ia_inc*: {
  unset %tbs_announce
  if ($sockerr > 0) return
  ;---The $sockerr identifier will only return a number greater than 0 when an error has occured in the connection.

  :nextread
  sockread %temp
  ;---reads the data coming from the socket

  if ($sockbr == 0) return
  ;---$sockbr returns the number of bytes read by the sockread command. Its a good way to check if you actually read anything
  ;---if i've read all the data, stop

  if (%temp == $null) %temp = -
  set %tbs_announce %tbs_announce %temp
  ;---if there was stuff received from the socket, then echo it

  goto nextread
}

on *:SOCKCLOSE:tbs_ia_inc*: {
  echo -a $time 4*7*8* 3SiTENAME Connection:6 $sockname - 14closed connection
  msg %tbs_announce_chan %tbs_announce
  unset %tbs_announce
}