Advertisement
Guest User

localeinfo

a guest
Jun 23rd, 2017
392
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 36.63 KB | None | 0 0
  1. import app
  2. import constInfo
  3. import player
  4.  
  5. MAP_TRENT02 = "metin2_map_roter_wald" # ÀÓ½Ã
  6. MAP_WL = "metin2_map_schlangenfeld" # ÀÓ½Ã
  7. MAP_NUSLUCK = "metin2_map_land_der_riesen" # ÀÓ½Ã
  8. MAP_TREE2 = "MAP_TREE2"
  9.  
  10. BLEND_POTION_NO_TIME = " "
  11. BLEND_POTION_NO_INFO = " "
  12.  
  13. titleNameDict = {
  14. 0 : "~Arius2 - Das neue Reich~",
  15. 1 : "*Arius2 - Das neue Reich*",
  16. 2 : "*Arius2 - Das neue Reich*",
  17. 3 : "*Arius2 - Das neue Reich*",
  18. 4 : "Arius2 - Das neue Reich",
  19. 5 : "~Arius2 - Das neue Reich~",
  20. }
  21.  
  22. APP_TITLE = titleNameDict[app.GetRandom(0, len(titleNameDict) - 1)] + (player.GetName())
  23.  
  24. GUILD_HEADQUARTER = "Main Building"
  25. GUILD_FACILITY = "Facility"
  26. GUILD_OBJECT = "Object"
  27. GUILD_MEMBER_COUNT_INFINITY = "INFINITY"
  28.  
  29. LOGIN_FAILURE_WEB_BLOCK = "BLOCK_LOGIN(WEB)"
  30. LOGIN_FAILURE_BLOCK_LOGIN = "BLOCK_LOGIN"
  31. CHANNEL_NOTIFY_FULL = "CHANNEL_NOTIFY_FULL"
  32.  
  33. GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/GuildBuildingList.txt"
  34.  
  35. GUILD_MARK_MIN_LEVEL = "3"
  36. GUILD_MARK_NOT_ENOUGH_LEVEL = "±æµå·¹º§ 3ÀÌ»ó ºÎÅÍ °¡´ÉÇÕ´Ï´Ù."
  37.  
  38. ERROR_MARK_UPLOAD_NEED_RECONNECT = "UploadMark: Reconnect to game"
  39. ERROR_MARK_CHECK_NEED_RECONNECT = "CheckMark: Reconnect to game"
  40.  
  41. VIRTUAL_KEY_ALPHABET_LOWERS  = r"[1234567890]/qwertyuiop\=asdfghjkl;`'zxcvbnm.,"
  42. VIRTUAL_KEY_ALPHABET_UPPERS  = r'{1234567890}?QWERTYUIOP|+ASDFGHJKL:~"ZXCVBNM<>'
  43. VIRTUAL_KEY_SYMBOLS    = '!@#$%^&*()_+|{}:"<>?~'
  44. VIRTUAL_KEY_NUMBERS    = "1234567890-=\[];',./`"
  45. VIRTUAL_KEY_SYMBOLS_BR    = '!@#$%^&*()_+|{}:"<>?~áàãâéèêíìóòôõúùç'
  46.  
  47. __IS_ENGLISH    = "ENGLISH" == app.GetLocaleServiceName()  
  48. __IS_HONGKONG   = "HONGKONG" == app.GetLocaleServiceName()
  49. __IS_NEWCIBN    = "locale/newcibn" == app.GetLocalePath()
  50. __IS_EUROPE     = "EUROPE" == app.GetLocaleServiceName()       
  51. __IS_CANADA     = "locale/ca" == app.GetLocalePath()
  52. __IS_BRAZIL     = "locale/br" == app.GetLocalePath()
  53. __IS_SINGAPORE  = "locale/sg" == app.GetLocalePath()
  54. __IS_VIETNAM    = "locale/vn" == app.GetLocalePath()
  55. __IS_ARABIC     = "locale/ae" == app.GetLocalePath()
  56. __IS_CIBN10     = "locale/cibn10" == app.GetLocalePath()
  57. __IS_WE_KOREA   = "locale/we_korea" == app.GetLocalePath()
  58. __IS_TAIWAN     = "locale/taiwan" == app.GetLocalePath()
  59. __IS_JAPAN      = "locale/japan" == app.GetLocalePath()
  60.  
  61. if __IS_CANADA:
  62.     __IS_EUROPE = TRUE
  63.  
  64. def IsYMIR():
  65.     return "locale/ymir" == app.GetLocalePath()
  66.  
  67. def IsJAPAN():
  68.     return "locale/japan" == app.GetLocalePath()
  69.  
  70. def IsENGLISH():
  71.     global __IS_ENGLISH
  72.     return __IS_ENGLISH
  73.  
  74. def IsHONGKONG():
  75.     global __IS_HONGKONG
  76.     return __IS_HONGKONG
  77.  
  78. def IsTAIWAN():
  79.     return "locale/taiwan" == app.GetLocalePath()
  80.  
  81. def IsNEWCIBN():
  82.     return "locale/newcibn" == app.GetLocalePath()
  83.  
  84. def IsCIBN10():
  85.     global __IS_CIBN10
  86.     return __IS_CIBN10
  87.    
  88. def IsEUROPE():
  89.     global __IS_EUROPE
  90.     return __IS_EUROPE
  91.  
  92. def IsCANADA():
  93.     global __IS_CANADA
  94.     return __IS_CANADA
  95.  
  96. def IsBRAZIL():
  97.     global __IS_BRAZIL
  98.     return __IS_BRAZIL
  99.  
  100. def IsVIETNAM():
  101.     global __IS_VIETNAM
  102.     return __IS_VIETNAM
  103.  
  104. def IsSINGAPORE():
  105.     global __IS_SINGAPORE
  106.     return __IS_SINGAPORE
  107.    
  108. def IsARABIC():
  109.     global __IS_ARABIC
  110.     return __IS_ARABIC
  111.  
  112. def IsWE_KOREA():
  113.     return "locale/we_korea" == app.GetLocalePath()
  114.    
  115. # SUPPORT_NEW_KOREA_SERVER
  116. def LoadLocaleData():
  117.     if IsYMIR():
  118.         import net
  119.         SERVER = "Äèµµ ¼­¹ö"
  120.         if SERVER == net.GetServerInfo()[:len(SERVER)]:
  121.             app.SetCHEONMA(0)
  122.             app.LoadLocaleData("locale/we_korea")
  123.             constInfo.ADD_DEF_BONUS_ENABLE = 0
  124.         else:
  125.             app.SetCHEONMA(1)
  126.             app.LoadLocaleData("locale/ymir")
  127.             constInfo.ADD_DEF_BONUS_ENABLE = 1
  128.     else:
  129.         app.LoadLocaleData(app.GetLocalePath())
  130.  
  131. def IsCHEONMA():
  132.     return IsYMIR()     # ÀÌÁ¦ YMIR ·ÎÄÉÀÏÀº ¹«Á¶°Ç õ¸¶¼­¹öÀÓ. õ¸¶¼­¹ö°¡ ¹®À» ´Ý±â Àü±îÁö º¯ÇÒ ÀÏ ¾øÀ½.
  133.  
  134. # END_OF_SUPPORT_NEW_KOREA_SERVER
  135.  
  136. def mapping(**kwargs): return kwargs
  137.  
  138. def SNA(text)
  139.     def f(x):
  140.         return text
  141.     return f
  142.  
  143. def SA(text):
  144.     def f(x):
  145.         return text % x
  146.     return f
  147.  
  148. def LoadLocaleFile(srcFileName, localeDict):
  149.  
  150.     funcDict = {"SA":SA, "SNA":SNA}
  151.  
  152.     lineIndex = 1
  153.  
  154.     try:
  155.         lines = pack_open(srcFileName, "r").readlines()
  156.     except IOError:
  157.         import dbg
  158.         dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
  159.         app.Abort()
  160.  
  161.     for line in lines:
  162.         try:       
  163.             tokens = line[:-1].split("\t")
  164.             if len(tokens) == 2:
  165.                 localeDict[tokens[0]] = tokens[1]      
  166.             elif len(tokens) >= 3:
  167.                 type = tokens[2].strip()
  168.                 if type:
  169.                     localeDict[tokens[0]] = funcDict[type](tokens[1])
  170.                 else:
  171.                     localeDict[tokens[0]] = tokens[1]
  172.             else:
  173.                 raise RuntimeError, "Unknown TokenSize"
  174.  
  175.             lineIndex += 1
  176.         except:
  177.             import dbg
  178.             dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
  179.             raise
  180.  
  181.  
  182.    
  183. all = ["locale","error"]
  184.  
  185. if IsEUROPE()  and  IsBRAZIL()  :
  186.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  187.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  188.     constInfo.IN_GAME_SHOP_ENABLE = 0
  189. elif IsSINGAPORE() :
  190.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  191.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  192.     constInfo.IN_GAME_SHOP_ENABLE = 0
  193. elif IsNEWCIBN() :
  194.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  195.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  196.     constInfo.IN_GAME_SHOP_ENABLE = 0
  197. elif IsTAIWAN():
  198.     APP_TITLE = "°«III°ê"
  199.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  200.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  201.  
  202.     constInfo.IN_GAME_SHOP_ENABLE = 1
  203. elif IsJAPAN():
  204.     APP_TITLE = "CRUEL WAR - Return of the Metin2"
  205.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  206.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  207.  
  208.     constInfo.IN_GAME_SHOP_ENABLE = 1  
  209. else:
  210.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  211.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  212.  
  213.     constInfo.IN_GAME_SHOP_ENABLE = 1
  214.  
  215. LoadLocaleFile(LOCALE_FILE_NAME, locals())
  216.  
  217. ########################################################################################################
  218. ## NOTE : ¾ÆÀÌÅÛÀ» ¹ö¸±¶§ "¹«¾ùÀ»/¸¦ ¹ö¸®½Ã°Ú½À´Ï±î?" ¹®ÀÚ¿­ÀÇ Á¶»ç ¼±ÅÃÀ» À§ÇÑ ÄÚµå
  219. dictSingleWord = {
  220.     "m":1, "n":1, "r":1, "M":1, "N":1, "R":1, "l":1, "L":1, "1":1, "3":1, "6":1, "7":1, "8":1, "0":1,
  221. }
  222.  
  223. dictDoubleWord = {
  224.     "°¡":1, "°¼":1, "°Å":1, "°Ü":1, "°í":1, "±³":1, "±¸":1, "±Ô":1, "±×":1, "±â":1, "°³":1, "°Â":1, "°Ô":1, "°è":1, "°ú":1, "±¥":1, "±Å":1, "±Ë":1, "±«":1, "±Í":1, "±á":1,
  225.     "±î":1, "²¥":1, "²¨":1, "²¸":1, "²¿":1, "²Ø":1, "²Ù":1, "²ó":1, "²ô":1, "³¢":1, "±ú":1, "ƒÆ":1, "²²":1, "²¾":1, "²Ê":1, "²Ï":1, "²ã":1, "²ç":1, "²Ò":1, "²î":1, "…Ê":1,
  226.     "³ª":1, "³Ä":1, "³Ê":1, "³à":1, "³ë":1, "´¢":1, "´©":1, "´º":1, "´À":1, "´Ï":1, "³»":1, "†v":1, "³×":1, "³é":1, "³ö":1, "‡R":1, "´²":1, "´´":1, "³ú":1, "´µ":1, "´Ì":1,
  227.     "´Ù":1, "´ô":1, "´õ":1, "µ®":1, "µµ":1, "µÍ":1, "µÎ":1, "µà":1, "µå":1, "µð":1, "´ë":1, "ˆÛ":1, "µ¥":1, "µ³":1, "µÂ":1, "µÅ":1, "µÖ":1, "µØ":1, "µÇ":1, "µÚ":1, "µï":1,
  228.     "µû":1, "‹x":1, "¶°":1, "¶Å":1, "¶Ç":1, "ŒÃ":1, "¶Ñ":1, "":1, "¶ß":1, "¶ì":1, "¶§":1, "‹š":1, "¶¼":1, "‹ó":1, "¶Ì":1, "¶Î":1, "Œô":1, "¶Ø":1, "¶Ï":1, "¶Ù":1, "¶ç":1,
  229.     "¶ó":1, "·ª":1, "·¯":1, "·Á":1, "·Î":1, "·á":1, "·ç":1, "·ù":1, "¸£":1, "¸®":1, "·¡":1, "Žm":1, "·¹":1, "·Ê":1, "·Ö":1, "O":1, "·ï":1, "·ñ":1, "·Ú":1, "·ò":1, "l":1,
  230.     "¸¶":1, "¸Ï":1, "¸Ó":1, "¸ç":1, "¸ð":1, "¹¦":1, "¹«":1, "¹Â":1, "¹Ç":1, "¹Ì":1, "¸Å":1, "Ù":1, "¸Þ":1, "¸ï":1, "¸ú":1, "‘À":1, "¹¹":1, "¹¾":1, "¸þ":1, "¹¿":1, "’Þ":1,
  231.     "¹Ù":1, "¹ò":1, "¹ö":1, "º­":1, "º¸":1, "ºÌ":1, "ºÎ":1, "ºä":1, "ºê":1, "ºñ":1, "¹è":1, "“Ž":1, "º£":1, "º¶":1, "ºÁ":1, "ºÄ":1, "ºÛ":1, "ºÞ":1, "ºÆ":1, "ºß":1, "•‘":1,
  232.     "ºü":1, "»²":1, "»µ":1, "»À":1, "»Ç":1, "»Ï":1, "»Ñ":1, "»Ø":1, "»Ú":1, "»ß":1, "»©":1, "•û":1, "»¾":1, "–§":1, "–Ø":1, "–ô":1, "—¨":1, "—Ä":1, "»Î":1, "—à":1, "˜u":1,
  233.     "»ç":1, "»þ":1, "¼­":1, "¼Å":1, "¼Ò":1, "¼î":1, "¼ö":1, "½´":1, "½º":1, "½Ã":1, "»õ":1, "¼¨":1, "¼¼":1, "¼Î":1, "¼Ý":1, "¼â":1, "½¤":1, "½¦":1, "¼è":1, "½¬":1, "šÃ":1,
  234.     "½Î":1, "›X":1, "½á":1, "›Ç":1, "½î":1, "¾¤":1, "¾¥":1, "o":1, "¾²":1, "¾¾":1, "½Ø":1, "›y":1, "½ê":1, "›ã":1, "½÷":1, "½û":1, "¾¬":1, "¾®":1, "½ý":1, "¾¯":1, "¾º":1,
  235.     "¾Æ":1, "¾ß":1, "¾î":1, "¿©":1, "¿À":1, "¿ä":1, "¿ì":1, "À¯":1, "À¸":1, "ÀÌ":1, "¾Ö":1, "¾ê":1, "¿¡":1, "¿¹":1, "¿Í":1, "¿Ö":1, "¿ö":1, "¿þ":1, "¿Ü":1, "À§":1, "ÀÇ":1,
  236.     "ÀÚ":1, "Àð":1, "Àú":1, "Á®":1, "Á¶":1, "ÁÒ":1, "ÁÖ":1, "Áê":1, "Áî":1, "Áö":1, "Àç":1, "À÷":1, "Á¦":1, "Áµ":1, "ÁÂ":1, "ÁÈ":1, "Áà":1, "Áâ":1, "ÁË":1, "Áã":1, "£p":1,
  237.     "Â¥":1, "¹":1, "¼":1, "ÂÇ":1, "ÂÉ":1, "§c":1, "ÂÞ":1, "Âé":1, "Âê":1, "Âî":1, "°":1, "¤Š":1, "ÂÅ":1, "¥™":1, "ÂÒ":1, "ÂÖ":1, "Âå":1, "¨R":1, "ÂØ":1, "Âè":1, "©n":1,
  238.     "Â÷":1, "í":1, "ó":1, "ÃÄ":1, "ÃÊ":1, "ÃÝ":1, "Ãß":1, "Ãò":1, "Ã÷":1, "Ä¡":1, "ä":1, "ª‰":1, "ü":1, "ÃÇ":1, "ÃÒ":1, "¬‚":1, "Ãç":1, "Ãé":1, "ÃÖ":1, "Ãë":1, "¯M":1,
  239.     "Ä«":1, "ļ":1, "Ä¿":1, "ÄÑ":1, "ÄÚ":1, "Äì":1, "Äí":1, "Å¥":1, "Å©":1, "Å°":1, "ij":1, "°m":1, "ÄÉ":1, "ÄÙ":1, "Äâ":1, "Äè":1, "Äõ":1, "Äù":1, "Äê":1, "Äû":1, "´”":1,
  240.     "Ÿ":1, "ÅË":1, "ÅÍ":1, "Åß":1, "Åä":1, "Åô":1, "Åõ":1, "Æ©":1, "Æ®":1, "Ƽ":1, "ÅÂ":1, "¶O":1, "Å×":1, "Åâ":1, "Åí":1, "Åï":1, "Åý":1, "Æ¡":1, "Åð":1, "Æ¢":1, "Æ·":1,
  241.     "ÆÄ":1, "ÆÙ":1, "ÆÛ":1, "Æì":1, "Æ÷":1, "Ç¥":1, "Ǫ":1, "Ç»":1, "ÇÁ":1, "ÇÇ":1, "ÆÐ":1, "»—":1, "Æä":1, "Æó":1, "Ç¡":1, "½":1, "Ç´":1, "¿R":1, "Ç£":1, "Ƕ":1, "Àc":1,
  242.     "ÇÏ":1, "Çá":1, "Çã":1, "Çô":1, "È£":1, "È¿":1, "ÈÄ":1, "ÈÞ":1, "Èå":1, "È÷":1, "ÇØ":1, "Á…":1, "Çì":1, "Çý":1, "È­":1, "ȳ":1, "ÈÌ":1, "ÈÑ":1, "ȸ":1, "ÈÖ":1, "Èñ":1,
  243. }
  244.  
  245. locale = mapping(
  246. )
  247.  
  248.  
  249. def GetAuxiliaryWordType(text):
  250.  
  251.     textLength = len(text)
  252.  
  253.     if textLength > 1:
  254.  
  255.         singleWord = text[-1]
  256.  
  257.         if (singleWord >= '0' and singleWord <= '9') or\
  258.             (singleWord >= 'a' and singleWord <= 'z') or\
  259.             (singleWord >= 'A' and singleWord <= 'Z'):
  260.             if not dictSingleWord.has_key(singleWord):
  261.                 return 1
  262.  
  263.         elif dictDoubleWord.has_key(text[-2:]):
  264.             return 1
  265.  
  266.     return 0
  267.  
  268.  
  269.  
  270. def CutMoneyString(sourceText, startIndex, endIndex, insertingText, backText):
  271.  
  272.     sourceLength = len(sourceText)
  273.  
  274.     if sourceLength < startIndex:
  275.         return backText
  276.  
  277.     text = sourceText[max(0, sourceLength-endIndex):sourceLength-startIndex]
  278.  
  279.     if not text:
  280.         return backText
  281.  
  282.     if long(text) <= 0:
  283.         return backText
  284.  
  285.     text = str(int(text))
  286.  
  287.     if backText:
  288.         backText = " " + backText
  289.  
  290.     return text + insertingText + backText
  291.  
  292. def SecondToDHM(time):
  293.     if time < 60:
  294.         if IsARABIC():
  295.             return "%.2f %s" % (time, SECOND)
  296.         else:
  297.             return "0" + MINUTE
  298.        
  299.     second = int(time % 60)
  300.     minute = int((time / 60) % 60)
  301.     hour = int((time / 60) / 60) % 24
  302.     day = int(int((time / 60) / 60) / 24)
  303.  
  304.     text = ""
  305.  
  306.     if day > 0:
  307.         text += str(day) + DAY
  308.         text += " "
  309.  
  310.     if hour > 0:
  311.         text += str(hour) + HOUR
  312.         text += " "
  313.  
  314.     if minute > 0:
  315.         text += str(minute) + MINUTE
  316.  
  317.     return text
  318.  
  319. def SecondToHM(time):
  320.  
  321.     if time < 60:
  322.         if IsARABIC():
  323.             return "%.2f %s" % (time, SECOND)
  324.         else:
  325.             return "0" + MINUTE
  326.  
  327.     second = int(time % 60)
  328.     minute = int((time / 60) % 60)
  329.     hour = int((time / 60) / 60)
  330.  
  331.     text = ""
  332.  
  333.     if hour > 0:
  334.         text += str(hour) + HOUR
  335.         if hour > 0:
  336.             text += " "
  337.  
  338.     if minute > 0:
  339.         text += str(minute) + MINUTE
  340.  
  341.     return text
  342.  
  343.  
  344. def GetAlignmentTitleName(alignment):
  345.     if alignment >= 50000:
  346.         return TITLE_NAME_LIST[0]
  347.     elif alignment >= 25000:
  348.         return TITLE_NAME_LIST[1]
  349.     elif alignment >= 12000:
  350.         return TITLE_NAME_LIST[2]  
  351.     elif alignment >= 8000:
  352.         return TITLE_NAME_LIST[3]
  353.     elif alignment >= 4000:
  354.         return TITLE_NAME_LIST[4]
  355.     elif alignment >= 1000:
  356.         return TITLE_NAME_LIST[5]
  357.     elif alignment >= 0:
  358.         return TITLE_NAME_LIST[6]
  359.     elif alignment > -4000:
  360.         return TITLE_NAME_LIST[7]
  361.     elif alignment > -8000:
  362.         return TITLE_NAME_LIST[8]
  363.     elif alignment > -12000:
  364.         return TITLE_NAME_LIST[9]
  365.     elif alignment > -25000:
  366.         return TITLE_NAME_LIST[10]
  367.     elif alignment > -45000:
  368.         return TITLE_NAME_LIST[11] 
  369.  
  370.     return TITLE_NAME_LIST[12]
  371.    
  372.     TITLE_NAME_LIST = (PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, PVP_LEVEL9, PVP_LEVEL10, PVP_LEVEL11, PVP_LEVEL12, )
  373.  
  374.  
  375. if app.ENABLE_TITLE_SYSTEM:
  376.     TITLEPRESTIGE_NAME_LIST = (TITLE_1,TITLE_2,TITLE_3,TITLE_4,TITLE_5,TITLE_6,TITLE_7,TITLE_8,TITLE_9,TITLE_10,TITLE_11,TITLE_12,TITLE_13,TITLE_14,TITLE_15,TITLE_16,TITLE_17,TITLE_18,TITLE_19,TITLE_0)
  377.  
  378. if app.ENABLE_TITLE_SYSTEM:
  379.     def GetPrestigeTitleName(prestige):
  380.         if prestige == 1:
  381.             return TITLEPRESTIGE_NAME_LIST[0]
  382.         elif prestige == 2:
  383.             return TITLEPRESTIGE_NAME_LIST[1]
  384.         elif prestige == 3:
  385.             return TITLEPRESTIGE_NAME_LIST[2]
  386.         elif prestige == 4:
  387.             return TITLEPRESTIGE_NAME_LIST[3]
  388.         elif prestige == 5:
  389.             return TITLEPRESTIGE_NAME_LIST[4]
  390.         elif prestige == 6:
  391.             return TITLEPRESTIGE_NAME_LIST[5]
  392.         elif prestige == 7:
  393.             return TITLEPRESTIGE_NAME_LIST[6]
  394.         elif prestige == 8:
  395.             return TITLEPRESTIGE_NAME_LIST[7]
  396.         elif prestige == 9:
  397.             return TITLEPRESTIGE_NAME_LIST[8]
  398.         elif prestige == 10:
  399.             return TITLEPRESTIGE_NAME_LIST[9]
  400.         elif prestige == 11:
  401.             return TITLEPRESTIGE_NAME_LIST[10]
  402.         elif prestige == 12:
  403.             return TITLEPRESTIGE_NAME_LIST[11]
  404.         elif prestige == 13:
  405.             return TITLEPRESTIGE_NAME_LIST[12]
  406.         elif prestige == 14:
  407.             return TITLEPRESTIGE_NAME_LIST[13]
  408.         elif prestige == 15:
  409.             return TITLEPRESTIGE_NAME_LIST[14]
  410.         elif prestige == 16:
  411.             return TITLEPRESTIGE_NAME_LIST[15]
  412.         elif prestige == 17:
  413.             return TITLEPRESTIGE_NAME_LIST[16]
  414.         elif prestige == 18:
  415.             return TITLEPRESTIGE_NAME_LIST[17]
  416.         elif prestige == 19:
  417.             return TITLEPRESTIGE_NAME_LIST[18]
  418.         elif prestige == 0:
  419.             return TITLEPRESTIGE_NAME_LIST[19]
  420.            
  421. if app.ENABLE_GM_AFFECTS:
  422.     FN_MOD_MARK = "%s/effect/mod_mark.mse" % app.GetLocalePath()
  423.     FN_SGM_MARK = "%s/effect/sgm_mark.mse" % app.GetLocalePath()
  424.     FN_GA_MARK = "%s/effect/ga_mark.mse" % app.GetLocalePath()
  425.    
  426.            
  427. OPTION_PVPMODE_MESSAGE_DICT = {
  428.     0 : PVP_MODE_NORMAL,
  429.     1 : PVP_MODE_REVENGE,
  430.     2 : PVP_MODE_KILL,
  431.     3 : PVP_MODE_PROTECT,
  432.     4 : PVP_MODE_GUILD,
  433. }
  434.  
  435. error = mapping(
  436.     CREATE_WINDOW = GAME_INIT_ERROR_MAIN_WINDOW,
  437.     CREATE_CURSOR = GAME_INIT_ERROR_CURSOR,
  438.     CREATE_NETWORK = GAME_INIT_ERROR_NETWORK,
  439.     CREATE_ITEM_PROTO = GAME_INIT_ERROR_ITEM_PROTO,
  440.     CREATE_MOB_PROTO = GAME_INIT_ERROR_MOB_PROTO,
  441.     CREATE_NO_DIRECTX = GAME_INIT_ERROR_DIRECTX,
  442.     CREATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_NOT_EXIST,
  443.     CREATE_NO_APPROPRIATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_BAD_PERFORMANCE,
  444.     CREATE_FORMAT = GAME_INIT_ERROR_GRAPHICS_NOT_SUPPORT_32BIT,
  445.     NO_ERROR = ""
  446. )
  447.  
  448.  
  449. GUILDWAR_NORMAL_DESCLIST = [GUILD_WAR_USE_NORMAL_MAP, GUILD_WAR_LIMIT_30MIN, GUILD_WAR_WIN_CHECK_SCORE]
  450. GUILDWAR_WARP_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_WIPE_OUT_GUILD, GUILD_WAR_REWARD_POTION]
  451. GUILDWAR_CTF_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_TAKE_AWAY_FLAG1, GUILD_WAR_WIN_TAKE_AWAY_FLAG2, GUILD_WAR_REWARD_POTION]
  452.  
  453. MINIMAP_ZONE_NAME_DICT = {
  454.     "metin2_map_rotes_reich_map_1"  : MAP_A1,
  455.     "metin2_map_rotes_reich_map_2"         : MAP_A2,
  456.     "metin2_map_gildenzone_rot"  : MAP_A3,
  457.     "metin2_map_gelbes_reich_map_1"  : MAP_B1,
  458.     "metin2_map_gelbes_reich_map_2"         : MAP_B2,
  459.     "metin2_map_gildenzone_gelb"  : MAP_B3,
  460.     "metin2_map_blaues_reich_map_1"  : MAP_C1,
  461.     "metin2_map_blaues_reich_map_2"         : MAP_C2,
  462.     "metin2_map_gildenzone_blau"  : MAP_C3,
  463.     "metin2_map_eisland" : MAP_SNOW,
  464.     "metin2_map_feuerland" : MAP_FLAME,
  465.     "metin2_map_wueste" : MAP_DESERT,
  466.     "metin2_map_tempel" : MAP_TEMPLE,
  467.     "metin2_map_spinnendungeon" : MAP_SPIDER,
  468.     "metin2_map_daemonenturm" : MAP_SKELTOWER,
  469.     "metin2_map_guild_01" : MAP_AG,
  470.     "metin2_map_guild_02" : MAP_BG,
  471.     "metin2_map_guild_03" : MAP_CG,
  472.     "metin2_map_geisterwald" : MAP_TREE,
  473.     "metin2_map_roter_wald" : MAP_TREE2,
  474.     "metin2_map_schlangenfeld" : MAP_WL,
  475.     "metin2_map_land_der_riesen" : MAP_NUSLUCK,
  476.     "metin2_map_kap_des_drachenfeuers" : MAP_CAPE,
  477.     "metin2_map_donnerberg" : MAP_THUNDER,
  478.     "metin2_map_gautamakliff" : MAP_DAWN,
  479.     "metin2_map_nephritbucht" : MAP_BAY,
  480. }
  481.  
  482.  
  483.  
  484. JOBINFO_TITLE = [
  485.     [JOB_WARRIOR0, JOB_WARRIOR1, JOB_WARRIOR2,],
  486.     [JOB_ASSASSIN0, JOB_ASSASSIN1, JOB_ASSASSIN2,],
  487.     [JOB_SURA0, JOB_SURA1, JOB_SURA2,],
  488.     [JOB_SHAMAN0, JOB_SHAMAN1, JOB_SHAMAN2,],
  489. ]
  490.  
  491. JOBINFO_DATA_LIST = [
  492.     [
  493.         ["Ÿ°í³­ ¿ë¸Í°ú ±ÁÈ÷Áö ¾Ê´Â ¹«»çÀÇ",
  494.         "±â°³¸¦ »ç¶÷µéÀº ÀÏÄþî [¿ëÀÚ]¶ó°í",
  495.         "ºÎ¸¥´Ù. ¾î¶°ÇÑ À§±â¿¡¼­µµ ±×µéÀº ",
  496.         "µÚ·Î ¹°·¯¼­Áö ¾ÊÀ¸¸ç, ´ÙÄ¡°í ¿òÁ÷",
  497.         "À̱â Èûµç µ¿·á¸¦ À§ÇØ ´Ü½ÅÀ¸·Î",
  498.         "Àûµé°ú ¸¶ÁÖ ½Î¿ì±âµµ ÇÑ´Ù. À̵éÀº",
  499.         "Àß ´Ü·ÃµÈ ±ÙÀ°°ú Èû, °­·ÂÇÑ °ø°Ý·Â",
  500.         "À¸·Î ÀüÀå ÃÖ¼±µÎ¿¡¼­ °ø°ÝÁøÀ¸·Î",
  501.         "È°¾àÇÑ´Ù.                      ",],
  502.         ["°¡Àå ÀϹÝÀûÀÎ °ø°ÝÇü ¹«»ç·Î, ",
  503.         "ÀûÁ¢Àü¿¡ µû¸¥ Á÷Á¢ °ø°ÝÀ¸·Î ÀüÀå",
  504.         "¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó ±Ù·ÂÀ»",
  505.         "¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, ",
  506.         "ÀûÁ¢Àü¿¡ µû¸¥ »ý¸í·Â / ¹æ¾î·Â",
  507.         "È®º¸¸¦ À§ÇØ Ã¼·ÂÀ» ¿Ã¸°´Ù. ¶ÇÇÑ",
  508.         "°ø°ÝÀÇ Á¤È®¼ºÀ» ³ôÀ̱â À§ÇØ ¹Îø",
  509.         "¿¡µµ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.",],
  510.         ["»ó´ç ¼öÁØÀÇ Á¤½Å·ÂÀ» ÀÌ¿ëÇÏ´Â",
  511.         "Áß/±Ù°Å¸® Á¢ÀüÇü ¹«»ç·Î, °¢ ±â¼ú",
  512.         "ÇϳªÇϳªÀÇ ³ôÀº °ø°Ý·ÂÀ¸·Î ÀüÀå¿¡¼­",
  513.         "È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó ±Ù·ÂÀ» ¸ÞÀÎ",
  514.         "À¸·Î ½ºÅÈ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, ",
  515.         "Áß/±Ù°Å¸® °ø°ÝÀÇ Á¤È®¼º°ú ¸íÁß·üÀ»",
  516.         "À§ÇØ ¹ÎøÀ» ¿Ã¸°´Ù. ¶ÇÇÑ Á¢Àü ½Ã ",
  517.         "Àû °ø°Ý¿¡ µû¸¥ »ý¸í·Â / ¹æ¾î·Â",
  518.         "È®º¸¸¦ À§ÇØ Ã¼·Â¿¡µµ Æ÷ÀÎÆ®¸¦",
  519.         "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.        ",],       
  520.     ],
  521.     [
  522.         ["ÀÚ°´Àº ¾î¶°ÇÑ »óȲ¿¡¼­µµ ÀÚ½ÅÀÇ",
  523.         "¸öÀ» ¼û±â°í Àº¹ÐÇÑ ¾îµÒÀÇ ÀÓ¹«¸¦",
  524.         "¼öÇàÇϸ鼭 ÀüÀåÀÇ ÈÄÀ§¸¦ Áö¿øÇÏ´Â",
  525.         "ÀÚµéÀÌ´Ù. À̵éÀº ¾ÆÁÖ ºü¸£°í ½Å¼Ó",
  526.         "Çϸç, ºñÇÒ µ¥ ¾øÀÌ °ú°¨ÇÏ°í ÀýÁ¦µÈ",
  527.         "ÇൿÀ¸·Î ÀûÀÇ ±Þ¼Ò¿¡ Ä¡¸íŸ¸¦ ³¯¸®",
  528.         "µÇ, ÀüÀå¿¡¼± ÀûÁøÀ» ÇâÇØ ¹«¼öÇÑ",
  529.         "È­»ìÀ» ³»»ÕÀ¸¸ç ÀÚ½ÅÀÇ ¿ë¸ÍÀ»",
  530.         "¼±º¸ÀδÙ.                   "],
  531.         ["µÎ¼Õ ´Ü°ËÀ» ÁÖ¹«±â·Î ´Ù·ç¸ç, ½Å¼Ó",
  532.         "ÇÏ°Ô Ä¡°í ºüÁö´Â ÀÚ°´ ƯÀ¯ÀÇ ¿òÁ÷ÀÓ",
  533.         "À¸·Î ÀüÀå¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó",
  534.         "¹ÎøÀ» ¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚ",
  535.         "ÇϵÇ, ±Ù·ÂÀ» ¿Ã·Á °ø°Ý·ÂÀ» ³ôÀδÙ.",
  536.         "¶ÇÇÑ ±ÙÁ¢Àü¿¡ µû¸¥ »ý¸í·Â/¹æ¾î·Â ",
  537.         "»ó½ÂÀ» À§ÇØ Ã¼·Â¿¡µµ Æ÷ÀÎÆ®¸¦",
  538.         "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.          ",],
  539.         ["È°À» ÁÖ¹«±â·Î ´Ù·ç¸ç, ±ä ½Ã¾ß¿Í",
  540.         "»çÁ¤°Å¸®¿¡ µû¸¥ ¿ø°Å¸® °ø°ÝÀ¸·Î",
  541.         "ÀüÀå¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó",
  542.         "°ø°Ý ¼º°ø·üÀÇ Áõ°¡¸¦ À§ÇØ ¹ÎøÀ»",
  543.         "¸ÞÀÎÀ¸·Î ¿Ã·Á¾ß Çϸç, ¿ø°Å¸®",
  544.         "°ø°ÝÀÇ µ¥¹ÌÁö Áõ°¡¸¦ À§ÇØ ±Ù·ÂÀ»",
  545.         "¿Ã¸± ÇÊ¿ä°¡ ÀÖ´Ù. ¶ÇÇÑ Àûµé¿¡°Ô",
  546.         "Æ÷À§µÇ¾úÀ» ½Ã, Àû °ø°Ý¿¡ ¹öƼ±â",
  547.         "À§ÇÑ »ý¸í·Â/¹æ¾î·Â »ó½ÂÀ» À§ÇØ",
  548.         "ü·Â¿¡µµ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇÒ ÇÊ¿ä°¡",
  549.         "ÀÖ´Ù.                        ", ],
  550.     ],
  551.     [
  552.         ["¼ö¶ó´Â [µ¶Àº µ¶À¸·Î]ÀÇ ¼Ó¼ºÀ¸·Î",
  553.         "â¼³µÈ Ư¼ö ¼Ó¼ºÀÇ ±ºÁ÷ÀÌ´Ù. ",
  554.         "±×µéÀº ÀüÀå¿¡¼­ ÀûµéÀÇ »ç±â¸¦ ÀúÇÏ",
  555.         "½ÃÅ°°í, ¾Ç¸¶ÀÇ ÈûÀ» ½ÇÀº ¸¶ÅºÀ¸·Î",
  556.         "ÀûÀÇ ¿µÈ¥°ú À°½ÅÀ» Áþ¹¶°µ´Ù. ¶§·Î",
  557.         "À̵éÀº ÀÚ½ÅÀÇ °Ë°ú °©¿Ê¿¡ ¾îµÒÀÇ",
  558.         "ÈûÀ» ½Ç¾î, ÀüÀå¿¡¼­ ¹«»ç ¸øÁö ¾ÊÀº",
  559.         "°ø°Ý·ÂÀ» ¹ßÈÖÇϱ⵵ Çϴµ¥, ÀûµéÀ»",
  560.         "Á׿©´ë´Â±× ¸ð½ÀÀÌ ¿ö³«¿¡ ²ûÂïÇØ",
  561.         "»ç¶÷µéÀº ¼ö¶ó¸¦ ÀÏÄþî [¸¶½Å]À̶ó",
  562.         "ºÎ¸£±â¸¦ ÁÖÀú ¾É´Â´Ù."],
  563.         ["ȯ¹«±ºÀÇ ¼ö¶ó´Â ¾Ç¸¶ÀÇ ¾¾¿¡¼­",
  564.         "¾ò¾îÁö´Â ¸¶·ÂÀ» ¹«±â³ª ¹æ¾î±¸¿¡",
  565.         "½Ç¾î ¹«»ç ¸øÁö ¾ÊÀº ÀüÅõ·ÂÀ¸·Î",
  566.         "ÀüÀå¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó",
  567.         "Áö´ÉÀÌ ³ô¾ÆÁú¼ö·Ï Âø¿ë Àåºñ¿¡",
  568.         "½Ç¸®´Â ¸¶·ÂÀÇ À§·ÂÀÌ Áõ´ëµÇ¹Ç·Î,",
  569.         "Áö´É°ú ±Ù·ÂÀ» ¸ÞÀÎÀ¸·Î ½ºÅÈ",
  570.         "Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, Á¢Àü¿¡ µû¸¥",
  571.         "»ý¸í·Â/¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·ÂÀ»",
  572.         "¿Ã¸°´Ù. ¶ÇÇÑ °ø°ÝÀÇ Á¤È®¼º°ú",
  573.         "ȸÇǸ¦ À§Çؼ­ ¹Îø¿¡µµ Æ÷ÀÎÆ®¸¦",
  574.         "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.           ",],
  575.         ["È渶±ºÀÇ ¼ö¶óµéÀº °¢Á¾ ¾îµÒÀÇ",
  576.         "ÁÖ¹®°ú ¾Ç¸¶ÀÇ ¸¶¹ýÀ¸·Î ÀüÀå¿¡¼­",
  577.         "È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó ¸¶¹ý °ø°ÝÀÌ",
  578.         "ÁÖÀ̹ǷΠÁö´ÉÀ» ¸ÞÀÎÀ¸·Î ½ºÅÝ",
  579.         "Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, ¿ø°Å¸® ¸¶¹ý",
  580.         "°ø°ÝÀÇ Á¤È®¼ºÀ» À§ÇØ ¹ÎøÀ» ¿Ã¸°´Ù.",
  581.         "¶ÇÇÑ Æ÷À§ µÇ¾úÀ»½Ã, Àû °ø°Ý¿¡ µû¸¥",
  582.         "»ý¸í·Â / ¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·Â¿¡µµ",
  583.         "Æ÷ÀÎÆ®¸¦ ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.    ",],
  584.     ],
  585.     [
  586.         ["¹«´çÀº ¿ë½Å°ú ÀÚ¿¬, µÎ °í´ëÀÇ",
  587.         "ÈûÀ» ´Ù·ê ¼ö ÀÖ´Â À¯ÀÏÇÑ Á÷Á¾ÀÌ´Ù.",
  588.         "±×µéÀº ÈĹ濡¼­ ¾Æ±ºÀ» º¸Á¶ÇÏ°í",
  589.         "´ÙÄ£ µ¿·áÀÇ ºÎ»óÀ» ȸº¹ ½ÃÅ°¸ç",
  590.         "¶³¾îÁø »ç±â¸¦ »ó½Â½ÃŲ´Ù. ±×µéÀº",
  591.         "¾Æ±ºÀÇ ¼ö¸é°ú ÈÞ½ÄÀ» ¹æÇØÇÏ´Â ÀÚ¸¦ ",
  592.         "Àý´ë ¿ë¼­ÇÏÁö ¾ÊÀ¸¸ç, ±×·± ÀÚµé",
  593.         "¿¡°Ô´Â ÇÑ Á¡ ÁÖÀú ¾øÀÌ ÁÖ¹®À»",
  594.         "ÅÍÆ®·Á ±× ºñ°ÌÇÔÀ» ¾öÈ÷ ¡°èÇÑ´Ù.",],
  595.         ["õ·æ±ºÀÇ ¹«´çµéÀº °¢Á¾ ºÎÀû¼ú°ú",
  596.         "º¸Á¶ÁÖ¹®¿¡ ´ÉÇϸç, ÀûÀÇ Á÷ / °£Á¢",
  597.         "°ø°ÝÀ¸·ÎºÎÅÍ ¾Æ±ºÀ» ÁöŲ´Ù. ±ºÁ÷",
  598.         "Ư¼º»ó ¸¶¹ý ´É·ÂÀÌ ÁÖÀ̹ǷΠÁö´ÉÀ»",
  599.         "¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ,",
  600.         "Æ÷À§µÇ¾úÀ» ½Ã, Àû °ø°Ý¿¡ µû¸¥",
  601.         "»ý¸í·Â / ¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·ÂÀ»",
  602.         "¿Ã¸°´Ù. ¶ÇÇÑ ¿ø°Å¸® ¸¶¹ý °ø°ÝÀÇ",
  603.         "Á¤È®¼ºÀ» À§¿¡ ¹Îø¿¡µµ Æ÷ÀÎÆ®¸¦",
  604.         "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.           ",],
  605.         ["±¤·Ú±ºÀÇ ¹«´çµéÀº ÀÚ¿¬ÀÇ ÈûÀ»",
  606.         "ºô·Á ¾Æ±ºÀ» ȸº¹ÇÏ°í, ³ú½ÅÀÇ ",
  607.         "ÈûÀ¸·Î ¹ÐÁýÇÑ Àûµé¿¡°Ô Å« Ãæ°ÝÀ»",
  608.         "ÀÔÈú ¼ö ÀÖ´Â À̵éÀÌ´Ù. ±ºÁ÷ÀÇ",
  609.         "Ư¼º»ó ¸¶¹ý ´É·ÂÀÌ ÁÖÀ̹ǷΠÁö´ÉÀ»",
  610.         "¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ,",
  611.         "Æ÷À§µÇ¾úÀ»½Ã, Àû °ø°Ý¿¡ µû¸¥",
  612.         "»ý¸í·Â / ¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·ÂÀ»",
  613.         "¿Ã¸°´Ù. ¶ÇÇÑ ¿ø°Å¸® ¸¶¹ý °ø°ÝÀÇ",
  614.         "Á¤È®¼ºÀ» À§¿¡ ¹Îø¿¡µµ Æ÷ÀÎÆ®¸¦",
  615.         "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.             "],
  616.     ],
  617. ]
  618.  
  619.  
  620. WHISPER_ERROR = {
  621.     1 : CANNOT_WHISPER_NOT_LOGON,
  622.     2 : CANNOT_WHISPER_DEST_REFUSE,
  623.     3 : CANNOT_WHISPER_SELF_REFUSE,
  624. }
  625.  
  626. NOTIFY_MESSAGE = {
  627.     "CANNOT_EQUIP_SHOP" : CANNOT_EQUIP_IN_SHOP,
  628.     "CANNOT_EQUIP_EXCHANGE" : CANNOT_EQUIP_IN_EXCHANGE,
  629. }
  630.  
  631.  
  632. ATTACK_ERROR_TAIL_DICT = {
  633.     "IN_SAFE" : CANNOT_ATTACK_SELF_IN_SAFE,
  634.     "DEST_IN_SAFE" : CANNOT_ATTACK_DEST_IN_SAFE,
  635. }
  636.  
  637. SHOT_ERROR_TAIL_DICT = {
  638.     "EMPTY_ARROW" : CANNOT_SHOOT_EMPTY_ARROW,
  639.     "IN_SAFE" : CANNOT_SHOOT_SELF_IN_SAFE,
  640.     "DEST_IN_SAFE" : CANNOT_SHOOT_DEST_IN_SAFE,
  641. }
  642.    
  643. USE_SKILL_ERROR_TAIL_DICT = {  
  644.     "IN_SAFE" : CANNOT_SKILL_SELF_IN_SAFE,
  645.     "NEED_TARGET" : CANNOT_SKILL_NEED_TARGET,
  646.     "NEED_EMPTY_BOTTLE" : CANNOT_SKILL_NEED_EMPTY_BOTTLE,
  647.     "NEED_POISON_BOTTLE" : CANNOT_SKILL_NEED_POISON_BOTTLE,
  648.     "REMOVE_FISHING_ROD" : CANNOT_SKILL_REMOVE_FISHING_ROD,
  649.     "NOT_YET_LEARN" : CANNOT_SKILL_NOT_YET_LEARN,
  650.     "NOT_MATCHABLE_WEAPON" : CANNOT_SKILL_NOT_MATCHABLE_WEAPON,
  651.     "WAIT_COOLTIME" : CANNOT_SKILL_WAIT_COOLTIME,
  652.     "NOT_ENOUGH_HP" : CANNOT_SKILL_NOT_ENOUGH_HP,
  653.     "NOT_ENOUGH_SP" : CANNOT_SKILL_NOT_ENOUGH_SP,
  654.     "CANNOT_USE_SELF" : CANNOT_SKILL_USE_SELF,
  655.     "ONLY_FOR_ALLIANCE" : CANNOT_SKILL_ONLY_FOR_ALLIANCE,
  656.     "CANNOT_ATTACK_ENEMY_IN_SAFE_AREA" : CANNOT_SKILL_DEST_IN_SAFE,
  657.     "CANNOT_APPROACH" : CANNOT_SKILL_APPROACH,
  658.     "CANNOT_ATTACK" : CANNOT_SKILL_ATTACK,
  659.     "ONLY_FOR_CORPSE" : CANNOT_SKILL_ONLY_FOR_CORPSE,
  660.     "EQUIP_FISHING_ROD" : CANNOT_SKILL_EQUIP_FISHING_ROD,
  661.     "NOT_HORSE_SKILL" : CANNOT_SKILL_NOT_HORSE_SKILL,
  662.     "HAVE_TO_RIDE" : CANNOT_SKILL_HAVE_TO_RIDE,
  663. }
  664.  
  665. LEVEL_LIST=["", HORSE_LEVEL1, HORSE_LEVEL2, HORSE_LEVEL3]
  666.  
  667. HEALTH_LIST=[
  668.     HORSE_HEALTH0,
  669.     HORSE_HEALTH1,
  670.     HORSE_HEALTH2,
  671.     HORSE_HEALTH3,
  672. ]
  673.  
  674.  
  675. USE_SKILL_ERROR_CHAT_DICT = {  
  676.     "NEED_EMPTY_BOTTLE" : SKILL_NEED_EMPTY_BOTTLE,
  677.     "NEED_POISON_BOTTLE" : SKILL_NEED_POISON_BOTTLE,
  678.     "ONLY_FOR_GUILD_WAR" : SKILL_ONLY_FOR_GUILD_WAR,
  679. }
  680.  
  681. SHOP_ERROR_DICT = {
  682.     "NOT_ENOUGH_MONEY" : SHOP_NOT_ENOUGH_MONEY,
  683.     "SOLDOUT" : SHOP_SOLDOUT,
  684.     "INVENTORY_FULL" : SHOP_INVENTORY_FULL,
  685.     "INVALID_POS" : SHOP_INVALID_POS,
  686. }
  687.  
  688. STAT_MINUS_DESCRIPTION = {
  689.     "HTH-" : STAT_MINUS_CON,
  690.     "INT-" : STAT_MINUS_INT,
  691.     "STR-" : STAT_MINUS_STR,
  692.     "DEX-" : STAT_MINUS_DEX,
  693. }
  694.  
  695. MODE_NAME_LIST = ( PVP_OPTION_NORMAL, PVP_OPTION_REVENGE, PVP_OPTION_KILL, PVP_OPTION_PROTECT, )
  696. TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, PVP_LEVEL9, PVP_LEVEL10, PVP_LEVEL11, PVP_LEVEL12, )
  697.  
  698. def GetLetterImageName():
  699.     return "season1/icon/scroll_close.tga"
  700. def GetLetterOpenImageName():
  701.     return "season1/icon/scroll_open.tga"
  702. def GetLetterCloseImageName():
  703.     return "season1/icon/scroll_close.tga"
  704.  
  705. if 949 == app.GetDefaultCodePage():
  706.     def EUL(name):
  707.         if GetAuxiliaryWordType(name):
  708.             return "¸¦ "
  709.         else:
  710.             return "À» "
  711.  
  712.     def I(name):
  713.         if GetAuxiliaryWordType(name):
  714.             return "°¡ "
  715.         else:
  716.             return "ÀÌ "
  717.  
  718.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  719.         name = sellItemName
  720.         if sellItemCount > 1:
  721.             name += " "
  722.             name += str(sellItemCount)
  723.             name += "°³"
  724.  
  725.         return name + EUL(name) + str(sellItemPrice) + "³É¿¡ ÆĽðڽÀ´Ï±î?"
  726.  
  727.     def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  728.         name = sellItemName
  729.         if sellItemCount > 1:
  730.             name += " "
  731.             name += str(sellItemCount)
  732.             name += "°³"
  733.  
  734.         return name + EUL(name) + str(sellItemPrice) + "¿¡ »ç½Ã°Ú½À´Ï±î?"
  735.  
  736.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  737.         return attachedItemName+EUL(attachedItemName)+"ºÎÂøÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù"
  738.  
  739.     def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  740.         return attachedItemName+EUL(attachedItemName)+"ºÎÂøÇÒ ¼ö ÀÖ´Â ¼ÒÄÏÀÌ ¾ø½À´Ï´Ù"   
  741.  
  742.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  743.         return attachedItemName+EUL(attachedItemName)+"ºÎÂøÇÒ ¼ö Àִ Ȳ±Ý ¼ÒÄÏÀÌ ¾ø½À´Ï´Ù"  
  744.  
  745.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  746.         name = dropItemName
  747.         if dropItemCount > 1:
  748.             name += " "
  749.             name += str(dropItemCount)
  750.             name += "°³"
  751.  
  752.         return name+EUL(name)+"¹ö¸®½Ã°Ú½À´Ï±î?"
  753.  
  754.     def NumberToMoneyString(number):
  755.         if number <= 0:
  756.             return "0³É"
  757.  
  758.         number = str(number)
  759.         result = CutMoneyString(number, 0, 4, "", "")
  760.         result = CutMoneyString(number, 4, 8, "¸¸", result)
  761.         result = CutMoneyString(number, 8, 12, "¾ï", result)
  762.         result = result + "³É"
  763.  
  764.         return result
  765.        
  766.     def NumberToCoinsString(n) :
  767.         if n <= 0 :
  768.             return "0 %s" % (COINS_SYSTEM_UNIT_WON)
  769.         coins = str(n)
  770.         return "%s %s" % (coins, COINS_SYSTEM_UNIT_WON)
  771.  
  772.        
  773.     def FISHING_NOTIFY(isFish, fishName):
  774.         if isFish:
  775.             return fishName + I(fishName) + "¹® µí ÇÕ´Ï´Ù."
  776.         else:
  777.             return fishName + I(fishName) + "°É¸°µí ÇÕ´Ï´Ù."
  778.  
  779.     def FISHING_SUCCESS(isFish, fishName):
  780.         if isFish:
  781.             return fishName + EUL(fishName) + "Àâ¾Ò½À´Ï´Ù!"
  782.         else:
  783.             return fishName + EUL(fishName) + "¾ò¾ú½À´Ï´Ù!"
  784.  
  785. elif 932 == app.GetDefaultCodePage():
  786.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  787.         if sellItemCount > 1 :
  788.             return "%s %s ŒÂ‚ð %s‚É”„‚è‚Ü‚·‚©H" % ( sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  789.         else:
  790.             return "%s ‚ð %s‚Å”„‚è‚Ü‚·‚©H" % (sellItemName, NumberToMoneyString(sellItemPrice) )
  791.  
  792.     def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  793.         if buyItemCount > 1 :
  794.             return "%s %sŒÂ‚ð %s‚Å”ƒ‚¢‚Ü‚·‚©H" % ( buyItemName, buyItemCount, buyItemPrice )
  795.         else:
  796.             return "%s‚ð %s‚Å”ƒ‚¢‚Ü‚·‚©H" % ( buyItemName, buyItemPrice )
  797.            
  798.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  799.         return "%s‚ð‘•’…‚Å‚«‚È‚¢ƒAƒCƒe?‚Å‚·B" % (attachedItemName)
  800.  
  801.     def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  802.         return "%s‚ð‘•’…‚·‚é?ƒPƒbƒg‚ª‚ ‚è‚Ü‚¹‚ñB" % (attachedItemName)
  803.  
  804.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  805.         return "%s‚ð‘•’…‚Å‚«‚鉩‹à?ƒPƒbƒg‚ª‚ ‚è‚Ü‚¹‚ñB" % (attachedItemName)
  806.        
  807.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  808.         if dropItemCount > 1 :
  809.             return "%s %d ŒÂ‚ðŽÌ‚Ä‚Ü‚·‚©H" % (dropItemName, dropItemCount)
  810.         else
  811.             return "%s‚ðŽÌ‚Ä‚Ü‚·‚©H" % (dropItemName)
  812.  
  813.     def FISHING_NOTIFY(isFish, fishName) :
  814.         if isFish :
  815.             return "%s ‚ªH‚¢‚‚¢‚½‚悤‚Å‚·" % ( fishName )
  816.         else :
  817.             return "%s ‚ª‚©‚©‚Á‚½‚悤‚Å‚·" % ( fishName )
  818.  
  819.     def FISHING_SUCCESS(isFish, fishName) :
  820.         if isFish :
  821.             return "%s ‚ð•ß‚Ü‚¦‚Ü‚µ‚½I" % (fishName)
  822.         else :
  823.             return "%s ‚ðŽè‚É“ü‚ê‚Ü‚µ‚½I" % (fishName)
  824.            
  825.     def NumberToMoneyString(number) :
  826.         if number <= 0 :
  827.             return "0—¼"
  828.  
  829.         number = str(number)
  830.         result = CutMoneyString(number, 0, 4, "", "")
  831.         result = CutMoneyString(number, 4, 8, "–œ", result)
  832.         result = CutMoneyString(number, 8, 12, "‰­", result)
  833.         result = result + "—¼"
  834.  
  835.         return result
  836. elif IsHONGKONG():
  837.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  838.         if sellItemCount > 1 :
  839.             return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  840.         else:
  841.             return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  842.  
  843.     def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  844.         if buyItemCount > 1 :
  845.             return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  846.         else:
  847.             return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  848.            
  849.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  850.         return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  851.  
  852.     def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  853.         return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  854.  
  855.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  856.         return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  857.        
  858.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  859.         if dropItemCount > 1 :
  860.             return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  861.         else
  862.             return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  863.  
  864.     def FISHING_NOTIFY(isFish, fishName) :
  865.         if isFish :
  866.             return FISHING_NOTIFY1 % ( fishName )
  867.         else :
  868.             return FISHING_NOTIFY2 % ( fishName )
  869.  
  870.     def FISHING_SUCCESS(isFish, fishName) :
  871.         if isFish :
  872.             return FISHING_SUCCESS1 % (fishName)
  873.         else :
  874.             return FISHING_SUCCESS2 % (fishName)
  875.            
  876.     def NumberToMoneyString(number) :
  877.         if number <= 0 :
  878.             return "0 %s" % (MONETARY_UNIT0)
  879.  
  880.         number = str(number)
  881.         result = CutMoneyString(number, 0, 4,   "", "")
  882.         result = CutMoneyString(number, 4, 8,   MONETARY_UNIT1, result)
  883.         result = CutMoneyString(number, 8, 12,  MONETARY_UNIT2, result)
  884.         result = result + MONETARY_UNIT0
  885.  
  886.         return result
  887. elif IsNEWCIBN() or IsCIBN10():
  888.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  889.         if sellItemCount>1:
  890.             return "È·¶¨Òª°Ñ%s¸ö%sÒÔ%s½ð±ÒÂôµôÂð£¿" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  891.         else:
  892.             return "È·¶¨Òª°Ñ%sÒÔ%s½ð±ÒÂôµôÂð£¿" % (sellItemName, str(sellItemPrice))
  893.  
  894.     def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  895.         if sellItemCount>1:
  896.             return "È·¶¨Òª°Ñ%s¸ö%sÒÔ%s½ð±ÒÂò½øÂð£¿" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  897.         else:
  898.             return "È·¶¨Òª°Ñ%sÒÔ%s½ð±ÒÂò½øÂð£¿" % (sellItemName, str(sellItemPrice))
  899.  
  900.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  901.         return "ÎÞ·¨ÏâǶ%s µÄ×°±¸" % (attachedItemName)
  902.  
  903.     def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  904.         return "ûÓпÉÒÔÏâǶ%s µÄ¿×" % (attachedItemName)
  905.  
  906.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  907.         return "ûÓпÉÒÔÏâǶ%s µÄ»Æ½ð¿×" % (attachedItemName)
  908.  
  909.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  910.         if dropItemCount>1:
  911.             return "È·¶¨ÒªÈÓµô%d¸ö%sÂð?" % (dropItemCount, dropItemName)
  912.         else:
  913.             return "È·¶¨ÒªÈÓµô%sÂð?" % (dropItemName)
  914.  
  915.     def FISHING_NOTIFY(isFish, fishName):
  916.         if isFish:
  917.             return fishName + "ÉϹ³ÁË¡£"
  918.         else:
  919.             return "µö×Å" + fishName + "ÁË¡£"
  920.  
  921.     def FISHING_SUCCESS(isFish, fishName):
  922.         if isFish:
  923.             return "µö×Å" + fishName + "ÁË¡£"
  924.         else:
  925.             return "»ñµÃ" + fishName + "ÁË¡£"
  926.  
  927.     def NumberToMoneyString(number):
  928.  
  929.         if number <= 0:
  930.             return "0Á½"
  931.  
  932.         number = str(number)
  933.         result = CutMoneyString(number, 0, 4, "", "")
  934.         result = CutMoneyString(number, 4, 8, "Íò", result)
  935.         result = CutMoneyString(number, 8, 12, "ÒÚ", result)
  936.         result = result + "Á½"
  937.  
  938.         return result
  939. elif IsEUROPE() and not IsWE_KOREA() and not IsYMIR():
  940.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  941.         if sellItemCount > 1 :
  942.             return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  943.         else:
  944.             return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  945.  
  946.     def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  947.         if buyItemCount > 1 :
  948.             return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  949.         else:
  950.             return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  951.            
  952.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  953.         return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  954.  
  955.     def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  956.         return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  957.  
  958.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  959.         return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  960.        
  961.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  962.         if dropItemCount > 1 :
  963.             return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  964.         else
  965.             return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  966.  
  967.     def FISHING_NOTIFY(isFish, fishName) :
  968.         if isFish :
  969.             return FISHING_NOTIFY1 % ( fishName )
  970.         else :
  971.             return FISHING_NOTIFY2 % ( fishName )
  972.  
  973.     def FISHING_SUCCESS(isFish, fishName) :
  974.         if isFish :
  975.             return FISHING_SUCCESS1 % (fishName)
  976.         else :
  977.             return FISHING_SUCCESS2 % (fishName)
  978.            
  979.     def NumberToMoneyString(n) :
  980.         if n <= 0 :
  981.             return "0 %s" % (MONETARY_UNIT0)
  982.  
  983.         return "%s %s" % ('.'.join([ i-3<0 and str(n)[:i] or str(n)[i-3:i] for i in range(len(str(n))%3, len(str(n))+1, 3) if i ]), MONETARY_UNIT0)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement