The Elder Scroll4 – Oblivion G.O.T.Y

열흘 전쯤인가, 엘더스크롤4 오블리비언 GOTY (Game Of The Year) edtion이 재발매 된다는 소식을 들었다.
06년도쯤에 나온 게임인데, 엄청난 자유도를 자랑하는 게임으로써 널리 알려졌지만 당시에는 큰 주목을 받지 못했는지
일찍 절판이 되버리고, 나중에 와서야 품귀 현상에 시달리게 되었다.그러다가 재발매 된다는 소식을 듣고 잽싸게 구매해버린 오블리비언 GOTY



뾱뾱이에 담겨져 있다. 이걸 벗기는(?) 것 순간이 가장 즐겁다.

옆에 있는것은 동봉된 물건으로써 예판 특전으로 주어진 마우스 패드다. 오블리비언 세계의 지도가 나와있다. (왼쪽 옆에 박스로 또 나와있는곳은 쉬버링 아일즈)

적절한 오블리비언 콜렉션

왼쪽부터 순서대로
Oblivion  – GOTY Edtion (국내판)
Oblivion – Collector’s Edtion (북미판)
Oblivion Expansion Pack – Shivering Isles (북미판)

모두 밀봉으로 소장중~~
개봉 시기는 언제쯤으로 할까나~

서든어택 전적 검색 스크립트

적용법
1. 챗창에 //echo -a $mircdir 라고 치고 엔터를 치면, 현재 스크립트를 어디다 저장해야 하는지 경로가 나온다.
2. 아래의 내용을 복사해서 메모장에 넣고 sudden.mrc로 저장한 후 해당 경로로 이동하여 방금 만든 파일을 넣는다.
3. 다시 챗창에 와서 /load -rs sudden.mrc 라고 친 후 앤터.
4. Usage : !서든 아이디명 (ex : !서든 xeriars)

출력결과의 예 :

[12:46:21] <@Xeriars> !서든 Xeriars
[12:46:21] <@Zod> 아이디 : Xeriars / 순위 : 8,941,712위 (▼ 1884) / 계급 : 상병 / 클랜 : 없음 / 경험치 : 22,469 / 게임포인트 : 279
[12:46:21] <@Zod> 킬데스 : 694 / 943(42%) / 전적 : 97전 45승 0무 52패 / 헤드샷 : 116회 / 승률 : 46% / 보유중인 주 무기 : SCOUT SR-69, SMG U101, M16

아래부터가 스크립트의 시작…

; ————————————————————
; | Made by Xeriars                                                               |
; | (변경해서 쓰는건 니맘대로지만 이 부분은 지우지 말아주세요.)  |
; ————————————————————

on *:text:*:#: {
if ($1 == !서든) {
if (!$2) { msg $chan Usage : !서든 아이디명 | halt }
unset %sda.*
set %sda.chan $chan
set %sda.id $2
set %sda.count 1
sockclose sattack
sockopen sattack suddenattack.netmarble.net 80
halt
}
}

on *:sockopen:sattack: {
sockwrite -nt $sockname GET /Ranking/Total/ninc_Search.asp?id=&pagegu=index&Condition=2&p_userid= $+ $urlencode(%sda.id) HTTP/1.1
sockwrite -nt $sockname User-Agent: Mozilla/4.0
sockwrite -nt $sockname Host: suddenattack.netmarble.net
sockwrite -nt $sockname Accept-Language: ko
sockwrite -nt $sockname Accept: */*
sockwrite -nt $sockname Connection: Keep-Alive
sockwrite -nt $sockname $crlf
}
on *:sockread:sattack: {
sockread %tmp
set %sda.word <td colspan=”5″ style=”color:#82A3A3″><a href=”javascript:GetSaInfo_new
set %sda.word2 <td width=”122″ style=”color:#82A3A3″>
set %sda.word3 <td width=”89″>
set %sda.word4 <td width=”184″>
set %sda.remove $eval(%2Franking%2FPopUp%2FSaGameInfo%2Easp%3FUserID=,0)
set %sda.error private_nosearch01.gif

if (%sda.word isin %tmp) { set %sda.userid $remove($gettok($replace(%tmp,$eval(%3d,0),=),2,39),%sda.remove) }
if (%sda.word2 isin %tmp) {
set %sda.rank $replace($remove(%tmp,<img src=http://c3.img.netmarble.kr/web/2005_cp/img/suddenattack_v2/common/bl/,$chr(9),%sda.word2,02.gif,01.gif,align=’absmiddle’><span class=’blue p11′>,</td>,</span>),down_arrow ,▼,up_arrow ,▲)
}
if (%sda.word3 isin %tmp) { set %sda.grade $remove($gettok(%tmp,3,62),</td) }
if (%sda.word4 isin %tmp) {
set %sda.guild $remove($gettok(%tmp,4,62),</a)
if (!%sda.guild) { set %sda.guild 없음 }
sockclose sda
sockopen sda suddenattack.netmarble.net 80
sockclose $sockname
}
if (%sda.error isin %tmp) {
msg %sda.chan 해당 플레이어의 정보를 찾을 수 없습니다. 아이디를 다시 한번 확인해주시기 바랍니다.
sockclose $sockname
unset %sda.*
}
}
on *:sockopen:sda: {
sockwrite -nt $sockname GET /ranking/PopUp/SaGameInfo.asp?UserID= $+ %sda.userid HTTP/1.1
sockwrite -nt $sockname User-Agent: Mozilla/4.0
sockwrite -nt $sockname Host: suddenattack.netmarble.net
sockwrite -nt $sockname Accept-Language: ko
sockwrite -nt $sockname Accept: */*
sockwrite -nt $sockname Connection: Keep-Alive
sockwrite -nt $sockname $crlf
}
on *:sockread:sda: {
sockread %tmp
set %sda.pword suddenattack_v2/ranking/pop_txt04.gif”></td>
set %sda.pword2 suddenattack_v2/ranking/pop_txt05.gif”></td>
set %sda.pword3 suddenattack_v2/ranking/pop_txt07.gif” style=”margin-left:1px;”></td>
set %sda.pword4 suddenattack_v2/ranking/pop_txt08.gif” style=”margin-left:1px;”></td>
set %sda.pword5 suddenattack_v2/ranking/pop_txt09.gif” width=”98″ height=”12″ style=”margin-left:1px;”></td>
set %sda.pword6 suddenattack_v2/ranking/pop_txt10.gif” width=”98″ height=”12″ style=”margin-left:1px;”></td>

if (%sda.count == 2) { set %sda.exp $remove(%tmp,<td>,</td>,$chr(9)) | set %sda.count 1 }
if (%sda.count == 3) { set %sda.point $remove(%tmp,<td>,</td>,$chr(9)) | set %sda.count 1 }
if (%sda.count == 4) { set %sda.killed $remove(%tmp,<td>,</td>,$chr(9),&nbsp;) | set %sda.count 1 }
if (%sda.count == 5) { set %sda.record $remove(%tmp,<td>,<strong>,</strong>,&nbsp;,<span style=”color:#CC3300″>,</span>,<span style=”color:#0066CC”>,</td>,$chr(9)) | set %sda.count 1 }
if (%sda.count == 6) { set %sda.headshot $remove(%tmp,<td>,</td>,$chr(9)) | set %sda.count 1 }
if (%sda.count == 7) { set %sda.ratio $remove(%tmp,<td>,</td>,$chr(9)) | set %sda.count 100 }

if (%sda.count == 100) {
sockclose sdat
sockopen sdat suddenattack.netmarble.net 80
sockclose $sockname
}

if (%sda.pword isin %tmp) { set %sda.count 2 }
if (%sda.pword2 isin %tmp) { set %sda.count 3 }
if (%sda.pword3 isin %tmp) { set %sda.count 4 }
if (%sda.pword4 isin %tmp) { set %sda.count 5 }
if (%sda.pword5 isin %tmp) { set %sda.count 6 }
if (%sda.pword6 isin %tmp) { set %sda.count 7 }
}
on *:sockopen:sdat: {
sockwrite -nt $sockname GET /Item/GInventory_Ranking.asp?UserID= $+ %sda.userid HTTP/1.1
sockwrite -nt $sockname User-Agent: Mozilla/4.0
sockwrite -nt $sockname Host: suddenattack.netmarble.net
sockwrite -nt $sockname Accept-Language: ko
sockwrite -nt $sockname Accept: */*
sockwrite -nt $sockname Connection: Keep-Alive
sockwrite -nt $sockname $crlf
}
on *:sockread:sdat: {
sockread %tmp
set %sda.aword <td align=”center” bgcolor=”0B1D1A” class=”w02″
set %sda.end <td width=”124″> &nbsp; </td>
if (%sda.aword isin %tmp) { set %sda.weapon %sda.weapon $+ $chr(44) $gettok($gettok(%tmp,2,62),1,60) }
if (%sda.end isin %tmp) {
timeoutoff
msg %sda.chan 아이디 : %sda.id / 순위 : %sda.rank / 계급 : %sda.grade / 클랜 : %sda.guild / 경험치 : %sda.exp / 게임포인트 : %sda.point
msg %sda.chan 킬데스 : %sda.killed / 전적 : %sda.record / 헤드샷 : %sda.headshot / 승률 : %sda.ratio / 보유중인 주 무기 : $mid(%sda.weapon,3)
sockclose $sockname
unset %sda.*
}
}

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
}

WOW 캐릭터 정보 검색 스크립트

정상작동을 위해서는 utf8.dll 파일이 필요하다.

utf8.zip

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 留덈굹:&nbsp;&nbsp;
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>湲곕젰:&nbsp;&nbsp;
set %wow.word10 <div class=”runic-stat”>
set %wow.word11 <span>遺꾨끂:&nbsp;&nbsp;
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),&nbsp;,$chr(32)),</span) }
else { set %wow.result2 $replace($remove(%tmp,%wow.word7,</span>),&nbsp;,$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))
}

YS Seven

귀축왕 아돌(!?)의 여섯번째 이야기. 그리고 아돌의 3대모험(사라진 고대 왕국 이스, 알타고의 오대룡, 셀세타의 수해)중
하나인 알타고의 내용을 다룬 내용의 이스7이다.역대 이스 타이틀을 살펴보면 (기종 무시)

이스 오리진
이스1 – 사라진 고대 왕국 이스
이스2 – 사라진 고대 왕국 이스 파이널 챕터
이스3 – (신)페르가나의 맹세, (구) Wanderer from YS
이스4 – (PCE)The Dawn of YS, (SFC)태양의 가면 – 셀세타의 수해
이스5 – 잃어버린 모래 도시 케핀
이스6 – 나파쉬팀의 방주 로 구성되어 있다. (기종은 하도 많아서 패스..)

발매전에 공개된 이스7의 일러스트는 오덕들에 의해서 엄청나게 까였는데 (나의 아도루쨩은 이렇지 않다능!! 등등) 그 여파때문인지 대대적인 일러스트의 수정이 이루어졌다.

아무튼 말도 많고 탈도 많은 이 타이틀을 8월말에 주문하여 오늘에서야 손에 쥘 수 있게 되었다.
드라마시디 동봉판(=한정판)은 너무 비싼관계로 (일본어도 잘 모르고;;) 패스하고
팔콤판/일반으로 주문하였는데 괜춘한듯 하다.

총 구성품은

이스7 UMD
이스7 OST MINI
이스 뮤직 히스토리
영웅전설7 극비설정화집 으로 구성되어 있다.



아직 비닐도 안벗긴 그것. 다만 영전7 극비설정집은 그냥 열어볼수 있게 되어있다. 비닐처리도 안된듯;
작년부터 이미 이스7이 나온다고 기다렸으니 일년은 기다린듯 하다.

UMD 케이스의 앞면. 적절히 심플하다. 배경으로 보이는 용의 화석이 인상적인듯.
그리스 문자인 Zeta가 맘에 든다.



UMD 케이스 뒷면. 15세 이용가이며(이스 1&2는 12세 이용가) 엑스트라 스킬, 파티 플레이, 아이템의 합성 등등의 게임 특징에 대해서 문구가 나와있다.



이번 이스7의 예약특전1로 주어진 영웅전설7의 극비설정화집
어떤이는 이스는 별로인데 이 예약특전때문에 구매하는 사람도 있을정도다.
일본어가 거의 까막눈이긴 하나(한자.. 너무 어려워!!) 그림이라서(?) 보기는 편하다.

전부를 보여줄순 없고. 살짝 한장만 샷샷.

영전7 화집의 뒷면이다.

아까 맨처음에 구성품 목록으로 이스 뮤직히스토리랑 Ys Seven ost mini가 어딨느냐는 의문이 생길터인데,
비닐 뜯기 싫어서 이렇게 붙어있다는것을 증명하는 샷을 올린다.



Ys Music History는 21번트랙까지 알찬 구성으로 되어있다. 옆에는 역대 여인네들이 모두 나오는듯.

아돌이 공략에 성공한 캐릭터도 있고, 성공하지 못한 캐릭터 (레아, 엘레나. 레아의 경우는 오리진에서 보면 러브 스토리가 나오고, 엘레나는 지독히 오빠만 좋아하는듯)도 있다.

아무튼 멋진 타이틀!

Diablo II – Sound Track





중3말부터 스물한살 막 되서 중국가기 전까지 3년이상 즐겼던 그 게임.

인터넷에서 약간의 수량이 풀렸을때는 소식을 몰라서 못구하고.. (원래는 한정판에만 동봉 되어있었음)
한정판은 돈이 쪼들려서 못구하고.. -_- (지금 구하려고 해도 꽤 비쌈)

그래서 거의 포기하고 있을 무렵, 항상 눈팅을 즐겨하는 게임클래식 (http://cafe.naver.com/gamepole.cafe) 이라는 카페에서 매물이 5000원에 뜬걸 보고 잽싸게 직거래로 구매하게 되었다.

싼가격에 디아블로 세계관의 음울한 분위기와 함께 웅장한 음감이 일품인 게임상의 음악을 듣게되어 만족하는중..

내년쯤 디아블로3이 나온다니 또 다시 기대해보아야겠다.

카발 종합 계산기



C_calc

VB6KO

(클릭시 다운로드 가능)

(vb6ko.dll 파일이 없다고 출력되는 경우 C:windowssystem32 에 위 파일을 넣을 것)

퍼갈때는 반드시 어디로 퍼가는지 댓글에 남겨주시고, 출처를 표시하시기 바랍니다.

2009. 8. 22. 업데이트 사항
– 글자색 확인기능 추가
– 패널티 계산기능 추가
– 누적 데미지 계산 기능 중, 단위시간과 데미지의 관계에 오류가 있던 사항을 수정
– 누적 데미지 계산 기능 중, 출력 데이터의 변경.
– 명예등급의 데이터 수정 (17등급 이후로는 데이터가 명확하지 않아 수열을 통해 추정치로 대체)
– 스텟 계산기능 중, 일부 직업에서 특정 스텟이 비정상적으로 상승,하강되던 문제를 수정2009. 8. 12. 업데이트 사항
– 누적 데미지 계산 기능 추가
– 누적데미지 계산 기능 중 데미지 계산을 “쿨타임”기준에서  “시전시간”기준으로 변경
– 명예 등급 계산 추가
– 스킬 비용 계산 기능의 스킬 가격이 제대로 표시되지 않던 문제 수정
– 스킬 비용 계산 기능에서 일부 스킬이 빠져있던 문제 수정
– 데미지 계산기능 중 “크확적용누적평균데미지” 추가
– 명예등급 풀다운 매뉴에 중복된 명예등급이 들어있던 문제를 수정
– 누적 데미지 계산 중 0,-,= 번 스킬의 사용횟수 결과가 10,11,12로 출력되던 문제를 수정

2009. 8. 6. 업데이트 사항
– 스텟 계산 기능 추가

2009. 8. 5 업데이트 사항
– 스킬을 배우는데 필요한 금액이 계산 가능하도록 기능 추가
– 폼이 제대로 언로드 되지않아 프로그램을 종료해도 프로세스상에 계속 상주하고 있는 문제 해결.

일단은 데미지 계산과 피흡량을 계산하는 목적으로 만들었다.
더 많은 옵션을 추가하고 싶으나 아직 아이디어도 별로 떠오르지 않고, 입수된 공식도 없다.

데미지 계산을 위해서는 “패널티”라는 개념이 사용되는데, 필요한 변수는 몬스터 레벨, 케릭터의 레벨, 몬스터의 방어 이 3가지가 필요하다. 몬스터 레벨 자료는 아래의 자료를 참고하면 되는데 몬스터의 방어를 알아내기가 까다롭다.
정확한 자료는 차후에 업데이트 하면서 다시 올릴 예정!
– 업데이트됨

문의사항은 블로그 댓글이나 카발 머큐리서버에서 “대좌” 를 찾을 것.몬스터 레벨 참고 자료

Lv Monster HP
1 니퍼러그 65
1 갈리 65
1 맨티스 65
3 래비트혼 104
3 자이언트 비틀 104
3 트로글로 104
5 스코러그 143
5 레드 갈리 143
5 트로글로 파이터 143
6 스코러그+ 326
7 링스혼 182
7 갈리 캡틴 127
7 엘더 트로글로 127
9 좀비 메이드 221
9 데저트 폭스 221
9 트로글로 워리어 221
12 좀비 215
12 데저트 하운드 280
12 다이어 보어 280
15 링스혼 좀비 338
15 자이언트 스네이크 338
15 플랜트 토드 338
18 휴즈 비틀 397
18 버그자드 397
20 링스혼 좀비 리더 436
21 아르마쿠 455
21 팬서혼 455
23 아르마쿠+ 988
23 하이자드 988
24 블랙 스네이크 1028
24 버그맨더 514
24 플랜트 팬서혼 514
24 자이언트 스파이더 514
27 스켈레톤 572
27 머미 572
30 스켈레톤 워리어 631
30 머미 블레이더 631
30 휴즈 스파이더 631
31 스켈레톤 메이지 455
31 머미 워리어 650
34 바바야가 496
34 알키오니스 709
37 하운드 좀비 767
37 아키테릭스 767
40 팬서혼 좀비 826
40 클레이 가고일 826
40 모스커터 826
40 아키테릭스+ 1652
41 에이프 845
44 에이프 좀비 904
44 비터리프 904
44 모스커터+ 1808
45 에이프+ 1846
47 모스사이더 962
50 고스트 1021
50 앤트라러그 715
50 리글리프 1021
51 크랙 터틀 874
52 크랙 크랩 1271
53 크랙 토드 1295
54 페리톤 1318
55 고스트+ 2684
56 버그샤크 1365
57 버그돌피 1388
58 스톤 가고일 1412
59 구울 1435
59 페리톤+ 2870
60 쉐이드 1021
60 러그 퀸 1459
60 모스커터 퀸 1459
61 팬텀 워커 1037
61 버그샤크+ 2964
62 팬텀 크루 1054
63 플레임 하운드 1529
64 다크 솔져 1552
65 오토캐논-Op 1103
67 스톤 골렘 1622
67 하운드 S-01 1622
70 다크 블레이더 1693
70 메카 에이프 1693
70 오토캐논-Op+ 3386
72 메카 에이프 아쳐 1420
72 하운드 Sp 4058
75 메카맨더 1478
75 메카 에이프+ 4222
77 메카 버팔로 2166
77 메카 에이프 아쳐+ 4332
80 일렉트릭 버드 1574
80 메카맨더+ 4496
82 메카 버팔로+ 5262
83 메카자드 2662
85 일렉트릭 버드+ 5450
87 오토캐논-Ex 1951
88 메카자드+ 5636
91 라이혼 좀비 2912
92 오토캐논-Ex+ 5886
96 고스트 블레이더 2148
96 라이혼 좀비+ 6136
99 익스커베이터-알파 6324
100 오크 19158
100 부르크(오크) 38316
101 좀비 파이터 3224
101 고스트 블레이더+ 6448
101 블러디 라이혼 좀비 6448
101 샌드 라이혼 3224
103 오크 메이지 19716
106 좀비 슬래터 3380
106 좀비 파이터+ 3380
106 고스트 어쌔신 6760
106 베놈 토드 81120
106 라이호나 3380
108 라다크(오크 메이지) 41304
109 그레이 오크 20844
111 좀비 나이트 3536
111 좀비 슬래터+ 3536
111 좀비 워리어 7072
111 그리폰 7072
112 그레이 오크 메이지 21402
114 지다쉬(오크) 43560
115 레이크 자드 21966
115 아이스 좀비 하운드 21966
116 버서크 구울 3692
116 좀비 나이트+ 3692
116 좀비 슬레이어 7384
116 블레이드 페리톤 7384
117 파쉬크(그레이 오크 메이지) 44676
118 놀 22524
119 포가르(그레이 오크) 45432
120 발루(레이크 자드) 45804
121 뱀파이어 서번트 3848
121 버서크 구울+ 7696
121 좀비 프라임 나이트 7696
121 놀 메이지 23088
121 아이스 바바야가 21966
124 브레이브 놀 23652
126 데스 솔져 4004
126 뱀파이어 서번트+ 8008
126 퓨리우스 구울 8008
126 피라우로(놀 메이지) 48048
127 브레이브 놀 메이지 24210
127 아이스 좀비 레이디 21966
127 스크리머 10983
127 아이스 구울 10983
127 아그리야(아이스 바바야가) 43932
130 트롤 24774
131 데스 자이언트 4160
131 데스 솔져+ 8320
131 뱀파이어 스튜어드 8320
131 하크(놀) 49920
132 레히피(브레이브 놀 메이지) 50292
133 하피 슬레이브 25332
133 아이스 구울 워리어 21966
133 크림슨 배트 10983
133 아넬리온(아이스 좀비 레이디) 43932
135 에르그두수(트롤) 51420
136 스펙터 3021
136 데스 자이언트+ 8632
136 데스 서전트 8632
136 하피 워리어 25896
136 프로즌 좀비 왓쳐 21966
138 에투르(하피 슬레이브) 52536
139 크루얼 하피 슬레이브 26460
139 블러디 배트 21966
139 뷔쉐크라(아이스 구울 워리어) 43932
141 레이스 3130
141 스펙터+ 4472
141 데스 자이언트 캡틴 8944
141 카쉬나르(하피 워리어) 53664
142 크루얼 하피 워리어 27018
145 오우거 27582
145 프로즌 좀비 파이터 21966
145 레트투스(블러디 배트) 43932
146 엘더 스펙터 9256
147 리크(크루얼 하피 워리어) 55908
148 미노타우루스 28140
150 좀비 워해머 왓쳐 21966
150 좀비 워해머 10983
150 좀비 워액스 왓쳐 21966
150 좀비 워액스 10983
150 좀비 크러쉬 왓쳐 21966
150 좀비 크러쉬 10983
150 하쉬나크(오우거) 57036
150 그리쉬나크(오우거) 57036
151 프로즌 좀비 슬래터 21966
151 프로즌 스톤 골렘 21966
151 엑시언 스톤 골렘 43932
151 피어스 좀비 하운드 43932
151 프로즌 워리어 43932
157 프로즌 좀비 나이트 21966
157 프로즌 슬레이어 43932
160 좀비 워해머 캡틴 43932
160 좀비 워액스 캡틴 43932
160 좀비 크러쉬 캡틴 43932
163 프로즌 프라임 나이트 43932
163 플레시 골렘 43932
165 웨어울프 87864
165 페르츠 폰 자텔레르안 87864
168 지그드리스 파엘로(미노타우루스) 127536
170 좀비 제네럴 87864
174 리버스 페르츠 폰 자텔레르안 87864
175 메르가헤프 87864

데미지 계산공식 출저 :
http://www.playforum.net/cabal/board.comm?action=read&iid=10452003&pageNo=3&num=2412&query=%EB%8D%B0%EB%AF%B8%EC%A7%80&field=all
몬스터 레벨 자료 출저 :
http://cabal.g-report.com/bbs/board.php?bo_table=cabal_tip&wr_id=888&sca=&sfl=wr_subject&stx=%B7%B9%BA%A7&sop=and

Ys 1&2 Chronicles 도착!

5월달에 이미 나온다는 소식을 듣고 구매대행 사이트에서 통신예약으로 주문하였다.
7월 16일날 발매한다는걸 두달이나 기다린 셈..
아무튼 17일날 발송한것이 일본에서 우리집으로 오늘에서야 도착하게 되었다.



개인적인 인적사항은 현피가 두려워 삭제한다………;;;



겉표지를 벗긴 사진.
물건을 주문했을때 보통 이런 뾱뾱이로 감겨있는데, 이 뾱뾱이를 벗기는(!?) 순간에 묘한 기쁨을 느낀다.



드디어 내용물이 보인다.



내용물은 3가지
1. 이스 1&2 클로니클즈 (기본) – UMD
2. 이스 1&2 베스트 사운드 콜렉션 (예약한정특전) – 음악 CD
3. 이스 1&2 OST mini (팔콤통판특전) – 음악시디



이스 1&2 베스트 사운드 콜렉션에 수록된 곡의 목록이다. 좋아하는곡도 있고, 이스6 구매시 받은 메모리얼 사운드에 있던 곡과 중복되는 곡도 몇곡 보인다.

이스 1&2 OST mini에 수록된 곡은 시디에 프린팅 되어있어서 잘 보이지 않아서 직접 아래에 타이핑 해두었다.

1. Battle Ground
2. Protectors
3. Palace
4. Palace of destruction
5. Moat of burnedbless
6. Palace of Salmon
7. Feena
8. To make the end of battle

NDSL용으로 이스 DS가 나왔을 때, PSP유저로써 상당히 부러웠었는데 이렇게 PSP용으로 나와줘서 너무나 좋다.
이스 1&2 완전판을 기본 베이스로 깔고 있으며 음악이 리메이크 되었고 일러스트도 클로니클 모드에선 새로운 일러스트로 나온다. (오리지널/클로니클 모드 선택가능)

이스 완전판이 PC용으로 나왔음에도 이것을 구매한 첫번째 이유는 PSP의 기동성, 두번째 이유는 음반이다.. -_-;

9월 16일날 이스 7이 발매된다는데, 드디어 아돌의 3대 모험(사라진 고대 왕국 이스, 셀세타의 수해, 알타고의 오대룡)의 완결작, 알타고의 오대룡을 다룬 이야기가 나온다니

또 다시 질러보자! (이번에도 지르는 이유중에 하나가 특전으로 음반이….)

Youtube 검색 스크립트

꽤 오래전에 만든 스크립트인데 이제서야 공개하게 되었다.
단, $mircdir 에 utf8.dll 파일이 필요하니 첨부파일을 다운로드 할것.

이 스크립트를 가져다 쓸 사람은 아래부터 복사해서 쓰면 된다. (mIRC 6.3 에서 정상작동 확인함)

; ————————————————————
; | Made by Xeriars                                                               |
; | (변경해서 쓰는건 니맘대로지만 이 부분은 지우지 말아주세요.)  |
; ————————————————————
on *:text:*:#: {
    if ($1 == @유튜브) {
      if (!$2) { msg $chan Usage : @유튜브 검색어 | halt }
      unset %youtube.*
      set %youtube.chan $chan
      set %youtube.word $2-
      set %youtube.url $urlencode($dll(utf8.dll,convertutf8,%youtube.word))
      set %youtube.count 1
      set %youtube.nick $nick
      sockclose youtube
      sockopen youtube www.youtube.com 80
      halt
    }
}

on *:sockopen:youtube*: {
  sockwrite -nt $sockname GET /results?search_type=&search_query= $+ %youtube.url $+ &aq=f HTTP/1.1
  sockwrite -nt $sockname User-Agent: Mozilla/4.0
  sockwrite -nt $sockname Host: www.youtube.com
  sockwrite -nt $sockname Connection: Close
  sockwrite -nt $sockname $crlf
}
on *:sockread:youtube: {
  sockread %tmp
  set %youtube.search0 약 <strong>
  set %youtube.search0 $dll(utf8.dll,convertutf8,%youtube.search0)
  set %youtube.search1 <div class=”v120WideEntry”><div class=”v120WrapperOuter”>
  set %youtube.search2 class=”video-description”>
  set %youtube.search3 <button class=”master-sprite ratingVS ratingVS-
  set %youtube.search4 class=”video-date-added”>
  set %youtube.search5 class=”video-view-count”>
  set %youtube.search6 <span class=”video-username”>
  set %youtube.error <div style=”margin-top: 10px”><span
  set %youtube.error2 icn_cycds_warning-vfl33982.gif

  if (%youtube.count == 2) {
    set %youtube.describe $dll(utf8.dll,convertlocal,$replace($remove(%tmp,$chr(9)),<b>,,</b>,))
    set %youtube.count 1
  }

  if (%youtube.error isin %tmp) {
    msg %youtube.chan ” $+ %youtube.word $+ ” 의 검색결과가 존재하지 않습니다.
    sockclose $sockname
    unset %youtube.* 
  }
  if (%youtube.error2 isin %tmp) {
    msg %youtube.chan ” $+ %youtube.word $+ ” 의 검색결과가 존재하지 않습니다.
    sockclose $sockname
    unset %youtube.* 
  }
  if (%youtube.search0 isin %tmp) {
    set %youtube.amount $remove($gettok(%tmp,1,47),%youtube.search0,<,$chr(9))
  }
  if (%youtube.search1 isin %tmp) {
    set %youtube.id $remove($gettok(%tmp,8,34),$chr(9),video-url-)
    set %youtube.video http://www.youtube.com/watch?v= $+ %youtube.id
    set %youtube.subject $dll(utf8.dll,convertlocal,$remove($gettok(%tmp,14,34),$chr(9)))
  }
  if (%youtube.search3 isin %tmp) { set %youtube.ratio $gettok(%tmp,4,34) $+ 점 }
  if (%youtube.search4 isin %tmp) { set %youtube.added $dll(utf8.dll,convertlocal,$remove($gettok(%tmp,5,34),</span>,>)) }
  if (%youtube.search5 isin %tmp) { set %youtube.vcount $remove($dll(utf8.dll,convertlocal,$remove($gettok(%tmp,5,34),</span>,>)),조회,수,$chr(32)) }
  if (%youtube.search6 isin %tmp) { set %youtube.user $remove($gettok(%tmp,9,34),</a>,</span>,>) | set %youtube.count 77 } 
  if (%youtube.count == 77) {
    if (!%youtube.ratio) { set %youtube.ratio 평점없음 }
    msg %youtube.chan $chr(91) $+ %youtube.subject $+ $chr(93) – %youtube.video ( $+ 약 %youtube.amount $+ 개의 동영상 검색)
    msg %youtube.chan 설명 : %youtube.describe
    msg %youtube.chan 등록일 : %youtube.added / 평점 : %youtube.ratio / 조회 수 : %youtube.vcount / 등록자 : %youtube.user
    notice %youtube.nick 더 많은 결과를 보시려면 http://www.youtube.com/results?search_type=&search_query= $+ %youtube.url $+ &aq=f 를 참조하십시요.
    sockclose $sockname
    unset %youtube.*
  }
  if (%youtube.search2 isin %tmp) { set %youtube.count 2 }
}

중국신분증 번호의 구조와 진위여부 확인하기

대한민국에 주민등록번호가 있듯, 중국에는 신분증(정식 명칭으론 중화인민공화국 거민신분증) 번호가 있다.
주민등록번호의 알고리즘은 워낙 많이 퍼진 관계로, 이 포스팅에서는 외국의 신분증 번호 알고리즘을 한번 파해쳐 보고자 한다.

먼저, 중국신분증 번호는 15자리식과 18자리 식이 있는데, 15자리는 체크섬(Checksum) 값이 없는 형태이고
18자리 식이 이번에 다루고자 하는 주요 내용이다.

18자리 식의 형태는 다음과 같다

123456789ABCDEFGHI

1,2 : 중국의 성(城)급 행정구역을 나타낸다. (예 : 길림성, 하남성 등등) 이 코드는 아래를 참조한다.

11:”北京”,12:”天津”,13:”河北”,14:”山西”,15:”内蒙古”,21:”辽宁”,22:”吉林”,23:”黑龙江”,31:”上海”,32:”江苏”,33:”浙江”,34:”安徽”,35:”福建”,36:”江西”,37:”山东”,41:”河南”,42:”湖北”,43:”湖南”,44:”广东”,45:”广西”,46:”海南”,50:”重庆”,51:”四川”,52:”贵州”,53:”云南”,54:”西藏”,61:”陕西”,62:”甘肃”,63:”青海”,64:”宁夏”,65:”新疆”,71:”台湾”,81:”香港”,82:”澳门”,91:”国外”

재밌는 점은 72번(台湾) 인데 이것을 한국식으로 발음하면 “대만”이다.
중국에서는 대만을 하나의 나라로 인정하지 않으며 “성급”으로 취급하는데, 여기에서도 그런 모습이 드러난다.

3,4 : 성급 행정구역보다 한단계 아래인 지구별행정구역(區, qi라고 발음)을 나타낸다.
5,6 : 지구별행정구역의 하위 개념인 현(縣)급 행정구역을 나타낸다.
3,4,5,6은 워낙 많기때문에 여기서 다루지 않고 넘어간다. -_-;
7,8,9,A : 출생년도를 표기한다. (예 : 1985, 2009) 신분증 번호 중 15자리 식은 예문을 85 또는 09로만 표현한다.
B,C : 출생월을 표기한다. (예 : 09, 12)
D,E : 출생일을 표기한다. (예 : 22, 31)
F,G,H : 이것은 위에서 나타낸 정보 (XX성 XX구 XX현 yyyy년 mm월 dd일)에서 몇번째로 태어난 사람인지 기록하는 카운터(counter)의 개념이다. 여기서 유의점은 남자는 홀수, 여자는 짝수로 표기된다. (예 : 남자의 경우 001, 003, 005 순서로 기록)

I : 이 값이 골치를 썩게 하는 체크섬 값이다. 이 부분은 아래에서 구하는법을 다루겠다.

대략 위와 같은 형태로 신분증 번호가 구성이 되는데, 주민등록번호처럼 맨 마지막 값이 체크섬 값이다. 이 값에 따라
형식이 올바른 번호인지 아닌지가 구별이 되므로 이제 이 체크섬 값을 구하는 것을 기술해보겠다.

먼저, 예문이 될 중국신분증 번호를 하나 만들어보자.
112524198509226478 로 만들었다.
북경시에서 태어났고 (xx구,xx현은 대충 만듬) 1985년 09월 22일생이며 324번째로 태어난 남자다.

우리가 구해야 하는 값은 i,Ai,Wi,S 라는 값이다.
이것은 간단하게 표로 정리해 보겠다.

18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 i
1 1 2 5 2 4 1 9 8 5 0 9 2 2 6 4 7 Ai
7 9 10 5 8 4 2 1 6 3 7 9 10 5 8 4 2 Wi
7 9 20 25 16 16 2 9 48 15 0 81 20 10 48 16 14 S

오른쪽에 각각 i, Ai, Wi, S 라는 글짜가 보인다.

i는 2~18까지의 숫자를 오른쪽에서 왼쪽으로 1씩 더해가며 쓴 숫자이다.
Ai는 우리가 만든 신분증 번호를 순서대로 왼쪽에서 오른쪽으로 쓴것이다.
Wi는 모든 사람이 같은 값을 가지게 되는데 이것은 아래의 식을 따른다.



저 식을 적용하고 나면 7,9,10,5,8,4,2,1,6,3 이라는 숫자가 계속 반복해서 나옴을 알 수 있다.

S는 Ai와 Wi를 곱한 값으로써 i_2부터 i_18까지 행해준다. (식은 아래를 참조)



마지막으로 각 S의 값을 모두 더한 값이 최종적인 S의 값이 된다.
이렇게 구한 S를 11로 나눈 뒤 나머지만 취한다. (result = S % 11)

예문에서 모두 합산된 S의 값은 356이다. 이 값을 11로 나눠 나머지만 취하면 4라는 값을 구할 수 있다.
이 값을 가지고 아래 표에 대입하여 마지막 체크섬 값을 찾아낸다.

0 1 2 3 4 5 6 7 8 9 10 대입할 값
1 0 X 9 8 7 6 5 4 3 2 치환될 값

우리가 가지고 있는 값은 4 이므로 “대입할 값”에서 4를 찾으면 “치환될 값”란에는 8이라고 써있으므로

마지막 18번째 체크섬 값은 8이 된다.

우리가 맨처음 생성한 112524198509226478 라는 값에서 맨 마지막값이 8이므로 체크섬값이 일치함을 알 수 있고

따라서 이 신분증번호는 형식에 올바른 신분증 번호라는것이 판명된다. (진위여부 확인 OK)

보통 이것을 홈페이지 같은곳에서 진위여부 확인을 위해 체킹하는 함수를 만드는데,
아래에 “발로 대충 만든” 알고리즘이 있으니 참고하여 쓰면 된다.

* 비베가 익숙칠 않아서 IF문이 본의 아니게 많이 사용됬다.
* text1.text에 112524198509226478 와 같이 입력한다.

————————————————————————————————-

Dim ai(17) As String
Dim wi(17) As String

ai(0) = Mid(Text1.Text, 1, 1)
ai(1) = Mid(Text1.Text, 2, 1)
ai(2) = Mid(Text1.Text, 3, 1)
ai(3) = Mid(Text1.Text, 4, 1)
ai(4) = Mid(Text1.Text, 5, 1)
ai(5) = Mid(Text1.Text, 6, 1)
ai(6) = Mid(Text1.Text, 7, 1)
ai(7) = Mid(Text1.Text, 8, 1)
ai(8) = Mid(Text1.Text, 9, 1)
ai(9) = Mid(Text1.Text, 10, 1)
ai(10) = Mid(Text1.Text, 11, 1)
ai(11) = Mid(Text1.Text, 12, 1)
ai(12) = Mid(Text1.Text, 13, 1)
ai(13) = Mid(Text1.Text, 14, 1)
ai(14) = Mid(Text1.Text, 15, 1)
ai(15) = Mid(Text1.Text, 16, 1)
ai(16) = Mid(Text1.Text, 17, 1)
checkkey = Mid(Text1.Text, 18, 1)

‘연산을 위한 지정값
wi(0) = 7
wi(1) = 9
wi(2) = 10
wi(3) = 5
wi(4) = 8
wi(5) = 4
wi(6) = 2
wi(7) = 1
wi(8) = 6
wi(9) = 3
wi(10) = 7
wi(11) = 9
wi(12) = 10
wi(13) = 5
wi(14) = 8
wi(15) = 4
wi(16) = 2

‘ai(i)와 wi(i)를 곱한 값을 모두 합친다.
For i = 0 To 16
tmp = ai(i) * wi(i)
result = tmp + result
Next i

‘마지막 연산을 위해 11로 나눈 나머지 값을 취한다.
result = result Mod 11

‘매직키 테이블로 마지막 18번째 자리값을 대조해서 찾는다.
Dim checksum As String

If result = 0 Then
checksum = 1
End If
If result = 1 Then
checksum = 0
End If
If result = 2 Then
checksum = “X”
End If
If result = 3 Then
checksum = 9
End If
If result = 4 Then
checksum = 8
End If
If result = 5 Then
checksum = 7
End If
If result = 6 Then
checksum = 6
End If
If result = 7 Then
checksum = 5
End If
If result = 8 Then
checksum = 4
End If
If result = 9 Then
checksum = 3
End If
If result = 10 Then
checksum = 2
End If

If checksum = checkkey Then
Text5.Text = ” [O] ” & Text1.Text & vbCrLf & ” (올바른 신분증번호)”
End If
If checksum <> checkkey Then
Text5.Text = ” [X] ” & Text1.Text & vbCrLf & ” (틀린 신분증번호)” & vbCrLf & vbCrLf & ” 올바른 신분증번호는” & vbCrLf & ” ” & Mid(Text1.Text, 1, 17) & checksum & ” 입니다.”
End If

————————————————————————————————-

올바른 목적으로 사용하자. (악용하면 생성기가 만들어진다.)

오역,의역 투성이 다크나이트

최근 다크나이트에 푹 빠졌다. 역대 배트맨 시리즈 중에 가장 좋았던것 까진 좋았으나..
공식 한글 자막을 누가 만들었는지 개날림으로 만들었다.

지금부터 몇가지 장면을 따져보도록 하겠다.



원문 : You think you’re smart, huh?
공식 한글 자막 : 좋아할 거 없어
필자의 주관적인 번역 : 니가 생각하기에 똑똑한것 같지, 응?
의견 : 오역의 시작!



원문 : Oh, criminals in this town used to believe in things.
공식 한글 자막 : 범죄자들끼리도 지킬게 있는거야
필자의 주관적인 번역 : 이 동네의 범죄자들은 도의라는게 있었어. (이 다음문장도 의역이지만 분량이 워낙 많으니 넘어가겠심)
의견 : 가씀(Gotham) 씨티의 범죄자들에게 있던 도의 였는데.. “모든 범죄자”로 오해할수 있는 소지가 있다.



원문 : Buyer beware.
공식 한글 자막 : 누굴 탓해?
필자의 주관적인 번역 : 구매자여, 주의하시라~ (이 씬 다음에도 왕창 틀렸다. 역시 분량 관계상.. 따지고 들자면야.. 한도 없다)
의견 : 뭐래는거여..



원문 : Harvey, I know these briefs backwards.
공식 한글 자막 : 내가 해도 충분해
필자의 주관적인 번역 : 하비, 이 사건 개요서는 거꾸로도 외울지경이야.
의견 : 의역이 좀 심한것 같은데…



원문 : As you’re all aware, one of our deposits was stolen.
공식 한글 자막 : 우리 은행이 털렸어요.
필자의 주관적인 번역 : 모두들 아시다시피, 우리 공탁소 중 한곳이 털렸어요.
의견 : 이 장면만 보자면 운영하는 은행이 털렸는줄 오해할듯?



원문 : What about the flight crew? / South Korean smugglers
공식 한글 자막 : 조종사는? / 밀수꾼인데
필자의 주관적인 번역 : 조종사는 어떻습니까? / 남한에 있는 밀수꾼인데
의견 : 심의 때문인가??



원문 : They run flights into Pyongyang, below radar
공식 한글 자막 : 레이더를 피하는 기술이 제법이죠
필자의 주관적인 번역 : 그들은 레이더를 피해 평양으로 비행한답니다.
의견 : 아무리 심의 때문이라지만, 이건 뭐 눈가리고 아웅인 식. 들어보면 벌써 다르다는걸 아는데… 이건 오역으로 봐야할듯?



원문 : Mr. Wayne didn’t want you to think he was deliberately wasting your time.
공식 한글 자막 : 회장님이 찾아뵙고 말씀드리라 해서요.
필자의 주관적인 번역 : 웨인 회장님께서는 일부러 당신의 시간을 낭비시킨다고 생각하는것을 원치 않으시니까요.
의견 : 뭐여, 이건.. 시간낭비한다고 오해하지 않도록 한다는데 뭘 찾아뵙고 말씀드려? 의역도 아니고 오역이네..



원문 : That’s very good, Mr. Lau. “accidentally.” Very good.
공식 한글 자막 : 그래요. 라우 씨. 시간낭비 했죠.
필자의 주관적인 번역 : (Very good 뒤에 expression이 생략됬을것이라 가정하고) 매우 좋은 표현입니다. 라우씨. “하마트면”,아주 좋습니다.
의견 : 뭔가가 엉성하면서도 영어를 아주 모르고 이 영화를 처음 보는사람에게는 대충 앞뒤가 맞는 자막…

이밖에도 워낙에 많은 오역,의역들이 있겠지만 중간에 화딱지가 나서 한글자막으론 못보겠어서 영어자막으로 봤다.

이따위로 만들고선 공식자막이라니…
참고 이 자막은 영화관/DVD/Blu-ray 공통으로 들어가는 자막이다…