Jump to content

Ridleypr

Inactive Member
  • Posts

    19
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by Ridleypr

  1. Thanks for your post. That was exactly what I was looking for.
  2. Good community. I have a problem with the source maxmi and I can not identify and resolve this bug. The war kingdoms or war crossroads (forked_road.quest) does not make the kill count every 5 deaths. I suspect the bug is in questlua_forked.cpp or threeway_war.cpp file. Someone help me resolve this bug me at least a hint. Thanks. int nKillScore = GetKillScore(pkKiller->GetEmpire()); // 제국 킬 스코어가 -1일경우는 탈락국가이기때문에 점수 체크를 하면 안된다. if (nKillScore >= 0) { nKillScore += GetKillValue(pChar->GetLevel()); SetKillScore(pkKiller->GetEmpire(), nKillScore); } if (nKillScore != 0 && (test_server || (nKillScore % 5) == 0)) { char szBuf[64 + 1]; snprintf(szBuf, sizeof(szBuf), LC_TEXT("현재 스코어 신수국:%d 천조국:%d 진노국:%d"), GetKillScore(1), GetKillScore(2), GetKillScore(3)); SendNoticeMap(szBuf, GetSungziMapIndex(), false); } const int nVictoryScore = quest::CQuestManager::instance().GetEventFlag("threeway_war_kill_count");
  3. I've added all bonus for the lycan and shoulder pads new system on the client and souce. CRITICAL_PCT 1 5 5 5 5 5 5 5 5 5 5 5 5 5 DEX 1 5 5 5 5 5 5 5 5 5 5 5 5 5 STR 1 5 5 5 5 5 5 5 5 5 5 5 5 5 INT 1 5 5 5 5 5 5 5 5 5 5 5 5 5 CON 1 5 5 5 5 5 5 5 5 5 5 5 5 5 MAX_SP 1 50 50 50 50 50 5 5 5 5 5 5 5 5 MAX_HP 1 500 500 500 500 500 5 5 5 5 5 5 5 5 PENETRATE_PCT 1 5 5 5 5 5 5 5 5 5 5 5 5 5 ATT_GRADE_BONUS 1 50 50 50 50 50 5 5 5 5 5 5 5 5 ATT_BONUS_TO_MONSTER 1 10 10 10 10 10 5 5 5 5 5 5 5 5 ATT_BONUS_TO_WARRIOR 1 10 10 10 10 10 5 5 5 5 5 5 5 5 ATT_BONUS_TO_ASSASSIN 1 10 10 10 10 10 5 5 5 5 5 5 5 5 ATT_BONUS_TO_SURA 1 10 10 10 10 10 5 5 5 5 5 5 5 5 ATT_BONUS_TO_SHAMAN 1 10 10 10 10 10 5 5 5 5 5 5 5 5 RESIST_WARRIOR 1 5 5 5 5 5 5 5 5 5 5 5 5 5 RESIST_ASSASSIN 1 5 5 5 5 5 5 5 5 5 5 5 5 5 RESIST_SURA 1 5 5 5 5 5 5 5 5 5 5 5 5 5 RESIST_SHAMAN 1 5 5 5 5 5 5 5 5 5 5 5 5 5 ATT_BONUS_TO_WOLFMAN 1 10 10 10 10 10 5 5 5 5 5 5 5 5 RESIST_WOLFMAN 1 5 5 5 5 5 5 5 5 5 5 5 5 5 my already have these options. item.APPLY_DEF_GRADE_BONUS : localeInfo.TOOLTIP_DEF_GRADE, item.APPLY_ATT_GRADE_BONUS : localeInfo.TOOLTIP_ATT_GRADE, item.APPLY_MAGIC_ATT_GRADE : localeInfo.TOOLTIP_MAGIC_ATT_GRADE, item.APPLY_MAGIC_DEF_GRADE : localeInfo.TOOLTIP_MAGIC_DEF_GRADE, my uitooltip.py import dbg import player import item import grp import wndMgr import skill import shop import exchange import grpText import safebox import localeInfo import app import background import nonplayer import chr import ui import mouseModule import constInfo WARP_SCROLLS = [22011, 22000, 22010] DESC_DEFAULT_MAX_COLS = 26 DESC_WESTERN_MAX_COLS = 35 DESC_WESTERN_MAX_WIDTH = 220 def chop(n): return round(n - 0.5, 1) def SplitDescription(desc, limit): total_tokens = desc.split() line_tokens = [] line_len = 0 lines = [] for token in total_tokens: if "|" in token: sep_pos = token.find("|") line_tokens.append(token[:sep_pos]) lines.append(" ".join(line_tokens)) line_len = len(token) - (sep_pos + 1) line_tokens = [token[sep_pos+1:]] else: line_len += len(token) if len(line_tokens) + line_len > limit: lines.append(" ".join(line_tokens)) line_len = len(token) line_tokens = [token] else: line_tokens.append(token) if line_tokens: lines.append(" ".join(line_tokens)) return lines ################################################################################################### ## ToolTip ## ## NOTE : 현재는 Item과 Skill을 상속으로 특화 시켜두었음 ## 하지만 그다지 의미가 없어 보임 ## class ToolTip(ui.ThinBoard): TOOL_TIP_WIDTH = 190 TOOL_TIP_HEIGHT = 10 TEXT_LINE_HEIGHT = 17 TITLE_COLOR = grp.GenerateColor(0.9490, 0.9058, 0.7568, 1.0) SPECIAL_TITLE_COLOR = grp.GenerateColor(1.0, 0.7843, 0.0, 1.0) NORMAL_COLOR = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0) FONT_COLOR = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0) PRICE_COLOR = 0xffFFB96D HIGH_PRICE_COLOR = SPECIAL_TITLE_COLOR MIDDLE_PRICE_COLOR = grp.GenerateColor(0.85, 0.85, 0.85, 1.0) LOW_PRICE_COLOR = grp.GenerateColor(0.7, 0.7, 0.7, 1.0) ENABLE_COLOR = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0) DISABLE_COLOR = grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0) NEGATIVE_COLOR = grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0) POSITIVE_COLOR = grp.GenerateColor(0.5411, 0.7254, 0.5568, 1.0) SPECIAL_POSITIVE_COLOR = grp.GenerateColor(0.6911, 0.8754, 0.7068, 1.0) SPECIAL_POSITIVE_COLOR2 = grp.GenerateColor(0.8824, 0.9804, 0.8824, 1.0) CONDITION_COLOR = 0xffBEB47D CAN_LEVEL_UP_COLOR = 0xff8EC292 CANNOT_LEVEL_UP_COLOR = DISABLE_COLOR NEED_SKILL_POINT_COLOR = 0xff9A9CDB def __init__(self, width = TOOL_TIP_WIDTH, isPickable=FALSE): ui.ThinBoard.__init__(self, "TOP_MOST") if isPickable: pass else: self.AddFlag("not_pick") self.AddFlag("float") self.followFlag = TRUE self.toolTipWidth = width self.xPos = -1 self.yPos = -1 self.defFontName = localeInfo.UI_DEF_FONT self.ClearToolTip() def __del__(self): ui.ThinBoard.__del__(self) def ClearToolTip(self): self.toolTipHeight = 12 self.childrenList = [] def SetFollow(self, flag): self.followFlag = flag def SetDefaultFontName(self, fontName): self.defFontName = fontName def AppendSpace(self, size): self.toolTipHeight += size self.ResizeToolTip() def AppendHorizontalLine(self): for i in xrange(2): horizontalLine = ui.Line() horizontalLine.SetParent(self) horizontalLine.SetPosition(0, self.toolTipHeight + 3 + i) horizontalLine.SetWindowHorizontalAlignCenter() horizontalLine.SetSize(150, 0) horizontalLine.Show() if 0 == i: horizontalLine.SetColor(0xff555555) else: horizontalLine.SetColor(0xff000000) self.childrenList.append(horizontalLine) self.toolTipHeight += 11 self.ResizeToolTip() def AlignHorizonalCenter(self): for child in self.childrenList: (x, y)=child.GetLocalPosition() child.SetPosition(self.toolTipWidth/2, y) self.ResizeToolTip() def AutoAppendTextLine(self, text, color = FONT_COLOR, centerAlign = TRUE): textLine = ui.TextLine() textLine.SetParent(self) textLine.SetFontName(self.defFontName) textLine.SetPackedFontColor(color) textLine.SetText(text) textLine.SetOutline() textLine.SetFeather(FALSE) textLine.Show() if centerAlign: textLine.SetPosition(self.toolTipWidth/2, self.toolTipHeight) textLine.SetHorizontalAlignCenter() else: textLine.SetPosition(10, self.toolTipHeight) self.childrenList.append(textLine) (textWidth, textHeight)=textLine.GetTextSize() textWidth += 40 textHeight += 5 if self.toolTipWidth < textWidth: self.toolTipWidth = textWidth self.toolTipHeight += textHeight return textLine def AppendTextLine(self, text, color = FONT_COLOR, centerAlign = TRUE): textLine = ui.TextLine() textLine.SetParent(self) textLine.SetFontName(self.defFontName) textLine.SetPackedFontColor(color) textLine.SetText(text) textLine.SetOutline() textLine.SetFeather(FALSE) textLine.Show() if centerAlign: textLine.SetPosition(self.toolTipWidth/2, self.toolTipHeight) textLine.SetHorizontalAlignCenter() else: textLine.SetPosition(10, self.toolTipHeight) self.childrenList.append(textLine) self.toolTipHeight += self.TEXT_LINE_HEIGHT self.ResizeToolTip() return textLine def AppendDescription(self, desc, limit, color = FONT_COLOR): if localeInfo.IsEUROPE(): self.__AppendDescription_WesternLanguage(desc, color) else: self.__AppendDescription_EasternLanguage(desc, limit, color) def __AppendDescription_EasternLanguage(self, description, characterLimitation, color=FONT_COLOR): length = len(description) if 0 == length: return lineCount = grpText.GetSplitingTextLineCount(description, characterLimitation) for i in xrange(lineCount): if 0 == i: self.AppendSpace(5) self.AppendTextLine(grpText.GetSplitingTextLine(description, characterLimitation, i), color) def __AppendDescription_WesternLanguage(self, desc, color=FONT_COLOR): lines = SplitDescription(desc, DESC_WESTERN_MAX_COLS) if not lines: return self.AppendSpace(5) for line in lines: self.AppendTextLine(line, color) def ResizeToolTip(self): self.SetSize(self.toolTipWidth, self.TOOL_TIP_HEIGHT + self.toolTipHeight) def SetTitle(self, name): self.AppendTextLine(name, self.TITLE_COLOR) def GetLimitTextLineColor(self, curValue, limitValue): if curValue < limitValue: return self.DISABLE_COLOR return self.ENABLE_COLOR def GetChangeTextLineColor(self, value, isSpecial=FALSE): if value > 0: if isSpecial: return self.SPECIAL_POSITIVE_COLOR else: return self.POSITIVE_COLOR if 0 == value: return self.NORMAL_COLOR return self.NEGATIVE_COLOR def SetToolTipPosition(self, x = -1, y = -1): self.xPos = x self.yPos = y def ShowToolTip(self): self.SetTop() self.Show() self.OnUpdate() def HideToolTip(self): self.Hide() def OnUpdate(self): if not self.followFlag: return x = 0 y = 0 width = self.GetWidth() height = self.toolTipHeight if -1 == self.xPos and -1 == self.yPos: (mouseX, mouseY) = wndMgr.GetMousePosition() if mouseY < wndMgr.GetScreenHeight() - 300: y = mouseY + 40 else: y = mouseY - height - 30 x = mouseX - width/2 else: x = self.xPos - width/2 y = self.yPos - height x = max(x, 0) y = max(y, 0) x = min(x + width/2, wndMgr.GetScreenWidth() - width/2) - width/2 y = min(y + self.GetHeight(), wndMgr.GetScreenHeight()) - self.GetHeight() parentWindow = self.GetParentProxy() if parentWindow: (gx, gy) = parentWindow.GetGlobalPosition() x -= gx y -= gy self.SetPosition(x, y) class ItemToolTip(ToolTip): CHARACTER_NAMES = ( localeInfo.TOOLTIP_WARRIOR, localeInfo.TOOLTIP_ASSASSIN, localeInfo.TOOLTIP_SURA, localeInfo.TOOLTIP_SHAMAN, localeInfo.TOOLTIP_WOLFMAN ) CHARACTER_COUNT = len(CHARACTER_NAMES) WEAR_NAMES = ( localeInfo.TOOLTIP_ARMOR, localeInfo.TOOLTIP_HELMET, localeInfo.TOOLTIP_SHOES, localeInfo.TOOLTIP_WRISTLET, localeInfo.TOOLTIP_WEAPON, localeInfo.TOOLTIP_NECK, localeInfo.TOOLTIP_EAR, localeInfo.TOOLTIP_UNIQUE, localeInfo.TOOLTIP_SHIELD, localeInfo.TOOLTIP_ARROW, ) WEAR_COUNT = len(WEAR_NAMES) AFFECT_DICT = { item.APPLY_MAX_HP : localeInfo.TOOLTIP_MAX_HP, item.APPLY_MAX_SP : localeInfo.TOOLTIP_MAX_SP, item.APPLY_CON : localeInfo.TOOLTIP_CON, item.APPLY_INT : localeInfo.TOOLTIP_INT, item.APPLY_STR : localeInfo.TOOLTIP_STR, item.APPLY_DEX : localeInfo.TOOLTIP_DEX, item.APPLY_ATT_SPEED : localeInfo.TOOLTIP_ATT_SPEED, item.APPLY_MOV_SPEED : localeInfo.TOOLTIP_MOV_SPEED, item.APPLY_CAST_SPEED : localeInfo.TOOLTIP_CAST_SPEED, item.APPLY_HP_REGEN : localeInfo.TOOLTIP_HP_REGEN, item.APPLY_SP_REGEN : localeInfo.TOOLTIP_SP_REGEN, item.APPLY_POISON_PCT : localeInfo.TOOLTIP_APPLY_POISON_PCT, item.APPLY_BLEEDING_PCT : localeInfo.TOOLTIP_APPLY_BLEEDING_PCT, item.APPLY_STUN_PCT : localeInfo.TOOLTIP_APPLY_STUN_PCT, item.APPLY_SLOW_PCT : localeInfo.TOOLTIP_APPLY_SLOW_PCT, item.APPLY_CRITICAL_PCT : localeInfo.TOOLTIP_APPLY_CRITICAL_PCT, item.APPLY_PENETRATE_PCT : localeInfo.TOOLTIP_APPLY_PENETRATE_PCT, item.APPLY_PENETRATE_PCT : localeInfo.TOOLTIP_APPLY_ACCEDRAIN_RATE, item.APPLY_ATTBONUS_WARRIOR : localeInfo.TOOLTIP_APPLY_ATTBONUS_WARRIOR, item.APPLY_ATTBONUS_ASSASSIN : localeInfo.TOOLTIP_APPLY_ATTBONUS_ASSASSIN, item.APPLY_ATTBONUS_SURA : localeInfo.TOOLTIP_APPLY_ATTBONUS_SURA, item.APPLY_ATTBONUS_SHAMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_SHAMAN, item.APPLY_ATTBONUS_WOLFMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_WOLFMAN, item.APPLY_ATTBONUS_MONSTER : localeInfo.TOOLTIP_APPLY_ATTBONUS_MONSTER, item.APPLY_ATTBONUS_HUMAN : localeInfo.TOOLTIP_APPLY_ATTBONUS_HUMAN, item.APPLY_ATTBONUS_ANIMAL : localeInfo.TOOLTIP_APPLY_ATTBONUS_ANIMAL, item.APPLY_ATTBONUS_ORC : localeInfo.TOOLTIP_APPLY_ATTBONUS_ORC, item.APPLY_ATTBONUS_MILGYO : localeInfo.TOOLTIP_APPLY_ATTBONUS_MILGYO, item.APPLY_ATTBONUS_UNDEAD : localeInfo.TOOLTIP_APPLY_ATTBONUS_UNDEAD, item.APPLY_ATTBONUS_DEVIL : localeInfo.TOOLTIP_APPLY_ATTBONUS_DEVIL, item.APPLY_STEAL_HP : localeInfo.TOOLTIP_APPLY_STEAL_HP, item.APPLY_STEAL_SP : localeInfo.TOOLTIP_APPLY_STEAL_SP, item.APPLY_MANA_BURN_PCT : localeInfo.TOOLTIP_APPLY_MANA_BURN_PCT, item.APPLY_DAMAGE_SP_RECOVER : localeInfo.TOOLTIP_APPLY_DAMAGE_SP_RECOVER, item.APPLY_BLOCK : localeInfo.TOOLTIP_APPLY_BLOCK, item.APPLY_DODGE : localeInfo.TOOLTIP_APPLY_DODGE, item.APPLY_RESIST_SWORD : localeInfo.TOOLTIP_APPLY_RESIST_SWORD, item.APPLY_RESIST_TWOHAND : localeInfo.TOOLTIP_APPLY_RESIST_TWOHAND, item.APPLY_RESIST_DAGGER : localeInfo.TOOLTIP_APPLY_RESIST_DAGGER, item.APPLY_RESIST_BELL : localeInfo.TOOLTIP_APPLY_RESIST_BELL, item.APPLY_RESIST_FAN : localeInfo.TOOLTIP_APPLY_RESIST_FAN, item.APPLY_RESIST_BOW : localeInfo.TOOLTIP_RESIST_BOW, item.APPLY_RESIST_CLAW : localeInfo.TOOLTIP_APPLY_RESIST_CLAW, item.APPLY_RESIST_FIRE : localeInfo.TOOLTIP_RESIST_FIRE, item.APPLY_RESIST_ELEC : localeInfo.TOOLTIP_RESIST_ELEC, item.APPLY_RESIST_MAGIC : localeInfo.TOOLTIP_RESIST_MAGIC, item.APPLY_RESIST_WIND : localeInfo.TOOLTIP_APPLY_RESIST_WIND, item.APPLY_REFLECT_MELEE : localeInfo.TOOLTIP_APPLY_REFLECT_MELEE, item.APPLY_REFLECT_CURSE : localeInfo.TOOLTIP_APPLY_REFLECT_CURSE, item.APPLY_POISON_REDUCE : localeInfo.TOOLTIP_APPLY_POISON_REDUCE, item.APPLY_BLEEDING_REDUCE : localeInfo.TOOLTIP_APPLY_BLEEDING_REDUCE, item.APPLY_KILL_SP_RECOVER : localeInfo.TOOLTIP_APPLY_KILL_SP_RECOVER, item.APPLY_EXP_DOUBLE_BONUS : localeInfo.TOOLTIP_APPLY_EXP_DOUBLE_BONUS, item.APPLY_GOLD_DOUBLE_BONUS : localeInfo.TOOLTIP_APPLY_GOLD_DOUBLE_BONUS, item.APPLY_ITEM_DROP_BONUS : localeInfo.TOOLTIP_APPLY_ITEM_DROP_BONUS, item.APPLY_POTION_BONUS : localeInfo.TOOLTIP_APPLY_POTION_BONUS, item.APPLY_KILL_HP_RECOVER : localeInfo.TOOLTIP_APPLY_KILL_HP_RECOVER, item.APPLY_IMMUNE_STUN : localeInfo.TOOLTIP_APPLY_IMMUNE_STUN, item.APPLY_IMMUNE_SLOW : localeInfo.TOOLTIP_APPLY_IMMUNE_SLOW, item.APPLY_IMMUNE_FALL : localeInfo.TOOLTIP_APPLY_IMMUNE_FALL, item.APPLY_BOW_DISTANCE : localeInfo.TOOLTIP_BOW_DISTANCE, item.APPLY_DEF_GRADE_BONUS : localeInfo.TOOLTIP_DEF_GRADE, item.APPLY_ATT_GRADE_BONUS : localeInfo.TOOLTIP_ATT_GRADE, item.APPLY_MAGIC_ATT_GRADE : localeInfo.TOOLTIP_MAGIC_ATT_GRADE, item.APPLY_MAGIC_DEF_GRADE : localeInfo.TOOLTIP_MAGIC_DEF_GRADE, item.APPLY_MAX_STAMINA : localeInfo.TOOLTIP_MAX_STAMINA, item.APPLY_MALL_ATTBONUS : localeInfo.TOOLTIP_MALL_ATTBONUS, item.APPLY_MALL_DEFBONUS : localeInfo.TOOLTIP_MALL_DEFBONUS, item.APPLY_MALL_EXPBONUS : localeInfo.TOOLTIP_MALL_EXPBONUS, item.APPLY_MALL_ITEMBONUS : localeInfo.TOOLTIP_MALL_ITEMBONUS, item.APPLY_MALL_GOLDBONUS : localeInfo.TOOLTIP_MALL_GOLDBONUS, item.APPLY_SKILL_DAMAGE_BONUS : localeInfo.TOOLTIP_SKILL_DAMAGE_BONUS, item.APPLY_NORMAL_HIT_DAMAGE_BONUS : localeInfo.TOOLTIP_NORMAL_HIT_DAMAGE_BONUS, item.APPLY_SKILL_DEFEND_BONUS : localeInfo.TOOLTIP_SKILL_DEFEND_BONUS, item.APPLY_NORMAL_HIT_DEFEND_BONUS : localeInfo.TOOLTIP_NORMAL_HIT_DEFEND_BONUS, item.APPLY_PC_BANG_EXP_BONUS : localeInfo.TOOLTIP_MALL_EXPBONUS_P_STATIC, item.APPLY_PC_BANG_DROP_BONUS : localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC, item.APPLY_RESIST_WARRIOR : localeInfo.TOOLTIP_APPLY_RESIST_WARRIOR, item.APPLY_RESIST_ASSASSIN : localeInfo.TOOLTIP_APPLY_RESIST_ASSASSIN, item.APPLY_RESIST_SURA : localeInfo.TOOLTIP_APPLY_RESIST_SURA, item.APPLY_RESIST_SHAMAN : localeInfo.TOOLTIP_APPLY_RESIST_SHAMAN, item.APPLY_RESIST_WOLFMAN : localeInfo.TOOLTIP_APPLY_RESIST_WOLFMAN, item.APPLY_MAX_HP_PCT : localeInfo.TOOLTIP_APPLY_MAX_HP_PCT, item.APPLY_MAX_SP_PCT : localeInfo.TOOLTIP_APPLY_MAX_SP_PCT, item.APPLY_ENERGY : localeInfo.TOOLTIP_ENERGY, item.APPLY_COSTUME_ATTR_BONUS : localeInfo.TOOLTIP_COSTUME_ATTR_BONUS, item.APPLY_MAGIC_ATTBONUS_PER : localeInfo.TOOLTIP_MAGIC_ATTBONUS_PER, item.APPLY_MELEE_MAGIC_ATTBONUS_PER : localeInfo.TOOLTIP_MELEE_MAGIC_ATTBONUS_PER, item.APPLY_RESIST_ICE : localeInfo.TOOLTIP_RESIST_ICE, item.APPLY_RESIST_EARTH : localeInfo.TOOLTIP_RESIST_EARTH, item.APPLY_RESIST_DARK : localeInfo.TOOLTIP_RESIST_DARK, item.APPLY_ANTI_CRITICAL_PCT : localeInfo.TOOLTIP_ANTI_CRITICAL_PCT, item.APPLY_ANTI_PENETRATE_PCT : localeInfo.TOOLTIP_ANTI_PENETRATE_PCT, } ATTRIBUTE_NEED_WIDTH = { 23 : 230, 24 : 230, 25 : 230, 26 : 220, 27 : 210, 35 : 210, 36 : 210, 37 : 210, 38 : 210, 39 : 210, 40 : 210, 41 : 210, 42 : 220, 43 : 230, 45 : 230, } ANTI_FLAG_DICT = { 0 : item.ITEM_ANTIFLAG_WARRIOR, 1 : item.ITEM_ANTIFLAG_ASSASSIN, 2 : item.ITEM_ANTIFLAG_SURA, 3 : item.ITEM_ANTIFLAG_SHAMAN, 4 : item.ITEM_ANTIFLAG_WOLFMAN, } FONT_COLOR = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0) def __init__(self, *args, **kwargs): ToolTip.__init__(self, *args, **kwargs) self.itemVnum = 0 self.isShopItem = FALSE # 아이템 툴팁을 표시할 때 현재 캐릭터가 착용할 수 없는 아이템이라면 강제로 Disable Color로 설정 (이미 그렇게 작동하고 있으나 꺼야 할 필요가 있어서) self.bCannotUseItemForceSetDisableColor = TRUE def __del__(self): ToolTip.__del__(self) def SetCannotUseItemForceSetDisableColor(self, enable): self.bCannotUseItemForceSetDisableColor = enable def CanEquip(self): if not item.IsEquipmentVID(self.itemVnum): return TRUE race = player.GetRace() job = chr.RaceToJob(race) if not self.ANTI_FLAG_DICT.has_key(job): return FALSE if item.IsAntiFlag(self.ANTI_FLAG_DICT[job]): return FALSE sex = chr.RaceToSex(race) MALE = 1 FEMALE = 0 if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE) and sex == MALE: return FALSE if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE) and sex == FEMALE: return FALSE for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_LEVEL == limitType: if player.GetStatus(player.LEVEL) < limitValue: return FALSE """ elif item.LIMIT_STR == limitType: if player.GetStatus(player.ST) < limitValue: return FALSE elif item.LIMIT_DEX == limitType: if player.GetStatus(player.DX) < limitValue: return FALSE elif item.LIMIT_INT == limitType: if player.GetStatus(player.IQ) < limitValue: return FALSE elif item.LIMIT_CON == limitType: if player.GetStatus(player.HT) < limitValue: return FALSE """ return TRUE def AppendTextLine(self, text, color = FONT_COLOR, centerAlign = TRUE): if not self.CanEquip() and self.bCannotUseItemForceSetDisableColor: color = self.DISABLE_COLOR return ToolTip.AppendTextLine(self, text, color, centerAlign) def ClearToolTip(self): self.isShopItem = FALSE self.toolTipWidth = self.TOOL_TIP_WIDTH ToolTip.ClearToolTip(self) def SetInventoryItem(self, slotIndex, window_type = player.INVENTORY): itemVnum = player.GetItemIndex(window_type, slotIndex) if 0 == itemVnum: return self.ClearToolTip() if shop.IsOpen(): if not shop.IsPrivateShop(): item.SelectItem(itemVnum) self.AppendSellingPrice(player.GetISellItemPrice(window_type, slotIndex)) metinSlot = [player.GetItemMetinSocket(window_type, slotIndex, i) for i in xrange(player.METIN_SOCKET_MAX_NUM)] attrSlot = [player.GetItemAttribute(window_type, slotIndex, i) for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM)] self.AddItemData(itemVnum, metinSlot, attrSlot) def SetShopItem(self, slotIndex): itemVnum = shop.GetItemID(slotIndex) if 0 == itemVnum: return price = shop.GetItemPrice(slotIndex) self.ClearToolTip() self.isShopItem = TRUE metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(shop.GetItemMetinSocket(slotIndex, i)) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append(shop.GetItemAttribute(slotIndex, i)) self.AddItemData(itemVnum, metinSlot, attrSlot) self.AppendPrice(price) def SetShopItemBySecondaryCoin(self, slotIndex): itemVnum = shop.GetItemID(slotIndex) if 0 == itemVnum: return price = shop.GetItemPrice(slotIndex) self.ClearToolTip() self.isShopItem = TRUE metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(shop.GetItemMetinSocket(slotIndex, i)) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append(shop.GetItemAttribute(slotIndex, i)) self.AddItemData(itemVnum, metinSlot, attrSlot) self.AppendPriceBySecondaryCoin(price) def SetExchangeOwnerItem(self, slotIndex): itemVnum = exchange.GetItemVnumFromSelf(slotIndex) if 0 == itemVnum: return self.ClearToolTip() metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(exchange.GetItemMetinSocketFromSelf(slotIndex, i)) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append(exchange.GetItemAttributeFromSelf(slotIndex, i)) self.AddItemData(itemVnum, metinSlot, attrSlot) def SetExchangeTargetItem(self, slotIndex): itemVnum = exchange.GetItemVnumFromTarget(slotIndex) if 0 == itemVnum: return self.ClearToolTip() metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(exchange.GetItemMetinSocketFromTarget(slotIndex, i)) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append(exchange.GetItemAttributeFromTarget(slotIndex, i)) self.AddItemData(itemVnum, metinSlot, attrSlot) def SetPrivateShopBuilderItem(self, invenType, invenPos, privateShopSlotIndex): itemVnum = player.GetItemIndex(invenType, invenPos) if 0 == itemVnum: return item.SelectItem(itemVnum) self.ClearToolTip() self.AppendSellingPrice(shop.GetPrivateShopItemPrice(invenType, invenPos)) metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(player.GetItemMetinSocket(invenPos, i)) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append(player.GetItemAttribute(invenPos, i)) self.AddItemData(itemVnum, metinSlot, attrSlot) def SetSafeBoxItem(self, slotIndex): itemVnum = safebox.GetItemID(slotIndex) if 0 == itemVnum: return self.ClearToolTip() metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(safebox.GetItemMetinSocket(slotIndex, i)) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append(safebox.GetItemAttribute(slotIndex, i)) self.AddItemData(itemVnum, metinSlot, attrSlot, safebox.GetItemFlags(slotIndex)) def SetMallItem(self, slotIndex): itemVnum = safebox.GetMallItemID(slotIndex) if 0 == itemVnum: return self.ClearToolTip() metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(safebox.GetMallItemMetinSocket(slotIndex, i)) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append(safebox.GetMallItemAttribute(slotIndex, i)) self.AddItemData(itemVnum, metinSlot, attrSlot) def SetItemToolTip(self, itemVnum): self.ClearToolTip() metinSlot = [] for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlot.append(0) attrSlot = [] for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): attrSlot.append((0, 0)) self.AddItemData(itemVnum, metinSlot, attrSlot) def __AppendAttackSpeedInfo(self, item): atkSpd = item.GetValue(0) if atkSpd < 80: stSpd = localeInfo.TOOLTIP_ITEM_VERY_FAST elif atkSpd <= 95: stSpd = localeInfo.TOOLTIP_ITEM_FAST elif atkSpd <= 105: stSpd = localeInfo.TOOLTIP_ITEM_NORMAL elif atkSpd <= 120: stSpd = localeInfo.TOOLTIP_ITEM_SLOW else: stSpd = localeInfo.TOOLTIP_ITEM_VERY_SLOW self.AppendTextLine(localeInfo.TOOLTIP_ITEM_ATT_SPEED % stSpd, self.NORMAL_COLOR) def __AppendAttackGradeInfo(self): atkGrade = item.GetValue(1) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_ATT_GRADE % atkGrade, self.GetChangeTextLineColor(atkGrade)) def __AppendAttackPowerInfo(self): minPower = item.GetValue(3) maxPower = item.GetValue(4) addPower = item.GetValue(5) if maxPower > minPower: self.AppendTextLine(localeInfo.TOOLTIP_ITEM_ATT_POWER % (minPower+addPower, maxPower+addPower), self.POSITIVE_COLOR) else: self.AppendTextLine(localeInfo.TOOLTIP_ITEM_ATT_POWER_ONE_ARG % (minPower+addPower), self.POSITIVE_COLOR) def __AppendMagicAttackInfo(self): minMagicAttackPower = item.GetValue(1) maxMagicAttackPower = item.GetValue(2) addPower = item.GetValue(5) if minMagicAttackPower > 0 or maxMagicAttackPower > 0: if maxMagicAttackPower > minMagicAttackPower: self.AppendTextLine(localeInfo.TOOLTIP_ITEM_MAGIC_ATT_POWER % (minMagicAttackPower+addPower, maxMagicAttackPower+addPower), self.POSITIVE_COLOR) else: self.AppendTextLine(localeInfo.TOOLTIP_ITEM_MAGIC_ATT_POWER_ONE_ARG % (minMagicAttackPower+addPower), self.POSITIVE_COLOR) def __AppendMagicDefenceInfo(self): magicDefencePower = item.GetValue(0) if magicDefencePower > 0: self.AppendTextLine(localeInfo.TOOLTIP_ITEM_MAGIC_DEF_POWER % magicDefencePower, self.GetChangeTextLineColor(magicDefencePower)) def __AppendAttributeInformation(self, attrSlot): if 0 != attrSlot: for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): type = attrSlot[i][0] value = attrSlot[i][1] if 0 == value: continue affectString = self.__GetAffectString(type, value) if affectString: affectColor = self.__GetAttributeColor(i, value) self.AppendTextLine(affectString, affectColor) def __GetAttributeColor(self, index, value): if value > 0: if index >= 5: return self.SPECIAL_POSITIVE_COLOR2 else: return self.SPECIAL_POSITIVE_COLOR elif value == 0: return self.NORMAL_COLOR else: return self.NEGATIVE_COLOR def __IsPolymorphItem(self, itemVnum): if itemVnum >= 70103 and itemVnum <= 70106: return 1 return 0 def __SetPolymorphItemTitle(self, monsterVnum): if localeInfo.IsVIETNAM(): itemName =item.GetItemName() itemName+=" " itemName+=nonplayer.GetMonsterName(monsterVnum) else: itemName =nonplayer.GetMonsterName(monsterVnum) itemName+=" " itemName+=item.GetItemName() self.SetTitle(itemName) def __SetNormalItemTitle(self): self.SetTitle(item.GetItemName()) def __SetSpecialItemTitle(self): self.AppendTextLine(item.GetItemName(), self.SPECIAL_TITLE_COLOR) def __SetItemTitle(self, itemVnum, metinSlot, attrSlot): if localeInfo.IsCANADA(): if 72726 == itemVnum or 72730 == itemVnum: self.AppendTextLine(item.GetItemName(), grp.GenerateColor(1.0, 0.7843, 0.0, 1.0)) return if self.__IsPolymorphItem(itemVnum): self.__SetPolymorphItemTitle(metinSlot[0]) else: if self.__IsAttr(attrSlot): self.__SetSpecialItemTitle() return self.__SetNormalItemTitle() def __IsAttr(self, attrSlot): if not attrSlot: return FALSE for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): type = attrSlot[i][0] if 0 != type: return TRUE return FALSE def AddRefineItemData(self, itemVnum, metinSlot, attrSlot = 0): for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlotData=metinSlot[i] if self.GetMetinItemIndex(metinSlotData) == constInfo.ERROR_METIN_STONE: metinSlot[i]=player.METIN_SOCKET_TYPE_SILVER self.AddItemData(itemVnum, metinSlot, attrSlot) def AddItemData_Offline(self, itemVnum, itemDesc, itemSummary, metinSlot, attrSlot): self.__AdjustMaxWidth(attrSlot, itemDesc) self.__SetItemTitle(itemVnum, metinSlot, attrSlot) if self.__IsHair(itemVnum): self.__AppendHairIcon(itemVnum) ### Description ### self.AppendDescription(itemDesc, 26) self.AppendDescription(itemSummary, 26, self.CONDITION_COLOR) def AddItemData(self, itemVnum, metinSlot, attrSlot = 0, flags = 0, unbindTime = 0): self.itemVnum = itemVnum item.SelectItem(itemVnum) itemType = item.GetItemType() itemSubType = item.GetItemSubType() if 50026 == itemVnum: if 0 != metinSlot: name = item.GetItemName() if metinSlot[0] > 0: name += " " name += localeInfo.NumberToMoneyString(metinSlot[0]) self.SetTitle(name) self.ShowToolTip() return ### Skill Book ### elif 50300 == itemVnum: if 0 != metinSlot: self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILLBOOK_NAME, 1) self.ShowToolTip() return elif 70037 == itemVnum: if 0 != metinSlot: self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME, 0) self.AppendDescription(item.GetItemDescription(), 26) self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR) self.ShowToolTip() return elif 70055 == itemVnum: if 0 != metinSlot: self.__SetSkillBookToolTip(metinSlot[0], localeInfo.TOOLTIP_SKILL_FORGET_BOOK_NAME, 0) self.AppendDescription(item.GetItemDescription(), 26) self.AppendDescription(item.GetItemSummary(), 26, self.CONDITION_COLOR) self.ShowToolTip() return ########################################################################################### itemDesc = item.GetItemDescription() itemSummary = item.GetItemSummary() isCostumeItem = 0 isCostumeHair = 0 isCostumeBody = 0 if app.ENABLE_COSTUME_SYSTEM: if item.ITEM_TYPE_COSTUME == itemType: isCostumeItem = 1 isCostumeHair = item.COSTUME_TYPE_HAIR == itemSubType isCostumeBody = item.COSTUME_TYPE_BODY == itemSubType #dbg.TraceError("IS_COSTUME_ITEM! body(%d) hair(%d)" % (isCostumeBody, isCostumeHair)) self.__AdjustMaxWidth(attrSlot, itemDesc) self.__SetItemTitle(itemVnum, metinSlot, attrSlot) ### Hair Preview Image ### if self.__IsHair(itemVnum): self.__AppendHairIcon(itemVnum) ### Description ### self.AppendDescription(itemDesc, 26) self.AppendDescription(itemSummary, 26, self.CONDITION_COLOR) ### Weapon ### if item.ITEM_TYPE_WEAPON == itemType: self.__AppendLimitInformation() self.AppendSpace(5) ## 부채일 경우 마공을 먼저 표시한다. if item.WEAPON_FAN == itemSubType: self.__AppendMagicAttackInfo() self.__AppendAttackPowerInfo() else: self.__AppendAttackPowerInfo() self.__AppendMagicAttackInfo() self.__AppendAffectInformation() self.__AppendAttributeInformation(attrSlot) self.AppendWearableInformation() self.__AppendMetinSlotInfo(metinSlot) ### Armor ### elif item.ITEM_TYPE_ARMOR == itemType: self.__AppendLimitInformation() ## 방어력 defGrade = item.GetValue(1) defBonus = item.GetValue(5)*2 ## 방어력 표시 잘못 되는 문제를 수정 if defGrade > 0: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_DEF_GRADE % (defGrade+defBonus), self.GetChangeTextLineColor(defGrade)) self.__AppendMagicDefenceInfo() self.__AppendAffectInformation() self.__AppendAttributeInformation(attrSlot) self.AppendWearableInformation() if itemSubType in (item.ARMOR_WRIST, item.ARMOR_NECK, item.ARMOR_EAR): self.__AppendAccessoryMetinSlotInfo(metinSlot, constInfo.GET_ACCESSORY_MATERIAL_VNUM(itemVnum, itemSubType)) else: self.__AppendMetinSlotInfo(metinSlot) ### Ring Slot Item (Not UNIQUE) ### elif item.ITEM_TYPE_RING == itemType: self.__AppendLimitInformation() self.__AppendAffectInformation() self.__AppendAttributeInformation(attrSlot) #반지 소켓 시스템 관련해선 아직 기획 미정 #self.__AppendAccessoryMetinSlotInfo(metinSlot, 99001) ### Belt Item ### elif item.ITEM_TYPE_BELT == itemType: self.__AppendLimitInformation() self.__AppendAffectInformation() self.__AppendAttributeInformation(attrSlot) self.__AppendAccessoryMetinSlotInfo(metinSlot, constInfo.GET_BELT_MATERIAL_VNUM(itemVnum)) ## 코스츔 아이템 ## elif 0 != isCostumeItem: self.__AppendLimitInformation() self.__AppendAffectInformation() self.__AppendAttributeInformation(attrSlot) self.AppendWearableInformation() bHasRealtimeFlag = 0 ## 사용가능 시간 제한이 있는지 찾아보고 for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: bHasRealtimeFlag = 1 ## 있다면 관련 정보를 표시함. ex) 남은 시간 : 6일 6시간 58분 if 1 == bHasRealtimeFlag: self.AppendMallItemLastTime(metinSlot[0]) #dbg.TraceError("1) REAL_TIME flag On ") ## Rod ## elif item.ITEM_TYPE_ROD == itemType: if 0 != metinSlot: curLevel = item.GetValue(0) / 10 curEXP = metinSlot[0] maxEXP = item.GetValue(2) self.__AppendLimitInformation() self.__AppendRodInformation(curLevel, curEXP, maxEXP) ## Pick ## elif item.ITEM_TYPE_PICK == itemType: if 0 != metinSlot: curLevel = item.GetValue(0) / 10 curEXP = metinSlot[0] maxEXP = item.GetValue(2) self.__AppendLimitInformation() self.__AppendPickInformation(curLevel, curEXP, maxEXP) ## Lottery ## elif item.ITEM_TYPE_LOTTERY == itemType: if 0 != metinSlot: ticketNumber = int(metinSlot[0]) stepNumber = int(metinSlot[1]) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_LOTTERY_STEP_NUMBER % (stepNumber), self.NORMAL_COLOR) self.AppendTextLine(localeInfo.TOOLTIP_LOTTO_NUMBER % (ticketNumber), self.NORMAL_COLOR); ### Metin ### elif item.ITEM_TYPE_METIN == itemType: self.AppendMetinInformation() self.AppendMetinWearInformation() ### Fish ### elif item.ITEM_TYPE_FISH == itemType: if 0 != metinSlot: self.__AppendFishInfo(metinSlot[0]) ## item.ITEM_TYPE_BLEND elif item.ITEM_TYPE_BLEND == itemType: self.__AppendLimitInformation() if metinSlot: affectType = metinSlot[0] affectValue = metinSlot[1] time = metinSlot[2] self.AppendSpace(5) affectText = self.__GetAffectString(affectType, affectValue) self.AppendTextLine(affectText, self.NORMAL_COLOR) if time > 0: minute = (time / 60) second = (time % 60) timeString = localeInfo.TOOLTIP_POTION_TIME if minute > 0: timeString += str(minute) + localeInfo.TOOLTIP_POTION_MIN if second > 0: timeString += " " + str(second) + localeInfo.TOOLTIP_POTION_SEC self.AppendTextLine(timeString) else: self.AppendTextLine(localeInfo.BLEND_POTION_NO_TIME) else: self.AppendTextLine("BLEND_POTION_NO_INFO") elif item.ITEM_TYPE_UNIQUE == itemType: if 0 != metinSlot: bHasRealtimeFlag = 0 for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: bHasRealtimeFlag = 1 if 1 == bHasRealtimeFlag: self.AppendMallItemLastTime(metinSlot[0]) else: time = metinSlot[player.METIN_SOCKET_MAX_NUM-1] if 1 == item.GetValue(2): ## 실시간 이용 Flag / 장착 안해도 준다 self.AppendMallItemLastTime(time) else: self.AppendUniqueItemLastTime(time) ### Use ### elif item.ITEM_TYPE_USE == itemType: self.__AppendLimitInformation() if item.USE_POTION == itemSubType or item.USE_POTION_NODELAY == itemSubType: self.__AppendPotionInformation() elif item.USE_ABILITY_UP == itemSubType: self.__AppendAbilityPotionInformation() ## 영석 감지기 if 27989 == itemVnum or 76006 == itemVnum: if 0 != metinSlot: useCount = int(metinSlot[0]) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_REST_USABLE_COUNT % (200 - useCount), self.NORMAL_COLOR) ## 이벤트 감지기 elif 50004 == itemVnum: if 0 != metinSlot: useCount = int(metinSlot[0]) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_REST_USABLE_COUNT % (10 - useCount), self.NORMAL_COLOR) ## 자동물약 elif constInfo.IS_AUTO_POTION(itemVnum): if 0 != metinSlot: ## 0: 활성화, 1: 사용량, 2: 총량 isActivated = int(metinSlot[0]) usedAmount = float(metinSlot[1]) totalAmount = float(metinSlot[2]) if 0 == totalAmount: totalAmount = 1 self.AppendSpace(5) if 0 != isActivated: self.AppendTextLine("(%s)" % (localeInfo.TOOLTIP_AUTO_POTION_USING), self.SPECIAL_POSITIVE_COLOR) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_AUTO_POTION_REST % (100.0 - ((usedAmount / totalAmount) * 100.0)), self.POSITIVE_COLOR) ## 귀환 기억부 elif itemVnum in WARP_SCROLLS: if 0 != metinSlot: xPos = int(metinSlot[0]) yPos = int(metinSlot[1]) if xPos != 0 and yPos != 0: (mapName, xBase, yBase) = background.GlobalPositionToMapInfo(xPos, yPos) localeMapName=localeInfo.MINIMAP_ZONE_NAME_DICT.get(mapName, "") self.AppendSpace(5) if localeMapName!="": self.AppendTextLine(localeInfo.TOOLTIP_MEMORIZED_POSITION % (localeMapName, int(xPos-xBase)/100, int(yPos-yBase)/100), self.NORMAL_COLOR) else: self.AppendTextLine(localeInfo.TOOLTIP_MEMORIZED_POSITION_ERROR % (int(xPos)/100, int(yPos)/100), self.NORMAL_COLOR) dbg.TraceError("NOT_EXIST_IN_MINIMAP_ZONE_NAME_DICT: %s" % mapName) ##### if item.USE_SPECIAL == itemSubType: bHasRealtimeFlag = 0 for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: bHasRealtimeFlag = 1 ## 있다면 관련 정보를 표시함. ex) 남은 시간 : 6일 6시간 58분 if 1 == bHasRealtimeFlag: self.AppendMallItemLastTime(metinSlot[0]) else: # ... 이거... 서버에는 이런 시간 체크 안되어 있는데... # 왜 이런게 있는지 알지는 못하나 그냥 두자... if 0 != metinSlot: time = metinSlot[player.METIN_SOCKET_MAX_NUM-1] ## 실시간 이용 Flag if 1 == item.GetValue(2): self.AppendMallItemLastTime(time) elif item.USE_TIME_CHARGE_PER == itemSubType: bHasRealtimeFlag = 0 for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: bHasRealtimeFlag = 1 if metinSlot[2]: self.AppendTextLine(localeInfo.TOOLTIP_TIME_CHARGER_PER(metinSlot[2])) else: self.AppendTextLine(localeInfo.TOOLTIP_TIME_CHARGER_PER(item.GetValue(0))) ## 있다면 관련 정보를 표시함. ex) 남은 시간 : 6일 6시간 58분 if 1 == bHasRealtimeFlag: self.AppendMallItemLastTime(metinSlot[0]) elif item.USE_TIME_CHARGE_FIX == itemSubType: bHasRealtimeFlag = 0 for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: bHasRealtimeFlag = 1 if metinSlot[2]: self.AppendTextLine(localeInfo.TOOLTIP_TIME_CHARGER_FIX(metinSlot[2])) else: self.AppendTextLine(localeInfo.TOOLTIP_TIME_CHARGER_FIX(item.GetValue(0))) ## 있다면 관련 정보를 표시함. ex) 남은 시간 : 6일 6시간 58분 if 1 == bHasRealtimeFlag: self.AppendMallItemLastTime(metinSlot[0]) elif item.ITEM_TYPE_QUEST == itemType: for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if item.LIMIT_REAL_TIME == limitType: self.AppendMallItemLastTime(metinSlot[0]) elif item.ITEM_TYPE_DS == itemType: self.AppendTextLine(self.__DragonSoulInfoString(itemVnum)) self.__AppendAttributeInformation(attrSlot) else: self.__AppendLimitInformation() for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) #dbg.TraceError("LimitType : %d, limitValue : %d" % (limitType, limitValue)) if item.LIMIT_REAL_TIME_START_FIRST_USE == limitType: self.AppendRealTimeStartFirstUseLastTime(item, metinSlot, i) #dbg.TraceError("2) REAL_TIME_START_FIRST_USE flag On ") elif item.LIMIT_TIMER_BASED_ON_WEAR == limitType: self.AppendTimerBasedOnWearLastTime(metinSlot) #dbg.TraceError("1) REAL_TIME flag On ") self.ShowToolTip() def __DragonSoulInfoString (self, dwVnum): step = (dwVnum / 100) % 10 refine = (dwVnum / 10) % 10 if 0 == step: return localeInfo.DRAGON_SOUL_STEP_LEVEL1 + " " + localeInfo.DRAGON_SOUL_STRENGTH(refine) elif 1 == step: return localeInfo.DRAGON_SOUL_STEP_LEVEL2 + " " + localeInfo.DRAGON_SOUL_STRENGTH(refine) elif 2 == step: return localeInfo.DRAGON_SOUL_STEP_LEVEL3 + " " + localeInfo.DRAGON_SOUL_STRENGTH(refine) elif 3 == step: return localeInfo.DRAGON_SOUL_STEP_LEVEL4 + " " + localeInfo.DRAGON_SOUL_STRENGTH(refine) elif 4 == step: return localeInfo.DRAGON_SOUL_STEP_LEVEL5 + " " + localeInfo.DRAGON_SOUL_STRENGTH(refine) else: return "" ## 헤어인가? def __IsHair(self, itemVnum): return (self.__IsOldHair(itemVnum) or self.__IsNewHair(itemVnum) or self.__IsNewHair2(itemVnum) or self.__IsNewHair3(itemVnum) or self.__IsCostumeHair(itemVnum) ) def __IsOldHair(self, itemVnum): return itemVnum > 73000 and itemVnum < 74000 def __IsNewHair(self, itemVnum): return itemVnum > 74000 and itemVnum < 75000 def __IsNewHair2(self, itemVnum): return itemVnum > 75000 and itemVnum < 76000 def __IsNewHair3(self, itemVnum): return ((74012 < itemVnum and itemVnum < 74022) or (74262 < itemVnum and itemVnum < 74272) or (74512 < itemVnum and itemVnum < 74522) or (74762 < itemVnum and itemVnum < 74772) or (45000 < itemVnum and itemVnum < 47000)) def __IsCostumeHair(self, itemVnum): return app.ENABLE_COSTUME_SYSTEM and self.__IsNewHair3(itemVnum - 100000) def __AppendHairIcon(self, itemVnum): itemImage = ui.ImageBox() itemImage.SetParent(self) itemImage.Show() if self.__IsOldHair(itemVnum): itemImage.LoadImage("d:/ymir work/item/quest/"+str(itemVnum)+".tga") elif self.__IsNewHair3(itemVnum): itemImage.LoadImage("icon/hair/%d.sub" % (itemVnum)) elif self.__IsNewHair(itemVnum): # 기존 헤어 번호를 연결시켜서 사용한다. 새로운 아이템은 1000만큼 번호가 늘었다. itemImage.LoadImage("d:/ymir work/item/quest/"+str(itemVnum-1000)+".tga") elif self.__IsNewHair2(itemVnum): itemImage.LoadImage("icon/hair/%d.sub" % (itemVnum)) elif self.__IsCostumeHair(itemVnum): itemImage.LoadImage("icon/hair/%d.sub" % (itemVnum - 100000)) itemImage.SetPosition(itemImage.GetWidth()/2, self.toolTipHeight) self.toolTipHeight += itemImage.GetHeight() #self.toolTipWidth += itemImage.GetWidth()/2 self.childrenList.append(itemImage) self.ResizeToolTip() ## 사이즈가 큰 Description 일 경우 툴팁 사이즈를 조정한다 def __AdjustMaxWidth(self, attrSlot, desc): newToolTipWidth = self.toolTipWidth newToolTipWidth = max(self.__AdjustAttrMaxWidth(attrSlot), newToolTipWidth) newToolTipWidth = max(self.__AdjustDescMaxWidth(desc), newToolTipWidth) if newToolTipWidth > self.toolTipWidth: self.toolTipWidth = newToolTipWidth self.ResizeToolTip() def __AdjustAttrMaxWidth(self, attrSlot): if 0 == attrSlot: return self.toolTipWidth maxWidth = self.toolTipWidth for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM): type = attrSlot[i][0] value = attrSlot[i][1] if self.ATTRIBUTE_NEED_WIDTH.has_key(type): if value > 0: maxWidth = max(self.ATTRIBUTE_NEED_WIDTH[type], maxWidth) # ATTR_CHANGE_TOOLTIP_WIDTH #self.toolTipWidth = max(self.ATTRIBUTE_NEED_WIDTH[type], self.toolTipWidth) #self.ResizeToolTip() # END_OF_ATTR_CHANGE_TOOLTIP_WIDTH return maxWidth def __AdjustDescMaxWidth(self, desc): if len(desc) < DESC_DEFAULT_MAX_COLS: return self.toolTipWidth return DESC_WESTERN_MAX_WIDTH def __SetSkillBookToolTip(self, skillIndex, bookName, skillGrade): skillName = skill.GetSkillName(skillIndex) if not skillName: return if localeInfo.IsVIETNAM(): itemName = bookName + " " + skillName else: itemName = skillName + " " + bookName self.SetTitle(itemName) def __AppendPickInformation(self, curLevel, curEXP, maxEXP): self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_PICK_LEVEL % (curLevel), self.NORMAL_COLOR) self.AppendTextLine(localeInfo.TOOLTIP_PICK_EXP % (curEXP, maxEXP), self.NORMAL_COLOR) if curEXP == maxEXP: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_PICK_UPGRADE1, self.NORMAL_COLOR) self.AppendTextLine(localeInfo.TOOLTIP_PICK_UPGRADE2, self.NORMAL_COLOR) self.AppendTextLine(localeInfo.TOOLTIP_PICK_UPGRADE3, self.NORMAL_COLOR) def __AppendRodInformation(self, curLevel, curEXP, maxEXP): self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_FISHINGROD_LEVEL % (curLevel), self.NORMAL_COLOR) self.AppendTextLine(localeInfo.TOOLTIP_FISHINGROD_EXP % (curEXP, maxEXP), self.NORMAL_COLOR) if curEXP == maxEXP: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_FISHINGROD_UPGRADE1, self.NORMAL_COLOR) self.AppendTextLine(localeInfo.TOOLTIP_FISHINGROD_UPGRADE2, self.NORMAL_COLOR) self.AppendTextLine(localeInfo.TOOLTIP_FISHINGROD_UPGRADE3, self.NORMAL_COLOR) def __AppendLimitInformation(self): appendSpace = FALSE for i in xrange(item.LIMIT_MAX_NUM): (limitType, limitValue) = item.GetLimit(i) if limitValue > 0: if FALSE == appendSpace: self.AppendSpace(5) appendSpace = TRUE else: continue if item.LIMIT_LEVEL == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.LEVEL), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_LEVEL % (limitValue), color) """ elif item.LIMIT_STR == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.ST), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_STR % (limitValue), color) elif item.LIMIT_DEX == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.DX), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_DEX % (limitValue), color) elif item.LIMIT_INT == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.IQ), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_INT % (limitValue), color) elif item.LIMIT_CON == limitType: color = self.GetLimitTextLineColor(player.GetStatus(player.HT), limitValue) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_CON % (limitValue), color) """ def __GetAffectString(self, affectType, affectValue): if 0 == affectType: return None if 0 == affectValue: return None try: return self.AFFECT_DICT[affectType](affectValue) except TypeError: return "UNKNOWN_VALUE[%s] %s" % (affectType, affectValue) except KeyError: return "UNKNOWN_TYPE[%s] %s" % (affectType, affectValue) def __AppendAffectInformation(self): for i in xrange(item.ITEM_APPLY_MAX_NUM): (affectType, affectValue) = item.GetAffect(i) affectString = self.__GetAffectString(affectType, affectValue) if affectString: self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue)) def AppendWearableInformation(self): self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_WEARABLE_JOB, self.NORMAL_COLOR) flagList = ( not item.IsAntiFlag(item.ITEM_ANTIFLAG_WARRIOR), not item.IsAntiFlag(item.ITEM_ANTIFLAG_ASSASSIN), not item.IsAntiFlag(item.ITEM_ANTIFLAG_SURA), not item.IsAntiFlag(item.ITEM_ANTIFLAG_SHAMAN), not item.IsAntiFlag(item.ITEM_ANTIFLAG_WOLFMAN) ) characterNames = "" for i in xrange(self.CHARACTER_COUNT): name = self.CHARACTER_NAMES[i] flag = flagList[i] if flag: characterNames += " " characterNames += name textLine = self.AppendTextLine(characterNames, self.NORMAL_COLOR, TRUE) textLine.SetFeather() if item.IsAntiFlag(item.ITEM_ANTIFLAG_MALE): textLine = self.AppendTextLine(localeInfo.FOR_FEMALE, self.NORMAL_COLOR, TRUE) textLine.SetFeather() if item.IsAntiFlag(item.ITEM_ANTIFLAG_FEMALE): textLine = self.AppendTextLine(localeInfo.FOR_MALE, self.NORMAL_COLOR, TRUE) textLine.SetFeather() def __AppendPotionInformation(self): self.AppendSpace(5) healHP = item.GetValue(0) healSP = item.GetValue(1) healStatus = item.GetValue(2) healPercentageHP = item.GetValue(3) healPercentageSP = item.GetValue(4) if healHP > 0: self.AppendTextLine(localeInfo.TOOLTIP_POTION_PLUS_HP_POINT % healHP, self.GetChangeTextLineColor(healHP)) if healSP > 0: self.AppendTextLine(localeInfo.TOOLTIP_POTION_PLUS_SP_POINT % healSP, self.GetChangeTextLineColor(healSP)) if healStatus != 0: self.AppendTextLine(localeInfo.TOOLTIP_POTION_CURE) if healPercentageHP > 0: self.AppendTextLine(localeInfo.TOOLTIP_POTION_PLUS_HP_PERCENT % healPercentageHP, self.GetChangeTextLineColor(healPercentageHP)) if healPercentageSP > 0: self.AppendTextLine(localeInfo.TOOLTIP_POTION_PLUS_SP_PERCENT % healPercentageSP, self.GetChangeTextLineColor(healPercentageSP)) def __AppendAbilityPotionInformation(self): self.AppendSpace(5) abilityType = item.GetValue(0) time = item.GetValue(1) point = item.GetValue(2) if abilityType == item.APPLY_ATT_SPEED: self.AppendTextLine(localeInfo.TOOLTIP_POTION_PLUS_ATTACK_SPEED % point, self.GetChangeTextLineColor(point)) elif abilityType == item.APPLY_MOV_SPEED: self.AppendTextLine(localeInfo.TOOLTIP_POTION_PLUS_MOVING_SPEED % point, self.GetChangeTextLineColor(point)) if time > 0: minute = (time / 60) second = (time % 60) timeString = localeInfo.TOOLTIP_POTION_TIME if minute > 0: timeString += str(minute) + localeInfo.TOOLTIP_POTION_MIN if second > 0: timeString += " " + str(second) + localeInfo.TOOLTIP_POTION_SEC self.AppendTextLine(timeString) def GetPriceColor(self, price): if price>=constInfo.HIGH_PRICE: return self.HIGH_PRICE_COLOR if price>=constInfo.MIDDLE_PRICE: return self.MIDDLE_PRICE_COLOR else: return self.LOW_PRICE_COLOR def AppendPrice(self, price): self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_BUYPRICE % (localeInfo.NumberToMoneyString(price)), self.GetPriceColor(price)) def AppendPriceBySecondaryCoin(self, price): self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_BUYPRICE % (localeInfo.NumberToSecondaryCoinString(price)), self.GetPriceColor(price)) def AppendSellingPrice(self, price): if item.IsAntiFlag(item.ITEM_ANTIFLAG_SELL): self.AppendTextLine(localeInfo.TOOLTIP_ANTI_SELL, self.DISABLE_COLOR) self.AppendSpace(5) else: self.AppendTextLine(localeInfo.TOOLTIP_SELLPRICE % (localeInfo.NumberToMoneyString(price)), self.GetPriceColor(price)) self.AppendSpace(5) def AppendMetinInformation(self): affectType, affectValue = item.GetAffect(0) #affectType = item.GetValue(0) #affectValue = item.GetValue(1) affectString = self.__GetAffectString(affectType, affectValue) if affectString: self.AppendSpace(5) self.AppendTextLine(affectString, self.GetChangeTextLineColor(affectValue)) def AppendMetinWearInformation(self): self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_SOCKET_REFINABLE_ITEM, self.NORMAL_COLOR) flagList = (item.IsWearableFlag(item.WEARABLE_BODY), item.IsWearableFlag(item.WEARABLE_HEAD), item.IsWearableFlag(item.WEARABLE_FOOTS), item.IsWearableFlag(item.WEARABLE_WRIST), item.IsWearableFlag(item.WEARABLE_WEAPON), item.IsWearableFlag(item.WEARABLE_NECK), item.IsWearableFlag(item.WEARABLE_EAR), item.IsWearableFlag(item.WEARABLE_UNIQUE), item.IsWearableFlag(item.WEARABLE_SHIELD), item.IsWearableFlag(item.WEARABLE_ARROW)) wearNames = "" for i in xrange(self.WEAR_COUNT): name = self.WEAR_NAMES[i] flag = flagList[i] if flag: wearNames += " " wearNames += name textLine = ui.TextLine() textLine.SetParent(self) textLine.SetFontName(self.defFontName) textLine.SetPosition(self.toolTipWidth/2, self.toolTipHeight) textLine.SetHorizontalAlignCenter() textLine.SetPackedFontColor(self.NORMAL_COLOR) textLine.SetText(wearNames) textLine.Show() self.childrenList.append(textLine) self.toolTipHeight += self.TEXT_LINE_HEIGHT self.ResizeToolTip() def GetMetinSocketType(self, number): if player.METIN_SOCKET_TYPE_NONE == number: return player.METIN_SOCKET_TYPE_NONE elif player.METIN_SOCKET_TYPE_SILVER == number: return player.METIN_SOCKET_TYPE_SILVER elif player.METIN_SOCKET_TYPE_GOLD == number: return player.METIN_SOCKET_TYPE_GOLD else: item.SelectItem(number) if item.METIN_NORMAL == item.GetItemSubType(): return player.METIN_SOCKET_TYPE_SILVER elif item.METIN_GOLD == item.GetItemSubType(): return player.METIN_SOCKET_TYPE_GOLD elif "USE_PUT_INTO_ACCESSORY_SOCKET" == item.GetUseType(number): return player.METIN_SOCKET_TYPE_SILVER elif "USE_PUT_INTO_RING_SOCKET" == item.GetUseType(number): return player.METIN_SOCKET_TYPE_SILVER elif "USE_PUT_INTO_BELT_SOCKET" == item.GetUseType(number): return player.METIN_SOCKET_TYPE_SILVER return player.METIN_SOCKET_TYPE_NONE def GetMetinItemIndex(self, number): if player.METIN_SOCKET_TYPE_SILVER == number: return 0 if player.METIN_SOCKET_TYPE_GOLD == number: return 0 return number def __AppendAccessoryMetinSlotInfo(self, metinSlot, mtrlVnum): ACCESSORY_SOCKET_MAX_SIZE = 3 cur=min(metinSlot[0], ACCESSORY_SOCKET_MAX_SIZE) end=min(metinSlot[1], ACCESSORY_SOCKET_MAX_SIZE) affectType1, affectValue1 = item.GetAffect(0) affectList1=[0, max(1, affectValue1*10/100), max(2, affectValue1*20/100), max(3, affectValue1*40/100)] affectType2, affectValue2 = item.GetAffect(1) affectList2=[0, max(1, affectValue2*10/100), max(2, affectValue2*20/100), max(3, affectValue2*40/100)] mtrlPos=0 mtrlList=[mtrlVnum]*cur+[player.METIN_SOCKET_TYPE_SILVER]*(end-cur) for mtrl in mtrlList: affectString1 = self.__GetAffectString(affectType1, affectList1[mtrlPos+1]-affectList1[mtrlPos]) affectString2 = self.__GetAffectString(affectType2, affectList2[mtrlPos+1]-affectList2[mtrlPos]) leftTime = 0 if cur == mtrlPos+1: leftTime=metinSlot[2] self.__AppendMetinSlotInfo_AppendMetinSocketData(mtrlPos, mtrl, affectString1, affectString2, leftTime) mtrlPos+=1 def __AppendMetinSlotInfo(self, metinSlot): if self.__AppendMetinSlotInfo_IsEmptySlotList(metinSlot): return for i in xrange(player.METIN_SOCKET_MAX_NUM): self.__AppendMetinSlotInfo_AppendMetinSocketData(i, metinSlot[i]) def __AppendMetinSlotInfo_IsEmptySlotList(self, metinSlot): if 0 == metinSlot: return 1 for i in xrange(player.METIN_SOCKET_MAX_NUM): metinSlotData=metinSlot[i] if 0 != self.GetMetinSocketType(metinSlotData): if 0 != self.GetMetinItemIndex(metinSlotData): return 0 return 1 def __AppendMetinSlotInfo_AppendMetinSocketData(self, index, metinSlotData, custumAffectString="", custumAffectString2="", leftTime=0): slotType = self.GetMetinSocketType(metinSlotData) itemIndex = self.GetMetinItemIndex(metinSlotData) if 0 == slotType: return self.AppendSpace(5) slotImage = ui.ImageBox() slotImage.SetParent(self) slotImage.Show() ## Name nameTextLine = ui.TextLine() nameTextLine.SetParent(self) nameTextLine.SetFontName(self.defFontName) nameTextLine.SetPackedFontColor(self.NORMAL_COLOR) nameTextLine.SetOutline() nameTextLine.SetFeather() nameTextLine.Show() self.childrenList.append(nameTextLine) if player.METIN_SOCKET_TYPE_SILVER == slotType: slotImage.LoadImage("d:/ymir work/ui/game/windows/metin_slot_silver.sub") elif player.METIN_SOCKET_TYPE_GOLD == slotType: slotImage.LoadImage("d:/ymir work/ui/game/windows/metin_slot_gold.sub") self.childrenList.append(slotImage) if localeInfo.IsARABIC(): slotImage.SetPosition(self.toolTipWidth - slotImage.GetWidth() - 9, self.toolTipHeight-1) nameTextLine.SetPosition(self.toolTipWidth - 50, self.toolTipHeight + 2) else: slotImage.SetPosition(9, self.toolTipHeight-1) nameTextLine.SetPosition(50, self.toolTipHeight + 2) metinImage = ui.ImageBox() metinImage.SetParent(self) metinImage.Show() self.childrenList.append(metinImage) if itemIndex: item.SelectItem(itemIndex) ## Image try: metinImage.LoadImage(item.GetIconImageFileName()) except: dbg.TraceError("ItemToolTip.__AppendMetinSocketData() - Failed to find image file %d:%s" % (itemIndex, item.GetIconImageFileName()) ) nameTextLine.SetText(item.GetItemName()) ## Affect affectTextLine = ui.TextLine() affectTextLine.SetParent(self) affectTextLine.SetFontName(self.defFontName) affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR) affectTextLine.SetOutline() affectTextLine.SetFeather() affectTextLine.Show() if localeInfo.IsARABIC(): metinImage.SetPosition(self.toolTipWidth - metinImage.GetWidth() - 10, self.toolTipHeight) affectTextLine.SetPosition(self.toolTipWidth - 50, self.toolTipHeight + 16 + 2) else: metinImage.SetPosition(10, self.toolTipHeight) affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2) if custumAffectString: affectTextLine.SetText(custumAffectString) elif itemIndex!=constInfo.ERROR_METIN_STONE: affectType, affectValue = item.GetAffect(0) affectString = self.__GetAffectString(affectType, affectValue) if affectString: affectTextLine.SetText(affectString) else: affectTextLine.SetText(localeInfo.TOOLTIP_APPLY_NOAFFECT) self.childrenList.append(affectTextLine) if custumAffectString2: affectTextLine = ui.TextLine() affectTextLine.SetParent(self) affectTextLine.SetFontName(self.defFontName) affectTextLine.SetPackedFontColor(self.POSITIVE_COLOR) affectTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2) affectTextLine.SetOutline() affectTextLine.SetFeather() affectTextLine.Show() affectTextLine.SetText(custumAffectString2) self.childrenList.append(affectTextLine) self.toolTipHeight += 16 + 2 if 0 != leftTime: timeText = (localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(leftTime)) timeTextLine = ui.TextLine() timeTextLine.SetParent(self) timeTextLine.SetFontName(self.defFontName) timeTextLine.SetPackedFontColor(self.POSITIVE_COLOR) timeTextLine.SetPosition(50, self.toolTipHeight + 16 + 2 + 16 + 2) timeTextLine.SetOutline() timeTextLine.SetFeather() timeTextLine.Show() timeTextLine.SetText(timeText) self.childrenList.append(timeTextLine) self.toolTipHeight += 16 + 2 else: nameTextLine.SetText(localeInfo.TOOLTIP_SOCKET_EMPTY) self.toolTipHeight += 35 self.ResizeToolTip() def __AppendFishInfo(self, size): if size > 0: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_FISH_LEN % (float(size) / 100.0), self.NORMAL_COLOR) def AppendUniqueItemLastTime(self, restMin): restSecond = restMin*60 self.AppendSpace(5) self.AppendTextLine(localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(restSecond), self.NORMAL_COLOR) def AppendMallItemLastTime(self, endTime): leftSec = max(0, endTime - app.GetGlobalTimeStamp()) self.AppendSpace(5) self.AppendTextLine(localeInfo.LEFT_TIME + " : " + localeInfo.SecondToDHM(leftSec), self.NORMAL_COLOR) def AppendTimerBasedOnWearLastTime(self, metinSlot): if 0 == metinSlot[0]: self.AppendSpace(5) self.AppendTextLine(localeInfo.CANNOT_USE, self.DISABLE_COLOR) else: endTime = app.GetGlobalTimeStamp() + metinSlot[0] self.AppendMallItemLastTime(endTime) def AppendRealTimeStartFirstUseLastTime(self, item, metinSlot, limitIndex): useCount = metinSlot[1] endTime = metinSlot[0] # 한 번이라도 사용했다면 Socket0에 종료 시간(2012년 3월 1일 13시 01분 같은..) 이 박혀있음. # 사용하지 않았다면 Socket0에 이용가능시간(이를테면 600 같은 값. 초단위)이 들어있을 수 있고, 0이라면 Limit Value에 있는 이용가능시간을 사용한다. if 0 == useCount: if 0 == endTime: (limitType, limitValue) = item.GetLimit(limitIndex) endTime = limitValue endTime += app.GetGlobalTimeStamp() self.AppendMallItemLastTime(endTime) class HyperlinkItemToolTip(ItemToolTip): def __init__(self): ItemToolTip.__init__(self, isPickable=TRUE) def SetHyperlinkItem(self, tokens): minTokenCount = 3 + player.METIN_SOCKET_MAX_NUM maxTokenCount = minTokenCount + 2 * player.ATTRIBUTE_SLOT_MAX_NUM if tokens and len(tokens) >= minTokenCount and len(tokens) <= maxTokenCount: head, vnum, flag = tokens[:3] itemVnum = int(vnum, 16) metinSlot = [int(metin, 16) for metin in tokens[3:6]] rests = tokens[6:] if rests: attrSlot = [] rests.reverse() while rests: key = int(rests.pop(), 16) if rests: val = int(rests.pop()) attrSlot.append((key, val)) attrSlot += [(0, 0)] * (player.ATTRIBUTE_SLOT_MAX_NUM - len(attrSlot)) else: attrSlot = [(0, 0)] * player.ATTRIBUTE_SLOT_MAX_NUM self.ClearToolTip() self.AddItemData(itemVnum, metinSlot, attrSlot) ItemToolTip.OnUpdate(self) def OnUpdate(self): pass def OnMouseLeftButtonDown(self): self.Hide() class SkillToolTip(ToolTip): POINT_NAME_DICT = { player.LEVEL : localeInfo.SKILL_TOOLTIP_LEVEL, player.IQ : localeInfo.SKILL_TOOLTIP_INT, } SKILL_TOOL_TIP_WIDTH = 200 PARTY_SKILL_TOOL_TIP_WIDTH = 340 PARTY_SKILL_EXPERIENCE_AFFECT_LIST = ( ( 2, 2, 10,), ( 8, 3, 20,), (14, 4, 30,), (22, 5, 45,), (28, 6, 60,), (34, 7, 80,), (38, 8, 100,), ) PARTY_SKILL_PLUS_GRADE_AFFECT_LIST = ( ( 4, 2, 1, 0,), (10, 3, 2, 0,), (16, 4, 2, 1,), (24, 5, 2, 2,), ) PARTY_SKILL_ATTACKER_AFFECT_LIST = ( ( 36, 3, ), ( 26, 1, ), ( 32, 2, ), ) SKILL_GRADE_NAME = { player.SKILL_GRADE_MASTER : localeInfo.SKILL_GRADE_NAME_MASTER, player.SKILL_GRADE_GRAND_MASTER : localeInfo.SKILL_GRADE_NAME_GRAND_MASTER, player.SKILL_GRADE_PERFECT_MASTER : localeInfo.SKILL_GRADE_NAME_PERFECT_MASTER, } AFFECT_NAME_DICT = { "HP" : localeInfo.TOOLTIP_SKILL_AFFECT_ATT_POWER, "ATT_GRADE" : localeInfo.TOOLTIP_SKILL_AFFECT_ATT_GRADE, "DEF_GRADE" : localeInfo.TOOLTIP_SKILL_AFFECT_DEF_GRADE, "ATT_SPEED" : localeInfo.TOOLTIP_SKILL_AFFECT_ATT_SPEED, "MOV_SPEED" : localeInfo.TOOLTIP_SKILL_AFFECT_MOV_SPEED, "DODGE" : localeInfo.TOOLTIP_SKILL_AFFECT_DODGE, "RESIST_NORMAL" : localeInfo.TOOLTIP_SKILL_AFFECT_RESIST_NORMAL, "REFLECT_MELEE" : localeInfo.TOOLTIP_SKILL_AFFECT_REFLECT_MELEE, } AFFECT_APPEND_TEXT_DICT = { "DODGE" : "%", "RESIST_NORMAL" : "%", "REFLECT_MELEE" : "%", } def __init__(self): ToolTip.__init__(self, self.SKILL_TOOL_TIP_WIDTH) def __del__(self): ToolTip.__del__(self) def SetSkill(self, skillIndex, skillLevel = -1): if 0 == skillIndex: return if skill.SKILL_TYPE_GUILD == skill.GetSkillType(skillIndex): if self.SKILL_TOOL_TIP_WIDTH != self.toolTipWidth: self.toolTipWidth = self.SKILL_TOOL_TIP_WIDTH self.ResizeToolTip() self.AppendDefaultData(skillIndex) self.AppendSkillConditionData(skillIndex) self.AppendGuildSkillData(skillIndex, skillLevel) else: if self.SKILL_TOOL_TIP_WIDTH != self.toolTipWidth: self.toolTipWidth = self.SKILL_TOOL_TIP_WIDTH self.ResizeToolTip() slotIndex = player.GetSkillSlotIndex(skillIndex) skillGrade = player.GetSkillGrade(slotIndex) skillLevel = player.GetSkillLevel(slotIndex) skillCurrentPercentage = player.GetSkillCurrentEfficientPercentage(slotIndex) skillNextPercentage = player.GetSkillNextEfficientPercentage(slotIndex) self.AppendDefaultData(skillIndex) self.AppendSkillConditionData(skillIndex) self.AppendSkillDataNew(slotIndex, skillIndex, skillGrade, skillLevel, skillCurrentPercentage, skillNextPercentage) self.AppendSkillRequirement(skillIndex, skillLevel) self.ShowToolTip() def SetSkillNew(self, slotIndex, skillIndex, skillGrade, skillLevel): if 0 == skillIndex: return if player.SKILL_INDEX_TONGSOL == skillIndex: slotIndex = player.GetSkillSlotIndex(skillIndex) skillLevel = player.GetSkillLevel(slotIndex) self.AppendDefaultData(skillIndex) self.AppendPartySkillData(skillGrade, skillLevel) elif player.SKILL_INDEX_RIDING == skillIndex: slotIndex = player.GetSkillSlotIndex(skillIndex) self.AppendSupportSkillDefaultData(skillIndex, skillGrade, skillLevel, 30) elif player.SKILL_INDEX_SUMMON == skillIndex: maxLevel = 10 self.ClearToolTip() self.__SetSkillTitle(skillIndex, skillGrade) ## Description description = skill.GetSkillDescription(skillIndex) self.AppendDescription(description, 25) if skillLevel == 10: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL_MASTER % (skillLevel), self.NORMAL_COLOR) self.AppendTextLine(localeInfo.SKILL_SUMMON_DESCRIPTION % (skillLevel*10), self.NORMAL_COLOR) else: self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL % (skillLevel), self.NORMAL_COLOR) self.__AppendSummonDescription(skillLevel, self.NORMAL_COLOR) self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL % (skillLevel+1), self.NEGATIVE_COLOR) self.__AppendSummonDescription(skillLevel+1, self.NEGATIVE_COLOR) elif skill.SKILL_TYPE_GUILD == skill.GetSkillType(skillIndex): if self.SKILL_TOOL_TIP_WIDTH != self.toolTipWidth: self.toolTipWidth = self.SKILL_TOOL_TIP_WIDTH self.ResizeToolTip() self.AppendDefaultData(skillIndex) self.AppendSkillConditionData(skillIndex) self.AppendGuildSkillData(skillIndex, skillLevel) else: if self.SKILL_TOOL_TIP_WIDTH != self.toolTipWidth: self.toolTipWidth = self.SKILL_TOOL_TIP_WIDTH self.ResizeToolTip() slotIndex = player.GetSkillSlotIndex(skillIndex) skillCurrentPercentage = player.GetSkillCurrentEfficientPercentage(slotIndex) skillNextPercentage = player.GetSkillNextEfficientPercentage(slotIndex) self.AppendDefaultData(skillIndex, skillGrade) self.AppendSkillConditionData(skillIndex) self.AppendSkillDataNew(slotIndex, skillIndex, skillGrade, skillLevel, skillCurrentPercentage, skillNextPercentage) self.AppendSkillRequirement(skillIndex, skillLevel) self.ShowToolTip() def __SetSkillTitle(self, skillIndex, skillGrade): self.SetTitle(skill.GetSkillName(skillIndex, skillGrade)) self.__AppendSkillGradeName(skillIndex, skillGrade) def __AppendSkillGradeName(self, skillIndex, skillGrade): if self.SKILL_GRADE_NAME.has_key(skillGrade): self.AppendSpace(5) self.AppendTextLine(self.SKILL_GRADE_NAME[skillGrade] % (skill.GetSkillName(skillIndex, 0)), self.CAN_LEVEL_UP_COLOR) def SetSkillOnlyName(self, slotIndex, skillIndex, skillGrade): if 0 == skillIndex: return slotIndex = player.GetSkillSlotIndex(skillIndex) self.toolTipWidth = self.SKILL_TOOL_TIP_WIDTH self.ResizeToolTip() self.ClearToolTip() self.__SetSkillTitle(skillIndex, skillGrade) self.AppendDefaultData(skillIndex, skillGrade) self.AppendSkillConditionData(skillIndex) self.ShowToolTip() def AppendDefaultData(self, skillIndex, skillGrade = 0): self.ClearToolTip() self.__SetSkillTitle(skillIndex, skillGrade) ## Level Limit levelLimit = skill.GetSkillLevelLimit(skillIndex) if levelLimit > 0: color = self.NORMAL_COLOR if player.GetStatus(player.LEVEL) < levelLimit: color = self.NEGATIVE_COLOR self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_ITEM_LIMIT_LEVEL % (levelLimit), color) ## Description description = skill.GetSkillDescription(skillIndex) self.AppendDescription(description, 25) def AppendSupportSkillDefaultData(self, skillIndex, skillGrade, skillLevel, maxLevel): self.ClearToolTip() self.__SetSkillTitle(skillIndex, skillGrade) ## Description description = skill.GetSkillDescription(skillIndex) self.AppendDescription(description, 25) if 1 == skillGrade: skillLevel += 19 elif 2 == skillGrade: skillLevel += 29 elif 3 == skillGrade: skillLevel = 40 self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL_WITH_MAX % (skillLevel, maxLevel), self.NORMAL_COLOR) def AppendSkillConditionData(self, skillIndex): conditionDataCount = skill.GetSkillConditionDescriptionCount(skillIndex) if conditionDataCount > 0: self.AppendSpace(5) for i in xrange(conditionDataCount): self.AppendTextLine(skill.GetSkillConditionDescription(skillIndex, i), self.CONDITION_COLOR) def AppendGuildSkillData(self, skillIndex, skillLevel): skillMaxLevel = 7 skillCurrentPercentage = float(skillLevel) / float(skillMaxLevel) skillNextPercentage = float(skillLevel+1) / float(skillMaxLevel) ## Current Level if skillLevel > 0: if self.HasSkillLevelDescription(skillIndex, skillLevel): self.AppendSpace(5) if skillLevel == skillMaxLevel: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL_MASTER % (skillLevel), self.NORMAL_COLOR) else: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL % (skillLevel), self.NORMAL_COLOR) ##### for i in xrange(skill.GetSkillAffectDescriptionCount(skillIndex)): self.AppendTextLine(skill.GetSkillAffectDescription(skillIndex, i, skillCurrentPercentage), self.ENABLE_COLOR) ## Cooltime coolTime = skill.GetSkillCoolTime(skillIndex, skillCurrentPercentage) if coolTime > 0: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_COOL_TIME + str(coolTime), self.ENABLE_COLOR) ## SP needGSP = skill.GetSkillNeedSP(skillIndex, skillCurrentPercentage) if needGSP > 0: self.AppendTextLine(localeInfo.TOOLTIP_NEED_GSP % (needGSP), self.ENABLE_COLOR) ## Next Level if skillLevel < skillMaxLevel: if self.HasSkillLevelDescription(skillIndex, skillLevel+1): self.AppendSpace(5) self.AppendTextLine(localeInfo.TOOLTIP_NEXT_SKILL_LEVEL_1 % (skillLevel+1, skillMaxLevel), self.DISABLE_COLOR) ##### for i in xrange(skill.GetSkillAffectDescriptionCount(skillIndex)): self.AppendTextLine(skill.GetSkillAffectDescription(skillIndex, i, skillNextPercentage), self.DISABLE_COLOR) ## Cooltime coolTime = skill.GetSkillCoolTime(skillIndex, skillNextPercentage) if coolTime > 0: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_COOL_TIME + str(coolTime), self.DISABLE_COLOR) ## SP needGSP = skill.GetSkillNeedSP(skillIndex, skillNextPercentage) if needGSP > 0: self.AppendTextLine(localeInfo.TOOLTIP_NEED_GSP % (needGSP), self.DISABLE_COLOR) def AppendSkillDataNew(self, slotIndex, skillIndex, skillGrade, skillLevel, skillCurrentPercentage, skillNextPercentage): self.skillMaxLevelStartDict = { 0 : 17, 1 : 7, 2 : 10, } self.skillMaxLevelEndDict = { 0 : 20, 1 : 10, 2 : 10, } skillLevelUpPoint = 1 realSkillGrade = player.GetSkillGrade(slotIndex) skillMaxLevelStart = self.skillMaxLevelStartDict.get(realSkillGrade, 15) skillMaxLevelEnd = self.skillMaxLevelEndDict.get(realSkillGrade, 20) ## Current Level if skillLevel > 0: if self.HasSkillLevelDescription(skillIndex, skillLevel): self.AppendSpace(5) if skillGrade == skill.SKILL_GRADE_COUNT: pass elif skillLevel == skillMaxLevelEnd: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL_MASTER % (skillLevel), self.NORMAL_COLOR) else: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_LEVEL % (skillLevel), self.NORMAL_COLOR) self.AppendSkillLevelDescriptionNew(skillIndex, skillCurrentPercentage, self.ENABLE_COLOR) ## Next Level if skillGrade != skill.SKILL_GRADE_COUNT: if skillLevel < skillMaxLevelEnd: if self.HasSkillLevelDescription(skillIndex, skillLevel+skillLevelUpPoint): self.AppendSpace(5) ## HP보강, 관통회피 보조스킬의 경우 if skillIndex == 141 or skillIndex == 142: self.AppendTextLine(localeInfo.TOOLTIP_NEXT_SKILL_LEVEL_3 % (skillLevel+1), self.DISABLE_COLOR) else: self.AppendTextLine(localeInfo.TOOLTIP_NEXT_SKILL_LEVEL_1 % (skillLevel+1, skillMaxLevelEnd), self.DISABLE_COLOR) self.AppendSkillLevelDescriptionNew(skillIndex, skillNextPercentage, self.DISABLE_COLOR) def AppendSkillLevelDescriptionNew(self, skillIndex, skillPercentage, color): affectDataCount = skill.GetNewAffectDataCount(skillIndex) if affectDataCount > 0: for i in xrange(affectDataCount): type, minValue, maxValue = skill.GetNewAffectData(skillIndex, i, skillPercentage) if not self.AFFECT_NAME_DICT.has_key(type): continue minValue = int(minValue) maxValue = int(maxValue) affectText = self.AFFECT_NAME_DICT[type] if "HP" == type: if minValue < 0 and maxValue < 0: minValue *= -1 maxValue *= -1 else: affectText = localeInfo.TOOLTIP_SKILL_AFFECT_HEAL affectText += str(minValue) if minValue != maxValue: affectText += " - " + str(maxValue) affectText += self.AFFECT_APPEND_TEXT_DICT.get(type, "") #import debugInfo #if debugInfo.IsDebugMode(): # affectText = "!!" + affectText self.AppendTextLine(affectText, color) else: for i in xrange(skill.GetSkillAffectDescriptionCount(skillIndex)): self.AppendTextLine(skill.GetSkillAffectDescription(skillIndex, i, skillPercentage), color) ## Duration duration = skill.GetDuration(skillIndex, skillPercentage) if duration > 0: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_DURATION % (duration), color) ## Cooltime coolTime = skill.GetSkillCoolTime(skillIndex, skillPercentage) if coolTime > 0: self.AppendTextLine(localeInfo.TOOLTIP_SKILL_COOL_TIME + str(coolTime), color) ## SP needSP = skill.GetSkillNeedSP(skillIndex, skillPercentage) if needSP != 0: continuationSP = skill.GetSkillContinuationSP(skillIndex, skillPercentage) if skill.IsUseHPSkill(skillIndex): self.AppendNeedHP(needSP, continuationSP, color) else: self.AppendNeedSP(needSP, continuationSP, color) def AppendSkillRequirement(self, skillIndex, skillLevel): skillMaxLevel = skill.GetSkillMaxLevel(skillIndex) if skillLevel >= skillMaxLevel: return isAppendHorizontalLine = FALSE ## Requirement if skill.IsSkillRequirement(skillIndex): if not isAppendHorizontalLine: isAppendHorizontalLine = TRUE self.AppendHorizontalLine() requireSkillName, requireSkillLevel = skill.GetSkillRequirementData(skillIndex) color = self.CANNOT_LEVEL_UP_COLOR if skill.CheckRequirementSueccess(skillIndex): color = self.CAN_LEVEL_UP_COLOR self.AppendTextLine(localeInfo.TOOLTIP_REQUIREMENT_SKILL_LEVEL % (requireSkillName, requireSkillLevel), color) ## Require Stat requireStatCount = skill.GetSkillRequireStatCount(skillIndex) if requireStatCount > 0: for i in xrange(requireStatCount): type, level = skill.GetSkillRequireStatData(skillIndex, i) if self.POINT_NAME_DICT.has_key(type): if not isAppendHorizontalLine: isAppendHorizontalLine = TRUE self.AppendHorizontalLine() name = self.POINT_NAME_DICT[type] color = self.CANNOT_LEVEL_UP_COLOR if player.GetStatus(type) >= level: color = self.CAN_LEVEL_UP_COLOR self.AppendTextLine(localeInfo.TOOLTIP_REQUIREMENT_STAT_LEVEL % (name, level), color) def HasSkillLevelDescription(self, skillIndex, skillLevel): if skill.GetSkillAffectDescriptionCount(skillIndex) > 0: return TRUE if skill.GetSkillCoolTime(skillIndex, skillLevel) > 0: return TRUE if skill.GetSkillNeedSP(skillIndex, skillLevel) > 0: return TRUE return FALSE def AppendMasterAffectDescription(self, index, desc, color): self.AppendTextLine(desc, color) def AppendNextAffectDescription(self, index, desc): self.AppendTextLine(desc, self.DISABLE_COLOR) def AppendNeedHP(self, needSP, continuationSP, color): self.AppendTextLine(localeInfo.TOOLTIP_NEED_HP % (needSP), color) if continuationSP > 0: self.AppendTextLine(localeInfo.TOOLTIP_NEED_HP_PER_SEC % (continuationSP), color) def AppendNeedSP(self, needSP, continuationSP, color): if -1 == needSP: self.AppendTextLine(localeInfo.TOOLTIP_NEED_ALL_SP, color) else: self.AppendTextLine(localeInfo.TOOLTIP_NEED_SP % (needSP), color) if continuationSP > 0: self.AppendTextLine(localeInfo.TOOLTIP_NEED_SP_PER_SEC % (continuationSP), color) def AppendPartySkillData(self, skillGrade, skillLevel): if 1 == skillGrade: skillLevel += 19 elif 2 == skillGrade: skillLevel += 29 elif 3 == skillGrade: skillLevel = 40 if skillLevel <= 0: return skillIndex = player.SKILL_INDEX_TONGSOL slotIndex = player.GetSkillSlotIndex(skillIndex) skillPower = player.GetSkillCurrentEfficientPercentage(slotIndex) if localeInfo.IsBRAZIL(): k = skillPower else: k = player.GetSkillLevel(skillIndex) / 100.0 self.AppendSpace(5) self.AutoAppendTextLine(localeInfo.TOOLTIP_PARTY_SKILL_LEVEL % skillLevel, self.NORMAL_COLOR) if skillLevel>=10: self.AutoAppendTextLine(localeInfo.PARTY_SKILL_ATTACKER % chop( 10 + 60 * k )) if skillLevel>=20: self.AutoAppendTextLine(localeInfo.PARTY_SKILL_BERSERKER % chop(1 + 5 * k)) self.AutoAppendTextLine(localeInfo.PARTY_SKILL_TANKER % chop(50 + 1450 * k)) if skillLevel>=25: self.AutoAppendTextLine(localeInfo.PARTY_SKILL_BUFFER % chop(5 + 45 * k )) if skillLevel>=35: self.AutoAppendTextLine(localeInfo.PARTY_SKILL_SKILL_MASTER % chop(25 + 600 * k )) if skillLevel>=40: self.AutoAppendTextLine(localeInfo.PARTY_SKILL_DEFENDER % chop( 5 + 30 * k )) self.AlignHorizonalCenter() def __AppendSummonDescription(self, skillLevel, color): if skillLevel > 1: self.AppendTextLine(localeInfo.SKILL_SUMMON_DESCRIPTION % (skillLevel * 10), color) elif 1 == skillLevel: self.AppendTextLine(localeInfo.SKILL_SUMMON_DESCRIPTION % (15), color) elif 0 == skillLevel: self.AppendTextLine(localeInfo.SKILL_SUMMON_DESCRIPTION % (10), color) if __name__ == "__main__": import app import wndMgr import systemSetting import mouseModule import grp import ui #wndMgr.SetOutlineFlag(TRUE) app.SetMouseHandler(mouseModule.mouseController) app.SetHairColorEnable(TRUE) wndMgr.SetMouseHandler(mouseModule.mouseController) wndMgr.SetScreenSize(systemSetting.GetWidth(), systemSetting.GetHeight()) app.Create("METIN2 CLOSED BETA", systemSetting.GetWidth(), systemSetting.GetHeight(), 1) mouseModule.mouseController.Create() toolTip = ItemToolTip() toolTip.ClearToolTip() #toolTip.AppendTextLine("Test") desc = "Item descriptions:|increase of width of display to 35 digits per row AND installation of function that the displayed words are not broken up in two parts, but instead if one word is too long to be displayed in this row, this word will start in the next row." summ = "" toolTip.AddItemData_Offline(10, desc, summ, 0, 0) toolTip.Show() app.Loop()
  4. Sorry for the double post more already solved the problem. Lacked put in other ch ..
  5. I put the game vanilla 2.4.1, however when trying to rotate the items to time constraint message appears me. Insert the ATTR_CHANGE_LIMIT function: 0 CONFIG in the vanilla had mentioned the topic to take time to rotate items, but still have to wait 60 minutes to rotate the items. Skype: Ridley Ramos
  6. vanilla, the config to change the time to rotate items is bugged. I put ATTR_CHANGE_LIMIT: 0 and continues with time ..
  7. LOG 0707 18:56:33521 :: ¾Ë¸²: ÆÄÀÏ ¸ðµåÀÔ´Ï´Ù. 0707 18:56:00005 :: 0707 18:56:00006 :: ## Network - OffLine Phase ## 0707 18:56:00006 :: 0707 18:56:00095 :: importing from pack debugInfo 0707 18:56:00109 :: importing from pack localeInfo 0707 18:56:00130 :: importing from pack constInfo 0707 18:56:00166 :: importing from pack mouseModule 0707 18:56:00175 :: importing from pack ui 0707 18:56:00223 :: importing from pack networkModule 0707 18:56:00233 :: importing from pack playerSettingModule 0707 18:56:00260 :: importing from pack emotion 0707 18:56:00268 :: importing from pack uiPhaseCurtain 0707 18:56:00275 :: importing from pack uiCandidate 0707 18:56:00284 :: importing from pack musicInfo 0707 18:56:00290 :: importing from pack stringCommander 0707 18:56:00921 :: NEWMAIN STREAM ----------------------------------------------------------------------------0707 18:56:00921 :: 0707 18:56:00922 :: NEW POPUP DIALOG ----------------------------------------------------------------------------0707 18:56:00922 :: 0707 18:56:00924 :: importing from pack exception 0707 18:56:00929 :: ===== Load Script File : UIScript/PopupDialog.py0707 18:56:00929 :: 0707 18:56:00934 :: importing from pack uiScriptLocale 0707 18:56:00984 :: NEW CURTAIN ----------------------------------------------------------------------------0707 18:56:00984 :: 0707 18:56:00984 :: 0707 18:56:00984 :: ## Network - OffLine Phase ## 0707 18:56:00984 :: 0707 18:56:00984 :: importing from pack introLogin 0707 18:56:01003 :: importing from pack serverInfo 0707 18:56:01005 :: importing from pack uiCommon 0707 18:56:01016 :: importing from lib time 0707 18:56:01017 :: importing from pack ServerCommandParser 0707 18:56:01025 :: NEW LOGIN WINDOW ----------------------------------------------------------------------------0707 18:56:01025 :: 0707 18:56:01025 :: LOGIN WINDOW OPEN ----------------------------------------------------------------------------0707 18:56:01025 :: 0707 18:56:01025 :: ===== Load Script File : locale/de/ui/LoginWindow.py0707 18:56:01025 :: 0707 18:56:01539 :: ÀÚµ¿ ·Î±×ÀÎÀ» ÇϽ÷Á¸éloginInfo.pyÆÄÀÏÀ» ÀÛ¼ºÇØÁÖ¼¼¿ä ³»¿ë: ================================================================ addr=ÁÖ¼Ò port=Æ÷Æ® id=¾ÆÀ̵ð pwd=ºñ¹Ð¹øÈ£ slot=ij¸¯ÅÍ ¼±Åà À妽º (¾ø°Å³ª -1À̸é ÀÚµ¿ ¼±Åà ¾ÈÇÔ) autoLogin=ÀÚµ¿ Á¢¼Ó ¿©ºÎ autoSelect=ÀÚµ¿ Á¢¼Ó ¿©ºÎ localeInfo=(ymir) LC_Ymir ÀÏ°æ¿ì ymir·Î ÀÛµ¿. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é korea·Î ÀÛµ¿ 0707 18:56:01540 :: 0707 18:56:04666 :: Failed to connect. 0707 18:56:09253 :: HANDSHAKE RECV 6353279 0 0707 18:56:09253 :: HANDSHAKE SEND 6353279 0707 18:56:09599 :: HANDSHAKE RECV 6354918 819 0707 18:56:09599 :: HANDSHAKE SEND 6356556 0707 18:56:09863 :: HANDSHAKE RECV 6355238 160 0707 18:56:09863 :: HANDSHAKE SEND 6355558 0707 18:56:10177 :: HANDSHAKE RECV 6355518 140 0707 18:56:10177 :: HANDSHAKE SEND 6355798 0707 18:56:10639 :: KEY_AGREEMENT RECV 256 0707 18:56:10701 :: KEY_AGREEMENT SEND 256 0707 18:56:10936 :: KEY_AGREEMENT_COMPLETED RECV 0707 18:56:13262 :: Succeed connecting. 0707 18:56:13642 :: 0707 18:56:13642 :: ## Network - Hand Shake Phase ## 0707 18:56:13642 :: 0707 18:56:13658 :: HANDSHAKE RECV 6356019 0 0707 18:56:13658 :: HANDSHAKE SEND 6356019 0707 18:56:14846 :: HANDSHAKE RECV 6357178 579 0707 18:56:14846 :: HANDSHAKE SEND 6358336 0707 18:56:15176 :: HANDSHAKE RECV 6357539 180 0707 18:56:15176 :: HANDSHAKE SEND 6357899 0707 18:56:15556 :: HANDSHAKE RECV 6357858 159 0707 18:56:15556 :: HANDSHAKE SEND 6358176 0707 18:56:16018 :: KEY_AGREEMENT RECV 256 0707 18:56:16059 :: KEY_AGREEMENT SEND 256 0707 18:56:16364 :: KEY_AGREEMENT_COMPLETED RECV 0707 18:56:16694 :: 0707 18:56:16694 :: ## Network - Login Phase ## 0707 18:56:16694 :: 0707 18:56:17354 :: 0707 18:56:17354 :: ## Network - Select Phase ## 0707 18:56:17354 :: 0707 18:56:18105 :: CPythonNonPlayer::LoadNonPlayerData: locale/de/mob_proto, sizeof(TMobTable)=255 0707 18:56:18119 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:158 Line:56] 0707 18:56:18119 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:159 Line:57] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:160 Line:58] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:161 Line:59] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:162 Line:60] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:256 Line:61] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:257 Line:62] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:258 Line:63] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:259 Line:64] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:260 Line:65] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:261 Line:66] 0707 18:56:18120 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:262 Line:67] 0707 18:56:18123 :: importing from pack introSelect 0707 18:56:18136 :: importing from lib math 0707 18:56:18136 :: importing from pack uiMapNameShower 0707 18:56:18146 :: importing from pack uiAffectShower 0707 18:56:18158 :: importing from pack uiToolTip 0707 18:56:18186 :: importing from pack uiCharacter 0707 18:56:18204 :: importing from pack uiTarget 0707 18:56:18214 :: importing from pack consoleModule 0707 18:56:18228 :: importing from pack interfaceModule 0707 18:56:18248 :: importing from pack uiTaskBar 0707 18:56:18264 :: importing from pack uiInventory 0707 18:56:18283 :: importing from pack uiRefine 0707 18:56:18294 :: importing from pack uiAttachMetin 0707 18:56:18301 :: importing from pack uiPickMoney 0707 18:56:18308 :: importing from pack uiPrivateShopBuilder 0707 18:56:18317 :: importing from pack uiDragonSoul 0707 18:56:18337 :: importing from pack uiChat 0707 18:56:18353 :: importing from pack colorInfo 0707 18:56:18359 :: importing from pack uiMessenger 0707 18:56:18372 :: importing from pack uiGameOption 0707 18:56:18383 :: importing from pack uiHelp 0707 18:56:18390 :: importing from pack uiWhisper 0707 18:56:18399 :: importing from pack uiPointReset 0707 18:56:18407 :: importing from pack uiShop 0707 18:56:18416 :: importing from pack uiExchange 0707 18:56:18425 :: importing from pack uiSystem 0707 18:56:18432 :: importing from pack uiOption 0707 18:56:18443 :: importing from pack uiSystemOption 0707 18:56:18451 :: importing from pack uiSelectMusic 0707 18:56:18459 :: importing from pack uiRestart 0707 18:56:18466 :: importing from pack uiMiniMap 0707 18:56:18479 :: importing from pack uiParty 0707 18:56:18500 :: importing from pack uiSafebox 0707 18:56:18515 :: importing from pack uiGuild 0707 18:56:18548 :: importing from pack uiUploadMark 0707 18:56:18558 :: importing from pack uiQuest 0707 18:56:18572 :: importing from pack uiEquipmentDialog 0707 18:56:18584 :: importing from pack uiGameButton 0707 18:56:18594 :: importing from pack uiTip 0707 18:56:18604 :: importing from pack uiCube 0707 18:56:18615 :: importing from pack uiSelectItem 0707 18:56:18756 :: ---------------------------------------------------------------------------- CLOSE LOGIN WINDOW 0707 18:56:18756 :: 0707 18:56:18756 :: ===== Load Script File : locale/de/ui/selectcharacterwindow.py0707 18:56:18756 :: 0707 18:56:19130 :: ===== Load Script File : uiscript/questiondialog.py0707 18:56:19130 :: 0707 18:56:19707 :: CResource::Load file not exist d:ymir workeffectaffectdamagevalue0.jpg 0707 18:56:19719 :: CResource::Load file not exist d:ymir workeffectaffectdamagevaluepoison0.jpg 0707 18:56:19820 :: CRaceManager::CreateRace(dwRaceIndex=0) 0707 18:56:19895 :: CRaceManager::CreateRace(dwRaceIndex=4) 0707 18:56:19990 :: CRaceManager::CreateRace(dwRaceIndex=1) 0707 18:56:20057 :: CRaceManager::CreateRace(dwRaceIndex=5) 0707 18:56:20212 :: CRaceManager::CreateRace(dwRaceIndex=2) 0707 18:56:20302 :: CRaceManager::CreateRace(dwRaceIndex=6) 0707 18:56:20367 :: CRaceManager::CreateRace(dwRaceIndex=3) 0707 18:56:20430 :: CRaceManager::CreateRace(dwRaceIndex=7) 0707 18:56:20488 :: DeleteCharacterInstance: no vid by 0 0707 18:56:20488 :: DeleteCharacterInstance: no vid by 1 0707 18:56:20488 :: DeleteCharacterInstance: no vid by 2 0707 18:56:20488 :: DeleteCharacterInstance: no vid by 3 0707 18:56:20488 :: SelectCharacterInstance: no vid by 0 0707 18:56:20558 :: DeleteCharacterInstance: no vid by 1 0707 18:56:20558 :: DeleteCharacterInstance: no vid by 2 0707 18:56:20558 :: DeleteCharacterInstance: no vid by 3 0707 18:56:20558 :: SelectCharacterInstance: no vid by 0 0707 18:56:20562 :: DeleteCharacterInstance: no vid by 1 0707 18:56:20562 :: DeleteCharacterInstance: no vid by 2 0707 18:56:20562 :: DeleteCharacterInstance: no vid by 3 0707 18:56:20562 :: SelectCharacterInstance: no vid by 0 0707 18:56:20565 :: ---------------------------------------------------------------------------- DELETE LOGIN WINDOW0707 18:56:20565 :: 0707 18:57:24593 :: Succeed connecting. 0707 18:57:25022 :: 0707 18:57:25022 :: ## Network - Hand Shake Phase ## 0707 18:57:25022 :: 0707 18:57:25039 :: HANDSHAKE RECV 6367343 0 0707 18:57:25039 :: HANDSHAKE SEND 6367343 0707 18:57:25369 :: HANDSHAKE RECV 6367678 167 0707 18:57:25369 :: HANDSHAKE SEND 6368012 0707 18:57:25847 :: KEY_AGREEMENT RECV 256 0707 18:57:25889 :: KEY_AGREEMENT SEND 256 0707 18:57:26227 :: KEY_AGREEMENT_COMPLETED RECV 0707 18:57:26524 :: 0707 18:57:26524 :: ## Network - Login Phase ## 0707 18:57:26524 :: 0707 18:57:27316 :: 0707 18:57:27316 :: ## Network - Select Phase ## 0707 18:57:27316 :: 0707 18:57:27317 :: importing from pack introLoading 0707 18:57:27326 :: NEW LOADING WINDOW -------------------------------------------------------------------------------0707 18:57:27326 :: 0707 18:57:27464 :: DeleteCharacterInstance: no vid by 1 0707 18:57:27464 :: DeleteCharacterInstance: no vid by 2 0707 18:57:27464 :: DeleteCharacterInstance: no vid by 3 0707 18:57:27464 :: OPEN LOADING WINDOW -------------------------------------------------------------------------------0707 18:57:27464 :: 0707 18:57:27464 :: ===== Load Script File : locale/de/ui/LoadingWindow.py0707 18:57:27464 :: 0707 18:57:28388 :: 0707 18:57:28388 :: ## Network - Loading Phase ## 0707 18:57:28388 :: 0707 18:57:29031 :: Property already registered, replace property/devils_dragon_island/mtthunder_thorn01.prb to propertydevils_dragon_islandthingobj_mtthund_thorn01.prb 0707 18:57:31499 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR 0707 18:57:31500 :: SYSERR: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR 0707 18:57:31561 :: LoadWaterMapFile metin2_map_a1001001water.wtr 2 0707 18:57:31561 :: LoadRawHeightMapFile metin2_map_a1001001height.raw 0707 18:57:31565 :: LoadHeightMap::CalculateNormal 2 ms 0707 18:57:31565 :: LoadAttrMapFile metin2_map_a1001001attr.atr 0707 18:57:31567 :: 2 0707 18:57:31567 :: LoadSplatFile metin2_map_a1001001tile.raw 0707 18:57:31583 :: CTerrain::RAW_AllocateSplats 13 0707 18:57:31585 :: CTerrain::LoadShadowTexture 2 ms 0707 18:57:31585 :: LoadShadowMap metin2_map_a1001001shadowmap.raw 0707 18:57:31586 :: 1 ms 0707 18:57:31589 :: CTerrain::LoadMiniMapTexture 3 ms 0707 18:57:31590 :: CMapOutdoor::LoadTerrain 33 0707 18:57:32046 :: LoadWaterMapFile metin2_map_a1002001water.wtr 1 0707 18:57:32046 :: LoadRawHeightMapFile metin2_map_a1002001height.raw 0707 18:57:32050 :: LoadHeightMap::CalculateNormal 2 ms 0707 18:57:32051 :: LoadAttrMapFile metin2_map_a1002001attr.atr 0707 18:57:32053 :: 3 0707 18:57:32053 :: LoadSplatFile metin2_map_a1002001tile.raw 0707 18:57:32064 :: CTerrain::RAW_AllocateSplats 8 0707 18:57:32066 :: CTerrain::LoadShadowTexture 2 ms 0707 18:57:32066 :: LoadShadowMap metin2_map_a1002001shadowmap.raw 0707 18:57:32068 :: 2 ms 0707 18:57:32070 :: CTerrain::LoadMiniMapTexture 2 ms 0707 18:57:32072 :: CMapOutdoor::LoadTerrain 30 0707 18:57:32738 :: LoadWaterMapFile metin2_map_a1003001water.wtr 5 0707 18:57:32738 :: LoadRawHeightMapFile metin2_map_a1003001height.raw 0707 18:57:32742 :: LoadHeightMap::CalculateNormal 2 ms 0707 18:57:32742 :: LoadAttrMapFile metin2_map_a1003001attr.atr 0707 18:57:32744 :: 2 0707 18:57:32744 :: LoadSplatFile metin2_map_a1003001tile.raw 0707 18:57:32760 :: CTerrain::RAW_AllocateSplats 14 0707 18:57:32762 :: CTerrain::LoadShadowTexture 2 ms 0707 18:57:32762 :: LoadShadowMap metin2_map_a1003001shadowmap.raw 0707 18:57:32765 :: 2 ms 0707 18:57:32766 :: CTerrain::LoadMiniMapTexture 1 ms 0707 18:57:32768 :: CMapOutdoor::LoadTerrain 38 0707 18:57:32877 :: LoadWaterMapFile metin2_map_a1001002water.wtr 1 0707 18:57:32877 :: LoadRawHeightMapFile metin2_map_a1001002height.raw 0707 18:57:32881 :: LoadHeightMap::CalculateNormal 2 ms 0707 18:57:32881 :: LoadAttrMapFile metin2_map_a1001002attr.atr 0707 18:57:32884 :: 3 0707 18:57:32884 :: LoadSplatFile metin2_map_a1001002tile.raw 0707 18:57:32898 :: CTerrain::RAW_AllocateSplats 12 0707 18:57:32901 :: CTerrain::LoadShadowTexture 3 ms 0707 18:57:32901 :: LoadShadowMap metin2_map_a1001002shadowmap.raw 0707 18:57:32905 :: 4 ms 0707 18:57:32907 :: CTerrain::LoadMiniMapTexture 2 ms 0707 18:57:32909 :: CMapOutdoor::LoadTerrain 35 0707 18:57:33051 :: LoadWaterMapFile metin2_map_a1002002water.wtr 2 0707 18:57:33051 :: LoadRawHeightMapFile metin2_map_a1002002height.raw 0707 18:57:33056 :: LoadHeightMap::CalculateNormal 2 ms 0707 18:57:33056 :: LoadAttrMapFile metin2_map_a1002002attr.atr 0707 18:57:33057 :: 1 0707 18:57:33057 :: LoadSplatFile metin2_map_a1002002tile.raw 0707 18:57:33069 :: CTerrain::RAW_AllocateSplats 9 0707 18:57:33072 :: CTerrain::LoadShadowTexture 3 ms 0707 18:57:33072 :: LoadShadowMap metin2_map_a1002002shadowmap.raw 0707 18:57:33079 :: 7 ms 0707 18:57:33082 :: CTerrain::LoadMiniMapTexture 3 ms 0707 18:57:33083 :: CMapOutdoor::LoadTerrain 35 0707 18:57:33341 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0707 18:57:33341 :: SYSERR: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0707 18:57:33794 :: LoadWaterMapFile metin2_map_a1003002water.wtr 1 0707 18:57:33795 :: LoadRawHeightMapFile metin2_map_a1003002height.raw 0707 18:57:33801 :: LoadHeightMap::CalculateNormal 2 ms 0707 18:57:33802 :: LoadAttrMapFile metin2_map_a1003002attr.atr 0707 18:57:33804 :: 2 0707 18:57:33804 :: LoadSplatFile metin2_map_a1003002tile.raw 0707 18:57:33815 :: CTerrain::RAW_AllocateSplats 9 0707 18:57:33817 :: CTerrain::LoadShadowTexture 1 ms 0707 18:57:33817 :: LoadShadowMap metin2_map_a1003002shadowmap.raw 0707 18:57:33819 :: 2 ms 0707 18:57:33821 :: CTerrain::LoadMiniMapTexture 2 ms 0707 18:57:33822 :: CMapOutdoor::LoadTerrain 32 0707 18:57:33889 :: LoadWaterMapFile metin2_map_a1001003water.wtr 1 0707 18:57:33889 :: LoadRawHeightMapFile metin2_map_a1001003height.raw 0707 18:57:33895 :: LoadHeightMap::CalculateNormal 4 ms 0707 18:57:33895 :: LoadAttrMapFile metin2_map_a1001003attr.atr 0707 18:57:33898 :: 2 0707 18:57:33898 :: LoadSplatFile metin2_map_a1001003tile.raw 0707 18:57:33912 :: CTerrain::RAW_AllocateSplats 12 0707 18:57:33914 :: CTerrain::LoadShadowTexture 2 ms 0707 18:57:33914 :: LoadShadowMap metin2_map_a1001003shadowmap.raw 0707 18:57:33916 :: 2 ms 0707 18:57:33918 :: CTerrain::LoadMiniMapTexture 2 ms 0707 18:57:33919 :: CMapOutdoor::LoadTerrain 34 0707 18:57:33969 :: LoadWaterMapFile metin2_map_a1002003water.wtr 2 0707 18:57:33969 :: LoadRawHeightMapFile metin2_map_a1002003height.raw 0707 18:57:33973 :: LoadHeightMap::CalculateNormal 3 ms 0707 18:57:33973 :: LoadAttrMapFile metin2_map_a1002003attr.atr 0707 18:57:33975 :: 2 0707 18:57:33975 :: LoadSplatFile metin2_map_a1002003tile.raw 0707 18:57:33986 :: CTerrain::RAW_AllocateSplats 8 0707 18:57:33990 :: CTerrain::LoadShadowTexture 4 ms 0707 18:57:33990 :: LoadShadowMap metin2_map_a1002003shadowmap.raw 0707 18:57:33994 :: 4 ms 0707 18:57:33996 :: CTerrain::LoadMiniMapTexture 2 ms 0707 18:57:33997 :: CMapOutdoor::LoadTerrain 32 0707 18:57:34139 :: LoadWaterMapFile metin2_map_a1003003water.wtr 2 0707 18:57:34139 :: LoadRawHeightMapFile metin2_map_a1003003height.raw 0707 18:57:34143 :: LoadHeightMap::CalculateNormal 2 ms 0707 18:57:34143 :: LoadAttrMapFile metin2_map_a1003003attr.atr 0707 18:57:34145 :: 2 0707 18:57:34145 :: LoadSplatFile metin2_map_a1003003tile.raw 0707 18:57:34159 :: CTerrain::RAW_AllocateSplats 12 0707 18:57:34161 :: CTerrain::LoadShadowTexture 2 ms 0707 18:57:34161 :: LoadShadowMap metin2_map_a1003003shadowmap.raw 0707 18:57:34164 :: 3 ms 0707 18:57:34166 :: CTerrain::LoadMiniMapTexture 1 ms 0707 18:57:34167 :: CMapOutdoor::LoadTerrain 32 0707 18:57:34192 :: Update::Load spent 2635 ms 0707 18:57:34228 :: SetDropSoundFile 0 : sound/ui/drop.wav 0707 18:57:34228 :: SetDropSoundFile 4 : sound/ui/equip_ring_amulet.wav 0707 18:57:34228 :: SetDropSoundFile 1 : sound/ui/equip_metal_armor.wav 0707 18:57:34228 :: SetDropSoundFile 3 : sound/ui/equip_bow.wav 0707 18:57:34228 :: SetDropSoundFile 2 : sound/ui/equip_metal_weapon.wav 0707 18:57:48666 :: importing from pack game 0707 18:57:48698 :: importing from pack uiPlayerGauge 0707 18:57:48805 :: ===== Load Script File : UIScript/CharacterWindow.py0707 18:57:48805 :: 0707 18:57:48972 :: CResource::Load file not exist d:ymir workuigamequestslot_button_01.sub 0707 18:57:48983 :: ===== Load Script File : locale/de/ui/InventoryWindow.py0707 18:57:48983 :: 0707 18:57:49053 :: ===== Load Script File : UIScript/BeltInventoryWindow.py0707 18:57:49053 :: 0707 18:57:49076 :: ===== Load Script File : UIScript/PickMoneyDialog.py0707 18:57:49076 :: 0707 18:57:49082 :: ===== Load Script File : uiscript/questiondialog2.py0707 18:57:49082 :: 0707 18:57:49086 :: ===== Load Script File : uiscript/refinedialog.py0707 18:57:49086 :: 0707 18:57:49094 :: ===== Load Script File : uiscript/attachstonedialog.py0707 18:57:49094 :: 0707 18:57:49154 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49154 :: 0707 18:57:49154 :: 1110707 18:57:49154 :: 0707 18:57:49154 :: 00707 18:57:49154 :: 0707 18:57:49154 :: 00707 18:57:49154 :: 0707 18:57:49154 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49154 :: 0707 18:57:49154 :: 1120707 18:57:49154 :: 0707 18:57:49154 :: 00707 18:57:49154 :: 0707 18:57:49154 :: 00707 18:57:49154 :: 0707 18:57:49154 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49154 :: 0707 18:57:49154 :: 1130707 18:57:49154 :: 0707 18:57:49154 :: 00707 18:57:49154 :: 0707 18:57:49154 :: 00707 18:57:49154 :: 0707 18:57:49154 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49154 :: 0707 18:57:49155 :: 1110707 18:57:49155 :: 0707 18:57:49155 :: 00707 18:57:49155 :: 0707 18:57:49155 :: 00707 18:57:49155 :: 0707 18:57:49155 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49155 :: 0707 18:57:49155 :: 1120707 18:57:49155 :: 0707 18:57:49155 :: 00707 18:57:49155 :: 0707 18:57:49155 :: 00707 18:57:49155 :: 0707 18:57:49155 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49155 :: 0707 18:57:49155 :: 1130707 18:57:49155 :: 0707 18:57:49155 :: 00707 18:57:49155 :: 0707 18:57:49155 :: 00707 18:57:49155 :: 0707 18:57:49155 :: ===== Load Script File : locale/de/ui/dragonsoulwindow.py0707 18:57:49155 :: 0707 18:57:49238 :: ===== Load Script File : uiscript/questiondialog.py0707 18:57:49238 :: 0707 18:57:49243 :: ===== Load Script File : uiscript/questiondialog2.py0707 18:57:49243 :: 0707 18:57:49247 :: ===== Load Script File : UIScript/PopupDialog.py0707 18:57:49247 :: 0707 18:57:49251 :: ===== Load Script File : locale/de/ui/dragonsoulrefinewindow.py0707 18:57:49252 :: 0707 18:57:49309 :: ===== Load Script File : UIScriptPopupDialog.py0707 18:57:49309 :: 0707 18:57:49364 :: ===== Load Script File : UIScript/AtlasWindow.py0707 18:57:49364 :: 0707 18:57:49369 :: ===== Load Script File : UIScript/SafeboxWindow.py0707 18:57:49369 :: 0707 18:57:49374 :: ===== Load Script File : UIScriptPickMoneyDialog.py0707 18:57:49374 :: 0707 18:57:49378 :: ===== Load Script File : uiscript/popupdialog.py0707 18:57:49379 :: 0707 18:57:49383 :: ===== Load Script File : uiscript/changepassworddialog.py0707 18:57:49383 :: 0707 18:57:49395 :: ===== Load Script File : UIScript/MallWindow.py0707 18:57:49395 :: 0707 18:57:49423 :: ===== Load Script File : UIScript/exchangedialog.py0707 18:57:49423 :: 0707 18:57:49433 :: ===== Load Script File : UIScriptPickMoneyDialog.py0707 18:57:49433 :: 0707 18:57:49437 :: ===== Load Script File : uiscript/questiondialog2.py0707 18:57:49437 :: 0707 18:57:49441 :: ===== Load Script File : uiscriptquestiondialog2.py0707 18:57:49441 :: 0707 18:57:49449 :: ===== Load Script File : UIScript/shopdialog.py0707 18:57:49449 :: 0707 18:57:49453 :: ===== Load Script File : uiscript/restartdialog.py0707 18:57:49454 :: 0707 18:57:49462 :: ===== Load Script File : locale/de/ui/SystemDialog.py0707 18:57:49462 :: 0707 18:57:49467 :: ===== Load Script File : locale/de/ui/passworddialog.py0707 18:57:49467 :: 0707 18:57:49473 :: ===== Load Script File : UIScript/PrivateShopBuilder.py0707 18:57:49474 :: 0707 18:57:49478 :: ===== Load Script File : locale/de/ui/TaskBar.py0707 18:57:49478 :: 0707 18:57:49626 :: ===== Load Script File : UIScript/MouseButtonWindow.py0707 18:57:49626 :: 0707 18:57:49646 :: ===== Load Script File : UIScript/RightMouseButtonWindow.py0707 18:57:49646 :: 0707 18:57:49655 :: rampage_over_out0707 18:57:49655 :: 0707 18:57:49655 :: ===== Load Script File : locale/de/ui/giftbox.py0707 18:57:49655 :: 0707 18:57:49676 :: ===== Load Script File : locale/de/ui/ExpandedTaskBar.py0707 18:57:49676 :: 0707 18:57:49686 :: ===== Load Script File : locale/de/ui/EnergyBar.py0707 18:57:49686 :: 0707 18:57:49701 :: ===== Load Script File : UIScript/gamewindow.py0707 18:57:49701 :: 0707 18:57:49710 :: ===== Load Script File : UIScript/HelpWindow.py0707 18:57:49710 :: 0707 18:57:49751 :: importing from pack uiWeb 0707 18:57:49757 :: ===== Load Script File : locale/de/ui/WebWindow.py0707 18:57:49757 :: 0707 18:57:49761 :: ===== Load Script File : UIScript/CubeWindow.py0707 18:57:49761 :: 0707 18:57:49801 :: ===== Load Script File : UIScript/CubeResultWindow.py0707 18:57:49801 :: 0707 18:57:49807 :: ===== Load Script File : UIScript/selectitemwindow.py0707 18:57:49807 :: 0707 18:57:49811 :: ===== Load Script File : UIScript/MiniMap.py0707 18:57:49811 :: 0707 18:57:49838 :: NEW CURTAIN ----------------------------------------------------------------------------0707 18:57:49838 :: 0707 18:57:49985 :: ---------------------------------------------------------------------------- CLOSE LOADING WINDOW0707 18:57:49985 :: 0707 18:57:49987 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49987 :: 0707 18:57:49987 :: 1110707 18:57:49987 :: 0707 18:57:49987 :: 00707 18:57:49987 :: 0707 18:57:49987 :: 00707 18:57:49987 :: 0707 18:57:49987 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49987 :: 0707 18:57:49987 :: 1120707 18:57:49987 :: 0707 18:57:49987 :: 00707 18:57:49987 :: 0707 18:57:49987 :: 00707 18:57:49987 :: 0707 18:57:49987 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49987 :: 0707 18:57:49987 :: 1130707 18:57:49987 :: 0707 18:57:49987 :: 00707 18:57:49987 :: 0707 18:57:49987 :: 00707 18:57:49987 :: 0707 18:57:49988 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49988 :: 0707 18:57:49988 :: 1110707 18:57:49988 :: 0707 18:57:49988 :: 00707 18:57:49988 :: 0707 18:57:49988 :: 00707 18:57:49988 :: 0707 18:57:49988 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49988 :: 0707 18:57:49988 :: 1120707 18:57:49988 :: 0707 18:57:49988 :: 00707 18:57:49988 :: 0707 18:57:49988 :: 00707 18:57:49988 :: 0707 18:57:49988 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49988 :: 0707 18:57:49988 :: 1130707 18:57:49988 :: 0707 18:57:49988 :: 00707 18:57:49988 :: 0707 18:57:49989 :: 00707 18:57:49989 :: 0707 18:57:49989 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49989 :: 0707 18:57:49989 :: 1110707 18:57:49989 :: 0707 18:57:49989 :: 00707 18:57:49989 :: 0707 18:57:49989 :: 00707 18:57:49989 :: 0707 18:57:49989 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49989 :: 0707 18:57:49989 :: 1120707 18:57:49989 :: 0707 18:57:49989 :: 00707 18:57:49989 :: 0707 18:57:49989 :: 00707 18:57:49989 :: 0707 18:57:49989 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 18:57:49990 :: 0707 18:57:49990 :: 1130707 18:57:49990 :: 0707 18:57:49990 :: 00707 18:57:49990 :: 0707 18:57:49990 :: 00707 18:57:49990 :: 0707 18:57:50032 :: ---------------------------------------------------------------------------- DELETE LOADING WINDOW0707 18:57:50032 :: 0707 18:57:21549 :: 0707 18:57:21549 :: ## Network - OffLine Phase ## 0707 18:57:21549 :: 0707 18:57:21549 :: NEW LOGIN WINDOW ----------------------------------------------------------------------------0707 18:57:21549 :: 0707 18:57:21698 :: FadeOutMusic: BGM/M2BG.mp3 - ERROR NOT EXIST 0707 18:57:21724 :: ===================================================== DESTROYED TARGET BOARD0707 18:57:21724 :: 0707 18:57:21724 :: Is Opening Belt Inven?? 0707 18:57:21724 :: 0707 18:57:21724 :: 10707 18:57:21724 :: 0707 18:57:21727 :: ---------------------------------------------------------------------------- DESTROY EXCHANGE0707 18:57:21727 :: 0707 18:57:21730 :: ==================================== DESTROIED GUILD WINDOW0707 18:57:21730 :: 0707 18:57:21731 :: =============================== DESTROIED PartyWindow0707 18:57:21731 :: 0707 18:57:21731 :: ---------------------------------------------------------------------------- CLOSE GAME WINDOW0707 18:57:21731 :: 0707 18:57:21731 :: LOGIN WINDOW OPEN ----------------------------------------------------------------------------0707 18:57:21731 :: 0707 18:57:21732 :: ===== Load Script File : locale/de/ui/LoginWindow.py0707 18:57:21732 :: 0707 18:57:22269 :: ÀÚµ¿ ·Î±×ÀÎÀ» ÇϽ÷Á¸éloginInfo.pyÆÄÀÏÀ» ÀÛ¼ºÇØÁÖ¼¼¿ä ³»¿ë: ================================================================ addr=ÁÖ¼Ò port=Æ÷Æ® id=¾ÆÀ̵ð pwd=ºñ¹Ð¹øÈ£ slot=ij¸¯ÅÍ ¼±Åà À妽º (¾ø°Å³ª -1À̸é ÀÚµ¿ ¼±Åà ¾ÈÇÔ) autoLogin=ÀÚµ¿ Á¢¼Ó ¿©ºÎ autoSelect=ÀÚµ¿ Á¢¼Ó ¿©ºÎ localeInfo=(ymir) LC_Ymir ÀÏ°æ¿ì ymir·Î ÀÛµ¿. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é korea·Î ÀÛµ¿ 0707 18:57:22269 :: 0707 18:57:22271 :: ---------------------------------------------------------------------------- DELETE CURTAIN0707 18:57:22271 :: 0707 18:58:25671 :: Failed to connect. 0707 18:58:15105 :: HANDSHAKE RECV 6480379 0 0707 18:58:15105 :: HANDSHAKE SEND 6480379 0707 18:58:15386 :: HANDSHAKE RECV 6480738 179 0707 18:58:15386 :: HANDSHAKE SEND 6481096 0707 18:58:15732 :: HANDSHAKE RECV 6481058 160 0707 18:58:15732 :: HANDSHAKE SEND 6481378 0707 18:58:16227 :: KEY_AGREEMENT RECV 256 0707 18:58:16266 :: KEY_AGREEMENT SEND 256 0707 18:58:16574 :: KEY_AGREEMENT_COMPLETED RECV 0707 18:59:36786 :: HANDSHAKE RECV 6502079 0 0707 18:59:36786 :: HANDSHAKE SEND 6502079 0707 18:59:37133 :: HANDSHAKE RECV 6502438 179 0707 18:59:37133 :: HANDSHAKE SEND 6502796 0707 18:59:37677 :: KEY_AGREEMENT RECV 256 0707 18:59:37715 :: KEY_AGREEMENT SEND 256 0707 18:59:37991 :: KEY_AGREEMENT_COMPLETED RECV 0707 18:59:42231 :: Succeed connecting. 0707 18:59:42545 :: 0707 18:59:42545 :: ## Network - Hand Shake Phase ## 0707 18:59:42545 :: 0707 18:59:42560 :: HANDSHAKE RECV 6504859 0 0707 18:59:42560 :: HANDSHAKE SEND 6504859 0707 18:59:42941 :: HANDSHAKE RECV 6505219 180 0707 18:59:42941 :: HANDSHAKE SEND 6505579 0707 18:59:43502 :: KEY_AGREEMENT RECV 256 0707 18:59:43549 :: KEY_AGREEMENT SEND 256 0707 18:59:43799 :: KEY_AGREEMENT_COMPLETED RECV 0707 18:59:44129 :: 0707 18:59:44129 :: ## Network - Login Phase ## 0707 18:59:44129 :: 0707 18:59:44987 :: 0707 18:59:44987 :: ## Network - Select Phase ## 0707 18:59:44987 :: 0707 18:59:45657 :: CPythonNonPlayer::LoadNonPlayerData: locale/de/mob_proto, sizeof(TMobTable)=255 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:158 Line:56] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:159 Line:57] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:160 Line:58] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:161 Line:59] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:162 Line:60] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:256 Line:61] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:257 Line:62] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:258 Line:63] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:259 Line:64] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:260 Line:65] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:261 Line:66] 0707 18:59:45669 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:262 Line:67] 0707 18:59:45805 :: ---------------------------------------------------------------------------- CLOSE LOGIN WINDOW 0707 18:59:45805 :: 0707 18:59:45806 :: ===== Load Script File : locale/de/ui/selectcharacterwindow.py0707 18:59:45806 :: 0707 18:59:46161 :: ===== Load Script File : uiscriptquestiondialog.py0707 18:59:46161 :: 0707 18:59:46165 :: DeleteCharacterInstance: no vid by 0 0707 18:59:46165 :: DeleteCharacterInstance: no vid by 1 0707 18:59:46165 :: DeleteCharacterInstance: no vid by 2 0707 18:59:46165 :: DeleteCharacterInstance: no vid by 3 0707 18:59:46165 :: SelectCharacterInstance: no vid by 0 0707 18:59:46798 :: DeleteCharacterInstance: no vid by 1 0707 18:59:46799 :: DeleteCharacterInstance: no vid by 2 0707 18:59:46799 :: DeleteCharacterInstance: no vid by 3 0707 18:59:46799 :: SelectCharacterInstance: no vid by 0 0707 18:59:46802 :: DeleteCharacterInstance: no vid by 1 0707 18:59:46803 :: DeleteCharacterInstance: no vid by 2 0707 18:59:46803 :: DeleteCharacterInstance: no vid by 3 0707 18:59:46803 :: SelectCharacterInstance: no vid by 0 0707 18:59:46806 :: ---------------------------------------------------------------------------- DELETE LOGIN WINDOW0707 18:59:46806 :: 0707 18:59:01657 :: 0707 18:59:01657 :: ## Network - OffLine Phase ## 0707 18:59:01657 :: 0707 18:59:01657 :: NEW LOGIN WINDOW ----------------------------------------------------------------------------0707 18:59:01657 :: 0707 18:59:01805 :: DeleteCharacterInstance: no vid by 1 0707 18:59:01805 :: DeleteCharacterInstance: no vid by 2 0707 18:59:01805 :: DeleteCharacterInstance: no vid by 3 0707 18:59:01805 :: LOGIN WINDOW OPEN ----------------------------------------------------------------------------0707 18:59:01805 :: 0707 18:59:01805 :: ===== Load Script File : locale/de/ui/LoginWindow.py0707 18:59:01805 :: 0707 18:59:01819 :: ÀÚµ¿ ·Î±×ÀÎÀ» ÇϽ÷Á¸éloginInfo.pyÆÄÀÏÀ» ÀÛ¼ºÇØÁÖ¼¼¿ä ³»¿ë: ================================================================ addr=ÁÖ¼Ò port=Æ÷Æ® id=¾ÆÀ̵ð pwd=ºñ¹Ð¹øÈ£ slot=ij¸¯ÅÍ ¼±Åà À妽º (¾ø°Å³ª -1À̸é ÀÚµ¿ ¼±Åà ¾ÈÇÔ) autoLogin=ÀÚµ¿ Á¢¼Ó ¿©ºÎ autoSelect=ÀÚµ¿ Á¢¼Ó ¿©ºÎ localeInfo=(ymir) LC_Ymir ÀÏ°æ¿ì ymir·Î ÀÛµ¿. ÁöÁ¤ÇÏÁö ¾ÊÀ¸¸é korea·Î ÀÛµ¿ 0707 18:59:01819 :: 0707 18:59:02053 :: Succeed connecting. 0707 19:03:14173 :: HANDSHAKE RECV 6779509 0 0707 19:03:14173 :: HANDSHAKE SEND 6779509 0707 19:03:14585 :: HANDSHAKE RECV 6779868 179 0707 19:03:14585 :: HANDSHAKE SEND 6780226 0707 19:03:15130 :: KEY_AGREEMENT RECV 256 0707 19:03:15187 :: KEY_AGREEMENT SEND 256 0707 19:03:15476 :: KEY_AGREEMENT_COMPLETED RECV 0707 19:03:16681 :: Succeed connecting. 0707 19:03:16994 :: 0707 19:03:16994 :: ## Network - Hand Shake Phase ## 0707 19:03:16994 :: 0707 19:03:17011 :: HANDSHAKE RECV 6779329 0 0707 19:03:17011 :: HANDSHAKE SEND 6779329 0707 19:03:17423 :: HANDSHAKE RECV 6779689 180 0707 19:03:17423 :: HANDSHAKE SEND 6780049 0707 19:03:17935 :: KEY_AGREEMENT RECV 256 0707 19:03:17973 :: KEY_AGREEMENT SEND 256 0707 19:03:18298 :: KEY_AGREEMENT_COMPLETED RECV 0707 19:03:18760 :: 0707 19:03:18760 :: ## Network - Login Phase ## 0707 19:03:18760 :: 0707 19:03:19552 :: 0707 19:03:19552 :: ## Network - Select Phase ## 0707 19:03:19552 :: 0707 19:03:20255 :: CPythonNonPlayer::LoadNonPlayerData: locale/de/mob_proto, sizeof(TMobTable)=255 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:158 Line:56] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:159 Line:57] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:160 Line:58] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:161 Line:59] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:162 Line:60] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:256 Line:61] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:257 Line:62] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:258 Line:63] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:259 Line:64] 0707 19:03:20269 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:260 Line:65] 0707 19:03:20270 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:261 Line:66] 0707 19:03:20270 :: CPythonSkill::RegisterSkillTable(localedeSkillTable.txt) - NOT EXIST SkillDesc [Vnum:262 Line:67] 0707 19:03:20405 :: ---------------------------------------------------------------------------- CLOSE LOGIN WINDOW 0707 19:03:20405 :: 0707 19:03:20405 :: ===== Load Script File : locale/de/ui/selectcharacterwindow.py0707 19:03:20405 :: 0707 19:03:20775 :: ===== Load Script File : uiscriptquestiondialog.py0707 19:03:20775 :: 0707 19:03:20779 :: DeleteCharacterInstance: no vid by 0 0707 19:03:20779 :: DeleteCharacterInstance: no vid by 1 0707 19:03:20779 :: DeleteCharacterInstance: no vid by 2 0707 19:03:20779 :: DeleteCharacterInstance: no vid by 3 0707 19:03:20779 :: SelectCharacterInstance: no vid by 0 0707 19:03:21449 :: DeleteCharacterInstance: no vid by 1 0707 19:03:21449 :: DeleteCharacterInstance: no vid by 2 0707 19:03:21449 :: DeleteCharacterInstance: no vid by 3 0707 19:03:21449 :: SelectCharacterInstance: no vid by 0 0707 19:03:21453 :: DeleteCharacterInstance: no vid by 1 0707 19:03:21453 :: DeleteCharacterInstance: no vid by 2 0707 19:03:21453 :: DeleteCharacterInstance: no vid by 3 0707 19:03:21453 :: SelectCharacterInstance: no vid by 0 0707 19:03:21458 :: ---------------------------------------------------------------------------- DELETE LOGIN WINDOW0707 19:03:21458 :: 0707 19:03:22201 :: invalid idx 0 0707 19:03:22201 :: SYSERR: invalid idx 0 0707 19:04:30270 :: Succeed connecting. 0707 19:04:30583 :: 0707 19:04:30583 :: ## Network - Hand Shake Phase ## 0707 19:04:30583 :: 0707 19:04:30600 :: HANDSHAKE RECV 6792909 0 0707 19:04:30600 :: HANDSHAKE SEND 6792909 0707 19:04:30996 :: HANDSHAKE RECV 6793268 179 0707 19:04:30996 :: HANDSHAKE SEND 6793626 0707 19:04:31557 :: KEY_AGREEMENT RECV 256 0707 19:04:31598 :: KEY_AGREEMENT SEND 256 0707 19:04:31870 :: KEY_AGREEMENT_COMPLETED RECV 0707 19:04:32167 :: 0707 19:04:32167 :: ## Network - Login Phase ## 0707 19:04:32167 :: 0707 19:04:32860 :: 0707 19:04:32860 :: ## Network - Select Phase ## 0707 19:04:32860 :: 0707 19:04:32860 :: NEW LOADING WINDOW -------------------------------------------------------------------------------0707 19:04:32860 :: 0707 19:04:33009 :: DeleteCharacterInstance: no vid by 1 0707 19:04:33009 :: DeleteCharacterInstance: no vid by 2 0707 19:04:33009 :: DeleteCharacterInstance: no vid by 3 0707 19:04:33009 :: OPEN LOADING WINDOW -------------------------------------------------------------------------------0707 19:04:33009 :: 0707 19:04:33009 :: ===== Load Script File : locale/de/ui/LoadingWindow.py0707 19:04:33009 :: 0707 19:04:33817 :: 0707 19:04:33817 :: ## Network - Loading Phase ## 0707 19:04:33817 :: 0707 19:04:33911 :: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR 0707 19:04:33911 :: SYSERR: CMapOutdoor::Load - LoadMonsterAreaInfo ERROR 0707 19:04:33982 :: LoadWaterMapFile metin2_map_a1001001water.wtr 2 0707 19:04:33982 :: LoadRawHeightMapFile metin2_map_a1001001height.raw 0707 19:04:33986 :: LoadHeightMap::CalculateNormal 2 ms 0707 19:04:33986 :: LoadAttrMapFile metin2_map_a1001001attr.atr 0707 19:04:33988 :: 2 0707 19:04:33989 :: LoadSplatFile metin2_map_a1001001tile.raw 0707 19:04:34006 :: CTerrain::RAW_AllocateSplats 15 0707 19:04:34008 :: CTerrain::LoadShadowTexture 2 ms 0707 19:04:34008 :: LoadShadowMap metin2_map_a1001001shadowmap.raw 0707 19:04:34010 :: 2 ms 0707 19:04:34012 :: CTerrain::LoadMiniMapTexture 2 ms 0707 19:04:34013 :: CMapOutdoor::LoadTerrain 35 0707 19:04:34449 :: LoadWaterMapFile metin2_map_a1002001water.wtr 1 0707 19:04:34449 :: LoadRawHeightMapFile metin2_map_a1002001height.raw 0707 19:04:34454 :: LoadHeightMap::CalculateNormal 3 ms 0707 19:04:34454 :: LoadAttrMapFile metin2_map_a1002001attr.atr 0707 19:04:34456 :: 2 0707 19:04:34456 :: LoadSplatFile metin2_map_a1002001tile.raw 0707 19:04:34468 :: CTerrain::RAW_AllocateSplats 10 0707 19:04:34470 :: CTerrain::LoadShadowTexture 2 ms 0707 19:04:34471 :: LoadShadowMap metin2_map_a1002001shadowmap.raw 0707 19:04:34473 :: 3 ms 0707 19:04:34475 :: CTerrain::LoadMiniMapTexture 2 ms 0707 19:04:34476 :: CMapOutdoor::LoadTerrain 30 0707 19:04:35091 :: LoadWaterMapFile metin2_map_a1003001water.wtr 2 0707 19:04:35091 :: LoadRawHeightMapFile metin2_map_a1003001height.raw 0707 19:04:35096 :: LoadHeightMap::CalculateNormal 2 ms 0707 19:04:35096 :: LoadAttrMapFile metin2_map_a1003001attr.atr 0707 19:04:35099 :: 3 0707 19:04:35099 :: LoadSplatFile metin2_map_a1003001tile.raw 0707 19:04:35111 :: CTerrain::RAW_AllocateSplats 10 0707 19:04:35113 :: CTerrain::LoadShadowTexture 1 ms 0707 19:04:35113 :: LoadShadowMap metin2_map_a1003001shadowmap.raw 0707 19:04:35115 :: 2 ms 0707 19:04:35117 :: CTerrain::LoadMiniMapTexture 2 ms 0707 19:04:35118 :: CMapOutdoor::LoadTerrain 31 0707 19:04:35224 :: LoadWaterMapFile metin2_map_a1001002water.wtr 2 0707 19:04:35224 :: LoadRawHeightMapFile metin2_map_a1001002height.raw 0707 19:04:35229 :: LoadHeightMap::CalculateNormal 3 ms 0707 19:04:35229 :: LoadAttrMapFile metin2_map_a1001002attr.atr 0707 19:04:35231 :: 2 0707 19:04:35231 :: LoadSplatFile metin2_map_a1001002tile.raw 0707 19:04:35244 :: CTerrain::RAW_AllocateSplats 11 0707 19:04:35246 :: CTerrain::LoadShadowTexture 2 ms 0707 19:04:35246 :: LoadShadowMap metin2_map_a1001002shadowmap.raw 0707 19:04:35247 :: 1 ms 0707 19:04:35250 :: CTerrain::LoadMiniMapTexture 3 ms 0707 19:04:35251 :: CMapOutdoor::LoadTerrain 32 0707 19:04:35390 :: LoadWaterMapFile metin2_map_a1002002water.wtr 2 0707 19:04:35390 :: LoadRawHeightMapFile metin2_map_a1002002height.raw 0707 19:04:35396 :: LoadHeightMap::CalculateNormal 2 ms 0707 19:04:35396 :: LoadAttrMapFile metin2_map_a1002002attr.atr 0707 19:04:35398 :: 2 0707 19:04:35398 :: LoadSplatFile metin2_map_a1002002tile.raw 0707 19:04:35408 :: CTerrain::RAW_AllocateSplats 8 0707 19:04:35411 :: CTerrain::LoadShadowTexture 3 ms 0707 19:04:35411 :: LoadShadowMap metin2_map_a1002002shadowmap.raw 0707 19:04:35413 :: 1 ms 0707 19:04:35414 :: CTerrain::LoadMiniMapTexture 1 ms 0707 19:04:35415 :: CMapOutdoor::LoadTerrain 29 0707 19:04:35655 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0707 19:04:35655 :: SYSERR: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x8000000f, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0707 19:04:36074 :: LoadWaterMapFile metin2_map_a1003002water.wtr 2 0707 19:04:36074 :: LoadRawHeightMapFile metin2_map_a1003002height.raw 0707 19:04:36078 :: LoadHeightMap::CalculateNormal 2 ms 0707 19:04:36078 :: LoadAttrMapFile metin2_map_a1003002attr.atr 0707 19:04:36080 :: 2 0707 19:04:36080 :: LoadSplatFile metin2_map_a1003002tile.raw 0707 19:04:36092 :: CTerrain::RAW_AllocateSplats 10 0707 19:04:36094 :: CTerrain::LoadShadowTexture 2 ms 0707 19:04:36095 :: LoadShadowMap metin2_map_a1003002shadowmap.raw 0707 19:04:36097 :: 2 ms 0707 19:04:36099 :: CTerrain::LoadMiniMapTexture 1 ms 0707 19:04:36099 :: CMapOutdoor::LoadTerrain 29 0707 19:04:36170 :: LoadWaterMapFile metin2_map_a1001003water.wtr 2 0707 19:04:36170 :: LoadRawHeightMapFile metin2_map_a1001003height.raw 0707 19:04:36174 :: LoadHeightMap::CalculateNormal 2 ms 0707 19:04:36174 :: LoadAttrMapFile metin2_map_a1001003attr.atr 0707 19:04:36176 :: 2 0707 19:04:36176 :: LoadSplatFile metin2_map_a1001003tile.raw 0707 19:04:36189 :: CTerrain::RAW_AllocateSplats 10 0707 19:04:36191 :: CTerrain::LoadShadowTexture 2 ms 0707 19:04:36191 :: LoadShadowMap metin2_map_a1001003shadowmap.raw 0707 19:04:36194 :: 3 ms 0707 19:04:36197 :: CTerrain::LoadMiniMapTexture 3 ms 0707 19:04:36198 :: CMapOutdoor::LoadTerrain 32 0707 19:04:36247 :: LoadWaterMapFile metin2_map_a1002003water.wtr 2 0707 19:04:36247 :: LoadRawHeightMapFile metin2_map_a1002003height.raw 0707 19:04:36251 :: LoadHeightMap::CalculateNormal 3 ms 0707 19:04:36251 :: LoadAttrMapFile metin2_map_a1002003attr.atr 0707 19:04:36253 :: 2 0707 19:04:36253 :: LoadSplatFile metin2_map_a1002003tile.raw 0707 19:04:36264 :: CTerrain::RAW_AllocateSplats 9 0707 19:04:36266 :: CTerrain::LoadShadowTexture 2 ms 0707 19:04:36266 :: LoadShadowMap metin2_map_a1002003shadowmap.raw 0707 19:04:36268 :: 2 ms 0707 19:04:36270 :: CTerrain::LoadMiniMapTexture 2 ms 0707 19:04:36271 :: CMapOutdoor::LoadTerrain 28 0707 19:04:36402 :: LoadWaterMapFile metin2_map_a1003003water.wtr 2 0707 19:04:36402 :: LoadRawHeightMapFile metin2_map_a1003003height.raw 0707 19:04:36406 :: LoadHeightMap::CalculateNormal 2 ms 0707 19:04:36406 :: LoadAttrMapFile metin2_map_a1003003attr.atr 0707 19:04:36408 :: 2 0707 19:04:36408 :: LoadSplatFile metin2_map_a1003003tile.raw 0707 19:04:36422 :: CTerrain::RAW_AllocateSplats 12 0707 19:04:36424 :: CTerrain::LoadShadowTexture 2 ms 0707 19:04:36424 :: LoadShadowMap metin2_map_a1003003shadowmap.raw 0707 19:04:36427 :: 3 ms 0707 19:04:36429 :: CTerrain::LoadMiniMapTexture 2 ms 0707 19:04:36431 :: CMapOutdoor::LoadTerrain 33 0707 19:04:36454 :: Update::Load spent 2476 ms 0707 19:04:36729 :: ===== Load Script File : UIScriptCharacterWindow.py0707 19:04:36729 :: 0707 19:04:36871 :: CResource::Load file not exist d:ymir workuigamequestslot_button_01.sub 0707 19:04:36874 :: ===== Load Script File : locale/de/ui/InventoryWindow.py0707 19:04:36874 :: 0707 19:04:36909 :: ===== Load Script File : UIScriptBeltInventoryWindow.py0707 19:04:36909 :: 0707 19:04:36931 :: ===== Load Script File : UIScriptPickMoneyDialog.py0707 19:04:36931 :: 0707 19:04:36938 :: ===== Load Script File : uiscriptquestiondialog2.py0707 19:04:36938 :: 0707 19:04:36942 :: ===== Load Script File : uiscriptrefinedialog.py0707 19:04:36942 :: 0707 19:04:36946 :: ===== Load Script File : uiscriptattachstonedialog.py0707 19:04:36946 :: 0707 19:04:36968 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:36968 :: 0707 19:04:36968 :: 1110707 19:04:36968 :: 0707 19:04:36968 :: 00707 19:04:36968 :: 0707 19:04:36968 :: 00707 19:04:36968 :: 0707 19:04:36968 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:36968 :: 0707 19:04:36968 :: 1120707 19:04:36968 :: 0707 19:04:36968 :: 00707 19:04:36968 :: 0707 19:04:36969 :: 00707 19:04:36969 :: 0707 19:04:36969 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:36969 :: 0707 19:04:36969 :: 1130707 19:04:36969 :: 0707 19:04:36969 :: 00707 19:04:36969 :: 0707 19:04:36969 :: 00707 19:04:36969 :: 0707 19:04:36969 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:36969 :: 0707 19:04:36969 :: 1110707 19:04:36969 :: 0707 19:04:36969 :: 00707 19:04:36969 :: 0707 19:04:36969 :: 00707 19:04:36969 :: 0707 19:04:36969 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:36969 :: 0707 19:04:36969 :: 1120707 19:04:36969 :: 0707 19:04:36969 :: 00707 19:04:36969 :: 0707 19:04:36969 :: 00707 19:04:36970 :: 0707 19:04:36970 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:36970 :: 0707 19:04:36970 :: 1130707 19:04:36970 :: 0707 19:04:36970 :: 00707 19:04:36970 :: 0707 19:04:36970 :: 00707 19:04:36970 :: 0707 19:04:36970 :: ===== Load Script File : locale/de/ui/dragonsoulwindow.py0707 19:04:36970 :: 0707 19:04:37033 :: ===== Load Script File : uiscriptquestiondialog.py0707 19:04:37033 :: 0707 19:04:37037 :: ===== Load Script File : uiscriptquestiondialog2.py0707 19:04:37037 :: 0707 19:04:37041 :: ===== Load Script File : UIScriptPopupDialog.py0707 19:04:37041 :: 0707 19:04:37045 :: ===== Load Script File : locale/de/ui/dragonsoulrefinewindow.py0707 19:04:37045 :: 0707 19:04:37059 :: ===== Load Script File : UIScriptPopupDialog.py0707 19:04:37059 :: 0707 19:04:37114 :: ===== Load Script File : UIScriptAtlasWindow.py0707 19:04:37114 :: 0707 19:04:37118 :: ===== Load Script File : UIScriptSafeboxWindow.py0707 19:04:37118 :: 0707 19:04:37124 :: ===== Load Script File : UIScriptPickMoneyDialog.py0707 19:04:37124 :: 0707 19:04:37129 :: ===== Load Script File : uiscriptpopupdialog.py0707 19:04:37129 :: 0707 19:04:37133 :: ===== Load Script File : uiscriptchangepassworddialog.py0707 19:04:37133 :: 0707 19:04:37143 :: ===== Load Script File : UIScriptMallWindow.py0707 19:04:37143 :: 0707 19:04:37171 :: ===== Load Script File : UIScriptexchangedialog.py0707 19:04:37171 :: 0707 19:04:37181 :: ===== Load Script File : UIScriptPickMoneyDialog.py0707 19:04:37181 :: 0707 19:04:37185 :: ===== Load Script File : uiscriptquestiondialog2.py0707 19:04:37185 :: 0707 19:04:37190 :: ===== Load Script File : uiscriptquestiondialog2.py0707 19:04:37190 :: 0707 19:04:37195 :: ===== Load Script File : UIScriptshopdialog.py0707 19:04:37195 :: 0707 19:04:37200 :: ===== Load Script File : uiscriptrestartdialog.py0707 19:04:37200 :: 0707 19:04:37209 :: ===== Load Script File : locale/de/ui/SystemDialog.py0707 19:04:37209 :: 0707 19:04:37213 :: ===== Load Script File : locale/de/ui/passworddialog.py0707 19:04:37214 :: 0707 19:04:37219 :: ===== Load Script File : UIScriptPrivateShopBuilder.py0707 19:04:37219 :: 0707 19:04:37225 :: ===== Load Script File : locale/de/ui/TaskBar.py0707 19:04:37225 :: 0707 19:04:37372 :: ===== Load Script File : UIScriptMouseButtonWindow.py0707 19:04:37372 :: 0707 19:04:37394 :: ===== Load Script File : UIScriptRightMouseButtonWindow.py0707 19:04:37394 :: 0707 19:04:37403 :: rampage_over_out0707 19:04:37403 :: 0707 19:04:37403 :: ===== Load Script File : locale/de/ui/giftbox.py0707 19:04:37403 :: 0707 19:04:37422 :: ===== Load Script File : locale/de/ui/ExpandedTaskBar.py0707 19:04:37422 :: 0707 19:04:37432 :: ===== Load Script File : locale/de/ui/EnergyBar.py0707 19:04:37432 :: 0707 19:04:37443 :: ===== Load Script File : UIScriptgamewindow.py0707 19:04:37443 :: 0707 19:04:37454 :: ===== Load Script File : UIScriptHelpWindow.py0707 19:04:37454 :: 0707 19:04:37501 :: ===== Load Script File : locale/de/ui/WebWindow.py0707 19:04:37501 :: 0707 19:04:37505 :: ===== Load Script File : UIScriptCubeWindow.py0707 19:04:37505 :: 0707 19:04:37530 :: ===== Load Script File : UIScriptCubeResultWindow.py0707 19:04:37530 :: 0707 19:04:37535 :: ===== Load Script File : UIScriptselectitemwindow.py0707 19:04:37535 :: 0707 19:04:37539 :: ===== Load Script File : UIScriptMiniMap.py0707 19:04:37539 :: 0707 19:04:37567 :: NEW CURTAIN ----------------------------------------------------------------------------0707 19:04:37567 :: 0707 19:04:37713 :: ---------------------------------------------------------------------------- CLOSE LOADING WINDOW0707 19:04:37713 :: 0707 19:04:37715 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37715 :: 0707 19:04:37715 :: 1110707 19:04:37715 :: 0707 19:04:37715 :: 00707 19:04:37715 :: 0707 19:04:37715 :: 00707 19:04:37715 :: 0707 19:04:37715 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37715 :: 0707 19:04:37715 :: 1120707 19:04:37715 :: 0707 19:04:37715 :: 00707 19:04:37715 :: 0707 19:04:37715 :: 00707 19:04:37715 :: 0707 19:04:37715 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37715 :: 0707 19:04:37715 :: 1130707 19:04:37715 :: 0707 19:04:37715 :: 00707 19:04:37715 :: 0707 19:04:37715 :: 00707 19:04:37715 :: 0707 19:04:37716 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37716 :: 0707 19:04:37716 :: 1110707 19:04:37716 :: 0707 19:04:37716 :: 00707 19:04:37716 :: 0707 19:04:37716 :: 00707 19:04:37716 :: 0707 19:04:37716 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37716 :: 0707 19:04:37716 :: 1120707 19:04:37716 :: 0707 19:04:37716 :: 00707 19:04:37716 :: 0707 19:04:37716 :: 00707 19:04:37716 :: 0707 19:04:37717 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37717 :: 0707 19:04:37717 :: 1130707 19:04:37717 :: 0707 19:04:37717 :: 00707 19:04:37717 :: 0707 19:04:37717 :: 00707 19:04:37717 :: 0707 19:04:37718 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37718 :: 0707 19:04:37718 :: 1110707 19:04:37718 :: 0707 19:04:37718 :: 00707 19:04:37718 :: 0707 19:04:37718 :: 00707 19:04:37718 :: 0707 19:04:37718 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37718 :: 0707 19:04:37718 :: 1120707 19:04:37718 :: 0707 19:04:37718 :: 00707 19:04:37718 :: 0707 19:04:37718 :: 00707 19:04:37718 :: 0707 19:04:37718 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:37718 :: 0707 19:04:37718 :: 1130707 19:04:37718 :: 0707 19:04:37718 :: 00707 19:04:37718 :: 0707 19:04:37718 :: 00707 19:04:37718 :: 0707 19:04:37763 :: ---------------------------------------------------------------------------- DELETE LOADING WINDOW0707 19:04:37763 :: 0707 19:04:38076 :: <SkillInfo> 0 / 400, 400 0707 19:04:38095 :: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x80000015, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0707 19:04:38095 :: SYSERR: GRANNY: r:/granny/rt/granny_file_info.cpp(145): File has run-time type tag of 0x80000015, which doesn't match this version of Granny (0x80000010). Automatic conversion will be attempted. 0707 19:04:42128 :: BINARY_NEW_AddAffect0707 19:04:42128 :: 0707 19:04:42128 :: 2150707 19:04:42128 :: 0707 19:04:42128 :: 00707 19:04:42128 :: 0707 19:04:42128 :: 00707 19:04:42128 :: 0707 19:04:42128 :: 50707 19:04:42128 :: 0707 19:04:42128 :: 0707 19:04:42128 :: ## Network - Game Phase ## 0707 19:04:42128 :: 0707 19:04:42136 :: BINARY_NEW_AddAffect0707 19:04:42136 :: 0707 19:04:42136 :: 5000707 19:04:42136 :: 0707 19:04:42136 :: 00707 19:04:42136 :: 0707 19:04:42136 :: 00707 19:04:42136 :: 0707 19:04:42136 :: 2040945490707 19:04:42136 :: 0707 19:04:42136 :: Add affect 5000707 19:04:42136 :: 0707 19:04:42139 :: BINARY_NEW_AddAffect0707 19:04:42139 :: 0707 19:04:42139 :: 5010707 19:04:42139 :: 0707 19:04:42139 :: 00707 19:04:42139 :: 0707 19:04:42139 :: 00707 19:04:42139 :: 0707 19:04:42139 :: 2040945490707 19:04:42139 :: 0707 19:04:42139 :: Add affect 5010707 19:04:42139 :: 0707 19:04:42173 :: BINARY_NEW_AddAffect0707 19:04:42174 :: 0707 19:04:42174 :: 5020707 19:04:42174 :: 0707 19:04:42174 :: 00707 19:04:42174 :: 0707 19:04:42174 :: 00707 19:04:42174 :: 0707 19:04:42174 :: 314700830707 19:04:42174 :: 0707 19:04:42174 :: Add affect 5020707 19:04:42174 :: 0707 19:04:42176 :: BINARY_NEW_AddAffect0707 19:04:42176 :: 0707 19:04:42176 :: 5030707 19:04:42176 :: 0707 19:04:42176 :: 00707 19:04:42176 :: 0707 19:04:42176 :: 00707 19:04:42176 :: 0707 19:04:42176 :: 314700830707 19:04:42176 :: 0707 19:04:42176 :: Add affect 5030707 19:04:42176 :: 0707 19:04:42178 :: BINARY_NEW_AddAffect0707 19:04:42178 :: 0707 19:04:42178 :: 5040707 19:04:42178 :: 0707 19:04:42178 :: 00707 19:04:42178 :: 0707 19:04:42178 :: 00707 19:04:42178 :: 0707 19:04:42178 :: 2040945490707 19:04:42178 :: 0707 19:04:42178 :: Add affect 5040707 19:04:42178 :: 0707 19:04:42181 :: BINARY_NEW_AddAffect0707 19:04:42181 :: 0707 19:04:42181 :: 5050707 19:04:42181 :: 0707 19:04:42181 :: 00707 19:04:42181 :: 0707 19:04:42181 :: 00707 19:04:42181 :: 0707 19:04:42181 :: 2040945490707 19:04:42181 :: 0707 19:04:42181 :: Add affect 5050707 19:04:42181 :: 0707 19:04:42183 :: BINARY_NEW_AddAffect0707 19:04:42183 :: 0707 19:04:42183 :: 5060707 19:04:42183 :: 0707 19:04:42183 :: 00707 19:04:42183 :: 0707 19:04:42183 :: 00707 19:04:42183 :: 0707 19:04:42183 :: 2040945490707 19:04:42183 :: 0707 19:04:42183 :: Add affect 5060707 19:04:42183 :: 0707 19:04:42195 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:04:42195 :: 0707 19:04:42202 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:04:42203 :: 0707 19:04:42247 :: importing from pack uiAchievement 0707 19:04:42255 :: importing from pack interfacemodule 0707 19:04:42275 :: importing from pack uiTaskbar 0707 19:04:42293 :: ===== Load Script File : uiscript/achievementboard.py0707 19:04:42293 :: 0707 19:04:42303 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:04:42303 :: 0707 19:04:42304 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:04:42304 :: 0707 19:04:42304 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:04:42305 :: 0707 19:04:42305 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:04:42305 :: 0707 19:04:42305 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:04:42305 :: 0707 19:04:42306 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:04:42306 :: 0707 19:04:42306 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:04:42306 :: 0707 19:04:42306 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:04:42306 :: 0707 19:04:42317 :: BINARY_NEW_AddAffect0707 19:04:42317 :: 0707 19:04:42317 :: 30707 19:04:42317 :: 0707 19:04:42317 :: 170707 19:04:42317 :: 0707 19:04:42317 :: 620707 19:04:42317 :: 0707 19:04:42317 :: 900707 19:04:42317 :: 0707 19:04:42318 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:04:42318 :: 0707 19:04:42318 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:04:42318 :: 0707 19:04:42329 :: BINARY_NEW_AddAffect0707 19:04:42329 :: 0707 19:04:42329 :: 30707 19:04:42329 :: 0707 19:04:42329 :: 190707 19:04:42329 :: 0707 19:04:42329 :: 250707 19:04:42329 :: 0707 19:04:42329 :: 900707 19:04:42329 :: 0707 19:04:42329 :: BINARY_NEW_AddAffect0707 19:04:42330 :: 0707 19:04:42330 :: 2000707 19:04:42330 :: 0707 19:04:42330 :: 190707 19:04:42330 :: 0707 19:04:42330 :: 600707 19:04:42330 :: 0707 19:04:42330 :: 17220707 19:04:42330 :: 0707 19:04:42378 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:42378 :: 0707 19:04:42378 :: 1110707 19:04:42378 :: 0707 19:04:42378 :: 00707 19:04:42378 :: 0707 19:04:42378 :: 00707 19:04:42378 :: 0707 19:04:42378 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:42378 :: 0707 19:04:42378 :: 1120707 19:04:42378 :: 0707 19:04:42378 :: 00707 19:04:42378 :: 0707 19:04:42378 :: 00707 19:04:42378 :: 0707 19:04:42378 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:42378 :: 0707 19:04:42379 :: 1130707 19:04:42379 :: 0707 19:04:42379 :: 00707 19:04:42379 :: 0707 19:04:42379 :: 00707 19:04:42379 :: 0707 19:04:42379 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:42379 :: 0707 19:04:42379 :: 1110707 19:04:42379 :: 0707 19:04:42379 :: 00707 19:04:42379 :: 0707 19:04:42379 :: 00707 19:04:42379 :: 0707 19:04:42379 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:42379 :: 0707 19:04:42379 :: 1120707 19:04:42379 :: 0707 19:04:42379 :: 00707 19:04:42380 :: 0707 19:04:42380 :: 00707 19:04:42380 :: 0707 19:04:42380 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:42380 :: 0707 19:04:42380 :: 1130707 19:04:42380 :: 0707 19:04:42380 :: 00707 19:04:42380 :: 0707 19:04:42380 :: 00707 19:04:42380 :: 0707 19:04:43038 :: Remove Affect 215 00707 19:04:43038 :: 0707 19:04:43038 :: __RemoveAffect 215 ( No Affect )0707 19:04:43038 :: 0707 19:04:43038 :: __RemoveAffect 27 ( No Affect )0707 19:04:43038 :: 0707 19:04:43039 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:43039 :: 0707 19:04:43039 :: 1110707 19:04:43039 :: 0707 19:04:43039 :: 00707 19:04:43039 :: 0707 19:04:43039 :: 00707 19:04:43039 :: 0707 19:04:43039 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:43039 :: 0707 19:04:43039 :: 1120707 19:04:43039 :: 0707 19:04:43039 :: 00707 19:04:43039 :: 0707 19:04:43039 :: 00707 19:04:43039 :: 0707 19:04:43039 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:43039 :: 0707 19:04:43039 :: 1130707 19:04:43039 :: 0707 19:04:43039 :: 00707 19:04:43039 :: 0707 19:04:43039 :: 00707 19:04:43039 :: 0707 19:04:43040 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:43040 :: 0707 19:04:43040 :: 1110707 19:04:43040 :: 0707 19:04:43040 :: 00707 19:04:43040 :: 0707 19:04:43040 :: 00707 19:04:43040 :: 0707 19:04:43040 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:43040 :: 0707 19:04:43040 :: 1120707 19:04:43040 :: 0707 19:04:43040 :: 00707 19:04:43040 :: 0707 19:04:43040 :: 00707 19:04:43040 :: 0707 19:04:43040 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:43040 :: 0707 19:04:43040 :: 1130707 19:04:43040 :: 0707 19:04:43040 :: 00707 19:04:43040 :: 0707 19:04:43040 :: 00707 19:04:43040 :: 0707 19:04:01914 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:01914 :: 0707 19:04:01914 :: 1110707 19:04:01914 :: 0707 19:04:01914 :: 00707 19:04:01914 :: 0707 19:04:01914 :: 00707 19:04:01914 :: 0707 19:04:01914 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:01914 :: 0707 19:04:01914 :: 1120707 19:04:01914 :: 0707 19:04:01914 :: 00707 19:04:01914 :: 0707 19:04:01914 :: 00707 19:04:01914 :: 0707 19:04:01915 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:01915 :: 0707 19:04:01915 :: 1130707 19:04:01915 :: 0707 19:04:01915 :: 00707 19:04:01915 :: 0707 19:04:01915 :: 00707 19:04:01915 :: 0707 19:04:01915 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:01915 :: 0707 19:04:01915 :: 1110707 19:04:01915 :: 0707 19:04:01915 :: 00707 19:04:01915 :: 0707 19:04:01915 :: 00707 19:04:01915 :: 0707 19:04:01915 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:01915 :: 0707 19:04:01915 :: 1120707 19:04:01915 :: 0707 19:04:01916 :: 00707 19:04:01916 :: 0707 19:04:01916 :: 00707 19:04:01916 :: 0707 19:04:01916 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:04:01916 :: 0707 19:04:01916 :: 1130707 19:04:01916 :: 0707 19:04:01916 :: 00707 19:04:01916 :: 0707 19:04:01916 :: 00707 19:04:01916 :: 0707 19:05:01991 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:01991 :: 0707 19:05:01991 :: 1110707 19:05:01991 :: 0707 19:05:01991 :: 00707 19:05:01991 :: 0707 19:05:01991 :: 00707 19:05:01991 :: 0707 19:05:01991 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:01991 :: 0707 19:05:01991 :: 1120707 19:05:01991 :: 0707 19:05:01992 :: 00707 19:05:01992 :: 0707 19:05:01992 :: 00707 19:05:01992 :: 0707 19:05:01992 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:01992 :: 0707 19:05:01992 :: 1130707 19:05:01992 :: 0707 19:05:01992 :: 00707 19:05:01992 :: 0707 19:05:01992 :: 00707 19:05:01992 :: 0707 19:05:01992 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:01992 :: 0707 19:05:01992 :: 1110707 19:05:01992 :: 0707 19:05:01992 :: 00707 19:05:01992 :: 0707 19:05:01992 :: 00707 19:05:01993 :: 0707 19:05:01993 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:01993 :: 0707 19:05:01993 :: 1120707 19:05:01993 :: 0707 19:05:01993 :: 00707 19:05:01993 :: 0707 19:05:01993 :: 00707 19:05:01993 :: 0707 19:05:01993 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:01993 :: 0707 19:05:01993 :: 1130707 19:05:01993 :: 0707 19:05:01993 :: 00707 19:05:01993 :: 0707 19:05:01993 :: 00707 19:05:01993 :: 0707 19:05:08129 :: Remove Affect 3 170707 19:05:08129 :: 0707 19:05:08129 :: __RemoveAffect 3 ( No Affect )0707 19:05:08129 :: 0707 19:05:08145 :: Remove Affect 3 190707 19:05:08145 :: 0707 19:05:08145 :: __RemoveAffect 3 ( No Affect )0707 19:05:08145 :: 0707 19:05:08145 :: __RemoveAffect 14 ( Affect )0707 19:05:08145 :: 0707 19:05:08442 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:08442 :: 0707 19:05:08442 :: 1110707 19:05:08442 :: 0707 19:05:08442 :: 00707 19:05:08443 :: 0707 19:05:08443 :: 00707 19:05:08443 :: 0707 19:05:08443 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:08443 :: 0707 19:05:08443 :: 1120707 19:05:08443 :: 0707 19:05:08443 :: 00707 19:05:08443 :: 0707 19:05:08443 :: 00707 19:05:08443 :: 0707 19:05:08443 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:08443 :: 0707 19:05:08443 :: 1130707 19:05:08443 :: 0707 19:05:08443 :: 00707 19:05:08443 :: 0707 19:05:08443 :: 00707 19:05:08443 :: 0707 19:05:08443 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:08443 :: 0707 19:05:08444 :: 1110707 19:05:08444 :: 0707 19:05:08444 :: 00707 19:05:08444 :: 0707 19:05:08444 :: 00707 19:05:08444 :: 0707 19:05:08444 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:08444 :: 0707 19:05:08444 :: 1120707 19:05:08444 :: 0707 19:05:08444 :: 00707 19:05:08444 :: 0707 19:05:08444 :: 00707 19:05:08444 :: 0707 19:05:08444 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:05:08444 :: 0707 19:05:08444 :: 1130707 19:05:08444 :: 0707 19:05:08444 :: 00707 19:05:08444 :: 0707 19:05:08444 :: 00707 19:05:08444 :: 0707 19:06:31278 :: SendOnClickPacket 0707 19:06:31922 :: ===== Load Script File : uiscript/questdialog.py0707 19:06:31922 :: 0707 19:06:31926 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:06:31926 :: 0707 19:06:31926 :: Is Opening Belt Inven?? 0707 19:06:31926 :: 0707 19:06:31926 :: 00707 19:06:31926 :: 0707 19:06:32978 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:06:32978 :: 0707 19:06:33324 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33341 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33357 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33374 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33390 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33407 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33423 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33440 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33456 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33473 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33489 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33506 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33522 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33539 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33555 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33572 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33588 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33605 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33621 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33638 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33654 :: CPythonNetworkStream::CheckPacket - Not enough dynamic packet size: header 38 packet size: 1728 0707 19:06:33748 :: ===== Load Script File : uiscriptquestdialog.py0707 19:06:33748 :: 0707 19:06:33752 :: NEW EVENT CURTAIN ----------------------------------------------------------------------------0707 19:06:33752 :: 0707 19:06:33752 :: Is Opening Belt Inven?? 0707 19:06:33752 :: 0707 19:06:33752 :: 00707 19:06:33752 :: 0707 19:06:33756 :: !! PARSING ERROR - Strange Command : ADM 0707 19:06:35403 :: ---------------------------------------------------------------------------- DELETE EVENT CURTAIN0707 19:06:35403 :: 0707 19:06:38194 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38194 :: 0707 19:06:38194 :: 1110707 19:06:38194 :: 0707 19:06:38194 :: 00707 19:06:38194 :: 0707 19:06:38194 :: 00707 19:06:38194 :: 0707 19:06:38194 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38194 :: 0707 19:06:38194 :: 1120707 19:06:38194 :: 0707 19:06:38194 :: 00707 19:06:38194 :: 0707 19:06:38194 :: 00707 19:06:38194 :: 0707 19:06:38194 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38194 :: 0707 19:06:38194 :: 1130707 19:06:38194 :: 0707 19:06:38194 :: 00707 19:06:38194 :: 0707 19:06:38195 :: 00707 19:06:38195 :: 0707 19:06:38523 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38523 :: 0707 19:06:38523 :: 1110707 19:06:38523 :: 0707 19:06:38523 :: 00707 19:06:38523 :: 0707 19:06:38523 :: 00707 19:06:38523 :: 0707 19:06:38523 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38523 :: 0707 19:06:38523 :: 1120707 19:06:38523 :: 0707 19:06:38523 :: 00707 19:06:38523 :: 0707 19:06:38523 :: 00707 19:06:38523 :: 0707 19:06:38523 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38523 :: 0707 19:06:38523 :: 1130707 19:06:38523 :: 0707 19:06:38523 :: 00707 19:06:38523 :: 0707 19:06:38523 :: 00707 19:06:38523 :: 0707 19:06:38524 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38524 :: 0707 19:06:38524 :: 1110707 19:06:38524 :: 0707 19:06:38524 :: 00707 19:06:38524 :: 0707 19:06:38524 :: 00707 19:06:38524 :: 0707 19:06:38524 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38524 :: 0707 19:06:38524 :: 1120707 19:06:38524 :: 0707 19:06:38524 :: 00707 19:06:38524 :: 0707 19:06:38524 :: 00707 19:06:38524 :: 0707 19:06:38524 :: ENABLE_NEW_EQUIPMENT_SYSTEM0707 19:06:38524 :: 0707 19:06:38524 :: 1130707 19:06:38524 :: 0707 19:06:38524 :: 00707 19:06:38524 :: 0707 19:06:38524 :: 00707 19:06:38524 :: 0707 19:06:42762 :: Is Opening Belt Inven?? 0707 19:06:42762 :: 0707 19:06:42762 :: 00707 19:06:42762 :: the rest is clean ..
  8. Can anyone help me with a bug in the game 40250. Actually I do not know if it's the same game, but whenever I try to move an iten from one slot to another he is in the same slot.
×
×
  • Create New...

Important Information

Terms of Use / Privacy Policy / Guidelines / We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.