Çözülemedi Işınlanınca ikonların silinmesi

Çözülemedi 
Ne yazık ki bu konuda sorulara çözüm bulunmuyor. Eğer konuda yorumlar varsa hepsini inceleyebilirsiniz. Belki sizlerin sorununuzu çözmek için için ipuçları bulabilirsiniz.
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.

hasanknk

Üye
Üye
Mesaj
11
Beğeni
3
Puan
75
Ticaret Puanı
0
Merhaba,
Oyuna ilk girişimde iconlar gayet iyi çalışıyor ama başka bir map'e ışınlandığımda at resmi, oto pot ve yang toplama iconu hariç hepsi siliniyor. Nesne veya skillerin verdiği özellikler ve oyun içi efektleri çalışıyor ama ikonlar yok.
Syser
0502 23:34:30164 :: Traceback (most recent call last):

0502 23:34:30165 :: File "game.py", line 840, in BINARY_NEW_AddAffect

0502 23:34:30165 :: File "uiAffectShower.py", line 594, in BINARY_NEW_AddAffect
bu şekilde yardımcı olabilirseniz sevinirim
 
uiaffect:
import ui
import localeInfo
import chr
import item
import app
import skill
import player
import uiToolTip
import math
import constInfo



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.toolTip = uiToolTip.ToolTip()
        self.toolTip.ClearToolTip()
        self.isSkillAffect = TRUE
        self.description = None
        self.endTime = 0
        self.affect = None
        self.isClocked = TRUE
        if (app.ENABLE_AFFECT_POLYMORPH_REMOVE):
            self.polymorphQuestionDialog = None
    def SetAffect(self, affect):
        self.affect = affect

    def GetAffect(self):
        return self.affect

    def SetDescription(self, description):
        self.description = description

    def SetDuration(self, duration):
        self.endTime = 0
        if duration > 0:
            self.endTime = app.GetGlobalTimeStamp() + duration

    def SetToolTipText(self, text, x = 0, y = -19):
        if not self.toolTipText:
            if constInfo.AFFECT_DISPLAY_IN_THINBOARD:
                textLine = uiToolTip.ToolTip()
                textLine.ClearToolTip()
                textLine.AutoAppendTextLine(text)
                textLine.AlignHorizonalCenter()
                textLine.Hide()
            else:
                textLine = ui.TextLine()
                textLine.SetParent(self)
                textLine.SetSize(0, 0)
                textLine.SetOutline()
                textLine.Hide()
            self.toolTipText = textLine

        if not constInfo.AFFECT_DISPLAY_IN_THINBOARD:
            self.toolTipText.SetText(text)
            w, h = self.toolTipText.GetTextSize()
            self.toolTipText.SetPosition(max(0, x + self.GetWidth()/2 - w/2), y)

    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)
        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 SetSkillIndex(self, skillIndex):
        self.skillIndex = skillIndex
    def IsSkillAffect(self):
        return self.isSkillAffect
    if (app.ENABLE_AFFECT_POLYMORPH_REMOVE):
        def OnPolymorphQuestionDialog(self):
            import uiCommon
            self.polymorphQuestionDialog = uiCommon.QuestionDialog()
            self.polymorphQuestionDialog.SetText(localeInfo.POLYMORPH_AFFECT_REMOVE_QUESTION)
            self.polymorphQuestionDialog.SetWidth(350)
            self.polymorphQuestionDialog.SetAcceptEvent(lambda arg = TRUE: self.OnClosePolymorphQuestionDialog(arg))
            self.polymorphQuestionDialog.SetCancelEvent(lambda arg = FALSE: self.OnClosePolymorphQuestionDialog(arg))
            self.polymorphQuestionDialog.Open()
           
        def OnClosePolymorphQuestionDialog(self, answer):
            import net

            if not self.polymorphQuestionDialog:
                return

            self.polymorphQuestionDialog.Close()
            self.polymorphQuestionDialog = None
                   
            if not answer:
                return

            net.SendChatPacket("/remove_polymorph")
            return TRUE
    def OnMouseOverIn(self):
        if self.toolTipText:
            self.toolTipText.Show()
        if (app.ENABLE_AFFECT_POLYMORPH_REMOVE):  
            if self.affect == chr.NEW_AFFECT_POLYMORPH:
                self.OnPolymorphQuestionDialog()
    def OnMouseOverOut(self):
        if self.toolTipText:
            self.toolTipText.Hide()

class AffectShower(ui.Window):

    MALL_DESC_IDX_START = 1000
    if constInfo.ENABLE_POTIONS_AFFECTSHOWER:
        ## As long the values arent reserved
        WATER_DESC_IDX_START = 1100
        DEW_DESC_IDX_START = 1200
    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_ATT_SPEED_POTION : (localeInfo.SKILL_INC_ATKSPD, "d:/ymir work/ui/movespeed.png"),
            chr.AFFECT_MOV_SPEED_POTION : (localeInfo.SKILL_INC_MOVSPD, "d:/ymir work/ui/attckspeed.png"),
            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"),
            chr.NEW_AFFECT_RAMADAN_ABILITY : (localeInfo.NEW_AFFECT_RAMADAN_ABILITY, "icon/item/50183.tga"),
            chr.NEW_AFFECT_NOG_POCKET_ABILITY : (localeInfo.NEW_AFFECT_NOG_POCKET_ABILITY, "icon/item/50216.tga"),
           
            # 자동물약 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_ATT_BONUS : (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",),
    }
    #HASAN EKLED? ?EBNEMLER ?C?N

    AFFECT_DATA_DICT[chr.AFFECT_GEOMGYEONG] = (localeInfo.SKILL_GEOMGYEONG,     "d:/ymir work/ui/skill/warrior/geomgyeong_03.sub")
    AFFECT_DATA_DICT[chr.AFFECT_CHEONGEUN] = (localeInfo.SKILL_CHEONGEUN,     "d:/ymir work/ui/skill/warrior/cheongeun_03.sub")
    AFFECT_DATA_DICT[chr.AFFECT_JEONGWI] = (localeInfo.SKILL_JEONGWI,     "d:/ymir work/ui/skill/warrior/jeongwi_03.sub")
    AFFECT_DATA_DICT[WATER_DESC_IDX_START+player.POINT_CRITICAL_PCT] = (localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,     "icon/item/50814.tga")
    AFFECT_DATA_DICT[WATER_DESC_IDX_START+player.ATT_BONUS] = (localeInfo.TOOLTIP_ATT_GRADE,             "icon/item/50817.tga")
    AFFECT_DATA_DICT[WATER_DESC_IDX_START+player.POINT_PENETRATE_PCT] = (localeInfo.TOOLTIP_APPLY_PENETRATE_PCT,     "icon/item/50813.tga")
    AFFECT_DATA_DICT[WATER_DESC_IDX_START+player.DEF_BONUS] = (localeInfo.TOOLTIP_DEF_GRADE,             "icon/item/50818.tga")
    AFFECT_DATA_DICT[WATER_DESC_IDX_START+player.RESIST_MAGIC] = (localeInfo.TOOLTIP_MAGIC_DEF_GRADE,         "icon/item/50819.tga")
    AFFECT_DATA_DICT[WATER_DESC_IDX_START+player.ATT_SPEED] = (localeInfo.TOOLTIP_ATT_SPEED,             "icon/item/50820.tga")
    AFFECT_DATA_DICT[DEW_DESC_IDX_START+player.POINT_CRITICAL_PCT] = (localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,     "icon/item/50821.tga")
    AFFECT_DATA_DICT[DEW_DESC_IDX_START+player.POINT_PENETRATE_PCT] = (localeInfo.TOOLTIP_APPLY_PENETRATE_PCT,     "icon/item/50822.tga")
    AFFECT_DATA_DICT[DEW_DESC_IDX_START+player.ATT_SPEED] = (localeInfo.TOOLTIP_ATT_SPEED,             "icon/item/50823.tga")
    AFFECT_DATA_DICT[DEW_DESC_IDX_START+player.RESIST_MAGIC] = (localeInfo.TOOLTIP_RESIST_MAGIC,             "icon/item/50824.tga")
    AFFECT_DATA_DICT[DEW_DESC_IDX_START+player.ATT_BONUS] = (localeInfo.TOOLTIP_ATT_GRADE,             "icon/item/50825.tga")
    AFFECT_DATA_DICT[DEW_DESC_IDX_START+player.DEF_BONUS] = (localeInfo.TOOLTIP_DEF_GRADE,             "icon/item/50826.tga")
    if (app.ENABLE_AFFECT_POLYMORPH_REMOVE):
        AFFECT_DATA_DICT[chr.NEW_AFFECT_POLYMORPH] = (localeInfo.POLYMORPH_AFFECT_TOOLTIP, "d:/ymir work/ui/polymorph_marble_icon.tga")
    #AFFECT_DATA_DICT[DEW_DESC_IDX_START+player.ENERGY] = (localeInfo.TOOLTIP_ENERGY,             "icon/item/51002.tga")
    if app.ENABLE_WIND_SHOES_RENEWAL:
        AFFECT_DATA_DICT[chr.NEW_AFFECT_WIND_SHOES]    = (localeInfo.TOOLTIP_WIND_SHOES, "d:/ymir work/ui/skill/common/affect/wind_shoes.tga")

    def __init__(self):
        ui.Window.__init__(self)

        self.interface = None

        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 __del__(self):
        ui.Window.__del__(self)

    def BindInterface(self, interface):
        self.interface = proxy(interface)

    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 (app.ENABLE_AFFECT_POLYMORPH_REMOVE):
            if type < 500 and type != chr.NEW_AFFECT_POLYMORPH:
                return
        elif app.ENABLE_NEW_AFFECT_POTION:
            if type < 500 and not type == AFFECT_POTION["affect"][0] and not type == AFFECT_POTION["affect"][1] and not type == AFFECT_POTION["affect"][2] and not type == AFFECT_POTION["affect"][3] and not type == AFFECT_POTION["affect"][4] and not type == AFFECT_POTION["affect"][5]:
                return
       
        else:
            if type < 500:
                return


        if type == chr.NEW_AFFECT_MALL:
            affect = self.MALL_DESC_IDX_START + pointIdx
        elif constInfo.ENABLE_POTIONS_AFFECTSHOWER and type == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE:
            affect = self.WATER_DESC_IDX_START + pointIdx
        elif constInfo.ENABLE_POTIONS_AFFECTSHOWER and type == chr.NEW_AFFECT_BLEND:
            affect = self.DEW_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()

                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
        elif constInfo.ENABLE_POTIONS_AFFECTSHOWER and type == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE:
            affect = self.WATER_DESC_IDX_START + pointIdx
        elif constInfo.ENABLE_POTIONS_AFFECTSHOWER and type == chr.NEW_AFFECT_BLEND:
            affect = self.DEW_DESC_IDX_START + pointIdx
        else:
            affect = type

        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 :
            import dbg
            dbg.TraceError("BINARY_NEW_AddAffect failed to assign description for affect %d description text %s value %s" % (affect,affectData[0],str(value)))
        #    return

        name = affectData[0]
        filename = affectData[1]

        skillIndex = player.AffectIndexToSkillIndex(affect)
        if 0 != skillIndex:
            name = skill.GetSkillName(skillIndex)

        image = AffectImage()
        image.SetParent(self)

        if app.ENABLE_PVM_BUFFS_NOT_CLEAR:
            if skillIndex >= 94 and skillIndex <= 96 or skillIndex == 110 or skillIndex == 111:
                image.SetSkillAffectFlag(FALSE)
            else:
                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 constInfo.ALIGN_AFFECT_IMG_LIST:
            yPos = 0
            AffectCount = 0

        if self.lovePointImage:
            if self.lovePointImage.IsShow():
                self.lovePointImage.SetPosition(xPos, 0)
                xPos += self.IMAGE_STEP
                if constInfo.ALIGN_AFFECT_IMG_LIST:
                    AffectCount += 1

        if self.horseImage:
            self.horseImage.SetPosition(xPos, 0)
            xPos += self.IMAGE_STEP
            if constInfo.ALIGN_AFFECT_IMG_LIST:
                AffectCount += 1

        for image in self.affectImageDict.values():
            if constInfo.ALIGN_AFFECT_IMG_LIST:
                image.SetPosition(xPos, yPos)
                AffectCount += 1
            else:
                image.SetPosition(xPos, 0)
            xPos += self.IMAGE_STEP

            if constInfo.ALIGN_AFFECT_IMG_LIST:
                if AffectCount % 10 == 0:
                    yPos += self.IMAGE_STEP
                    xPos = 0

                self.SetSize(10 * self.IMAGE_STEP, yPos + self.IMAGE_STEP)

    def OnUpdate(self):
        try:
            if app.GetGlobalTime() - self.lastUpdateTime > 500:
                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:
            return
 
Merhaba,
Oyuna ilk girişimde iconlar gayet iyi çalışıyor ama başka bir map'e ışınlandığımda at resmi, oto pot ve yang toplama iconu hariç hepsi siliniyor. Nesne veya skillerin verdiği özellikler ve oyun içi efektleri çalışıyor ama ikonlar yok.
Syser
0502 23:34:30164 :: Traceback (most recent call last):

0502 23:34:30165 :: File "game.py", line 840, in BINARY_NEW_AddAffect

0502 23:34:30165 :: File "uiAffectShower.py", line 594, in BINARY_NEW_AddAffect
bu şekilde yardımcı olabilirseniz sevinirim
hatada sadece bunlarmı yazıyo

0502 23:34:30164 :: Traceback (most recent call last):

0502 23:34:30165 :: File "game.py", line 840, in BINARY_NEW_AddAffect

0502 23:34:30165 :: File "uiAffectShower.py", line 594, in BINARY_NEW_AddAffect
 
Move channel sistemindeki key errorden kaynaklı bir sorun olduğunu tespit ettik allah yardımcısı olsun bu oyunla ilgilenenlerin
konu kapatılabilirim
 
Move channel sistemindeki key errorden kaynaklı bir sorun olduğunu tespit ettik allah yardımcısı olsun bu oyunla ilgilenenlerin
konu kapatılabilirim
çözdünüz mü çözemediniz mi? ayrıca move channel ile uiaffectshower ne alaka? çözümü bizimle de paylaşabilir misiniz?
 
çözdünüz mü çözemediniz mi? ayrıca move channel ile uiaffectshower ne alaka? çözümü bizimle de paylaşabilir misiniz?
Move Channel sistemini komple kaldırıp yenisini kuruyorum alakasını çözemedim ama kanal değiştirirken yaşanan bir sıkıntıdan dolayı iconlar vs de çalışmıyor server commandleri ile alakalı bir yerde işlemi kesiyor sanırım
 
Durum
İçerik kilitlendiği için mesaj gönderimine kapatıldı.
Geri
Üst