Advertisement
Guest User

Untitled

a guest
Sep 5th, 2021
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 22.42 KB | None | 0 0
  1. import app
  2. import constInfo
  3.  
  4. MAP_TRENT02 = "MAP_TRENT02"
  5. MAP_WL = "MAP_WL"
  6. MAP_NUSLUCK = "MAP_NUSLUCK"
  7. MAP_TREE2 = "MAP_TREE2"
  8. BLEND_POTION_NO_TIME = "BLEND_POTION_NO_TIME"
  9. BLEND_POTION_NO_INFO = "BLEND_POTION_NO_INFO"
  10. APP_TITLE = "METIN2"
  11. GUILD_HEADQUARTER = "Main Building"
  12. GUILD_FACILITY = "Facility"
  13. GUILD_OBJECT = "Object"
  14. GUILD_MEMBER_COUNT_INFINITY = "INFINITY"
  15. LOGIN_FAILURE_WEB_BLOCK = "BLOCK_LOGIN(WEB)"
  16. LOGIN_FAILURE_BLOCK_LOGIN = "BLOCK_LOGIN"
  17. CHANNEL_NOTIFY_FULL = "CHANNEL_NOTIFY_FULL"
  18. GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/GuildBuildingList.txt"
  19. GUILD_MARK_MIN_LEVEL = "3"
  20. GUILD_MARK_NOT_ENOUGH_LEVEL = "±æµå·¹º§ 3ÀÌ»ó ºÎÅÍ °¡´ÉÇÕ´Ï´Ù."
  21. ERROR_MARK_UPLOAD_NEED_RECONNECT = "UploadMark: Reconnect to game"
  22. ERROR_MARK_CHECK_NEED_RECONNECT = "CheckMark: Reconnect to game"
  23. VIRTUAL_KEY_ALPHABET_LOWERS = r"[1234567890]/qwertyuiop\=asdfghjkl;`'zxcvbnm.,"
  24. VIRTUAL_KEY_ALPHABET_UPPERS = r'{1234567890}?QWERTYUIOP|+ASDFGHJKL:~"ZXCVBNM<>'
  25. VIRTUAL_KEY_SYMBOLS = '!@#$%^&*()_+|{}:"<>?~'
  26. VIRTUAL_KEY_NUMBERS = "1234567890-=\[];',./`"
  27. VIRTUAL_KEY_SYMBOLS_BR = '!@#$%^&*()_+|{}:"<>?~áàãâéèêíìóòôõúùç'
  28. LOGIN_FAILURE_WRONG_SOCIALID = "ASDF"
  29. LOGIN_FAILURE_SHUTDOWN_TIME = "ASDF"
  30.  
  31. def LoadLocaleData():
  32. app.LoadLocaleData(app.GetLocalePath())
  33.  
  34. def mapping(**kwargs): return kwargs
  35.  
  36. def SNA(text):
  37. def f(x):
  38. return text
  39. return f
  40.  
  41. def SA(text):
  42. def f(x):
  43. return text % x
  44. return f
  45.  
  46. def LoadLocaleFile(srcFileName, localeDict):
  47.  
  48. funcDict = {"SA":SA, "SNA":SNA}
  49.  
  50. lineIndex = 1
  51.  
  52. try:
  53. lines = pack_open(srcFileName, "r").readlines()
  54. except IOError:
  55. import dbg
  56. dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
  57. app.Abort()
  58.  
  59. for line in lines:
  60. try:
  61. tokens = line[:-1].split("\t")
  62. if len(tokens) == 2:
  63. localeDict[tokens[0]] = tokens[1]
  64. elif len(tokens) >= 3:
  65. type = tokens[2].strip()
  66. if type:
  67. localeDict[tokens[0]] = funcDict[type](tokens[1])
  68. else:
  69. localeDict[tokens[0]] = tokens[1]
  70. else:
  71. raise RuntimeError, "Unknown TokenSize"
  72.  
  73. lineIndex += 1
  74. except:
  75. import dbg
  76. dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
  77. raise
  78.  
  79.  
  80.  
  81. all = ["locale","error"]
  82.  
  83. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  84. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  85. constInfo.IN_GAME_SHOP_ENABLE = 1
  86. LoadLocaleFile(LOCALE_FILE_NAME, locals())
  87.  
  88. dictSingleWord = {
  89. "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,
  90. }
  91.  
  92. dictDoubleWord = {
  93. "°¡":1, "°¼":1, "°Å":1, "°Ü":1, "°í":1, "±³":1, "±¸":1, "±Ô":1, "±×":1, "±â":1, "°³":1, "°Â":1, "°Ô":1, "°è":1, "°ú":1, "±¥":1, "±Å":1, "±Ë":1, "±«":1, "±Í":1, "±á":1,
  94. "±î":1, "²¥":1, "²¨":1, "²¸":1, "²¿":1, "²Ø":1, "²Ù":1, "²ó":1, "²ô":1, "³¢":1, "±ú":1, "ƒÆ":1, "²²":1, "²¾":1, "²Ê":1, "²Ï":1, "²ã":1, "²ç":1, "²Ò":1, "²î":1, "…Ê":1,
  95. "³ª":1, "³Ä":1, "³Ê":1, "³à":1, "³ë":1, "´¢":1, "´©":1, "´º":1, "´À":1, "´Ï":1, "³»":1, "†v":1, "³×":1, "³é":1, "³ö":1, "‡R":1, "´²":1, "´´":1, "³ú":1, "´µ":1, "´Ì":1,
  96. "´Ù":1, "´ô":1, "´õ":1, "µ®":1, "µµ":1, "µÍ":1, "µÎ":1, "µà":1, "µå":1, "µð":1, "´ë":1, "ˆÛ":1, "µ¥":1, "µ³":1, "µÂ":1, "µÅ":1, "µÖ":1, "µØ":1, "µÇ":1, "µÚ":1, "µï":1,
  97. "µû":1, "‹x":1, "¶°":1, "¶Å":1, "¶Ç":1, "ŒÃ":1, "¶Ñ":1, "":1, "¶ß":1, "¶ì":1, "¶§":1, "‹š":1, "¶¼":1, "‹ó":1, "¶Ì":1, "¶Î":1, "Œô":1, "¶Ø":1, "¶Ï":1, "¶Ù":1, "¶ç":1,
  98. "¶ó":1, "·ª":1, "·¯":1, "·Á":1, "·Î":1, "·á":1, "·ç":1, "·ù":1, "¸£":1, "¸®":1, "·¡":1, "Žm":1, "·¹":1, "·Ê":1, "·Ö":1, "O":1, "·ï":1, "·ñ":1, "·Ú":1, "·ò":1, "l":1,
  99. "¸¶":1, "¸Ï":1, "¸Ó":1, "¸ç":1, "¸ð":1, "¹¦":1, "¹«":1, "¹Â":1, "¹Ç":1, "¹Ì":1, "¸Å":1, "Ù":1, "¸Þ":1, "¸ï":1, "¸ú":1, "‘À":1, "¹¹":1, "¹¾":1, "¸þ":1, "¹¿":1, "’Þ":1,
  100. "¹Ù":1, "¹ò":1, "¹ö":1, "º­":1, "º¸":1, "ºÌ":1, "ºÎ":1, "ºä":1, "ºê":1, "ºñ":1, "¹è":1, "“Ž":1, "º£":1, "º¶":1, "ºÁ":1, "ºÄ":1, "ºÛ":1, "ºÞ":1, "ºÆ":1, "ºß":1, "•‘":1,
  101. "ºü":1, "»²":1, "»µ":1, "»À":1, "»Ç":1, "»Ï":1, "»Ñ":1, "»Ø":1, "»Ú":1, "»ß":1, "»©":1, "•û":1, "»¾":1, "–§":1, "–Ø":1, "–ô":1, "—¨":1, "—Ä":1, "»Î":1, "—à":1, "˜u":1,
  102. "»ç":1, "»þ":1, "¼­":1, "¼Å":1, "¼Ò":1, "¼î":1, "¼ö":1, "½´":1, "½º":1, "½Ã":1, "»õ":1, "¼¨":1, "¼¼":1, "¼Î":1, "¼Ý":1, "¼â":1, "½¤":1, "½¦":1, "¼è":1, "½¬":1, "šÃ":1,
  103. "½Î":1, "›X":1, "½á":1, "›Ç":1, "½î":1, "¾¤":1, "¾¥":1, "o":1, "¾²":1, "¾¾":1, "½Ø":1, "›y":1, "½ê":1, "›ã":1, "½÷":1, "½û":1, "¾¬":1, "¾®":1, "½ý":1, "¾¯":1, "¾º":1,
  104. "¾Æ":1, "¾ß":1, "¾î":1, "¿©":1, "¿À":1, "¿ä":1, "¿ì":1, "À¯":1, "À¸":1, "ÀÌ":1, "¾Ö":1, "¾ê":1, "¿¡":1, "¿¹":1, "¿Í":1, "¿Ö":1, "¿ö":1, "¿þ":1, "¿Ü":1, "À§":1, "ÀÇ":1,
  105. "ÀÚ":1, "Àð":1, "Àú":1, "Á®":1, "Á¶":1, "ÁÒ":1, "ÁÖ":1, "Áê":1, "Áî":1, "Áö":1, "Àç":1, "À÷":1, "Á¦":1, "Áµ":1, "ÁÂ":1, "ÁÈ":1, "Áà":1, "Áâ":1, "ÁË":1, "Áã":1, "£p":1,
  106. "Â¥":1, "¹":1, "¼":1, "ÂÇ":1, "ÂÉ":1, "§c":1, "ÂÞ":1, "Âé":1, "Âê":1, "Âî":1, "°":1, "¤Š":1, "ÂÅ":1, "¥™":1, "ÂÒ":1, "ÂÖ":1, "Âå":1, "¨R":1, "ÂØ":1, "Âè":1, "©n":1,
  107. "Â÷":1, "í":1, "ó":1, "ÃÄ":1, "ÃÊ":1, "ÃÝ":1, "Ãß":1, "Ãò":1, "Ã÷":1, "Ä¡":1, "ä":1, "ª‰":1, "ü":1, "ÃÇ":1, "ÃÒ":1, "¬‚":1, "Ãç":1, "Ãé":1, "ÃÖ":1, "Ãë":1, "¯M":1,
  108. "Ä«":1, "ļ":1, "Ä¿":1, "ÄÑ":1, "ÄÚ":1, "Äì":1, "Äí":1, "Å¥":1, "Å©":1, "Å°":1, "ij":1, "°m":1, "ÄÉ":1, "ÄÙ":1, "Äâ":1, "Äè":1, "Äõ":1, "Äù":1, "Äê":1, "Äû":1, "´”":1,
  109. "Ÿ":1, "ÅË":1, "ÅÍ":1, "Åß":1, "Åä":1, "Åô":1, "Åõ":1, "Æ©":1, "Æ®":1, "Ƽ":1, "ÅÂ":1, "¶O":1, "Å×":1, "Åâ":1, "Åí":1, "Åï":1, "Åý":1, "Æ¡":1, "Åð":1, "Æ¢":1, "Æ·":1,
  110. "ÆÄ":1, "ÆÙ":1, "ÆÛ":1, "Æì":1, "Æ÷":1, "Ç¥":1, "Ǫ":1, "Ç»":1, "ÇÁ":1, "ÇÇ":1, "ÆÐ":1, "»—":1, "Æä":1, "Æó":1, "Ç¡":1, "½":1, "Ç´":1, "¿R":1, "Ç£":1, "Ƕ":1, "Àc":1,
  111. "ÇÏ":1, "Çá":1, "Çã":1, "Çô":1, "È£":1, "È¿":1, "ÈÄ":1, "ÈÞ":1, "Èå":1, "È÷":1, "ÇØ":1, "Á…":1, "Çì":1, "Çý":1, "È­":1, "ȳ":1, "ÈÌ":1, "ÈÑ":1, "ȸ":1, "ÈÖ":1, "Èñ":1,
  112. }
  113.  
  114. locale = mapping(
  115. )
  116.  
  117.  
  118. def GetAuxiliaryWordType(text):
  119.  
  120. textLength = len(text)
  121.  
  122. if textLength > 1:
  123.  
  124. singleWord = text[-1]
  125.  
  126. if (singleWord >= '0' and singleWord <= '9') or\
  127. (singleWord >= 'a' and singleWord <= 'z') or\
  128. (singleWord >= 'A' and singleWord <= 'Z'):
  129. if not dictSingleWord.has_key(singleWord):
  130. return 1
  131.  
  132. elif dictDoubleWord.has_key(text[-2:]):
  133. return 1
  134.  
  135. return 0
  136.  
  137.  
  138.  
  139. def CutMoneyString(sourceText, startIndex, endIndex, insertingText, backText):
  140.  
  141. sourceLength = len(sourceText)
  142.  
  143. if sourceLength < startIndex:
  144. return backText
  145.  
  146. text = sourceText[max(0, sourceLength-endIndex):sourceLength-startIndex]
  147.  
  148. if not text:
  149. return backText
  150.  
  151. if app.ENABLE_YANG_LIMIT:
  152. if long(text) <= 0:
  153. return backText
  154. else:
  155. if int(text) <= 0:
  156. return backText
  157.  
  158. text = str(int(text))
  159.  
  160. if backText:
  161. backText = " " + backText
  162.  
  163. return text + insertingText + backText
  164.  
  165. def SecondToDHM(time):
  166. if time < 60:
  167. return "0" + MINUTE
  168.  
  169. second = int(time % 60)
  170. minute = int((time / 60) % 60)
  171. hour = int((time / 60) / 60) % 24
  172. day = int(int((time / 60) / 60) / 24)
  173.  
  174. text = ""
  175.  
  176. if day > 0:
  177. text += str(day) + DAY
  178. text += " "
  179.  
  180. if hour > 0:
  181. text += str(hour) + HOUR
  182. text += " "
  183.  
  184. if minute > 0:
  185. text += str(minute) + MINUTE
  186.  
  187. return text
  188.  
  189. def SecondToHM(time):
  190.  
  191. if time < 60:
  192. return "0" + MINUTE
  193.  
  194. second = int(time % 60)
  195. minute = int((time / 60) % 60)
  196. hour = int((time / 60) / 60)
  197.  
  198. text = ""
  199.  
  200. if hour > 0:
  201. text += str(hour) + HOUR
  202. if hour > 0:
  203. text += " "
  204.  
  205. if minute > 0:
  206. text += str(minute) + MINUTE
  207.  
  208. return text
  209.  
  210.  
  211. def GetAlignmentTitleName(alignment):
  212. if alignment >= 12000:
  213. return TITLE_NAME_LIST[0]
  214. elif alignment >= 8000:
  215. return TITLE_NAME_LIST[1]
  216. elif alignment >= 4000:
  217. return TITLE_NAME_LIST[2]
  218. elif alignment >= 1000:
  219. return TITLE_NAME_LIST[3]
  220. elif alignment >= 0:
  221. return TITLE_NAME_LIST[4]
  222. elif alignment > -4000:
  223. return TITLE_NAME_LIST[5]
  224. elif alignment > -8000:
  225. return TITLE_NAME_LIST[6]
  226. elif alignment > -12000:
  227. return TITLE_NAME_LIST[7]
  228.  
  229. return TITLE_NAME_LIST[8]
  230.  
  231.  
  232. OPTION_PVPMODE_MESSAGE_DICT = {
  233. 0 : PVP_MODE_NORMAL,
  234. 1 : PVP_MODE_REVENGE,
  235. 2 : PVP_MODE_KILL,
  236. 3 : PVP_MODE_PROTECT,
  237. 4 : PVP_MODE_GUILD,
  238. }
  239.  
  240. error = mapping(
  241. CREATE_WINDOW = GAME_INIT_ERROR_GRAPHICS_NOT_EXIST,
  242. CREATE_NO_APPROPRIATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_BAD_PERFORMANCE,
  243. CREATE_FORMAT = GAME_INIT_ERROR_GRAPHICS_NOT_SUPPORT_32BIT,
  244. NO_ERROR = ""
  245. )
  246.  
  247.  
  248. GUILDWAR_NORMAL_DESCLIST = [GUILD_WAR_USE_NORMAL_MAP, GUILD_WAR_LIMIT_30MIN, GUILD_WAR_WIN_CHECK_SCORE]
  249. GUILDWAR_WARP_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_WIPE_OUT_GUILD, GUILD_WAR_REWARD_POTION]
  250. GUILDWAR_CTF_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_TAKE_AWAY_FLAG1, GUILD_WAR_WIN_TAKE_AWAY_FLAG2, GUILD_WAR_REWARD_POTION]
  251.  
  252. MINIMAP_ZONE_NAME_DICT = {
  253. "metin2_map_a1" : MAP_A1,
  254. "map_a2" : MAP_A2,
  255. "metin2_map_a3" : MAP_A3,
  256. "metin2_map_b1" : MAP_B1,
  257. "map_b2" : MAP_B2,
  258. "metin2_map_b3" : MAP_B3,
  259. "metin2_map_c1" : MAP_C1,
  260. "map_c2" : MAP_C2,
  261. "metin2_map_c3" : MAP_C3,
  262. "map_n_snowm_01" : MAP_SNOW,
  263. "metin2_map_n_flame_01" : MAP_FLAME,
  264. "metin2_map_n_desert_01" : MAP_DESERT,
  265. "metin2_map_milgyo" : MAP_TEMPLE,
  266. "metin2_map_spiderdungeon" : MAP_SPIDER,
  267. "metin2_map_deviltower1" : MAP_SKELTOWER,
  268. "metin2_map_guild_01" : MAP_AG,
  269. "metin2_map_guild_02" : MAP_BG,
  270. "metin2_map_guild_03" : MAP_CG,
  271. "metin2_map_trent" : MAP_TREE,
  272. "metin2_map_trent02" : MAP_TREE2,
  273. "season1/metin2_map_WL_01" : MAP_WL,
  274. "season1/metin2_map_nusluck01" : MAP_NUSLUCK,
  275. "Metin2_map_CapeDragonHead" : MAP_CAPE,
  276. "metin2_map_Mt_Thunder" : MAP_THUNDER,
  277. "metin2_map_dawnmistwood" : MAP_DAWN,
  278. "metin2_map_BayBlackSand" : MAP_BAY,
  279. }
  280.  
  281.  
  282.  
  283. JOBINFO_TITLE = [
  284. [JOB_WARRIOR0, JOB_WARRIOR1, JOB_WARRIOR2,],
  285. [JOB_ASSASSIN0, JOB_ASSASSIN1, JOB_ASSASSIN2,],
  286. [JOB_SURA0, JOB_SURA1, JOB_SURA2,],
  287. [JOB_SHAMAN0, JOB_SHAMAN1, JOB_SHAMAN2,],
  288. ]
  289.  
  290. JOBINFO_DATA_LIST = [
  291. [
  292. ["Ÿ°í³­ ¿ë¸Í°ú ±ÁÈ÷Áö ¾Ê´Â ¹«»çÀÇ",
  293. "±â°³¸¦ »ç¶÷µéÀº ÀÏÄþî [¿ëÀÚ]¶ó°í",
  294. "ºÎ¸¥´Ù. ¾î¶°ÇÑ À§±â¿¡¼­µµ ±×µéÀº ",
  295. "µÚ·Î ¹°·¯¼­Áö ¾ÊÀ¸¸ç, ´ÙÄ¡°í ¿òÁ÷",
  296. "À̱â Èûµç µ¿·á¸¦ À§ÇØ ´Ü½ÅÀ¸·Î",
  297. "Àûµé°ú ¸¶ÁÖ ½Î¿ì±âµµ ÇÑ´Ù. À̵éÀº",
  298. "Àß ´Ü·ÃµÈ ±ÙÀ°°ú Èû, °­·ÂÇÑ °ø°Ý·Â",
  299. "À¸·Î ÀüÀå ÃÖ¼±µÎ¿¡¼­ °ø°ÝÁøÀ¸·Î",
  300. "È°¾àÇÑ´Ù. ",],
  301. ["°¡Àå ÀϹÝÀûÀÎ °ø°ÝÇü ¹«»ç·Î, ",
  302. "ÀûÁ¢Àü¿¡ µû¸¥ Á÷Á¢ °ø°ÝÀ¸·Î ÀüÀå",
  303. "¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó ±Ù·ÂÀ»",
  304. "¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, ",
  305. "ÀûÁ¢Àü¿¡ µû¸¥ »ý¸í·Â / ¹æ¾î·Â",
  306. "È®º¸¸¦ À§ÇØ Ã¼·ÂÀ» ¿Ã¸°´Ù. ¶ÇÇÑ",
  307. "°ø°ÝÀÇ Á¤È®¼ºÀ» ³ôÀ̱â À§ÇØ ¹Îø",
  308. "¿¡µµ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù.",],
  309. ["»ó´ç ¼öÁØÀÇ Á¤½Å·ÂÀ» ÀÌ¿ëÇÏ´Â",
  310. "Áß/±Ù°Å¸® Á¢ÀüÇü ¹«»ç·Î, °¢ ±â¼ú",
  311. "ÇϳªÇϳªÀÇ ³ôÀº °ø°Ý·ÂÀ¸·Î ÀüÀå¿¡¼­",
  312. "È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó ±Ù·ÂÀ» ¸ÞÀÎ",
  313. "À¸·Î ½ºÅÈ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, ",
  314. "Áß/±Ù°Å¸® °ø°ÝÀÇ Á¤È®¼º°ú ¸íÁß·üÀ»",
  315. "À§ÇØ ¹ÎøÀ» ¿Ã¸°´Ù. ¶ÇÇÑ Á¢Àü ½Ã ",
  316. "Àû °ø°Ý¿¡ µû¸¥ »ý¸í·Â / ¹æ¾î·Â",
  317. "È®º¸¸¦ À§ÇØ Ã¼·Â¿¡µµ Æ÷ÀÎÆ®¸¦",
  318. "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ",],
  319. ],
  320. [
  321. ["ÀÚ°´Àº ¾î¶°ÇÑ »óȲ¿¡¼­µµ ÀÚ½ÅÀÇ",
  322. "¸öÀ» ¼û±â°í Àº¹ÐÇÑ ¾îµÒÀÇ ÀÓ¹«¸¦",
  323. "¼öÇàÇϸ鼭 ÀüÀåÀÇ ÈÄÀ§¸¦ Áö¿øÇÏ´Â",
  324. "ÀÚµéÀÌ´Ù. À̵éÀº ¾ÆÁÖ ºü¸£°í ½Å¼Ó",
  325. "Çϸç, ºñÇÒ µ¥ ¾øÀÌ °ú°¨ÇÏ°í ÀýÁ¦µÈ",
  326. "ÇൿÀ¸·Î ÀûÀÇ ±Þ¼Ò¿¡ Ä¡¸íŸ¸¦ ³¯¸®",
  327. "µÇ, ÀüÀå¿¡¼± ÀûÁøÀ» ÇâÇØ ¹«¼öÇÑ",
  328. "È­»ìÀ» ³»»ÕÀ¸¸ç ÀÚ½ÅÀÇ ¿ë¸ÍÀ»",
  329. "¼±º¸ÀδÙ. "],
  330. ["µÎ¼Õ ´Ü°ËÀ» ÁÖ¹«±â·Î ´Ù·ç¸ç, ½Å¼Ó",
  331. "ÇÏ°Ô Ä¡°í ºüÁö´Â ÀÚ°´ ƯÀ¯ÀÇ ¿òÁ÷ÀÓ",
  332. "À¸·Î ÀüÀå¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó",
  333. "¹ÎøÀ» ¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚ",
  334. "ÇϵÇ, ±Ù·ÂÀ» ¿Ã·Á °ø°Ý·ÂÀ» ³ôÀδÙ.",
  335. "¶ÇÇÑ ±ÙÁ¢Àü¿¡ µû¸¥ »ý¸í·Â/¹æ¾î·Â ",
  336. "»ó½ÂÀ» À§ÇØ Ã¼·Â¿¡µµ Æ÷ÀÎÆ®¸¦",
  337. "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ",],
  338. ["È°À» ÁÖ¹«±â·Î ´Ù·ç¸ç, ±ä ½Ã¾ß¿Í",
  339. "»çÁ¤°Å¸®¿¡ µû¸¥ ¿ø°Å¸® °ø°ÝÀ¸·Î",
  340. "ÀüÀå¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó",
  341. "°ø°Ý ¼º°ø·üÀÇ Áõ°¡¸¦ À§ÇØ ¹ÎøÀ»",
  342. "¸ÞÀÎÀ¸·Î ¿Ã·Á¾ß Çϸç, ¿ø°Å¸®",
  343. "°ø°ÝÀÇ µ¥¹ÌÁö Áõ°¡¸¦ À§ÇØ ±Ù·ÂÀ»",
  344. "¿Ã¸± ÇÊ¿ä°¡ ÀÖ´Ù. ¶ÇÇÑ Àûµé¿¡°Ô",
  345. "Æ÷À§µÇ¾úÀ» ½Ã, Àû °ø°Ý¿¡ ¹öƼ±â",
  346. "À§ÇÑ »ý¸í·Â/¹æ¾î·Â »ó½ÂÀ» À§ÇØ",
  347. "ü·Â¿¡µµ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇÒ ÇÊ¿ä°¡",
  348. "ÀÖ´Ù. ", ],
  349. ],
  350. [
  351. ["¼ö¶ó´Â [µ¶Àº µ¶À¸·Î]ÀÇ ¼Ó¼ºÀ¸·Î",
  352. "â¼³µÈ Ư¼ö ¼Ó¼ºÀÇ ±ºÁ÷ÀÌ´Ù. ",
  353. "±×µéÀº ÀüÀå¿¡¼­ ÀûµéÀÇ »ç±â¸¦ ÀúÇÏ",
  354. "½ÃÅ°°í, ¾Ç¸¶ÀÇ ÈûÀ» ½ÇÀº ¸¶ÅºÀ¸·Î",
  355. "ÀûÀÇ ¿µÈ¥°ú À°½ÅÀ» Áþ¹¶°µ´Ù. ¶§·Î",
  356. "À̵éÀº ÀÚ½ÅÀÇ °Ë°ú °©¿Ê¿¡ ¾îµÒÀÇ",
  357. "ÈûÀ» ½Ç¾î, ÀüÀå¿¡¼­ ¹«»ç ¸øÁö ¾ÊÀº",
  358. "°ø°Ý·ÂÀ» ¹ßÈÖÇϱ⵵ Çϴµ¥, ÀûµéÀ»",
  359. "Á׿©´ë´Â±× ¸ð½ÀÀÌ ¿ö³«¿¡ ²ûÂïÇØ",
  360. "»ç¶÷µéÀº ¼ö¶ó¸¦ ÀÏÄþî [¸¶½Å]À̶ó",
  361. "ºÎ¸£±â¸¦ ÁÖÀú ¾É´Â´Ù."],
  362. ["ȯ¹«±ºÀÇ ¼ö¶ó´Â ¾Ç¸¶ÀÇ ¾¾¿¡¼­",
  363. "¾ò¾îÁö´Â ¸¶·ÂÀ» ¹«±â³ª ¹æ¾î±¸¿¡",
  364. "½Ç¾î ¹«»ç ¸øÁö ¾ÊÀº ÀüÅõ·ÂÀ¸·Î",
  365. "ÀüÀå¿¡¼­ È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó",
  366. "Áö´ÉÀÌ ³ô¾ÆÁú¼ö·Ï Âø¿ë Àåºñ¿¡",
  367. "½Ç¸®´Â ¸¶·ÂÀÇ À§·ÂÀÌ Áõ´ëµÇ¹Ç·Î,",
  368. "Áö´É°ú ±Ù·ÂÀ» ¸ÞÀÎÀ¸·Î ½ºÅÈ",
  369. "Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, Á¢Àü¿¡ µû¸¥",
  370. "»ý¸í·Â/¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·ÂÀ»",
  371. "¿Ã¸°´Ù. ¶ÇÇÑ °ø°ÝÀÇ Á¤È®¼º°ú",
  372. "ȸÇǸ¦ À§Çؼ­ ¹Îø¿¡µµ Æ÷ÀÎÆ®¸¦",
  373. "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ",],
  374. ["È渶±ºÀÇ ¼ö¶óµéÀº °¢Á¾ ¾îµÒÀÇ",
  375. "ÁÖ¹®°ú ¾Ç¸¶ÀÇ ¸¶¹ýÀ¸·Î ÀüÀå¿¡¼­",
  376. "È°¾àÇÑ´Ù. ±ºÁ÷ Ư¼º»ó ¸¶¹ý °ø°ÝÀÌ",
  377. "ÁÖÀ̹ǷΠÁö´ÉÀ» ¸ÞÀÎÀ¸·Î ½ºÅÝ",
  378. "Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ, ¿ø°Å¸® ¸¶¹ý",
  379. "°ø°ÝÀÇ Á¤È®¼ºÀ» À§ÇØ ¹ÎøÀ» ¿Ã¸°´Ù.",
  380. "¶ÇÇÑ Æ÷À§ µÇ¾úÀ»½Ã, Àû °ø°Ý¿¡ µû¸¥",
  381. "»ý¸í·Â / ¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·Â¿¡µµ",
  382. "Æ÷ÀÎÆ®¸¦ ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ",],
  383. ],
  384. [
  385. ["¹«´çÀº ¿ë½Å°ú ÀÚ¿¬, µÎ °í´ëÀÇ",
  386. "ÈûÀ» ´Ù·ê ¼ö ÀÖ´Â À¯ÀÏÇÑ Á÷Á¾ÀÌ´Ù.",
  387. "±×µéÀº ÈĹ濡¼­ ¾Æ±ºÀ» º¸Á¶ÇÏ°í",
  388. "´ÙÄ£ µ¿·áÀÇ ºÎ»óÀ» ȸº¹ ½ÃÅ°¸ç",
  389. "¶³¾îÁø »ç±â¸¦ »ó½Â½ÃŲ´Ù. ±×µéÀº",
  390. "¾Æ±ºÀÇ ¼ö¸é°ú ÈÞ½ÄÀ» ¹æÇØÇÏ´Â ÀÚ¸¦ ",
  391. "Àý´ë ¿ë¼­ÇÏÁö ¾ÊÀ¸¸ç, ±×·± ÀÚµé",
  392. "¿¡°Ô´Â ÇÑ Á¡ ÁÖÀú ¾øÀÌ ÁÖ¹®À»",
  393. "ÅÍÆ®·Á ±× ºñ°ÌÇÔÀ» ¾öÈ÷ ¡°èÇÑ´Ù.",],
  394. ["õ·æ±ºÀÇ ¹«´çµéÀº °¢Á¾ ºÎÀû¼ú°ú",
  395. "º¸Á¶ÁÖ¹®¿¡ ´ÉÇϸç, ÀûÀÇ Á÷ / °£Á¢",
  396. "°ø°ÝÀ¸·ÎºÎÅÍ ¾Æ±ºÀ» ÁöŲ´Ù. ±ºÁ÷",
  397. "Ư¼º»ó ¸¶¹ý ´É·ÂÀÌ ÁÖÀ̹ǷΠÁö´ÉÀ»",
  398. "¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ,",
  399. "Æ÷À§µÇ¾úÀ» ½Ã, Àû °ø°Ý¿¡ µû¸¥",
  400. "»ý¸í·Â / ¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·ÂÀ»",
  401. "¿Ã¸°´Ù. ¶ÇÇÑ ¿ø°Å¸® ¸¶¹ý °ø°ÝÀÇ",
  402. "Á¤È®¼ºÀ» À§¿¡ ¹Îø¿¡µµ Æ÷ÀÎÆ®¸¦",
  403. "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. ",],
  404. ["±¤·Ú±ºÀÇ ¹«´çµéÀº ÀÚ¿¬ÀÇ ÈûÀ»",
  405. "ºô·Á ¾Æ±ºÀ» ȸº¹ÇÏ°í, ³ú½ÅÀÇ ",
  406. "ÈûÀ¸·Î ¹ÐÁýÇÑ Àûµé¿¡°Ô Å« Ãæ°ÝÀ»",
  407. "ÀÔÈú ¼ö ÀÖ´Â À̵éÀÌ´Ù. ±ºÁ÷ÀÇ",
  408. "Ư¼º»ó ¸¶¹ý ´É·ÂÀÌ ÁÖÀ̹ǷΠÁö´ÉÀ»",
  409. "¸ÞÀÎÀ¸·Î ½ºÅÝ Æ÷ÀÎÆ®¸¦ ÅõÀÚÇϵÇ,",
  410. "Æ÷À§µÇ¾úÀ»½Ã, Àû °ø°Ý¿¡ µû¸¥",
  411. "»ý¸í·Â / ¹æ¾î·Â È®º¸¸¦ À§ÇØ Ã¼·ÂÀ»",
  412. "¿Ã¸°´Ù. ¶ÇÇÑ ¿ø°Å¸® ¸¶¹ý °ø°ÝÀÇ",
  413. "Á¤È®¼ºÀ» À§¿¡ ¹Îø¿¡µµ Æ÷ÀÎÆ®¸¦",
  414. "ÅõÀÚÇÒ ÇÊ¿ä°¡ ÀÖ´Ù. "],
  415. ],
  416. ]
  417.  
  418.  
  419. WHISPER_ERROR = {
  420. 1 : CANNOT_WHISPER_NOT_LOGON,
  421. 2 : CANNOT_WHISPER_DEST_REFUSE,
  422. 3 : CANNOT_WHISPER_SELF_REFUSE,
  423. }
  424.  
  425. NOTIFY_MESSAGE = {
  426. "CANNOT_EQUIP_SHOP" : CANNOT_EQUIP_IN_SHOP,
  427. "CANNOT_EQUIP_EXCHANGE" : CANNOT_EQUIP_IN_EXCHANGE,
  428. }
  429.  
  430.  
  431. ATTACK_ERROR_TAIL_DICT = {
  432. "IN_SAFE" : CANNOT_ATTACK_SELF_IN_SAFE,
  433. "DEST_IN_SAFE" : CANNOT_ATTACK_DEST_IN_SAFE,
  434. }
  435.  
  436. SHOT_ERROR_TAIL_DICT = {
  437. "EMPTY_ARROW" : CANNOT_SHOOT_EMPTY_ARROW,
  438. "IN_SAFE" : CANNOT_SHOOT_SELF_IN_SAFE,
  439. "DEST_IN_SAFE" : CANNOT_SHOOT_DEST_IN_SAFE,
  440. }
  441.  
  442. USE_SKILL_ERROR_TAIL_DICT = {
  443. "IN_SAFE" : CANNOT_SKILL_SELF_IN_SAFE,
  444. "NEED_TARGET" : CANNOT_SKILL_NEED_TARGET,
  445. "NEED_EMPTY_BOTTLE" : CANNOT_SKILL_NEED_EMPTY_BOTTLE,
  446. "NEED_POISON_BOTTLE" : CANNOT_SKILL_NEED_POISON_BOTTLE,
  447. "REMOVE_FISHING_ROD" : CANNOT_SKILL_REMOVE_FISHING_ROD,
  448. "NOT_YET_LEARN" : CANNOT_SKILL_NOT_YET_LEARN,
  449. "NOT_MATCHABLE_WEAPON" : CANNOT_SKILL_NOT_MATCHABLE_WEAPON,
  450. "WAIT_COOLTIME" : CANNOT_SKILL_WAIT_COOLTIME,
  451. "NOT_ENOUGH_HP" : CANNOT_SKILL_NOT_ENOUGH_HP,
  452. "NOT_ENOUGH_SP" : CANNOT_SKILL_NOT_ENOUGH_SP,
  453. "CANNOT_USE_SELF" : CANNOT_SKILL_USE_SELF,
  454. "ONLY_FOR_ALLIANCE" : CANNOT_SKILL_ONLY_FOR_ALLIANCE,
  455. "CANNOT_ATTACK_ENEMY_IN_SAFE_AREA" : CANNOT_SKILL_DEST_IN_SAFE,
  456. "CANNOT_APPROACH" : CANNOT_SKILL_APPROACH,
  457. "CANNOT_ATTACK" : CANNOT_SKILL_ATTACK,
  458. "ONLY_FOR_CORPSE" : CANNOT_SKILL_ONLY_FOR_CORPSE,
  459. "EQUIP_FISHING_ROD" : CANNOT_SKILL_EQUIP_FISHING_ROD,
  460. "NOT_HORSE_SKILL" : CANNOT_SKILL_NOT_HORSE_SKILL,
  461. "HAVE_TO_RIDE" : CANNOT_SKILL_HAVE_TO_RIDE,
  462. }
  463.  
  464. LEVEL_LIST=["", HORSE_LEVEL1, HORSE_LEVEL2, HORSE_LEVEL3]
  465.  
  466. HEALTH_LIST=[
  467. HORSE_HEALTH0,
  468. HORSE_HEALTH1,
  469. HORSE_HEALTH2,
  470. HORSE_HEALTH3,
  471. ]
  472.  
  473.  
  474. USE_SKILL_ERROR_CHAT_DICT = {
  475. "NEED_EMPTY_BOTTLE" : SKILL_NEED_EMPTY_BOTTLE,
  476. "NEED_POISON_BOTTLE" : SKILL_NEED_POISON_BOTTLE,
  477. "ONLY_FOR_GUILD_WAR" : SKILL_ONLY_FOR_GUILD_WAR,
  478. }
  479.  
  480. SHOP_ERROR_DICT = {
  481. "NOT_ENOUGH_MONEY" : SHOP_NOT_ENOUGH_MONEY,
  482. "SOLDOUT" : SHOP_SOLDOUT,
  483. "INVENTORY_FULL" : SHOP_INVENTORY_FULL,
  484. "INVALID_POS" : SHOP_INVALID_POS,
  485. "NOT_ENOUGH_MONEY_EX" : SHOP_NOT_ENOUGH_MONEY_EX,
  486. }
  487.  
  488. STAT_MINUS_DESCRIPTION = {
  489. "HTH-" : STAT_MINUS_CON,
  490. "INT-" : STAT_MINUS_INT,
  491. "STR-" : STAT_MINUS_STR,
  492. "DEX-" : STAT_MINUS_DEX,
  493. }
  494.  
  495. MODE_NAME_LIST = ( PVP_OPTION_NORMAL, PVP_OPTION_REVENGE, PVP_OPTION_KILL, PVP_OPTION_PROTECT, )
  496. TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, )
  497.  
  498. def GetLetterImageName():
  499. return "season1/icon/scroll_close.tga"
  500. def GetLetterOpenImageName():
  501. return "season1/icon/scroll_open.tga"
  502. def GetLetterCloseImageName():
  503. return "season1/icon/scroll_close.tga"
  504.  
  505. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  506. if sellItemCount > 1 :
  507. return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  508. else:
  509. return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  510.  
  511. def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  512. if buyItemCount > 1 :
  513. return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  514. else:
  515. return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  516.  
  517. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  518. return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  519.  
  520. def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  521. return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  522.  
  523. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  524. return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  525.  
  526. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  527. if dropItemCount > 1 :
  528. return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  529. else :
  530. return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  531.  
  532. def FISHING_NOTIFY(isFish, fishName) :
  533. if isFish :
  534. return FISHING_NOTIFY1 % ( fishName )
  535. else :
  536. return FISHING_NOTIFY2 % ( fishName )
  537.  
  538. def FISHING_SUCCESS(isFish, fishName) :
  539. if isFish :
  540. return FISHING_SUCCESS1 % (fishName)
  541. else :
  542. return FISHING_SUCCESS2 % (fishName)
  543.  
  544. def NumberToMoneyString(n) :
  545. if n <= 0 :
  546. return "0 %s" % (MONETARY_UNIT0)
  547.  
  548. 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)
  549.  
  550. def NumberToSecondaryCoinString(n) :
  551. if n <= 0 :
  552. return "0 %s" % (MONETARY_UNIT_JUN)
  553.  
  554. 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_UNIT_JUN)
  555.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement