넷스플릿 한번 되면 기존 토픽 날아가고, 토픽 날아가면 로그 열어서 최근 토픽 확인하고.. 이짓거리가 귀찮아서 만든 스크립트.
채널에 토픽이 변경되면 변경 내용과 변경자, 변경시간을 저장해두는게 주 목적이고,
부가적으로 최근 토픽들을 본다거나, 그 중 하나를 선택해서 토픽을 다시 바꿔준다거나 하는 기능이 있음. GUI로 만들라다가 dialog창 만드는게 귀찮아서 그냥 CUI로 해결.
; Topic Logger ver 0.01
; CopyLeft By Ra! at 2007-04-16
;------------------------------
#topiclogger on
ON *:TOPIC:#:{
var %tpl.fn = " $+ $mircdirtopiclog.ini $+ "
var %tpl.inilen = $ini(%tpl.fn,#,0)
var %tpl.set = $nick $asctime($ctime($fulldate),yyyy-mm-dd hh:mm:dd) $1-
writeini -n %tpl.fn # $calc(%tpl.inilen + 1) %tpl.set
}
#topiclogger end
alias -l tpl.logo {
return $+ $chr(91) $+ $chr(93)
}
alias tpl {
var %tpl.chan = $iif($1 == $null,$active,$1)
var %tpl.fn = " $+ $mircdirtopiclog.ini $+ "
var %tpl.maxlen = 10
var %tpl.inilen = $ini(%tpl.fn,%tpl.chan,0)
var %tpl.repeatend = $iif(%tpl.inilen > %tpl.maxlen,$calc(%tpl.inilen - %tpl.maxlen),1)
echo -a $tpl.logo %tpl.chan 채널의 최근 %tpl.maxlen 개의 토픽
var %i = %tpl.inilen
while (%i >= %tpl.repeatend) {
echo -a $tpl.logo %i : $readini(%tpl.fn,%tpl.chan,%i)
dec %i
}
}
alias tpl.set {
if ($1 == $null) {
echo -a $tpl.logo 사용법 : /tpl.set #채널명 번호
}
else {
if ($1 isnum) {
var %tpl.chan = $iif($2 == $null,$active,$2)
var %tpl.setting = $1
}
else {
var %tpl.chan = $1
var %tpl.setting = $2
}
if ($me isop %tpl.chan) {
var %tpl.fn = " $+ $mircdirtopiclog.ini $+ "
var %tpl.topic = $gettok($readini(%tpl.fn,%tpl.chan,%tpl.setting),4-,32)
topic %tpl.chan %tpl.topic
}
}
}
늘 이런 글을 쓸 때 빠지지 않는 문구가 "나는 컴맹 이지만"입니다. 다들 잘 아시다시피. 역시나 내가 좀 컴맹이긴 하지만 예전에 만들어놓은 소스를 알뽕님이 가지고 계시길래 수정 의뢰도 있고 해서 웁스봇에 최적화시켜서 다시 재구성했습니다. 루프가 2개나 들어간 구버젼으로 드린 GAMMAN-TM님께는 ㅈㅅㅈㅅ.
#타자봇 on ON 타자봇:TEXT:*:#blog:{ var %bot.msg.triger = $strip($1) var %bot.msg.triger.case1 = $chr(42) $+ 문제 $+ $chr(42) var %bot.msg.triger.case2 = $chr(42) $+ 기습!!문제 $+ $chr(42) if (%bot.msg.triger == %bot.msg.triger.case1) || (%bot.msg.triger == %bot.msg.triger.case2) { var %bot.msg.answer = $strip($2-) ;#$%*@^ var %bot.msg.answer = $replace(%bot.msg.answer,$chr(35),$chr(32),$chr(36),$chr(32),$chr(37),$chr(32),$chr(42),$chr(32),$chr(64),$chr(32),$chr(94),$chr(32)) msg # 답 %bot.msg.answer } } #타자봇 end
뭐.. 주석따윈 없습니다. mIRC에서 Alt+R 눌러서 뜨는 Remote 탭에다가 저 내용을 넣고요.. 타자봇이라는 레벨을 설정해야하니, 그 옆에 Users 탭에 가셔서,
타자봇:|Oops-|!~Manu@211.48.20.184
라고 한 줄 넣으시면 됩니다. 그럼 웁스봇에서만 작동되는 타자스크립트 답변 스크립트가 완성.
; 한줄 코멘트 스크립트용 보조 스크립트
; ------------------------------------
; Copyleft By Ra! 2007-03-12
alias cF1 {
; cF1은 Ctrl+F1의 의미임.
; F1부터 F12까지 사용 가능하고,
; c대신 s(Shift), a(Alt)를 넣거나 아무것도 안넣어도 됨.
var %comment.linelen = $cb(0)
var %i = 1
while (%i <= %comment.linelen) {
var %comment.input = %comment.input $+ $chr(124) $+ $chr(124) $+ $chr(124) $+ $cb(%i)
inc %i
}
var %comment.input = $mid(%comment.input,4)
var %comment.limit = 512
; Exceed Flooding을 막기 위해 512byte 이상 입력을 방지.
; 튕겨도 상관 없으면 수치를 적당히 올리셈.
if ($cb(0).len <= %comment.limit) {
msg #blog @한줄 %comment.input
}
else {
echo -a [] 입력하려는 내용이 너무 깁니다.( $calc( $cb(0).len - %comment.limit) $+ Byte 초과)
}
}
적혀진 주석대로, 단축키 바꾸는것도 되고.. XeroIRC같은 스크립트 쓰는 사람도 "@한줄"이라고 시작되는 명령 입력할 수 있고.. 뭐 그런 기능이 있음.
사용방법은 초간단. 입력할 내용을 복사해두고(mIRC에서라면 걍 드래그), 입력한 단축키(기본값은 Ctrl+F1)를 누르면 끝. ㅇㅋ?
주의1) 혹 다른 스크립트에서 Ctrl+F1 같은 기능을 사용하고 있다면, 기능이 겹쳐지게 되니 적당히 수정해서 사용하셈.
주의2) 클립보드의 내용을 그대로 붙이는거니, 엄한거 복사해두었다가 실수로 누르지 말아주셈. 뭐, 보는 사람들이야 ㄳ.
ps. 님들하 ㅈㅅ. 스크립트 테스트도 안하고 올렸더니 캐난감. 내용 바꼈슈.
ps2. 줄바꿈 방법이 바뀌었음. 기존에 사용하시는분은 직접 수정하시거나 irc종료, 덮어씌우기, irc시작 으로 하시거나.. 맘대로 하셈
직접 써본적은 없지만, Mac에는 find 기능이 대단하다고 합니다. 거기다가 프로그램/문서 이름 집어넣으면 실시간 검색으로 아래 결과가 나오죠.
구글데스크탑에도 그런 기능이 있습니다. 종종 쓰고 있습니다만, 아직 손에 익숙하질 않네요.
mIRC에서 이런 비슷한 기능을 구현할 수 있을 법도 해서 한번 만들어봤습니다. 속도 때문에 Recent에서만 검색해 실행하지만, 익숙해지면 유용할 듯 하네요.
;mIRC Script
;call from recent documents ver 0.1
;최근문서에서 불러다가 실행하기 ver 0.1
;By Ra!
;----------------------------------
alias -l cr.echo {
echo -a $chr(91) $+ Cr $+ $chr(93) $1-
}
alias -l cr.fn {
return $remove($nopath($1-),.lnk)
}
alias cr.help {
cr.echo -------------------------------------
cr.echo 최근문서에서 불러다가 실행하기 도움말
cr.echo -------------------------------------
cr.echo 사용방법
cr.echo /cr [검색어]
cr.echo 검색 결과가 2개 이상이라면,
cr.echo 검색 결과물 목록이 번호로 표시됨.
cr.echo /cr [검색 결과에 해당하는 숫자]
cr.echo 의 입력으로 결과 중 한개를 선택
cr.echo -------------------------------------
cr.echo 사용 예
cr.echo /cr hlp
cr.echo /cr 1
cr.echo -------------------------------------
}
alias cr.setdir {
cr.echo -----------------------------------
cr.echo 최근문서에서 불러다가 실행하기 설정
cr.echo -----------------------------------
cr.echo 사용할 경로를 선택하세요.
var %cr.dir = $sdir(C:\)
cr.echo 새로 사용될 경로는,
cr.echo %cr.dir 로 설정되었습니다.
set %cr.directory %cr.dir
}
alias cr {
if (%cr.directory != $null) {
if ($1 == $null) {
cr.echo -----------------------------------
cr.echo 최근문서에서 불러다가 실행하기 오류
cr.echo -----------------------------------
cr.echo 사용 방법에 문제가 있습니다.
cr.help
}
else {
if ($timer(cr).type == online) {
if ($1 isnum ) {
cr.return $1
}
else {
cr.search $1-
}
}
else {
cr.search $1-
}
}
}
else {
cr.echo -----------------------------------
cr.echo 최근문서에서 불러다가 실행하기 오류
cr.echo -----------------------------------
cr.echo 지정된 경로가 없습니다.
cr.echo 경로 지정을 재설정합니다.
cr.setdir
cr.echo -----------------------------------
cr.echo 설정되었으니, 다시 실행해주세요.
cr.echo -----------------------------------
}
}
alias cr.return {
var %cr.file = [ %cr.result [ $+ [ $1 ] ] ]
cr.run %cr.file
}
alias cr.search {
var %cr.match = $chr(42) $+ $1- $+ $chr(42)
var %cr.count = $findfile(%cr.directory,%cr.match,0,1)
if (%cr.count == 0) {
cr.echo 검색 결과가 없습니다.
}
else {
if (%cr.count > 1) {
cr.echo 검색 결과 $+ %cr.count $+ 개
cr.echo ----------------------------
if (%cr.count > 9) {
cr.echo 검색 결과가 너무 많습니다. 상위 9개만 출력합니다.
var %cr.count = 9
}
var %i = 1
while (%i <= %cr.count) {
set [ %cr.result $+ [ %i ] ] $findfile(%cr.directory,%cr.match,%i,1,cr.echo %i : $cr.fn($1-))
inc %i
}
cr.echo ----------------------------
.timercr 1 10 cr.timecancle
}
else {
cr.run $findfile(%cr.directory,%cr.match,1,1)
}
}
}
alias cr.run {
cr.echo [실행] $cr.fn($1-)
run $1-
.timercr off
unset %cr.result*
}
alias cr.timecancle {
cr.echo 시간이 초과되어 검색 결과를 무시합니다.
unset %cr.result*
}
ON *:LOAD:{
cr.echo -------------------------------------
cr.echo 최근문서에서 불러다가 실행하기 설치
cr.help
if (%cr.directory == $null) {
cr.echo 처음 사용하실 때는 recent의 위치를 설정해야합니다.
if ($os isin 9598NTME) {
var %cr.dir = C:\Windows\Recent\
cr.echo Windows $os 이므로, 경로는 자동으로
}
else {
var %cr.dir = C:\Documnets and Settings\ $+ $input(사용자 로그온 이름 입력,eo) $+ \Recent\
cr.echo Windows $os 이므로, 경로는
}
cr.echo %cr.dir 로 설정되었습니다.
}
set %cr.directory %cr.dir
}
입력 방법은 콘솔형입니다. 위 그림은 doc라는 파일명(혹은 확장자)으로 검색한 결과입니다(/cr doc). 8개가 보이네요. 이 결과 중 세번째 것을 실행하려면 /cr 3 이라고 입력하면 실행됩니다. 이때, 10초가 지나면 실행되지 않고 다시 검색을 시작하게 됩니다.