정상작동을 위해서는 utf8.dll 파일이 필요하다.
mIRC 6.34에서 정상작동함을 확인하였다.
전투정보실(kr.wowarmory.com)에서 검색하여 IRC상으로 데이터를 뿌려주는것을 기본으로 한다.
스크립트 중간에 변수지정부분에서 글자가 깨진것처럼 보이는것이 있는데,
이것은 UTF-8형식을 CP949 형태로 깨져서 표시되어 그런것이나, 사용상에는 전혀 문제가 없으니 그냥 복사해서 붙일 것.
필자는 WOW에 대해서는 일체 모르므로(플레이 해본적도 없다) 질문은 받지 않음.
; ————————————————————
; | Made by Xeriars |
; | (변경해서 쓰는건 니맘대로지만 이 부분은 지우지 말아주세요.) |
; ————————————————————
on *:text:*:#: {
if ($1 == !와우) {
if (!$2) { msg $chan 사용법 : !와우 캐릭명 서버명 | halt }
if (!$3) { msg $chan 사용법 : !와우 캐릭명 서버명 | halt }
unset %wow.*
set %wow.chan $chan
set %wow.id $2
set %wow.serv $3
set %wow.count 1
sockclose wow
sockopen wow kr.wowarmory.com 80
halt
}
}
on *:input:*: {
if ($1 == !와우) {
if (!$2) { say 사용법 : !와우 캐릭명 서버명 | halt }
if (!$3) { say 사용법 : !와우 캐릭명 서버명 | halt }
unset %wow.*
set %wow.chan $chan
set %wow.id $2
set %wow.serv $3
set %wow.count 1
sockclose wow
sockopen wow kr.wowarmory.com 80
halt
}
}
on *:sockopen:wow*: {
sockwrite -nt $sockname GET /character-sheet.xml?r= $+ $urlencode($dll(utf8.dll,convertutf8,%wow.serv)) $+ &n= $+ $urlencode($dll(utf8.dll,convertutf8,%wow.id)) HTTP/1.1
sockwrite -nt $sockname User-Agent: Mozilla/4.0
sockwrite -nt $sockname Host: kr.wowarmory.com
sockwrite -nt $sockname Connection: Keep-Alive
sockwrite -nt $sockname Accept-Language: ko
sockwrite -nt $sockname $crlf
}
on *:sockread:wow: {
sockread %tmp
set %wow.word1 <a class=”charGuildName”
set %wow.word2 <a href=”character-talents.xml?r=
set %wow.word3 <div class=”bar-container staticTip” onmouseover=”setTipText(
set %wow.word4 <div class=”health-stat”>
set %wow.word5 留덈굹:
set %wow.word6 float: right; margin: 0 0px 0 0;”>
set %wow.word7 <span class=”charLvl”>
set %wow.word8 <a class=”achPointsLink” href=”/character-
set %wow.word9 <span>湲곕젰:
set %wow.word10 <div class=”runic-stat”>
set %wow.word11 <span>遺꾨끂:
set %wow.prefix <span class=”prefix”>
set %wow.error <str id=”armory.labels.nocharacter”>
if (%wow.error isin %tmp) {
msg %wow.chan 존재하지 않는 캐릭터이거나 캐릭터 이전, 유료 캐릭터명 변경 서비스 이용으로 인해 일시적으로 검색이 되지 않는 캐릭터입니다.
msg %wow.chan 캐릭터 이름을 바르게 입력하셨는지 확인하시기 바랍니다. 삭제된 캐릭터는 전투정보실에서 검색할 수 없습니다.
sockclose $sockname
unset %wow.*
halt
}
if (%wow.count == 8) { set %wow.result9 $remove($gettok(%tmp,3,59),</span>) | set %wow.count 1 }
if (%wow.count == 7) { inc %wow.count }
if (%wow.count == 6) { set %wow.result5 $remove($gettok(%tmp,3,59),</span>) | set %wow.count 1 }
if (%wow.count == 5) { inc %wow.count }
if (%wow.count == 4) { set %wow.result4 %wow.result4 $remove($gettok(%tmp,2,62),</b) | set %wow.count 1 }
if (%wow.count == 3) { set %wow.result3 %wow.result3 $remove(%tmp,<span>,</span>,<) | set %wow.count 1 }
if (%wow.count == 2) { inc %wow.count }
if (%wow.word1 isin %tmp) { set %wow.result1 $dll(utf8.dll,convertlocal,$remove($gettok(%tmp,2,62),</a)) }
if (%wow.word2 isin %tmp) { set %wow.result3 %wow.result3 $+ $chr(44) $remove($gettok(%tmp,2,62),</a) | set %wow.count 2 }
if (%wow.word3 isin %tmp) { set %wow.result4 %wow.result4 $+ $chr(44) $remove($gettok(%tmp,4,34),settiptext,’,$chr(40),$chr(41)) | set %wow.count 4 }
if (%wow.word4 isin %tmp) { set %wow.count 5 }
if (%wow.word5 isin %tmp) { set %wow.result6 $remove($gettok(%tmp,3,59),</span>) }
if (%wow.word6 isin %tmp) {
if (%wow.word8 isin %tmp) { set %wow.result7 $remove($gettok(%tmp,3,62),</span) }
else { set %wow.result7 $remove($gettok(%tmp,2,62),</span) }
set %wow.count 100
}
if (%wow.word7 isin %tmp) {
if (%wow.word1 isin %tmp) { set %wow.result2 $remove($replace($gettok(%tmp,4,62), ,$chr(32)),</span) }
else { set %wow.result2 $replace($remove(%tmp,%wow.word7,</span>), ,$chr(32)) }
}
if (%wow.word9 isin %tmp) { set %wow.result8 $remove($gettok(%tmp,3,59),</span>) }
if (%wow.word10 isin %tmp) { set %wow.count 7 }
if (%wow.word11 isin %tmp) { set %wow.result10 $remove($gettok(%tmp,3,59),</span>) }
if (%wow.prefix isin %tmp) { set %wow.pre $dll(utf8.dll,convertlocal,$remove(%tmp,%wow.prefix,</span>)) }
if (%wow.count == 100) {
set %wow.result2 $dll(utf8.dll,convertlocal,%wow.result2)
set %wow.result3 $dll(utf8.dll,convertlocal,%wow.result3)
set %wow.result4 $dll(utf8.dll,convertlocal,%wow.result4)
if (!%wow.result1) { set %wow.result1 없음 }
if (!%wow.result2) { set %wow.result2 정보없음 }
if (!%wow.result3) { set %wow.result3 없음 }
if (!%wow.result4) { set %wow.result4 없음 }
if (!%wow.result7) { set %wow.result7 없음 }
if (%wow.result8) { set %wow.sp %wow.result8 | set %wow.mana 기력 }
if (%wow.result6) { set %wow.sp %wow.result6 | set %wow.mana 마나 }
if (%wow.result9) { set %wow.sp %wow.result9 | set %wow.mana 룬 마력 }
if (%wow.result10) { set %wow.sp %wow.result10 | set %wow.mana 분노 }
msg %wow.chan 아이디 : %wow.pre %wow.id / 서버 : %wow.serv / 캐릭터 : %wow.result2 / 업적 : $comgen(%wow.result7) $+ 점 / 길드명 : %wow.result1
msg %wow.chan 생명력 : $comgen(%wow.result5) / %wow.mana : $comgen(%wow.sp) / 특성 전문화 : $mid(%wow.result3,3) / 전문 기술 : $mid(%wow.result4,3)
msg %wow.chan 원문주소 : http://kr.wowarmory.com/character-sheet.xml?r= $+ $urlencode($dll(utf8.dll,convertutf8,%wow.serv)) $+ &n= $+ $urlencode($dll(utf8.dll,convertutf8,%wow.id))
sockclose $sockname
unset %wow.*
halt
}
}
alias urlencode {
var %i = 0, %r
while (%i < $len($1-)) {
inc %i
%r = %r $+ $chr(37) $+ $base($asc($mid($1-,%i,1)),10,16,2)
}
return %r
}
alias comgen {
if ($1 == $chr(48)) { return $chr(48) | halt }
if (!$1) { return Error | halt }
if ($1 > 0) { var %sign 1 | var %subsnum $len($int($1)) }
if ($1 <= 0) { var %sign 2 | var %subsnum $calc($len($int($1)) – 1) }
var %rev.left = %subsnum
var %tmp = $reverse($int($1),$int($1))
var %point = $mid($calc($1 – $int($1)),3)
var %i 1
while (%i <= %subsnum) {
if ($len($mid(%tmp,%i,3)) == 3) {
var %rev.var = %rev.var $+ $mid(%tmp,%i,3) $+ $chr(44) | var %rev.left $calc(%rev.left – 3)
}
else { var %rev.var = %rev.var $+ $mid(%tmp,%i,%rev.left) }
var %i $calc(%i + 3)
}
if ($mid(%point,1,1) != $chr(46)) { var %point $chr(46) $+ %point }
if (!$mid(%point,2,1)) { var %point $chr(32) }
if ($mid($reverse(%rev.var,%rev.var),1,1) == $chr(44)) {
if (%sign == 1) { return $mid($reverse(%rev.var,%rev.var),2) $+ %point | halt }
if (%sign == 2) { return $chr(45) $+ $remove($mid($reverse(%rev.var,%rev.var),2),$chr(45)) $+ %point | halt }
}
if ($mid($reverse(%rev.var,%rev.var),1,1) == $chr(45)) {
if (%sign == 1) { return $mid($reverse(%rev.var,%rev.var),1) $+ %point | halt }
if (%sign == 2) { return $chr(45) $+ $remove($mid($reverse(%rev.var,%rev.var),1),$chr(45)) $+ %point }
}
else {
if (%sign == 1) { return $reverse(%rev.var,%rev.var) $+ %point | halt }
if (%sign == 2) { return $chr(45) $+ $reverse(%rev.var,%rev.var) $+ %point | halt }
}
}
alias reverse {
var %i = 1, %tmp
while (%i <= $len($1)) {
var %n = $iif($asc($mid($1,%i,1)) > 127,2,1), %tmp = $iif($mid($1,%i,%n) == $chr(32),$!chr(32),$v1) $+ %tmp
inc %i %n
}
return $replace(%tmp,$!chr(32),$chr(32))
}