import item ########Anti Exp Button by Sanii########## #ANTI_EXP = 0 #ANTI_EXP_STATE = 0 ########################################## ########################################## ## BONISWITCHER ENTRIES ########################################## #SWITCHER_COUNT = 5 #OPTION_FILE_NAME = "config.inf" #ATTR_BONI_LIST = ["Keiner", "Max. TP", "Max. MP", "Vitalität", "Intelligenz", "Stärke", "Beweglichkeit", "Angriffsgeschwindigkeit", "Bewegungsgeschwindigkeit", #"Zaubergeschwindigkeit", "Lebensregeneration", "Manaregeneration", "Vergiftungschance", "Ohnmachtschance", "Verlangsamungschance", #"Chance auf krit. Treffer", "Chance auf durchbohrenden Treffer", "Schaden gegen Halbmenschen", "Schaden gegen Tiere", "Schaden gegen Orks", #"Schaden gegen Esoterische", "Schaden gegen Untote", "Schaden gegen Teufel", "Schaden wird von TP absorbiert", "Schaden wird von MP absorbiert", #"Chance auf Manaraub", "Chance, MP bei Treffer zurückzuerhalten", "Chance, Nahkampf-Angriff abzublocken", "Chance, Pfeilangriff auszuweichen", #"Schwertverteidigung", "Zweihänderverteidigung", "Dolchverteidigung", "Glockenverteidigung", "Fächerverteidigung", "Pfeilwiderstand", #"Feuerwiderstand", "Blitzwiderstand", "Magiewiderstand", "Windwiderstand", "Chance, Nahkampftreffer zu reflektieren", #"Chance, Fluch zu reflektieren", "Giftwiderstand", "Chance, MP wiederherzustellen", "Chance auf EXP-Bonus", #"Chance, eine doppelte Menge Yang fallen zu lassen", "Chance, eine doppelte Menge von Gegenständen fallen zu lassen", "Trank Effektzuwachs", #"Chance, TP wiederherzustellen", "Abwehr gegen Ohnmacht", "Abwehr gegen Verlangsamung", "Immun gegen Stürzen", "SKILL", "Bogenreichweite", #"Angriffswert", "Verteidigung", "Magieangriffswert", "Magieverteidigung", "-", "Max. Ausdauer", "Schaden gegen Krieger", #"Schaden gegen Ninjas", "Schaden gegen Suras", "Schaden gegen Schamanen", "Schaden gegen Monster", "-", "-", "-", "-", "-", "-", "-", #"Fertigkeitsschaden", "Durchschn. Schaden"] #ITEM_LIST_WEAPON_ADDON = [189, 199, 299, 3169, 3219, 5119, 5129, 7169, 2159, 2179, 1139, 1179, 469, 479, 9919, 5349, 7379, 1349, 2379] #BONI_LIST_NO_PLUS = [0, 48, 49, 50] #BONI_LIST_NO_PERCENT = [0, 1, 2, 3, 4, 5, 6, 48, 49, 50, 52, 53, 54, 55, 56] #BONI_LIST_NO_VALUE = [0, 48, 49, 50] #def GetAttrText(attrtyp, attrval): #attrtyp = int(attrtyp) #attrval = int(attrval) #attrtext = "" #if BONI_LIST_NO_PLUS.count(attrtyp) == 0 and int(attrval) >= 0: #attrtext = "+" #if BONI_LIST_NO_VALUE.count(attrtyp) == 0: #attrtext = attrtext + str(attrval) #if BONI_LIST_NO_PERCENT.count(attrtyp) == 0: #attrtext = attrtext + "%" #if BONI_LIST_NO_VALUE.count(attrtyp) == 0: #attrtext = attrtext + " " #attrtext = attrtext + ATTR_BONI_LIST[attrtyp] #return attrtext #ATTR_BONI_LIST = ["Keiner", "Max. TP", "Max. MP", "Vitalität", "Intelligenz", "Stärke", "Beweglichkeit", "Angriffsgeschwindigkeit", "Bewegungsgeschwindigkeit", #"Zaubergeschwindigkeit", "Lebensregeneration", "Manaregeneration", "Vergiftungschance", "Ohnmachtschance", "Verlangsamungschance", #"Chance auf krit. Treffer", "Chance auf durchbohrenden Treffer", "Schaden gegen Halbmenschen", "Schaden gegen Tiere", "Schaden gegen Orks", #"Schaden gegen Esoterische", "Schaden gegen Untote", "Schaden gegen Teufel", "Schaden wird von TP absorbiert", "Schaden wird von MP absorbiert", #"Chance auf Manaraub", "Chance, MP bei Treffer zurückzuerhalten", "Chance, Nahkampf-Angriff abzublocken", "Chance, Pfeilangriff auszuweichen", #"Schwertverteidigung", "Zweihänderverteidigung", "Dolchverteidigung", "Glockenverteidigung", "Fächerverteidigung", "Pfeilwiderstand", #"Feuerwiderstand", "Blitzwiderstand", "Magiewiderstand", "Windwiderstand", "Chance, Nahkampftreffer zu reflektieren", #"Chance, Fluch zu reflektieren", "Giftwiderstand", "Chance, MP wiederherzustellen", "Chance auf EXP-Bonus", #"Chance, eine doppelte Menge Yang fallen zu lassen", "Chance, eine doppelte Menge von Gegenständen fallen zu lassen", "Trank Effektzuwachs", #"Chance, TP wiederherzustellen", "Abwehr gegen Ohnmacht", "Abwehr gegen Verlangsamung", "Immun gegen Stürzen", "SKILL", "Bogenreichweite", #"Angriffswert", "Verteidigung", "Magieangriffswert", "Magieverteidigung", "-", "Max. Ausdauer", "Schaden gegen Krieger", #"Schaden gegen Ninjas", "Schaden gegen Suras", "Schaden gegen Schamanen", "Schaden gegen Monster", "-", "-", "-", "-", "-", "-", "-", #"Fertigkeitsschaden", "Durchschn. Schaden"] #BONI_LIST_MAX_VALUE = {1:2500, 2:80, 3:12, 4:12, 5:12, 6:12, 7:8, 8:20, 9:20, 10:30, 11:30, 12:8, 13:8, 14:8, 15:10, 16:10, 17:10, 18:20, 19:20, 20:20, 21:20, 22:20, 23:10, 24:10, 25:10, 27:15, 28:15, 29:15, 30:15, 31:15, 32:15, 33:15, 34:15, 35:15, 36:15, 37:15, 38:15, 39:10, 41:5, 43:20, 44:20, 45:20, 48:1, 49:1, 53:50, 59:10, 60:10, 61:10, 62:10, 78:10, 79:10, 80:10, 81:10} #BONI_LIST_ARMOR = [1, 9, 23, 24, 29, 30, 31, 32, 33, 34, 37, 39, 53] #BONI_LIST_SHIELD = [3, 4, 5, 6, 17, 18, 19, 20, 21, 22, 27, 39, 48, 49, 66, 68] #BONI_LIST_BOOTS = [1, 7, 8, 13, 14, 15, 28, 29, 30, 31, 32, 33, 34, 66, 68] #BONI_LIST_BRACELET = [1, 16, 17, 18, 19, 20, 21, 22, 23, 25, 37, 67] #BONI_LIST_HELMET = [7, 10, 11, 12, 17, 18, 19, 20, 21, 22, 24, 28, 37] #BONI_LIST_EARRINGS = [8, 17, 18, 19, 20, 21, 22, 25, 29, 30, 31, 32, 33, 34, 41, 67] #BONI_LIST_WEAPON = [3, 4, 5, 6, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22] #BONI_LIST_NECKLACE = [1, 10, 11, 13, 15, 16, 24, 29, 30, 31, 32, 33, 34, 66, 68] #BONI_LIST_WEAPON_ADDON = [3, 4, 5, 6, 9, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 71, 72] #BONI_SWITCHER_LOAD = TRUE #BONI_SWITCHER_ACTIVE = [FALSE, FALSE, FALSE, FALSE, FALSE] ########################################## ## BONISWITCHER ENTRIES [END] ########################################## # option IN_GAME_SHOP_ENABLE = 1 CONSOLE_ENABLE = 0 PVPMODE_ENABLE = 1 PVPMODE_TEST_ENABLE = 0 PVPMODE_ACCELKEY_ENABLE = 1 PVPMODE_ACCELKEY_DELAY = 0.5 PVPMODE_PROTECTED_LEVEL = 30 FOG_LEVEL0 = 4800.0 FOG_LEVEL1 = 9600.0 FOG_LEVEL2 = 12800.0 FOG_LEVEL = FOG_LEVEL0 FOG_LEVEL_LIST=[FOG_LEVEL0, FOG_LEVEL1, FOG_LEVEL2] CAMERA_MAX_DISTANCE_SHORT = 2500.0 CAMERA_MAX_DISTANCE_LONG = 3500.0 CAMERA_MAX_DISTANCE_LIST=[CAMERA_MAX_DISTANCE_SHORT, CAMERA_MAX_DISTANCE_LONG] CAMERA_MAX_DISTANCE = CAMERA_MAX_DISTANCE_SHORT CHRNAME_COLOR_INDEX = 0 ENVIRONMENT_NIGHT="d:/ymir work/environment/moonlight04.msenv" # constant HIGH_PRICE = 500000 MIDDLE_PRICE = 50000 ERROR_METIN_STONE = 28960 SUB2_LOADING_ENABLE = 1 EXPANDED_COMBO_ENABLE = 1 CONVERT_EMPIRE_LANGUAGE_ENABLE = 1 USE_ITEM_WEAPON_TABLE_ATTACK_BONUS = 0 ADD_DEF_BONUS_ENABLE = 1 LOGIN_COUNT_LIMIT_ENABLE = 0 USE_SKILL_EFFECT_UPGRADE_ENABLE = 1 VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD = 1 GUILD_MONEY_PER_GSP = 100 GUILD_WAR_TYPE_SELECT_ENABLE = 1 TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE = 0 HAIR_COLOR_ENABLE = 1 ARMOR_SPECULAR_ENABLE = 1 WEAPON_SPECULAR_ENABLE = 1 SEQUENCE_PACKET_ENABLE = 1 KEEP_ACCOUNT_CONNETION_ENABLE = 1 MINIMAP_POSITIONINFO_ENABLE = 0 CONVERT_EMPIRE_LANGUAGE_ENABLE = 0 USE_ITEM_WEAPON_TABLE_ATTACK_BONUS = 0 ADD_DEF_BONUS_ENABLE = 0 LOGIN_COUNT_LIMIT_ENABLE = 0 PVPMODE_PROTECTED_LEVEL = 15 TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE = 10 isItemDropQuestionDialog = 0 def GET_ITEM_DROP_QUESTION_DIALOG_STATUS(): global isItemDropQuestionDialog return isItemDropQuestionDialog def SET_ITEM_DROP_QUESTION_DIALOG_STATUS(flag): global isItemDropQuestionDialog isItemDropQuestionDialog = flag import app import net ######################## def SET_DEFAULT_FOG_LEVEL(): global FOG_LEVEL app.SetMinFog(FOG_LEVEL) def SET_FOG_LEVEL_INDEX(index): global FOG_LEVEL global FOG_LEVEL_LIST try: FOG_LEVEL=FOG_LEVEL_LIST[index] except IndexError: FOG_LEVEL=FOG_LEVEL_LIST[0] app.SetMinFog(FOG_LEVEL) def GET_FOG_LEVEL_INDEX(): global FOG_LEVEL global FOG_LEVEL_LIST return FOG_LEVEL_LIST.index(FOG_LEVEL) ######################## def SET_DEFAULT_CAMERA_MAX_DISTANCE(): global CAMERA_MAX_DISTANCE app.SetCameraMaxDistance(CAMERA_MAX_DISTANCE) def SET_CAMERA_MAX_DISTANCE_INDEX(index): global CAMERA_MAX_DISTANCE global CAMERA_MAX_DISTANCE_LIST try: CAMERA_MAX_DISTANCE=CAMERA_MAX_DISTANCE_LIST[index] except: CAMERA_MAX_DISTANCE=CAMERA_MAX_DISTANCE_LIST[0] app.SetCameraMaxDistance(CAMERA_MAX_DISTANCE) def GET_CAMERA_MAX_DISTANCE_INDEX(): global CAMERA_MAX_DISTANCE global CAMERA_MAX_DISTANCE_LIST return CAMERA_MAX_DISTANCE_LIST.index(CAMERA_MAX_DISTANCE) ######################## import chrmgr import player import app def SET_DEFAULT_CHRNAME_COLOR(): global CHRNAME_COLOR_INDEX chrmgr.SetEmpireNameMode(CHRNAME_COLOR_INDEX) def SET_CHRNAME_COLOR_INDEX(index): global CHRNAME_COLOR_INDEX CHRNAME_COLOR_INDEX=index chrmgr.SetEmpireNameMode(index) def GET_CHRNAME_COLOR_INDEX(): global CHRNAME_COLOR_INDEX return CHRNAME_COLOR_INDEX def SET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD(index): global VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD = index def GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD(): global VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD return VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD def SET_DEFAULT_CONVERT_EMPIRE_LANGUAGE_ENABLE(): global CONVERT_EMPIRE_LANGUAGE_ENABLE net.SetEmpireLanguageMode(CONVERT_EMPIRE_LANGUAGE_ENABLE) def SET_DEFAULT_USE_ITEM_WEAPON_TABLE_ATTACK_BONUS(): global USE_ITEM_WEAPON_TABLE_ATTACK_BONUS player.SetWeaponAttackBonusFlag(USE_ITEM_WEAPON_TABLE_ATTACK_BONUS) def SET_DEFAULT_USE_SKILL_EFFECT_ENABLE(): global USE_SKILL_EFFECT_UPGRADE_ENABLE app.SetSkillEffectUpgradeEnable(USE_SKILL_EFFECT_UPGRADE_ENABLE) def SET_TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE(): global TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE app.SetTwoHandedWeaponAttSpeedDecreaseValue(TWO_HANDED_WEAPON_ATT_SPEED_DECREASE_VALUE) ######################## import item ACCESSORY_MATERIAL_LIST = [50623, 50624, 50625, 50626, 50627, 50628, 50629, 50630, 50631, 50632, 50633, 50634, 50635, 50636, 50637, 50638] #ACCESSORY_MATERIAL_LIST = [50623, 50623, 50624, 50624, 50625, 50625, 50626, 50627, 50628, 50629, 50630, 50631, 50632, 50633, # 50623, 50623, 50624, 50624, ] JewelAccessoryInfos = [ # jewel wrist neck ear [ 50634, 14420, 16220, 17220 ], [ 50635, 14500, 16500, 17500 ], [ 50636, 14520, 16520, 17520 ], [ 50637, 14540, 16540, 17540 ], [ 50638, 14560, 16560, 17560 ], ] def GET_ACCESSORY_MATERIAL_VNUM(vnum, subType): ret = vnum item_base = (vnum / 10) * 10 for info in JewelAccessoryInfos: if item.ARMOR_WRIST == subType: if info[1] == item_base: return info[0] elif item.ARMOR_NECK == subType: if info[2] == item_base: return info[0] elif item.ARMOR_EAR == subType: if info[3] == item_base: return info[0] if vnum >= 16210 and vnum <= 16219: return 50625 if item.ARMOR_WRIST == subType: WRIST_ITEM_VNUM_BASE = 14000 ret -= WRIST_ITEM_VNUM_BASE elif item.ARMOR_NECK == subType: NECK_ITEM_VNUM_BASE = 16000 ret -= NECK_ITEM_VNUM_BASE elif item.ARMOR_EAR == subType: EAR_ITEM_VNUM_BASE = 17000 ret -= EAR_ITEM_VNUM_BASE type = ret/20 if type<0 or type>=len(ACCESSORY_MATERIAL_LIST): type = (ret-170) / 20 if type<0 or type>=len(ACCESSORY_MATERIAL_LIST): return 0 return ACCESSORY_MATERIAL_LIST[type] ################################################################## ## »õ·Î Ãß°¡µÈ 'º§Æ®' ¾ÆÀÌÅÛ Å¸ÀÔ°ú, º§Æ®ÀÇ ¼ÒÄÏ¿¡ ²ÈÀ» ¾ÆÀÌÅÛ °ü·Ã.. ## º§Æ®ÀÇ ¼ÒÄϽýºÅÛÀº ¾Ç¼¼¼­¸®¿Í µ¿ÀÏÇϱ⠶§¹®¿¡, À§ ¾Ç¼¼¼­¸® °ü·Ã ÇϵåÄÚµùó·³ ÀÌ·±½ÄÀ¸·Î ÇÒ ¼ö¹Û¿¡ ¾ø´Ù.. def GET_BELT_MATERIAL_VNUM(vnum, subType = 0): # ÇöÀç´Â ¸ðµç º§Æ®¿¡´Â ÇϳªÀÇ ¾ÆÀÌÅÛ(#18900)¸¸ »ðÀÔ °¡´É return 18900 ## ÀÚµ¿¹°¾à (HP: #72723 ~ #72726, SP: #72727 ~ #72730) # ÇØ´ç vnumÀÌ ÀÚµ¿¹°¾àÀΰ¡? def IS_AUTO_POTION(itemVnum): return IS_AUTO_POTION_HP(itemVnum) or IS_AUTO_POTION_SP(itemVnum) # ÇØ´ç vnumÀÌ HP ÀÚµ¿¹°¾àÀΰ¡? def IS_AUTO_POTION_HP(itemVnum): if 72723 <= itemVnum and 72726 >= itemVnum: return 1 elif itemVnum >= 76021 and itemVnum <= 76022: ## »õ·Î µé¾î°£ ¼±¹°¿ë È­·æÀÇ Ãູ return 1 elif itemVnum == 79012: return 1 return 0 # ÇØ´ç vnumÀÌ SP ÀÚµ¿¹°¾àÀΰ¡? def IS_AUTO_POTION_SP(itemVnum): if 72727 <= itemVnum and 72730 >= itemVnum: return 1 elif itemVnum >= 76004 and itemVnum <= 76005: ## »õ·Î µé¾î°£ ¼±¹°¿ë ¼ö·æÀÇ Ãູ return 1 elif itemVnum == 79013: return 1 return 0 def WriteLineInFile(fname, linenum, s): import os farr = [] if os.path.exists(fname): f = open(fname, "r") for line in f: farr.append(line) f.close() while len(farr) < int(linenum): farr.append("") farr[int(linenum)-1] = str(s) f = open(fname, "w") for line in farr: f.write(line) if (len(line) > 0 and line[-1:] != "\n") or len(line) == 0: f.write("\n") f.close() def ReadLineInFile(fname, linenum): import os if not os.path.exists(fname): return "" f = open(fname, "r") farr = [] for line in f: farr.append(line) f.close() if len(farr) >= int(linenum): ret = farr[int(linenum)-1] if ret[-1:] == "\n": return ret[:-1] else: return ret else: return ""