Guest User

localeinfo

a guest
Jan 6th, 2024
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 38.22 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.  
  9. BLEND_POTION_NO_TIME = "BLEND_POTION_NO_TIME"
  10. BLEND_POTION_NO_INFO = "BLEND_POTION_NO_INFO"
  11.  
  12. APP_TITLE = "Metin2AD - Fallen of the Kingdoms"
  13.  
  14. GUILD_HEADQUARTER = "Main Building"
  15. GUILD_FACILITY = "Facility"
  16. GUILD_OBJECT = "Object"
  17. GUILD_MEMBER_COUNT_INFINITY = "INFINITY"
  18.  
  19. LOGIN_FAILURE_WEB_BLOCK = "BLOCK_LOGIN(WEB)"
  20. LOGIN_FAILURE_BLOCK_LOGIN = "BLOCK_LOGIN"
  21. CHANNEL_NOTIFY_FULL = "CHANNEL_NOTIFY_FULL"
  22.  
  23. GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/texts/GuildBuildingList.txt"
  24.  
  25. GUILD_MARK_MIN_LEVEL = "3"
  26. GUILD_MARK_NOT_ENOUGH_LEVEL = "±æµå·¹º§ 3ÀÌ»ó ºÎÅÍ °¡´ÉÇÕ´Ï´Ù."
  27.  
  28. ERROR_MARK_UPLOAD_NEED_RECONNECT = "UploadMark: Reconnect to game"
  29. ERROR_MARK_CHECK_NEED_RECONNECT = "CheckMark: Reconnect to game"
  30.  
  31. VIRTUAL_KEY_ALPHABET_LOWERS = r"[1234567890]/qwertyuiop\=asdfghjkl;`'zxcvbnm.,"
  32. VIRTUAL_KEY_ALPHABET_UPPERS = r'{1234567890}?QWERTYUIOP|+ASDFGHJKL:~"ZXCVBNM<>'
  33. VIRTUAL_KEY_SYMBOLS = '!@#$%^&*()_+|{}:"<>?~'
  34. VIRTUAL_KEY_NUMBERS = "1234567890-=\[];',./`"
  35. VIRTUAL_KEY_SYMBOLS_BR = '!@#$%^&*()_+|{}:"<>?~áàãâéèêíìóòôõúùç'
  36.  
  37. __IS_ENGLISH = "ENGLISH" == app.GetLocaleServiceName()
  38. __IS_HONGKONG = "HONGKONG" == app.GetLocaleServiceName()
  39. __IS_NEWCIBN = "locale/newcibn" == app.GetLocalePath()
  40. __IS_EUROPE = "EUROPE" == app.GetLocaleServiceName()
  41. __IS_CANADA = "locale/ca" == app.GetLocalePath()
  42. __IS_BRAZIL = "locale/br" == app.GetLocalePath()
  43. __IS_SINGAPORE = "locale/sg" == app.GetLocalePath()
  44. __IS_VIETNAM = "locale/vn" == app.GetLocalePath()
  45. __IS_ARABIC = "locale/ae" == app.GetLocalePath()
  46. __IS_CIBN10 = "locale/cibn10" == app.GetLocalePath()
  47. __IS_WE_KOREA = "locale/we_korea" == app.GetLocalePath()
  48. __IS_TAIWAN = "locale/taiwan" == app.GetLocalePath()
  49. __IS_JAPAN = "locale/japan" == app.GetLocalePath()
  50. LOGIN_FAILURE_WRONG_SOCIALID = "ASDF"
  51. LOGIN_FAILURE_SHUTDOWN_TIME = "ASDF"
  52.  
  53. if app.ENABLE_CHEQUE_SYSTEM:
  54. def NumberToGold(n) :
  55. if n <= 0 :
  56. return "0 %s" % (MONETARY_UNIT0)
  57.  
  58. 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)
  59.  
  60. def NumberToGoldNotText(n) :
  61. if n <= 0 :
  62. return "0 %s" % ("")
  63.  
  64. 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 ]), "")
  65.  
  66. def NumberToCheque(n) :
  67. if n <= 0 :
  68. return "0 %s" % (CHEQUE_SYSTEM_UNIT_CHEQUE)
  69.  
  70. 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 ]), CHEQUE_SYSTEM_UNIT_CHEQUE)
  71.  
  72. def DO_YOU_BUY_ITEM_YANG_CHEQUE(buyItemName, buyItemCount, buyItemPrice, buyItemCheque) :
  73. if buyItemCount > 1 :
  74. return DO_YOU_BUY_ITEM2_CHEQUE % ( buyItemName, buyItemCount, buyItemCheque, buyItemPrice)
  75. else:
  76. return DO_YOU_BUY_ITEM1_CHEQUE % ( buyItemName, buyItemCheque, buyItemPrice)
  77.  
  78. def DO_YOU_BUY_ITEM_CHEQUE_SIN_YANG(buyItemName, buyItemCount, buyItemCheque) :
  79. if buyItemCount > 1 :
  80. return DO_YOU_BUY_ITEM2_CHEQUE1 % ( buyItemName, buyItemCount, buyItemCheque)
  81. else:
  82. return DO_YOU_BUY_ITEM1_CHEQUE1 % ( buyItemName, buyItemCheque)
  83.  
  84. if __IS_CANADA:
  85. __IS_EUROPE = True
  86.  
  87. def IsYMIR():
  88. return "locale/ymir" == app.GetLocalePath()
  89.  
  90. def IsJAPAN():
  91. return "locale/japan" == app.GetLocalePath()
  92.  
  93. def IsENGLISH():
  94. global __IS_ENGLISH
  95. return __IS_ENGLISH
  96.  
  97. def IsHONGKONG():
  98. global __IS_HONGKONG
  99. return __IS_HONGKONG
  100.  
  101. def IsTAIWAN():
  102. return "locale/taiwan" == app.GetLocalePath()
  103.  
  104. def IsNEWCIBN():
  105. return "locale/newcibn" == app.GetLocalePath()
  106.  
  107. def IsCIBN10():
  108. global __IS_CIBN10
  109. return __IS_CIBN10
  110.  
  111. def IsEUROPE():
  112. global __IS_EUROPE
  113. return __IS_EUROPE
  114.  
  115. def IsCANADA():
  116. global __IS_CANADA
  117. return __IS_CANADA
  118.  
  119. def IsBRAZIL():
  120. global __IS_BRAZIL
  121. return __IS_BRAZIL
  122.  
  123. def IsVIETNAM():
  124. global __IS_VIETNAM
  125. return __IS_VIETNAM
  126.  
  127. def IsSINGAPORE():
  128. global __IS_SINGAPORE
  129. return __IS_SINGAPORE
  130.  
  131. def IsARABIC():
  132. global __IS_ARABIC
  133. return __IS_ARABIC
  134.  
  135. def IsWE_KOREA():
  136. return "locale/we_korea" == app.GetLocalePath()
  137.  
  138. # SUPPORT_NEW_KOREA_SERVER
  139. def LoadLocaleData():
  140. if IsYMIR():
  141. import net
  142. SERVER = "Äèµµ ¼­¹ö"
  143. if SERVER == net.GetServerInfo()[:len(SERVER)]:
  144. app.SetCHEONMA(0)
  145. app.LoadLocaleData("locale/we_korea")
  146. constInfo.ADD_DEF_BONUS_ENABLE = 0
  147. else:
  148. app.SetCHEONMA(1)
  149. app.LoadLocaleData("locale/ymir")
  150. constInfo.ADD_DEF_BONUS_ENABLE = 1
  151. else:
  152. app.LoadLocaleData(app.GetLocalePath())
  153.  
  154. def IsCHEONMA():
  155. return IsYMIR() # ÀÌÁ¦ YMIR ·ÎÄÉÀÏÀº ¹«Á¶°Ç õ¸¶¼­¹öÀÓ. õ¸¶¼­¹ö°¡ ¹®À» ´Ý±â Àü±îÁö º¯ÇÒ ÀÏ ¾øÀ½.
  156.  
  157. # END_OF_SUPPORT_NEW_KOREA_SERVER
  158.  
  159. def mapping(**kwargs): return kwargs
  160.  
  161. def SNA(text):
  162. def f(x):
  163. return text
  164. return f
  165.  
  166. def SA(text):
  167. def f(x):
  168. return text % x
  169. return f
  170.  
  171. def LoadLocaleFile(srcFileName, localeDict):
  172.  
  173. funcDict = {"SA":SA, "SNA":SNA}
  174.  
  175. lineIndex = 1
  176.  
  177. try:
  178. lines = pack_open(srcFileName, "r").readlines()
  179. except IOError:
  180. import dbg
  181. dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
  182. app.Abort()
  183.  
  184. for line in lines:
  185. try:
  186. tokens = line[:-1].split("\t")
  187. if len(tokens) == 2:
  188. localeDict[tokens[0]] = tokens[1]
  189. elif len(tokens) >= 3:
  190. type = tokens[2].strip()
  191. if type:
  192. localeDict[tokens[0]] = funcDict[type](tokens[1])
  193. else:
  194. localeDict[tokens[0]] = tokens[1]
  195. else:
  196. raise RuntimeError, "Unknown TokenSize"
  197.  
  198. lineIndex += 1
  199. except:
  200. import dbg
  201. dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
  202. raise
  203.  
  204.  
  205.  
  206. all = ["locale","error"]
  207.  
  208. if app.ENABLE_PREMIUM_EFFECT_ABOVE_HEAD:
  209. FN_PREMIUM_MARK = "%s/effect/premium.mse" % app.GetLocalePath()
  210. if IsEUROPE() and IsBRAZIL() :
  211. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  212. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  213. NEW_LOCALE_FILE_NAME = "%s/new_locale_game.txt" % app.GetLocalePath()
  214. constInfo.IN_GAME_SHOP_ENABLE = 0
  215. elif IsSINGAPORE() :
  216. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  217. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  218. NEW_LOCALE_FILE_NAME = "%s/new_locale_game.txt" % app.GetLocalePath()
  219. constInfo.IN_GAME_SHOP_ENABLE = 0
  220. elif IsNEWCIBN() :
  221. ##°ÔÀÓ¸íÀ̱úÁø´Ù.
  222. APP_TITLE = "ÐÂÒÐÌì2"
  223. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  224. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  225. NEW_LOCALE_FILE_NAME = "%s/new_locale_game.txt" % app.GetLocalePath()
  226. constInfo.IN_GAME_SHOP_ENABLE = 1
  227. elif IsTAIWAN():
  228. APP_TITLE = "°«III°ê"
  229. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  230. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  231. NEW_LOCALE_FILE_NAME = "%s/new_locale_game.txt" % app.GetLocalePath()
  232.  
  233. constInfo.IN_GAME_SHOP_ENABLE = 1
  234.  
  235. else:
  236. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  237. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  238. NEW_LOCALE_FILE_NAME = "%s/new_locale_game.txt" % app.GetLocalePath()
  239.  
  240. constInfo.IN_GAME_SHOP_ENABLE = 1
  241.  
  242. LoadLocaleFile(LOCALE_FILE_NAME, locals())
  243. LoadLocaleFile(NEW_LOCALE_FILE_NAME, locals())
  244.  
  245. ########################################################################################################
  246. ## NOTE : ¾ÆÀÌÅÛÀ» ¹ö¸±¶§ "¹«¾ùÀ»/¸¦ ¹ö¸®½Ã°Ú½À´Ï±î?" ¹®ÀÚ¿­ÀÇ Á¶»ç ¼±ÅÃÀ» À§ÇÑ ÄÚµå
  247. dictSingleWord = {
  248. "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,
  249. }
  250.  
  251. dictDoubleWord = {
  252. "°¡":1, "°¼":1, "°Å":1, "°Ü":1, "°í":1, "±³":1, "±¸":1, "±Ô":1, "±×":1, "±â":1, "°³":1, "°Â":1, "°Ô":1, "°è":1, "°ú":1, "±¥":1, "±Å":1, "±Ë":1, "±«":1, "±Í":1, "±á":1,
  253. "±î":1, "²¥":1, "²¨":1, "²¸":1, "²¿":1, "²Ø":1, "²Ù":1, "²ó":1, "²ô":1, "³¢":1, "±ú":1, "ƒÆ":1, "²²":1, "²¾":1, "²Ê":1, "²Ï":1, "²ã":1, "²ç":1, "²Ò":1, "²î":1, "…Ê":1,
  254. "³ª":1, "³Ä":1, "³Ê":1, "³à":1, "³ë":1, "´¢":1, "´©":1, "´º":1, "´À":1, "´Ï":1, "³»":1, "†v":1, "³×":1, "³é":1, "³ö":1, "‡R":1, "´²":1, "´´":1, "³ú":1, "´µ":1, "´Ì":1,
  255. "´Ù":1, "´ô":1, "´õ":1, "µ®":1, "µµ":1, "µÍ":1, "µÎ":1, "µà":1, "µå":1, "µð":1, "´ë":1, "ˆÛ":1, "µ¥":1, "µ³":1, "µÂ":1, "µÅ":1, "µÖ":1, "µØ":1, "µÇ":1, "µÚ":1, "µï":1,
  256. "µû":1, "‹x":1, "¶°":1, "¶Å":1, "¶Ç":1, "ŒÃ":1, "¶Ñ":1, "":1, "¶ß":1, "¶ì":1, "¶§":1, "‹š":1, "¶¼":1, "‹ó":1, "¶Ì":1, "¶Î":1, "Œô":1, "¶Ø":1, "¶Ï":1, "¶Ù":1, "¶ç":1,
  257. "¶ó":1, "·ª":1, "·¯":1, "·Á":1, "·Î":1, "·á":1, "·ç":1, "·ù":1, "¸£":1, "¸®":1, "·¡":1, "Žm":1, "·¹":1, "·Ê":1, "·Ö":1, "O":1, "·ï":1, "·ñ":1, "·Ú":1, "·ò":1, "l":1,
  258. "¸¶":1, "¸Ï":1, "¸Ó":1, "¸ç":1, "¸ð":1, "¹¦":1, "¹«":1, "¹Â":1, "¹Ç":1, "¹Ì":1, "¸Å":1, "Ù":1, "¸Þ":1, "¸ï":1, "¸ú":1, "‘À":1, "¹¹":1, "¹¾":1, "¸þ":1, "¹¿":1, "’Þ":1,
  259. "¹Ù":1, "¹ò":1, "¹ö":1, "º­":1, "º¸":1, "ºÌ":1, "ºÎ":1, "ºä":1, "ºê":1, "ºñ":1, "¹è":1, "“Ž":1, "º£":1, "º¶":1, "ºÁ":1, "ºÄ":1, "ºÛ":1, "ºÞ":1, "ºÆ":1, "ºß":1, "•‘":1,
  260. "ºü":1, "»²":1, "»µ":1, "»À":1, "»Ç":1, "»Ï":1, "»Ñ":1, "»Ø":1, "»Ú":1, "»ß":1, "»©":1, "•û":1, "»¾":1, "–§":1, "–Ø":1, "–ô":1, "—¨":1, "—Ä":1, "»Î":1, "—à":1, "˜u":1,
  261. "»ç":1, "»þ":1, "¼­":1, "¼Å":1, "¼Ò":1, "¼î":1, "¼ö":1, "½´":1, "½º":1, "½Ã":1, "»õ":1, "¼¨":1, "¼¼":1, "¼Î":1, "¼Ý":1, "¼â":1, "½¤":1, "½¦":1, "¼è":1, "½¬":1, "šÃ":1,
  262. "½Î":1, "›X":1, "½á":1, "›Ç":1, "½î":1, "¾¤":1, "¾¥":1, "o":1, "¾²":1, "¾¾":1, "½Ø":1, "›y":1, "½ê":1, "›ã":1, "½÷":1, "½û":1, "¾¬":1, "¾®":1, "½ý":1, "¾¯":1, "¾º":1,
  263. "¾Æ":1, "¾ß":1, "¾î":1, "¿©":1, "¿À":1, "¿ä":1, "¿ì":1, "À¯":1, "À¸":1, "ÀÌ":1, "¾Ö":1, "¾ê":1, "¿¡":1, "¿¹":1, "¿Í":1, "¿Ö":1, "¿ö":1, "¿þ":1, "¿Ü":1, "À§":1, "ÀÇ":1,
  264. "ÀÚ":1, "Àð":1, "Àú":1, "Á®":1, "Á¶":1, "ÁÒ":1, "ÁÖ":1, "Áê":1, "Áî":1, "Áö":1, "Àç":1, "À÷":1, "Á¦":1, "Áµ":1, "ÁÂ":1, "ÁÈ":1, "Áà":1, "Áâ":1, "ÁË":1, "Áã":1, "£p":1,
  265. "Â¥":1, "¹":1, "¼":1, "ÂÇ":1, "ÂÉ":1, "§c":1, "ÂÞ":1, "Âé":1, "Âê":1, "Âî":1, "°":1, "¤Š":1, "ÂÅ":1, "¥™":1, "ÂÒ":1, "ÂÖ":1, "Âå":1, "¨R":1, "ÂØ":1, "Âè":1, "©n":1,
  266. "Â÷":1, "í":1, "ó":1, "ÃÄ":1, "ÃÊ":1, "ÃÝ":1, "Ãß":1, "Ãò":1, "Ã÷":1, "Ä¡":1, "ä":1, "ª‰":1, "ü":1, "ÃÇ":1, "ÃÒ":1, "¬‚":1, "Ãç":1, "Ãé":1, "ÃÖ":1, "Ãë":1, "¯M":1,
  267. "Ä«":1, "ļ":1, "Ä¿":1, "ÄÑ":1, "ÄÚ":1, "Äì":1, "Äí":1, "Å¥":1, "Å©":1, "Ű":1, "ij":1, "°m":1, "ÄÉ":1, "ÄÙ":1, "Äâ":1, "Äè":1, "Äõ":1, "Äù":1, "Äê":1, "Äû":1, "´”":1,
  268. "Ÿ":1, "ÅË":1, "ÅÍ":1, "Åß":1, "Åä":1, "Åô":1, "Åõ":1, "Æ©":1, "Æ®":1, "Ƽ":1, "ÅÂ":1, "¶O":1, "Å×":1, "Åâ":1, "Åí":1, "Åï":1, "Åý":1, "Æ¡":1, "Åð":1, "Æ¢":1, "Æ·":1,
  269. "ÆÄ":1, "ÆÙ":1, "ÆÛ":1, "Æì":1, "Æ÷":1, "Ç¥":1, "Ǫ":1, "Ç»":1, "ÇÁ":1, "ÇÇ":1, "ÆÐ":1, "»—":1, "Æä":1, "Æó":1, "Ç¡":1, "½":1, "Ç´":1, "¿R":1, "Ç£":1, "Ƕ":1, "Àc":1,
  270. "ÇÏ":1, "Çá":1, "Çã":1, "Çô":1, "È£":1, "È¿":1, "ÈÄ":1, "ÈÞ":1, "Èå":1, "È÷":1, "ÇØ":1, "Á…":1, "Çì":1, "Çý":1, "È­":1, "ȳ":1, "ÈÌ":1, "ÈÑ":1, "ȸ":1, "ÈÖ":1, "Èñ":1,
  271. }
  272.  
  273. locale = mapping(
  274. )
  275.  
  276.  
  277. def GetAuxiliaryWordType(text):
  278.  
  279. textLength = len(text)
  280.  
  281. if textLength > 1:
  282.  
  283. singleWord = text[-1]
  284.  
  285. if (singleWord >= '0' and singleWord <= '9') or\
  286. (singleWord >= 'a' and singleWord <= 'z') or\
  287. (singleWord >= 'A' and singleWord <= 'Z'):
  288. if not dictSingleWord.has_key(singleWord):
  289. return 1
  290.  
  291. elif dictDoubleWord.has_key(text[-2:]):
  292. return 1
  293.  
  294. return 0
  295.  
  296.  
  297.  
  298. def CutMoneyString(sourceText, startIndex, endIndex, insertingText, backText):
  299.  
  300. sourceLength = len(sourceText)
  301.  
  302. if sourceLength < startIndex:
  303. return backText
  304.  
  305. text = sourceText[max(0, sourceLength-endIndex):sourceLength-startIndex]
  306.  
  307. if not text:
  308. return backText
  309.  
  310. if int(text) <= 0:
  311. return backText
  312.  
  313. text = str(int(text))
  314.  
  315. if backText:
  316. backText = " " + backText
  317.  
  318. return text + insertingText + backText
  319.  
  320. def SecondToDHM(time):
  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) % 24
  330. day = int(int((time / 60) / 60) / 24)
  331.  
  332. text = ""
  333.  
  334. if day > 0:
  335. text += str(day) + DAY
  336. text += " "
  337.  
  338. if hour > 0:
  339. text += str(hour) + HOUR
  340. text += " "
  341.  
  342. if minute > 0:
  343. text += str(minute) + MINUTE
  344.  
  345. return text
  346.  
  347. def SecondToHM(time):
  348.  
  349. if time < 60:
  350. if IsARABIC():
  351. return "%.2f %s" % (time, SECOND)
  352. else:
  353. return "0" + MINUTE
  354.  
  355. second = int(time % 60)
  356. minute = int((time / 60) % 60)
  357. hour = int((time / 60) / 60)
  358.  
  359. text = ""
  360.  
  361. if hour > 0:
  362. text += str(hour) + HOUR
  363. if hour > 0:
  364. text += " "
  365.  
  366. if minute > 0:
  367. text += str(minute) + MINUTE
  368.  
  369. return text
  370.  
  371.  
  372. def GetAlignmentTitleName(alignment):
  373. if alignment >= 12000:
  374. return TITLE_NAME_LIST[0]
  375. elif alignment >= 8000:
  376. return TITLE_NAME_LIST[1]
  377. elif alignment >= 4000:
  378. return TITLE_NAME_LIST[2]
  379. elif alignment >= 1000:
  380. return TITLE_NAME_LIST[3]
  381. elif alignment >= 0:
  382. return TITLE_NAME_LIST[4]
  383. elif alignment > -4000:
  384. return TITLE_NAME_LIST[5]
  385. elif alignment > -8000:
  386. return TITLE_NAME_LIST[6]
  387. elif alignment > -12000:
  388. return TITLE_NAME_LIST[7]
  389.  
  390. return TITLE_NAME_LIST[8]
  391.  
  392.  
  393. OPTION_PVPMODE_MESSAGE_DICT = {
  394. 0 : PVP_MODE_NORMAL,
  395. 1 : PVP_MODE_REVENGE,
  396. 2 : PVP_MODE_KILL,
  397. 3 : PVP_MODE_PROTECT,
  398. 4 : PVP_MODE_GUILD,
  399. }
  400.  
  401. error = mapping(
  402. CREATE_WINDOW = GAME_INIT_ERROR_MAIN_WINDOW,
  403. CREATE_CURSOR = GAME_INIT_ERROR_CURSOR,
  404. CREATE_NETWORK = GAME_INIT_ERROR_NETWORK,
  405. CREATE_ITEM_PROTO = GAME_INIT_ERROR_ITEM_PROTO,
  406. CREATE_MOB_PROTO = GAME_INIT_ERROR_MOB_PROTO,
  407. CREATE_NO_DIRECTX = GAME_INIT_ERROR_DIRECTX,
  408. CREATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_NOT_EXIST,
  409. CREATE_NO_APPROPRIATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_BAD_PERFORMANCE,
  410. CREATE_FORMAT = GAME_INIT_ERROR_GRAPHICS_NOT_SUPPORT_32BIT,
  411. NO_ERROR = ""
  412. )
  413.  
  414.  
  415. GUILDWAR_NORMAL_DESCLIST = [GUILD_WAR_USE_NORMAL_MAP, GUILD_WAR_LIMIT_30MIN, GUILD_WAR_WIN_CHECK_SCORE]
  416. GUILDWAR_WARP_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_WIPE_OUT_GUILD, GUILD_WAR_REWARD_POTION]
  417. GUILDWAR_CTF_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_TAKE_AWAY_FLAG1, GUILD_WAR_WIN_TAKE_AWAY_FLAG2, GUILD_WAR_REWARD_POTION]
  418.  
  419. MINIMAP_ZONE_NAME_DICT = {
  420. "metin2_map_a1" : MAP_A1,
  421. "map_a2" : MAP_A2,
  422. "metin2_map_a3" : MAP_A3,
  423. "metin2_map_b1" : MAP_B1,
  424. "map_b2" : MAP_B2,
  425. "metin2_map_b3" : MAP_B3,
  426. "metin2_map_c1" : MAP_C1,
  427. "map_c2" : MAP_C2,
  428. "metin2_map_c3" : MAP_C3,
  429. "map_n_snowm_01" : MAP_SNOW,
  430. "metin2_map_n_flame_01" : MAP_FLAME,
  431. "metin2_map_n_desert_01" : MAP_DESERT,
  432. "metin2_map_milgyo" : MAP_TEMPLE,
  433. "metin2_map_spiderdungeon" : MAP_SPIDER,
  434. "metin2_map_deviltower1" : MAP_SKELTOWER,
  435. "metin2_map_guild_01" : MAP_AG,
  436. "metin2_map_guild_02" : MAP_BG,
  437. "metin2_map_guild_03" : MAP_CG,
  438. "metin2_map_trent" : MAP_TREE,
  439. "metin2_map_trent02" : MAP_TREE2,
  440. "season1/metin2_map_WL_01" : MAP_WL,
  441. "season1/metin2_map_nusluck01" : MAP_NUSLUCK,
  442. "Metin2_map_CapeDragonHead" : MAP_CAPE,
  443. "metin2_map_Mt_Thunder" : MAP_THUNDER,
  444. "metin2_map_dawnmistwood" : MAP_DAWN,
  445. "metin2_map_BayBlackSand" : MAP_BAY,
  446. }
  447.  
  448.  
  449.  
  450. JOBINFO_TITLE = [
  451. [JOB_WARRIOR0, JOB_WARRIOR1, JOB_WARRIOR2,],
  452. [JOB_ASSASSIN0, JOB_ASSASSIN1, JOB_ASSASSIN2,],
  453. [JOB_SURA0, JOB_SURA1, JOB_SURA2,],
  454. [JOB_SHAMAN0, JOB_SHAMAN1, JOB_SHAMAN2,],
  455. ]
  456.  
  457. JOBINFO_DATA_LIST = [
  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. "Áö´ÉÀÌ ³ô¾ÆÁú¼ö·Ï Âø¿ë Àåºñ¿¡",
  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. WHISPER_ERROR = {
  587. 1 : CANNOT_WHISPER_NOT_LOGON,
  588. 2 : CANNOT_WHISPER_DEST_REFUSE,
  589. 3 : CANNOT_WHISPER_SELF_REFUSE,
  590. }
  591.  
  592. NOTIFY_MESSAGE = {
  593. "CANNOT_EQUIP_SHOP" : CANNOT_EQUIP_IN_SHOP,
  594. "CANNOT_EQUIP_EXCHANGE" : CANNOT_EQUIP_IN_EXCHANGE,
  595. }
  596.  
  597.  
  598. ATTACK_ERROR_TAIL_DICT = {
  599. "IN_SAFE" : CANNOT_ATTACK_SELF_IN_SAFE,
  600. "DEST_IN_SAFE" : CANNOT_ATTACK_DEST_IN_SAFE,
  601. }
  602.  
  603. SHOT_ERROR_TAIL_DICT = {
  604. "EMPTY_ARROW" : CANNOT_SHOOT_EMPTY_ARROW,
  605. "IN_SAFE" : CANNOT_SHOOT_SELF_IN_SAFE,
  606. "DEST_IN_SAFE" : CANNOT_SHOOT_DEST_IN_SAFE,
  607. }
  608.  
  609. USE_SKILL_ERROR_TAIL_DICT = {
  610. "IN_SAFE" : CANNOT_SKILL_SELF_IN_SAFE,
  611. "NEED_TARGET" : CANNOT_SKILL_NEED_TARGET,
  612. "NEED_EMPTY_BOTTLE" : CANNOT_SKILL_NEED_EMPTY_BOTTLE,
  613. "NEED_POISON_BOTTLE" : CANNOT_SKILL_NEED_POISON_BOTTLE,
  614. "REMOVE_FISHING_ROD" : CANNOT_SKILL_REMOVE_FISHING_ROD,
  615. "NOT_YET_LEARN" : CANNOT_SKILL_NOT_YET_LEARN,
  616. "NOT_MATCHABLE_WEAPON" : CANNOT_SKILL_NOT_MATCHABLE_WEAPON,
  617. "WAIT_COOLTIME" : CANNOT_SKILL_WAIT_COOLTIME,
  618. "NOT_ENOUGH_HP" : CANNOT_SKILL_NOT_ENOUGH_HP,
  619. "NOT_ENOUGH_SP" : CANNOT_SKILL_NOT_ENOUGH_SP,
  620. "CANNOT_USE_SELF" : CANNOT_SKILL_USE_SELF,
  621. "ONLY_FOR_ALLIANCE" : CANNOT_SKILL_ONLY_FOR_ALLIANCE,
  622. "CANNOT_ATTACK_ENEMY_IN_SAFE_AREA" : CANNOT_SKILL_DEST_IN_SAFE,
  623. "CANNOT_APPROACH" : CANNOT_SKILL_APPROACH,
  624. "CANNOT_ATTACK" : CANNOT_SKILL_ATTACK,
  625. "ONLY_FOR_CORPSE" : CANNOT_SKILL_ONLY_FOR_CORPSE,
  626. "EQUIP_FISHING_ROD" : CANNOT_SKILL_EQUIP_FISHING_ROD,
  627. "NOT_HORSE_SKILL" : CANNOT_SKILL_NOT_HORSE_SKILL,
  628. "HAVE_TO_RIDE" : CANNOT_SKILL_HAVE_TO_RIDE,
  629. }
  630.  
  631. LEVEL_LIST=["", HORSE_LEVEL1, HORSE_LEVEL2, HORSE_LEVEL3]
  632.  
  633. HEALTH_LIST=[
  634. HORSE_HEALTH0,
  635. HORSE_HEALTH1,
  636. HORSE_HEALTH2,
  637. HORSE_HEALTH3,
  638. ]
  639.  
  640.  
  641. USE_SKILL_ERROR_CHAT_DICT = {
  642. "NEED_EMPTY_BOTTLE" : SKILL_NEED_EMPTY_BOTTLE,
  643. "NEED_POISON_BOTTLE" : SKILL_NEED_POISON_BOTTLE,
  644. "ONLY_FOR_GUILD_WAR" : SKILL_ONLY_FOR_GUILD_WAR,
  645. }
  646.  
  647. SHOP_ERROR_DICT = {
  648. "NOT_ENOUGH_MONEY" : SHOP_NOT_ENOUGH_MONEY,
  649. "SOLDOUT" : SHOP_SOLDOUT,
  650. "INVENTORY_FULL" : SHOP_INVENTORY_FULL,
  651. "INVALID_POS" : SHOP_INVALID_POS,
  652. "NOT_ENOUGH_MONEY_EX" : SHOP_NOT_ENOUGH_MONEY_EX,
  653. }
  654.  
  655. if app.ENABLE_RENEWAL_SHOPEX:
  656. SHOP_ERROR_DICT["NOT_ENOUGH_ITEM"] = SHOP_NOT_ENOUGH_ITEM
  657. SHOP_ERROR_DICT["NOT_ENOUGH_EXP"] = SHOP_NOT_ENOUGH_EXP
  658.  
  659. def NumberToShopEXP(n):
  660. if n <= 0 :
  661. return "0 %s" % ("Yang")
  662. n = str(n)
  663. 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 ]), "Yang")
  664.  
  665. if app.ENABLE_CHEQUE_SYSTEM:
  666. SHOP_ERROR_DICT["NOT_ENOUGH_CHEQUE"] = SHOP_NOT_ENOUGH_CHEQUE
  667. SHOP_ERROR_DICT["NOT_ENOUGH_MONEY_CHEQUE"] = SHOP_NOT_ENOUGH_MONEY_CHEQUE
  668.  
  669. STAT_MINUS_DESCRIPTION = {
  670. "HTH-" : STAT_MINUS_CON,
  671. "INT-" : STAT_MINUS_INT,
  672. "STR-" : STAT_MINUS_STR,
  673. "DEX-" : STAT_MINUS_DEX,
  674. }
  675.  
  676. MODE_NAME_LIST = ( PVP_OPTION_NORMAL, PVP_OPTION_REVENGE, PVP_OPTION_KILL, PVP_OPTION_PROTECT, )
  677. TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, )
  678.  
  679. def GetLetterImageName():
  680. return "season1/icon/scroll_close.tga"
  681. def GetLetterOpenImageName():
  682. return "season1/icon/scroll_open.tga"
  683. def GetLetterCloseImageName():
  684. return "season1/icon/scroll_close.tga"
  685.  
  686. if 949 == app.GetDefaultCodePage():
  687. def EUL(name):
  688. if GetAuxiliaryWordType(name):
  689. return "¸¦ "
  690. else:
  691. return "À» "
  692.  
  693. def I(name):
  694. if GetAuxiliaryWordType(name):
  695. return "°¡ "
  696. else:
  697. return "ÀÌ "
  698.  
  699. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  700. name = sellItemName
  701. if sellItemCount > 1:
  702. name += " "
  703. name += str(sellItemCount)
  704. name += "°³"
  705.  
  706. return name + EUL(name) + str(sellItemPrice) + "³É¿¡ ÆÄ½Ã°Ú½À´Ï±î?"
  707.  
  708. def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  709. name = sellItemName
  710. if sellItemCount > 1:
  711. name += " "
  712. name += str(sellItemCount)
  713. name += "°³"
  714.  
  715. return name + EUL(name) + str(sellItemPrice) + "¿¡ »ç½Ã°Ú½À´Ï±î?"
  716.  
  717. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  718. return attachedItemName+EUL(attachedItemName)+"ºÎÂøÇÒ ¼ö ¾ø´Â ¾ÆÀÌÅÛÀÔ´Ï´Ù"
  719.  
  720. def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  721. return attachedItemName+EUL(attachedItemName)+"ºÎÂøÇÒ ¼ö ÀÖ´Â ¼ÒÄÏÀÌ ¾ø½À´Ï´Ù"
  722.  
  723. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  724. return attachedItemName+EUL(attachedItemName)+"ºÎÂøÇÒ ¼ö Àִ Ȳ±Ý ¼ÒÄÏÀÌ ¾ø½À´Ï´Ù"
  725.  
  726. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  727. name = dropItemName
  728. if dropItemCount > 1:
  729. name += " "
  730. name += str(dropItemCount)
  731. name += "°³"
  732.  
  733. return name+EUL(name)+"¹ö¸®½Ã°Ú½À´Ï±î?"
  734.  
  735. def NumberToMoneyString(number):
  736. if number <= 0:
  737. return "0³É"
  738.  
  739. number = str(number)
  740. result = CutMoneyString(number, 0, 4, "", "")
  741. result = CutMoneyString(number, 4, 8, "¸¸", result)
  742. result = CutMoneyString(number, 8, 12, "¾ï", result)
  743. result = result + "³É"
  744.  
  745. return result
  746.  
  747. def NumberToSecondaryCoinString(number):
  748. if number <= 0:
  749. return "0Àü"
  750.  
  751. number = str(number)
  752. result = CutMoneyString(number, 0, 4, "", "")
  753. result = CutMoneyString(number, 4, 8, "¸¸", result)
  754. result = CutMoneyString(number, 8, 12, "¾ï", result)
  755. result = result + "Àü"
  756.  
  757. return result
  758.  
  759. def FISHING_NOTIFY(isFish, fishName):
  760. if isFish:
  761. return fishName + I(fishName) + "¹® µí ÇÕ´Ï´Ù."
  762. else:
  763. return fishName + I(fishName) + "°É¸°µí ÇÕ´Ï´Ù."
  764.  
  765. if app.ENABLE_MULTISHOP:
  766. def NumberToWithItemString(n,c):
  767. if n <= 0:
  768. return "0 %s" % (c)
  769. 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 ]), c)
  770.  
  771. def FISHING_SUCCESS(isFish, fishName):
  772. if isFish:
  773. return fishName + EUL(fishName) + "Àâ¾Ò½À´Ï´Ù!"
  774. else:
  775. return fishName + EUL(fishName) + "¾ò¾ú½À´Ï´Ù!"
  776.  
  777. elif 932 == app.GetDefaultCodePage():
  778. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  779. if sellItemCount > 1 :
  780. return "%s %s ŒÂ‚ð %s‚É”„‚è‚Ü‚·‚©H" % ( sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  781. else:
  782. return "%s ‚ð %s‚Å”„‚è‚Ü‚·‚©H" % (sellItemName, NumberToMoneyString(sellItemPrice) )
  783.  
  784. def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  785. if buyItemCount > 1 :
  786. return "%s %sŒÂ‚ð %s‚Å”ƒ‚¢‚Ü‚·‚©H" % ( buyItemName, buyItemCount, buyItemPrice )
  787. else:
  788. return "%s‚ð %s‚Å”ƒ‚¢‚Ü‚·‚©H" % ( buyItemName, buyItemPrice )
  789.  
  790. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  791. return "%s‚ð‘•’…‚Å‚«‚È‚¢ƒAƒCƒe?‚Å‚·B" % (attachedItemName)
  792.  
  793. def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  794. return "%s‚ð‘•’…‚·‚é?ƒPƒbƒg‚ª‚ ‚è‚Ü‚¹‚ñB" % (attachedItemName)
  795.  
  796. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  797. return "%s‚ð‘•’…‚Å‚«‚鉩‹à?ƒPƒbƒg‚ª‚ ‚è‚Ü‚¹‚ñB" % (attachedItemName)
  798.  
  799. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  800. if dropItemCount > 1 :
  801. return "%s %d ŒÂ‚ðŽÌ‚Ă܂·‚©H" % (dropItemName, dropItemCount)
  802. else :
  803. return "%s‚ðŽÌ‚Ă܂·‚©H" % (dropItemName)
  804.  
  805. def FISHING_NOTIFY(isFish, fishName) :
  806. if isFish :
  807. return "%s ‚ªH‚¢‚‚¢‚½‚悤‚Å‚·" % ( fishName )
  808. else :
  809. return "%s ‚ª‚©‚©‚Á‚½‚悤‚Å‚·" % ( fishName )
  810.  
  811. def FISHING_SUCCESS(isFish, fishName) :
  812. if isFish :
  813. return "%s ‚ð•߂܂¦‚Ü‚µ‚½I" % (fishName)
  814. else :
  815. return "%s ‚ðŽè‚É“ü‚ê‚Ü‚µ‚½I" % (fishName)
  816.  
  817. def NumberToMoneyString(number) :
  818. if number <= 0 :
  819. return "0—¼"
  820.  
  821. number = str(number)
  822. result = CutMoneyString(number, 0, 4, "", "")
  823. result = CutMoneyString(number, 4, 8, "–œ", result)
  824. result = CutMoneyString(number, 8, 12, "‰­", result)
  825. result = result + "—¼"
  826.  
  827. return result
  828. def NumberToSecondaryCoinString(number) :
  829. if number <= 0 :
  830. return "0jun"
  831.  
  832. number = str(number)
  833. result = CutMoneyString(number, 0, 4, "", "")
  834. result = CutMoneyString(number, 4, 8, "–œ", result)
  835. result = CutMoneyString(number, 8, 12, "‰­", result)
  836. result = result + "jun"
  837.  
  838. return result
  839. elif IsHONGKONG():
  840. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  841. if sellItemCount > 1 :
  842. return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  843. else:
  844. return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  845.  
  846. def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  847. if buyItemCount > 1 :
  848. return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  849. else:
  850. return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  851.  
  852. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  853. return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  854.  
  855. def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  856. return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  857.  
  858. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  859. return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  860.  
  861. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  862. if dropItemCount > 1 :
  863. return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  864. else :
  865. return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  866.  
  867. def FISHING_NOTIFY(isFish, fishName) :
  868. if isFish :
  869. return FISHING_NOTIFY1 % ( fishName )
  870. else :
  871. return FISHING_NOTIFY2 % ( fishName )
  872.  
  873. def FISHING_SUCCESS(isFish, fishName) :
  874. if isFish :
  875. return FISHING_SUCCESS1 % (fishName)
  876. else :
  877. return FISHING_SUCCESS2 % (fishName)
  878.  
  879. def NumberToMoneyString(number) :
  880. if number <= 0 :
  881. return "0 %s" % (MONETARY_UNIT0)
  882.  
  883. number = str(number)
  884. result = CutMoneyString(number, 0, 4, "", "")
  885. result = CutMoneyString(number, 4, 8, MONETARY_UNIT1, result)
  886. result = CutMoneyString(number, 8, 12, MONETARY_UNIT2, result)
  887. result = result + MONETARY_UNIT0
  888.  
  889. return result
  890.  
  891. def NumberToSecondaryCoinString(number) :
  892. if number <= 0 :
  893. return "0 %s" % (MONETARY_UNIT_JUN)
  894.  
  895. number = str(number)
  896. result = CutMoneyString(number, 0, 4, "", "")
  897. result = CutMoneyString(number, 4, 8, MONETARY_UNIT1, result)
  898. result = CutMoneyString(number, 8, 12, MONETARY_UNIT2, result)
  899. result = result + MONETARY_UNIT_JUN
  900.  
  901. return result
  902.  
  903. elif IsNEWCIBN() or IsCIBN10():
  904. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  905. if sellItemCount>1:
  906. return "È·¶¨Òª°Ñ%s¸ö%sÒÔ%s½ð±ÒÂôµôÂð£¿" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  907. else:
  908. return "È·¶¨Òª°Ñ%sÒÔ%s½ð±ÒÂôµôÂð£¿" % (sellItemName, str(sellItemPrice))
  909.  
  910. def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  911. if sellItemCount>1:
  912. return "È·¶¨Òª°Ñ%s¸ö%sÒÔ%s½ð±ÒÂò½øÂð£¿" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  913. else:
  914. return "È·¶¨Òª°Ñ%sÒÔ%s½ð±ÒÂò½øÂð£¿" % (sellItemName, str(sellItemPrice))
  915.  
  916. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  917. return "ÎÞ·¨ÏâǶ%s µÄ×°±¸" % (attachedItemName)
  918.  
  919. def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  920. return "ûÓпÉÒÔÏâǶ%s µÄ¿×" % (attachedItemName)
  921.  
  922. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  923. return "ûÓпÉÒÔÏâǶ%s µÄ»Æ½ð¿×" % (attachedItemName)
  924.  
  925. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  926. if dropItemCount>1:
  927. return "È·¶¨ÒªÈÓµô%d¸ö%sÂð?" % (dropItemCount, dropItemName)
  928. else:
  929. return "È·¶¨ÒªÈÓµô%sÂð?" % (dropItemName)
  930.  
  931. def FISHING_NOTIFY(isFish, fishName):
  932. if isFish:
  933. return fishName # º»·¡ ¿©±â¿¡ ¾î¶² ¸»ÀÌ ºÙ¾îÀִµ¥, ÀÎÄÚµùÀÌ ±úÁ®À־ º¹¿øÇÒ ¼ö°¡ ¾ø´Ù ¤Ð¤Ð... cython¿¡¼­ ÀÎÄÚµù ¿¡·¯ ³ª¼­ Áö¿ö¹ö¸²...
  934. else:
  935. return "µö×Å" + fishName + "ÁË¡£"
  936.  
  937. def FISHING_SUCCESS(isFish, fishName):
  938. if isFish:
  939. return "µö×Å" + fishName + "ÁË¡£"
  940. else:
  941. return "»ñµÃ" + fishName + "ÁË¡£"
  942.  
  943. def NumberToMoneyString(number):
  944.  
  945. if number <= 0:
  946. return "0Á½"
  947.  
  948. number = str(number)
  949. result = CutMoneyString(number, 0, 4, "", "")
  950. result = CutMoneyString(number, 4, 8, "Íò", result)
  951. result = CutMoneyString(number, 8, 12, "ÒÚ", result)
  952. result = result + "Á½"
  953.  
  954. return result
  955.  
  956. def NumberToSecondaryCoinString(number):
  957.  
  958. if number <= 0:
  959. return "0JUN"
  960.  
  961. number = str(number)
  962. result = CutMoneyString(number, 0, 4, "", "")
  963. result = CutMoneyString(number, 4, 8, "Íò", result)
  964. result = CutMoneyString(number, 8, 12, "ÒÚ", result)
  965. result = result + "JUN"
  966.  
  967. return result
  968. elif IsEUROPE() and not IsWE_KOREA() and not IsYMIR():
  969. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  970. if sellItemCount > 1 :
  971. return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  972. else:
  973. return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  974.  
  975. def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  976. if buyItemCount > 1 :
  977. return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  978. else:
  979. return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  980.  
  981. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  982. return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  983.  
  984. def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  985. return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  986.  
  987. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  988. return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  989.  
  990. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  991. if dropItemCount > 1 :
  992. return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  993. else :
  994. return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  995.  
  996. def FISHING_NOTIFY(isFish, fishName) :
  997. if isFish :
  998. return FISHING_NOTIFY1 % ( fishName )
  999. else :
  1000. return FISHING_NOTIFY2 % ( fishName )
  1001.  
  1002. def FISHING_SUCCESS(isFish, fishName) :
  1003. if isFish :
  1004. return FISHING_SUCCESS1 % (fishName)
  1005. else :
  1006. return FISHING_SUCCESS2 % (fishName)
  1007.  
  1008. def NumberToMoneyString(n) :
  1009. if n <= 0 :
  1010. return "0 %s" % (MONETARY_UNIT0)
  1011.  
  1012. 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)
  1013.  
  1014. def NumberToSecondaryCoinString(n) :
  1015. if n <= 0 :
  1016. return "0 %s" % (MONETARY_UNIT_JUN)
  1017.  
  1018. 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)
  1019.  
  1020. def MoneyFormat(n):
  1021. return "%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 ]))
Advertisement
Add Comment
Please, Sign In to add comment