POLICESmith 3 Posted February 16, 2021 Share Posted February 16, 2021 (edited) Hello, I have a little problem with Dragon God Attack. Basically when I use it, the icon does not come out. It does not give me Syser and I have tried to check everywhere. Could anyone help me? Spoiler Edited September 4, 2022 by Metin2 Dev Core X - External 2 Internal Hello!!!!!! Link to comment Share on other sites More sharing options...
Active Member Vaynz 1911 Posted February 17, 2021 Active Member Share Posted February 17, 2021 Post your uiaffectshower.py Link to comment Share on other sites More sharing options...
POLICESmith 3 Posted March 14, 2021 Author Share Posted March 14, 2021 import ui import localeInfo import chr import item import app import skill import player import uiToolTip import math # WEDDING class LovePointImage(ui.ExpandedImageBox): FILE_PATH = "d:/ymir work/ui/pattern/LovePoint/" FILE_DICT = { 0 : FILE_PATH + "01.dds", 1 : FILE_PATH + "02.dds", 2 : FILE_PATH + "02.dds", 3 : FILE_PATH + "03.dds", 4 : FILE_PATH + "04.dds", 5 : FILE_PATH + "05.dds", } def __init__(self): ui.ExpandedImageBox.__init__(self) self.loverName = "" self.lovePoint = 0 self.toolTip = uiToolTip.ToolTip(100) self.toolTip.HideToolTip() def __del__(self): ui.ExpandedImageBox.__del__(self) def SetLoverInfo(self, name, lovePoint): self.loverName = name self.lovePoint = lovePoint self.__Refresh() def OnUpdateLovePoint(self, lovePoint): self.lovePoint = lovePoint self.__Refresh() def __Refresh(self): self.lovePoint = max(0, self.lovePoint) self.lovePoint = min(100, self.lovePoint) if 0 == self.lovePoint: loveGrade = 0 else: loveGrade = self.lovePoint / 25 + 1 fileName = self.FILE_DICT.get(loveGrade, self.FILE_PATH+"00.dds") try: self.LoadImage(fileName) except: import dbg dbg.TraceError("LovePointImage.SetLoverInfo(lovePoint=%d) - LoadError %s" % (self.lovePoint, fileName)) self.SetScale(0.7, 0.7) self.toolTip.ClearToolTip() self.toolTip.SetTitle(self.loverName) self.toolTip.AppendTextLine(localeInfo.AFF_LOVE_POINT % (self.lovePoint)) self.toolTip.ResizeToolTip() def OnMouseOverIn(self): self.toolTip.ShowToolTip() def OnMouseOverOut(self): self.toolTip.HideToolTip() # END_OF_WEDDING class HorseImage(ui.ExpandedImageBox): FILE_PATH = "d:/ymir work/ui/pattern/HorseState/" FILE_DICT = { 00 : FILE_PATH+"00.dds", 01 : FILE_PATH+"00.dds", 02 : FILE_PATH+"00.dds", 03 : FILE_PATH+"00.dds", 10 : FILE_PATH+"10.dds", 11 : FILE_PATH+"11.dds", 12 : FILE_PATH+"12.dds", 13 : FILE_PATH+"13.dds", 20 : FILE_PATH+"20.dds", 21 : FILE_PATH+"21.dds", 22 : FILE_PATH+"22.dds", 23 : FILE_PATH+"23.dds", 30 : FILE_PATH+"30.dds", 31 : FILE_PATH+"31.dds", 32 : FILE_PATH+"32.dds", 33 : FILE_PATH+"33.dds", } def __init__(self): ui.ExpandedImageBox.__init__(self) #self.textLineList = [] self.toolTip = uiToolTip.ToolTip(100) self.toolTip.HideToolTip() def __GetHorseGrade(self, level): if 0 == level: return 0 return (level-1)/10 + 1 def SetState(self, level, health, battery): #self.textLineList=[] self.toolTip.ClearToolTip() if level>0: try: grade = self.__GetHorseGrade(level) self.__AppendText(localeInfo.LEVEL_LIST[grade]) except IndexError: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery) return try: healthName=localeInfo.HEALTH_LIST[health] if len(healthName)>0: self.__AppendText(healthName) except IndexError: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery) return if health>0: if battery==0: self.__AppendText(localeInfo.NEEFD_REST) try: fileName=self.FILE_DICT[health*10+battery] except KeyError: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - KeyError" % (level, health, battery) try: self.LoadImage(fileName) except: print "HorseImage.SetState(level=%d, health=%d, battery=%d) - LoadError %s" % (level, health, battery, fileName) self.SetScale(0.7, 0.7) def __AppendText(self, text): self.toolTip.AppendTextLine(text) self.toolTip.ResizeToolTip() #x=self.GetWidth()/2 #textLine = ui.TextLine() #textLine.SetParent(self) #textLine.SetSize(0, 0) #textLine.SetOutline() #textLine.Hide() #textLine.SetPosition(x, 40+len(self.textLineList)*16) #textLine.SetText(text) #self.textLineList.append(textLine) def OnMouseOverIn(self): #for textLine in self.textLineList: # textLine.Show() self.toolTip.ShowToolTip() def OnMouseOverOut(self): #for textLine in self.textLineList: # textLine.Hide() self.toolTip.HideToolTip() # AUTO_POTION class AutoPotionImage(ui.ExpandedImageBox): FILE_PATH_HP = "d:/ymir work/ui/pattern/auto_hpgauge/" FILE_PATH_SP = "d:/ymir work/ui/pattern/auto_spgauge/" def __init__(self): ui.ExpandedImageBox.__init__(self) self.loverName = "" self.lovePoint = 0 self.potionType = player.AUTO_POTION_TYPE_HP self.filePath = "" self.toolTip = uiToolTip.ToolTip(100) self.toolTip.HideToolTip() def __del__(self): ui.ExpandedImageBox.__del__(self) def SetPotionType(self, type): self.potionType = type if player.AUTO_POTION_TYPE_HP == type: self.filePath = self.FILE_PATH_HP elif player.AUTO_POTION_TYPE_SP == type: self.filePath = self.FILE_PATH_SP def OnUpdateAutoPotionImage(self): self.__Refresh() def __Refresh(self): print "__Refresh" isActivated, currentAmount, totalAmount, slotIndex = player.GetAutoPotionInfo(self.potionType) amountPercent = (float(currentAmount) / totalAmount) * 100.0 grade = math.ceil(amountPercent / 20) if 5.0 > amountPercent: grade = 0 if 80.0 < amountPercent: grade = 4 if 90.0 < amountPercent: grade = 5 fmt = self.filePath + "%.2d.dds" fileName = fmt % grade print self.potionType, amountPercent, fileName try: self.LoadImage(fileName) except: import dbg dbg.TraceError("AutoPotionImage.__Refresh(potionType=%d) - LoadError %s" % (self.potionType, fileName)) self.SetScale(0.7, 0.7) self.toolTip.ClearToolTip() if player.AUTO_POTION_TYPE_HP == type: self.toolTip.SetTitle(localeInfo.TOOLTIP_AUTO_POTION_HP) else: self.toolTip.SetTitle(localeInfo.TOOLTIP_AUTO_POTION_SP) self.toolTip.AppendTextLine(localeInfo.TOOLTIP_AUTO_POTION_REST % (amountPercent)) self.toolTip.ResizeToolTip() def OnMouseOverIn(self): self.toolTip.ShowToolTip() def OnMouseOverOut(self): self.toolTip.HideToolTip() # END_OF_AUTO_POTION class AffectImage(ui.ExpandedImageBox): def __init__(self): ui.ExpandedImageBox.__init__(self) self.toolTipText = None self.isSkillAffect = True self.description = None self.endTime = 0 self.affect = None self.isClocked = True def SetAffect(self, affect): self.affect = affect def GetAffect(self): return self.affect def SetToolTipText(self, text, x = 0, y = -19): if not self.toolTipText: textLine = ui.TextLine() textLine.SetParent(self) textLine.SetSize(0, 0) textLine.SetOutline() textLine.Hide() self.toolTipText = textLine self.toolTipText.SetText(text) w, h = self.toolTipText.GetTextSize() self.toolTipText.SetPosition(max(0, x + self.GetWidth()/2 - w/2), y) def SetDescription(self, description): self.description = description def SetDuration(self, duration): self.endTime = 0 if duration > 0: self.endTime = app.GetGlobalTimeStamp() + duration def UpdateAutoPotionDescription(self): potionType = 0 if self.affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: potionType = player.AUTO_POTION_TYPE_HP else: potionType = player.AUTO_POTION_TYPE_SP isActivated, currentAmount, totalAmount, slotIndex = player.GetAutoPotionInfo(potionType) #print "UpdateAutoPotionDescription ", isActivated, currentAmount, totalAmount, slotIndex amountPercent = 0.0 try: amountPercent = (float(currentAmount) / totalAmount) * 100.0 except: amountPercent = 100.0 self.SetToolTipText(self.description % amountPercent, 0, 40) def SetClock(self, isClocked): self.isClocked = isClocked def UpdateDescription(self): if not self.isClocked: self.__UpdateDescription2() return if not self.description: return toolTip = self.description if self.endTime > 0: leftTime = localeInfo.SecondToDHM(self.endTime - app.GetGlobalTimeStamp()) toolTip += " (%s : %s)" % (localeInfo.LEFT_TIME, leftTime) self.SetToolTipText(toolTip, 0, 40) #독일버전에서 시간을 제거하기 위해서 사용 def __UpdateDescription2(self): if not self.description: return toolTip = self.description self.SetToolTipText(toolTip, 0, 40) def SetSkillAffectFlag(self, flag): self.isSkillAffect = flag def IsSkillAffect(self): return self.isSkillAffect def OnMouseOverIn(self): if self.toolTipText: self.toolTipText.Show() def OnMouseOverOut(self): if self.toolTipText: self.toolTipText.Hide() class AffectShower(ui.Window): MALL_DESC_IDX_START = 1000 IMAGE_STEP = 25 AFFECT_MAX_NUM = 32 INFINITE_AFFECT_DURATION = 0x1FFFFFFF AFFECT_DATA_DICT = { chr.AFFECT_POISON : (localeInfo.SKILL_TOXICDIE, "d:/ymir work/ui/skill/common/affect/poison.sub"), chr.AFFECT_SLOW : (localeInfo.SKILL_SLOW, "d:/ymir work/ui/skill/common/affect/slow.sub"), chr.AFFECT_STUN : (localeInfo.SKILL_STUN, "d:/ymir work/ui/skill/common/affect/stun.sub"), chr.AFFECT_ATT_SPEED_POTION : (localeInfo.SKILL_INC_ATKSPD, "d:/ymir work/ui/skill/common/affect/Increase_Attack_Speed.sub"), chr.AFFECT_MOV_SPEED_POTION : (localeInfo.SKILL_INC_MOVSPD, "d:/ymir work/ui/skill/common/affect/Increase_Move_Speed.sub"), chr.AFFECT_FISH_MIND : (localeInfo.SKILL_FISHMIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub"), chr.AFFECT_JEONGWI : (localeInfo.SKILL_JEONGWI, "d:/ymir work/ui/skill/warrior/jeongwi_03.sub",), chr.AFFECT_GEOMGYEONG : (localeInfo.SKILL_GEOMGYEONG, "d:/ymir work/ui/skill/warrior/geomgyeong_03.sub",), chr.AFFECT_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",), chr.AFFECT_GYEONGGONG : (localeInfo.SKILL_GYEONGGONG, "d:/ymir work/ui/skill/assassin/gyeonggong_03.sub",), chr.AFFECT_EUNHYEONG : (localeInfo.SKILL_EUNHYEONG, "d:/ymir work/ui/skill/assassin/eunhyeong_03.sub",), chr.AFFECT_GWIGEOM : (localeInfo.SKILL_GWIGEOM, "d:/ymir work/ui/skill/sura/gwigeom_03.sub",), chr.AFFECT_GONGPO : (localeInfo.SKILL_GONGPO, "d:/ymir work/ui/skill/sura/gongpo_03.sub",), chr.AFFECT_JUMAGAP : (localeInfo.SKILL_JUMAGAP, "d:/ymir work/ui/skill/sura/jumagap_03.sub"), chr.AFFECT_HOSIN : (localeInfo.SKILL_HOSIN, "d:/ymir work/ui/skill/shaman/hosin_03.sub",), chr.AFFECT_BOHO : (localeInfo.SKILL_BOHO, "d:/ymir work/ui/skill/shaman/boho_03.sub",), chr.AFFECT_KWAESOK : (localeInfo.SKILL_KWAESOK, "d:/ymir work/ui/skill/shaman/kwaesok_03.sub",), chr.AFFECT_HEUKSIN : (localeInfo.SKILL_HEUKSIN, "d:/ymir work/ui/skill/sura/heuksin_03.sub",), chr.AFFECT_MUYEONG : (localeInfo.SKILL_MUYEONG, "d:/ymir work/ui/skill/sura/muyeong_03.sub",), chr.AFFECT_GICHEON : (localeInfo.SKILL_GICHEON, "d:/ymir work/ui/skill/shaman/gicheon_03.sub",), chr.AFFECT_JEUNGRYEOK : (localeInfo.SKILL_JEUNGRYEOK, "d:/ymir work/ui/skill/shaman/jeungryeok_03.sub",), chr.AFFECT_PABEOP : (localeInfo.SKILL_PABEOP, "d:/ymir work/ui/skill/sura/pabeop_03.sub",), chr.AFFECT_FALLEN_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",), 28 : (localeInfo.SKILL_FIRE, "d:/ymir work/ui/skill/sura/hwayeom_03.sub",), chr.AFFECT_CHINA_FIREWORK : (localeInfo.SKILL_POWERFUL_STRIKE, "d:/ymir work/ui/skill/common/affect/powerfulstrike.sub",), #64 - END chr.NEW_AFFECT_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",), chr.NEW_AFFECT_ITEM_BONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",), chr.NEW_AFFECT_SAFEBOX : (localeInfo.TOOLTIP_MALL_SAFEBOX, "d:/ymir work/ui/skill/common/affect/safebox.sub",), chr.NEW_AFFECT_AUTOLOOT : (localeInfo.TOOLTIP_MALL_AUTOLOOT, "d:/ymir work/ui/skill/common/affect/autoloot.sub",), chr.NEW_AFFECT_FISH_MIND : (localeInfo.TOOLTIP_MALL_FISH_MIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub",), chr.NEW_AFFECT_MARRIAGE_FAST : (localeInfo.TOOLTIP_MALL_MARRIAGE_FAST, "d:/ymir work/ui/skill/common/affect/marriage_fast.sub",), chr.NEW_AFFECT_GOLD_BONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",), chr.NEW_AFFECT_NO_DEATH_PENALTY : (localeInfo.TOOLTIP_APPLY_NO_DEATH_PENALTY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), chr.NEW_AFFECT_SKILL_BOOK_BONUS : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_BONUS, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_NO_DELAY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), # 자동물약 hp, sp chr.NEW_AFFECT_AUTO_HP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_hpgauge/05.dds"), chr.NEW_AFFECT_AUTO_SP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_spgauge/05.dds"), #chr.NEW_AFFECT_AUTO_HP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), #chr.NEW_AFFECT_AUTO_SP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub"), MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_DEFBONUS : (localeInfo.TOOLTIP_MALL_DEFBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/def_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_EXPBONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_ITEMBONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",), MALL_DESC_IDX_START+player.POINT_MALL_GOLDBONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",), MALL_DESC_IDX_START+player.POINT_CRITICAL_PCT : (localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,"d:/ymir work/ui/skill/common/affect/critical.sub"), MALL_DESC_IDX_START+player.POINT_PENETRATE_PCT : (localeInfo.TOOLTIP_APPLY_PENETRATE_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), MALL_DESC_IDX_START+player.POINT_MAX_HP_PCT : (localeInfo.TOOLTIP_MAX_HP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), MALL_DESC_IDX_START+player.POINT_MAX_SP_PCT : (localeInfo.TOOLTIP_MAX_SP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"), MALL_DESC_IDX_START+player.POINT_PC_BANG_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/EXP_Bonus_p_on.sub",), MALL_DESC_IDX_START+player.POINT_PC_BANG_DROP_BONUS: (localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/Item_Bonus_p_on.sub",), } if app.ENABLE_DRAGON_SOUL_SYSTEM: # 용혼석 천, 지 덱. AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK1] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK1, "d:/ymir work/ui/dragonsoul/buff_ds_sky1.tga") AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK2] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK2, "d:/ymir work/ui/dragonsoul/buff_ds_land1.tga") if app.ENABLE_WOLFMAN_CHARACTER: AFFECT_DATA_DICT[chr.AFFECT_BLEEDING] = (localeInfo.SKILL_BLEEDING, "d:/ymir work/ui/skill/common/affect/poison.sub") AFFECT_DATA_DICT[chr.AFFECT_RED_POSSESSION] = (localeInfo.SKILL_GWIGEOM, "d:/ymir work/ui/skill/wolfman/red_possession_03.sub") AFFECT_DATA_DICT[chr.AFFECT_BLUE_POSSESSION] = (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/wolfman/blue_possession_03.sub") def __init__(self): ui.Window.__init__(self) self.serverPlayTime=0 self.clientPlayTime=0 self.lastUpdateTime=0 self.affectImageDict={} self.horseImage=None self.lovePointImage=None self.autoPotionImageHP = AutoPotionImage() self.autoPotionImageSP = AutoPotionImage() self.SetPosition(10, 10) self.Show() def ClearAllAffects(self): self.horseImage=None self.lovePointImage=None self.affectImageDict={} self.__ArrangeImageList() def ClearAffects(self): ## 스킬 이펙트만 없앱니다. self.living_affectImageDict={} for key, image in self.affectImageDict.items(): if not image.IsSkillAffect(): self.living_affectImageDict[key] = image self.affectImageDict = self.living_affectImageDict self.__ArrangeImageList() def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration): print "BINARY_NEW_AddAffect", type, pointIdx, value, duration if type < 500: return if type == chr.NEW_AFFECT_MALL: affect = self.MALL_DESC_IDX_START + pointIdx else: affect = type if self.affectImageDict.has_key(affect): return if not self.AFFECT_DATA_DICT.has_key(affect): return ## 용신의 가호, 선인의 교훈은 Duration 을 0 으로 설정한다. if affect == chr.NEW_AFFECT_NO_DEATH_PENALTY or\ affect == chr.NEW_AFFECT_SKILL_BOOK_BONUS or\ affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or\ affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY or\ affect == chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY: duration = 0 affectData = self.AFFECT_DATA_DICT[affect] description = affectData[0] filename = affectData[1] if pointIdx == player.POINT_MALL_ITEMBONUS or\ pointIdx == player.POINT_MALL_GOLDBONUS: value = 1 + float(value) / 100.0 trashValue = 123 #if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: if trashValue == 1: try: #image = AutoPotionImage() #image.SetParent(self) image = None if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY: image.SetPotionType(player.AUTO_POTION_TYPE_SP) image = self.autoPotionImageSP #self.autoPotionImageSP = image; else: image.SetPotionType(player.AUTO_POTION_TYPE_HP) image = self.autoPotionImageHP #self.autoPotionImageHP = image; image.SetParent(self) image.Show() image.OnUpdateAutoPotionImage() self.affectImageDict[affect] = image self.__ArrangeImageList() except Exception, e: print "except Aff auto potion affect ", e pass else: if affect != chr.NEW_AFFECT_AUTO_SP_RECOVERY and affect != chr.NEW_AFFECT_AUTO_HP_RECOVERY: description = description(float(value)) try: print "Add affect %s" % affect image = AffectImage() image.SetParent(self) image.LoadImage(filename) image.SetDescription(description) image.SetDuration(duration) image.SetAffect(affect) if affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE or\ affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 or\ self.INFINITE_AFFECT_DURATION < duration: image.SetClock(False) image.UpdateDescription() elif affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: image.UpdateAutoPotionDescription() else: image.UpdateDescription() if affect == chr.NEW_AFFECT_DRAGON_SOUL_DECK1 or affect == chr.NEW_AFFECT_DRAGON_SOUL_DECK2: image.SetScale(1, 1) else: image.SetScale(0.7, 0.7) image.SetSkillAffectFlag(False) image.Show() self.affectImageDict[affect] = image self.__ArrangeImageList() except Exception, e: print "except Aff affect ", e pass def BINARY_NEW_RemoveAffect(self, type, pointIdx): if type == chr.NEW_AFFECT_MALL: affect = self.MALL_DESC_IDX_START + pointIdx else: affect = type print "Remove Affect %s %s" % ( type , pointIdx ) self.__RemoveAffect(affect) self.__ArrangeImageList() def SetAffect(self, affect): self.__AppendAffect(affect) self.__ArrangeImageList() def ResetAffect(self, affect): self.__RemoveAffect(affect) self.__ArrangeImageList() def SetLoverInfo(self, name, lovePoint): image = LovePointImage() image.SetParent(self) image.SetLoverInfo(name, lovePoint) self.lovePointImage = image self.__ArrangeImageList() def ShowLoverState(self): if self.lovePointImage: self.lovePointImage.Show() self.__ArrangeImageList() def HideLoverState(self): if self.lovePointImage: self.lovePointImage.Hide() self.__ArrangeImageList() def ClearLoverState(self): self.lovePointImage = None self.__ArrangeImageList() def OnUpdateLovePoint(self, lovePoint): if self.lovePointImage: self.lovePointImage.OnUpdateLovePoint(lovePoint) def SetHorseState(self, level, health, battery): if level==0: self.horseImage=None else: image = HorseImage() image.SetParent(self) image.SetState(level, health, battery) image.Show() self.horseImage=image self.__ArrangeImageList() def SetPlayTime(self, playTime): self.serverPlayTime = playTime self.clientPlayTime = app.GetTime() if localeInfo.IsVIETNAM(): image = PlayTimeImage() image.SetParent(self) image.SetPlayTime(playTime) image.Show() self.playTimeImage=image self.__ArrangeImageList() def __AppendAffect(self, affect): if self.affectImageDict.has_key(affect): return try: affectData = self.AFFECT_DATA_DICT[affect] except KeyError: return name = affectData[0] filename = affectData[1] skillIndex = player.AffectIndexToSkillIndex(affect) if 0 != skillIndex: name = skill.GetSkillName(skillIndex) image = AffectImage() image.SetParent(self) image.SetSkillAffectFlag(True) try: image.LoadImage(filename) except: pass image.SetToolTipText(name, 0, 40) image.SetScale(0.7, 0.7) image.Show() self.affectImageDict[affect] = image def __RemoveAffect(self, affect): """ if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY: self.autoPotionImageSP.Hide() if affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY: self.autoPotionImageHP.Hide() """ if not self.affectImageDict.has_key(affect): print "__RemoveAffect %s ( No Affect )" % affect return print "__RemoveAffect %s ( Affect )" % affect del self.affectImageDict[affect] self.__ArrangeImageList() def __ArrangeImageList(self): width = len(self.affectImageDict) * self.IMAGE_STEP if self.lovePointImage: width+=self.IMAGE_STEP if self.horseImage: width+=self.IMAGE_STEP self.SetSize(width, 26) xPos = 0 if self.lovePointImage: if self.lovePointImage.IsShow(): self.lovePointImage.SetPosition(xPos, 0) xPos += self.IMAGE_STEP if self.horseImage: self.horseImage.SetPosition(xPos, 0) xPos += self.IMAGE_STEP for image in self.affectImageDict.values(): image.SetPosition(xPos, 0) xPos += self.IMAGE_STEP def OnUpdate(self): try: if app.GetGlobalTime() - self.lastUpdateTime > 500: #if 0 < app.GetGlobalTime(): self.lastUpdateTime = app.GetGlobalTime() for image in self.affectImageDict.values(): if image.GetAffect() == chr.NEW_AFFECT_AUTO_HP_RECOVERY or image.GetAffect() == chr.NEW_AFFECT_AUTO_SP_RECOVERY: image.UpdateAutoPotionDescription() continue if not image.IsSkillAffect(): image.UpdateDescription() except Exception, e: print "AffectShower::OnUpdate error : ", e Hello!!!!!! Link to comment Share on other sites More sharing options...
Cunoo 210 Posted March 15, 2021 Share Posted March 15, 2021 Client Source > PythonPlayerModule Search : PyModule_AddIntConstant(poModule, "POINT_MALL_ATTBONUS", POINT_MALL_ATTBONUS); Add under : PyModule_AddIntConstant(poModule, "POINT_ATT_BONUS", POINT_ATT_BONUS); root > uiaffectshower.py Search : MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "icon/item/71028.tga",), Change: MALL_DESC_IDX_START+player.POINT_ATT_BONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "icon/item/71028.tga",), Link to comment Share on other sites More sharing options...
POLICESmith 3 Posted March 16, 2021 Author Share Posted March 16, 2021 On 15/3/2021 at 01:34, Cunoo said: Origine client> PythonPlayerModule Cerca: PyModule_AddIntConstant (poModule, "POINT_MALL_ATTBONUS", POINT_MALL_ATTBONUS); Aggiungi sotto: PyModule_AddIntConstant (poModule, "POINT_ATT_BONUS", POINT_ATT_BONUS); root> uiaffectshower.py Ricerca: MALL_DESC_IDX_START + player.POINT_MALL_ATTBONUS: (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "icon / item / 71028.tga",), Modifica: MALL_DESC_IDX_START + player.POINT_ATT_STATIC_locale_ATTBONUS_STATIC , "icon / item / 71028.tga",), Modifica: MALL_DESC_IDX_START + player.POINT_ATT_STATIC tga ",), Thank you for your help, I tried but it doesn't work. Hello!!!!!! Link to comment Share on other sites More sharing options...
Developer Ikarus_ 2450 Posted March 17, 2021 Developer Share Posted March 17, 2021 Did u notice this piece of code? def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration): print "BINARY_NEW_AddAffect", type, pointIdx, value, duration if type < 500: #<<-- return #<<-- Check if the type of the affect you are not seeing is over 500.. My youtube channel on which you can see my works here Link to comment Share on other sites More sharing options...
POLICESmith 3 Posted March 19, 2021 Author Share Posted March 19, 2021 (edited) Hi Ikarus, thanks for you replay. This is my code part: https://metin2.download/picture/C6R68i4OZ9TDKd1Jhp3Ge591lHXD7EKK/.jpg Edited September 11, 2022 by Metin2 Dev Core X - External 2 Internal 2 Hello!!!!!! Link to comment Share on other sites More sharing options...
POLICESmith 3 Posted March 26, 2021 Author Share Posted March 26, 2021 UP Hello!!!!!! Link to comment Share on other sites More sharing options...
POLICESmith 3 Posted March 30, 2021 Author Share Posted March 30, 2021 Up Hello!!!!!! Link to comment Share on other sites More sharing options...
Thrall 187 Posted April 28, 2022 Share Posted April 28, 2022 The problem is from the source the POINT_MALL_ATTBONUS is named wrong. Link to comment Share on other sites More sharing options...
Donis 1 Posted Thursday at 03:37 PM Share Posted Thursday at 03:37 PM First of all you need to check if your using item in item_proto have 64 set for POINT vnum not 86, because 86 = POINT_MELEE_MAGIC_ATT_BONUS_PER . 64 = POINT_ATT_BONUS; POINT_MALL_ATTBONUS by default is not in constant.cpp from game source also in the de client source is missing. So, you must go in PythonPlayerModule.cpp: after PyModule_AddIntConstant(poModule, "POINT_MALL_ATTBONUS", POINT_MALL_ATTBONUS); add: PyModule_AddIntConstant(poModule, "POINT_ATTBONUS_BOSS", POINT_ATTBONUS_BOSS); In uiAffectShower.py edit from: MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS to : MALL_DESC_IDX_START+player.POINT_ATT_BONUS P.S. Dont forget to check your item_proto vnum. Link to comment Share on other sites More sharing options...
Donis 1 Posted Thursday at 05:46 PM Share Posted Thursday at 05:46 PM 2 hours ago, Donis said: First of all you need to check if your using item in item_proto have 64 set for POINT vnum not 86, because 86 = POINT_MELEE_MAGIC_ATT_BONUS_PER . 64 = POINT_ATT_BONUS; POINT_MALL_ATTBONUS by default is not in constant.cpp from game source also in the de client source is missing. So, you must go in PythonPlayerModule.cpp: after PyModule_AddIntConstant(poModule, "POINT_MALL_ATTBONUS", POINT_MALL_ATTBONUS); add: PyModule_AddIntConstant(poModule, "POINT_ATT_BONUS", POINT_ATT_BONUS); In uiAffectShower.py edit from: MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS to : MALL_DESC_IDX_START+player.POINT_ATT_BONUS P.S. Dont forget to check your item_proto vnum. EDIT* Link to comment Share on other sites More sharing options...
Recommended Posts
Please sign in to comment
You will be able to leave a comment after signing in
Sign In Now