Guest User

Untitled

a guest
Jan 18th, 2018
23
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 17.54 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 = "Venturis Świat pełen wrażeń!"
  13. MAP_TITLE = "Venturis"
  14.  
  15. GUILD_HEADQUARTER = "Main Building"
  16. GUILD_FACILITY = "Facility"
  17. GUILD_FACTORY = "Factory"
  18. GUILD_OBJECT = "Object"
  19. GUILD_WALL = "Fence"
  20. GUILD_MEMBER_COUNT_INFINITY = "INFINITY"
  21.  
  22. LOGIN_CONNECT_FAILURE = "LOGIN_CONNECT_FAILURE"
  23. LOGIN_FAILURE_TIMEOUT = "LOGIN_CONNECT_FAILURE"
  24. LOGIN_FAILURE_WEB_BLOCK = "BLOCK_LOGIN(WEB)"
  25. LOGIN_FAILURE_BLOCK_LOGIN = "BLOCK_LOGIN"
  26. CHANNEL_NOTIFY_FULL = "CHANNEL_NOTIFY_FULL"
  27.  
  28. GUILD_BUILDING_LIST_TXT = app.GetLocalePath() + "/GuildBuildingList.txt"
  29.  
  30. GUILD_MARK_MIN_LEVEL = "3"
  31. GUILD_MARK_NOT_ENOUGH_LEVEL = "???? 3?? ?? ?????."
  32.  
  33. ERROR_MARK_UPLOAD_NEED_RECONNECT = "UploadMark: Reconnect to game"
  34. ERROR_MARK_CHECK_NEED_RECONNECT = "CheckMark: Reconnect to game"
  35.  
  36. VIRTUAL_KEY_ALPHABET_LOWERS  = r"[1234567890]/qwertyuiop\=asdfghjkl;`'zxcvbnm.,"
  37. VIRTUAL_KEY_ALPHABET_UPPERS  = r'{1234567890}?QWERTYUIOP|+ASDFGHJKL:~"ZXCVBNM<>'
  38. VIRTUAL_KEY_SYMBOLS    = '!@#$%^&*()_+|{}:"<>?~'
  39. VIRTUAL_KEY_NUMBERS    = "1234567890-=\[];',./`"
  40. VIRTUAL_KEY_SYMBOLS_BR    = '!@#$%^&*()_+|{}:"<>?~????????'
  41.  
  42. __IS_ENGLISH    = "ENGLISH" == app.GetLocaleServiceName()  
  43. __IS_HONGKONG   = "HONGKONG" == app.GetLocaleServiceName()
  44. __IS_NEWCIBN    = "locale/newcibn" == app.GetLocalePath()
  45. __IS_EUROPE     = "EUROPE" == app.GetLocaleServiceName()       
  46. __IS_CANADA     = "locale/ca" == app.GetLocalePath()
  47. __IS_BRAZIL     = "locale/br" == app.GetLocalePath()
  48. __IS_SINGAPORE  = "locale/sg" == app.GetLocalePath()
  49. __IS_VIETNAM    = "locale/vn" == app.GetLocalePath()
  50. __IS_ARABIC     = "locale/ae" == app.GetLocalePath()
  51. __IS_CIBN10     = "locale/cibn10" == app.GetLocalePath()
  52. __IS_WE_KOREA   = "locale/we_korea" == app.GetLocalePath()
  53. __IS_TAIWAN     = "locale/taiwan" == app.GetLocalePath()
  54. __IS_JAPAN      = "locale/japan" == app.GetLocalePath()
  55. LOGIN_FAILURE_WRONG_SOCIALID = "ASDF"
  56. LOGIN_FAILURE_SHUTDOWN_TIME = "ASDF"
  57.  
  58. constInfo.ZablokowaniGracze = []
  59. f = open("lib/blokowani.txt", "rb")
  60. dane = f.read()
  61. f.close()
  62.  
  63. licznik = 0
  64.  
  65. for i in xrange(len(dane)):
  66.     if dane[i] == "|":
  67.         licznik += 1
  68. licznik += 1
  69.  
  70. for i in xrange(licznik):
  71.     constInfo.ZablokowaniGracze.append(dane.split("|")[i])
  72.  
  73.  
  74. if __IS_CANADA:
  75.     __IS_EUROPE = True
  76.  
  77. def IsYMIR():
  78.     return "locale/ymir" == app.GetLocalePath()
  79.  
  80. def IsJAPAN():
  81.     return "locale/japan" == app.GetLocalePath()
  82.  
  83. def IsENGLISH():
  84.     global __IS_ENGLISH
  85.     return __IS_ENGLISH
  86.  
  87. def IsHONGKONG():
  88.     global __IS_HONGKONG
  89.     return __IS_HONGKONG
  90.  
  91. def IsTAIWAN():
  92.     return "locale/taiwan" == app.GetLocalePath()
  93.  
  94. def IsNEWCIBN():
  95.     return "locale/newcibn" == app.GetLocalePath()
  96.  
  97. def IsCIBN10():
  98.     global __IS_CIBN10
  99.     return __IS_CIBN10
  100.    
  101. def IsEUROPE():
  102.     global __IS_EUROPE
  103.     return __IS_EUROPE
  104.  
  105. def IsCANADA():
  106.     global __IS_CANADA
  107.     return __IS_CANADA
  108.  
  109. def IsBRAZIL():
  110.     global __IS_BRAZIL
  111.     return __IS_BRAZIL
  112.  
  113. def IsVIETNAM():
  114.     global __IS_VIETNAM
  115.     return __IS_VIETNAM
  116.  
  117. def IsSINGAPORE():
  118.     global __IS_SINGAPORE
  119.     return __IS_SINGAPORE
  120.    
  121. def IsARABIC():
  122.     global __IS_ARABIC
  123.     return __IS_ARABIC
  124.  
  125. def IsWE_KOREA():
  126.     return "locale/we_korea" == app.GetLocalePath()
  127.    
  128. # SUPPORT_NEW_KOREA_SERVER
  129. def LoadLocaleData():
  130.     if IsYMIR():
  131.         import net
  132.         SERVER = "?? ??"
  133.         if SERVER == net.GetServerInfo()[:len(SERVER)]:
  134.             app.SetCHEONMA(0)
  135.             app.LoadLocaleData("locale/we_korea")
  136.             constInfo.ADD_DEF_BONUS_ENABLE = 0
  137.         else:
  138.             app.SetCHEONMA(1)
  139.             app.LoadLocaleData("locale/ymir")
  140.             constInfo.ADD_DEF_BONUS_ENABLE = 1
  141.     else:
  142.         app.LoadLocaleData(app.GetLocalePath())
  143.  
  144. def IsCHEONMA():
  145.     return IsYMIR()     # ?? YMIR ???? ??? ?????. ????? ?? ?? ??? ?? ? ??.
  146.  
  147. # END_OF_SUPPORT_NEW_KOREA_SERVER
  148.  
  149. def mapping(**kwargs): return kwargs
  150.  
  151. def SNA(text)
  152.     def f(x):
  153.         return text
  154.     return f
  155.  
  156. def SA(text):
  157.     def f(x):
  158.         return text % x
  159.     return f
  160.  
  161. def LoadLocaleFile(srcFileName, localeDict):
  162.  
  163.     funcDict = {"SA":SA, "SNA":SNA}
  164.  
  165.     lineIndex = 1
  166.  
  167.     try:
  168.         lines = pack_open(srcFileName, "r").readlines()
  169.     except IOError:
  170.         import dbg
  171.         dbg.LogBox("LoadLocaleError(%(srcFileName)s)" % locals())
  172.         app.Abort()
  173.  
  174.     for line in lines:
  175.         try:       
  176.             tokens = line[:-1].split("\t")
  177.             if len(tokens) == 2:
  178.                 localeDict[tokens[0]] = tokens[1]
  179.             elif len(tokens) >= 3:
  180.                 type = tokens[2].strip()
  181.                 if type:
  182.                     localeDict[tokens[0]] = funcDict[type](tokens[1])
  183.                 else:
  184.                     localeDict[tokens[0]] = tokens[1]
  185.             else:
  186.                 raise RuntimeError, "Unknown TokenSize"
  187.  
  188.             lineIndex += 1
  189.         except:
  190.             import dbg
  191.             dbg.LogBox("%s: line(%d): %s" % (srcFileName, lineIndex, line), "Error")
  192.             raise
  193.  
  194.  
  195.    
  196. all = ["locale","error"]
  197.  
  198. if IsEUROPE()  and  IsBRAZIL()  :
  199.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  200.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  201.     constInfo.IN_GAME_SHOP_ENABLE = 0
  202. elif IsSINGAPORE() :
  203.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  204.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  205.     constInfo.IN_GAME_SHOP_ENABLE = 0
  206. elif IsNEWCIBN() :
  207.     ##???????.
  208.     APP_TITLE = "???2"
  209.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  210.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  211.     constInfo.IN_GAME_SHOP_ENABLE = 1
  212. elif IsTAIWAN():
  213.     APP_TITLE = "?III?"
  214.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  215.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  216.  
  217.     constInfo.IN_GAME_SHOP_ENABLE = 1
  218.    
  219. else:
  220.     FN_GM_MARK = "%s/effect/gm.mse" % app.GetLocalePath()
  221.     LOCALE_FILE_NAME = "%s/locale_game.txt" % app.GetLocalePath()
  222.  
  223.     constInfo.IN_GAME_SHOP_ENABLE = 1
  224.  
  225. LoadLocaleFile(LOCALE_FILE_NAME, locals())
  226.  
  227. ########################################################################################################
  228. ## NOTE : ???? ??? "???/? ????????" ???? ?? ??? ?? ??
  229. dictSingleWord = {
  230.     "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,
  231. }
  232.  
  233.  
  234. locale = mapping(
  235. )
  236.  
  237.  
  238. def GetAuxiliaryWordType(text):
  239.  
  240.     textLength = len(text)
  241.  
  242.     if textLength > 1:
  243.  
  244.         singleWord = text[-1]
  245.  
  246.         if (singleWord >= '0' and singleWord <= '9') or\
  247.             (singleWord >= 'a' and singleWord <= 'z') or\
  248.             (singleWord >= 'A' and singleWord <= 'Z'):
  249.             if not dictSingleWord.has_key(singleWord):
  250.                 return 1
  251.  
  252.     #   elif dictDoubleWord.has_key(text[-2:]):
  253.     #       return 1
  254.  
  255.     return 0
  256.  
  257.  
  258.  
  259. def CutMoneyString(sourceText, startIndex, endIndex, insertingText, backText):
  260.  
  261.     sourceLength = len(sourceText)
  262.  
  263.     if sourceLength < startIndex:
  264.         return backText
  265.  
  266.     text = sourceText[max(0, sourceLength-endIndex):sourceLength-startIndex]
  267.  
  268.     if not text:
  269.         return backText
  270.  
  271.     if int(text) <= 0:
  272.         return backText
  273.  
  274.     text = str(int(text))
  275.  
  276.     if backText:
  277.         backText = " " + backText
  278.  
  279.     return text + insertingText + backText
  280.  
  281. def SecondToDHM(time):
  282.     if time < 60:
  283.         if IsARABIC():
  284.             return "%.2f %s" % (time, SECOND)
  285.         else:
  286.             return "0" + MINUTE
  287.        
  288.     second = int(time % 60)
  289.     minute = int((time / 60) % 60)
  290.     hour = int((time / 60) / 60) % 24
  291.     day = int(int((time / 60) / 60) / 24)
  292.  
  293.     text = ""
  294.  
  295.     if day > 0:
  296.         text += str(day) + DAY
  297.         text += " "
  298.  
  299.     if hour > 0:
  300.         text += str(hour) + HOUR
  301.         text += " "
  302.  
  303.     if minute > 0:
  304.         text += str(minute) + MINUTE
  305.  
  306.     return text
  307.  
  308. def SecondToHM(time):
  309.  
  310.     if time < 60:
  311.         if IsARABIC():
  312.             return "%.2f %s" % (time, SECOND)
  313.         else:
  314.             return "0" + MINUTE
  315.  
  316.     second = int(time % 60)
  317.     minute = int((time / 60) % 60)
  318.     hour = int((time / 60) / 60)
  319.  
  320.     text = ""
  321.  
  322.     if hour > 0:
  323.         text += str(hour) + HOUR
  324.         if hour > 0:
  325.             text += " "
  326.  
  327.     if minute > 0:
  328.         text += str(minute) + MINUTE
  329.  
  330.     return text
  331.  
  332.  
  333. def GetAlignmentTitleName(alignment):
  334.     if alignment >= 12000:
  335.         return TITLE_NAME_LIST[0]
  336.     elif alignment >= 8000:
  337.         return TITLE_NAME_LIST[1]
  338.     elif alignment >= 4000:
  339.         return TITLE_NAME_LIST[2]
  340.     elif alignment >= 1000:
  341.         return TITLE_NAME_LIST[3]
  342.     elif alignment >= 0:
  343.         return TITLE_NAME_LIST[4]
  344.     elif alignment > -4000:
  345.         return TITLE_NAME_LIST[5]
  346.     elif alignment > -8000:
  347.         return TITLE_NAME_LIST[6]
  348.     elif alignment > -12000:
  349.         return TITLE_NAME_LIST[7]
  350.  
  351.     return TITLE_NAME_LIST[8]
  352.  
  353. if app.ENABLE_TITLE_SYSTEM:
  354.     TITLEPRESTIGE_NAME_LIST = (TITLE_1,TITLE_2,TITLE_3,TITLE_4,TITLE_5,TITLE_6,TITLE_7,TITLE_8,TITLE_9,TITLE_10,TITLE_11,TITLE_12,TITLE_13,TITLE_14,TITLE_15,TITLE_16,TITLE_17,TITLE_18,TITLE_19,TITLE_20,TITLE_PREMIUM_1,TITLE_PREMIUM_2,TITLE_PREMIUM_3,TITLE_PREMIUM_4,TITLE_PREMIUM_5,TITLE_PREMIUM_6,TITLE_PREMIUM_7,TITLE_PREMIUM_8,TITLE_PREMIUM_9,TITLE_PREMIUM_10,TITLE_PREMIUM_11,TITLE_PREMIUM_12,TITLE_PREMIUM_13,TITLE_PREMIUM_14,TITLE_PREMIUM_15,TITLE_PREMIUM_16,TITLE_0)
  355.  
  356. if app.ENABLE_TITLE_SYSTEM:
  357.     def GetPrestigeTitleName(prestige):
  358.         if prestige == 1:
  359.             return TITLEPRESTIGE_NAME_LIST[0]
  360.         elif prestige == 2:
  361.             return TITLEPRESTIGE_NAME_LIST[1]
  362.         elif prestige == 3:
  363.             return TITLEPRESTIGE_NAME_LIST[2]
  364.         elif prestige == 4:
  365.             return TITLEPRESTIGE_NAME_LIST[3]
  366.         elif prestige == 5:
  367.             return TITLEPRESTIGE_NAME_LIST[4]
  368.         elif prestige == 6:
  369.             return TITLEPRESTIGE_NAME_LIST[5]
  370.         elif prestige == 7:
  371.             return TITLEPRESTIGE_NAME_LIST[6]
  372.         elif prestige == 8:
  373.             return TITLEPRESTIGE_NAME_LIST[7]
  374.         elif prestige == 9:
  375.             return TITLEPRESTIGE_NAME_LIST[8]
  376.         elif prestige == 10:
  377.             return TITLEPRESTIGE_NAME_LIST[9]
  378.         elif prestige == 11:
  379.             return TITLEPRESTIGE_NAME_LIST[10]
  380.         elif prestige == 12:
  381.             return TITLEPRESTIGE_NAME_LIST[11]
  382.         elif prestige == 13:
  383.             return TITLEPRESTIGE_NAME_LIST[12]
  384.         elif prestige == 14:
  385.             return TITLEPRESTIGE_NAME_LIST[13]
  386.         elif prestige == 15:
  387.             return TITLEPRESTIGE_NAME_LIST[14]
  388.         elif prestige == 16:
  389.             return TITLEPRESTIGE_NAME_LIST[15]
  390.         elif prestige == 17:
  391.             return TITLEPRESTIGE_NAME_LIST[16]
  392.         elif prestige == 18:
  393.             return TITLEPRESTIGE_NAME_LIST[17]
  394.         elif prestige == 19:
  395.             return TITLEPRESTIGE_NAME_LIST[18]
  396.         elif prestige == 20:
  397.             return TITLEPRESTIGE_NAME_LIST[19]
  398.         elif prestige == 21:
  399.             return TITLEPRESTIGE_NAME_LIST[20]
  400.         elif prestige == 22:
  401.             return TITLEPRESTIGE_NAME_LIST[21]
  402.         elif prestige == 23:
  403.             return TITLEPRESTIGE_NAME_LIST[22]
  404.         elif prestige == 24:
  405.             return TITLEPRESTIGE_NAME_LIST[23]
  406.         elif prestige == 25:
  407.             return TITLEPRESTIGE_NAME_LIST[24]
  408.         elif prestige == 26:
  409.             return TITLEPRESTIGE_NAME_LIST[25]
  410.         elif prestige == 27:
  411.             return TITLEPRESTIGE_NAME_LIST[26]
  412.         elif prestige == 28:
  413.             return TITLEPRESTIGE_NAME_LIST[27]
  414.         elif prestige == 29:
  415.             return TITLEPRESTIGE_NAME_LIST[28]
  416.         elif prestige == 30:
  417.             return TITLEPRESTIGE_NAME_LIST[29]
  418.         elif prestige == 31:
  419.             return TITLEPRESTIGE_NAME_LIST[30]
  420.         elif prestige == 32:
  421.             return TITLEPRESTIGE_NAME_LIST[31]
  422.         elif prestige == 33:
  423.             return TITLEPRESTIGE_NAME_LIST[32]
  424.         elif prestige == 34:
  425.             return TITLEPRESTIGE_NAME_LIST[33]
  426.         elif prestige == 35:
  427.             return TITLEPRESTIGE_NAME_LIST[34]
  428.         elif prestige == 36:
  429.             return TITLEPRESTIGE_NAME_LIST[35]
  430.         elif prestige == 0:
  431.             return TITLEPRESTIGE_NAME_LIST[36]
  432.        
  433.         return TITLEPRESTIGE_NAME_LIST[37]
  434.  
  435. OPTION_PVPMODE_MESSAGE_DICT = {
  436.     0 : PVP_MODE_NORMAL,
  437.     1 : PVP_MODE_REVENGE,
  438.     2 : PVP_MODE_KILL,
  439.     3 : PVP_MODE_PROTECT,
  440.     4 : PVP_MODE_GUILD,
  441. }
  442.  
  443. error = mapping(
  444.     CREATE_WINDOW = GAME_INIT_ERROR_MAIN_WINDOW,
  445.     CREATE_CURSOR = GAME_INIT_ERROR_CURSOR,
  446.     CREATE_NETWORK = GAME_INIT_ERROR_NETWORK,
  447.     CREATE_ITEM_PROTO = GAME_INIT_ERROR_ITEM_PROTO,
  448.     CREATE_MOB_PROTO = GAME_INIT_ERROR_MOB_PROTO,
  449.     CREATE_NO_DIRECTX = GAME_INIT_ERROR_DIRECTX,
  450.     CREATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_NOT_EXIST,
  451.     CREATE_NO_APPROPRIATE_DEVICE = GAME_INIT_ERROR_GRAPHICS_BAD_PERFORMANCE,
  452.     CREATE_FORMAT = GAME_INIT_ERROR_GRAPHICS_NOT_SUPPORT_32BIT,
  453.     NO_ERROR = ""
  454. )
  455.  
  456.  
  457. GUILDWAR_NORMAL_DESCLIST = [GUILD_WAR_USE_NORMAL_MAP, GUILD_WAR_LIMIT_30MIN, GUILD_WAR_WIN_CHECK_SCORE]
  458. GUILDWAR_WARP_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_WIPE_OUT_GUILD, GUILD_WAR_REWARD_POTION]
  459. GUILDWAR_CTF_DESCLIST = [GUILD_WAR_USE_BATTLE_MAP, GUILD_WAR_WIN_TAKE_AWAY_FLAG1, GUILD_WAR_WIN_TAKE_AWAY_FLAG2, GUILD_WAR_REWARD_POTION]
  460.  
  461. MINIMAP_ZONE_NAME_DICT = {
  462.     "metin2_map_a1"  : MAP_A1,
  463.     "map_a2"         : MAP_A2,
  464.     "metin2_map_a3"  : MAP_A3,
  465.     "metin2_map_b1"  : MAP_B1,
  466.     "map_b2"         : MAP_B2,
  467.     "metin2_map_b3"  : MAP_B3,
  468.     "metin2_map_c1"  : MAP_C1,
  469.     "map_c2"         : MAP_C2,
  470.     "metin2_map_c3"  : MAP_C3,
  471.     "map_n_snowm_01" : MAP_SNOW,
  472.     "metin2_map_n_flame_01" : MAP_FLAME,
  473.     "metin2_map_n_desert_01" : MAP_DESERT,
  474.     "metin2_map_milgyo" : MAP_TEMPLE,
  475.     "metin2_map_spiderdungeon" : MAP_SPIDER,
  476.     "metin2_map_deviltower1" : MAP_SKELTOWER,
  477.     "metin2_map_guild_01" : MAP_AG,
  478.     "metin2_map_guild_02" : MAP_BG,
  479.     "metin2_map_guild_03" : MAP_CG,
  480.     "metin2_map_trent" : MAP_TREE,
  481.     "metin2_map_trent02" : MAP_TREE2,
  482.     "season1/metin2_map_WL_01" : MAP_WL,
  483.     "season1/metin2_map_nusluck01" : MAP_NUSLUCK,
  484.     "Metin2_map_CapeDragonHead" : MAP_CAPE,
  485.     "metin2_map_Mt_Thunder" : MAP_THUNDER,
  486.     "metin2_map_dawnmistwood" : MAP_DAWN,
  487.     "metin2_map_BayBlackSand" : MAP_BAY,
  488. }
  489.  
  490.  
  491.  
  492.  
  493. WHISPER_ERROR = {
  494.     1 : CANNOT_WHISPER_NOT_LOGON,
  495.     2 : CANNOT_WHISPER_DEST_REFUSE,
  496.     3 : CANNOT_WHISPER_SELF_REFUSE,
  497. }
  498.  
  499. NOTIFY_MESSAGE = {
  500.     "CANNOT_EQUIP_SHOP" : CANNOT_EQUIP_IN_SHOP,
  501.     "CANNOT_EQUIP_EXCHANGE" : CANNOT_EQUIP_IN_EXCHANGE,
  502. }
  503.  
  504.  
  505. ATTACK_ERROR_TAIL_DICT = {
  506.     "IN_SAFE" : CANNOT_ATTACK_SELF_IN_SAFE,
  507.     "DEST_IN_SAFE" : CANNOT_ATTACK_DEST_IN_SAFE,
  508. }
  509.  
  510. SHOT_ERROR_TAIL_DICT = {
  511.     "EMPTY_ARROW" : CANNOT_SHOOT_EMPTY_ARROW,
  512.     "IN_SAFE" : CANNOT_SHOOT_SELF_IN_SAFE,
  513.     "DEST_IN_SAFE" : CANNOT_SHOOT_DEST_IN_SAFE,
  514. }
  515.    
  516. USE_SKILL_ERROR_TAIL_DICT = {  
  517.     "IN_SAFE" : CANNOT_SKILL_SELF_IN_SAFE,
  518.     "NEED_TARGET" : CANNOT_SKILL_NEED_TARGET,
  519.     "NEED_EMPTY_BOTTLE" : CANNOT_SKILL_NEED_EMPTY_BOTTLE,
  520.     "NEED_POISON_BOTTLE" : CANNOT_SKILL_NEED_POISON_BOTTLE,
  521.     "REMOVE_FISHING_ROD" : CANNOT_SKILL_REMOVE_FISHING_ROD,
  522.     "NOT_YET_LEARN" : CANNOT_SKILL_NOT_YET_LEARN,
  523.     "NOT_MATCHABLE_WEAPON" : CANNOT_SKILL_NOT_MATCHABLE_WEAPON,
  524.     "WAIT_COOLTIME" : CANNOT_SKILL_WAIT_COOLTIME,
  525.     "NOT_ENOUGH_HP" : CANNOT_SKILL_NOT_ENOUGH_HP,
  526.     "NOT_ENOUGH_SP" : CANNOT_SKILL_NOT_ENOUGH_SP,
  527.     "CANNOT_USE_SELF" : CANNOT_SKILL_USE_SELF,
  528.     "ONLY_FOR_ALLIANCE" : CANNOT_SKILL_ONLY_FOR_ALLIANCE,
  529.     "CANNOT_ATTACK_ENEMY_IN_SAFE_AREA" : CANNOT_SKILL_DEST_IN_SAFE,
  530.     "CANNOT_APPROACH" : CANNOT_SKILL_APPROACH,
  531.     "CANNOT_ATTACK" : CANNOT_SKILL_ATTACK,
  532.     "ONLY_FOR_CORPSE" : CANNOT_SKILL_ONLY_FOR_CORPSE,
  533.     "EQUIP_FISHING_ROD" : CANNOT_SKILL_EQUIP_FISHING_ROD,
  534.     "NOT_HORSE_SKILL" : CANNOT_SKILL_NOT_HORSE_SKILL,
  535.     "HAVE_TO_RIDE" : CANNOT_SKILL_HAVE_TO_RIDE,
  536. }
  537.  
  538. LEVEL_LIST=["", HORSE_LEVEL1, HORSE_LEVEL2, HORSE_LEVEL3, HORSE_LEVEL4, HORSE_LEVEL5]
  539.  
  540. HEALTH_LIST=[
  541.     HORSE_HEALTH0,
  542.     HORSE_HEALTH1,
  543.     HORSE_HEALTH2,
  544.     HORSE_HEALTH3,
  545. ]
  546.  
  547.  
  548. USE_SKILL_ERROR_CHAT_DICT = {  
  549.     "NEED_EMPTY_BOTTLE" : SKILL_NEED_EMPTY_BOTTLE,
  550.     "NEED_POISON_BOTTLE" : SKILL_NEED_POISON_BOTTLE,
  551.     "ONLY_FOR_GUILD_WAR" : SKILL_ONLY_FOR_GUILD_WAR,
  552. }
  553.  
  554. SHOP_ERROR_DICT = {
  555.     "NOT_ENOUGH_MONEY" : SHOP_NOT_ENOUGH_MONEY,
  556.     "SOLDOUT" : SHOP_SOLDOUT,
  557.     "INVENTORY_FULL" : SHOP_INVENTORY_FULL,
  558.     "INVALID_POS" : SHOP_INVALID_POS,
  559.     "NOT_ENOUGH_MONEY_EX" : SHOP_NOT_ENOUGH_MONEY_EX,
  560. }
  561.  
  562. STAT_MINUS_DESCRIPTION = {
  563.     "HTH-" : STAT_MINUS_CON,
  564.     "INT-" : STAT_MINUS_INT,
  565.     "STR-" : STAT_MINUS_STR,
  566.     "DEX-" : STAT_MINUS_DEX,
  567. }
  568.  
  569. MODE_NAME_LIST = ( PVP_OPTION_NORMAL, PVP_OPTION_REVENGE, PVP_OPTION_KILL, PVP_OPTION_PROTECT, )
  570. TITLE_NAME_LIST = ( PVP_LEVEL0, PVP_LEVEL1, PVP_LEVEL2, PVP_LEVEL3, PVP_LEVEL4, PVP_LEVEL5, PVP_LEVEL6, PVP_LEVEL7, PVP_LEVEL8, )
  571.  
  572. def GetLetterImageName():
  573.     return "icon/quest/quest_closed_red.tga"
  574. def GetLetterOpenImageName():
  575.     return "icon/quest/quest_open_red.tga"
  576. def GetLetterCloseImageName():
  577.     return "icon/quest/quest_closed_red.tga"
  578.  
  579. if IsEUROPE() and not IsWE_KOREA() and not IsYMIR():
  580.     def DO_YOU_SELL_ITEM(sellItemName, sellItemCount, sellItemPrice):
  581.         if sellItemCount > 1 :
  582.             return DO_YOU_SELL_ITEM2 % (sellItemName, sellItemCount, NumberToMoneyString(sellItemPrice) )
  583.         else:
  584.             return DO_YOU_SELL_ITEM1 % (sellItemName, NumberToMoneyString(sellItemPrice) )
  585.  
  586.     def DO_YOU_BUY_ITEM(buyItemName, buyItemCount, buyItemPrice) :
  587.         if buyItemCount > 1 :
  588.             return DO_YOU_BUY_ITEM2 % ( buyItemName, buyItemCount, buyItemPrice )
  589.         else:
  590.             return DO_YOU_BUY_ITEM1 % ( buyItemName, buyItemPrice )
  591.            
  592.     def REFINE_FAILURE_CAN_NOT_ATTACH(attachedItemName) :
  593.         return REFINE_FAILURE_CAN_NOT_ATTACH0 % (attachedItemName)
  594.  
  595.     def REFINE_FAILURE_NO_SOCKET(attachedItemName) :
  596.         return REFINE_FAILURE_NO_SOCKET0 % (attachedItemName)
  597.  
  598.     def REFINE_FAILURE_NO_GOLD_SOCKET(attachedItemName) :
  599.         return REFINE_FAILURE_NO_GOLD_SOCKET0 % (attachedItemName)
  600.        
  601.     def HOW_MANY_ITEM_DO_YOU_DROP(dropItemName, dropItemCount) :
  602.         if dropItemCount > 1 :
  603.             return HOW_MANY_ITEM_DO_YOU_DROP2 % (dropItemName, dropItemCount)
  604.         else
  605.             return HOW_MANY_ITEM_DO_YOU_DROP1 % (dropItemName)
  606.  
  607.     def FISHING_NOTIFY(isFish, fishName) :
  608.         if isFish :
  609.             return FISHING_NOTIFY1 % ( fishName )
  610.         else :
  611.             return FISHING_NOTIFY2 % ( fishName )
  612.  
  613.     def FISHING_SUCCESS(isFish, fishName) :
  614.         if isFish :
  615.             return FISHING_SUCCESS1 % (fishName)
  616.         else :
  617.             return FISHING_SUCCESS2 % (fishName)
  618.            
  619.     def NumberToMoneyString(n) :
  620.         if n <= 0 :
  621.             return "0 %s" % (MONETARY_UNIT0)
  622.  
  623.         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)
  624.  
  625.     def NumberToSecondaryCoinString(n) :
  626.         if n <= 0 :
  627.             return "0 %s" % (MONETARY_UNIT_JUN)
  628.  
  629.         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