Guest User

Untitled

a guest
Jan 14th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 37.33 KB | None | 0 0
  1. import app
  2. import constInfo
  3. import os
  4. if app.ENABLE_EXTENDED_ALIGNMENT_SYSTEM:
  5. import cher as chr, necik as net
  6. GENDER_FEMALE = 0
  7. GENDER_MALE = 1
  8.  
  9. if not os.path.exists("monsters.cfg"):
  10. file = open("monsters.cfg", "w")
  11. file.write("NORMALNE")
  12. file.close()
  13.  
  14. if not os.path.exists("sys/font.cfg"):
  15. f = open("sys/font.cfg", "w")
  16. f.write("Tahoma:12|Tahoma:14|Tahoma:9")
  17. f.close()
  18.  
  19. f = open("sys/font.cfg", "r+")
  20. split = f.read().split("|")
  21.  
  22. UI_DEF_FONT = "" + split[0] + ""
  23. UI_DEF_FONT_LARGE = "" + split[1] + ""
  24. UI_DEF_FONT_SMALL = "" + split[2] + ""
  25.  
  26. f.close()
  27.  
  28. MAP_TRENT02 = "MAP_TRENT02" # ŔÓ˝Ă
  29. MAP_WL = "MAP_WL" # ŔÓ˝Ă
  30. MAP_NUSLUCK = "MAP_NUSLUCK" # ŔÓ˝Ă
  31. MAP_TREE2 = "MAP_TREE2"
  32.  
  33. BLEND_POTION_NO_TIME = "BLEND_POTION_NO_TIME"
  34. BLEND_POTION_NO_INFO = "BLEND_POTION_NO_INFO"
  35.  
  36. APP_TITLE = "Teravethia"
  37.  
  38. GUILD_HEADQUARTER = "Main Building"
  39. GUILD_FACILITY = "Facility"
  40. GUILD_OBJECT = "Object"
  41. GUILD_MEMBER_COUNT_INFINITY = "INFINITY"
  42.  
  43. LOGIN_CONNECT_FAILURE = "LOGIN_CONNECT_FAILURE"
  44. LOGIN_FAILURE_TIMEOUT = "LOGIN_CONNECT_FAILURE"
  45. LOGIN_FAILURE_WEB_BLOCK = "BLOCK_LOGIN(WEB)"
  46. LOGIN_FAILURE_BLOCK_LOGIN = "BLOCK_LOGIN"
  47. CHANNEL_NOTIFY_FULL = "CHANNEL_NOTIFY_FULL"
  48.  
  49. GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/GuildBuildingList.txt"
  50.  
  51. GUILD_MARK_MIN_LEVEL = "3"
  52. GUILD_MARK_NOT_ENOUGH_LEVEL = "±ćµĺ·ąş§ 3ŔĚ»ó şÎĹÍ °ˇ´ÉÇŐ´Ď´Ů."
  53.  
  54. ERROR_MARK_UPLOAD_NEED_RECONNECT = "UploadMark: Reconnect to game"
  55. ERROR_MARK_CHECK_NEED_RECONNECT = "CheckMark: Reconnect to game"
  56.  
  57. VIRTUAL_KEY_ALPHABET_LOWERS = r"[1234567890]/qwertyuiop\=asdfghjkl;`'zxcvbnm.,"
  58. VIRTUAL_KEY_ALPHABET_UPPERS = r'{1234567890}?QWERTYUIOP|+ASDFGHJKL:~"ZXCVBNM<>'
  59. VIRTUAL_KEY_SYMBOLS = '!@#$%^&*()_+|{}:"<>?~'
  60. VIRTUAL_KEY_NUMBERS = "1234567890-=\[];',./`"
  61. VIRTUAL_KEY_SYMBOLS_BR = '!@#$%^&*()_+|{}:"<>?~áŕăâéčęíěóňôőúůç'
  62.  
  63. __IS_ENGLISH = "ENGLISH" == app.GetLocaleServiceName()
  64. __IS_HONGKONG = "HONGKONG" == app.GetLocaleServiceName()
  65. __IS_NEWCIBN = "locale/newcibn" == app.GetLocalePath()
  66. __IS_EUROPE = "EUROPE" == app.GetLocaleServiceName()
  67. __IS_CANADA = "locale/ca" == app.GetLocalePath()
  68. __IS_BRAZIL = "locale/br" == app.GetLocalePath()
  69. __IS_SINGAPORE = "locale/sg" == app.GetLocalePath()
  70. __IS_VIETNAM = "locale/vn" == app.GetLocalePath()
  71. __IS_ARABIC = "locale/ae" == app.GetLocalePath()
  72. __IS_CIBN10 = "locale/cibn10" == app.GetLocalePath()
  73. __IS_WE_KOREA = "locale/we_korea" == app.GetLocalePath()
  74. __IS_TAIWAN = "locale/taiwan" == app.GetLocalePath()
  75. __IS_JAPAN = "locale/japan" == app.GetLocalePath()
  76. LOGIN_FAILURE_WRONG_SOCIALID = "ASDF"
  77. LOGIN_FAILURE_SHUTDOWN_TIME = "ASDF"
  78.  
  79. if __IS_CANADA:
  80. __IS_EUROPE = True
  81.  
  82. def IsYMIR():
  83. return "locale/ymir" == app.GetLocalePath()
  84.  
  85. def IsJAPAN():
  86. return "locale/japan" == app.GetLocalePath()
  87.  
  88. def IsENGLISH():
  89. global __IS_ENGLISH
  90. return __IS_ENGLISH
  91.  
  92. def IsHONGKONG():
  93. global __IS_HONGKONG
  94. return __IS_HONGKONG
  95.  
  96. def IsTAIWAN():
  97. return "locale/taiwan" == app.GetLocalePath()
  98.  
  99. def IsNEWCIBN():
  100. return "locale/newcibn" == app.GetLocalePath()
  101.  
  102. def IsCIBN10():
  103. global __IS_CIBN10
  104. return __IS_CIBN10
  105.  
  106. def IsEUROPE():
  107. global __IS_EUROPE
  108. return __IS_EUROPE
  109.  
  110. def IsCANADA():
  111. global __IS_CANADA
  112. return __IS_CANADA
  113.  
  114. def IsBRAZIL():
  115. global __IS_BRAZIL
  116. return __IS_BRAZIL
  117.  
  118. def IsVIETNAM():
  119. global __IS_VIETNAM
  120. return __IS_VIETNAM
  121.  
  122. def IsSINGAPORE():
  123. global __IS_SINGAPORE
  124. return __IS_SINGAPORE
  125.  
  126. def IsARABIC():
  127. global __IS_ARABIC
  128. return __IS_ARABIC
  129.  
  130. def IsWE_KOREA():
  131. return "locale/we_korea" == app.GetLocalePath()
  132.  
  133. # SUPPORT_NEW_KOREA_SERVER
  134. def LoadLocaleData():
  135. if IsYMIR():
  136. import necik as net
  137. SERVER = "Äčµµ Ľ­ąö"
  138. if SERVER == net.GetServerInfo()[:len(SERVER)]:
  139. app.SetCHEONMA(0)
  140. app.LoadLocaleData("locale/we_korea")
  141. constInfo.ADD_DEF_BONUS_ENABLE = 0
  142. else:
  143. app.SetCHEONMA(1)
  144. app.LoadLocaleData("locale/ymir")
  145. constInfo.ADD_DEF_BONUS_ENABLE = 1
  146. else:
  147. app.LoadLocaleData(app.GetLocalePath())
  148.  
  149. def IsCHEONMA():
  150. return IsYMIR() # ŔĚÁ¦ YMIR ·ÎÄÉŔĎŔş ą«Á¶°Ç õ¸¶Ľ­ąöŔÓ. õ¸¶Ľ­ąö°ˇ ą®Ŕ» ´Ý±â Ŕü±îÁö şŻÇŇ ŔĎ ľřŔ˝.
  151.  
  152. # END_OF_SUPPORT_NEW_KOREA_SERVER
  153.  
  154. def mapping(**kwargs): return kwargs
  155.  
  156. def SNA(text):
  157. def f(x):
  158. return text
  159. return f
  160.  
  161. def SA(text):
  162. def f(x):
  163. return text % x
  164. return f
  165.  
  166. def LoadLocaleFile(srcFileName, localeDict):
  167.  
  168. funcDict = {"SA":SA, "SNA":SNA}
  169.  
  170. lineIndex = 1
  171.  
  172. try:
  173. lines = pack_open(srcFileName, "r").readlines()
  174. except IOError:
  175. import dbg
  176. dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
  177. app.Abort()
  178.  
  179. for line in lines:
  180. try:
  181. tokens = line[:-1].split("\t")
  182. if len(tokens) == 2:
  183. localeDict[tokens[0]] = tokens[1]
  184. elif len(tokens) >= 3:
  185. type = tokens[2].strip()
  186. if type:
  187. localeDict[tokens[0]] = funcDict[type](tokens[1])
  188. else:
  189. localeDict[tokens[0]] = tokens[1]
  190. else:
  191. raise RuntimeError, "Unknown TokenSize"
  192.  
  193. lineIndex += 1
  194. except:
  195. import dbg
  196. dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
  197. raise
  198.  
  199.  
  200.  
  201. all = ["locale","error"]
  202.  
  203. if IsEUROPE() and IsBRAZIL() :
  204. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  205. FN_TOP1_MARK = "%s/effect/top1.mse" % app.GetLocalePath()
  206. FN_TOP2_MARK = "%s/effect/top2.mse" % app.GetLocalePath()
  207. FN_TOP3_MARK = "%s/effect/top3.mse" % app.GetLocalePath()
  208. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  209. constInfo.IN_GAME_SHOP_ENABLE = 0
  210. elif IsSINGAPORE() :
  211. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  212. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  213. constInfo.IN_GAME_SHOP_ENABLE = 0
  214. elif IsNEWCIBN() :
  215. ##°ÔŔÓ¸íṞ́úÁř´Ů.
  216. APP_TITLE = "ĐÂŇĐĚě2"
  217. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  218. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  219. constInfo.IN_GAME_SHOP_ENABLE = 1
  220. elif IsTAIWAN():
  221. APP_TITLE = "°«III°ę"
  222. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  223. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  224.  
  225. constInfo.IN_GAME_SHOP_ENABLE = 1
  226.  
  227. else:
  228. FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  229. LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  230.  
  231. constInfo.IN_GAME_SHOP_ENABLE = 1
  232.  
  233. LoadLocaleFile(LOCALE_FILE_NAME, locals())
  234.  
  235. ########################################################################################################
  236. ## NOTE : ľĆŔĚĹŰŔ» ąö¸±¶§ "ą«ľůŔ»/¸¦ ąö¸®˝Ă°Ú˝Ŕ´Ď±î?" ą®ŔÚż­ŔÇ Á¶»ç Ľ±ĹĂŔ» Ŕ§ÇŃ ÄÚµĺ
  237. dictSingleWord = {
  238. "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,
  239. }
  240.  
  241. dictDoubleWord = {
  242. "°ˇ":1, "°Ľ":1, "°Ĺ":1, "°Ü":1, "°í":1, "±ł":1, "±¸":1, "±Ô":1, "±×":1, "±â":1, "°ł":1, "°Â":1, "°Ô":1, "°č":1, "°ú":1, "±Ą":1, "±Ĺ":1, "±Ë":1, "±«":1, "±Í":1, "±á":1,
  243. "±î":1, "˛Ą":1, "˛¨":1, "˛¸":1, "˛ż":1, "˛Ř":1, "˛Ů":1, "˛ó":1, "˛ô":1, "ł˘":1, "±ú":1, "ƒĆ":1, "˛˛":1, "˛ľ":1, "˛Ę":1, "˛Ď":1, "˛ă":1, "˛ç":1, "˛Ň":1, "˛î":1, "…Ę":1,
  244. "łŞ":1, "łÄ":1, "łĘ":1, "łŕ":1, "łë":1, "´˘":1, "´©":1, "´ş":1, "´Ŕ":1, "´Ď":1, "ł»":1, "†v":1, "ł×":1, "łé":1, "łö":1, "‡R":1, "´˛":1, "´´":1, "łú":1, "´µ":1, "´Ě":1,
  245. "´Ů":1, "´ô":1, "´ő":1, "µ®":1, "µµ":1, "µÍ":1, "µÎ":1, "µŕ":1, "µĺ":1, "µđ":1, "´ë":1, "ˆŰ":1, "µĄ":1, "µł":1, "µÂ":1, "µĹ":1, "µÖ":1, "µŘ":1, "µÇ":1, "µÚ":1, "µď":1,
  246. "µű":1, "‹x":1, "¶°":1, "¶Ĺ":1, "¶Ç":1, "ŚĂ":1, "¶Ń":1, "ŤŹ":1, "¶ß":1, "¶ě":1, "¶§":1, "‹š":1, "¶Ľ":1, "‹ó":1, "¶Ě":1, "¶Î":1, "Śô":1, "¶Ř":1, "¶Ď":1, "¶Ů":1, "¶ç":1,
  247. "¶ó":1, "·Ş":1, "·Ż":1, "·Á":1, "·Î":1, "·á":1, "·ç":1, "·ů":1, "¸Ł":1, "¸®":1, "·ˇ":1, "Žm":1, "·ą":1, "·Ę":1, "·Ö":1, "ŹO":1, "·ď":1, "·ń":1, "·Ú":1, "·ň":1, "l":1,
  248. "¸¶":1, "¸Ď":1, "¸Ó":1, "¸ç":1, "¸đ":1, "ą¦":1, "ą«":1, "ąÂ":1, "ąÇ":1, "ąĚ":1, "¸Ĺ":1, "Ů":1, "¸Ţ":1, "¸ď":1, "¸ú":1, "‘Ŕ":1, "ąą":1, "ąľ":1, "¸ţ":1, "ąż":1, "’Ţ":1,
  249. "ąŮ":1, "ąň":1, "ąö":1, "ş­":1, "ş¸":1, "şĚ":1, "şÎ":1, "şä":1, "şę":1, "şń":1, "ąč":1, "“Ž":1, "şŁ":1, "ş¶":1, "şÁ":1, "şÄ":1, "şŰ":1, "şŢ":1, "şĆ":1, "şß":1, "•‘":1,
  250. "şü":1, "»˛":1, "»µ":1, "»Ŕ":1, "»Ç":1, "»Ď":1, "»Ń":1, "»Ř":1, "»Ú":1, "»ß":1, "»©":1, "•ű":1, "»ľ":1, "–§":1, "–Ř":1, "–ô":1, "—¨":1, "—Ä":1, "»Î":1, "—ŕ":1, "˜u":1,
  251. "»ç":1, "»ţ":1, "Ľ­":1, "ĽĹ":1, "ĽŇ":1, "Ľî":1, "Ľö":1, "˝´":1, "˝ş":1, "˝Ă":1, "»ő":1, "Ľ¨":1, "ĽĽ":1, "ĽÎ":1, "ĽÝ":1, "Ľâ":1, "˝¤":1, "˝¦":1, "Ľč":1, "˝¬":1, "šĂ":1,
  252. "˝Î":1, "›X":1, "˝á":1, "›Ç":1, "˝î":1, "ľ¤":1, "ľĄ":1, "ťo":1, "ľ˛":1, "ľľ":1, "˝Ř":1, "›y":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, "Ŕ÷":1, "Á¦":1, "Áµ":1, "ÁÂ":1, "ÁČ":1, "Áŕ":1, "Áâ":1, "ÁË":1, "Áă":1, "Łp":1,
  255. "ÂĄ":1, "Âą":1, "ÂĽ":1, "ÂÇ":1, "ÂÉ":1, "§c":1, "ÂŢ":1, "Âé":1, "Âę":1, "Âî":1, "°":1, "¤Š":1, "ÂĹ":1, "Ą™":1, "ÂŇ":1, "ÂÖ":1, "Âĺ":1, "¨R":1, "ÂŘ":1, "Âč":1, "©n":1,
  256. "Â÷":1, "Ă­":1, "Ăł":1, "ĂÄ":1, "ĂĘ":1, "ĂÝ":1, "Ăß":1, "Ăň":1, "Ă÷":1, "ġ":1, "ä":1, "މ":1, "ĂĽ":1, "ĂÇ":1, "ĂŇ":1, "¬‚":1, "Ăç":1, "Ăé":1, "ĂÖ":1, "Ăë":1, "ŻM":1,
  257. "Ä«":1, "ÄĽ":1, "Äż":1, "ÄŃ":1, "ÄÚ":1, "Äě":1, "Äí":1, "ĹĄ":1, "Ĺ©":1, "Ĺ°":1, "Äł":1, "°m":1, "ÄÉ":1, "ÄŮ":1, "Äâ":1, "Äč":1, "Äő":1, "Äů":1, "Äę":1, "Äű":1, "´”":1,
  258. "Ÿ":1, "ĹË":1, "ĹÍ":1, "Ĺß":1, "Ĺä":1, "Ĺô":1, "Ĺő":1, "Ć©":1, "Ć®":1, "ĆĽ":1, "ĹÂ":1, "¶O":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, "żR":1, "ÇŁ":1, "Ƕ":1, "Ŕc":1,
  260. "ÇĎ":1, "Çá":1, "Çă":1, "Çô":1, "ČŁ":1, "Čż":1, "ČÄ":1, "ČŢ":1, "Čĺ":1, "Č÷":1, "ÇŘ":1, "Á…":1, "Çě":1, "Çý":1, "Č­":1, "Čł":1, "ČĚ":1, "ČŃ":1, "ȸ":1, "ČÖ":1, "Čń":1,
  261. }
  262.  
  263. locale = mapping(
  264. )
  265.  
  266.  
  267. def GetAuxiliaryWordType(text):
  268.  
  269. textLength = len(text)
  270.  
  271. if textLength > 1:
  272.  
  273. singleWord = text[-1]
  274.  
  275. if (singleWord >= '0' and singleWord <= '9') or\
  276. (singleWord >= 'a' and singleWord <= 'z') or\
  277. (singleWord >= 'A' and singleWord <= 'Z'):
  278. if not dictSingleWord.has_key(singleWord):
  279. return 1
  280.  
  281. elif dictDoubleWord.has_key(text[-2:]):
  282. return 1
  283.  
  284. return 0
  285.  
  286.  
  287.  
  288. def CutMoneyString(sourceText, startIndex, endIndex, insertingText, backText):
  289.  
  290. sourceLength = len(sourceText)
  291.  
  292. if sourceLength < startIndex:
  293. return backText
  294.  
  295. text = sourceText[max(0, sourceLength-endIndex):sourceLength-startIndex]
  296.  
  297. if not text:
  298. return backText
  299.  
  300. if long(text) <= 0:
  301. return backText
  302.  
  303. text = str(int(text))
  304.  
  305. if backText:
  306. backText = " " + backText
  307.  
  308. return text + insertingText + backText
  309.  
  310. def SecondToDHM(time):
  311. if time < 60:
  312. if IsARABIC():
  313. return "%.2f %s" % (time, SECOND)
  314. else:
  315. return "0" + MINUTE
  316.  
  317. second = int(time % 60)
  318. minute = int((time / 60) % 60)
  319. hour = int((time / 60) / 60) % 24
  320. day = int(int((time / 60) / 60) / 24)
  321.  
  322. text = ""
  323.  
  324. if day > 0:
  325. text += str(day) + DAY
  326. text += " "
  327.  
  328. if hour > 0:
  329. text += str(hour) + HOUR
  330. text += " "
  331.  
  332. if minute > 0:
  333. text += str(minute) + MINUTE
  334.  
  335. return text
  336.  
  337. def SecondToHM(time):
  338.  
  339. if time < 60:
  340. if IsARABIC():
  341. return "%.2f %s" % (time, SECOND)
  342. else:
  343. return "0" + MINUTE
  344.  
  345. second = int(time % 60)
  346. minute = int((time / 60) % 60)
  347. hour = int((time / 60) / 60)
  348.  
  349. text = ""
  350.  
  351. if hour > 0:
  352. text += str(hour) + HOUR
  353. if hour > 0:
  354. text += " "
  355.  
  356. if minute > 0:
  357. text += str(minute) + MINUTE
  358.  
  359. return text
  360.  
  361.  
  362. if app.ENABLE_EXTENDED_ALIGNMENT_SYSTEM:
  363. def GetAlignmentTitleName(currentAlignment):
  364. titleNameTuple = TITLE_NAME_DICT.get(chr.RaceToSex(net.GetMainActorRace()), ('UNKNOWN_GENDER', ))
  365.  
  366. for alignmentIndex, alignmentValue in enumerate((30000, 20000, 12000, 8000, 4000, 1000, 0, 4000, -8000, -12000, -20000, -25000)):
  367. if currentAlignment >= alignmentValue:
  368. return titleNameTuple[alignmentIndex]
  369.  
  370. return titleNameTuple[-1]
  371. else:
  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. STAT_MINUS_DESCRIPTION = {
  656. "HTH-" : STAT_MINUS_CON,
  657. "INT-" : STAT_MINUS_INT,
  658. "STR-" : STAT_MINUS_STR,
  659. "DEX-" : STAT_MINUS_DEX,
  660. }
  661.  
  662. MODE_NAME_LIST = ( PVP_OPTION_NORMAL, PVP_OPTION_REVENGE, PVP_OPTION_KILL, PVP_OPTION_PROTECT, )
  663. if app.ENABLE_EXTENDED_ALIGNMENT_SYSTEM:
  664. TITLE_NAME_DICT = {
  665. GENDER_FEMALE : ( PVP_LEVEL0_F, PVP_LEVEL1_F, PVP_LEVEL2_F, PVP_LEVEL3_F, PVP_LEVEL4_F, PVP_LEVEL5_F, PVP_LEVEL6_F, PVP_LEVEL7_F, PVP_LEVEL8_F, PVP_LEVEL9_F, PVP_LEVEL10_F, PVP_LEVEL11_F, PVP_LEVEL12_F, ),
  666. GENDER_MALE : ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, PVP_LEVEL9, PVP_LEVEL10, PVP_LEVEL11, PVP_LEVEL12, ),
  667. }
  668. else:
  669. TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, PVP_LEVEL9, PVP_LEVEL10, PVP_LEVEL11, PVP_LEVEL12, ),
  670.  
  671. def GetLetterImageName():
  672. return "season1/icon/scroll_close.tga"
  673. def GetLetterOpenImageName():
  674. return "season1/icon/scroll_open.tga"
  675. def GetLetterCloseImageName():
  676. return "season1/icon/scroll_close.tga"
  677.  
  678. if 949 == app.GetDefaultCodePage():
  679. def EUL(name):
  680. if GetAuxiliaryWordType(name):
  681. return "¸¦ "
  682. else:
  683. return "Ŕ» "
  684.  
  685. def I(name):
  686. if GetAuxiliaryWordType(name):
  687. return "°ˇ "
  688. else:
  689. return "ŔĚ "
  690.  
  691. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  692. name = sellItemName
  693. if sellItemCount > 1:
  694. name += " "
  695. name += str(sellItemCount)
  696. name += "°ł"
  697.  
  698. return name + EUL(name) + str(sellItemPrice) + "łÉżˇ ĆĽðڽŔ´Ď±î?"
  699.  
  700. def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  701. name = sellItemName
  702. if sellItemCount > 1:
  703. name += " "
  704. name += str(sellItemCount)
  705. name += "°ł"
  706.  
  707. return name + EUL(name) + str(sellItemPrice) + "żˇ »ç˝Ă°Ú˝Ŕ´Ď±î?"
  708.  
  709. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  710. return attachedItemName+EUL(attachedItemName)+"şÎÂřÇŇ Ľö ľř´Â ľĆŔĚĹŰŔÔ´Ď´Ů"
  711.  
  712. def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  713. return attachedItemName+EUL(attachedItemName)+"şÎÂřÇŇ Ľö ŔÖ´Â ĽŇÄĎŔĚ ľř˝Ŕ´Ď´Ů"
  714.  
  715. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  716. return attachedItemName+EUL(attachedItemName)+"şÎÂřÇŇ Ľö Ŕִ Ȳ±Ý ĽŇÄĎŔĚ ľř˝Ŕ´Ď´Ů"
  717.  
  718. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  719. name = dropItemName
  720. if dropItemCount > 1:
  721. name += " "
  722. name += str(dropItemCount)
  723. name += "°ł"
  724.  
  725. return name+EUL(name)+"ąö¸®˝Ă°Ú˝Ŕ´Ď±î?"
  726.  
  727. def NumberToMoneyString(number):
  728. if number <= 0:
  729. return "0łÉ"
  730.  
  731. number = str(number)
  732. result = CutMoneyString(number, 0, 4, "", "")
  733. result = CutMoneyString(number, 4, 8, "¸¸", result)
  734. result = CutMoneyString(number, 8, 12, "ľď", result)
  735. result = result + "łÉ"
  736.  
  737. return result
  738.  
  739. def NumberToSecondaryCoinString(number):
  740. if number <= 0:
  741. return "0Ŕü"
  742.  
  743. number = str(number)
  744. result = CutMoneyString(number, 0, 4, "", "")
  745. result = CutMoneyString(number, 4, 8, "¸¸", result)
  746. result = CutMoneyString(number, 8, 12, "ľď", result)
  747. result = result + "Ŕü"
  748.  
  749. return result
  750.  
  751. def FISHING_NOTIFY(isFish, fishName):
  752. if isFish:
  753. return fishName + I(fishName) + "ą® µí ÇŐ´Ď´Ů."
  754. else:
  755. return fishName + I(fishName) + "°É¸°µí ÇŐ´Ď´Ů."
  756.  
  757. def FISHING_SUCCESS(isFish, fishName):
  758. if isFish:
  759. return fishName + EUL(fishName) + "ŔâľŇ˝Ŕ´Ď´Ů!"
  760. else:
  761. return fishName + EUL(fishName) + "ľňľú˝Ŕ´Ď´Ů!"
  762.  
  763. elif 932 == app.GetDefaultCodePage():
  764. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  765. if sellItemCount > 1 :
  766. return "%s %s ŚÂ‚đ %s‚É”„‚č‚Ü‚·‚©H" % ( sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  767. else:
  768. return "%s ‚đ %s‚Ĺ”„‚č‚Ü‚·‚©H" % (sellItemName, NumberToMoneyString(sellItemPrice) )
  769.  
  770. def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  771. if buyItemCount > 1 :
  772. return "%s %sŚÂ‚đ %s‚Ĺ”ƒ‚˘‚Ü‚·‚©H" % ( buyItemName, buyItemCount, buyItemPrice )
  773. else:
  774. return "%s‚đ %s‚Ĺ”ƒ‚˘‚Ü‚·‚©H" % ( buyItemName, buyItemPrice )
  775.  
  776. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  777. return "%s‚đ‘•’…‚Ĺ‚«‚Č‚˘ƒAƒCƒe?‚Ĺ‚·B" % (attachedItemName)
  778.  
  779. def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  780. return "%s‚đ‘•’…‚·‚é?ƒPƒbƒg‚Ş‚ ‚č‚Ü‚ą‚ńB" % (attachedItemName)
  781.  
  782. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  783. return "%s‚đ‘•’…‚Ĺ‚«‚鉩‹ŕ?ƒPƒbƒg‚Ş‚ ‚č‚Ü‚ą‚ńB" % (attachedItemName)
  784.  
  785. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  786. if dropItemCount > 1 :
  787. return "%s %d ŚÂ‚đŽĚ‚Ä‚Ü‚·‚©H" % (dropItemName, dropItemCount)
  788. else :
  789. return "%s‚đŽĚ‚Ä‚Ü‚·‚©H" % (dropItemName)
  790.  
  791. def FISHING_NOTIFY(isFish, fishName) :
  792. if isFish :
  793. return "%s ‚ސH‚˘‚‚˘‚˝‚悤‚Ĺ‚·" % ( fishName )
  794. else :
  795. return "%s ‚Ş‚©‚©‚Á‚˝‚悤‚Ĺ‚·" % ( fishName )
  796.  
  797. def FISHING_SUCCESS(isFish, fishName) :
  798. if isFish :
  799. return "%s ‚đ•ß‚Ü‚¦‚Ü‚µ‚˝I" % (fishName)
  800. else :
  801. return "%s ‚đŽč‚É“ü‚ę‚Ü‚µ‚˝I" % (fishName)
  802.  
  803. def NumberToMoneyString(number) :
  804. if number <= 0 :
  805. return "0—Ľ"
  806.  
  807. number = str(number)
  808. result = CutMoneyString(number, 0, 4, "", "")
  809. result = CutMoneyString(number, 4, 8, "–ś", result)
  810. result = CutMoneyString(number, 8, 12, "‰­", result)
  811. result = result + "—Ľ"
  812.  
  813. return result
  814. def NumberToSecondaryCoinString(number) :
  815. if number <= 0 :
  816. return "0jun"
  817.  
  818. number = str(number)
  819. result = CutMoneyString(number, 0, 4, "", "")
  820. result = CutMoneyString(number, 4, 8, "–ś", result)
  821. result = CutMoneyString(number, 8, 12, "‰­", result)
  822. result = result + "jun"
  823.  
  824. return result
  825. elif IsHONGKONG():
  826. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  827. if sellItemCount > 1 :
  828. return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  829. else:
  830. return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  831.  
  832. def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  833. if buyItemCount > 1 :
  834. return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  835. else:
  836. return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  837.  
  838. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  839. return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  840.  
  841. def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  842. return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  843.  
  844. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  845. return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  846.  
  847. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  848. if dropItemCount > 1 :
  849. return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  850. else :
  851. return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  852.  
  853. def FISHING_NOTIFY(isFish, fishName) :
  854. if isFish :
  855. return FISHING_NOTIFY1 % ( fishName )
  856. else :
  857. return FISHING_NOTIFY2 % ( fishName )
  858.  
  859. def FISHING_SUCCESS(isFish, fishName) :
  860. if isFish :
  861. return FISHING_SUCCESS1 % (fishName)
  862. else :
  863. return FISHING_SUCCESS2 % (fishName)
  864.  
  865. def NumberToMoneyString(number) :
  866. if number <= 0 :
  867. return "0 %s" % (MONETARY_UNIT0)
  868.  
  869. number = str(number)
  870. result = CutMoneyString(number, 0, 4, "", "")
  871. result = CutMoneyString(number, 4, 8, MONETARY_UNIT1, result)
  872. result = CutMoneyString(number, 8, 12, MONETARY_UNIT2, result)
  873. result = result + MONETARY_UNIT0
  874.  
  875. return result
  876.  
  877. def NumberToSecondaryCoinString(number) :
  878. if number <= 0 :
  879. return "0 %s" % (MONETARY_UNIT_JUN)
  880.  
  881. number = str(number)
  882. result = CutMoneyString(number, 0, 4, "", "")
  883. result = CutMoneyString(number, 4, 8, MONETARY_UNIT1, result)
  884. result = CutMoneyString(number, 8, 12, MONETARY_UNIT2, result)
  885. result = result + MONETARY_UNIT_JUN
  886.  
  887. return result
  888.  
  889. elif IsNEWCIBN() or IsCIBN10():
  890. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  891. if sellItemCount>1:
  892. return "Č·¶¨ŇŞ°Ń%s¸ö%sŇÔ%s˝đ±ŇÂôµôÂđŁż" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  893. else:
  894. return "Č·¶¨ŇŞ°Ń%sŇÔ%s˝đ±ŇÂôµôÂđŁż" % (sellItemName, str(sellItemPrice))
  895.  
  896. def DO_YOU_BUY_ITEM(sellItemName, sellItemCount, sellItemPrice):
  897. if sellItemCount>1:
  898. return "Č·¶¨ŇŞ°Ń%s¸ö%sŇÔ%s˝đ±ŇÂň˝řÂđŁż" % (str(sellItemCount), sellItemName, str(sellItemPrice))
  899. else:
  900. return "Č·¶¨ŇŞ°Ń%sŇÔ%s˝đ±ŇÂň˝řÂđŁż" % (sellItemName, str(sellItemPrice))
  901.  
  902. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName):
  903. return "ÎŢ·¨ĎâǶ%s µÄ×°±¸" % (attachedItemName)
  904.  
  905. def REFINE_FAILURE_NO_SOCKET(attachedItemName):
  906. return "Ă»ÓĐżÉŇÔĎâǶ%s µÄż×" % (attachedItemName)
  907.  
  908. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName):
  909. return "Ă»ÓĐżÉŇÔĎâǶ%s µÄ»Ć˝đż×" % (attachedItemName)
  910.  
  911. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount):
  912. if dropItemCount>1:
  913. return "Č·¶¨ŇŞČÓµô%d¸ö%sÂđ?" % (dropItemCount, dropItemName)
  914. else:
  915. return "Č·¶¨ŇŞČÓµô%sÂđ?" % (dropItemName)
  916.  
  917. def FISHING_NOTIFY(isFish, fishName):
  918. if isFish:
  919. return fishName # ş»·ˇ ż©±âżˇ ľî¶˛ ¸»ŔĚ şŮľîŔִµĄ, ŔÎÄÚµůŔĚ ±úÁ®Ŕ־ şążřÇŇ Ľö°ˇ ľř´Ů ¤Đ¤Đ... cythonżˇĽ­ ŔÎÄÚµů żˇ·Ż łŞĽ­ Áöżöąö¸˛...
  920. else:
  921. return "µö×Ĺ" + fishName + "ÁˡŁ"
  922.  
  923. def FISHING_SUCCESS(isFish, fishName):
  924. if isFish:
  925. return "µö×Ĺ" + fishName + "ÁˡŁ"
  926. else:
  927. return "»ńµĂ" + fishName + "ÁˡŁ"
  928.  
  929. def NumberToMoneyString(number):
  930.  
  931. if number <= 0:
  932. return "0Á˝"
  933.  
  934. number = str(number)
  935. result = CutMoneyString(number, 0, 4, "", "")
  936. result = CutMoneyString(number, 4, 8, "Íň", result)
  937. result = CutMoneyString(number, 8, 12, "ŇÚ", result)
  938. result = result + "Á˝"
  939.  
  940. return result
  941.  
  942. def NumberToSecondaryCoinString(number):
  943.  
  944. if number <= 0:
  945. return "0JUN"
  946.  
  947. number = str(number)
  948. result = CutMoneyString(number, 0, 4, "", "")
  949. result = CutMoneyString(number, 4, 8, "Íň", result)
  950. result = CutMoneyString(number, 8, 12, "ŇÚ", result)
  951. result = result + "JUN"
  952.  
  953. return result
  954. elif IsEUROPE() and not IsWE_KOREA() and not IsYMIR():
  955. def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  956. if sellItemCount > 1 :
  957. return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  958. else:
  959. return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  960.  
  961. def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  962. if buyItemCount > 1 :
  963. return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  964. else:
  965. return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  966.  
  967. def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  968. return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  969.  
  970. def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  971. return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  972.  
  973. def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  974. return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  975.  
  976. def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  977. if dropItemCount > 1 :
  978. return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  979. else :
  980. return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  981.  
  982. def FISHING_NOTIFY(isFish, fishName) :
  983. if isFish :
  984. return FISHING_NOTIFY1 % ( fishName )
  985. else :
  986. return FISHING_NOTIFY2 % ( fishName )
  987.  
  988. def FISHING_SUCCESS(isFish, fishName) :
  989. if isFish :
  990. return FISHING_SUCCESS1 % (fishName)
  991. else :
  992. return FISHING_SUCCESS2 % (fishName)
  993.  
  994. def NumberToMoneyString(n) :
  995. if n <= 0 :
  996. return "0 %s" % (MONETARY_UNIT0)
  997.  
  998. 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)
  999.  
  1000. def NumberToSecondaryCoinString(n) :
  1001. if n <= 0 :
  1002. return "0 %s" % (MONETARY_UNIT_JUN)
  1003.  
  1004. 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)
Add Comment
Please, Sign In to add comment