Guest User

Untitled

a guest
May 4th, 2020
101
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 32.69 KB | None | 0 0
  1. import app
  2. import constInfo
  3.  
  4. MAP_TREE2 = "MAP_TREE2"
  5.  
  6. APP_TITLE = "M2A"
  7.  
  8. BLEND_POTION_NO_TIME = "BLEND_POTION_NO_TIME"
  9. BLEND_POTION_NO_INFO = "BLEND_POTION_NO_INFO"
  10.  
  11. GUILD_HEADQUARTER = "Main Building"
  12. GUILD_FACILITY = "Facility"
  13. GUILD_OBJECT = "Object"
  14. GUILD_MEMBER_COUNT_INFINITY = "INFINITY"
  15.  
  16. LOGIN_FAILURE_WEB_BLOCK = "BLOCK_LOGIN(WEB)"
  17. LOGIN_FAILURE_BLOCK_LOGIN = "BLOCK_LOGIN"
  18. CHANNEL_NOTIFY_FULL = "CHANNEL_NOTIFY_FULL"
  19.  
  20. GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/GuildBuildingList.txt"
  21.  
  22. GUILD_MARK_MIN_LEVEL = "3"
  23. GUILD_MARK_NOT_ENOUGH_LEVEL = "±ćµĺ·ąş§ 3ŔĚ»ó şÎĹÍ °ˇ´ÉÇŐ´Ď´Ů."
  24.  
  25. ERROR_MARK_UPLOAD_NEED_RECONNECT = "UploadMark: Reconnect to game"
  26. ERROR_MARK_CHECK_NEED_RECONNECT = "CheckMark: Reconnect to game"
  27.  
  28. VIRTUAL_KEY_ALPHABET_LOWERS  = r"[1234567890]/qwertyuiop\=asdfghjkl;`'zxcvbnm.,"
  29. VIRTUAL_KEY_ALPHABET_UPPERS  = r'{1234567890}?QWERTYUIOP|+ASDFGHJKL:~"ZXCVBNM<>'
  30. VIRTUAL_KEY_SYMBOLS    = '!@#$%^&*()_+|{}:"<>?~'
  31. VIRTUAL_KEY_NUMBERS    = "1234567890-=\[];',./`"
  32.  
  33. __IS_YMIR       = "YMIR" == app.GetLocaleServiceName() 
  34. __IS_JAPAN      = "JAPAN" == app.GetLocaleServiceName()
  35. __IS_ENGLISH    = "ENGLISH" == app.GetLocaleServiceName()  
  36. __IS_HONGKONG   = "HONGKONG" == app.GetLocaleServiceName()
  37. __IS_NEWCIBN    = "NEWCIBN" == app.GetLocaleServiceName()
  38. __IS_TAIWAN     = "TAIWAN" == app.GetLocaleServiceName()
  39. __IS_EUROPE     = "EUROPE" == app.GetLocaleServiceName()       
  40. __IS_CANADA     = "locale/ca" == app.GetLocalePath()
  41. __IS_BRAZIL     = "locale/br" == app.GetLocalePath()
  42. __IS_SINGAPORE  = "locale/sg" == app.GetLocalePath()
  43. __IS_VIETNAM    = "locale/vn" == app.GetLocalePath()
  44. __IS_ARABIC     = "locale/ae" == app.GetLocalePath()
  45. __IS_CIBN10     = "locale/cibn10" == app.GetLocalePath()
  46.  
  47. if __IS_TAIWAN:
  48.     __IS_HONGKONG = TRUE
  49.  
  50. if __IS_CANADA:
  51.     __IS_EUROPE = TRUE
  52.  
  53. def IsYMIR():
  54.     global __IS_YMIR
  55.     return __IS_YMIR
  56.  
  57. def IsJAPAN():
  58.     global __IS_JAPAN
  59.     return __IS_JAPAN
  60.  
  61. def IsENGLISH():
  62.     global __IS_ENGLISH
  63.     return __IS_ENGLISH
  64.  
  65. def IsHONGKONG():
  66.     global __IS_HONGKONG
  67.     return __IS_HONGKONG
  68.  
  69. def IsTAIWAN():
  70.     global __IS_TAIWAN
  71.     return __IS_TAIWAN
  72.  
  73. def IsNEWCIBN():
  74.     global __IS_NEWCIBN
  75.     return __IS_NEWCIBN
  76.  
  77. def IsCIBN10():
  78.     global __IS_CIBN10
  79.     return __IS_CIBN10
  80.    
  81. def IsEUROPE():
  82.     global __IS_EUROPE
  83.     return __IS_EUROPE
  84.  
  85. def IsCANADA():
  86.     global __IS_CANADA
  87.     return __IS_CANADA
  88.  
  89. def IsBRAZIL():
  90.     global __IS_BRAZIL
  91.     return __IS_BRAZIL
  92.  
  93. def IsVIETNAM():
  94.     global __IS_VIETNAM
  95.     return __IS_VIETNAM
  96.  
  97. def IsSINGAPORE():
  98.     global __IS_SINGAPORE
  99.     return __IS_SINGAPORE
  100.    
  101. def IsARABIC():
  102.     global __IS_ARABIC
  103.     return __IS_ARABIC
  104.  
  105. # SUPPORT_NEW_KOREA_SERVER
  106. def LoadLocaleData():
  107.     if IsYMIR():
  108.         import net
  109.         SERVER = "ą«˝Ö Ľ­ąö"
  110.         if SERVER == net.GetServerInfo()[:len(SERVER)]:
  111.             app.SetCHEONMA(0)
  112.             app.LoadLocaleData("locale/korea")
  113.             constInfo.ADD_DEF_BONUS_ENABLE = 0
  114.         else:
  115.             app.SetCHEONMA(1)
  116.             app.LoadLocaleData("locale/ymir")
  117.             constInfo.ADD_DEF_BONUS_ENABLE = 1
  118.     else:
  119.         app.LoadLocaleData(app.GetLocalePath())
  120.  
  121. def IsCHEONMA():
  122.     if IsYMIR():
  123.         return app.IsCHEONMA()
  124.     else:
  125.         return 0
  126. # END_OF_SUPPORT_NEW_KOREA_SERVER
  127.  
  128. def mapping(**kwargs): return kwargs
  129.  
  130. def SNA(text)
  131.     def f(x):
  132.         return text
  133.     return f
  134.  
  135. def SA(text):
  136.     def f(x):
  137.         return text % x
  138.     return f
  139.  
  140. def LoadLocaleFile(srcFileName, localeDict):
  141.  
  142.     funcDict = {"SA":SA, "SNA":SNA}
  143.  
  144.     lineIndex = 1
  145.  
  146.     try:
  147.         lines = pack_open(srcFileName, "r").readlines()
  148.     except IOError:
  149.         import dbg
  150.         dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
  151.         app.Abort()
  152.  
  153.     for line in lines:
  154.         try:       
  155.             tokens = line[:-1].split("\t")
  156.             if len(tokens) == 2:
  157.                 localeDict[tokens[0]] = tokens[1]      
  158.             elif len(tokens) >= 3:
  159.                 type = tokens[2].strip()
  160.                 if type:
  161.                     localeDict[tokens[0]] = funcDict[type](tokens[1])
  162.                 else:
  163.                     localeDict[tokens[0]] = tokens[1]
  164.             else:
  165.                 raise RuntimeError, "Unknown TokenSize"
  166.  
  167.             lineIndex += 1
  168.         except:
  169.             import dbg
  170.             dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
  171.             raise
  172.  
  173.  
  174.    
  175. all = ["locale","error"]
  176.  
  177. if IsJAPAN():
  178.     FN_GM_MARK = "locale/japan/effect/gm.mse"  
  179.     LOCALE_FILE_NAME = "locale/japan/locale_game.txt"
  180.     constInfo.IN_GAME_SHOP_ENABLE = 1
  181. elif IsENGLISH():
  182.     FN_GM_MARK = "locale/english/effect/gm.mse"
  183.     LOCALE_FILE_NAME = "locale/english/locale_game.txt"
  184. elif IsHONGKONG():
  185.     APP_TITLE = "ľÔŻTOnline"
  186.     FN_GM_MARK = "locale/hongkong/effect/gm.mse"   
  187.     LOCALE_FILE_NAME = "locale/hongkong/locale_game.txt"
  188. elif IsNEWCIBN():
  189.     FN_GM_MARK = "locale/newcibn/effect/gm.mse"
  190.     LOCALE_FILE_NAME = "locale/newcibn/locale_game.txt"
  191.     constInfo.IN_GAME_SHOP_ENABLE = 0
  192. elif IsEUROPE():
  193.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  194.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  195. else:
  196.     FN_GM_MARK = "locale/ymir/effect/gm.mse"   
  197.     LOCALE_FILE_NAME = "locale/ymir/locale_game.txt"
  198.  
  199.     constInfo.IN_GAME_SHOP_ENABLE = 1
  200.  
  201. LoadLocaleFile(LOCALE_FILE_NAME, locals())
  202.  
  203. ########################################################################################################
  204. ## NOTE : ľĆŔĚĹŰŔ» ąö¸±¶§ "ą«ľůŔ»/¸¦ ąö¸®˝Ă°Ú˝Ŕ´Ď±î?" ą®ŔÚż­ŔÇ Á¶»ç Ľ±ĹĂŔ» Ŕ§ÇŃ ÄÚµĺ
  205. dictSingleWord = {
  206.     "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,
  207. }
  208.  
  209. dictDoubleWord = {
  210.     "°ˇ":1, "°Ľ":1, "°Ĺ":1, "°Ü":1, "°í":1, "±ł":1, "±¸":1, "±Ô":1, "±×":1, "±â":1, "°ł":1, "°Â":1, "°Ô":1, "°č":1, "°ú":1, "±Ą":1, "±Ĺ":1, "±Ë":1, "±«":1, "±Í":1, "±á":1,
  211.     "±î":1, "˛Ą":1, "˛¨":1, "˛¸":1, "˛ż":1, "˛Ř":1, "˛Ů":1, "˛ó":1, "˛ô":1, "ł˘":1, "±ú":1, "ƒĆ":1, "˛˛":1, "˛ľ":1, "˛Ę":1, "˛Ď":1, "˛ă":1, "˛ç":1, "˛Ň":1, "˛î":1, "…Ę":1,
  212.     "łŞ":1, "łÄ":1, "łĘ":1, "łŕ":1, "łë":1, "´˘":1, "´©":1, "´ş":1, "´Ŕ":1, "´Ď":1, "ł»":1, "†v":1, "ł×":1, "łé":1, "łö":1, "‡R":1, "´˛":1, "´´":1, "łú":1, "´µ":1, "´Ě":1,
  213.     "´Ů":1, "´ô":1, "´ő":1, "µ®":1, "µµ":1, "µÍ":1, "µÎ":1, "µŕ":1, "µĺ":1, "µđ":1, "´ë":1, "ˆŰ":1, "µĄ":1, "µł":1, "µÂ":1, "µĹ":1, "µÖ":1, "µŘ":1, "µÇ":1, "µÚ":1, "µď":1,
  214.     "µű":1, "‹x":1, "¶°":1, "¶Ĺ":1, "¶Ç":1, "ŚĂ":1, "¶Ń":1, "ŤŹ":1, "¶ß":1, "¶ě":1, "¶§":1, "‹š":1, "¶Ľ":1, "‹ó":1, "¶Ě":1, "¶Î":1, "Śô":1, "¶Ř":1, "¶Ď":1, "¶Ů":1, "¶ç":1,
  215.     "¶ó":1, "·Ş":1, "·Ż":1, "·Á":1, "·Î":1, "·á":1, "·ç":1, "·ů":1, "¸Ł":1, "¸®":1, "·ˇ":1, "Žm":1, "·ą":1, "·Ę":1, "·Ö":1, "ŹO":1, "·ď":1, "·ń":1, "·Ú":1, "·ň":1, "l":1,
  216.     "¸¶":1, "¸Ď":1, "¸Ó":1, "¸ç":1, "¸đ":1, "ą¦":1, "ą«":1, "ąÂ":1, "ąÇ":1, "ąĚ":1, "¸Ĺ":1, "Ů":1, "¸Ţ":1, "¸ď":1, "¸ú":1, "‘Ŕ":1, "ąą":1, "ąľ":1, "¸ţ":1, "ąż":1, "’Ţ":1,
  217.     "ąŮ":1, "ąň":1, "ąö":1, "ş­":1, "ş¸":1, "şĚ":1, "şÎ":1, "şä":1, "şę":1, "şń":1, "ąč":1, "“Ž":1, "şŁ":1, "ş¶":1, "şÁ":1, "şÄ":1, "şŰ":1, "şŢ":1, "şĆ":1, "şß":1, "•‘":1,
  218.     "şü":1, "»˛":1, "»µ":1, "»Ŕ":1, "»Ç":1, "»Ď":1, "»Ń":1, "»Ř":1, "»Ú":1, "»ß":1, "»©":1, "•ű":1, "»ľ":1, "–§":1, "–Ř":1, "–ô":1, "—¨":1, "—Ä":1, "»Î":1, "—ŕ":1, "˜u":1,
  219.     "»ç":1, "»ţ":1, "Ľ­":1, "ĽĹ":1, "ĽŇ":1, "Ľî":1, "Ľö":1, "˝´":1, "˝ş":1, "˝Ă":1, "»ő":1, "Ľ¨":1, "ĽĽ":1, "ĽÎ":1, "ĽÝ":1, "Ľâ":1, "˝¤":1, "˝¦":1, "Ľč":1, "˝¬":1, "šĂ":1,
  220.     "˝Î":1, "›X":1, "˝á":1, "›Ç":1, "˝î":1, "ľ¤":1, "ľĄ":1, "ťo":1, "ľ˛":1, "ľľ":1, "˝Ř":1, "›y":1, "˝ę":1, "›ă":1, "˝÷":1, "˝ű":1, "ľ¬":1, "ľ®":1, "˝ý":1, "ľŻ":1, "ľş":1,
  221.     "ľĆ":1, "ľß":1, "ľî":1, "ż©":1, "żŔ":1, "żä":1, "żě":1, "ŔŻ":1, "Ŕ¸":1, "ŔĚ":1, "ľÖ":1, "ľę":1, "żˇ":1, "żą":1, "żÍ":1, "żÖ":1, "żö":1, "żţ":1, "żÜ":1, "Ŕ§":1, "ŔÇ":1,
  222.     "ŔÚ":1, "Ŕđ":1, "Ŕú":1, "Á®":1, "Á¶":1, "ÁŇ":1, "ÁÖ":1, "Áę":1, "Áî":1, "Áö":1, "Ŕç":1, "Ŕ÷":1, "Á¦":1, "Áµ":1, "ÁÂ":1, "ÁČ":1, "Áŕ":1, "Áâ":1, "ÁË":1, "Áă":1, "Łp":1,
  223.     "ÂĄ":1, "Âą":1, "ÂĽ":1, "ÂÇ":1, "ÂÉ":1, "§c":1, "ÂŢ":1, "Âé":1, "Âę":1, "Âî":1, "°":1, "¤Š":1, "ÂĹ":1, "Ą™":1, "ÂŇ":1, "ÂÖ":1, "Âĺ":1, "¨R":1, "ÂŘ":1, "Âč":1, "©n":1,
  224.     "Â÷":1, "Ă­":1, "Ăł":1, "ĂÄ":1, "ĂĘ":1, "ĂÝ":1, "Ăß":1, "Ăň":1, "Ă÷":1, "ġ":1, "ä":1, "މ":1, "ĂĽ":1, "ĂÇ":1, "ĂŇ":1, "¬‚":1, "Ăç":1, "Ăé":1, "ĂÖ":1, "Ăë":1, "ŻM":1,
  225.     "Ä«":1, "ÄĽ":1, "Äż":1, "ÄŃ":1, "ÄÚ":1, "Äě":1, "Äí":1, "ĹĄ":1, "Ĺ©":1, "Ĺ°":1, "Äł":1, "°m":1, "ÄÉ":1, "ÄŮ":1, "Äâ":1, "Äč":1, "Äő":1, "Äů":1, "Äę":1, "Äű":1, "´”":1,
  226.     "Ÿ":1, "ĹË":1, "ĹÍ":1, "Ĺß":1, "Ĺä":1, "Ĺô":1, "Ĺő":1, "Ć©":1, "Ć®":1, "ĆĽ":1, "ĹÂ":1, "¶O":1, "Ĺ×":1, "Ĺâ":1, "Ĺí":1, "Ĺď":1, "Ĺý":1, "ơ":1, "Ĺđ":1, "Ƣ":1, "Ć·":1,
  227.     "ĆÄ":1, "ĆŮ":1, "ĆŰ":1, "Ćě":1, "Ć÷":1, "ÇĄ":1, "ÇŞ":1, "Ç»":1, "ÇÁ":1, "ÇÇ":1, "ĆĐ":1, "»—":1, "Ćä":1, "Ćó":1, "ǡ":1, "˝Ť":1, "Ç´":1, "żR":1, "ÇŁ":1, "Ƕ":1, "Ŕc":1,
  228.     "ÇĎ":1, "Çá":1, "Çă":1, "Çô":1, "ČŁ":1, "Čż":1, "ČÄ":1, "ČŢ":1, "Čĺ":1, "Č÷":1, "ÇŘ":1, "Á…":1, "Çě":1, "Çý":1, "Č­":1, "Čł":1, "ČĚ":1, "ČŃ":1, "ȸ":1, "ČÖ":1, "Čń":1,
  229. }
  230.  
  231. locale = mapping(
  232. )
  233.  
  234.  
  235. def GetAuxiliaryWordType(text):
  236.  
  237.     textLength = len(text)
  238.  
  239.     if textLength > 1:
  240.  
  241.         singleWord = text[-1]
  242.  
  243.         if (singleWord >= '0' and singleWord <= '9') or\
  244.             (singleWord >= 'a' and singleWord <= 'z') or\
  245.             (singleWord >= 'A' and singleWord <= 'Z'):
  246.             if not dictSingleWord.has_key(singleWord):
  247.                 return 1
  248.  
  249.         elif dictDoubleWord.has_key(text[-2:]):
  250.             return 1
  251.  
  252.     return 0
  253.  
  254.  
  255.  
  256. def CutMoneyString(sourceText, startIndex, endIndex, insertingText, backText):
  257.  
  258.     sourceLength = len(sourceText)
  259.  
  260.     if sourceLength < startIndex:
  261.         return backText
  262.  
  263.     text = sourceText[max(0, sourceLength-endIndex):sourceLength-startIndex]
  264.  
  265.     if not text:
  266.         return backText
  267.  
  268.     if int(text) <= 0:
  269.         return backText
  270.  
  271.     text = str(int(text))
  272.  
  273.     if backText:
  274.         backText = " " + backText
  275.  
  276.     return text + insertingText + backText
  277.  
  278. def SecondToDHM(time):
  279.  
  280.     if time < 60:
  281.         return "0" + MINUTE
  282.  
  283.     second = int(time % 60)
  284.     minute = int((time / 60) % 60)
  285.     hour = int((time / 60) / 60) % 24
  286.     day = int(int((time / 60) / 60) / 24)
  287.  
  288.     text = ""
  289.  
  290.     if day > 0:
  291.         text += str(day) + DAY
  292.         text += " "
  293.  
  294.     if hour > 0:
  295.         text += str(hour) + HOUR
  296.         text += " "
  297.  
  298.     if minute > 0:
  299.         text += str(minute) + MINUTE
  300.  
  301.     return text
  302.  
  303. def SecondToHM(time):
  304.  
  305.     if time < 60:
  306.         return "0" + MINUTE
  307.  
  308.     second = int(time % 60)
  309.     minute = int((time / 60) % 60)
  310.     hour = int((time / 60) / 60)
  311.  
  312.     text = ""
  313.  
  314.     if hour > 0:
  315.         text += str(hour) + HOUR
  316.         if hour > 0:
  317.             text += " "
  318.  
  319.     if minute > 0:
  320.         text += str(minute) + MINUTE
  321.  
  322.     return text
  323.  
  324.  
  325. def GetAlignmentTitleName(alignment):
  326.     if alignment >= 12000:
  327.         return TITLE_NAME_LIST[0]
  328.     elif alignment >= 8000:
  329.         return TITLE_NAME_LIST[1]
  330.     elif alignment >= 4000:
  331.         return TITLE_NAME_LIST[2]
  332.     elif alignment >= 1000:
  333.         return TITLE_NAME_LIST[3]
  334.     elif alignment >= 0:
  335.         return TITLE_NAME_LIST[4]
  336.     elif alignment > -4000:
  337.         return TITLE_NAME_LIST[5]
  338.     elif alignment > -8000:
  339.         return TITLE_NAME_LIST[6]
  340.     elif alignment > -12000:
  341.         return TITLE_NAME_LIST[7]
  342.  
  343.     return TITLE_NAME_LIST[8]
  344.  
  345.  
  346. OPTION_PVPMODE_MESSAGE_DICT = {
  347.     0 : PVP_MODE_NORMAL,
  348.     1 : PVP_MODE_REVENGE,
  349.     2 : PVP_MODE_KILL,
  350.     3 : PVP_MODE_PROTECT,
  351.     4 : PVP_MODE_GUILD,
  352. }
  353.  
  354. error = mapping(
  355.     CREATE_WINDOW = GAME_INIT_ERROR_MAIN_WINDOW,
  356.     CREATE_CURSOR = GAME_INIT_ERROR_CURSOR,
  357.     CREATE_NETWORK = GAME_INIT_ERROR_NETWORK,
  358.     CREATE_ITEM_PROTO = GAME_INIT_ERROR_ITEM_PROTO,
  359.     CREATE_MOB_PROTO = GAME_INIT_ERROR_MOB_PROTO,
  360.     CREATE_NO_DIRECTX = GAME_INIT_ERROR_DIRECTX,
  361.     CREATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_NOT_EXIST,
  362.     CREATE_NO_APPROPRIATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_BAD_PERFORMANCE,
  363.     CREATE_FORMAT = GAME_INIT_ERROR_GRAPHICS_NOT_SUPPORT_32BIT,
  364.     NO_ERROR = ""
  365. )
  366.  
  367.  
  368. GUILDWAR_NORMAL_DESCLIST = [GUILD_WAR_USE_NORMAL_MAP, GUILD_WAR_LIMIT_30MIN, GUILD_WAR_WIN_CHECK_SCORE]
  369. GUILDWAR_WARP_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_WIPE_OUT_GUILD, GUILD_WAR_REWARD_POTION]
  370. GUILDWAR_CTF_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_TAKE_AWAY_FLAG1, GUILD_WAR_WIN_TAKE_AWAY_FLAG2, GUILD_WAR_REWARD_POTION]
  371.  
  372. MINIMAP_ZONE_NAME_DICT = {
  373.     "metin2_map_a1"  : MAP_A1,
  374.     "map_a2"         : MAP_A2,
  375.     "metin2_map_a3"  : MAP_A3,
  376.     "metin2_map_b1"  : MAP_B1,
  377.     "map_b2"         : MAP_B2,
  378.     "metin2_map_b3"  : MAP_B3,
  379.     "metin2_map_c1"  : MAP_C1,
  380.     "map_c2"         : MAP_C2,
  381.     "metin2_map_c3"  : MAP_C3,
  382.     "map_n_snowm_01" : MAP_SNOW,
  383.     "metin2_map_n_flame_01" : MAP_FLAME,
  384.     "metin2_map_n_desert_01" : MAP_DESERT,
  385.     "metin2_map_milgyo" : MAP_TEMPLE,
  386.     "metin2_map_spiderdungeon" : MAP_SPIDER,
  387.     "metin2_map_deviltower1" : MAP_SKELTOWER,
  388.     "metin2_map_guild_01" : MAP_AG,
  389.     "metin2_map_guild_02" : MAP_BG,
  390.     "metin2_map_guild_03" : MAP_CG,
  391.     "metin2_map_trent" : MAP_TREE,
  392.     "metin2_map_trent02" : MAP_TREE2,
  393. }
  394.  
  395.  
  396.  
  397. JOBINFO_TITLE = [
  398.     [JOB_WARRIOR0, JOB_WARRIOR1, JOB_WARRIOR2,],
  399.     [JOB_ASSASSIN0, JOB_ASSASSIN1, JOB_ASSASSIN2,],
  400.     [JOB_SURA0, JOB_SURA1, JOB_SURA2,],
  401.     [JOB_SHAMAN0, JOB_SHAMAN1, JOB_SHAMAN2,],
  402. ]
  403.  
  404. JOBINFO_DATA_LIST = [
  405.     [
  406.         ["Ÿ°íł­ żë¸Í°ú ±ÁČ÷Áö ľĘ´Â ą«»çŔÇ",
  407.         "±â°ł¸¦ »ç¶÷µéŔş ŔĎÄĂľî [żëŔÚ]¶ó°í",
  408.         "şÎ¸Ą´Ů. ľî¶°ÇŃ Ŕ§±âżˇĽ­µµ ±×µéŔş ",
  409.         "µÚ·Î ą°·ŻĽ­Áö ľĘŔ¸¸ç, ´Ůġ°í żňÁ÷",
  410.         "Ṟ́â Čűµç µż·á¸¦ Ŕ§ÇŘ ´Ü˝ĹŔ¸·Î",
  411.         "Ŕűµé°ú ¸¶ÁÖ ˝Îżě±âµµ ÇŃ´Ů. Ŕ̵éŔş",
  412.         "Ŕß ´Ü·ĂµČ ±ŮŔ°°ú Čű, °­·ÂÇŃ °ř°Ý·Â",
  413.         "Ŕ¸·Î ŔüŔĺ ĂÖĽ±µÎżˇĽ­ °ř°ÝÁřŔ¸·Î",
  414.         "Č°ľŕÇŃ´Ů.                      ",],
  415.         ["°ˇŔĺ ŔĎąÝŔűŔÎ °ř°ÝÇü ą«»ç·Î, ",
  416.         "ŔűÁ˘Ŕüżˇ µű¸Ą Á÷Á˘ °ř°ÝŔ¸·Î ŔüŔĺ",
  417.         "żˇĽ­ Č°ľŕÇŃ´Ů. ±şÁ÷ ĆŻĽş»ó ±Ů·ÂŔ»",
  418.         "¸ŢŔÎŔ¸·Î ˝şĹÝ Ć÷ŔÎĆ®¸¦ ĹőŔÚÇϵÇ, ",
  419.         "ŔűÁ˘Ŕüżˇ µű¸Ą »ý¸í·Â / ąćľî·Â",
  420.         "Č®ş¸¸¦ Ŕ§ÇŘ ĂĽ·ÂŔ» żĂ¸°´Ů. ¶ÇÇŃ",
  421.         "°ř°ÝŔÇ Á¤Č®ĽşŔ» łôṞ́â Ŕ§ÇŘ ąÎø",
  422.         "żˇµµ Ć÷ŔÎĆ®¸¦ ĹőŔÚÇŇ ÇĘżä°ˇ ŔÖ´Ů.",],
  423.         ["»ó´ç ĽöÁŘŔÇ Á¤˝Ĺ·ÂŔ» ŔĚżëÇĎ´Â",
  424.         "Áß/±Ů°Ĺ¸® Á˘ŔüÇü ą«»ç·Î, °˘ ±âĽú",
  425.         "ÇĎłŞÇĎłŞŔÇ łôŔş °ř°Ý·ÂŔ¸·Î ŔüŔ忡Ľ­",
  426.         "Č°ľŕÇŃ´Ů. ±şÁ÷ ĆŻĽş»ó ±Ů·ÂŔ» ¸ŢŔÎ",
  427.         "Ŕ¸·Î ˝şĹČ Ć÷ŔÎĆ®¸¦ ĹőŔÚÇϵÇ, ",
  428.         "Áß/±Ů°Ĺ¸® °ř°ÝŔÇ Á¤Č®Ľş°ú ¸íÁß·üŔ»",
  429.         "Ŕ§ÇŘ ąÎøŔ» żĂ¸°´Ů. ¶ÇÇŃ Á˘Ŕü ˝Ă ",
  430.         "Ŕű °ř°Ýżˇ µű¸Ą »ý¸í·Â / ąćľî·Â",
  431.         "Č®ş¸¸¦ Ŕ§ÇŘ ĂĽ·Âżˇµµ Ć÷ŔÎĆ®¸¦",
  432.         "ĹőŔÚÇŇ ÇĘżä°ˇ ŔÖ´Ů.        ",],       
  433.     ],
  434.     [
  435.         ["ŔÚ°´Ŕş ľî¶°ÇŃ »óȲżˇĽ­µµ ŔÚ˝ĹŔÇ",
  436.         "¸öŔ» Ľű±â°í ŔşąĐÇŃ ľîµŇŔÇ ŔÓą«¸¦",
  437.         "ĽöÇŕÇϸ鼭 ŔüŔĺŔÇ ČÄŔ§¸¦ ÁöżřÇĎ´Â",
  438.         "ŔÚµéŔĚ´Ů. Ŕ̵éŔş ľĆÁÖ şü¸Ł°í ˝ĹĽÓ",
  439.         "Çϸç, şńÇŇ µĄ ľřŔĚ °ú°¨ÇĎ°í ŔýÁ¦µČ",
  440.         "ÇൿŔ¸·Î ŔűŔÇ ±ŢĽŇżˇ ġ¸íŸ¸¦ łŻ¸®",
  441.         "µÇ, ŔüŔ忡Ľ± ŔűÁřŔ» ÇâÇŘ ą«ĽöÇŃ",
  442.         "Č­»ěŔ» ł»»ŐŔ¸¸ç ŔÚ˝ĹŔÇ żë¸ÍŔ»",
  443.         "Ľ±ş¸ŔδŮ.                   "],
  444.         ["µÎĽŐ ´Ü°ËŔ» ÁÖą«±â·Î ´Ů·ç¸ç, ˝ĹĽÓ",
  445.         "ÇĎ°Ô Äˇ°í şüÁö´Â ŔÚ°´ ĆŻŔŻŔÇ żňÁ÷ŔÓ",
  446.         "Ŕ¸·Î ŔüŔ忡Ľ­ Č°ľŕÇŃ´Ů. ±şÁ÷ ĆŻĽş»ó",
  447.         "ąÎøŔ» ¸ŢŔÎŔ¸·Î ˝şĹÝ Ć÷ŔÎĆ®¸¦ ĹőŔÚ",
  448.         "ÇϵÇ, ±Ů·ÂŔ» żĂ·Á °ř°Ý·ÂŔ» łôŔδŮ.",
  449.         "¶ÇÇŃ ±ŮÁ˘Ŕüżˇ µű¸Ą »ý¸í·Â/ąćľî·Â ",
  450.         "»ó˝ÂŔ» Ŕ§ÇŘ ĂĽ·Âżˇµµ Ć÷ŔÎĆ®¸¦",
  451.         "ĹőŔÚÇŇ ÇĘżä°ˇ ŔÖ´Ů.          ",],
  452.         ["Č°Ŕ» ÁÖą«±â·Î ´Ů·ç¸ç, ±ä ˝ĂľßżÍ",
  453.         "»çÁ¤°Ĺ¸®żˇ µű¸Ą żř°Ĺ¸® °ř°ÝŔ¸·Î",
  454.         "ŔüŔ忡Ľ­ Č°ľŕÇŃ´Ů. ±şÁ÷ ĆŻĽş»ó",
  455.         "°ř°Ý Ľş°ř·üŔÇ Áő°ˇ¸¦ Ŕ§ÇŘ ąÎøŔ»",
  456.         "¸ŢŔÎŔ¸·Î żĂ·Áľß Çϸç, żř°Ĺ¸®",
  457.         "°ř°ÝŔÇ µĄąĚÁö Áő°ˇ¸¦ Ŕ§ÇŘ ±Ů·ÂŔ»",
  458.         "żĂ¸± ÇĘżä°ˇ ŔÖ´Ů. ¶ÇÇŃ Ŕűµéżˇ°Ô",
  459.         "Ć÷Ŕ§µÇľúŔ» ˝Ă, Ŕű °ř°Ýżˇ ąöĆĽ±â",
  460.         "Ŕ§ÇŃ »ý¸í·Â/ąćľî·Â »ó˝ÂŔ» Ŕ§ÇŘ",
  461.         "ĂĽ·Âżˇµµ Ć÷ŔÎĆ®¸¦ ĹőŔÚÇŇ ÇĘżä°ˇ",
  462.         "ŔÖ´Ů.                        ", ],
  463.     ],
  464.     [
  465.         ["Ľö¶ó´Â [µ¶Ŕş µ¶Ŕ¸·Î]ŔÇ ĽÓĽşŔ¸·Î",
  466.         "⼳µČ ĆŻĽö ĽÓĽşŔÇ ±şÁ÷ŔĚ´Ů. ",
  467.         "±×µéŔş ŔüŔ忡Ľ­ ŔűµéŔÇ »ç±â¸¦ ŔúÇĎ",
  468.         "˝ĂĹ°°í, ľÇ¸¶ŔÇ ČűŔ» ˝ÇŔş ¸¶ĹşŔ¸·Î",
  469.         "ŔűŔÇ żµČĄ°ú Ŕ°˝ĹŔ» Áţą¶°µ´Ů. ¶§·Î",
  470.         "Ŕ̵éŔş ŔÚ˝ĹŔÇ °Ë°ú °©żĘżˇ ľîµŇŔÇ",
  471.         "ČűŔ» ˝Çľî, ŔüŔ忡Ľ­ ą«»ç ¸řÁö ľĘŔş",
  472.         "°ř°Ý·ÂŔ» ąßČÖÇϱ⵵ ÇϴµĄ, ŔűµéŔ»",
  473.         "Á׿©´ë´Â±× ¸đ˝ŔŔĚ żöł«żˇ ˛űÂďÇŘ",
  474.         "»ç¶÷µéŔş Ľö¶ó¸¦ ŔĎÄĂľî [¸¶˝Ĺ]Ŕ̶ó",
  475.         "şÎ¸Ł±â¸¦ ÁÖŔú ľÉ´Â´Ů."],
  476.         ["ČŻą«±şŔÇ Ľö¶ó´Â ľÇ¸¶ŔÇ ľľżˇĽ­",
  477.         "ľňľîÁö´Â ¸¶·ÂŔ» ą«±âłŞ ąćľî±¸żˇ",
  478.         "˝Çľî ą«»ç ¸řÁö ľĘŔş ŔüĹő·ÂŔ¸·Î",
  479.         "ŔüŔ忡Ľ­ Č°ľŕÇŃ´Ů. ±şÁ÷ ĆŻĽş»ó",
  480.         "Áö´ÉŔĚ łôľĆÁúĽö·Ď Âřżë Ŕĺşńżˇ",
  481.         "˝Ç¸®´Â ¸¶·ÂŔÇ Ŕ§·ÂŔĚ Áő´ëµÇąÇ·Î,",
  482.         "Áö´É°ú ±Ů·ÂŔ» ¸ŢŔÎŔ¸·Î ˝şĹČ",
  483.         "Ć÷ŔÎĆ®¸¦ ĹőŔÚÇϵÇ, Á˘Ŕüżˇ µű¸Ą",
  484.         "»ý¸í·Â/ąćľî·Â Č®ş¸¸¦ Ŕ§ÇŘ ĂĽ·ÂŔ»",
  485.         "żĂ¸°´Ů. ¶ÇÇŃ °ř°ÝŔÇ Á¤Č®Ľş°ú",
  486.         "ȸÇǸ¦ Ŕ§ÇŘĽ­ ąÎøżˇµµ Ć÷ŔÎĆ®¸¦",
  487.         "ĹőŔÚÇŇ ÇĘżä°ˇ ŔÖ´Ů.           ",],
  488.         ["Č渶±şŔÇ Ľö¶óµéŔş °˘Áľ ľîµŇŔÇ",
  489.         "ÁÖą®°ú ľÇ¸¶ŔÇ ¸¶ąýŔ¸·Î ŔüŔ忡Ľ­",
  490.         "Č°ľŕÇŃ´Ů. ±şÁ÷ ĆŻĽş»ó ¸¶ąý °ř°ÝŔĚ",
  491.         "ÁÖŔ̹ǷΠÁö´ÉŔ» ¸ŢŔÎŔ¸·Î ˝şĹÝ",
  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. WHISPER_ERROR = {
  534.     1 : CANNOT_WHISPER_NOT_LOGON,
  535.     2 : CANNOT_WHISPER_DEST_REFUSE,
  536.     3 : CANNOT_WHISPER_SELF_REFUSE,
  537. }
  538.  
  539. NOTIFY_MESSAGE = {
  540.     "CANNOT_EQUIP_SHOP" : CANNOT_EQUIP_IN_SHOP,
  541.     "CANNOT_EQUIP_EXCHANGE" : CANNOT_EQUIP_IN_EXCHANGE,
  542. }
  543.  
  544.  
  545. ATTACK_ERROR_TAIL_DICT = {
  546.     "IN_SAFE" : CANNOT_ATTACK_SELF_IN_SAFE,
  547.     "DEST_IN_SAFE" : CANNOT_ATTACK_DEST_IN_SAFE,
  548. }
  549.  
  550. SHOT_ERROR_TAIL_DICT = {
  551.     "EMPTY_ARROW" : CANNOT_SHOOT_EMPTY_ARROW,
  552.     "IN_SAFE" : CANNOT_SHOOT_SELF_IN_SAFE,
  553.     "DEST_IN_SAFE" : CANNOT_SHOOT_DEST_IN_SAFE,
  554. }
  555.    
  556. USE_SKILL_ERROR_TAIL_DICT = {  
  557.     "IN_SAFE" : CANNOT_SKILL_SELF_IN_SAFE,
  558.     "NEED_TARGET" : CANNOT_SKILL_NEED_TARGET,
  559.     "NEED_EMPTY_BOTTLE" : CANNOT_SKILL_NEED_EMPTY_BOTTLE,
  560.     "NEED_POISON_BOTTLE" : CANNOT_SKILL_NEED_POISON_BOTTLE,
  561.     "REMOVE_FISHING_ROD" : CANNOT_SKILL_REMOVE_FISHING_ROD,
  562.     "NOT_YET_LEARN" : CANNOT_SKILL_NOT_YET_LEARN,
  563.     "NOT_MATCHABLE_WEAPON" : CANNOT_SKILL_NOT_MATCHABLE_WEAPON,
  564.     "WAIT_COOLTIME" : CANNOT_SKILL_WAIT_COOLTIME,
  565.     "NOT_ENOUGH_HP" : CANNOT_SKILL_NOT_ENOUGH_HP,
  566.     "NOT_ENOUGH_SP" : CANNOT_SKILL_NOT_ENOUGH_SP,
  567.     "CANNOT_USE_SELF" : CANNOT_SKILL_USE_SELF,
  568.     "ONLY_FOR_ALLIANCE" : CANNOT_SKILL_ONLY_FOR_ALLIANCE,
  569.     "CANNOT_ATTACK_ENEMY_IN_SAFE_AREA" : CANNOT_SKILL_DEST_IN_SAFE,
  570.     "CANNOT_APPROACH" : CANNOT_SKILL_APPROACH,
  571.     "CANNOT_ATTACK" : CANNOT_SKILL_ATTACK,
  572.     "ONLY_FOR_CORPSE" : CANNOT_SKILL_ONLY_FOR_CORPSE,
  573.     "EQUIP_FISHING_ROD" : CANNOT_SKILL_EQUIP_FISHING_ROD,
  574.     "NOT_HORSE_SKILL" : CANNOT_SKILL_NOT_HORSE_SKILL,
  575.     "HAVE_TO_RIDE" : CANNOT_SKILL_HAVE_TO_RIDE,
  576. }
  577.  
  578. LEVEL_LIST=["", HORSE_LEVEL1, HORSE_LEVEL2, HORSE_LEVEL3]
  579.  
  580. HEALTH_LIST=[
  581.     HORSE_HEALTH0,
  582.     HORSE_HEALTH1,
  583.     HORSE_HEALTH2,
  584.     HORSE_HEALTH3,
  585. ]
  586.  
  587.  
  588. USE_SKILL_ERROR_CHAT_DICT = {  
  589.     "NEED_EMPTY_BOTTLE" : SKILL_NEED_EMPTY_BOTTLE,
  590.     "NEED_POISON_BOTTLE" : SKILL_NEED_POISON_BOTTLE,
  591.     "ONLY_FOR_GUILD_WAR" : SKILL_ONLY_FOR_GUILD_WAR,
  592. }
  593.  
  594. SHOP_ERROR_DICT = {
  595.     "NOT_ENOUGH_MONEY" : SHOP_NOT_ENOUGH_MONEY,
  596.     "SOLDOUT" : SHOP_SOLDOUT,
  597.     "INVENTORY_FULL" : SHOP_INVENTORY_FULL,
  598.     "INVALID_POS" : SHOP_INVALID_POS,
  599. }
  600.  
  601. STAT_MINUS_DESCRIPTION = {
  602.     "HTH-" : STAT_MINUS_CON,
  603.     "INT-" : STAT_MINUS_INT,
  604.     "STR-" : STAT_MINUS_STR,
  605.     "DEX-" : STAT_MINUS_DEX,
  606. }
  607.  
  608. MODE_NAME_LIST = ( PVP_OPTION_NORMAL, PVP_OPTION_REVENGE, PVP_OPTION_KILL, PVP_OPTION_PROTECT, )
  609. TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, )
  610.  
  611.  
  612. def EUL(name):
  613.     if GetAuxiliaryWordType(name):
  614.         return "¸¦ "
  615.     else:
  616.         return "Ŕ» "
  617.  
  618. def I(name):
  619.     if GetAuxiliaryWordType(name):
  620.         return "°ˇ "
  621.     else:
  622.         return "ŔĚ "
  623.  
  624. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  625.     name = sellItemName
  626.     if sellItemCount > 1:
  627.         name += " "
  628.         name += str(sellItemCount)
  629.         name += "°ł"
  630.  
  631.     return name + EUL(name) + str(sellItemPrice) + "łÉżˇ ĆĽðڽŔ´Ď±î?"
  632.  
  633. def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  634.     name = sellItemName
  635.     if sellItemCount > 1:
  636.         name += " "
  637.         name += str(sellItemCount)
  638.         name += "°ł"
  639.  
  640.     return name + EUL(name) + str(sellItemPrice) + "żˇ »ç˝Ă°Ú˝Ŕ´Ď±î?"
  641.  
  642. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  643.     return attachedItemName+EUL(attachedItemName)+"şÎÂřÇŇ Ľö ľř´Â ľĆŔĚĹŰŔÔ´Ď´Ů"
  644.  
  645. def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  646.     return attachedItemName+EUL(attachedItemName)+"şÎÂřÇŇ Ľö ŔÖ´Â ĽŇÄĎŔĚ ľř˝Ŕ´Ď´Ů"   
  647.  
  648. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  649.     return attachedItemName+EUL(attachedItemName)+"şÎÂřÇŇ Ľö Ŕִ Ȳ±Ý ĽŇÄĎŔĚ ľř˝Ŕ´Ď´Ů"  
  650.  
  651. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  652.     name = dropItemName
  653.     if dropItemCount > 1:
  654.         name += " "
  655.         name += str(dropItemCount)
  656.         name += "°ł"
  657.  
  658.     return name+EUL(name)+"ąö¸®˝Ă°Ú˝Ŕ´Ď±î?"
  659.  
  660. def NumberToMoneyString(number):
  661.  
  662.     if number <= 0:
  663.         return "0łÉ"
  664.  
  665.     number = str(number)
  666.     result = CutMoneyString(number, 0, 4, "", "")
  667.     result = CutMoneyString(number, 4, 8, "¸¸", result)
  668.     result = CutMoneyString(number, 8, 12, "ľď", result)
  669.     result = result + "łÉ"
  670.  
  671.     return result
  672.  
  673. def FISHING_NOTIFY(isFish, fishName):
  674.     if isFish:
  675.         return fishName + I(fishName) + "ą® µí ÇŐ´Ď´Ů."
  676.     else:
  677.         return fishName + I(fishName) + "°É¸°µí ÇŐ´Ď´Ů."
  678.  
  679. def FISHING_SUCCESS(isFish, fishName):
  680.     if isFish:
  681.         return fishName + EUL(fishName) + "ŔâľŇ˝Ŕ´Ď´Ů!"
  682.     else:
  683.         return fishName + EUL(fishName) + "ľňľú˝Ŕ´Ď´Ů!"
  684.  
  685. def GetLetterImageName():
  686.     return "season1/icon/scroll_close.tga"
  687. def GetLetterOpenImageName():
  688.     return "season1/icon/scroll_open.tga"
  689. def GetLetterCloseImageName():
  690.     return "season1/icon/scroll_close.tga"
  691.  
  692. if 932 == app.GetDefaultCodePage():
  693.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  694.         if sellItemCount > 1 :
  695.             return "%s %s ŚÂ‚đ %s‚É”„‚č‚Ü‚·‚©H" % ( sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  696.         else:
  697.             return "%s ‚đ %s‚Ĺ”„‚č‚Ü‚·‚©H" % (sellItemName, NumberToMoneyString(sellItemPrice) )
  698.  
  699.     def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  700.         if buyItemCount > 1 :
  701.             return "%s %sŚÂ‚đ %s‚Ĺ”ƒ‚˘‚Ü‚·‚©H" % ( buyItemName, buyItemCount, buyItemPrice )
  702.         else:
  703.             return "%s‚đ %s‚Ĺ”ƒ‚˘‚Ü‚·‚©H" % ( buyItemName, buyItemPrice )
  704.            
  705.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  706.         return "%s‚đ‘•’…‚Ĺ‚«‚Č‚˘ƒAƒCƒeƒ€‚Ĺ‚·B" % (attachedItemName)
  707.  
  708.     def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  709.         return "%s‚đ‘•’…‚·‚éƒPƒbƒg‚Ş‚ ‚č‚Ü‚ą‚ńB" % (attachedItemName)
  710.  
  711.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  712.         return "%s‚đ‘•’…‚Ĺ‚«‚鉩‹ŕ?ƒPƒbƒg‚Ş‚ ‚č‚Ü‚ą‚ńB" % (attachedItemName)
  713.        
  714.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  715.         if dropItemCount > 1 :
  716.             return "%s %d ŚÂ‚đŽĚ‚Ä‚Ü‚·‚©H" % (dropItemName, dropItemCount)
  717.         else
  718.             return "%s‚đŽĚ‚Ä‚Ü‚·‚©H" % (dropItemName)
  719.  
  720.     def FISHING_NOTIFY(isFish, fishName) :
  721.         if isFish :
  722.             return "%s ‚ސH‚˘‚‚˘‚˝‚悤‚Ĺ‚·" % ( fishName )
  723.         else :
  724.             return "%s ‚Ş‚©‚©‚Á‚˝‚悤‚Ĺ‚·" % ( fishName )
  725.  
  726.     def FISHING_SUCCESS(isFish, fishName) :
  727.         if isFish :
  728.             return "%s ‚đ•ß‚Ü‚¦‚Ü‚µ‚˝I" % (fishName)
  729.         else :
  730.             return "%s ‚đŽč‚É“ü‚ę‚Ü‚µ‚˝I" % (fishName)
  731.            
  732.     def NumberToMoneyString(number) :
  733.         if number <= 0 :
  734.             return "0—Ľ"
  735.  
  736.         number = str(number)
  737.         result = CutMoneyString(number, 0, 4, "", "")
  738.         result = CutMoneyString(number, 4, 8, "–ś", result)
  739.         result = CutMoneyString(number, 8, 12, "‰­", result)
  740.         result = result + "—Ľ"
  741.  
  742.         return result
  743. elif IsHONGKONG():
  744.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  745.         if sellItemCount > 1 :
  746.             return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  747.         else:
  748.             return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  749.  
  750.     def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  751.         if buyItemCount > 1 :
  752.             return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  753.         else:
  754.             return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  755.            
  756.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  757.         return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  758.  
  759.     def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  760.         return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  761.  
  762.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  763.         return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  764.        
  765.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  766.         if dropItemCount > 1 :
  767.             return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  768.         else
  769.             return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  770.  
  771.     def FISHING_NOTIFY(isFish, fishName) :
  772.         if isFish :
  773.             return FISHING_NOTIFY1 % ( fishName )
  774.         else :
  775.             return FISHING_NOTIFY2 % ( fishName )
  776.  
  777.     def FISHING_SUCCESS(isFish, fishName) :
  778.         if isFish :
  779.             return FISHING_SUCCESS1 % (fishName)
  780.         else :
  781.             return FISHING_SUCCESS2 % (fishName)
  782.            
  783.     def NumberToMoneyString(number) :
  784.         if number <= 0 :
  785.             return "0 %s" % (MONETARY_UNIT0)
  786.  
  787.         number = str(number)
  788.         result = CutMoneyString(number, 0, 4,   "", "")
  789.         result = CutMoneyString(number, 4, 8,   MONETARY_UNIT1, result)
  790.         result = CutMoneyString(number, 8, 12,  MONETARY_UNIT2, result)
  791.         result = result + MONETARY_UNIT0
  792.  
  793.         return result
  794. elif IsNEWCIBN() or IsCIBN10():
  795.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  796.         if sellItemCount>1:
  797.             return "Č·¶¨ŇŞ°Ń%s¸ö%sŇÔ%s˝đ±ŇÂôµôÂđŁż" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  798.         else:
  799.             return "Č·¶¨ŇŞ°Ń%sŇÔ%s˝đ±ŇÂôµôÂđŁż" % (sellItemName, str(sellItemPrice))
  800.  
  801.     def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  802.         if sellItemCount>1:
  803.             return "Č·¶¨ŇŞ°Ń%s¸ö%sŇÔ%s˝đ±ŇÂň˝řÂđŁż" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  804.         else:
  805.             return "Č·¶¨ŇŞ°Ń%sŇÔ%s˝đ±ŇÂň˝řÂđŁż" % (sellItemName, str(sellItemPrice))
  806.  
  807.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  808.         return "ÎŢ·¨ĎâǶ%s µÄ×°±¸" % (attachedItemName)
  809.  
  810.     def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  811.         return "Ă»ÓĐżÉŇÔĎâǶ%s µÄż×" % (attachedItemName)
  812.  
  813.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  814.         return "Ă»ÓĐżÉŇÔĎâǶ%s µÄ»Ć˝đż×" % (attachedItemName)
  815.  
  816.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  817.         if dropItemCount>1:
  818.             return "Č·¶¨ŇŞČÓµô%d¸ö%sÂđ?" % (dropItemCount, dropItemName)
  819.         else:
  820.             return "Č·¶¨ŇŞČÓµô%sÂđ?" % (dropItemName)
  821.  
  822.     def FISHING_NOTIFY(isFish, fishName):
  823.         if isFish:
  824.             return fishName + "ÉĎąłÁˡŁ"
  825.         else:
  826.             return "µö×Ĺ" + fishName + "ÁˡŁ"
  827.  
  828.     def FISHING_SUCCESS(isFish, fishName):
  829.         if isFish:
  830.             return "µö×Ĺ" + fishName + "ÁˡŁ"
  831.         else:
  832.             return "»ńµĂ" + fishName + "ÁˡŁ"
  833.  
  834.     def NumberToMoneyString(number):
  835.  
  836.         if number <= 0:
  837.             return "0Á˝"
  838.  
  839.         number = str(number)
  840.         result = CutMoneyString(number, 0, 4, "", "")
  841.         result = CutMoneyString(number, 4, 8, "Íň", result)
  842.         result = CutMoneyString(number, 8, 12, "ŇÚ", result)
  843.         result = result + "Á˝"
  844.  
  845.         return result
  846. elif IsEUROPE():
  847.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  848.         if sellItemCount > 1 :
  849.             return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  850.         else:
  851.             return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  852.  
  853.     def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  854.         if buyItemCount > 1 :
  855.             return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  856.         else:
  857.             return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  858.            
  859.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  860.         return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  861.  
  862.     def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  863.         return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  864.  
  865.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  866.         return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  867.        
  868.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  869.         if dropItemCount > 1 :
  870.             return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  871.         else
  872.             return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  873.  
  874.     def FISHING_NOTIFY(isFish, fishName) :
  875.         if isFish :
  876.             return FISHING_NOTIFY1 % ( fishName )
  877.         else :
  878.             return FISHING_NOTIFY2 % ( fishName )
  879.  
  880.     def FISHING_SUCCESS(isFish, fishName) :
  881.         if isFish :
  882.             return FISHING_SUCCESS1 % (fishName)
  883.         else :
  884.             return FISHING_SUCCESS2 % (fishName)
  885.            
  886.     def NumberToMoneyString(n) :
  887.         if n <= 0 :
  888.             return "0 %s" % (MONETARY_UNIT0)
  889.  
  890.         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)
Add Comment
Please, Sign In to add comment