Beiträge von ReMDa
-
-
hello guys
i have problem in invintory
when i use item wweapon or any thing
It does not appear in the list above, although it appears on the character
Bitte melden Sie sich an, um diesen Link zu sehen.
ZitatCode- syserr
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x04A797D0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x04A796B0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x052350D0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05235550>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05235570>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x052355D0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x052355F0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05235630>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05235650>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05235670>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x052356B0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x052357D0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x052357F0>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x05235810>> ignored
- Exception AttributeError: "'NoneType' object has no attribute '__del__'" in <bound method NumberLine.__del__ of <ui.NumberLine object at 0x05235830>> ignored
- Exception TypeError: "'NoneType' object is not callable" in <bound method CursorImage.__del__ of <mouseModule.CursorImage object at 0x04A798B0>> ignored
- close failed in file object destructor:
- sys.excepthook is missing
- lost sys.stderr
-
how i can install packet ?
-
hi all
when i try to make compile i got this error
Bitte melden Sie sich an, um diesen Link zu sehen.
-
fixed ..
from paythonguild.cpp.. -
i have problem in uiguild
Code- import app
- import ui
- import guild
- import haiesnet as net
- import wndMgr
- import grp
- import grpText
- import uiPickMoney
- import localeInfo
- import player
- import skill
- import mouseModule
- import uiUploadMark
- import uiCommon
- import uiToolTip
- import playerSettingModule
- import constInfo
- import background
- import miniMap
- import chr
- import uiScriptLocale
- from _weakref import proxy
- DISABLE_GUILD_SKILL = False
- DISABLE_DECLARE_WAR = False
- def NumberToMoneyString(n):
- return localeInfo.NumberToMoneyString(n)
- if (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/br"):
- def NumberToMoneyString(n):
- if n <= 0 :
- return "0"
- return "%s" % (','.join([ i-3<0 and str(n)[:i] or str(n)[i-3:i] for i in range(len(str(n))%3, len(str(n))+1, 3) if i ]))
- MATERIAL_STONE_INDEX = 0
- MATERIAL_LOG_INDEX = 1
- MATERIAL_PLYWOOD_INDEX = 2
- MATERIAL_STONE_ID = 90010
- MATERIAL_LOG_ID = 90011
- MATERIAL_PLYWOOD_ID = 90012
- BUILDING_DATA_LIST = []
- def GetGVGKey(srcGuildID, dstGuildID):
- minID = min(srcGuildID, dstGuildID)
- maxID = max(srcGuildID, dstGuildID)
- return minID*1000 + maxID
- def unsigned32(n):
- return n & 0xFFFFFFFFL
- class DeclareGuildWarDialog(ui.ScriptWindow):
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.type=0
- self.__CreateDialog()
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def Open(self):
- self.inputValue.SetFocus()
- self.SetCenterPosition()
- self.SetTop()
- self.Show()
- def Close(self):
- self.ClearDictionary()
- self.board = None
- self.acceptButton = None
- self.cancelButton = None
- self.inputSlot = None
- self.inputValue = None
- self.Hide()
- def __CreateDialog(self):
- try:
- pyScrLoader = ui.PythonScriptLoader()
- if localeInfo.IsVIETNAM() :
- pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "declareguildwardialog.py")
- else:
- pyScrLoader.LoadScriptFile(self, "uiscript/declareguildwardialog.py")
- except:
- import exception
- exception.Abort("DeclareGuildWarWindow.__CreateDialog - LoadScript")
- try:
- getObject = self.GetChild
- self.board = getObject("Board")
- self.typeButtonList=[]
- self.typeButtonList.append(getObject("NormalButton"))
- self.typeButtonList.append(getObject("WarpButton"))
- self.typeButtonList.append(getObject("CTFButton"))
- self.acceptButton = getObject("AcceptButton")
- self.cancelButton = getObject("CancelButton")
- self.inputSlot = getObject("InputSlot")
- self.inputValue = getObject("InputValue")
- gameType=getObject("GameType")
- except:
- import exception
- exception.Abort("DeclareGuildWarWindow.__CreateDialog - BindObject")
- if constInfo.GUILD_WAR_TYPE_SELECT_ENABLE==0:
- gameType.Hide()
- self.typeButtonList[0].SAFE_SetEvent(self.__OnClickTypeButtonNormal)
- self.typeButtonList[1].SAFE_SetEvent(self.__OnClickTypeButtonWarp)
- self.typeButtonList[2].SAFE_SetEvent(self.__OnClickTypeButtonCTF)
- self.typeButtonList[0].SetToolTipWindow(self.__CreateGameTypeToolTip(localeInfo.GUILDWAR_NORMAL_TITLE, localeInfo.GUILDWAR_NORMAL_DESCLIST))
- self.typeButtonList[1].SetToolTipWindow(self.__CreateGameTypeToolTip(localeInfo.GUILDWAR_WARP_TITLE, localeInfo.GUILDWAR_WARP_DESCLIST))
- self.typeButtonList[2].SetToolTipWindow(self.__CreateGameTypeToolTip(localeInfo.GUILDWAR_CTF_TITLE, localeInfo.GUILDWAR_CTF_DESCLIST))
- self.__ClickRadioButton(self.typeButtonList, 0)
- self.SetAcceptEvent(ui.__mem_func__(self.__OnOK))
- self.SetCancelEvent(ui.__mem_func__(self.__OnCancel))
- def __OnOK(self):
- text = self.GetText()
- type = self.GetType()
- if ""==text:
- return
- net.SendChatPacket("/qrfvqdfwar %s %d" % (text, type))
- self.Close()
- return 1
- def __OnCancel(self):
- self.Close()
- return 1
- def __OnClickTypeButtonNormal(self):
- self.__ClickTypeRadioButton(0)
- def __OnClickTypeButtonWarp(self):
- self.__ClickTypeRadioButton(1)
- def __OnClickTypeButtonCTF(self):
- self.__ClickTypeRadioButton(2)
- def __ClickTypeRadioButton(self, type):
- self.__ClickRadioButton(self.typeButtonList, type)
- self.type=type
- def __ClickRadioButton(self, buttonList, buttonIndex):
- try:
- selButton=buttonList[buttonIndex]
- except IndexError:
- return
- for eachButton in buttonList:
- eachButton.SetUp()
- selButton.Down()
- def SetTitle(self, name):
- self.board.SetTitleName(name)
- def SetNumberMode(self):
- self.inputValue.SetNumberMode()
- def SetSecretMode(self):
- self.inputValue.SetSecret()
- def SetFocus(self):
- self.inputValue.SetFocus()
- def SetMaxLength(self, length):
- width = length * 6 + 10
- self.inputValue.SetMax(length)
- self.SetSlotWidth(width)
- self.SetBoardWidth(max(width + 50, 160))
- def SetSlotWidth(self, width):
- self.inputSlot.SetSize(width, self.inputSlot.GetHeight())
- self.inputValue.SetSize(width, self.inputValue.GetHeight())
- def SetBoardWidth(self, width):
- self.board.SetSize(max(width + 50, 160), self.GetHeight())
- self.SetSize(max(width + 50, 160), self.GetHeight())
- self.UpdateRect()
- def SetAcceptEvent(self, event):
- self.acceptButton.SetEvent(event)
- self.inputValue.OnIMEReturn = event
- def SetCancelEvent(self, event):
- self.board.SetCloseEvent(event)
- self.cancelButton.SetEvent(event)
- self.inputValue.OnPressEscapeKey = event
- def GetType(self):
- return self.type
- def GetText(self):
- return self.inputValue.GetText()
- def __CreateGameTypeToolTip(self, title, descList):
- toolTip = uiToolTip.ToolTip()
- toolTip.SetTitle(title)
- toolTip.AppendSpace(5)
- for desc in descList:
- toolTip.AutoAppendTextLine(desc)
- toolTip.AlignHorizonalCenter()
- return toolTip
- class AcceptGuildWarDialog(ui.ScriptWindow):
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.type=0
- self.__CreateDialog()
- def __del__(self):
- print "---------------------------------------------------------------------------- DELETE AcceptGuildWarDialog"
- ui.ScriptWindow.__del__(self)
- def Open(self, guildName, warType):
- self.guildName=guildName
- self.warType=warType
- self.__ClickSelectedTypeRadioButton()
- self.inputValue.SetText(guildName)
- self.SetCenterPosition()
- self.SetTop()
- self.Show()
- def GetGuildName(self):
- return self.guildName
- def Close(self):
- self.ClearDictionary()
- self.board = None
- self.acceptButton = None
- self.cancelButton = None
- self.inputSlot = None
- self.inputValue = None
- self.Hide()
- def __ClickSelectedTypeRadioButton(self):
- self.__ClickTypeRadioButton(self.warType)
- def __CreateDialog(self):
- try:
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, "uiscript/acceptguildwardialog.py")
- except:
- import exception
- exception.Abort("DeclareGuildWarWindow.__CreateDialog - LoadScript")
- try:
- getObject = self.GetChild
- self.board = getObject("Board")
- self.typeButtonList=[]
- self.typeButtonList.append(getObject("NormalButton"))
- self.typeButtonList.append(getObject("WarpButton"))
- self.typeButtonList.append(getObject("CTFButton"))
- self.acceptButton = getObject("AcceptButton")
- self.cancelButton = getObject("CancelButton")
- self.inputSlot = getObject("InputSlot")
- self.inputValue = getObject("InputValue")
- gameType=getObject("GameType")
- except:
- import exception
- exception.Abort("DeclareGuildWarWindow.__CreateDialog - BindObject")
- if constInfo.GUILD_WAR_TYPE_SELECT_ENABLE==0:
- gameType.Hide()
- self.typeButtonList[0].SAFE_SetEvent(self.__OnClickTypeButtonNormal)
- self.typeButtonList[1].SAFE_SetEvent(self.__OnClickTypeButtonWarp)
- self.typeButtonList[2].SAFE_SetEvent(self.__OnClickTypeButtonCTF)
- self.typeButtonList[0].SetToolTipWindow(self.__CreateGameTypeToolTip(localeInfo.GUILDWAR_NORMAL_TITLE, localeInfo.GUILDWAR_NORMAL_DESCLIST))
- self.typeButtonList[1].SetToolTipWindow(self.__CreateGameTypeToolTip(localeInfo.GUILDWAR_WARP_TITLE, localeInfo.GUILDWAR_WARP_DESCLIST))
- self.typeButtonList[2].SetToolTipWindow(self.__CreateGameTypeToolTip(localeInfo.GUILDWAR_CTF_TITLE, localeInfo.GUILDWAR_CTF_DESCLIST))
- self.__ClickRadioButton(self.typeButtonList, 0)
- def __OnClickTypeButtonNormal(self):
- self.__ClickSelectedTypeRadioButton()
- def __OnClickTypeButtonWarp(self):
- self.__ClickSelectedTypeRadioButton()
- def __OnClickTypeButtonCTF(self):
- self.__ClickSelectedTypeRadioButton()
- def __ClickTypeRadioButton(self, type):
- self.__ClickRadioButton(self.typeButtonList, type)
- self.type=type
- def __ClickRadioButton(self, buttonList, buttonIndex):
- try:
- selButton=buttonList[buttonIndex]
- except IndexError:
- return
- for eachButton in buttonList:
- eachButton.SetUp()
- selButton.Down()
- def SetTitle(self, name):
- self.board.SetTitleName(name)
- def SetNumberMode(self):
- self.inputValue.SetNumberMode()
- def SetSecretMode(self):
- self.inputValue.SetSecret()
- def SetFocus(self):
- self.inputValue.SetFocus()
- def SetMaxLength(self, length):
- width = length * 6 + 10
- self.inputValue.SetMax(length)
- self.SetSlotWidth(width)
- self.SetBoardWidth(max(width + 50, 160))
- def SetSlotWidth(self, width):
- self.inputSlot.SetSize(width, self.inputSlot.GetHeight())
- self.inputValue.SetSize(width, self.inputValue.GetHeight())
- def SetBoardWidth(self, width):
- self.board.SetSize(max(width + 50, 160), self.GetHeight())
- self.SetSize(max(width + 50, 160), self.GetHeight())
- self.UpdateRect()
- def SAFE_SetAcceptEvent(self, event):
- self.SetAcceptEvent(ui.__mem_func__(event))
- def SAFE_SetCancelEvent(self, event):
- self.SetCancelEvent(ui.__mem_func__(event))
- def SetAcceptEvent(self, event):
- self.acceptButton.SetEvent(event)
- self.inputValue.OnIMEReturn = event
- def SetCancelEvent(self, event):
- self.board.SetCloseEvent(event)
- self.cancelButton.SetEvent(event)
- self.inputValue.OnPressEscapeKey = event
- def GetType(self):
- return self.type
- def GetText(self):
- return self.inputValue.GetText()
- def __CreateGameTypeToolTip(self, title, descList):
- toolTip = uiToolTip.ToolTip()
- toolTip.SetTitle(title)
- toolTip.AppendSpace(5)
- for desc in descList:
- toolTip.AutoAppendTextLine(desc)
- toolTip.AlignHorizonalCenter()
- return toolTip
- class GuildWarScoreBoard(ui.ThinBoard):
- def __init__(self):
- ui.ThinBoard.__init__(self)
- self.Initialize()
- def __del__(self):
- ui.ThinBoard.__del__(self)
- def Initialize(self):
- self.allyGuildID = 0
- self.enemyGuildID = 0
- self.allyDataDict = {}
- self.enemyDataDict = {}
- def Open(self, allyGuildID, enemyGuildID):
- self.allyGuildID = allyGuildID
- self.enemyGuildID = enemyGuildID
- self.SetPosition(120, wndMgr.GetScreenHeight() - 550)
- mark = ui.MarkBox()
- mark.SetParent(self)
- mark.SetIndex(allyGuildID)
- mark.SetPosition(10, 10 + 18*0)
- mark.Show()
- scoreText = ui.TextLine()
- scoreText.SetParent(self)
- scoreText.SetPosition(10, 10 + 18*0)
- scoreText.SetHorizontalAlignRight()
- scoreText.Show()
- self.allyDataDict["NAME"] = guild.GetGuildName(allyGuildID)
- self.allyDataDict["SCORE"] = 0
- self.allyDataDict["MEMBER_COUNT"] = -1
- self.allyDataDict["MARK"] = mark
- self.allyDataDict["TEXT"] = scoreText
- mark = ui.MarkBox()
- mark.SetParent(self)
- mark.SetIndex(enemyGuildID)
- mark.SetPosition(10, 10 + 18*1)
- mark.Show()
- scoreText = ui.TextLine()
- scoreText.SetParent(self)
- scoreText.SetPosition(10, 10 + 18*1)
- scoreText.SetHorizontalAlignRight()
- scoreText.Show()
- self.enemyDataDict["NAME"] = guild.GetGuildName(enemyGuildID)
- self.enemyDataDict["SCORE"] = 0
- self.enemyDataDict["MEMBER_COUNT"] = -1
- self.enemyDataDict["MARK"] = mark
- self.enemyDataDict["TEXT"] = scoreText
- self.__RefreshName()
- self.Show()
- def __GetDataDict(self, ID):
- if self.allyGuildID == ID:
- return self.allyDataDict
- if self.enemyGuildID == ID:
- return self.enemyDataDict
- return None
- def SetScore(self, gainGuildID, opponetGuildID, point):
- dataDict = self.__GetDataDict(gainGuildID)
- if not dataDict:
- return
- dataDict["SCORE"] = point
- self.__RefreshName()
- def UpdateMemberCount(self, guildID1, memberCount1, guildID2, memberCount2):
- dataDict1 = self.__GetDataDict(guildID1)
- dataDict2 = self.__GetDataDict(guildID2)
- if dataDict1:
- dataDict1["MEMBER_COUNT"] = memberCount1
- if dataDict2:
- dataDict2["MEMBER_COUNT"] = memberCount2
- self.__RefreshName()
- def __RefreshName(self):
- nameMaxLen = max(len(self.allyDataDict["NAME"]), len(self.enemyDataDict["NAME"]))
- if -1 == self.allyDataDict["MEMBER_COUNT"] or -1 == self.enemyDataDict["MEMBER_COUNT"]:
- self.SetSize(30+nameMaxLen*6+8*5, 50)
- self.allyDataDict["TEXT"].SetText("%s %d" % (self.allyDataDict["NAME"], self.allyDataDict["SCORE"]))
- self.enemyDataDict["TEXT"].SetText("%s %d" % (self.enemyDataDict["NAME"], self.enemyDataDict["SCORE"]))
- else:
- self.SetSize(30+nameMaxLen*6+8*5+15, 50)
- self.allyDataDict["TEXT"].SetText("%s(%d) %d" % (self.allyDataDict["NAME"], self.allyDataDict["MEMBER_COUNT"], self.allyDataDict["SCORE"]))
- self.enemyDataDict["TEXT"].SetText("%s(%d) %d" % (self.enemyDataDict["NAME"], self.enemyDataDict["MEMBER_COUNT"], self.enemyDataDict["SCORE"]))
- class MouseReflector(ui.Window):
- def __init__(self, parent):
- ui.Window.__init__(self)
- self.SetParent(parent)
- self.AddFlag("not_pick")
- self.width = self.height = 0
- self.isDown = False
- def Down(self):
- self.isDown = True
- def Up(self):
- self.isDown = False
- def OnRender(self):
- if self.isDown:
- grp.SetColor(ui.WHITE_COLOR)
- else:
- grp.SetColor(ui.HALF_WHITE_COLOR)
- x, y = self.GetGlobalPosition()
- grp.RenderBar(x+2, y+2, self.GetWidth()-4, self.GetHeight()-4)
- class EditableTextSlot(ui.ImageBox):
- def __init__(self, parent, x, y):
- ui.ImageBox.__init__(self)
- self.SetParent(parent)
- self.SetPosition(x, y)
- self.LoadImage("d:/ymir work/ui/public/Parameter_Slot_02.sub")
- self.mouseReflector = MouseReflector(self)
- self.mouseReflector.SetSize(self.GetWidth(), self.GetHeight())
- self.Enable = True
- self.textLine = ui.MakeTextLine(self)
- self.event = lambda *arg: None
- self.arg = 0
- self.Show()
- self.mouseReflector.UpdateRect()
- def __del__(self):
- ui.ImageBox.__del__(self)
- def SetText(self, text):
- self.textLine.SetText(text)
- def SetEvent(self, event, arg):
- self.event = event
- self.arg = arg
- def Disable(self):
- self.Enable = False
- def OnMouseOverIn(self):
- if not self.Enable:
- return
- self.mouseReflector.Show()
- def OnMouseOverOut(self):
- if not self.Enable:
- return
- self.mouseReflector.Hide()
- def OnMouseLeftButtonDown(self):
- if not self.Enable:
- return
- self.mouseReflector.Down()
- def OnMouseLeftButtonUp(self):
- if not self.Enable:
- return
- self.mouseReflector.Up()
- self.event(self.arg)
- class CheckBox(ui.ImageBox):
- def __init__(self, parent, x, y, event, filename = "d:/ymir work/ui/public/Parameter_Slot_01.sub"):
- ui.ImageBox.__init__(self)
- self.SetParent(parent)
- self.SetPosition(x, y)
- self.LoadImage(filename)
- self.mouseReflector = MouseReflector(self)
- self.mouseReflector.SetSize(self.GetWidth(), self.GetHeight())
- image = ui.MakeImageBox(self, "d:/ymir work/ui/public/check_image.sub", 0, 0)
- image.AddFlag("not_pick")
- image.SetWindowHorizontalAlignCenter()
- image.SetWindowVerticalAlignCenter()
- image.Hide()
- self.Enable = True
- self.image = image
- self.event = event
- self.Show()
- self.mouseReflector.UpdateRect()
- def __del__(self):
- ui.ImageBox.__del__(self)
- def SetCheck(self, flag):
- if flag:
- self.image.Show()
- else:
- self.image.Hide()
- def Disable(self):
- self.Enable = False
- def OnMouseOverIn(self):
- if not self.Enable:
- return
- self.mouseReflector.Show()
- def OnMouseOverOut(self):
- if not self.Enable:
- return
- self.mouseReflector.Hide()
- def OnMouseLeftButtonDown(self):
- if not self.Enable:
- return
- self.mouseReflector.Down()
- def OnMouseLeftButtonUp(self):
- if not self.Enable:
- return
- self.mouseReflector.Up()
- self.event()
- class ChangeGradeNameDialog(ui.ScriptWindow):
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- def Open(self):
- self.gradeNameSlot.SetText("")
- self.gradeNameSlot.SetFocus()
- xMouse, yMouse = wndMgr.GetMousePosition()
- self.SetPosition(xMouse - self.GetWidth()/2, yMouse + 50)
- self.SetTop()
- self.Show()
- def Close(self):
- self.gradeNameSlot.KillFocus()
- self.Hide()
- return True
- def SetGradeNumber(self, gradeNumber):
- self.gradeNumber = gradeNumber
- def GetGradeNumber(self):
- return self.gradeNumber
- def GetGradeName(self):
- return self.gradeNameSlot.GetText()
- def OnPressEscapeKey(self):
- self.Close()
- return True
- class CommentSlot(ui.Window):
- TEXT_LIMIT = 35
- def __init__(self):
- ui.Window.__init__(self)
- self.slotImage = ui.MakeImageBox(self, "d:/ymir work/ui/public/Parameter_Slot_06.sub", 0, 0)
- self.slotImage.AddFlag("not_pick")
- self.slotSimpleText = ui.MakeTextLine(self)
- self.slotSimpleText.SetPosition(2, 0)
- ## 13.12.02 ¾ئ¶ّ¼ِء¤
- if localeInfo.IsARABIC() :
- self.slotSimpleText.SetWindowHorizontalAlignCenter()
- self.slotSimpleText.SetHorizontalAlignCenter()
- else :
- self.slotSimpleText.SetWindowHorizontalAlignLeft()
- self.slotSimpleText.SetHorizontalAlignLeft()
- self.bar = ui.SlotBar()
- self.bar.SetParent(self)
- self.bar.AddFlag("not_pick")
- self.bar.Hide()
- self.slotFullText = ui.MakeTextLine(self)
- self.slotFullText.SetPosition(2, 0)
- self.slotFullText.SetWindowHorizontalAlignLeft()
- self.slotFullText.SetHorizontalAlignLeft()
- self.SetSize(self.slotImage.GetWidth(), self.slotImage.GetHeight())
- self.len = 0
- def SetText(self, text):
- self.len = len(text)
- if len(text) > self.TEXT_LIMIT:
- limitText = grpText.GetSplitingTextLine(text, self.TEXT_LIMIT-3, 0)
- self.slotSimpleText.SetText(limitText + "...")
- self.bar.SetSize(self.len * 6 + 5, 17)
- else:
- self.slotSimpleText.SetText(text)
- self.slotFullText.SetText(text)
- self.slotFullText.SetPosition(2, 0)
- self.slotFullText.Hide()
- def OnMouseOverIn(self):
- if self.len > self.TEXT_LIMIT:
- self.bar.Show()
- self.slotFullText.Show()
- def OnMouseOverOut(self):
- if self.len > self.TEXT_LIMIT:
- self.bar.Hide()
- self.slotFullText.Hide()
- class GuildWindow(ui.ScriptWindow):
- JOB_NAME = { 0 : localeInfo.JOB_WARRIOR,
- 1 : localeInfo.JOB_ASSASSIN,
- 2 : localeInfo.JOB_SURA,
- 3 : localeInfo.JOB_SHAMAN, }
- if app.ENABLE_WOLFMAN_CHARACTER:
- JOB_NAME.update({4 : localeInfo.JOB_WOLFMAN,})
- GUILD_SKILL_PASSIVE_SLOT = 0
- GUILD_SKILL_ACTIVE_SLOT = 1
- GUILD_SKILL_AFFECT_SLOT = 2
- GRADE_SLOT_NAME = 0
- GRADE_ADD_MEMBER_AUTHORITY = 1
- GRADE_REMOVE_MEMBER_AUTHORITY = 2
- GRADE_NOTICE_AUTHORITY = 3
- GRADE_SKILL_AUTHORITY = 4
- MEMBER_LINE_COUNT = 13
- class PageWindow(ui.ScriptWindow):
- def __init__(self, parent, filename):
- ui.ScriptWindow.__init__(self)
- self.SetParent(parent)
- self.filename = filename
- def GetScriptFileName(self):
- return self.filename
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.isLoaded=0
- self.__Initialize()
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- print " ==================================== DESTROIED GUILD WINDOW"
- def __Initialize(self):
- self.board = None
- self.pageName = None
- self.tabDict = None
- self.tabButtonDict = None
- self.pickDialog = None
- self.questionDialog = None
- self.offerDialog = None
- self.popupDialog = None
- self.moneyDialog = None
- self.changeGradeNameDialog = None
- self.popup = None
- self.popupMessage = None
- self.commentSlot = None
- self.pageWindow = None
- self.tooltipSkill = None
- self.memberLinePos = 0
- self.enemyGuildNameList = []
- def Open(self):
- self.Show()
- self.SetTop()
- guildID = net.GetGuildID()
- self.largeMarkBox.SetIndex(guildID)
- self.largeMarkBox.SetScale(3)
- def Close(self):
- self.__CloseAllGuildMemberPageGradeComboBox()
- self.offerDialog.Close()
- self.popupDialog.Hide()
- self.changeGradeNameDialog.Hide()
- self.tooltipSkill.Hide()
- self.Hide()
- self.pickDialog = None
- self.questionDialog = None
- self.popup = None
- def Destroy(self):
- self.ClearDictionary()
- if self.offerDialog:
- self.offerDialog.Destroy()
- if self.popupDialog:
- self.popupDialog.ClearDictionary()
- if self.changeGradeNameDialog:
- self.changeGradeNameDialog.ClearDictionary()
- if self.pageWindow:
- for window in self.pageWindow.values():
- window.ClearDictionary()
- self.__Initialize()
- def Show(self):
- if self.isLoaded==0:
- self.isLoaded=1
- self.__LoadWindow()
- self.RefreshGuildInfoPage()
- self.RefreshGuildBoardPage()
- self.RefreshGuildMemberPage()
- if app.ENABLE_STATISTICS_GUILD:
- self.RefreshGuildMemberPage1()
- self.RefreshGuildSkillPage()
- self.RefreshGuildGradePage()
- ui.ScriptWindow.Show(self)
- def __LoadWindow(self):
- global DISABLE_GUILD_SKILL
- try:
- pyScrLoader = ui.PythonScriptLoader()
- pyScrLoader.LoadScriptFile(self, "uiscript/guildwindow.py")
- self.popupDialog = ui.ScriptWindow()
- pyScrLoader.LoadScriptFile(self.popupDialog, "UIScript/PopupDialog.py")
- self.changeGradeNameDialog = ChangeGradeNameDialog()
- pyScrLoader.LoadScriptFile(self.changeGradeNameDialog, "uiscript/changegradenamedialog.py")
- if localeInfo.IsARABIC():
- self.pageWindow = {
- "GUILD_INFO" : self.PageWindow(self, "uiscript/guildwindow_guildinfopage_eu.py"),
- "BOARD" : self.PageWindow(self, "uiscript/guildwindow_boardpage.py"),
- "MEMBER" : self.PageWindow(self, "uiscript/guildwindow_memberpage.py"),
- "BASE_INFO" : self.PageWindow(self, "uiscript/guildwindow_baseinfopage.py"),
- "SKILL" : self.PageWindow(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "guildwindow_guildskillpage.py"),
- "GRADE" : self.PageWindow(self, "uiscript/guildwindow_gradepage.py"),
- }
- elif localeInfo.IsJAPAN() :
- self.pageWindow = {
- "GUILD_INFO" : self.PageWindow(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "guildwindow_guildinfopage.py"),
- "BOARD" : self.PageWindow(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "guildwindow_boardpage.py"),
- "MEMBER" : self.PageWindow(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "guildwindow_memberpage.py"),
- "BASE_INFO" : self.PageWindow(self, "uiscript/guildwindow_baseinfopage.py"),
- "SKILL" : self.PageWindow(self, "uiscript/guildwindow_guildskillpage.py"),
- "GRADE" : self.PageWindow(self, "uiscript/guildwindow_gradepage.py"),
- }
- elif localeInfo.IsVIETNAM() : # ´ظا¥½أ
- self.pageWindow = {
- "GUILD_INFO" : self.PageWindow(self, "uiscript/guildwindow_guildinfopage_eu.py"),
- "BOARD" : self.PageWindow(self, "uiscript/guildwindow_boardpage.py"),
- "MEMBER" : self.PageWindow(self, "uiscript/guildwindow_memberpage.py"),
- "BASE_INFO" : self.PageWindow(self, "uiscript/guildwindow_baseinfopage.py"),
- "SKILL" : self.PageWindow(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "guildwindow_guildskillpage.py"),
- "GRADE" : self.PageWindow(self, "uiscript/guildwindow_gradepage.py"),
- }
- elif localeInfo.IsEUROPE() and not app.GetLocalePath() == "locale/ca" :
- self.pageWindow = {
- "GUILD_INFO" : self.PageWindow(self, "uiscript/guildwindow_guildinfopage_eu.py"),
- "BOARD" : self.PageWindow(self, "uiscript/guildwindow_boardpage.py"),
- "MEMBER" : self.PageWindow(self, "uiscript/guildwindow_memberpage.py"),
- "BASE_INFO" : self.PageWindow(self, "uiscript/guildwindow_baseinfopage.py"),
- "SKILL" : self.PageWindow(self, "uiscript/guildwindow_guildskillpage.py"),
- "GRADE" : self.PageWindow(self, "uiscript/guildwindow_gradepage.py"),
- }
- else:
- self.pageWindow = {
- "GUILD_INFO" : self.PageWindow(self, "uiscript/guildwindow_guildinfopage.py"),
- "BOARD" : self.PageWindow(self, "uiscript/guildwindow_boardpage.py"),
- "MEMBER" : self.PageWindow(self, "uiscript/guildwindow_memberpage.py"),
- "BASE_INFO" : self.PageWindow(self, "uiscript/guildwindow_baseinfopage.py"),
- "SKILL" : self.PageWindow(self, "uiscript/guildwindow_guildskillpage.py"),
- "GRADE" : self.PageWindow(self, "uiscript/guildwindow_gradepage.py"),
- }
- if app.ENABLE_STATISTICS_GUILD:
- self.pageWindow["STATE"] = self.PageWindow(self, "uiscript/guildwindow_statistics.py")
- for window in self.pageWindow.values():
- pyScrLoader.LoadScriptFile(window, window.GetScriptFileName())
- except:
- import exception
- exception.Abort("GuildWindow.__LoadWindow.LoadScript")
- try:
- getObject = self.GetChild
- self.board = getObject("Board")
- self.pageName = {
- "GUILD_INFO" : localeInfo.GUILD_TILE_INFO,
- "BOARD" : localeInfo.GUILD_TILE_BOARD,
- "MEMBER" : localeInfo.GUILD_TILE_MEMBER,
- "BASE_INFO" : localeInfo.GUILD_TILE_BASEINFO,
- "SKILL" : localeInfo.GUILD_TILE_SKILL,
- "GRADE" : localeInfo.GUILD_TILE_GRADE,
- }
- if app.ENABLE_STATISTICS_GUILD:
- self.pageName["STATE"] = localeInfo.GUILD_TILE_STATE
- self.tabDict = {
- "GUILD_INFO" : getObject("Tab_01"),
- "BOARD" : getObject("Tab_02"),
- "MEMBER" : getObject("Tab_03"),
- "BASE_INFO" : getObject("Tab_04"),
- "SKILL" : getObject("Tab_05"),
- "GRADE" : getObject("Tab_06"),
- }
- if app.ENABLE_STATISTICS_GUILD:
- self.tabDict["STATE"] = getObject("Tab_07")
- self.tabButtonDict = {
- "GUILD_INFO" : getObject("Tab_Button_01"),
- "BOARD" : getObject("Tab_Button_02"),
- "MEMBER" : getObject("Tab_Button_03"),
- "BASE_INFO" : getObject("Tab_Button_04"),
- "SKILL" : getObject("Tab_Button_05"),
- "GRADE" : getObject("Tab_Button_06"),
- }
- if app.ENABLE_STATISTICS_GUILD:
- self.tabButtonDict["STATE"] = getObject("Tab_Button_07")
- ## QuestionDialog
- self.popupMessage = self.popupDialog.GetChild("message")
- self.popupDialog.GetChild("accept").SetEvent(ui.__mem_func__(self.popupDialog.Hide))
- ## ChangeGradeName
- self.changeGradeNameDialog.GetChild("AcceptButton").SetEvent(ui.__mem_func__(self.OnChangeGradeName))
- self.changeGradeNameDialog.GetChild("CancelButton").SetEvent(ui.__mem_func__(self.changeGradeNameDialog.Hide))
- self.changeGradeNameDialog.GetChild("Board").SetCloseEvent(ui.__mem_func__(self.changeGradeNameDialog.Hide))
- self.changeGradeNameDialog.gradeNameSlot = self.changeGradeNameDialog.GetChild("GradeNameValue")
- self.changeGradeNameDialog.gradeNameSlot.OnIMEReturn = ui.__mem_func__(self.OnChangeGradeName)
- self.changeGradeNameDialog.gradeNameSlot.OnPressEscapeKey = ui.__mem_func__(self.changeGradeNameDialog.Close)
- ## Comment
- self.commentSlot = self.pageWindow["BOARD"].GetChild("CommentValue")
- self.commentSlot.OnIMEReturn = ui.__mem_func__(self.OnPostComment)
- #self.commentSlot.OnKeyDown = ui.__mem_func__(self.OnKeyDownInBoardPage)
- self.commentSlot.OnKeyDown = lambda key, argSelf=self: argSelf.OnKeyDownInBoardPage(key)
- ## RefreshButton
- self.pageWindow["BOARD"].GetChild("RefreshButton").SetEvent(ui.__mem_func__(self.OnRefreshComments))
- ## ScrollBar
- scrollBar = self.pageWindow["MEMBER"].GetChild("ScrollBar")
- scrollBar.SetScrollEvent(ui.__mem_func__(self.OnScrollMemberLine))
- self.pageWindow["MEMBER"].scrollBar = scrollBar
- if app.ENABLE_STATISTICS_GUILD:
- scrollBar1 = self.pageWindow["STATE"].GetChild("ScrollBar")
- scrollBar1.SetScrollEvent(ui.__mem_func__(self.OnScrollMemberLine1))
- self.pageWindow["STATE"].scrollBar = scrollBar1
- except:
- import exception
- exception.Abort("GuildWindow.__LoadWindow.BindObject")
- self.__MakeInfoPage()
- self.__MakeBoardPage()
- self.__MakeMemberPage()
- if app.ENABLE_STATISTICS_GUILD:
- self.__MakeMemberPage1()
- self.__MakeBaseInfoPage()
- self.__MakeSkillPage()
- self.__MakeGradePage()
- for page in self.pageWindow.values():
- page.UpdateRect()
- for key, btn in self.tabButtonDict.items():
- btn.SetEvent(self.SelectPage, key)
- self.tabButtonDict["BASE_INFO"].Disable()
- if DISABLE_GUILD_SKILL:
- self.tabButtonDict["SKILL"].Disable()
- self.board.SetCloseEvent(ui.__mem_func__(self.Close))
- self.board.SetTitleColor(0xffffffff)
- self.SelectPage("GUILD_INFO")
- self.offerDialog = uiPickMoney.PickMoneyDialog()
- self.offerDialog.LoadDialog()
- self.offerDialog.SetMax(9)
- self.offerDialog.SetTitleName(localeInfo.GUILD_OFFER_EXP)
- self.offerDialog.SetAcceptEvent(ui.__mem_func__(self.OnOffer))
- def __MakeInfoPage(self):
- page = self.pageWindow["GUILD_INFO"]
- try:
- page.nameSlot = page.GetChild("GuildNameValue")
- page.masterNameSlot = page.GetChild("GuildMasterNameValue")
- page.guildLevelSlot = page.GetChild("GuildLevelValue")
- page.curExpSlot = page.GetChild("CurrentExperienceValue")
- page.lastExpSlot = page.GetChild("LastExperienceValue")
- page.memberCountSlot = page.GetChild("GuildMemberCountValue")
- page.levelAverageSlot = page.GetChild("GuildMemberLevelAverageValue")
- page.uploadMarkButton = page.GetChild("UploadGuildMarkButton")
- page.uploadSymbolButton = page.GetChild("UploadGuildSymbolButton")
- page.declareWarButton = page.GetChild("DeclareWarButton")
- try:
- page.guildMoneySlot = page.GetChild("GuildMoneyValue")
- except KeyError:
- page.guildMoneySlot = None
- try:
- page.GetChild("DepositButton").SetEvent(ui.__mem_func__(self.__OnClickDepositButton))
- page.GetChild("WithdrawButton").SetEvent(ui.__mem_func__(self.__OnClickWithdrawButton))
- except KeyError:
- pass
- page.uploadMarkButton.SetEvent(ui.__mem_func__(self.__OnClickSelectGuildMarkButton))
- page.uploadSymbolButton.SetEvent(ui.__mem_func__(self.__OnClickSelectGuildSymbolButton))
- page.declareWarButton.SetEvent(ui.__mem_func__(self.__OnClickDeclareWarButton))
- page.GetChild("OfferButton").SetEvent(ui.__mem_func__(self.__OnClickOfferButton))
- page.GetChild("EnemyGuildCancel1").Hide()
- page.GetChild("EnemyGuildCancel2").Hide()
- page.GetChild("EnemyGuildCancel3").Hide()
- page.GetChild("EnemyGuildCancel4").Hide()
- page.GetChild("EnemyGuildCancel5").Hide()
- page.GetChild("EnemyGuildCancel6").Hide()
- self.enemyGuildNameList.append(page.GetChild("EnemyGuildName1"))
- self.enemyGuildNameList.append(page.GetChild("EnemyGuildName2"))
- self.enemyGuildNameList.append(page.GetChild("EnemyGuildName3"))
- self.enemyGuildNameList.append(page.GetChild("EnemyGuildName4"))
- self.enemyGuildNameList.append(page.GetChild("EnemyGuildName5"))
- self.enemyGuildNameList.append(page.GetChild("EnemyGuildName6"))
- self.largeMarkBox = page.GetChild("LargeGuildMark")
- except:
- import exception
- exception.Abort("GuildWindow.__MakeInfoPage")
- self.largeMarkBox.AddFlag("not_pick")
- self.markSelectDialog=uiUploadMark.MarkSelectDialog()
- self.markSelectDialog.SAFE_SetSelectEvent(self.__OnSelectMark)
- self.symbolSelectDialog=uiUploadMark.SymbolSelectDialog()
- self.symbolSelectDialog.SAFE_SetSelectEvent(self.__OnSelectSymbol)
- def __MakeBoardPage(self):
- i = 0
- lineStep = 20
- page = self.pageWindow["BOARD"]
- page.boardDict = {}
- for i in xrange(12):
- yPos = 25 + i * lineStep
- ## NoticeMark
- if localeInfo.IsJAPAN():
- noticeMarkImage = ui.MakeImageBox(page, "d:/ymir work/ui/game/guild/notice_mark.sub", 15, yPos+3)
- else:
- noticeMarkImage = ui.MakeImageBox(page, "d:/ymir work/ui/game/guild/notice_mark.sub", 5, yPos+3)
- noticeMarkImage.Hide()
- page.Children.append(noticeMarkImage)
- ## Name
- ## 13.12.02 ¾ئ¶ّ¼ِء¤
- if localeInfo.IsJAPAN():
- nameSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_100x18.sub", 9, yPos)
- elif localeInfo.IsARABIC():
- nameSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_03.sub", 255, yPos)
- else:
- nameSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_03.sub", 15, yPos)
- nameSlot = ui.MakeTextLine(nameSlotImage)
- page.Children.append(nameSlotImage)
- page.Children.append(nameSlot)
- ## Delete Button
- if localeInfo.IsARABIC():
- deleteButton = ui.MakeButton(page, 3, yPos + 3, localeInfo.GUILD_DELETE, "d:/ymir work/ui/public/", "close_button_01.sub", "close_button_02.sub", "close_button_03.sub")
- else:
- deleteButton = ui.MakeButton(page, 340, yPos + 3, localeInfo.GUILD_DELETE, "d:/ymir work/ui/public/", "close_button_01.sub", "close_button_02.sub", "close_button_03.sub")
- deleteButton.SetEvent(ui.__mem_func__(self.OnDeleteComment), i)
- page.Children.append(deleteButton)
- ## Comment
- ## 13.12.02 ¾ئ¶ّ¼ِء¤
- commentSlot = CommentSlot()
- commentSlot.SetParent(page)
- if localeInfo.IsARABIC():
- commentSlot.SetPosition(25, yPos)
- else:
- commentSlot.SetPosition(114, yPos)
- commentSlot.Show()
- page.Children.append(commentSlot)
- boardSlotList = []
- boardSlotList.append(noticeMarkImage)
- boardSlotList.append(nameSlot)
- boardSlotList.append(commentSlot)
- page.boardDict[i] = boardSlotList
- ## PostComment - Have to make this here for that fit tooltip's position.
- ## 13.12.02 ¾ئ¶ّ¼ِء¤
- if localeInfo.IsARABIC():
- postCommentButton = ui.MakeButton(page, 3, 273, localeInfo.GUILD_COMMENT, "d:/ymir work/ui/game/taskbar/", "Send_Chat_Button_01.sub", "Send_Chat_Button_02.sub", "Send_Chat_Button_03.sub")
- else:
- postCommentButton = ui.MakeButton(page, 337, 273, localeInfo.GUILD_COMMENT, "d:/ymir work/ui/game/taskbar/", "Send_Chat_Button_01.sub", "Send_Chat_Button_02.sub", "Send_Chat_Button_03.sub")
- postCommentButton.SetEvent(ui.__mem_func__(self.OnPostComment))
- page.Children.append(postCommentButton)
- def __MakeMemberPage(self):
- page = self.pageWindow["MEMBER"]
- lineStep = 20
- page.memberDict = {}
- for i in xrange(self.MEMBER_LINE_COUNT):
- inverseLineIndex = self.MEMBER_LINE_COUNT - i - 1
- yPos = 28 + inverseLineIndex*lineStep
- ## 13.12.02 ¾ئ¶ّ ¼ِء¤
- ## Name
- if localeInfo.IsJAPAN():
- nameSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_100x18.sub", 15, yPos)
- elif localeInfo.IsARABIC():
- nameSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_100x18.sub", 255, yPos)
- else:
- nameSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_03.sub", 10, yPos)
- nameSlot = ui.MakeTextLine(nameSlotImage)
- page.Children.append(nameSlotImage)
- page.Children.append(nameSlot)
- ## Grade
- gradeSlot = ui.ComboBox()
- gradeSlot.SetParent(page)
- if localeInfo.IsJAPAN():
- gradeSlot.SetPosition(117, yPos-1)
- elif localeInfo.IsARABIC():
- gradeSlot.SetPosition(192, yPos-1)
- else:
- gradeSlot.SetPosition(101, yPos-1)
- gradeSlot.SetSize(61, 18)
- gradeSlot.SetEvent(lambda gradeNumber, lineIndex=inverseLineIndex, argSelf=proxy(self): argSelf.OnChangeMemberGrade(lineIndex, gradeNumber))
- gradeSlot.Show()
- page.Children.append(gradeSlot)
- ## Job
- if localeInfo.IsJAPAN():
- jobSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 181, yPos)
- elif localeInfo.IsARABIC():
- jobSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 145, yPos)
- else:
- jobSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 170, yPos)
- jobSlot = ui.MakeTextLine(jobSlotImage)
- page.Children.append(jobSlotImage)
- page.Children.append(jobSlot)
- ## Level
- if localeInfo.IsJAPAN():
- levelSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 221, yPos)
- elif localeInfo.IsARABIC():
- levelSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 106, yPos)
- else:
- levelSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 210, yPos)
- levelSlot = ui.MakeTextLine(levelSlotImage)
- page.Children.append(levelSlotImage)
- page.Children.append(levelSlot)
- ## Offer
- if localeInfo.IsJAPAN():
- offerSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 261, yPos)
- elif localeInfo.IsARABIC():
- offerSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 66, yPos)
- else:
- offerSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 250, yPos)
- offerSlot = ui.MakeTextLine(offerSlotImage)
- page.Children.append(offerSlotImage)
- page.Children.append(offerSlot)
- ## General Enable
- event = lambda argSelf=proxy(self), argIndex=inverseLineIndex: apply(argSelf.OnEnableGeneral, (argIndex,))
- if localeInfo.IsJAPAN():
- generalEnableCheckBox = CheckBox(page, 307, yPos, event, "d:/ymir work/ui/public/Parameter_Slot_00.sub")
- elif localeInfo.IsARABIC():
- generalEnableCheckBox = CheckBox(page, 22, yPos, event, "d:/ymir work/ui/public/Parameter_Slot_00.sub")
- else:
- generalEnableCheckBox = CheckBox(page, 297, yPos, event, "d:/ymir work/ui/public/Parameter_Slot_00.sub")
- page.Children.append(generalEnableCheckBox)
- memberSlotList = []
- memberSlotList.append(nameSlot)
- memberSlotList.append(gradeSlot)
- memberSlotList.append(jobSlot)
- memberSlotList.append(levelSlot)
- memberSlotList.append(offerSlot)
- memberSlotList.append(generalEnableCheckBox)
- page.memberDict[inverseLineIndex] = memberSlotList
- if app.ENABLE_STATISTICS_GUILD:
- def __MakeMemberPage1(self):
- page = self.pageWindow["STATE"]
- lineStep = 20
- page.memberDict = {}
- for i in xrange(self.MEMBER_LINE_COUNT):
- inverseLineIndex = self.MEMBER_LINE_COUNT - i - 1
- yPos = 28 + inverseLineIndex*lineStep
- nameSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_100x18.sub", 255, yPos)
- nameSlot = ui.MakeTextLine(nameSlotImage)
- page.Children.append(nameSlotImage)
- page.Children.append(nameSlot)
- gradeSlot = ui.ComboBox()
- gradeSlot.SetParent(page)
- gradeSlot.SetPosition(192, yPos-1)
- gradeSlot.SetSize(61, 18)
- #gradeSlot.SetEvent(lambda gradeNumber, lineIndex=inverseLineIndex, argSelf=proxy(self): argSelf.OnChangeMemberGrade(lineIndex, gradeNumber))
- gradeSlot.Show()
- page.Children.append(gradeSlot)
- jobSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 145, yPos)
- jobSlot = ui.MakeTextLine(jobSlotImage)
- page.Children.append(jobSlotImage)
- page.Children.append(jobSlot)
- levelSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 106, yPos)
- levelSlot = ui.MakeTextLine(levelSlotImage)
- page.Children.append(levelSlotImage)
- page.Children.append(levelSlot)
- killSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 66, yPos)
- killSlot = ui.MakeTextLine(killSlotImage)
- page.Children.append(killSlotImage)
- page.Children.append(killSlot)
- dieSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 22, yPos)
- dieSlot = ui.MakeTextLine(dieSlotImage)
- page.Children.append(dieSlotImage)
- page.Children.append(dieSlot)
- memberSlotList = []
- memberSlotList.append(nameSlot)
- memberSlotList.append(gradeSlot)
- memberSlotList.append(jobSlot)
- memberSlotList.append(levelSlot)
- memberSlotList.append(killSlot)
- memberSlotList.append(dieSlot)
- page.memberDict[inverseLineIndex] = memberSlotList
- def __MakeBaseInfoPage(self):
- page = self.pageWindow["BASE_INFO"]
- page.buildingDataDict = {}
- lineStep = 20
- GUILD_BUILDING_MAX_NUM = 7
- yPos = 95 + 35
- for i in xrange(GUILD_BUILDING_MAX_NUM):
- nameSlotImage = ui.MakeSlotBar(page, 15, yPos, 78, 17)
- nameSlot = ui.MakeTextLine(nameSlotImage)
- page.Children.append(nameSlotImage)
- page.Children.append(nameSlot)
- nameSlot.SetText(localeInfo.GUILD_BUILDING_NAME)
- gradeSlotImage = ui.MakeSlotBar(page, 99, yPos, 26, 17)
- gradeSlot = ui.MakeTextLine(gradeSlotImage)
- page.Children.append(gradeSlotImage)
- page.Children.append(gradeSlot)
- gradeSlot.SetText(localeInfo.GUILD_BUILDING_GRADE)
- RESOURCE_MAX_NUM = 6
- for j in xrange(RESOURCE_MAX_NUM):
- resourceSlotImage = ui.MakeSlotBar(page, 131 + 29*j, yPos, 26, 17)
- resourceSlot = ui.MakeTextLine(resourceSlotImage)
- page.Children.append(resourceSlotImage)
- page.Children.append(resourceSlot)
- resourceSlot.SetText(localeInfo.GUILD_GEM)
- event = lambda *arg: None
- powerSlot = CheckBox(page, 308, yPos, event, "d:/ymir work/ui/public/Parameter_Slot_00.sub")
- page.Children.append(powerSlot)
- yPos += lineStep
- def __MakeSkillPage(self):
- page = self.pageWindow["SKILL"]
- page.skillPoint = page.GetChild("Skill_Plus_Value")
- page.passiveSlot = page.GetChild("Passive_Skill_Slot_Table")
- page.activeSlot = page.GetChild("Active_Skill_Slot_Table")
- page.affectSlot = page.GetChild("Affect_Slot_Table")
- page.gpGauge = page.GetChild("Dragon_God_Power_Gauge")
- page.gpValue = page.GetChild("Dragon_God_Power_Value")
- page.btnHealGSP = page.GetChild("Heal_GSP_Button")
- page.activeSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
- page.activeSlot.SetOverInItemEvent(lambda slotNumber, type=self.GUILD_SKILL_ACTIVE_SLOT: self.OverInItem(slotNumber, type))
- page.activeSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- page.activeSlot.SetSelectItemSlotEvent(lambda slotNumber, type=self.GUILD_SKILL_ACTIVE_SLOT: self.OnPickUpGuildSkill(slotNumber, type))
- page.activeSlot.SetUnselectItemSlotEvent(lambda slotNumber, type=self.GUILD_SKILL_ACTIVE_SLOT: self.OnUseGuildSkill(slotNumber, type))
- page.activeSlot.SetPressedSlotButtonEvent(lambda slotNumber, type=self.GUILD_SKILL_ACTIVE_SLOT: self.OnUpGuildSkill(slotNumber, type))
- page.activeSlot.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_down.sub")
- page.passiveSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
- page.passiveSlot.SetOverInItemEvent(lambda slotNumber, type=self.GUILD_SKILL_PASSIVE_SLOT: self.OverInItem(slotNumber, type))
- page.passiveSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- page.passiveSlot.SetPressedSlotButtonEvent(lambda slotNumber, type=self.GUILD_SKILL_PASSIVE_SLOT: self.OnUpGuildSkill(slotNumber, type))
- page.passiveSlot.AppendSlotButton("d:/ymir work/ui/game/windows/btn_plus_up.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_over.sub",\
- "d:/ymir work/ui/game/windows/btn_plus_down.sub")
- page.affectSlot.SetSlotStyle(wndMgr.SLOT_STYLE_NONE)
- page.affectSlot.SetOverInItemEvent(lambda slotNumber, type=self.GUILD_SKILL_AFFECT_SLOT: self.OverInItem(slotNumber, type))
- page.affectSlot.SetOverOutItemEvent(ui.__mem_func__(self.OverOutItem))
- page.btnHealGSP.SetEvent(ui.__mem_func__(self.__OnOpenHealGSPBoard))
- ## Passive
- """
- for i in xrange(len(playerSettingModule.PASSIVE_GUILD_SKILL_INDEX_LIST)):
- slotIndex = page.passiveSlot.GetStartIndex()+i
- skillIndex = playerSettingModule.PASSIVE_GUILD_SKILL_INDEX_LIST[i]
- page.passiveSlot.SetSkillSlot(slotIndex, skillIndex, 0)
- page.passiveSlot.RefreshSlot()
- guild.SetSkillIndex(slotIndex, i)
- """
- ## Active
- for i in xrange(len(playerSettingModule.ACTIVE_GUILD_SKILL_INDEX_LIST)):
- slotIndex = page.activeSlot.GetStartIndex()+i
- skillIndex = playerSettingModule.ACTIVE_GUILD_SKILL_INDEX_LIST[i]
- page.activeSlot.SetSkillSlot(slotIndex, skillIndex, 0)
- page.activeSlot.SetCoverButton(slotIndex)
- page.activeSlot.RefreshSlot()
- guild.SetSkillIndex(slotIndex, len(playerSettingModule.PASSIVE_GUILD_SKILL_INDEX_LIST)+i)
- def __MakeGradePage(self):
- lineStep = 18
- page = self.pageWindow["GRADE"]
- page.gradeDict = {}
- for i in xrange(15):
- yPos = 22 + i*lineStep
- index = i+1
- ## 13.12.02 ¾ئ¶ّ ¼ِء¤
- ## GradeNumber
- gradeNumberSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 310, yPos)
- gradeNumberSlot = ui.MakeTextLine(gradeNumberSlotImage)
- gradeNumberSlot.SetText(str(i+1))
- page.Children.append(gradeNumberSlotImage)
- page.Children.append(gradeNumberSlot)
- ## GradeName
- if localeInfo.IsARABIC():
- gradeNameSlot = EditableTextSlot(page, 242, yPos)
- else:
- gradeNameSlot = EditableTextSlot(page, 58, yPos)
- gradeNameSlot.SetEvent(ui.__mem_func__(self.OnOpenChangeGradeName), index)
- page.Children.append(gradeNameSlot)
- ## Invite Authority
- event = lambda argSelf=proxy(self), argIndex=index, argAuthority=1<<0: apply(argSelf.OnCheckAuthority, (argIndex,argAuthority))
- if localeInfo.IsARABIC():
- inviteAuthorityCheckBox = CheckBox(page, 185, yPos, event)
- else:
- inviteAuthorityCheckBox = CheckBox(page, 124, yPos, event)
- page.Children.append(inviteAuthorityCheckBox)
- ## DriveOut Authority
- event = lambda argSelf=proxy(self), argIndex=index, argAuthority=1<<1: apply(argSelf.OnCheckAuthority, (argIndex,argAuthority))
- if localeInfo.IsARABIC():
- driveoutAuthorityCheckBox = CheckBox(page, 128, yPos, event)
- else:
- driveoutAuthorityCheckBox = CheckBox(page, 181, yPos, event)
- page.Children.append(driveoutAuthorityCheckBox)
- ## Notice Authority
- event = lambda argSelf=proxy(self), argIndex=index, argAuthority=1<<2: apply(argSelf.OnCheckAuthority, (argIndex,argAuthority))
- if localeInfo.IsARABIC():
- noticeAuthorityCheckBox = CheckBox(page, 71, yPos, event)
- else:
- noticeAuthorityCheckBox = CheckBox(page, 238, yPos, event)
- page.Children.append(noticeAuthorityCheckBox)
- ## Skill Authority
- event = lambda argSelf=proxy(self), argIndex=index, argAuthority=1<<3: apply(argSelf.OnCheckAuthority, (argIndex,argAuthority))
- if localeInfo.IsARABIC():
- skillAuthorityCheckBox = CheckBox(page, 14, yPos, event)
- else:
- skillAuthorityCheckBox = CheckBox(page, 295, yPos, event)
- page.Children.append(skillAuthorityCheckBox)
- gradeSlotList = []
- gradeSlotList.append(gradeNameSlot)
- gradeSlotList.append(inviteAuthorityCheckBox)
- gradeSlotList.append(driveoutAuthorityCheckBox)
- gradeSlotList.append(noticeAuthorityCheckBox)
- gradeSlotList.append(skillAuthorityCheckBox)
- page.gradeDict[index] = gradeSlotList
- masterSlotList = page.gradeDict[1]
- for slot in masterSlotList:
- slot.Disable()
- def CanOpen(self):
- return guild.IsGuildEnable()
- def Open(self):
- self.Show()
- self.SetTop()
- guildID = net.GetGuildID()
- self.largeMarkBox.SetIndex(guildID)
- self.largeMarkBox.SetScale(3)
- ## 13.12.02 ¾ئ¶ّ¼ِء¤
- if localeInfo.IsARABIC():
- self.largeMarkBox.SetPosition(self.largeMarkBox.GetWidth()+32,1)
- def Close(self):
- self.__CloseAllGuildMemberPageGradeComboBox()
- self.offerDialog.Close()
- self.popupDialog.Hide()
- self.changeGradeNameDialog.Hide()
- self.Hide()
- if self.tooltipSkill:
- self.tooltipSkill.Hide()
- self.pickDialog = None
- self.questionDialog = None
- self.moneyDialog = None
- def Destroy(self):
- self.ClearDictionary()
- self.board = None
- self.pageName = None
- self.tabDict = None
- self.tabButtonDict = None
- self.pickDialog = None
- self.questionDialog = None
- self.markSelectDialog = None
- self.symbolSelectDialog = None
- if self.offerDialog:
- self.offerDialog.Destroy()
- self.offerDialog = None
- if self.popupDialog:
- self.popupDialog.ClearDictionary()
- self.popupDialog = None
- if self.changeGradeNameDialog:
- self.changeGradeNameDialog.ClearDictionary()
- self.changeGradeNameDialog = None
- self.popupMessage = None
- self.commentSlot = None
- if self.pageWindow:
- for window in self.pageWindow.values():
- window.ClearDictionary()
- self.pageWindow = None
- self.tooltipSkill = None
- self.moneyDialog = None
- self.enemyGuildNameList = []
- def DeleteGuild(self):
- self.RefreshGuildInfoPage()
- self.RefreshGuildBoardPage()
- self.RefreshGuildMemberPage()
- self.RefreshGuildSkillPage()
- self.RefreshGuildGradePage()
- self.Hide()
- def SetSkillToolTip(self, tooltipSkill):
- self.tooltipSkill = tooltipSkill
- def SelectPage(self, arg):
- if "BOARD" == arg:
- self.OnRefreshComments()
- for key, btn in self.tabButtonDict.items():
- if arg != key:
- btn.SetUp()
- for key, img in self.tabDict.items():
- if arg == key:
- img.Show()
- else:
- img.Hide()
- for key, page in self.pageWindow.items():
- if arg == key:
- page.Show()
- else:
- page.Hide()
- self.board.SetTitleName(self.pageName[arg])
- self.__CloseAllGuildMemberPageGradeComboBox()
- def __CloseAllGuildMemberPageGradeComboBox(self):
- page = self.pageWindow["MEMBER"]
- for key, slotList in page.memberDict.items():
- slotList[1].CloseListBox()
- def RefreshGuildInfoPage(self):
- if self.isLoaded==0:
- return
- global DISABLE_DECLARE_WAR
- page = self.pageWindow["GUILD_INFO"]
- page.nameSlot.SetText(guild.GetGuildName())
- page.masterNameSlot.SetText(guild.GetGuildMasterName())
- page.guildLevelSlot.SetText(str(guild.GetGuildLevel()))
- if page.guildMoneySlot:
- page.guildMoneySlot.SetText(str(guild.GetGuildMoney()))
- curExp, lastExp = guild.GetGuildExperience()
- curExp *= 100
- lastExp *= 100
- page.curExpSlot.SetText(str(curExp))
- page.lastExpSlot.SetText(str(lastExp))
- curMemberCount, maxMemberCount = guild.GetGuildMemberCount()
- if maxMemberCount== 0xffff:
- page.memberCountSlot.SetText("%d / %s " % (curMemberCount, localeInfo.GUILD_MEMBER_COUNT_INFINITY))
- else:
- page.memberCountSlot.SetText("%d / %d" % (curMemberCount, maxMemberCount))
- page.levelAverageSlot.SetText(str(guild.GetGuildMemberLevelAverage()))
- ## ±وµهہه¸¸ ±وµه ¸¶إ©؟ح ±وµهہü ½إأ» ¹ِئ°ہ» ؛¼ ¼ِ ہضہ½
- mainCharacterName = player.GetMainCharacterName()
- masterName = guild.GetGuildMasterName()
- if mainCharacterName == masterName:
- page.uploadMarkButton.Show()
- if DISABLE_DECLARE_WAR:
- page.declareWarButton.Hide()
- else:
- page.declareWarButton.Show()
- if guild.HasGuildLand():
- page.uploadSymbolButton.Show()
- else:
- page.uploadSymbolButton.Hide()
- else:
- page.uploadMarkButton.Hide()
- page.declareWarButton.Hide()
- page.uploadSymbolButton.Hide()
- ## Refresh ½أ؟، ±وµهہü ء¤؛¸ ¾÷µ¥ہجئ®
- for i in xrange(guild.ENEMY_GUILD_SLOT_MAX_COUNT):
- name = guild.GetEnemyGuildName(i)
- nameTextLine = self.enemyGuildNameList[i]
- if name:
- nameTextLine.SetText(name)
- else:
- nameTextLine.SetText(localeInfo.GUILD_INFO_ENEMY_GUILD_EMPTY)
- def __GetGuildBoardCommentData(self, index):
- commentID, chrName, comment = guild.GetGuildBoardCommentData(index)
- if 0==commentID:
- if ""==chrName:
- chrName=localeInfo.UI_NONAME
- if ""==comment:
- comment=localeInfo.UI_NOCONTENTS
- return commentID, chrName, comment
- def RefreshGuildBoardPage(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["BOARD"]
- self.BOARD_LINE_MAX_NUM = 12
- lineIndex = 0
- commentCount = guild.GetGuildBoardCommentCount()
- for i in xrange(commentCount):
- commentID, chrName, comment = self.__GetGuildBoardCommentData(i)
- if not comment:
- continue
- slotList = page.boardDict[lineIndex]
- if "!" == comment[0]:
- slotList[0].Show()
- slotList[1].SetText(chrName)
- slotList[2].SetText(comment[1:])
- else:
- slotList[0].Hide()
- slotList[1].SetText(chrName)
- slotList[2].SetText(comment)
- lineIndex += 1
- for i in xrange(self.BOARD_LINE_MAX_NUM - lineIndex):
- slotList = page.boardDict[lineIndex+i]
- slotList[0].Hide()
- slotList[1].SetText("")
- slotList[2].SetText("")
- def RefreshGuildMemberPage(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["MEMBER"]
- ## ScrollBar
- count = guild.GetMemberCount()
- if count > self.MEMBER_LINE_COUNT:
- page.scrollBar.SetMiddleBarSize(float(self.MEMBER_LINE_COUNT) / float(count))
- page.scrollBar.Show()
- else:
- page.scrollBar.Hide()
- self.RefreshGuildMemberPageGradeComboBox()
- self.RefreshGuildMemberPageMemberList()
- if app.ENABLE_STATISTICS_GUILD:
- def RefreshGuildMemberPage1(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["STATE"]
- count = guild.GetMemberCount()
- if count > self.MEMBER_LINE_COUNT:
- page.scrollBar.SetMiddleBarSize(float(self.MEMBER_LINE_COUNT) / float(count))
- page.scrollBar.Show()
- else:
- page.scrollBar.Hide()
- #self.RefreshGuildMemberPageGradeComboBox()
- self.RefreshGuildMemberPageMemberList1()
- def RefreshGuildMemberPageMemberList(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["MEMBER"]
- for line, slotList in page.memberDict.items():
- gradeComboBox = slotList[1]
- gradeComboBox.Disable()
- if not guild.IsMember(line):
- slotList[0].SetText("")
- slotList[2].SetText("")
- slotList[3].SetText("")
- slotList[4].SetText("")
- slotList[5].SetCheck(False)
- continue
- pid, name, grade, race, level, offer, general, kill, die = self.GetMemberData(line)
- if pid < 0:
- continue
- job = chr.RaceToJob(race)
- guildExperienceSummary = guild.GetGuildExperienceSummary()
- offerPercentage = 0
- if guildExperienceSummary > 0:
- offerPercentage = int(float(offer) / float(guildExperienceSummary) * 100.0)
- slotList[0].SetText(name)
- slotList[2].SetText(self.JOB_NAME.get(job, "?"))
- slotList[3].SetText(str(level))
- slotList[4].SetText(str(offerPercentage) + "%")
- slotList[5].SetCheck(general)
- gradeComboBox.SetCurrentItem(guild.GetGradeName(grade))
- if 1 != grade:
- gradeComboBox.Enable()
- if app.ENABLE_STATISTICS_GUILD:
- def RefreshGuildMemberPageMemberList1(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["STATE"]
- for line, slotList in page.memberDict.items():
- gradeComboBox = slotList[1]
- gradeComboBox.Disable()
- if not guild.IsMember(line):
- slotList[0].SetText("")
- slotList[2].SetText("")
- slotList[3].SetText("")
- slotList[4].SetText("")
- slotList[5].SetText("")
- continue
- pid, name, grade, race, level, offer, general, kill, die= self.GetMemberData(line)
- if pid < 0:
- continue
- job = chr.RaceToJob(race)
- slotList[0].SetText(name)
- slotList[2].SetText(self.JOB_NAME.get(job, "?"))
- slotList[3].SetText(str(level))
- slotList[4].SetText(str(kill))
- slotList[5].SetText(str(die))
- gradeComboBox.SetCurrentItem(guild.GetGradeName(grade))
- if 1 != grade:
- gradeComboBox.Enable()
- def RefreshGuildMemberPageGradeComboBox(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["MEMBER"]
- self.CAN_CHANGE_GRADE_COUNT = 15 - 1
- for key, slotList in page.memberDict.items():
- gradeComboBox = slotList[1]
- gradeComboBox.Disable()
- if not guild.IsMember(key):
- continue
- pid, name, grade, job, level, offer, general, kill, die = self.GetMemberData(key)
- if pid < 0:
- continue
- gradeComboBox.ClearItem()
- for i in xrange(self.CAN_CHANGE_GRADE_COUNT):
- gradeComboBox.InsertItem(i+2, guild.GetGradeName(i+2))
- gradeComboBox.SetCurrentItem(guild.GetGradeName(grade))
- if 1 != grade:
- gradeComboBox.Enable()
- def RefreshGuildSkillPage(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["SKILL"]
- curPoint, maxPoint = guild.GetDragonPowerPoint()
- maxPoint = max(maxPoint, 1)
- page.gpValue.SetText(str(curPoint) + " / " + str(maxPoint))
- percentage = (float(curPoint) / float(maxPoint) * 100) * (float(173) / float(95))
- page.gpGauge.SetPercentage(int(percentage), 100)
- skillPoint = guild.GetGuildSkillPoint()
- page.skillPoint.SetText(str(skillPoint))
- page.passiveSlot.HideAllSlotButton()
- page.activeSlot.HideAllSlotButton()
- ## Passive
- """
- for i in xrange(len(playerSettingModule.PASSIVE_GUILD_SKILL_INDEX_LIST)):
- slotIndex = page.passiveSlot.GetStartIndex()+i
- skillIndex = playerSettingModule.PASSIVE_GUILD_SKILL_INDEX_LIST[i]
- skillLevel = guild.GetSkillLevel(slotIndex)
- skillMaxLevel = skill.GetSkillMaxLevel(skillIndex)
- page.passiveSlot.SetSlotCount(slotIndex, skillLevel)
- if skillPoint > 0:
- if skillLevel < skillMaxLevel:
- page.passiveSlot.ShowSlotButton(slotIndex)
- """
- ## Active
- for i in xrange(len(playerSettingModule.ACTIVE_GUILD_SKILL_INDEX_LIST)):
- slotIndex = page.activeSlot.GetStartIndex()+i
- skillIndex = playerSettingModule.ACTIVE_GUILD_SKILL_INDEX_LIST[i]
- skillLevel = guild.GetSkillLevel(slotIndex)
- skillMaxLevel = skill.GetSkillMaxLevel(skillIndex)
- page.activeSlot.SetSlotCount(slotIndex, skillLevel)
- if skillLevel <= 0:
- page.activeSlot.DisableCoverButton(slotIndex)
- else:
- page.activeSlot.EnableCoverButton(slotIndex)
- if skillPoint > 0:
- if skillLevel < skillMaxLevel:
- page.activeSlot.ShowSlotButton(slotIndex)
- def RefreshGuildGradePage(self):
- if self.isLoaded==0:
- return
- page = self.pageWindow["GRADE"]
- for key, slotList in page.gradeDict.items():
- name, authority = guild.GetGradeData(int(key))
- slotList[self.GRADE_SLOT_NAME].SetText(name)
- slotList[self.GRADE_ADD_MEMBER_AUTHORITY].SetCheck(authority & guild.AUTH_ADD_MEMBER)
- slotList[self.GRADE_REMOVE_MEMBER_AUTHORITY].SetCheck(authority & guild.AUTH_REMOVE_MEMBER)
- slotList[self.GRADE_NOTICE_AUTHORITY].SetCheck(authority & guild.AUTH_NOTICE)
- slotList[self.GRADE_SKILL_AUTHORITY].SetCheck(authority & guild.AUTH_SKILL)
- ## GuildInfo
- def __PopupMessage(self, msg):
- self.popupMessage.SetText(msg)
- self.popupDialog.SetTop()
- self.popupDialog.Show()
- def __OnClickSelectGuildMarkButton(self):
- if guild.GetGuildLevel() < int(localeInfo.GUILD_MARK_MIN_LEVEL):
- self.__PopupMessage(localeInfo.GUILD_MARK_NOT_ENOUGH_LEVEL)
- elif not guild.MainPlayerHasAuthority(guild.AUTH_NOTICE):
- self.__PopupMessage(localeInfo.GUILD_NO_NOTICE_PERMISSION)
- else:
- self.markSelectDialog.Open()
- def __OnClickSelectGuildSymbolButton(self):
- if guild.MainPlayerHasAuthority(guild.AUTH_NOTICE):
- self.symbolSelectDialog.Open()
- else:
- self.__PopupMessage(localeInfo.GUILD_NO_NOTICE_PERMISSION)
- def __OnClickDeclareWarButton(self):
- inputDialog = DeclareGuildWarDialog()
- inputDialog.Open()
- self.inputDialog = inputDialog
- def __OnSelectMark(self, markFileName):
- ret = net.UploadMark("upload/"+markFileName)
- # MARK_BUG_FIX
- if net.ERROR_MARK_UPLOAD_NEED_RECONNECT == ret:
- self.__PopupMessage(localeInfo.UPLOAD_MARK_UPLOAD_NEED_RECONNECT);
- return ret
- # END_OF_MARK_BUG_FIX
- def __OnSelectSymbol(self, symbolFileName):
- net.UploadSymbol("upload/"+symbolFileName)
- def __OnClickOfferButton(self):
- curEXP = unsigned32(player.GetStatus(player.EXP))
- if curEXP <= 100:
- self.__PopupMessage(localeInfo.GUILD_SHORT_EXP);
- return
- self.offerDialog.Open(curEXP, 100)
- def __OnClickDepositButton(self):
- moneyDialog = uiPickMoney.PickMoneyDialog()
- moneyDialog.LoadDialog()
- moneyDialog.SetMax(6)
- moneyDialog.SetTitleName(localeInfo.GUILD_DEPOSIT)
- moneyDialog.SetAcceptEvent(ui.__mem_func__(self.OnDeposit))
- moneyDialog.Open(player.GetMoney())
- self.moneyDialog = moneyDialog
- def __OnClickWithdrawButton(self):
- moneyDialog = uiPickMoney.PickMoneyDialog()
- moneyDialog.LoadDialog()
- moneyDialog.SetMax(6)
- moneyDialog.SetTitleName(localeInfo.GUILD_WITHDRAW)
- moneyDialog.SetAcceptEvent(ui.__mem_func__(self.OnWithdraw))
- moneyDialog.Open(guild.GetGuildMoney())
- self.moneyDialog = moneyDialog
- def __OnBlock(self):
- popup = uiCommon.PopupDialog()
- popup.SetText(localeInfo.NOT_YET_SUPPORT)
- popup.SetAcceptEvent(self.__OnClosePopupDialog)
- popup.Open()
- self.popup = popup
- def __OnClosePopupDialog(self):
- self.popup = None
- def OnDeposit(self, money):
- net.SendGuildDepositMoneyPacket(money)
- def OnWithdraw(self, money):
- net.SendGuildWithdrawMoneyPacket(money)
- def OnOffer(self, exp):
- net.SendGuildOfferPacket(exp)
- ## Board
- def OnPostComment(self):
- text = self.commentSlot.GetText()
- if not text:
- return False
- net.SendGuildPostCommentPacket(text[:50])
- self.commentSlot.SetText("")
- return True
- def OnDeleteComment(self, index):
- commentID, chrName, comment = self.__GetGuildBoardCommentData(index)
- net.SendGuildDeleteCommentPacket(commentID)
- def OnRefreshComments(self):
- net.SendGuildRefreshCommentsPacket(0)
- def OnKeyDownInBoardPage(self, key):
- if key == 63:
- self.OnRefreshComments()
- return True
- ## Member
- ## OnEnableGeneral
- def OnChangeMemberGrade(self, lineIndex, gradeNumber):
- PID = guild.MemberIndexToPID(lineIndex + self.memberLinePos)
- net.SendGuildChangeMemberGradePacket(PID, gradeNumber)
- def OnEnableGeneral(self, lineIndex):
- if not guild.IsMember(lineIndex):
- return
- pid, name, grade, job, level, offer, general, kill, die = self.GetMemberData(lineIndex)
- if pid < 0:
- return
- net.SendGuildChangeMemberGeneralPacket(pid, 1 - general)
- ## Grade
- def OnOpenChangeGradeName(self, arg):
- self.changeGradeNameDialog.SetGradeNumber(arg)
- self.changeGradeNameDialog.Open()
- def OnChangeGradeName(self):
- self.changeGradeNameDialog.Hide()
- gradeNumber = self.changeGradeNameDialog.GetGradeNumber()
- gradeName = self.changeGradeNameDialog.GetGradeName()
- if len(gradeName) == 0:
- gradeName = localeInfo.GUILD_DEFAULT_GRADE
- net.SendGuildChangeGradeNamePacket(gradeNumber, gradeName)
- return True
- def OnCheckAuthority(self, argIndex, argAuthority):
- name, authority = guild.GetGradeData(argIndex)
- net.SendGuildChangeGradeAuthorityPacket(argIndex, authority ^ argAuthority)
- def OnScrollMemberLine(self):
- scrollBar = self.pageWindow["MEMBER"].scrollBar
- pos = scrollBar.GetPos()
- count = guild.GetMemberCount()
- newLinePos = int(float(count - self.MEMBER_LINE_COUNT) * pos)
- if newLinePos != self.memberLinePos:
- self.memberLinePos = newLinePos
- self.RefreshGuildMemberPageMemberList()
- self.__CloseAllGuildMemberPageGradeComboBox()
- if app.ENABLE_STATISTICS_GUILD:
- def OnScrollMemberLine1(self):
- scrollBar = self.pageWindow["STATE"].scrollBar
- pos = scrollBar.GetPos()
- count = guild.GetMemberCount()
- newLinePos = int(float(count - self.MEMBER_LINE_COUNT) * pos)
- if newLinePos != self.memberLinePos:
- self.memberLinePos = newLinePos
- self.RefreshGuildMemberPageMemberList1()
- #self.__CloseAllGuildMemberPageGradeComboBox()
- def GetMemberData(self, localPos):
- return guild.GetMemberData(localPos + self.memberLinePos)
- ## Guild Skill
- def __OnOpenHealGSPBoard(self):
- curPoint, maxPoint = guild.GetDragonPowerPoint()
- if maxPoint - curPoint <= 0:
- self.__PopupMessage(localeInfo.GUILD_CANNOT_HEAL_GSP_ANYMORE)
- return
- pickDialog = uiPickMoney.PickMoneyDialog()
- pickDialog.LoadDialog()
- pickDialog.SetMax(9)
- pickDialog.SetTitleName(localeInfo.GUILD_HEAL_GSP)
- pickDialog.SetAcceptEvent(ui.__mem_func__(self.__OnOpenHealGSPQuestionDialog))
- pickDialog.Open(maxPoint - curPoint, 1)
- self.pickDialog = pickDialog
- def __OnOpenHealGSPQuestionDialog(self, healGSP):
- money = healGSP * constInfo.GUILD_MONEY_PER_GSP
- questionDialog = uiCommon.QuestionDialog()
- questionDialog.SetText(localeInfo.GUILD_DO_YOU_HEAL_GSP % (money, healGSP))
- questionDialog.SetAcceptEvent(ui.__mem_func__(self.__OnHealGSP))
- questionDialog.SetCancelEvent(ui.__mem_func__(self.__OnCloseQuestionDialog))
- questionDialog.SetWidth(400)
- questionDialog.Open()
- questionDialog.healGSP = healGSP
- self.questionDialog = questionDialog
- def __OnHealGSP(self):
- net.SendGuildChargeGSPPacket(self.questionDialog.healGSP)
- self.__OnCloseQuestionDialog()
- def __OnCloseQuestionDialog(self):
- if self.questionDialog:
- self.questionDialog.Close()
- self.questionDialog = None
- def OnPickUpGuildSkill(self, skillSlotIndex, type):
- mouseController = mouseModule.mouseController
- if False == mouseController.isAttached():
- skillIndex = player.GetSkillIndex(skillSlotIndex)
- skillLevel = guild.GetSkillLevel(skillSlotIndex)
- if skill.CanUseSkill(skillIndex) and skillLevel > 0:
- if app.IsPressed(app.DIK_LCONTROL):
- player.RequestAddToEmptyLocalQuickSlot(player.SLOT_TYPE_SKILL, skillSlotIndex)
- return
- mouseController.AttachObject(self, player.SLOT_TYPE_SKILL, skillSlotIndex, skillIndex)
- else:
- mouseController.DeattachObject()
- def OnUseGuildSkill(self, slotNumber, type):
- skillIndex = player.GetSkillIndex(slotNumber)
- skillLevel = guild.GetSkillLevel(slotNumber)
- if skillLevel <= 0:
- return
- player.UseGuildSkill(slotNumber)
- def OnUpGuildSkill(self, slotNumber, type):
- skillIndex = player.GetSkillIndex(slotNumber)
- net.SendChatPacket("/hgiseskillup " + str(skillIndex))
- def OnUseSkill(self, slotNumber, coolTime):
- if self.isLoaded==0:
- return
- page = self.pageWindow["SKILL"]
- if page.activeSlot.HasSlot(slotNumber):
- page.activeSlot.SetSlotCoolTime(slotNumber, coolTime)
- def OnStartGuildWar(self, guildSelf, guildOpp):
- if self.isLoaded==0:
- return
- if guild.GetGuildID() != guildSelf:
- return
- guildName = guild.GetGuildName(guildOpp)
- for guildNameTextLine in self.enemyGuildNameList:
- if localeInfo.GUILD_INFO_ENEMY_GUILD_EMPTY == guildNameTextLine.GetText():
- guildNameTextLine.SetText(guildName)
- return
- def OnEndGuildWar(self, guildSelf, guildOpp):
- if self.isLoaded==0:
- return
- if guild.GetGuildID() != guildSelf:
- return
- guildName = guild.GetGuildName(guildOpp)
- for guildNameTextLine in self.enemyGuildNameList:
- if guildName == guildNameTextLine.GetText():
- guildNameTextLine.SetText(localeInfo.GUILD_INFO_ENEMY_GUILD_EMPTY)
- return
- ## ToolTip
- def OverInItem(self, slotNumber, type):
- if mouseModule.mouseController.isAttached():
- return
- if None != self.tooltipSkill:
- skillIndex = player.GetSkillIndex(slotNumber)
- skillLevel = guild.GetSkillLevel(slotNumber)
- self.tooltipSkill.SetSkill(skillIndex, skillLevel)
- def OverOutItem(self):
- if None != self.tooltipSkill:
- self.tooltipSkill.HideToolTip()
- def OnPressEscapeKey(self):
- self.Close()
- return True
- class BuildGuildBuildingWindow(ui.ScriptWindow):
- if localeInfo.IsJAPAN():
- GUILD_CATEGORY_LIST = (
- ("HEADQUARTER", localeInfo.GUILD_HEADQUARTER),
- ("FACILITY", localeInfo.GUILD_FACILITY),
- ("OBJECT", localeInfo.GUILD_OBJECT),
- )
- elif localeInfo.IsYMIR() or localeInfo.IsWE_KOREA():
- GUILD_CATEGORY_LIST = (
- ("HEADQUARTER", "؛»°ا¹°"),
- ("FACILITY", "±â´ة°ا¹°"),
- ("OBJECT", "ء¶°و¹°"),
- )
- elif localeInfo.IsEUROPE() or localeInfo.IsHONGKONG():
- GUILD_CATEGORY_LIST = (
- ("HEADQUARTER", localeInfo.GUILD_HEADQUARTER),
- ("FACILITY", localeInfo.GUILD_FACILITY),
- ("OBJECT", localeInfo.GUILD_OBJECT),
- )
- else:
- try :
- GUILD_CATEGORY_LIST = (
- ("HEADQUARTER", localeInfo.GUILD_HEADQUARTER),
- ("FACILITY", localeInfo.GUILD_FACILITY),
- ("OBJECT", localeInfo.GUILD_OBJECT),
- )
- except:
- GUILD_CATEGORY_LIST = (
- ("HEADQUARTER", "Main Building"),
- ("FACILITY", "Facility"),
- ("OBJECT", "Object"),
- )
- MODE_VIEW = 0
- MODE_POSITIONING = 1
- MODE_PREVIEW = 2
- BUILDING_ALPHA = 0.55
- ENABLE_COLOR = grp.GenerateColor(0.7607, 0.7607, 0.7607, 1.0)
- DISABLE_COLOR = grp.GenerateColor(0.9, 0.4745, 0.4627, 1.0)
- START_INSTANCE_INDEX = 123450
- #WALL_SET_INSTANCE = 14105
- def __init__(self):
- ui.ScriptWindow.__init__(self)
- self.__LoadWindow()
- self.closeEvent = None
- self.popup = None
- self.mode = self.MODE_VIEW
- self.race = 0
- self.type = None
- self.x = 0
- self.y = 0
- self.z = 0
- self.rot_x = 0
- self.rot_y = 0
- self.rot_z = 0
- self.rot_x_limit = 0
- self.rot_y_limit = 0
- self.rot_z_limit = 0
- self.needMoney = 0
- self.needStoneCount = 0
- self.needLogCount = 0
- self.needPlywoodCount = 0
- #self.index = 0
- self.indexList = []
- self.raceList = []
- self.posList = []
- self.rotList = []
- index = 0
- for category in self.GUILD_CATEGORY_LIST:
- self.categoryList.InsertItem(index, category[1])
- index += 1
- def __del__(self):
- ui.ScriptWindow.__del__(self)
- def __LoadWindow(self):
- try:
- pyScrLoader = ui.PythonScriptLoader()
- if localeInfo.IsARABIC():
- pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "buildguildbuildingwindow.py")
- elif localeInfo.IsVIETNAM():
- pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "buildguildbuildingwindow.py")
- else:
- pyScrLoader.LoadScriptFile(self, "uiscript/buildguildbuildingwindow.py")
- except:
- import exception
- exception.Abort("DeclareGuildWarWindow.__CreateDialog - LoadScript")
- try:
- getObject = self.GetChild
- self.board = getObject("Board")
- self.categoryList = getObject("CategoryList")
- self.buildingList = getObject("BuildingList")
- self.listScrollBar = getObject("ListScrollBar")
- self.positionButton = getObject("PositionButton")
- self.previewButton = getObject("PreviewButton")
- self.posValueX = getObject("BuildingPositionXValue")
- self.posValueY = getObject("BuildingPositionYValue")
- self.ctrlRotationX = getObject("BuildingRotationX")
- self.ctrlRotationY = getObject("BuildingRotationY")
- self.ctrlRotationZ = getObject("BuildingRotationZ")
- self.buildingPriceValue = getObject("BuildingPriceValue")
- self.buildingMaterialStoneValue = getObject("BuildingMaterialStoneValue")
- self.buildingMaterialLogValue = getObject("BuildingMaterialLogValue")
- self.buildingMaterialPlywoodValue = getObject("BuildingMaterialPlywoodValue")
- self.positionButton.SetEvent(ui.__mem_func__(self.__OnSelectPositioningMode))
- self.previewButton.SetToggleDownEvent(ui.__mem_func__(self.__OnEnterPreviewMode))
- self.previewButton.SetToggleUpEvent(ui.__mem_func__(self.__OnLeavePreviewMode))
- self.ctrlRotationX.SetEvent(ui.__mem_func__(self.__OnChangeRotation))
- self.ctrlRotationY.SetEvent(ui.__mem_func__(self.__OnChangeRotation))
- self.ctrlRotationZ.SetEvent(ui.__mem_func__(self.__OnChangeRotation))
- self.listScrollBar.SetScrollEvent(ui.__mem_func__(self.__OnScrollBuildingList))
- getObject("CategoryList").SetEvent(ui.__mem_func__(self.__OnSelectCategory))
- getObject("BuildingList").SetEvent(ui.__mem_func__(self.__OnSelectBuilding))
- getObject("AcceptButton").SetEvent(ui.__mem_func__(self.Build))
- getObject("CancelButton").SetEvent(ui.__mem_func__(self.Close))
- self.board.SetCloseEvent(ui.__mem_func__(self.Close))
- except:
- import exception
- exception.Abort("BuildGuildBuildingWindow.__LoadWindow - BindObject")
- def __CreateWallBlock(self, race, x, y, rot=0.0 ):
- idx = self.START_INSTANCE_INDEX + len(self.indexList)
- self.indexList.append(idx)
- self.raceList.append(race)
- self.posList.append((x, y))
- self.rotList.append(rot)
- chr.CreateInstance(idx)
- chr.SelectInstance(idx)
- chr.SetVirtualID(idx)
- chr.SetInstanceType(chr.INSTANCE_TYPE_OBJECT)
- chr.SetRace(race)
- chr.SetArmor(0)
- chr.Refresh()
- chr.SetLoopMotion(chr.MOTION_WAIT)
- chr.SetBlendRenderMode(idx, self.BUILDING_ALPHA)
- chr.SetRotationAll(0.0, 0.0, rot)
- self.ctrlRotationX.SetSliderPos(0.5)
- self.ctrlRotationY.SetSliderPos(0.5)
- self.ctrlRotationZ.SetSliderPos(0.5)
- def __GetObjectSize(self, race):
- idx = self.START_INSTANCE_INDEX + 1000
- chr.CreateInstance(idx)
- chr.SelectInstance(idx)
- chr.SetVirtualID(idx)
- chr.SetInstanceType(chr.INSTANCE_TYPE_OBJECT)
- chr.SetRace(race)
- chr.SetArmor(0)
- chr.Refresh()
- chr.SetLoopMotion(chr.MOTION_WAIT)
- sx, sy, ex, ey = chr.GetBoundBoxOnlyXY(idx)
- chr.DeleteInstance(idx)
- return sx, sy, ex, ey
- def __GetBuildInPosition(self):
- zList = []
- zList.append( background.GetHeight(self.x+self.sxPos, self.y+self.syPos) )
- zList.append( background.GetHeight(self.x+self.sxPos, self.y+self.eyPos) )
- zList.append( background.GetHeight(self.x+self.exPos, self.y+self.syPos) )
- zList.append( background.GetHeight(self.x+self.exPos, self.y+self.eyPos) )
- zList.append( background.GetHeight(self.x+(self.exPos+self.sxPos)/2, self.y+(self.eyPos+self.syPos)/2) )
- zList.sort()
- return zList[3]
- def __CreateBuildInInstance(self,race):
- self.__DeleteInstance()
- object_base = race - race%10
- door_minX, door_minY, door_maxX, door_maxY = self.__GetObjectSize(object_base+4)
- corner_minX, corner_minY, corner_maxX, corner_maxY = self.__GetObjectSize(object_base+1)
- line_minX, line_minY, line_maxX, line_maxY = self.__GetObjectSize(object_base+2)
- line_width = line_maxX - line_minX
- line_width_half = line_width / 2
- X_SIZE_STEP = 2 * 2 ## 2ہا ´ـہ§·خ¸¸ ءُ°،اط¾ك اش
- Y_SIZE_STEP = 8
- sxPos = door_maxX - corner_minX + (line_width_half*X_SIZE_STEP)
- exPos = -sxPos
- syPos = 0
- eyPos = -(corner_maxY*2 + line_width*Y_SIZE_STEP)
- self.sxPos = sxPos
- self.syPos = syPos
- self.exPos = exPos
- self.eyPos = eyPos
- z = self.__GetBuildInPosition()
- ## Door
- self.__CreateWallBlock(object_base+4, 0.0, syPos)
- ## Corner
- self.__CreateWallBlock(object_base+1, sxPos, syPos)
- self.__CreateWallBlock(object_base+1, exPos, syPos, 270.0)
- self.__CreateWallBlock(object_base+1, sxPos, eyPos, 90.0)
- self.__CreateWallBlock(object_base+1, exPos, eyPos,180.0 )
- ## Line
- lineBlock = object_base+2
- line_startX = -door_maxX - line_minX - (line_width_half*X_SIZE_STEP)
- self.__CreateWallBlock(lineBlock, line_startX, eyPos)
- self.__CreateWallBlock(lineBlock, line_startX+line_width*1, eyPos)
- self.__CreateWallBlock(lineBlock, line_startX+line_width*2, eyPos)
- self.__CreateWallBlock(lineBlock, line_startX+line_width*3, eyPos)
- for i in xrange(X_SIZE_STEP):
- self.__CreateWallBlock(lineBlock, line_startX+line_width*(3+i+1), eyPos)
- for i in xrange(X_SIZE_STEP/2):
- self.__CreateWallBlock(lineBlock, door_minX - line_maxX - line_width*i, syPos)
- self.__CreateWallBlock(lineBlock, door_maxX - line_minX + line_width*i, syPos)
- for i in xrange(Y_SIZE_STEP):
- self.__CreateWallBlock(lineBlock, sxPos, line_minX + corner_minX - line_width*i, 90.0)
- self.__CreateWallBlock(lineBlock, exPos, line_minX + corner_minX - line_width*i, 90.0)
- self.SetBuildingPosition(int(self.x), int(self.y), self.__GetBuildInPosition())
- def __DeleteInstance(self):
- if not self.indexList:
- return
- for index in self.indexList:
- chr.DeleteInstance(index)
- self.indexList = []
- self.raceList = []
- self.posList = []
- self.rotList = []
- def __CreateInstance(self, race):
- self.__DeleteInstance()
- self.race = race
- idx = self.START_INSTANCE_INDEX
- self.indexList.append(idx)
- self.posList.append((0, 0))
- self.rotList.append(0)
- chr.CreateInstance(idx)
- chr.SelectInstance(idx)
- chr.SetVirtualID(idx)
- chr.SetInstanceType(chr.INSTANCE_TYPE_OBJECT)
- chr.SetRace(race)
- chr.SetArmor(0)
- chr.Refresh()
- chr.SetLoopMotion(chr.MOTION_WAIT)
- chr.SetBlendRenderMode(idx, self.BUILDING_ALPHA)
- self.SetBuildingPosition(int(self.x), int(self.y), 0)
- self.ctrlRotationX.SetSliderPos(0.5)
- self.ctrlRotationY.SetSliderPos(0.5)
- self.ctrlRotationZ.SetSliderPos(0.5)
- def Build(self):
- if not self.__IsEnoughMoney():
- self.__PopupDialog(localeInfo.GUILD_NOT_ENOUGH_MONEY)
- return
- if not self.__IsEnoughMaterialStone():
- self.__PopupDialog(localeInfo.GUILD_NOT_ENOUGH_MATERIAL)
- return
- if not self.__IsEnoughMaterialLog():
- self.__PopupDialog(localeInfo.GUILD_NOT_ENOUGH_MATERIAL)
- return
- if not self.__IsEnoughMaterialPlywood():
- self.__PopupDialog(localeInfo.GUILD_NOT_ENOUGH_MATERIAL)
- return
- ## /build c vnum x y x_rot y_rot z_rot
- ## /build d vnum
- if "BUILDIN" == self.type:
- for i in xrange(len(self.raceList)):
- race = self.raceList[i]
- xPos, yPos = self.posList[i]
- rot = self.rotList[i]
- net.SendChatPacket("/build c %d %d %d %d %d %d" % (race, int(self.x+xPos), int(self.y+yPos), self.rot_x, self.rot_y, rot))
- else:
- net.SendChatPacket("/build c %d %d %d %d %d %d" % (self.race, int(self.x), int(self.y), self.rot_x, self.rot_y, self.rot_z))
- self.Close()
- def Open(self):
- x, y, z = player.GetMainCharacterPosition()
- app.SetCameraSetting(int(x), int(-y), int(z), 3000, 0, 30)
- background.VisibleGuildArea()
- self.x = x
- self.y = y
- self.z = z
- self.categoryList.SelectItem(0)
- self.buildingList.SelectItem(0)
- self.SetTop()
- self.Show()
- self.__DisablePCBlocker()
- import debugInfo
- if debugInfo.IsDebugMode():
- self.categoryList.SelectItem(2)
- self.buildingList.SelectItem(0)
- def Close(self):
- self.__DeleteInstance()
- background.DisableGuildArea()
- self.Hide()
- self.__OnClosePopupDialog()
- self.__EnablePCBlocker()
- self.__UnlockCameraMoving()
- if self.closeEvent:
- self.closeEvent()
- def Destory(self):
- self.Close()
- self.ClearDictionary()
- self.board = None
- self.categoryList = None
- self.buildingList = None
- self.listScrollBar = None
- self.positionButton = None
- self.previewButton = None
- self.posValueX = None
- self.posValueY = None
- self.ctrlRotationX = None
- self.ctrlRotationY = None
- self.ctrlRotationZ = None
- self.buildingPriceValue = None
- self.buildingMaterialStoneValue = None
- self.buildingMaterialLogValue = None
- self.buildingMaterialPlywoodValue = None
- self.closeEvent = None
- def SetCloseEvent(self, event):
- self.closeEvent = event
- def __PopupDialog(self, text):
- popup = uiCommon.PopupDialog()
- popup.SetText(text)
- popup.SetAcceptEvent(self.__OnClosePopupDialog)
- popup.Open()
- self.popup = popup
- def __OnClosePopupDialog(self):
- self.popup = None
- def __EnablePCBlocker(self):
- ## PC Blocker أ³¸®¸¦ ؤز´ظ. (إُ¸ياطءü)
- chr.SetInstanceType(chr.INSTANCE_TYPE_BUILDING)
- for idx in self.indexList:
- chr.SetBlendRenderMode(idx, 1.0)
- def __DisablePCBlocker(self):
- ## PC Blocker أ³¸®¸¦ ²ِ´ظ. (¾بإُ¸ياطءü)
- chr.SetInstanceType(chr.INSTANCE_TYPE_OBJECT)
- for idx in self.indexList:
- chr.SetBlendRenderMode(idx, self.BUILDING_ALPHA)
- def __OnSelectPositioningMode(self):
- if self.MODE_PREVIEW == self.mode:
- self.positionButton.SetUp()
- return
- self.mode = self.MODE_POSITIONING
- self.Hide()
- def __OnEnterPreviewMode(self):
- if self.MODE_POSITIONING == self.mode:
- self.previewButton.SetUp()
- return
- self.mode = self.MODE_PREVIEW
- self.positionButton.SetUp()
- self.__UnlockCameraMoving()
- self.__EnablePCBlocker()
- def __OnLeavePreviewMode(self):
- self.__RestoreViewMode()
- def __RestoreViewMode(self):
- self.__DisablePCBlocker()
- self.__LockCameraMoving()
- self.mode = self.MODE_VIEW
- self.positionButton.SetUp()
- self.previewButton.SetUp()
- def __IsEnoughMoney(self):
- if app.IsEnableTestServerFlag():
- return True
- curMoney = player.GetMoney()
- if curMoney < self.needMoney:
- return False
- return True
- def __IsEnoughMaterialStone(self):
- if app.IsEnableTestServerFlag():
- return True
- curStoneCount = player.GetItemCountByVnum(MATERIAL_STONE_ID)
- if curStoneCount < self.needStoneCount:
- return False
- return True
- def __IsEnoughMaterialLog(self):
- if app.IsEnableTestServerFlag():
- return True
- curLogCount = player.GetItemCountByVnum(MATERIAL_LOG_ID)
- if curLogCount < self.needLogCount:
- return False
- return True
- def __IsEnoughMaterialPlywood(self):
- if app.IsEnableTestServerFlag():
- return True
- curPlywoodCount = player.GetItemCountByVnum(MATERIAL_PLYWOOD_ID)
- if curPlywoodCount < self.needPlywoodCount:
- return False
- return True
- def __OnSelectCategory(self):
- self.listScrollBar.SetPos(0.0)
- self.__RefreshItem()
- def __SetBuildingData(self, data):
- self.buildingPriceValue.SetText(NumberToMoneyString(data["PRICE"]))
- self.needMoney = int(data["PRICE"])
- materialList = data["MATERIAL"]
- self.needStoneCount = int(materialList[MATERIAL_STONE_INDEX])
- self.needLogCount = int(materialList[MATERIAL_LOG_INDEX])
- self.needPlywoodCount = int(materialList[MATERIAL_PLYWOOD_INDEX])
- if (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/ca") and (localeInfo.IsEUROPE() and app.GetLocalePath() != "locale/br"):
- self.buildingMaterialStoneValue.SetText(materialList[MATERIAL_STONE_INDEX])
- self.buildingMaterialLogValue.SetText(materialList[MATERIAL_LOG_INDEX] )
- self.buildingMaterialPlywoodValue.SetText(materialList[MATERIAL_PLYWOOD_INDEX])
- else:
- self.buildingMaterialStoneValue.SetText(materialList[MATERIAL_STONE_INDEX] + localeInfo.THING_COUNT)
- self.buildingMaterialLogValue.SetText(materialList[MATERIAL_LOG_INDEX] + localeInfo.THING_COUNT)
- self.buildingMaterialPlywoodValue.SetText(materialList[MATERIAL_PLYWOOD_INDEX] + localeInfo.THING_COUNT)
- if self.__IsEnoughMoney():
- self.buildingPriceValue.SetPackedFontColor(self.ENABLE_COLOR)
- else:
- self.buildingPriceValue.SetPackedFontColor(self.DISABLE_COLOR)
- if self.__IsEnoughMaterialStone():
- self.buildingMaterialStoneValue.SetPackedFontColor(self.ENABLE_COLOR)
- else:
- self.buildingMaterialStoneValue.SetPackedFontColor(self.DISABLE_COLOR)
- if self.__IsEnoughMaterialLog():
- self.buildingMaterialLogValue.SetPackedFontColor(self.ENABLE_COLOR)
- else:
- self.buildingMaterialLogValue.SetPackedFontColor(self.DISABLE_COLOR)
- if self.__IsEnoughMaterialPlywood():
- self.buildingMaterialPlywoodValue.SetPackedFontColor(self.ENABLE_COLOR)
- else:
- self.buildingMaterialPlywoodValue.SetPackedFontColor(self.DISABLE_COLOR)
- self.rot_x_limit = data["X_ROT_LIMIT"]
- self.rot_y_limit = data["Y_ROT_LIMIT"]
- self.rot_z_limit = data["Z_ROT_LIMIT"]
- self.ctrlRotationX.Enable()
- self.ctrlRotationY.Enable()
- self.ctrlRotationZ.Enable()
- if 0 == self.rot_x_limit:
- self.ctrlRotationX.Disable()
- if 0 == self.rot_y_limit:
- self.ctrlRotationY.Disable()
- if 0 == self.rot_z_limit:
- self.ctrlRotationZ.Disable()
- def __OnSelectBuilding(self):
- buildingIndex = self.buildingList.GetSelectedItem()
- if buildingIndex >= len(BUILDING_DATA_LIST):
- return
- categoryIndex = self.categoryList.GetSelectedItem()
- if categoryIndex >= len(self.GUILD_CATEGORY_LIST):
- return
- selectedType = self.GUILD_CATEGORY_LIST[categoryIndex][0]
- index = 0
- for data in BUILDING_DATA_LIST:
- type = data["TYPE"]
- vnum = data["VNUM"]
- if selectedType != type:
- continue
- if index == buildingIndex:
- self.type = type
- if "BUILDIN" == self.type:
- self.__CreateBuildInInstance(vnum)
- else:
- self.__CreateInstance(vnum)
- self.__SetBuildingData(data)
- index += 1
- def __OnScrollBuildingList(self):
- viewItemCount = self.buildingList.GetViewItemCount()
- itemCount = self.buildingList.GetItemCount()
- pos = self.listScrollBar.GetPos() * (itemCount-viewItemCount)
- self.buildingList.SetBasePos(int(pos))
- def __OnChangeRotation(self):
- self.rot_x = self.ctrlRotationX.GetSliderPos() * self.rot_x_limit - self.rot_x_limit/2
- self.rot_y = self.ctrlRotationY.GetSliderPos() * self.rot_y_limit - self.rot_y_limit/2
- self.rot_z = (self.ctrlRotationZ.GetSliderPos() * 360 + 180) % 360
- if "BUILDIN" == self.type:
- chr.SetRotationAll(self.rot_x, self.rot_y, self.rot_z)
- else:
- chr.SetRotationAll(self.rot_x, self.rot_y, self.rot_z)
- def __LockCameraMoving(self):
- app.SetCameraSetting(int(self.x), int(-self.y), int(self.z), 3000, 0, 30)
- def __UnlockCameraMoving(self):
- app.SetDefaultCamera()
- def __RefreshItem(self):
- self.buildingList.ClearItem()
- categoryIndex = self.categoryList.GetSelectedItem()
- if categoryIndex >= len(self.GUILD_CATEGORY_LIST):
- return
- selectedType = self.GUILD_CATEGORY_LIST[categoryIndex][0]
- index = 0
- for data in BUILDING_DATA_LIST:
- if selectedType != data["TYPE"]:
- continue
- if data["SHOW"]:
- self.buildingList.InsertItem(index, data["LOCAL_NAME"])
- index += 1
- self.buildingList.SelectItem(0)
- if self.buildingList.GetItemCount() < self.buildingList.GetViewItemCount():
- self.buildingList.SetSize(120, self.buildingList.GetHeight())
- self.buildingList.LocateItem()
- self.listScrollBar.Hide()
- else:
- self.buildingList.SetSize(105, self.buildingList.GetHeight())
- self.buildingList.LocateItem()
- self.listScrollBar.Show()
- def SettleCurrentPosition(self):
- guildID = miniMap.GetGuildAreaID(self.x, self.y)
- import debugInfo
- if debugInfo.IsDebugMode():
- guildID = player.GetGuildID()
- if guildID != player.GetGuildID():
- return
- self.__RestoreViewMode()
- self.__LockCameraMoving()
- self.Show()
- def SetBuildingPosition(self, x, y, z):
- self.x = x
- self.y = y
- self.posValueX.SetText(str(int(x)))
- self.posValueY.SetText(str(int(y)))
- for i in xrange(len(self.indexList)):
- idx = self.indexList[i]
- xPos, yPos = self.posList[i]
- chr.SelectInstance(idx)
- if 0 != z:
- self.z = z
- chr.SetPixelPosition(int(x+xPos), int(y+yPos), int(z))
- else:
- chr.SetPixelPosition(int(x+xPos), int(y+yPos))
- def IsPositioningMode(self):
- if self.MODE_POSITIONING == self.mode:
- return True
- return False
- def IsPreviewMode(self):
- if self.MODE_PREVIEW == self.mode:
- return True
- return False
- def OnPressEscapeKey(self):
- self.Close()
- return True
- """
- - اء·خإنؤف
- °شہسµ¹ہش½أ:
- RecvLandPacket:
- CPythonMiniMap::RegisterGuildArea
- °شہسہجµ؟ءك:
- PythonPlayer::Update()
- CPythonPlayer::__Update_NotifyGuildAreaEvent()
- game.py.BINARY_Guild_EnterGuildArea
- uigameButton.GameButtonWindow.ShowBuildButton()
- game.py.BINARY_Guild_ExitGuildArea
- uigameButton.GameButtonWindow.HideBuildButton()
- BuildButton:
- !±وµهہهہخءِ أ³¸® ¾ّہ½
- !°ا¹°ہج ہض¾îµµ ء±â ¹ِئ°ہ؛ ہضہ½
- !°ا¹°ہج ہس½أ·خ »ç؟ëاد´آ VID ´آ ¼¹ِ°، ؛¸³»ءض´آ °ح°ْ ب¥µ؟µة ؟°·ء°، ہضہ½
- !°ا¹° VNUM ہ؛ BuildGuildBuildingWindow.BUILDING_VNUM_LIST ¸¦ ہج؟ëاط ؛¯ب¯
- !°ا¹° ءِہ»¶§´آ /build c(reate)
- !°ا¹° ؛خ¼ْ¶§´آ /build d(estroy)
- !rotation ہا ´ـہ§´آ degree
- interfaceModule.interface.__OnClickBuildButton:
- interfaceModule.interface.BUILD_OpenWindow:
- AcceptButton:
- BuildGuildBuildingWindow.Build:
- net.SendChatPacket("/build c vnum x y x_rot y_rot z_rot")
- PreviewButton:
- __OnPreviewMode:
- __RestoreViewMode:
- °ا¹° ؛خ¼ِ±â:
- uiTarget.TargetBoard.__OnDestroyBuilding
- net.SendChatPacket("/build d vid")
- """
- 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()
- import chrmgr
- chrmgr.CreateRace(0)
- chrmgr.SelectRace(0)
- chrmgr.SetPathName("d:/ymir Work/pc/warrior/")
- chrmgr.LoadRaceData("warrior.msm")
- chrmgr.SetPathName("d:/ymir work/pc/warrior/general/")
- chrmgr.RegisterMotionMode(chr.MOTION_MODE_GENERAL)
- chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_WAIT, "wait.msa")
- chrmgr.RegisterMotionData(chr.MOTION_MODE_GENERAL, chr.MOTION_RUN, "run.msa")
- def LoadGuildBuildingList(filename):
- handle = app.OpenTextFile(filename)
- count = app.GetTextFileLineCount(handle)
- for i in xrange(count):
- line = app.GetTextFileLine(handle, i)
- tokens = line.split("\t")
- TOKEN_VNUM = 0
- TOKEN_TYPE = 1
- TOKEN_NAME = 2
- TOKEN_LOCAL_NAME = 3
- NO_USE_TOKEN_SIZE_1 = 4
- NO_USE_TOKEN_SIZE_2 = 5
- NO_USE_TOKEN_SIZE_3 = 6
- NO_USE_TOKEN_SIZE_4 = 7
- TOKEN_X_ROT_LIMIT = 8
- TOKEN_Y_ROT_LIMIT = 9
- TOKEN_Z_ROT_LIMIT = 10
- TOKEN_PRICE = 11
- TOKEN_MATERIAL = 12
- TOKEN_NPC = 13
- TOKEN_GROUP = 14
- TOKEN_DEPEND_GROUP = 15
- TOKEN_ENABLE_FLAG = 16
- LIMIT_TOKEN_COUNT = 17
- if not tokens[TOKEN_VNUM].isdigit():
- continue
- if not int(tokens[TOKEN_ENABLE_FLAG]):
- continue
- if len(tokens) < LIMIT_TOKEN_COUNT:
- import dbg
- dbg.TraceError("Strange token count [%d/%d] [%s]" % (len(tokens), LIMIT_TOKEN_COUNT, line))
- continue
- ENABLE_FLAG_TYPE_NOT_USE = False
- ENABLE_FLAG_TYPE_USE = True
- ENABLE_FLAG_TYPE_USE_BUT_HIDE = 2
- if ENABLE_FLAG_TYPE_NOT_USE == int(tokens[TOKEN_ENABLE_FLAG]):
- continue
- vnum = int(tokens[TOKEN_VNUM])
- type = tokens[TOKEN_TYPE]
- name = tokens[TOKEN_NAME]
- localName = tokens[TOKEN_LOCAL_NAME]
- xRotLimit = int(tokens[TOKEN_X_ROT_LIMIT])
- yRotLimit = int(tokens[TOKEN_Y_ROT_LIMIT])
- zRotLimit = int(tokens[TOKEN_Z_ROT_LIMIT])
- price = tokens[TOKEN_PRICE]
- material = tokens[TOKEN_MATERIAL]
- folderName = ""
- if "HEADQUARTER" == type:
- folderName = "headquarter"
- elif "FACILITY" == type:
- folderName = "facility"
- elif "OBJECT" == type:
- folderName = "object"
- ##"BuildIn" Is made by exist instance.
- materialList = ["0", "0", "0"]
- if material[0] == "\"":
- material = material[1:]
- if material[-1] == "\"":
- material = material[:-1]
- for one in material.split("/"):
- data = one.split(",")
- if 2 != len(data):
- continue
- itemID = int(data[0])
- count = data[1]
- if itemID == MATERIAL_STONE_ID:
- materialList[MATERIAL_STONE_INDEX] = count
- elif itemID == MATERIAL_LOG_ID:
- materialList[MATERIAL_LOG_INDEX] = count
- elif itemID == MATERIAL_PLYWOOD_ID:
- materialList[MATERIAL_PLYWOOD_INDEX] = count
- import chrmgr
- chrmgr.RegisterRaceSrcName(name, folderName)
- chrmgr.RegisterRaceName(vnum, name)
- appendingData = { "VNUM":vnum,
- "TYPE":type,
- "NAME":name,
- "LOCAL_NAME":localName,
- "X_ROT_LIMIT":xRotLimit,
- "Y_ROT_LIMIT":yRotLimit,
- "Z_ROT_LIMIT":zRotLimit,
- "PRICE":price,
- "MATERIAL":materialList,
- "SHOW" : True }
- if ENABLE_FLAG_TYPE_USE_BUT_HIDE == int(tokens[TOKEN_ENABLE_FLAG]):
- appendingData["SHOW"] = False
- BUILDING_DATA_LIST.append(appendingData)
- app.CloseTextFile(handle)
- LoadGuildBuildingList(app.GetLocalePath()+"/GuildBuildingList.txt")
- class TestGame(ui.Window):
- def __init__(self):
- ui.Window.__init__(self)
- x = 30000
- y = 40000
- self.wndGuildBuilding = None
- self.onClickKeyDict = {}
- self.onClickKeyDict[app.DIK_SPACE] = lambda: self.OpenBuildGuildBuildingWindow()
- background.Initialize()
- background.LoadMap("metin2_map_a1", x, y, 0)
- background.SetShadowLevel(background.SHADOW_ALL)
- self.MakeCharacter(1, 0, x, y)
- player.SetMainCharacterIndex(1)
- chr.SelectInstance(1)
- def __del__(self):
- ui.Window.__del__(self)
- def MakeCharacter(self, index, race, x, y):
- chr.CreateInstance(index)
- chr.SelectInstance(index)
- chr.SetVirtualID(index)
- chr.SetInstanceType(chr.INSTANCE_TYPE_PLAYER)
- chr.SetRace(race)
- chr.SetArmor(0)
- chr.SetHair(0)
- chr.Refresh()
- chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
- chr.SetLoopMotion(chr.MOTION_WAIT)
- chr.SetPixelPosition(x, y)
- chr.SetDirection(chr.DIR_NORTH)
- def OpenBuildGuildBuildingWindow(self):
- self.wndGuildBuilding = BuildGuildBuildingWindow()
- self.wndGuildBuilding.Open()
- self.wndGuildBuilding.SetParent(self)
- self.wndGuildBuilding.SetTop()
- def OnKeyUp(self, key):
- if key in self.onClickKeyDict:
- self.onClickKeyDict[key]()
- return True
- def OnMouseLeftButtonDown(self):
- if self.wndGuildBuilding:
- if self.wndGuildBuilding.IsPositioningMode():
- self.wndGuildBuilding.SettleCurrentPosition()
- return
- player.SetMouseState(player.MBT_LEFT, player.MBS_PRESS);
- return True
- def OnMouseLeftButtonUp(self):
- if self.wndGuildBuilding:
- return
- player.SetMouseState(player.MBT_LEFT, player.MBS_CLICK)
- return True
- def OnMouseRightButtonDown(self):
- player.SetMouseState(player.MBT_RIGHT, player.MBS_PRESS);
- return True
- def OnMouseRightButtonUp(self):
- player.SetMouseState(player.MBT_RIGHT, player.MBS_CLICK);
- return True
- def OnMouseMiddleButtonDown(self):
- player.SetMouseMiddleButtonState(player.MBS_PRESS)
- def OnMouseMiddleButtonUp(self):
- player.SetMouseMiddleButtonState(player.MBS_CLICK)
- def OnUpdate(self):
- app.UpdateGame()
- if self.wndGuildBuilding:
- if self.wndGuildBuilding.IsPositioningMode():
- x, y, z = background.GetPickingPoint()
- self.wndGuildBuilding.SetBuildingPosition(x, y, z)
- def OnRender(self):
- app.RenderGame()
- grp.PopState()
- grp.SetInterfaceRenderState()
- game = TestGame()
- game.SetSize(systemSetting.GetWidth(), systemSetting.GetHeight())
- game.Show()
- wndGuildBuilding = BuildGuildBuildingWindow()
- wndGuildBuilding.Open()
- wndGuildBuilding.SetTop()
- app.Loop()
- """
- - اء·خإنؤف
- °شہسµ¹ہش½أ:
- RecvLandPacket:
- CPythonMiniMap::RegisterGuildArea
- °شہسہجµ؟ءك:
- PythonPlayer::Update()
- CPythonPlayer::__Update_NotifyGuildAreaEvent()
- game.py.BINARY_Guild_EnterGuildArea
- uigameButton.GameButtonWindow.ShowBuildButton()
- game.py.BINARY_Guild_ExitGuildArea
- uigameButton.GameButtonWindow.HideBuildButton()
- BuildButton:
- !±وµهہهہخءِ أ³¸® ¾ّہ½
- !°ا¹°ہج ہض¾îµµ ء±â ¹ِئ°ہ؛ ہضہ½
- !°ا¹°ہج ہس½أ·خ »ç؟ëاد´آ VID ´آ ¼¹ِ°، ؛¸³»ءض´آ °ح°ْ ب¥µ؟µة ؟°·ء°، ہضہ½
- !°ا¹° VNUM ہ؛ BuildGuildBuildingWindow.BUILDING_VNUM_LIST ¸¦ ہج؟ëاط ؛¯ب¯
- !°ا¹° ءِہ»¶§´آ /build c(reate)
- !°ا¹° ؛خ¼ْ¶§´آ /build d(estroy)
- !rotation ہا ´ـہ§´آ degree
- interfaceModule.interface.__OnClickBuildButton:
- interfaceModule.interface.BUILD_OpenWindow:
- AcceptButton:
- BuildGuildBuildingWindow.Build:
- net.SendChatPacket("/build c vnum x y x_rot y_rot z_rot")
- x_rot, y_rot ´آ AffectContainer؟، ہْہه
- PreviewButton:
- __OnPreviewMode:
- __RestoreViewMode:
- °ا¹° ؛خ¼ِ±â:
- uiTarget.TargetBoard.__OnDestroyBuilding
- net.SendChatPacket("/build d vid")
- """
syserr
Code- 0605 10:17:30787 :: File "uiGuild.py", line 1413, in Open
- 0605 10:17:30787 :: File "uiGuild.py", line 805, in Show
- 0605 10:17:30787 :: File "uiGuild.py", line 1630, in RefreshGuildMemberPage
- 0605 10:17:30787 :: File "uiGuild.py", line 1742, in RefreshGuildMemberPageGradeComboBox
- 0605 10:17:30787 :: ValueError
- 0605 10:17:30787 :: :
- 0605 10:17:30787 :: need more than 7 values to unpack
- 0605 10:17:30787 ::
-
thanks bro
fixed -
hello
i got this error
Bitte melden Sie sich an, um diesen Link zu sehen.
src
Code- #ifdef ENABLE_STATISTICS_GUILD
- void CGuild::SaveAllMember()
- {
- for (auto iter = m_member.begin(); iter != m_member.end(); iter++)
- {
- SaveMember(iter->first);
- }
- }
- void CGuild::IncKillCounter(DWORD pid)
- {
- for (TGuildMemberContainer::iterator iter = m_member.begin(); iter != m_member.end(); iter++)
- {
- if (iter->first == pid)
- {
- iter->second.Kill++;
- return;
- }
- }
- }
- void CGuild::IncDieCounter(DWORD pid)
- {
- for (TGuildMemberContainer::iterator iter = m_member.begin(); iter != m_member.end(); iter++)
- {
- if (iter->first == pid)
- {
- iter->second.Die++;
- return;
- }
- }
- }
- #endif
what is wrong ?
thanks
-
try distribute or release mode
some problem ..
-
do you mean
FoxFS.hFoxFS.lib
Yes, I added them
-
hello all
im trying to add FoxPack in src client but i got this error
Bitte melden Sie sich an, um diesen Link zu sehen.
thanks
-
re upload ..
-
hello
i get this error in syserr
Code- 0416 03:13:20769 :: Hair number 4003 is not exist.
- 0416 03:13:21284 :: Hair number 1006 is not exist.
- 0416 03:13:21870 :: Hair number 1005 is not exist.
- 0416 03:13:23240 :: Hair number 1017 is not exist.
- 0416 03:13:23373 :: Hair number 7049 is not exist.
- 0416 03:13:23931 :: Hair number 1017 is not exist.
- 0416 03:13:23954 :: Hair number 2008 is not exist.
- 0416 03:13:24120 :: Hair number 1005 is not exist.
msm
Code- ScriptType RaceDataScript
- BaseModelFileName "D:/YMIR WORK/pc/shaman/shaman_novice.GR2"
- Group AcceData
- {
- PathName "d:/ymir work/pc/shaman/"
- AcceDataCount 99
- Group AcceData00
- {
- AcceIndex 0
- Model "acce/acce.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData01
- {
- AcceIndex 1
- Model "acce/acce_01_001.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData02
- {
- AcceIndex 2
- Model "acce/acce_01_002.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData03
- {
- AcceIndex 3
- Model "acce/acce_01_003.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData04
- {
- AcceIndex 4
- Model "acce/acce_01_004.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData05
- {
- AcceIndex 5
- Model "acce/acce_02_001.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData06
- {
- AcceIndex 6
- Model "acce/acce_02_002.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData07
- {
- AcceIndex 7
- Model "acce/acce_02_003.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData08
- {
- AcceIndex 8
- Model "acce/acce_02_004.gr2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01.dds"
- }
- Group AcceData09
- {
- AcceIndex 9
- Model "acce/acce_03_85_011.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData10
- {
- AcceIndex 10
- Model "acce/acce_03_85_012.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData11
- {
- AcceIndex 11
- Model "acce/acce_03_85_013.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData12
- {
- AcceIndex 12
- Model "acce/acce_03_85_014.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData13
- {
- AcceIndex 13
- Model "acce/acce_04_85_015.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData14
- {
- AcceIndex 14
- Model "acce/acce_04_85_016.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData15
- {
- AcceIndex 15
- Model "acce/acce_04_85_017.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData16
- {
- AcceIndex 16
- Model "acce/acce_04_85_018.gr2"
- SourceSkin "acce/acce_85_011-018.dds"
- TargetSkin "acce/acce_85_011-018.dds"
- }
- Group AcceData17
- {
- SpecialPath "d:/ymir work/item/wing/"
- AcceIndex 17
- Model "acce_05_85_021.gr2"
- SourceSkin "acce_05_85_021_024.dds"
- TargetSkin "acce_05_85_021_024.dds"
- }
- Group AcceData18
- {
- SpecialPath "d:/ymir work/item/wing/"
- AcceIndex 18
- Model "acce_05_85_022.gr2"
- SourceSkin "acce_05_85_021_024.dds"
- TargetSkin "acce_05_85_021_024.dds"
- }
- Group AcceData19
- {
- SpecialPath "d:/ymir work/item/wing/"
- AcceIndex 19
- Model "acce_05_85_023.gr2"
- SourceSkin "acce_05_85_021_024.dds"
- TargetSkin "acce_05_85_021_024.dds"
- }
- Group AcceData20
- {
- SpecialPath "d:/ymir work/item/wing/"
- AcceIndex 20
- Model "acce_05_85_024.gr2"
- SourceSkin "acce_05_85_021_024.dds"
- TargetSkin "acce_05_85_021_024.dds"
- }
- Group AcceData21
- {
- SpecialPath "d:/ymir work/pc/shaman/"
- AcceIndex 21
- Model "acce/acce_01_004.GR2"
- SourceSkin "acce/acce_01.dds"
- TargetSkin "acce/acce_01_2.dds"
- }
- }
- Group HairData
- {
- PathName "d:/ymir Work/pc/shaman/"
- HairDataCount 999
- Group HairData00
- {
- HairIndex 0
- Model "hair/hair_1_1.gr2"
- SourceSkin "hair/hair_1_1.dds"
- TargetSkin "shaman_hair_01.dds"
- }
- Group HairData01
- {
- HairIndex 1
- Model "hair/hair_1_1.gr2"
- SourceSkin "hair/hair_1_1.dds"
- TargetSkin "shaman_hair_01_white.dds"
- }
- Group HairData02
- {
- HairIndex 2
- Model "hair/hair_1_1.gr2"
- SourceSkin "hair/hair_1_1.dds"
- TargetSkin "shaman_hair_01_gold.dds"
- }
- Group HairData03
- {
- HairIndex 3
- Model "hair/hair_1_1.gr2"
- SourceSkin "hair/hair_1_1.dds"
- TargetSkin "shaman_hair_01_red.dds"
- }
- Group HairData04
- {
- HairIndex 4
- Model "hair/hair_1_1.gr2"
- SourceSkin "hair/hair_1_1.dds"
- TargetSkin "shaman_hair_01_brown.dds"
- }
- Group HairData05
- {
- HairIndex 5
- Model "hair/hair_1_1.gr2"
- SourceSkin "hair/hair_1_1.dds"
- TargetSkin "shaman_hair_01_black.dds"
- }
- Group HairData06
- {
- HairIndex 4001
- Model "hair/hair_2_1.gr2"
- SourceSkin "hair/hair_2_1.dds"
- TargetSkin "hair/hair_2_1.dds"
- }
- Group HairData07
- {
- HairIndex 4002
- Model "hair/hair_2_2.gr2"
- SourceSkin "hair/hair_2_2.dds"
- TargetSkin "hair/hair_2_2.dds"
- }
- Group HairData08
- {
- HairIndex 4003
- Model "hair/hair_2_3.gr2"
- SourceSkin "hair/hair_2_3.dds"
- TargetSkin "hair/hair_2_3.dds"
- }
- Group HairData09
- {
- HairIndex 4004
- Model "hair/hair_2_4.gr2"
- SourceSkin "hair/hair_2_4.dds"
- TargetSkin "hair/hair_2_4.dds"
- }
- Group HairData10
- {
- HairIndex 4005
- Model "hair/hair_3_1.gr2"
- SourceSkin "hair/hair_3_1.dds"
- TargetSkin "hair/hair_3_1.dds"
- }
- Group HairData11
- {
- HairIndex 4006
- Model "hair/hair_3_2.gr2"
- SourceSkin "hair/hair_3_2.dds"
- TargetSkin "hair/hair_3_2.dds"
- }
- Group HairData12
- {
- HairIndex 4007
- Model "hair/hair_3_3.gr2"
- SourceSkin "hair/hair_3_3.dds"
- TargetSkin "hair/hair_3_3.dds"
- }
- Group HairData13
- {
- HairIndex 4008
- Model "hair/hair_3_4.gr2"
- SourceSkin "hair/hair_3_4.dds"
- TargetSkin "hair/hair_3_4.dds"
- }
- Group HairData14
- {
- HairIndex 4009
- Model "hair/hair_4_1.gr2"
- SourceSkin "hair/hair_4_1.dds"
- TargetSkin "hair/hair_4_1.dds"
- }
- Group HairData15
- {
- HairIndex 4010
- Model "hair/hair_4_2.gr2"
- SourceSkin "hair/hair_4_2.dds"
- TargetSkin "hair/hair_4_2.dds"
- }
- Group HairData16
- {
- HairIndex 4011
- Model "hair/hair_4_3.gr2"
- SourceSkin "hair/hair_4_3.dds"
- TargetSkin "hair/hair_4_3.dds"
- }
- Group HairData17
- {
- HairIndex 4012
- Model "hair/hair_4_4.gr2"
- SourceSkin "hair/hair_4_4.dds"
- TargetSkin "hair/hair_4_4.dds"
- }
- Group HairData18
- {
- HairIndex 4013
- Model "hair/hair_6_1.gr2"
- SourceSkin "hair/hair_6_1.dds"
- TargetSkin "hair/hair_6_1.dds"
- }
- Group HairData19
- {
- HairIndex 4014
- Model "hair/hair_5_1.gr2"
- SourceSkin "hair/hair_5_1.dds"
- TargetSkin "hair/hair_5_1.dds"
- }
- Group HairData20
- {
- HairIndex 4015
- Model "hair/hair_7_1.gr2"
- SourceSkin "hair/hair_7_1.dds"
- TargetSkin "hair/hair_7_1.dds"
- }
- Group HairData21
- {
- HairIndex 4016
- Model "hair/hair_8_1.gr2"
- SourceSkin "hair/hair_8_1.dds"
- TargetSkin "hair/hair_8_1.dds"
- }
- Group HairData22
- {
- HairIndex 4017
- Model "hair/hair_9_1.gr2"
- SourceSkin "hair/hair_9_1.dds"
- TargetSkin "hair/hair_9_1.dds"
- }
- Group HairData23
- {
- HairIndex 4018
- Model "hair/hair_10_1.gr2"
- SourceSkin "hair/hair_10_1.dds"
- TargetSkin "hair/hair_10_1.dds"
- }
- Group HairData24
- {
- HairIndex 5001
- Model "hair/hair_65_12.gr2"
- SourceSkin "hair/hair_65_2.dds"
- TargetSkin "hair/hair_65_2.dds"
- }
- Group HairData25
- {
- HairIndex 5002
- Model "hair/shaman_w.gr2"
- SourceSkin "hair/hair_14_1.dds"
- TargetSkin "hair/hair_14_1.dds"
- }
- Group HairData26
- {
- HairIndex 5008
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_1.dds"
- }
- Group HairData27
- {
- HairIndex 5003
- Model "hair/shaman_wg.gr2"
- SourceSkin "hair/hair_16_1.dds"
- TargetSkin "hair/hair_16_1.dds"
- }
- Group HairData28
- {
- HairIndex 5016
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_1.dds"
- }
- Group HairData29
- {
- HairIndex 5005
- Model "hair/hair_65_1.gr2"
- SourceSkin "hair/hair_65_1.dds"
- TargetSkin "hair/hair_65_1.dds"
- }
- Group HairData30
- {
- HairIndex 5007
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_3.dds"
- }
- Group HairData31
- {
- HairIndex 5006
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_4.dds"
- }
- Group HairData32
- {
- HairIndex 5009
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_5.dds"
- }
- Group HairData33
- {
- HairIndex 5010
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_6.dds"
- }
- Group HairData34
- {
- HairIndex 5011
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_7.dds"
- }
- Group HairData35
- {
- HairIndex 5012
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_8.dds"
- }
- Group HairData36
- {
- HairIndex 5013
- Model "hair/hair_15_1.gr2"
- SourceSkin "hair/hair_15_1.dds"
- TargetSkin "hair/hair_15_9.dds"
- }
- Group HairData37
- {
- HairIndex 5004
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_2.dds"
- }
- Group HairData38
- {
- HairIndex 5015
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_3.dds"
- }
- Group HairData39
- {
- HairIndex 5014
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_4.dds"
- }
- Group HairData40
- {
- HairIndex 5017
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_5.dds"
- }
- Group HairData41
- {
- HairIndex 5018
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_6.dds"
- }
- Group HairData42
- {
- HairIndex 5019
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_7.dds"
- }
- Group HairData43
- {
- HairIndex 5020
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_8.dds"
- }
- Group HairData44
- {
- HairIndex 5021
- Model "hair/hair_17_1.gr2"
- SourceSkin "hair/hair_17_1.dds"
- TargetSkin "hair/hair_17_9.dds"
- }
- Group HairData45
- {
- HairIndex 5027
- Model "hair/hair_3_2.gr2"
- SourceSkin "hair/hair_3_2.dds"
- TargetSkin "hair/hair_3_2.dds"
- }
- Group HairData46
- {
- HairIndex 5023
- Model "hair/hair_13_1.gr2"
- SourceSkin "hair/hair_13_1.dds"
- TargetSkin "hair/hair_13_1.dds"
- }
- Group HairData47
- {
- HairIndex 5024
- Model "hair/hair_18_1.gr2"
- SourceSkin "hair/hair_18_1.dds"
- TargetSkin "hair/hair_18_1.dds"
- }
- Group HairData48
- {
- HairIndex 5025
- Model "hair/hair_19_1.gr2"
- SourceSkin "hair/hair_19_1.dds"
- TargetSkin "hair/hair_19_1.dds"
- }
- Group HairData49
- {
- HairIndex 5030
- Model "hair/hair_22_1.gr2"
- SourceSkin "hair/hair_22_1.dds"
- TargetSkin "hair/hair_22_1.dds"
- }
- Group HairData50
- {
- HairIndex 5031
- Model "hair/hair_23_1.gr2"
- SourceSkin "hair/hair_23_1.dds"
- TargetSkin "hair/hair_23_1.dds"
- }
- Group HairData51
- {
- HairIndex 5034
- Model "hair/hair_24_1.gr2"
- SourceSkin "hair/hair_24_1.dds"
- TargetSkin "hair/hair_24_1.dds"
- }
- Group HairData52
- {
- HairIndex 5036
- Model "hair/hair_24_1.gr2"
- SourceSkin "hair/hair_24_1.dds"
- TargetSkin "hair/hair_24_2.dds"
- }
- Group HairData53
- {
- HairIndex 5038
- Model "hair/hair_24_1.gr2"
- SourceSkin "hair/hair_24_1.dds"
- TargetSkin "hair/hair_24_3.dds"
- }
- Group HairData54
- {
- HairIndex 5040
- Model "hair/hair_24_1.gr2"
- SourceSkin "hair/hair_24_1.dds"
- TargetSkin "hair/hair_24_4.dds"
- }
- Group HairData55
- {
- HairIndex 5042
- Model "hair/hair_24_1.gr2"
- SourceSkin "hair/hair_24_1.dds"
- TargetSkin "hair/hair_24_5.dds"
- }
- Group HairData56
- {
- HairIndex 5026
- Model "hair/hair_21_1.gr2"
- SourceSkin "hair/hair_21_1.dds"
- TargetSkin "hair/hair_21_1.dds"
- }
- Group HairData57
- {
- HairIndex 5045
- Model "hair/hair_11_1.gr2"
- SourceSkin "hair/hair_11_1.dds"
- TargetSkin "hair/hair_11_2.dds"
- }
- Group HairData58
- {
- HairIndex 5046
- Model "hair/hair_11_1.gr2"
- SourceSkin "hair/hair_11_1.dds"
- TargetSkin "hair/hair_11_3.dds"
- }
- Group HairData59
- {
- HairIndex 5047
- Model "hair/hair_11_1.gr2"
- SourceSkin "hair/hair_11_1.dds"
- TargetSkin "hair/hair_11_4.dds"
- }
- Group HairData60
- {
- HairIndex 5048
- Model "hair/hair_11_1.gr2"
- SourceSkin "hair/hair_11_1.dds"
- TargetSkin "hair/hair_11_5.dds"
- }
- Group HairData61
- {
- HairIndex 5049
- Model "hair/hair_28_1.gr2"
- SourceSkin "hair/hair_28_1.dds"
- TargetSkin "hair/hair_28_1.dds"
- }
- Group HairData62
- {
- HairIndex 5050
- Model "hair/hair_28_1.gr2"
- SourceSkin "hair/hair_28_1.dds"
- TargetSkin "hair/hair_28_1.dds"
- }
- Group HairData63
- {
- HairIndex 5051
- Model "hair/hair_29_1.gr2"
- SourceSkin "hair/hair_29_1.dds"
- TargetSkin "hair/hair_29_1.dds"
- }
- Group HairData64
- {
- HairIndex 5052
- Model "hair/hair_30_1.gr2"
- SourceSkin "hair/hair_30_1.dds"
- TargetSkin "hair/hair_30_1.dds"
- }
- Group HairData65
- {
- HairIndex 5053
- Model "hair/hair_31_1.gr2"
- SourceSkin "hair/hair_31_1.dds"
- TargetSkin "hair/hair_31_1.dds"
- }
- Group HairData66
- {
- HairIndex 5054
- Model "hair/hair_32_1.gr2"
- SourceSkin "hair/hair_32_1.dds"
- TargetSkin "hair/hair_32_1.dds"
- }
- Group HairData67
- {
- HairIndex 5056
- Model "hair/hair_14_1.gr2"
- SourceSkin "hair/hair_14_1.dds"
- TargetSkin "hair/hair_14_2.dds"
- }
- Group HairData68
- {
- HairIndex 5058
- Model "hair/hair_33_1.gr2"
- SourceSkin "hair/hair_33_1.dds"
- TargetSkin "hair/hair_33_1.dds"
- }
- Group HairData69
- {
- HairIndex 5060
- Model "hair/hair_34_1.gr2"
- SourceSkin "hair/hair_34_1.dds"
- TargetSkin "hair/hair_34_1.dds"
- }
- Group HairData70
- {
- HairIndex 5062
- Model "hair/hair_35_1.GR2"
- SourceSkin "hair/hair_35_1.dds"
- TargetSkin "hair/hair_35_1.dds"
- }
- Group HairData71
- {
- HairIndex 5063
- Model "hair/hair_37_1.GR2"
- SourceSkin "hair/hair_37_1.dds"
- TargetSkin "hair/hair_37_1.dds"
- }
- Group HairData72
- {
- HairIndex 5064
- Model "hair/hair_36_1.GR2"
- SourceSkin "hair/hair_36_1.dds"
- TargetSkin "hair/hair_36_1.dds"
- }
- Group HairData73
- {
- HairIndex 5065
- Model "hair/hair_38_1.GR2"
- SourceSkin "hair/hair_38_1.dds"
- TargetSkin "hair/hair_38_1.dds"
- }
- Group HairData74
- {
- HairIndex 5022
- Model "hair/hair_12_1.GR2"
- SourceSkin "hair/hair_12_1.dds"
- TargetSkin "hair/hair_12_1.dds"
- }
- Group HairData75
- {
- HairIndex 5043
- Model "hair/hair_25_1.GR2"
- SourceSkin "hair/hair_25_1.dds"
- TargetSkin "hair/hair_25_1.dds"
- }
- Group HairData76
- {
- HairIndex 5044
- Model "hair/hair_26_1.GR2"
- SourceSkin "hair/hair_26_1.dds"
- TargetSkin "hair/hair_26_1.dds"
- }
- Group HairData77
- {
- HairIndex 5045
- Model "hair/hair_27_1.GR2"
- SourceSkin "hair/hair_27_1.dds"
- TargetSkin "hair/hair_27_1.dds"
- }
- Group HairData78
- {
- HairIndex 5066
- Model "hair/hair_39_1.GR2"
- SourceSkin "hair/hair_39_1.dds"
- TargetSkin "hair/hair_39_1.dds"
- }
- Group HairData79
- {
- HairIndex 5067
- Model "hair/hair_40_1.GR2"
- SourceSkin "hair/hair_40_1.dds"
- TargetSkin "hair/hair_40_1.dds"
- }
- Group HairData80
- {
- HairIndex 4020
- Model "hair/hair_2_1.gr2"
- SourceSkin "hair/hair_2_1.dds"
- TargetSkin "hair/hair_2_5.dds"
- }
- Group HairData81
- {
- HairIndex 4021
- Model "hair/hair_3_1.gr2"
- SourceSkin "hair/hair_3_1.dds"
- TargetSkin "hair/hair_3_5.dds"
- }
- Group HairData82
- {
- HairIndex 4022
- Model "hair/hair_4_1.gr2"
- SourceSkin "hair/hair_4_1.dds"
- TargetSkin "hair/hair_4_5.dds"
- }
- Group HairData83
- {
- HairIndex 5070
- Model "hair/hair_41_1.gr2"
- SourceSkin "hair/hair_41_1.dds"
- TargetSkin "hair/hair_41_1.dds"
- }
- Group HairData84
- {
- HairIndex 5071
- Model "hair/hair_41_2.gr2"
- SourceSkin "hair/hair_41_2.dds"
- TargetSkin "hair/hair_41_2.dds"
- }
- Group HairData85
- {
- HairIndex 5072
- Model "hair/hair_43_2.gr2"
- SourceSkin "hair/hair_43_2.dds"
- TargetSkin "hair/hair_43_2.dds"
- }
- Group HairData86
- {
- HairIndex 5073
- Model "hair/hair_43_1.gr2"
- SourceSkin "hair/hair_43_1.dds"
- TargetSkin "hair/hair_43_1.dds"
- }
- Group HairData87
- {
- HairIndex 5076
- Model "hair/hair_44_1.gr2"
- SourceSkin "hair/hair_44_1.dds"
- TargetSkin "hair/hair_44_1.dds"
- }
- Group HairData88
- {
- HairIndex 5077
- Model "hair/hair_44_2.gr2"
- SourceSkin "hair/hair_44_2.dds"
- TargetSkin "hair/hair_44_2.dds"
- }
- Group HairData89
- {
- HairIndex 7000
- Model "hair/hair_46_1.gr2"
- SourceSkin "hair/hair_46_1.dds"
- TargetSkin "hair/hair_46_1.dds"
- }
- Group HairData90
- {
- HairIndex 7001
- Model "hair/hair_46_1.gr2"
- SourceSkin "hair/hair_46_1.dds"
- TargetSkin "hair/hair_46_2.dds"
- }
- Group HairData91
- {
- HairIndex 7002
- Model "hair/hair_45_1.gr2"
- SourceSkin "hair/hair_45_1.dds"
- TargetSkin "hair/hair_45_1.dds"
- }
- Group HairData92
- {
- HairIndex 7003
- Model "hair/hair_45_1.gr2"
- SourceSkin "hair/hair_45_1.dds"
- TargetSkin "hair/hair_45_2.dds"
- }
- Group HairData93
- {
- HairIndex 7020
- Model "hair/hair_44_1.gr2"
- SourceSkin "hair/hair_44_1.dds"
- TargetSkin "hair/hair_44_2.dds"
- }
- Group HairData94
- {
- HairIndex 7021
- Model "hair/hair_44_1.gr2"
- SourceSkin "hair/hair_44_1.dds"
- TargetSkin "hair/hair_44_3.dds"
- }
- Group HairData95
- {
- HairIndex 7022
- Model "hair/hair_44_1.gr2"
- SourceSkin "hair/hair_44_1.dds"
- TargetSkin "hair/hair_44_4.dds"
- }
- Group HairData96
- {
- HairIndex 7023
- Model "hair/hair_42_1.gr2"
- SourceSkin "hair/hair_42_1.dds"
- TargetSkin "hair/hair_42_1.dds"
- }
- Group HairData97
- {
- HairIndex 7024
- Model "hair/hair_42_1.gr2"
- SourceSkin "hair/hair_42_1.dds"
- TargetSkin "hair/hair_42_2.dds"
- }
- Group HairData98
- {
- HairIndex 7025
- Model "hair/hair_42_1.gr2"
- SourceSkin "hair/hair_42_1.dds"
- TargetSkin "hair/hair_42_3.dds"
- }
- Group HairData100
- {
- HairIndex 7026
- Model "hair/hair_49_1.gr2"
- SourceSkin "hair/hair_49_1.dds"
- TargetSkin "hair/hair_49_2.dds"
- }
- Group HairData101
- {
- HairIndex 7027
- Model "hair/hair_49_1.gr2"
- SourceSkin "hair/hair_49_1.dds"
- TargetSkin "hair/hair_49_1.dds"
- }
- Group HairData102
- {
- HairIndex 7028
- Model "hair/hair_47_1.gr2"
- SourceSkin "hair/hair_47_1.dds"
- TargetSkin "hair/hair_47_1.dds"
- }
- Group HairData103
- {
- HairIndex 7029
- Model "hair/hair_47_1.gr2"
- SourceSkin "hair/hair_47_1.dds"
- TargetSkin "hair/hair_47_2.dds"
- }
- Group HairData104
- {
- HairIndex 7030
- Model "hair/hair_48_1.gr2"
- SourceSkin "hair/hair_48_1.dds"
- TargetSkin "hair/hair_48_2.dds"
- }
- Group HairData105
- {
- HairIndex 7031
- Model "hair/hair_48_1.gr2"
- SourceSkin "hair/hair_48_1.dds"
- TargetSkin "hair/hair_48_1.dds"
- }
- Group HairData106
- {
- HairIndex 7032
- Model "hair/hair_40_1.gr2"
- SourceSkin "hair/hair_40_1.dds"
- TargetSkin "hair/hair_40_1_haies.dds"
- }
- Group HairData109
- {
- HairIndex 7035
- Model "hair/hair_50_1.gr2"
- SourceSkin "hair/hair_50_1.dds"
- TargetSkin "hair/hair_50_1.dds"
- }
- Group HairData110
- {
- HairIndex 7036
- Model "hair/hair_50_1.gr2"
- SourceSkin "hair/hair_50_1.dds"
- TargetSkin "hair/hair_50_2.dds"
- }
- Group HairData111
- {
- HairIndex 7037
- Model "hair/hair_51_1.gr2"
- SourceSkin "hair/hair_51_1.dds"
- TargetSkin "hair/hair_51_1.dds"
- }
- Group HairData112
- {
- HairIndex 7038
- Model "hair/hair_51_1.gr2"
- SourceSkin "hair/hair_51_1.dds"
- TargetSkin "hair/hair_51_2.dds"
- }
- Group HairData113
- {
- HairIndex 7039
- Model "hair/pelo_bi_lila.gr2"
- SourceSkin "hair/violeta.dds"
- TargetSkin "hair/violeta.dds"
- }
- Group HairData114
- {
- HairIndex 7040
- Model "hair/hair_53_1.GR2"
- SourceSkin "hair/hair_53_1.dds"
- TargetSkin "hair/hair_53_1.dds"
- }
- Group HairData115
- {
- HairIndex 7041
- Model "hair/hair_53_1.GR2"
- SourceSkin "hair/hair_53_1.dds"
- TargetSkin "hair/hair_53_2.dds"
- }
- Group HairData116
- {
- HairIndex 7042
- Model "hair/hair_52_1.GR2"
- SourceSkin "hair/hair_52_1.dds"
- TargetSkin "hair/hair_52_1.dds"
- }
- Group HairData117
- {
- HairIndex 7043
- Model "hair/hair_54_1.GR2"
- SourceSkin "hair/hair_54_1.dds"
- TargetSkin "hair/hair_54_1.dds"
- }
- Group HairData118
- {
- HairIndex 7044
- Model "hair/hair_54_1.GR2"
- SourceSkin "hair/hair_54_1.dds"
- TargetSkin "hair/hair_54_2.dds"
- }
- Group HairData119
- {
- HairIndex 7045
- Model "hair/hair_58_1.GR2"
- SourceSkin "hair/hair_58_1.dds"
- TargetSkin "hair/hair_58_1.dds"
- }
- Group HairData120
- {
- HairIndex 7046
- Model "hair/hair_58_1.GR2"
- SourceSkin "hair/hair_58_1.dds"
- TargetSkin "hair/hair_58_2.dds"
- }
- Group HairData121
- {
- HairIndex 7047
- Model "hair/hair_16_1.GR2"
- SourceSkin "hair/hair_16_1.dds"
- TargetSkin "hair/hair_16_1111.dds"
- }
- Group HairData122
- {
- HairIndex 7048
- Model "hair/hair_18_1.GR2"
- SourceSkin "hair/hair_18_1.dds"
- TargetSkin "hair/hair_18_1111.dds"
- }
- Group HairData123
- {
- HairIndex 7049
- Model "hair/28.3.GR2"
- SourceSkin "hair/28.3.dds"
- TargetSkin "hair/28.3.dds"
- }
- Group HairData124
- {
- HairIndex 7050
- Model "hair/28.33.GR2"
- SourceSkin "hair/28.33.dds"
- TargetSkin "hair/28.33.dds"
- }
- }
- Group ShapeData
- {
- PathName "d:/ymir Work/pc/shaman/"
- ShapeDataCount 999
- Group ShapeData00
- {
- ShapeIndex 0
- Model "shaman_novice.GR2"
- }
- Group ShapeData01
- {
- ShapeIndex 1
- Model "shaman_novice.GR2"
- SourceSkin "shaman_novice_red.dds"
- TargetSkin "shaman_novice_green.dds"
- }
- Group ShapeData02
- {
- ShapeIndex 3
- Model "shaman_cheongnang.GR2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_cheongnang.dds"
- }
- Group ShapeData03
- {
- ShapeIndex 4
- Model "shaman_cheongnang.GR2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_nabong.dds"
- }
- Group ShapeData04
- {
- ShapeIndex 5
- Model "shaman_cheongnang.GR2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_bihong.dds"
- }
- Group ShapeData05
- {
- ShapeIndex 6
- Model "shaman_miyeom.GR2"
- SourceSkin "shaman_miyeom.dds"
- TargetSkin "shaman_miyeom.dds"
- }
- Group ShapeData06
- {
- ShapeIndex 7
- Model "shaman_miyeom.GR2"
- SourceSkin "shaman_miyeom.dds"
- TargetSkin "shaman_seocheon.dds"
- }
- Group ShapeData07
- {
- ShapeIndex 8
- Model "shaman_miyeom.GR2"
- SourceSkin "shaman_miyeom.dds"
- TargetSkin "shaman_ilseon.dds"
- }
- Group ShapeData08
- {
- ShapeIndex 9
- Model "shaman_cheonryun.GR2"
- SourceSkin "shaman_cheonryun.dds"
- TargetSkin "shaman_cheonryun.dds"
- }
- Group ShapeData09
- {
- ShapeIndex 10
- Model "shaman_cheonryun.GR2"
- SourceSkin "shaman_cheonryun.dds"
- TargetSkin "shaman_amyo.dds"
- }
- Group ShapeData10
- {
- ShapeIndex 11
- Model "shaman_bongsin.GR2"
- SourceSkin "shaman_bongsin.dds"
- TargetSkin "shaman_bongsin.dds"
- }
- Group ShapeData11
- {
- SpecialPath "d:/ymir work/monster/wolf/"
- ShapeIndex 100
- Model "wolf.gr2"
- SourceSkin "wolf.dds"
- }
- Group ShapeData12
- {
- SpecialPath "d:/ymir work/monster/wild_boar/"
- ShapeIndex 101
- Model "wild_boar.gr2"
- SourceSkin "wild_boar.dds"
- }
- Group ShapeData13
- {
- SpecialPath "d:/ymir work/monster/bear/"
- ShapeIndex 102
- Model "bear.gr2"
- SourceSkin "bear.dds"
- }
- Group ShapeData14
- {
- SpecialPath "d:/ymir work/monster/tiger/"
- ShapeIndex 103
- Model "tiger.gr2"
- SourceSkin "tiger.dds"
- }
- Group ShapeData15
- {
- SpecialPath "d:/ymir Work/pc/shaman/"
- ShapeIndex 201
- Model "shaman_marry_01.gr2"
- SourceSkin "shaman_marry_01.dds"
- TargetSkin "shaman_marry_01.dds"
- }
- Group ShapeData16
- {
- ShapeIndex 12
- Model "shaman_4-1.GR2"
- SourceSkin "shaman_4-1.dds"
- TargetSkin "shaman_4-1.dds"
- }
- Group ShapeData17
- {
- ShapeIndex 14
- Model "shaman_cheongnang.GR2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_1-1cheongnang_a.DDS"
- }
- Group ShapeData18
- {
- ShapeIndex 15
- Model "shaman_cheongnang.GR2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_1-2_nabong_a.DDS"
- }
- Group ShapeData19
- {
- ShapeIndex 16
- Model "shaman_cheongnang.GR2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_bihong_a.dds"
- }
- Group ShapeData20
- {
- ShapeIndex 17
- Model "shaman_miyeom.GR2"
- SourceSkin "shaman_miyeom.dds"
- TargetSkin "shaman_2-1_miyeon_a.DDS"
- }
- Group ShapeData21
- {
- ShapeIndex 18
- Model "shaman_miyeom.GR2"
- SourceSkin "shaman_miyeom.dds"
- TargetSkin "shaman_2-2_seocheon_a.DDS"
- }
- Group ShapeData22
- {
- ShapeIndex 19
- Model "shaman_miyeom.GR2"
- SourceSkin "shaman_miyeom.dds"
- TargetSkin "shaman_2-3_ilseon_a.DDS"
- }
- Group ShapeData23
- {
- ShapeIndex 20
- Model "shaman_cheonryun.GR2"
- SourceSkin "shaman_cheonryun.dds"
- TargetSkin "shaman_3-1_cheonryun_a.DDS"
- }
- Group ShapeData24
- {
- ShapeIndex 21
- Model "shaman_cheonryun.GR2"
- SourceSkin "shaman_cheonryun.dds"
- TargetSkin "shaman_3-2_amyo_a.DDS"
- }
- Group ShapeData25
- {
- SpecialPath "d:/ymir Work/pc/shaman/"
- ShapeIndex 24
- Model "shaman_lord.GR2"
- SourceSkin "shaman_queen01.dds"
- TargetSkin "shaman_queen01.dds"
- }
- Group ShapeData26
- {
- SpecialPath "d:/ymir Work/pc/shaman/"
- ShapeIndex 25
- Model "shaman_lord.GR2"
- SourceSkin "shaman_queen01.dds"
- TargetSkin "shaman_queen02.dds"
- }
- Group ShapeData27
- {
- SpecialPath "d:/ymir Work/pc/shaman/"
- ShapeIndex 26
- Model "shaman_4-1.GR2"
- SourceSkin "shaman_4-1.dds"
- TargetSkin "shaman_4-2.dds"
- }
- Group ShapeData28
- {
- ShapeIndex 27
- Model "shaman_event1.GR2"
- SourceSkin "shaman_event1_yellow.dds"
- TargetSkin "shaman_event1_red.dds"
- }
- Group ShapeData29
- {
- ShapeIndex 28
- Model "shaman_event1.GR2"
- SourceSkin "shaman_event1_yellow.dds"
- TargetSkin "shaman_event1_yellow.dds"
- }
- Group ShapeData30
- {
- ShapeIndex 29
- Model "shaman_event1.GR2"
- SourceSkin "shaman_event1_yellow.dds"
- TargetSkin "shaman_event1_blue.dds"
- }
- Group ShapeData31
- {
- ShapeIndex 30
- Model "shaman_cheongnang.gr2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_costume1.dds"
- }
- Group ShapeData32
- {
- ShapeIndex 40031
- Model "shaman_rabbit1.GR2"
- SourceSkin "shaman_rabbit1.dds"
- TargetSkin "shaman_rabbit1.dds"
- }
- Group ShapeData33
- {
- ShapeIndex 40033
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_London.dds"
- }
- Group ShapeData34
- {
- ShapeIndex 40034
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_Germany.dds"
- }
- Group ShapeData35
- {
- ShapeIndex 40035
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_Turkey.dds"
- }
- Group ShapeData36
- {
- ShapeIndex 40036
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_Brazil.dds"
- }
- Group ShapeData37
- {
- ShapeIndex 40037
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_London.dds"
- }
- Group ShapeData38
- {
- ShapeIndex 40038
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_Germany.dds"
- }
- Group ShapeData39
- {
- ShapeIndex 40039
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_Turkey.dds"
- }
- Group ShapeData40
- {
- ShapeIndex 40040
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_Brazil.dds"
- }
- Group ShapeData41
- {
- ShapeIndex 40041
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_London.dds"
- }
- Group ShapeData42
- {
- ShapeIndex 40042
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_Germany.dds"
- }
- Group ShapeData43
- {
- ShapeIndex 40043
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_Turkey.dds"
- }
- Group ShapeData44
- {
- ShapeIndex 40044
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_Brazil.dds"
- }
- Group ShapeData45
- {
- ShapeIndex 40032
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin1.dds"
- }
- Group ShapeData46
- {
- ShapeIndex 40045
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_France.dds"
- }
- Group ShapeData47
- {
- ShapeIndex 40046
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_Italy.dds"
- }
- Group ShapeData48
- {
- ShapeIndex 40047
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_Poland.dds"
- }
- Group ShapeData49
- {
- ShapeIndex 40048
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_Romania.dds"
- }
- Group ShapeData50
- {
- ShapeIndex 40049
- Model "shaman_fencing1_Germany.GR2"
- SourceSkin "shaman_fencing1_Germany.dds"
- TargetSkin "shaman_fencing1_Spain.dds"
- }
- Group ShapeData51
- {
- ShapeIndex 40050
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_France.dds"
- }
- Group ShapeData52
- {
- ShapeIndex 40051
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_Italy.dds"
- }
- Group ShapeData53
- {
- ShapeIndex 40052
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_Poland.dds"
- }
- Group ShapeData54
- {
- ShapeIndex 40053
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_Romania.dds"
- }
- Group ShapeData55
- {
- ShapeIndex 40054
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_Spain.dds"
- }
- Group ShapeData56
- {
- ShapeIndex 40055
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_France.dds"
- }
- Group ShapeData57
- {
- ShapeIndex 40056
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_Italy.dds"
- }
- Group ShapeData58
- {
- ShapeIndex 40057
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_Poland.dds"
- }
- Group ShapeData59
- {
- ShapeIndex 40058
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_Romania.dds"
- }
- Group ShapeData60
- {
- ShapeIndex 40059
- Model "shaman_boxing1_Germany.GR2"
- SourceSkin "shaman_boxing1_Germany.dds"
- TargetSkin "shaman_boxing1_Spain.dds"
- }
- Group ShapeData61
- {
- ShapeIndex 40065
- Model "shaman_halloween1.GR2"
- SourceSkin "shaman_halloween1.dds"
- TargetSkin "shaman_halloween1.dds"
- }
- Group ShapeData62
- {
- ShapeIndex 13
- Model "shaman_5_1.GR2"
- SourceSkin "shaman_5_1.dds"
- TargetSkin "shaman_5_1.dds"
- }
- Group ShapeData63
- {
- ShapeIndex 40062
- Model "shaman_salsa1.GR2"
- SourceSkin "shaman_salsa1.dds"
- TargetSkin "shaman_salsa1.dds"
- }
- Group ShapeData64
- {
- ShapeIndex 40063
- Model "shaman_Springwear1.GR2"
- SourceSkin "shaman_Springwear1.dds"
- TargetSkin "shaman_Springwear1.dds"
- }
- Group ShapeData65
- {
- ShapeIndex 40061
- Model "shaman_tailcoat1.GR2"
- SourceSkin "shaman_tailcoat1.dds"
- TargetSkin "shaman_tailcoat1.dds"
- }
- Group ShapeData66
- {
- ShapeIndex 40069
- Model "shaman_deer1.gr2"
- SourceSkin "shaman_deer1.dds"
- TargetSkin "shaman_deer1.dds"
- }
- Group ShapeData67
- {
- ShapeIndex 40066
- Model "shaman_santa1_black.gr2"
- SourceSkin "shaman_santa1_black.dds"
- TargetSkin "shaman_santa1_red.dds"
- }
- Group ShapeData68
- {
- ShapeIndex 40067
- Model "shaman_santa1_black.gr2"
- SourceSkin "shaman_santa1_black.dds"
- TargetSkin "shaman_santa1_green.dds"
- }
- Group ShapeData69
- {
- ShapeIndex 40068
- Model "shaman_santa1_black.gr2"
- SourceSkin "shaman_santa1_black.dds"
- TargetSkin "shaman_santa1_black.dds"
- }
- Group ShapeData70
- {
- ShapeIndex 40070
- local_Model "d:/ymir work/pc2/shaman/galag30.gr2"
- SourceSkin "avatar_w_phoenix_dress.dds"
- TargetSkin "avatar_w_phoenix_dress.dds"
- SourceSkin2 "avatar_w_phoenix_dress_01.dds"
- TargetSkin2 "avatar_w_phoenix_dress_01.dds"
- }
- Group ShapeData999
- {
- ShapeIndex 40070
- local_Model "d:/ymir work/pc2/shaman/galag30.gr2"
- SourceSkin "avatar_m_phoenix.dds"
- TargetSkin "avatar_m_phoenix.dds"
- SourceSkin2 "avatar_w_phoenix_dress_hat_02.dds"
- TargetSkin2 "avatar_w_phoenix_dress_hat_02.dds"
- }
- Group ShapeData71
- {
- ShapeIndex 40071
- local_Model "d:/ymir work/pc/shaman/shaman_uni_1.gr2"
- }
- Group ShapeData72
- {
- ShapeIndex 40072
- local_Model "d:/ymir work/pc/shaman/shaman_uni_2.gr2"
- }
- Group ShapeData73
- {
- ShapeIndex 40073
- local_Model "d:/ymir Work/pc/shaman/shaman_dark_night.gr2"
- }
- Group ShapeData74
- {
- ShapeIndex 40074
- local_Model "d:/ymir Work/pc/shaman/shaman_saint.gr2"
- }
- Group ShapeData75
- {
- ShapeIndex 40075
- local_Model "d:/ymir Work/pc/shaman/shaman_v3.gr2"
- }
- Group ShapeData76
- {
- ShapeIndex 40076
- local_Model "d:/ymir Work/pc/shaman/shaman_white_bojownik.gr2"
- }
- Group ShapeData77
- {
- ShapeIndex 40077
- local_Model "d:/ymir Work/pc/shaman/profe_rojo.gr2"
- }
- Group ShapeData78
- {
- ShapeIndex 40078
- local_Model "d:/ymir Work/pc/shaman/profe_blanco.gr2"
- }
- Group ShapeData79
- {
- ShapeIndex 40079
- local_Model "d:/ymir Work/pc/shaman/profe_azul.gr2"
- }
- Group ShapeData80
- {
- ShapeIndex 40080
- local_Model "d:/ymir Work/comedy/new_armor/free/shaman_w.gr2"
- }
- Group ShapeData81
- {
- ShapeIndex 40081
- local_Model "d:/ymir Work/pc/pewi_armor/Dragon/dragon_shaman_f.gr2"
- }
- Group ShapeData82
- {
- ShapeIndex 40082
- local_Model "d:/ymir Work/new1/famale/115_shaman.gr2"
- }
- Group ShapeData83
- {
- ShapeIndex 40083
- local_Model "d:/ymir Work/new1/famale/115_shaman2.gr2"
- }
- Group ShapeData84
- {
- ShapeIndex 40084
- local_Model "d:/ymir Work/new1/famale/shaman_halloween_2019.gr2"
- }
- Group ShapeData85
- {
- ShapeIndex 40085
- local_Model "d:/ymir Work/new1/famale/shaman_halloween_20192.gr2"
- }
- Group ShapeData86
- {
- ShapeIndex 40086
- local_Model "d:/ymir Work/new/2020/shaman_w2020.gr2"
- }
- Group ShapeData87
- {
- ShapeIndex 40087
- local_Model "d:/ymir Work/new/2020/shaman_w2020g.gr2"
- }
- Group ShapeData88
- {
- ShapeIndex 40088
- local_Model "d:/ymir Work/new/2020/s_w_28.3.gr2"
- }
- Group ShapeData89
- {
- ShapeIndex 40089
- local_Model "d:/ymir Work/new/2020/s_w_28.33.gr2"
- }
- Group ShapeData90
- {
- ShapeIndex 40090
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA21.dds"
- }
- Group ShapeData91
- {
- ShapeIndex 40091
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA22.dds"
- }
- Group ShapeData92
- {
- ShapeIndex 40092
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA23.dds"
- }
- Group ShapeData93
- {
- ShapeIndex 40093
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA24.dds"
- }
- Group ShapeData94
- {
- ShapeIndex 40094
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA25.dds"
- }
- Group ShapeData95
- {
- ShapeIndex 40095
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA26.dds"
- }
- Group ShapeData96
- {
- ShapeIndex 40096
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA27.dds"
- }
- Group ShapeData97
- {
- ShapeIndex 40097
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA28.dds"
- }
- Group ShapeData98
- {
- ShapeIndex 40098
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA29.dds"
- }
- Group ShapeData99
- {
- ShapeIndex 40099
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA30.dds"
- }
- Group ShapeData100
- {
- ShapeIndex 40100
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA31.dds"
- }
- Group ShapeData101
- {
- ShapeIndex 40101
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_UEFA32.dds"
- }
- Group ShapeData102
- {
- ShapeIndex 40064
- Model "shaman_samurai1.GR2"
- SourceSkin "shaman_samurai1.dds"
- TargetSkin "shaman_samurai1.dds"
- }
- Group ShapeData103
- {
- ShapeIndex 40106
- Model "shaman_rabbit1.GR2"
- SourceSkin "shaman_rabbit1.dds"
- TargetSkin "shaman_rabbit1_black.dds"
- }
- Group ShapeData104
- {
- ShapeIndex 40107
- Model "shaman_rabbit1.GR2"
- SourceSkin "shaman_rabbit1.dds"
- TargetSkin "shaman_rabbit1_blue.dds"
- }
- Group ShapeData105
- {
- ShapeIndex 40108
- Model "shaman_rabbit1.GR2"
- SourceSkin "shaman_rabbit1.dds"
- TargetSkin "shaman_rabbit1_green.dds"
- }
- Group ShapeData106
- {
- ShapeIndex 40109
- Model "shaman_rabbit1.GR2"
- SourceSkin "shaman_rabbit1.dds"
- TargetSkin "shaman_rabbit1_pink.dds"
- }
- Group ShapeData107
- {
- ShapeIndex 40110
- Model "shaman_BlackSnake1.GR2"
- SourceSkin "shaman_BlackSnake1.dds"
- TargetSkin "shaman_BlackSnake1.dds"
- }
- Group ShapeData108
- {
- ShapeIndex 40111
- Model "shaman_BlackSnake1.GR2"
- SourceSkin "shaman_BlackSnake1.dds"
- TargetSkin "shaman_BlackSnake1.dds"
- }
- Group ShapeData109
- {
- ShapeIndex 40113
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin2.dds"
- }
- Group ShapeData110
- {
- ShapeIndex 40115
- Model "shaman_pwahuang1.GR2"
- SourceSkin "shaman_pwahuang1.dds"
- TargetSkin "shaman_pwahuang1.dds"
- }
- Group ShapeData111
- {
- ShapeIndex 40117
- Model "shaman_halloween2.GR2"
- SourceSkin "shaman_halloween2.dds"
- TargetSkin "shaman_halloween2.dds"
- }
- Group ShapeData112
- {
- ShapeIndex 40119
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin3.dds"
- }
- Group ShapeData113
- {
- ShapeIndex 40060
- Model "shaman_capoeira1.GR2"
- SourceSkin "shaman_capoeira1.dds"
- TargetSkin "shaman_capoeira1.dds"
- }
- Group ShapeData114
- {
- ShapeIndex 40121
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC01.dds"
- }
- Group ShapeData115
- {
- ShapeIndex 40123
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC02.dds"
- }
- Group ShapeData116
- {
- ShapeIndex 40125
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC03.dds"
- }
- Group ShapeData117
- {
- ShapeIndex 40127
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC04.dds"
- }
- Group ShapeData118
- {
- ShapeIndex 40129
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC05.dds"
- }
- Group ShapeData119
- {
- ShapeIndex 40131
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC06.dds"
- }
- Group ShapeData120
- {
- ShapeIndex 40133
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC07.dds"
- }
- Group ShapeData121
- {
- ShapeIndex 40135
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC08.dds"
- }
- Group ShapeData122
- {
- ShapeIndex 40137
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC09.dds"
- }
- Group ShapeData123
- {
- ShapeIndex 40139
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC10.dds"
- }
- Group ShapeData124
- {
- ShapeIndex 40141
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC11.dds"
- }
- Group ShapeData125
- {
- ShapeIndex 40143
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC12.dds"
- }
- Group ShapeData126
- {
- ShapeIndex 40145
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC13.dds"
- }
- Group ShapeData127
- {
- ShapeIndex 40147
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC14.dds"
- }
- Group ShapeData128
- {
- ShapeIndex 40149
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC15.dds"
- }
- Group ShapeData129
- {
- ShapeIndex 40151
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC16.dds"
- }
- Group ShapeData130
- {
- ShapeIndex 40153
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC17.dds"
- }
- Group ShapeData131
- {
- ShapeIndex 40155
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC18.dds"
- }
- Group ShapeData132
- {
- ShapeIndex 40157
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC19.dds"
- }
- Group ShapeData133
- {
- ShapeIndex 40159
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC20.dds"
- }
- Group ShapeData134
- {
- ShapeIndex 40161
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC21.dds"
- }
- Group ShapeData135
- {
- ShapeIndex 40163
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC22.dds"
- }
- Group ShapeData136
- {
- ShapeIndex 40165
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC23.dds"
- }
- Group ShapeData137
- {
- ShapeIndex 40167
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC24.dds"
- }
- Group ShapeData138
- {
- ShapeIndex 40169
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC25.dds"
- }
- Group ShapeData139
- {
- ShapeIndex 40171
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC26.dds"
- }
- Group ShapeData140
- {
- ShapeIndex 40173
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC27.dds"
- }
- Group ShapeData141
- {
- ShapeIndex 40175
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC28.dds"
- }
- Group ShapeData142
- {
- ShapeIndex 40177
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC29.dds"
- }
- Group ShapeData143
- {
- ShapeIndex 40179
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC30.dds"
- }
- Group ShapeData144
- {
- ShapeIndex 40181
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC31.dds"
- }
- Group ShapeData145
- {
- ShapeIndex 40183
- Model "shaman_soccer1_Germany.GR2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_WC32.dds"
- }
- Group ShapeData146
- {
- ShapeIndex 40103
- Model "shaman_chipao1_S.GR2"
- SourceSkin "shaman_chipao1_S_01.dds"
- TargetSkin "shaman_chipao1_S_01.dds"
- }
- Group ShapeData147
- {
- ShapeIndex 40102
- Model "shaman_chipao1_S.GR2"
- SourceSkin "shaman_chipao1_S_01.ddss"
- TargetSkin "shaman_chipao1_S_02.dds"
- }
- Group ShapeData148
- {
- ShapeIndex 40104
- Model "shaman_chipao1_L.GR2"
- SourceSkin "shaman_chipao1_L_01.dds"
- TargetSkin "shaman_chipao1_L_01.dds"
- }
- Group ShapeData149
- {
- ShapeIndex 40105
- Model "shaman_chipao1_L.GR2"
- SourceSkin "shaman_chipao1_L_01.dds"
- TargetSkin "shaman_chipao1_L_02.dds"
- }
- Group ShapeData150
- {
- ShapeIndex 40185
- Model "shaman_tailcoat1.gr2"
- SourceSkin "shaman_tailcoat1.dds"
- TargetSkin "shaman_halloween_zombie1.dds"
- }
- Group ShapeData151
- {
- ShapeIndex 40187
- Model "shaman_salsa1.GR2"
- SourceSkin "shaman_salsa1.dds"
- TargetSkin "shaman_halloween festival.dds"
- }
- Group ShapeData152
- {
- ShapeIndex 40190
- Model "shaman_snow1.gr2"
- SourceSkin "shaman_snow1.dds"
- TargetSkin "shaman_snow1.dds"
- }
- Group ShapeData153
- {
- ShapeIndex 40191
- Model "shaman_snow_santa1.GR2"
- SourceSkin "shaman_snow_santa1.dds"
- TargetSkin "shaman_snow_santa1.dds"
- }
- Group ShapeData154
- {
- ShapeIndex 40194
- Model "shaman_easter_day1.GR2"
- }
- Group ShapeData155
- {
- ShapeIndex 40195
- Model "shaman_easter_day2.GR2"
- }
- Group ShapeData156
- {
- ShapeIndex 40198
- Model "shaman_ramadan1.GR2"
- }
- Group ShapeData157
- {
- ShapeIndex 40199
- Model "shaman_ramadan2.GR2"
- }
- Group ShapeData158
- {
- ShapeIndex 40206
- Model "shaman_5_2.GR2"
- SourceSkin "shaman_5_2.dds"
- TargetSkin "shaman_5_2.dds"
- }
- Group ShapeData159
- {
- ShapeIndex 40207
- Model "shaman_5_1.GR2"
- SourceSkin "shaman_5_1.dds"
- TargetSkin "shaman_5_1_red.dds"
- }
- Group ShapeData160
- {
- ShapeIndex 40208
- Model "shaman_5_1.GR2"
- SourceSkin "shaman_5_1.dds"
- TargetSkin "shaman_5_1_blue.dds"
- }
- Group ShapeData161
- {
- ShapeIndex 40209
- Model "shaman_5_5.GR2"
- SourceSkin "shaman_5_5.dds"
- TargetSkin "shaman_5_5.dds"
- }
- Group ShapeData162
- {
- ShapeIndex 40215
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin31.dds"
- }
- Group ShapeData163
- {
- ShapeIndex 40217
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin4.dds"
- }
- Group ShapeData164
- {
- ShapeIndex 40219
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin5.dds"
- }
- Group ShapeData165
- {
- ShapeIndex 40221
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin6.dds"
- }
- Group ShapeData166
- {
- ShapeIndex 40225
- Model "shaman_assasin1.GR2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin3.dds"
- }
- Group ShapeData167
- {
- ShapeIndex 40228
- Model "shaman_5_1_black.gr2"
- SourceSkin "shaman_5_1_black.dds"
- TargetSkin "shaman_5_1_black.dds"
- }
- Group ShapeData168
- {
- ShapeIndex 40231
- Model "shaman_christmas_2015.gr2"
- SourceSkin "shaman_christmas_2015_red.dds"
- TargetSkin "shaman_christmas_2015_red.dds"
- }
- Group ShapeData169
- {
- ShapeIndex 40232
- Model "shaman_christmas_2015.gr2"
- SourceSkin "shaman_christmas_2015_red.dds"
- TargetSkin "shaman_christmas_2015_blue.dds"
- }
- Group ShapeData170
- {
- ShapeIndex 40233
- Model "shaman_halloween_2015.gr2"
- SourceSkin "shaman_halloween_2015_gold.dds"
- TargetSkin "shaman_halloween_2015_gold.dds"
- }
- Group ShapeData171
- {
- ShapeIndex 40234
- Model "shaman_halloween_2015.gr2"
- SourceSkin "shaman_halloween_2015_gold.dds"
- TargetSkin "shaman_halloween_2015_silver.dds"
- }
- Group ShapeData172
- {
- ShapeIndex 40235
- Model "shaman_capoeira1.gr2"
- SourceSkin "shaman_capoeira1.dds"
- TargetSkin "shaman_capoeira1.dds"
- }
- Group ShapeData173
- {
- ShapeIndex 40236
- Model "shaman_assasin1.gr2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassinD.dds"
- }
- Group ShapeData174
- {
- ShapeIndex 40237
- Model "shaman_chipao1_l.gr2"
- SourceSkin "shaman_chipao1_l_01.dds"
- TargetSkin "shaman_chipao1_l_01.dds"
- }
- Group ShapeData175
- {
- ShapeIndex 40238
- Model "shaman_chipao1_l.gr2"
- SourceSkin "shaman_chipao1_l_01.dds"
- TargetSkin "shaman_chipao1_l_02.dds"
- }
- Group ShapeData176
- {
- ShapeIndex 40239
- Model "shaman_ramadan1.gr2"
- SourceSkin "shaman_ramadan1.dds"
- TargetSkin "shaman_ramadan2.dds"
- }
- Group ShapeData177
- {
- ShapeIndex 40240
- Model "shaman_ramadan1.gr2"
- SourceSkin "shaman_ramadan1.dds"
- TargetSkin "shaman_ramadan3.dds"
- }
- Group ShapeData178
- {
- ShapeIndex 40241
- Model "shaman_ramadan1.gr2"
- SourceSkin "shaman_ramadan1.dds"
- TargetSkin "shaman_ramadan4.dds"
- }
- Group ShapeData179
- {
- ShapeIndex 40242
- Model "shaman_samurai1.gr2"
- SourceSkin "shaman_samurai1.dds"
- TargetSkin "shaman_samurai1.dds"
- }
- Group ShapeData180
- {
- ShapeIndex 40243
- Model "shaman_set2.gr2"
- SourceSkin "shaman_cheongnang.dds"
- TargetSkin "shaman_cheongnang.dds"
- }
- Group ShapeData181
- {
- ShapeIndex 40244
- Model "shaman_chipao1_l.gr2"
- SourceSkin "shaman_chipao1_l_01.dds"
- TargetSkin "shaman_chipao1_lhaies_01.dds"
- }
- Group ShapeData182
- {
- ShapeIndex 40245
- Model "shaman_assasin1vip.gr2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin2dia.dds"
- }
- Group ShapeData183
- {
- ShapeIndex 40246
- Model "shaman_assasin1vip.gr2"
- SourceSkin "shaman_assassin1.dds"
- TargetSkin "shaman_assassin20.dds"
- }
- Group ShapeData184
- {
- ShapeIndex 40247
- Model "shaman_carnival1.gr2"
- SourceSkin "shaman_carnival1.dds"
- TargetSkin "shaman_carnival1.dds"
- }
- Group ShapeData185
- {
- ShapeIndex 40248
- Model "shaman_carnival1.gr2"
- SourceSkin "shaman_carnival1.dds"
- TargetSkin "shaman_carnival2.dds"
- }
- Group ShapeData186
- {
- ShapeIndex 40249
- Model "shaman_carnival1.gr2"
- SourceSkin "shaman_carnival1.dds"
- TargetSkin "shaman_carnival3.dds"
- }
- Group ShapeData187
- {
- ShapeIndex 40250
- Model "shaman_valentines.gr2"
- SourceSkin "shaman_tailcoat1.dds"
- TargetSkin "shaman_valentines.dds"
- }
- Group ShapeData188
- {
- ShapeIndex 40251
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_youtube.dds"
- }
- Group ShapeData190
- {
- ShapeIndex 40252
- Model "shaman_christmas_2016_red.GR2"
- SourceSkin "shaman_christmas_2016_red.dds"
- TargetSkin "shaman_christmas_2016_green.dds"
- }
- Group ShapeData191
- {
- ShapeIndex 40253
- Model "shaman_christmas_2016_red.GR2"
- SourceSkin "shaman_christmas_2016_red.dds"
- TargetSkin "shaman_christmas_2016_red.dds"
- }
- Group ShapeData192
- {
- ShapeIndex 40254
- Model "shaman_easter_day_2016.GR2"
- SourceSkin "shaman_easter_day_2016_1.dds"
- TargetSkin "shaman_easter_day_2016_1.dds"
- }
- Group ShapeData193
- {
- ShapeIndex 40255
- Model "shaman_easter_day_2016.GR2"
- SourceSkin "shaman_easter_day_2016_1.dds"
- TargetSkin "shaman_easter_day_2016_2.dds"
- }
- Group ShapeData194
- {
- ShapeIndex 40256
- Model "shaman_halloween_2016.GR2"
- SourceSkin "shaman_halloween_2016_silver.dds"
- TargetSkin "shaman_halloween_2016_red.dds"
- }
- Group ShapeData195
- {
- ShapeIndex 40257
- Model "shaman_halloween_2016.GR2"
- SourceSkin "shaman_halloween_2016_silver.dds"
- TargetSkin "shaman_halloween_2016_silver.dds"
- }
- Group ShapeData198
- {
- ShapeIndex 40260
- Model "shaman_salsa1.GR2"
- SourceSkin "shaman_salsa1.dds"
- TargetSkin "shaman_halloweenfestival_haies1.dds"
- }
- Group ShapeData199
- {
- ShapeIndex 40261
- Model "shaman_easter_day_2017.gr2"
- SourceSkin "shaman_easter_day_2017_1.dds"
- TargetSkin "shaman_easter_day_2017_1.dds"
- }
- Group ShapeData200
- {
- ShapeIndex 40262
- Model "shaman_easter_day_2017.gr2"
- SourceSkin "shaman_easter_day_2017_1.dds"
- TargetSkin "shaman_easter_day_2017_2.dds"
- }
- Group ShapeData201
- {
- ShapeIndex 40263
- Model "shaman_summer_2017.gr2"
- SourceSkin "shaman_summer_2017_1.dds"
- TargetSkin "shaman_summer_2017_1.dds"
- }
- Group ShapeData202
- {
- ShapeIndex 40264
- Model "shaman_summer_2017.gr2"
- SourceSkin "shaman_summer_2017_1.dds"
- TargetSkin "shaman_summer_2017_2.dds"
- }
- Group ShapeData203
- {
- ShapeIndex 40265
- Model "shaman_5_1.gr2"
- SourceSkin "shaman_5_1.dds"
- TargetSkin "shaman_5_1_jin.dds"
- }
- Group ShapeData204
- {
- ShapeIndex 40266
- Model "shaman_5_5.GR2"
- SourceSkin "shaman_5_5.dds"
- TargetSkin "shaman_5_5.dds"
- }
- Group ShapeData205
- {
- ShapeIndex 40267
- Model "shaman_halloween_2017.gr2"
- SourceSkin "shaman_halloween_2017_red.dds"
- TargetSkin "shaman_halloween_2017_red.dds"
- }
- Group ShapeData206
- {
- ShapeIndex 40268
- Model "shaman_halloween_2017.gr2"
- SourceSkin "shaman_halloween_2017_red.dds"
- TargetSkin "shaman_halloween_2017_blue.dds"
- }
- Group ShapeData207
- {
- ShapeIndex 40269
- Model "shaman_6_1.gr2"
- SourceSkin "shaman_6_1.dds"
- TargetSkin "shaman_6_1.dds"
- }
- Group ShapeData208
- {
- ShapeIndex 40270
- Model "shaman_christmas_2017_silver.gr2"
- SourceSkin "shaman_christmas_2017_silver.dds"
- TargetSkin "shaman_christmas_2017_silver.dds"
- }
- Group ShapeData209
- {
- ShapeIndex 40271
- Model "shaman_christmas_2017_silver.gr2"
- SourceSkin "shaman_christmas_2017_silver.dds"
- TargetSkin "shaman_christmas_2017_red.dds"
- }
- Group ShapeData210
- {
- ShapeIndex 40272
- Model "shaman_ramadan_2018.gr2"
- SourceSkin "shaman_ramadan_2018_1.dds"
- TargetSkin "shaman_ramadan_2018_1.dds"
- }
- Group ShapeData211
- {
- ShapeIndex 40273
- Model "shaman_ramadan_2018.gr2"
- SourceSkin "shaman_ramadan_2018_1.dds"
- TargetSkin "shaman_ramadan_2018_2.dds"
- }
- Group ShapeData212
- {
- ShapeIndex 40274
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_salah.dds"
- }
- Group ShapeData213
- {
- ShapeIndex 40275
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_messi.dds"
- }
- Group ShapeData214
- {
- ShapeIndex 40276
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_soccer1_ronaldo.dds"
- }
- Group ShapeData215
- {
- ShapeIndex 40277
- Model "shaman_phoenix.gr2"
- }
- Group ShapeData216
- {
- ShapeIndex 40278
- Model "shaman_sand_armor.gr2"
- }
- Group ShapeData217
- {
- ShapeIndex 40279
- Model "shaman_waterfire.gr2"
- }
- Group ShapeData218
- {
- ShapeIndex 40280
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_wc04_haies.dds"
- }
- Group ShapeData219
- {
- ShapeIndex 40281
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_wc06_haies.dds"
- }
- Group ShapeData220
- {
- ShapeIndex 40282
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_wc12_haies.dds"
- }
- Group ShapeData221
- {
- ShapeIndex 40283
- Model "shaman_soccer1_Germany.gr2"
- SourceSkin "shaman_soccer1_Germany.dds"
- TargetSkin "shaman_wc15_haies.dds"
- }
- Group ShapeData222
- {
- ShapeIndex 40284
- Model "shaman_Springwear1.GR2"
- SourceSkin "shaman_Springwear1.dds"
- TargetSkin "shaman_Springwear11.dds"
- }
- }
- Group AttachingData
- {
- AttachingDataCount 2
- Group AttachingData00
- {
- AttachingDataType 1
- isAttaching 0
- AttachingModelIndex 0
- AttachingBoneName "Bip01"
- CollisionType 1
- SphereDataCount 1
- Group SphereData00
- {
- Radius 40.000000
- Position 0.000000 0.000000 90.000000
- }
- }
- Group AttachingData01
- {
- AttachingDataType 1
- isAttaching 0
- AttachingModelIndex 0
- AttachingBoneName "Bip01"
- CollisionType 3
- SphereDataCount 1
- Group SphereData00
- {
- Radius 70.000000
- Position 0.000000 0.000000 90.000000
- }
- }
- }
-
problem sloved..
-
after install full system affect system It does not work ?
and system target affect also
i change if (!ch->IsMonster()) ~ to pc To make The system works on players instead of monsters
and also change
AFFECT_POISON,
AFFECT_SLOW,
AFFECT_STUN
to anther affect
this good idea but why don't work ??
i hope if i find Solution
-
i get this error
Code: syserr- 0410 06:08:07024 ::
- networkModule.py(line:208) SetSelectCharacterPhase
- system.py(line:152) __hybrid_import
- system.py(line:117) _process_result
- introSelect.py(line:11) <module>
- system.py(line:152) __hybrid_import
- system.py(line:117) _process_result
- uiTarget.py(line:13) <module>
- system.py(line:152) __hybrid_import
- system.py(line:117) _process_result
- uiAffectShower.py(line:402) <module>
- uiAffectShower.py(line:533) AffectShower
- networkModule.SetSelectCharacterPhase - <type 'exceptions.NameError'>:name 'self' is not defined
- 0410 06:08:07025 :: ============================================================================================================
- 0410 06:08:07025 :: Abort!!!!
Code: uiAffectShower.py- import ui
- import localeInfo
- import chr
- import item
- import app
- import skill
- import player
- import uiToolTip
- import math
- if app.ENABLE_NEW_AFFECT_POTION_HAIES:
- AFFECT_POTION = {
- "affect" : {
- #hwasem and 5warek
- 0 : 307,
- # b4r
- 1 : 309,
- # kwa dd
- 2 : 310,
- # def dd
- 3 : 311,
- #hbl
- 4 : 312,
- #myah
- 5 : 318,
- #tf3elat
- 6 : 322,
- #def
- 7 : 327,
- #hlwyat
- 8 : 330,
- #bloor
- 9 : 331,
- #no hwasem
- 10 : 339,
- },
- "image" : {
- 0 : "icon/item/88005.tga",
- 1 : "icon/item/88006.tga",
- 2 : "icon/item/88008.tga",
- 3 : "icon/item/88007.tga",
- 4 : "icon/new_item/gr3t_hbl.tga",
- 5 : "icon/new_item/gr3t_myah.tga",
- 6 : "icon/new_item/gr3t_tf3elat.tga",
- 7 : "icon/new_item/gr3t_def.tga",
- 8 : "icon/item/50183.tga",
- 9 : "icon/item/51002.tga",
- 10 : "icon/item/30540.tga",
- },
- }
- # WEDDING
- class LovePointImage(ui.ExpandedImageBox):
- FILE_PATH = "d:/ymir work/ui/pattern/LovePoint/"
- FILE_DICT = {
- 0 : FILE_PATH + "01.dds",
- 1 : FILE_PATH + "02.dds",
- 2 : FILE_PATH + "02.dds",
- 3 : FILE_PATH + "03.dds",
- 4 : FILE_PATH + "04.dds",
- 5 : FILE_PATH + "05.dds",
- }
- def __init__(self):
- ui.ExpandedImageBox.__init__(self)
- self.loverName = ""
- self.lovePoint = 0
- self.toolTip = uiToolTip.ToolTip(100)
- self.toolTip.HideToolTip()
- def __del__(self):
- ui.ExpandedImageBox.__del__(self)
- def SetLoverInfo(self, name, lovePoint):
- self.loverName = name
- self.lovePoint = lovePoint
- self.__Refresh()
- def OnUpdateLovePoint(self, lovePoint):
- self.lovePoint = lovePoint
- self.__Refresh()
- def __Refresh(self):
- self.lovePoint = max(0, self.lovePoint)
- self.lovePoint = min(100, self.lovePoint)
- if 0 == self.lovePoint:
- loveGrade = 0
- else:
- loveGrade = self.lovePoint / 25 + 1
- fileName = self.FILE_DICT.get(loveGrade, self.FILE_PATH+"00.dds")
- try:
- self.LoadImage(fileName)
- except:
- import dbg
- dbg.TraceError("LovePointImage.SetLoverInfo(lovePoint=%d) - LoadError %s" % (self.lovePoint, fileName))
- self.SetScale(0.7, 0.7)
- self.toolTip.ClearToolTip()
- self.toolTip.SetTitle(self.loverName)
- self.toolTip.AppendTextLine(localeInfo.AFF_LOVE_POINT % (self.lovePoint))
- self.toolTip.ResizeToolTip()
- def OnMouseOverIn(self):
- self.toolTip.ShowToolTip()
- def OnMouseOverOut(self):
- self.toolTip.HideToolTip()
- # END_OF_WEDDING
- class HorseImage(ui.ExpandedImageBox):
- FILE_PATH = "d:/ymir work/ui/pattern/HorseState/"
- FILE_DICT = {
- 00 : FILE_PATH+"00.dds",
- 01 : FILE_PATH+"00.dds",
- 02 : FILE_PATH+"00.dds",
- 03 : FILE_PATH+"00.dds",
- 10 : FILE_PATH+"10.dds",
- 11 : FILE_PATH+"11.dds",
- 12 : FILE_PATH+"12.dds",
- 13 : FILE_PATH+"13.dds",
- 20 : FILE_PATH+"20.dds",
- 21 : FILE_PATH+"21.dds",
- 22 : FILE_PATH+"22.dds",
- 23 : FILE_PATH+"23.dds",
- 30 : FILE_PATH+"30.dds",
- 31 : FILE_PATH+"31.dds",
- 32 : FILE_PATH+"32.dds",
- 33 : FILE_PATH+"33.dds",
- }
- def __init__(self):
- ui.ExpandedImageBox.__init__(self)
- #self.textLineList = []
- self.toolTip = uiToolTip.ToolTip(100)
- self.toolTip.HideToolTip()
- def __GetHorseGrade(self, level):
- if 0 == level:
- return 0
- return (level-1)/10 + 1
- def SetState(self, level, health, battery):
- #self.textLineList=[]
- self.toolTip.ClearToolTip()
- if level>0:
- try:
- grade = self.__GetHorseGrade(level)
- self.__AppendText(localeInfo.LEVEL_LIST[grade])
- except IndexError:
- print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
- return
- try:
- healthName=localeInfo.HEALTH_LIST[health]
- if len(healthName)>0:
- self.__AppendText(healthName)
- except IndexError:
- print "HorseImage.SetState(level=%d, health=%d, battery=%d) - Unknown Index" % (level, health, battery)
- return
- if health>0:
- if battery==0:
- self.__AppendText(localeInfo.NEEFD_REST)
- try:
- fileName=self.FILE_DICT[health*10+battery]
- except KeyError:
- print "HorseImage.SetState(level=%d, health=%d, battery=%d) - KeyError" % (level, health, battery)
- try:
- self.LoadImage(fileName)
- except:
- print "HorseImage.SetState(level=%d, health=%d, battery=%d) - LoadError %s" % (level, health, battery, fileName)
- self.SetScale(0.7, 0.7)
- def __AppendText(self, text):
- self.toolTip.AppendTextLine(text)
- self.toolTip.ResizeToolTip()
- #x=self.GetWidth()/2
- #textLine = ui.TextLine()
- #textLine.SetParent(self)
- #textLine.SetSize(0, 0)
- #textLine.SetOutline()
- #textLine.Hide()
- #textLine.SetPosition(x, 40+len(self.textLineList)*16)
- #textLine.SetText(text)
- #self.textLineList.append(textLine)
- def OnMouseOverIn(self):
- #for textLine in self.textLineList:
- # textLine.Show()
- self.toolTip.ShowToolTip()
- def OnMouseOverOut(self):
- #for textLine in self.textLineList:
- # textLine.Hide()
- self.toolTip.HideToolTip()
- # AUTO_POTION
- class AutoPotionImage(ui.ExpandedImageBox):
- FILE_PATH_HP = "d:/ymir work/ui/pattern/auto_hpgauge/"
- FILE_PATH_SP = "d:/ymir work/ui/pattern/auto_spgauge/"
- def __init__(self):
- ui.ExpandedImageBox.__init__(self)
- self.loverName = ""
- self.lovePoint = 0
- self.potionType = player.AUTO_POTION_TYPE_HP
- self.filePath = ""
- self.toolTip = uiToolTip.ToolTip(100)
- self.toolTip.HideToolTip()
- def __del__(self):
- ui.ExpandedImageBox.__del__(self)
- def SetPotionType(self, type):
- self.potionType = type
- if player.AUTO_POTION_TYPE_HP == type:
- self.filePath = self.FILE_PATH_HP
- elif player.AUTO_POTION_TYPE_SP == type:
- self.filePath = self.FILE_PATH_SP
- def OnUpdateAutoPotionImage(self):
- self.__Refresh()
- def __Refresh(self):
- print "__Refresh"
- isActivated, currentAmount, totalAmount, slotIndex = player.GetAutoPotionInfo(self.potionType)
- amountPercent = (float(currentAmount) / totalAmount) * 100.0
- grade = math.ceil(amountPercent / 20)
- if 5.0 > amountPercent:
- grade = 0
- if 80.0 < amountPercent:
- grade = 4
- if 90.0 < amountPercent:
- grade = 5
- fmt = self.filePath + "%.2d.dds"
- fileName = fmt % grade
- print self.potionType, amountPercent, fileName
- try:
- self.LoadImage(fileName)
- except:
- import dbg
- dbg.TraceError("AutoPotionImage.__Refresh(potionType=%d) - LoadError %s" % (self.potionType, fileName))
- self.SetScale(0.7, 0.7)
- self.toolTip.ClearToolTip()
- if player.AUTO_POTION_TYPE_HP == type:
- self.toolTip.SetTitle(localeInfo.TOOLTIP_AUTO_POTION_HP)
- else:
- self.toolTip.SetTitle(localeInfo.TOOLTIP_AUTO_POTION_SP)
- self.toolTip.AppendTextLine(localeInfo.TOOLTIP_AUTO_POTION_REST % (amountPercent))
- self.toolTip.ResizeToolTip()
- def OnMouseOverIn(self):
- self.toolTip.ShowToolTip()
- def OnMouseOverOut(self):
- self.toolTip.HideToolTip()
- # END_OF_AUTO_POTION
- class AffectImage(ui.ExpandedImageBox):
- def __init__(self):
- ui.ExpandedImageBox.__init__(self)
- self.toolTipText = None
- self.isSkillAffect = True
- self.description = None
- self.endTime = 0
- self.affect = None
- self.isClocked = True
- def SetAffect(self, affect):
- self.affect = affect
- def GetAffect(self):
- return self.affect
- def SetToolTipText(self, text, x = 0, y = -19):
- if not self.toolTipText:
- textLine = ui.TextLine()
- textLine.SetParent(self)
- textLine.SetSize(0, 0)
- textLine.SetOutline()
- textLine.Hide()
- self.toolTipText = textLine
- self.toolTipText.SetText(text)
- w, h = self.toolTipText.GetTextSize()
- self.toolTipText.SetPosition(max(0, x + self.GetWidth()/2 - w/2), y)
- def SetDescription(self, description):
- self.description = description
- def SetDuration(self, duration):
- self.endTime = 0
- if duration > 0:
- self.endTime = app.GetGlobalTimeStamp() + duration
- def UpdateAutoPotionDescription(self):
- potionType = 0
- if self.affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY:
- potionType = player.AUTO_POTION_TYPE_HP
- else:
- potionType = player.AUTO_POTION_TYPE_SP
- isActivated, currentAmount, totalAmount, slotIndex = player.GetAutoPotionInfo(potionType)
- #print "UpdateAutoPotionDescription ", isActivated, currentAmount, totalAmount, slotIndex
- amountPercent = 0.0
- try:
- amountPercent = (float(currentAmount) / totalAmount) * 100.0
- except:
- amountPercent = 100.0
- self.SetToolTipText(self.description % amountPercent, 0, 40)
- def SetClock(self, isClocked):
- self.isClocked = isClocked
- def UpdateDescription(self):
- if not self.isClocked:
- self.__UpdateDescription2()
- return
- if not self.description:
- return
- toolTip = self.description
- if self.endTime > 0:
- leftTime = ""
- if app.ENABLE_TARGET_AFFECT:
- restTime = self.endTime - app.GetGlobalTimeStamp()
- if restTime < 60:
- leftTime = str(restTime) + " " + localeInfo.SECOND
- else:
- leftTime = localeInfo.SecondToDHM(restTime)
- else:
- leftTime = localeInfo.SecondToDHM(self.endTime - app.GetGlobalTimeStamp())
- toolTip += " (%s : %s)" % (localeInfo.LEFT_TIME, leftTime)
- self.SetToolTipText(toolTip, 0, 40)
- def __UpdateDescription2(self):
- if not self.description:
- return
- toolTip = self.description
- self.SetToolTipText(toolTip, 0, 40)
- def SetSkillAffectFlag(self, flag):
- self.isSkillAffect = flag
- def IsSkillAffect(self):
- return self.isSkillAffect
- def OnMouseOverIn(self):
- if self.toolTipText:
- self.toolTipText.Show()
- def OnMouseOverOut(self):
- if self.toolTipText:
- self.toolTipText.Hide()
- class AffectShower(ui.Window):
- MALL_DESC_IDX_START = 1000
- IMAGE_STEP = 25
- AFFECT_MAX_NUM = 32
- INFINITE_AFFECT_DURATION = 0x1FFFFFFF
- AFFECT_DATA_DICT = {
- chr.AFFECT_POISON : (localeInfo.SKILL_TOXICDIE, "d:/ymir work/ui/skill/common/affect/poison.sub"),
- chr.AFFECT_SLOW : (localeInfo.SKILL_SLOW, "d:/ymir work/ui/skill/common/affect/slow.sub"),
- chr.AFFECT_STUN : (localeInfo.SKILL_STUN, "d:/ymir work/ui/skill/common/affect/stun.sub"),
- chr.AFFECT_ATT_SPEED_POTION : (localeInfo.SKILL_INC_ATKSPD, "icon/item/27102.tga"),
- chr.AFFECT_MOV_SPEED_POTION : (localeInfo.SKILL_INC_MOVSPD, "icon/item/27105.tga"),
- chr.AFFECT_FISH_MIND : (localeInfo.SKILL_FISHMIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub"),
- chr.AFFECT_JEONGWI : (localeInfo.SKILL_JEONGWI, "d:/ymir work/ui/skill/warrior/jeongwi_03.sub",),
- chr.AFFECT_GEOMGYEONG : (localeInfo.SKILL_GEOMGYEONG, "d:/ymir work/ui/skill/warrior/geomgyeong_03.sub",),
- chr.AFFECT_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",),
- chr.AFFECT_GYEONGGONG : (localeInfo.SKILL_GYEONGGONG, "d:/ymir work/ui/skill/assassin/gyeonggong_03.sub",),
- chr.AFFECT_EUNHYEONG : (localeInfo.SKILL_EUNHYEONG, "d:/ymir work/ui/skill/assassin/eunhyeong_03.sub",),
- chr.AFFECT_GWIGEOM : (localeInfo.SKILL_GWIGEOM, "d:/ymir work/ui/skill/sura/gwigeom_03.sub",),
- chr.AFFECT_GONGPO : (localeInfo.SKILL_GONGPO, "d:/ymir work/ui/skill/sura/gongpo_03.sub",),
- chr.AFFECT_JUMAGAP : (localeInfo.SKILL_JUMAGAP, "d:/ymir work/ui/skill/sura/jumagap_03.sub"),
- chr.AFFECT_HOSIN : (localeInfo.SKILL_HOSIN, "d:/ymir work/ui/skill/shaman/hosin_03.sub",),
- chr.AFFECT_BOHO : (localeInfo.SKILL_BOHO, "d:/ymir work/ui/skill/shaman/boho_03.sub",),
- chr.AFFECT_KWAESOK : (localeInfo.SKILL_KWAESOK, "d:/ymir work/ui/skill/shaman/kwaesok_03.sub",),
- chr.AFFECT_HEUKSIN : (localeInfo.SKILL_HEUKSIN, "d:/ymir work/ui/skill/sura/heuksin_03.sub",),
- chr.AFFECT_MUYEONG : (localeInfo.SKILL_MUYEONG, "d:/ymir work/ui/skill/sura/muyeong_03.sub",),
- chr.AFFECT_GICHEON : (localeInfo.SKILL_GICHEON, "d:/ymir work/ui/skill/shaman/gicheon_03.sub",),
- chr.AFFECT_JEUNGRYEOK : (localeInfo.SKILL_JEUNGRYEOK, "d:/ymir work/ui/skill/shaman/jeungryeok_03.sub",),
- chr.AFFECT_PABEOP : (localeInfo.SKILL_PABEOP, "d:/ymir work/ui/skill/sura/pabeop_03.sub",),
- chr.AFFECT_FALLEN_CHEONGEUN : (localeInfo.SKILL_CHEONGEUN, "d:/ymir work/ui/skill/warrior/cheongeun_03.sub",),
- 28 : (localeInfo.SKILL_FIRE, "d:/ymir work/ui/skill/sura/hwayeom_03.sub",),
- chr.AFFECT_CHINA_FIREWORK : (localeInfo.SKILL_POWERFUL_STRIKE, "d:/ymir work/ui/skill/common/affect/powerfulstrike.sub",),
- #64 - END
- chr.NEW_AFFECT_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",),
- chr.NEW_AFFECT_ITEM_BONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",),
- chr.NEW_AFFECT_SAFEBOX : (localeInfo.TOOLTIP_MALL_SAFEBOX, "d:/ymir work/ui/skill/common/affect/safebox.sub",),
- chr.NEW_AFFECT_AUTOLOOT : (localeInfo.TOOLTIP_MALL_AUTOLOOT, "d:/ymir work/ui/skill/common/affect/autoloot.sub",),
- chr.NEW_AFFECT_FISH_MIND : (localeInfo.TOOLTIP_MALL_FISH_MIND, "d:/ymir work/ui/skill/common/affect/fishmind.sub",),
- chr.NEW_AFFECT_MARRIAGE_FAST : (localeInfo.TOOLTIP_MALL_MARRIAGE_FAST, "d:/ymir work/ui/skill/common/affect/marriage_fast.sub",),
- chr.NEW_AFFECT_GOLD_BONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",),
- chr.NEW_AFFECT_NO_DEATH_PENALTY : (localeInfo.TOOLTIP_APPLY_NO_DEATH_PENALTY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
- chr.NEW_AFFECT_SKILL_BOOK_BONUS : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_BONUS, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
- chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY : (localeInfo.TOOLTIP_APPLY_SKILL_BOOK_NO_DELAY, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
- # ???? hp, sp
- chr.NEW_AFFECT_AUTO_HP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_hpgauge/05.dds"),
- chr.NEW_AFFECT_AUTO_SP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/pattern/auto_spgauge/05.dds"),
- #chr.NEW_AFFECT_AUTO_HP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
- #chr.NEW_AFFECT_AUTO_SP_RECOVERY : (localeInfo.TOOLTIP_AUTO_POTION_REST, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub"),
- MALL_DESC_IDX_START+player.POINT_MALL_ATTBONUS : (localeInfo.TOOLTIP_MALL_ATTBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/att_bonus.sub",),
- MALL_DESC_IDX_START+player.POINT_MALL_DEFBONUS : (localeInfo.TOOLTIP_MALL_DEFBONUS_STATIC, "d:/ymir work/ui/skill/common/affect/def_bonus.sub",),
- MALL_DESC_IDX_START+player.POINT_MALL_EXPBONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS, "d:/ymir work/ui/skill/common/affect/exp_bonus.sub",),
- MALL_DESC_IDX_START+player.POINT_MALL_ITEMBONUS : (localeInfo.TOOLTIP_MALL_ITEMBONUS, "d:/ymir work/ui/skill/common/affect/item_bonus.sub",),
- MALL_DESC_IDX_START+player.POINT_MALL_GOLDBONUS : (localeInfo.TOOLTIP_MALL_GOLDBONUS, "d:/ymir work/ui/skill/common/affect/gold_bonus.sub",),
- MALL_DESC_IDX_START+player.POINT_CRITICAL_PCT : (localeInfo.TOOLTIP_APPLY_CRITICAL_PCT,"d:/ymir work/ui/skill/common/affect/critical.sub"),
- MALL_DESC_IDX_START+player.POINT_PENETRATE_PCT : (localeInfo.TOOLTIP_APPLY_PENETRATE_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
- MALL_DESC_IDX_START+player.POINT_MAX_HP_PCT : (localeInfo.TOOLTIP_MAX_HP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
- MALL_DESC_IDX_START+player.POINT_MAX_SP_PCT : (localeInfo.TOOLTIP_MAX_SP_PCT, "d:/ymir work/ui/skill/common/affect/gold_premium.sub"),
- MALL_DESC_IDX_START+player.POINT_PC_BANG_EXP_BONUS : (localeInfo.TOOLTIP_MALL_EXPBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/EXP_Bonus_p_on.sub",),
- MALL_DESC_IDX_START+player.POINT_PC_BANG_DROP_BONUS: (localeInfo.TOOLTIP_MALL_ITEMBONUS_P_STATIC, "d:/ymir work/ui/skill/common/affect/Item_Bonus_p_on.sub",),
- }
- if app.ENABLE_DRAGON_SOUL_SYSTEM:
- # ??? ?, ? ?.
- AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK1] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK1, "d:/ymir work/ui/dragonsoul/buff_ds_sky1.tga")
- AFFECT_DATA_DICT[chr.NEW_AFFECT_DRAGON_SOUL_DECK2] = (localeInfo.TOOLTIP_DRAGON_SOUL_DECK2, "d:/ymir work/ui/dragonsoul/buff_ds_land1.tga")
- if app.ENABLE_NEW_PET_SYSTEM_HAIES:
- AFFECT_PET_DATA_DICT ={
- 5401 : ("مقاومة (محارب)", "d:/ymir work/ui/skill/pet/jijoong.sub"),
- 5402 : ("مقاومة (سورا)", "d:/ymir work/ui/skill/pet/jijoong.sub"),
- 5403 : ("مقاومة (نينجا)", "d:/ymir work/ui/skill/pet/jijoong.sub"),
- 5404 : ("مقاومة (شامان)", "d:/ymir work/ui/skill/pet/jijoong.sub"),
- 5405 : ("مقاومة (لاينكر)", "d:/ymir work/ui/skill/pet/jijoong.sub"),
- 5406 : ("هائج", "d:/ymir work/ui/skill/pet/pacheon.sub"),
- 5407 : ("كسر السحر", "d:/ymir work/ui/skill/pet/cheonryeong.sub"),
- 5408 : ("تسريع", "d:/ymir work/ui/skill/pet/banya.sub"),
- 5409 : ("تمرين", "d:/ymir work/ui/skill/pet/choehoenbimu.sub"),
- 5410 : ("تجديد", "d:/ymir work/ui/skill/pet/heal.sub"),
- 5411 : ("مصاص الدماء", "d:/ymir work/ui/skill/pet/stealhp.sub"),
- 5412 : ("الأشباح", "d:/ymir work/ui/skill/pet/stealmp.sub"),
- 5413 : ("عائق", "d:/ymir work/ui/skill/pet/block.sub"),
- 5414 : ("الانعكاس", "d:/ymir work/ui/skill/pet/reflect_melee.sub"),
- 5415 : ("إسقاط اليانغ", "d:/ymir work/ui/skill/pet/gold_drop.sub"),
- 5416 : ("المدى", "d:/ymir work/ui/skill/pet/bow_distance.sub"),
- 5417 : ("المناعة", "d:/ymir work/ui/skill/pet/invincibility.sub"),
- 5418 : ("الشفاء", "d:/ymir work/ui/skill/pet/removal.sub"),
- }
- if app.ENABLE_NEW_AFFECT_POTION_HAIES:
- AFFECT_DATA_DICT[AFFECT_POTION["affect"][0]] = (localeInfo.HWASEM_AND_5WAREK_HAIES, AFFECT_POTION["image"][0])
- AFFECT_DATA_DICT[AFFECT_POTION["affect"][1]] = (localeInfo.B4R_HAIES, AFFECT_POTION["image"][1])
- AFFECT_DATA_DICT[AFFECT_POTION["affect"][2]] = (localeInfo.KWA_DD_HAIES, AFFECT_POTION["image"][2])
- AFFECT_DATA_DICT[AFFECT_POTION["affect"][3]] = (localeInfo.DEF_DD_HAIES, AFFECT_POTION["image"][3])
- #AFFECT_DATA_DICT[AFFECT_POTION["affect"][4]] = (localeInfo.HBAL_4AMLA_HAIES, AFFECT_POTION["image"][4])
- AFFECT_DATA_DICT[312] = (localeInfo.ESTORYA_4AMLA_HAIES, "icon/item/88200.tga")
- #AFFECT_DATA_DICT[AFFECT_POTION["affect"][5]] = (localeInfo.TF3ELAT_4AMLA_HAIES, AFFECT_POTION["image"][5])
- #AFFECT_DATA_DICT[AFFECT_POTION["affect"][6]] = (localeInfo.MYAH_4AMLA_HAIES, AFFECT_POTION["image"][6])
- AFFECT_DATA_DICT[AFFECT_POTION["affect"][7]] = (localeInfo.DEF_4AMLA_HAIES, AFFECT_POTION["image"][7])
- #AFFECT_DATA_DICT[AFFECT_POTION["affect"][8]] = (localeInfo.AFFECT_HLAWIAT_HAIES, AFFECT_POTION["image"][8])
- AFFECT_DATA_DICT[AFFECT_POTION["affect"][9]] = (localeInfo.AFFECT_BLOOR_HAIES, AFFECT_POTION["image"][9])
- AFFECT_DATA_DICT[AFFECT_POTION["affect"][10]] = (localeInfo.AFFECT_NO_CRISTAL_HAIES, AFFECT_POTION["image"][10])
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_ISEZAM1] = (localeInfo.AFFECT_HAIES_ISEZAM1, "icon/item/71143.tga")
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_ISEZAM2] = (localeInfo.AFFECT_HAIES_ISEZAM2, "icon/item/71149.tga")
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_ISEZAM3] = (localeInfo.AFFECT_HAIES_ISEZAM3, "icon/item/72705.tga")
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_ISEZAM4] = (localeInfo.AFFECT_HAIES_ISEZAM4, "icon/item/72706.tga")
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_ISEZAM5] = (localeInfo.AFFECT_HAIES_ISEZAM5, "icon/item/72704.tga")
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_ISEZAM6] = (localeInfo.AFFECT_HAIES_ISEZAM6, "icon/item/72703.tga")
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_KDRETELHERO] = (localeInfo.AFFECT_HAIES_KDRETELHERO, "icon/item/88179.tga")
- AFFECT_DATA_DICT[chr.AFFECT_HAIES_FISH1] = (localeInfo.AFFECT_HAIES_FISH1, "icon/item/finshing.tga")
- AFFECT_DATA_DICT[chr.AFFECT_GHAZY_SH] = (localeInfo.AFFECT_GHAZY_SH, "icon/item/53437.tga")
- if app.ENABLE_WOLFMAN_CHARACTER:
- AFFECT_DATA_DICT[chr.AFFECT_BLEEDING] = (localeInfo.SKILL_BLEEDING, "d:/ymir work/ui/skill/common/affect/poison.sub")
- AFFECT_DATA_DICT[chr.AFFECT_RED_POSSESSION] = ("Red Possession", "d:/ymir work/ui/skill/wolfman/red_possession_03.sub")
- AFFECT_DATA_DICT[chr.AFFECT_BLUE_POSSESSION] = ("Blue Possession", "d:/ymir work/ui/skill/wolfman/blue_possession_03.sub")
- def __init__(self):
- ui.Window.__init__(self)
- self.serverPlayTime=0
- self.clientPlayTime=0
- if app.ENABLE_TARGET_AFFECT:
- self.ignoreCheck = False
- self.lastUpdateTime=0
- self.affectImageDict={}
- self.horseImage=None
- self.lovePointImage=None
- self.autoPotionImageHP = AutoPotionImage()
- self.autoPotionImageSP = AutoPotionImage()
- self.SetPosition(10, 10)
- self.Show()
- def ClearAllAffects(self):
- self.horseImage=None
- self.lovePointImage=None
- if app.ENABLE_TARGET_AFFECT:
- for aff in self.affectImageDict:
- self.affectImageDict[aff].Hide()
- self.affectImageDict={}
- self.__ArrangeImageList()
- def ClearAffects(self): ## ?? ???? ????.
- self.living_affectImageDict={}
- for key, image in self.affectImageDict.items():
- if not image.IsSkillAffect():
- self.living_affectImageDict[key] = image
- self.affectImageDict = self.living_affectImageDict
- self.__ArrangeImageList()
- def BINARY_NEW_AddAffect(self, type, pointIdx, value, duration):
- print "BINARY_NEW_AddAffect", type, pointIdx, value, duration
- if app.ENABLE_NEW_AFFECT_POTION_HAIES:
- if type < 500 and not\
- type == AFFECT_POTION["affect"][0] and not\
- type == AFFECT_POTION["affect"][1] and not\
- type == AFFECT_POTION["affect"][2] and not\
- type == AFFECT_POTION["affect"][3] and not\
- type == AFFECT_POTION["affect"][4] and not\
- type == AFFECT_POTION["affect"][5] and not\
- type == AFFECT_POTION["affect"][6] and not\
- type == AFFECT_POTION["affect"][7] and not\
- type == AFFECT_POTION["affect"][8] and not\
- type == AFFECT_POTION["affect"][9] and not\
- type == AFFECT_POTION["affect"][10] and not\
- type == chr.AFFECT_HAIES_ISEZAM1 and not\
- type == chr.AFFECT_HAIES_ISEZAM2 and not\
- type == chr.AFFECT_HAIES_ISEZAM3 and not\
- type == chr.AFFECT_HAIES_ISEZAM4 and not\
- type == chr.AFFECT_HAIES_ISEZAM5 and not\
- type == chr.AFFECT_HAIES_ISEZAM6 and not\
- type == chr.AFFECT_HAIES_KDRETELHERO and not\
- type == chr.AFFECT_HAIES_FISH1 and not\
- type == chr.AFFECT_GHAZY_SH:
- return
- if app.ENABLE_TARGET_AFFECT:
- if not self.ignoreCheck:
- if type < 500:
- return
- else:
- if type < 500:
- return
- if type == chr.NEW_AFFECT_MALL:
- affect = self.MALL_DESC_IDX_START + pointIdx
- else:
- affect = type
- if self.affectImageDict.has_key(affect):
- return
- if app.ENABLE_NEW_PET_SYSTEM_HAIES:
- if not self.AFFECT_DATA_DICT.has_key(affect) and not self.AFFECT_PET_DATA_DICT.has_key(affect):
- return
- else:
- if not self.AFFECT_DATA_DICT.has_key(affect):
- return
- ## ??? ??, ??? ??? Duration ? 0 ?? ????.
- if affect == chr.NEW_AFFECT_NO_DEATH_PENALTY or\
- affect == chr.NEW_AFFECT_SKILL_BOOK_BONUS or\
- affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or\
- affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY or\
- affect == chr.NEW_AFFECT_SKILL_BOOK_NO_DELAY:
- duration = 0
- if app.ENABLE_NEW_PET_SYSTEM_HAIES:
- if affect >= 5400 and affect <= 5419:
- affectData = self.AFFECT_PET_DATA_DICT[affect]
- else:
- affectData = self.AFFECT_DATA_DICT[affect]
- else:
- affectData = self.AFFECT_DATA_DICT[affect]
- description = affectData[0]
- filename = affectData[1]
- if pointIdx == player.POINT_MALL_ITEMBONUS or\
- pointIdx == player.POINT_MALL_GOLDBONUS:
- value = 1 + float(value) / 100.0
- trashValue = 123
- #if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY:
- if trashValue == 1:
- try:
- #image = AutoPotionImage()
- #image.SetParent(self)
- image = None
- if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY:
- image.SetPotionType(player.AUTO_POTION_TYPE_SP)
- image = self.autoPotionImageSP
- #self.autoPotionImageSP = image;
- else:
- image.SetPotionType(player.AUTO_POTION_TYPE_HP)
- image = self.autoPotionImageHP
- #self.autoPotionImageHP = image;
- image.SetParent(self)
- image.Show()
- image.OnUpdateAutoPotionImage()
- self.affectImageDict[affect] = image
- self.__ArrangeImageList()
- except Exception, e:
- print "except Aff auto potion affect ", e
- pass
- else:
- if app.ENABLE_NEW_PET_SYSTEM_HAIES:
- if affect != chr.NEW_AFFECT_AUTO_SP_RECOVERY and affect != chr.NEW_AFFECT_AUTO_HP_RECOVERY\
- and not self.AFFECT_PET_DATA_DICT.has_key(affect):
- try:
- description = description(float(value))
- except:
- description = description[float(value)]
- if affect != chr.NEW_AFFECT_AUTO_SP_RECOVERY and affect != chr.NEW_AFFECT_AUTO_HP_RECOVERY:
- if app.ENABLE_TARGET_AFFECT:
- if callable(description):
- description = description(float(value))
- else:
- description = description(float(value))
- try:
- print "Add affect %s" % affect
- image = AffectImage()
- image.SetParent(self)
- image.LoadImage(filename)
- image.SetDescription(description)
- image.SetDuration(duration)
- image.SetAffect(affect)
- if affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE or\
- affect == chr.NEW_AFFECT_EXP_BONUS_EURO_FREE_UNDER_15 or\
- self.INFINITE_AFFECT_DURATION < duration:
- image.SetClock(False)
- image.UpdateDescription()
- elif affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY or affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY:
- image.UpdateAutoPotionDescription()
- else:
- image.UpdateDescription()
- if affect == chr.NEW_AFFECT_DRAGON_SOUL_DECK1 or affect == chr.NEW_AFFECT_DRAGON_SOUL_DECK2:
- image.SetScale(1, 1)
- else:
- image.SetScale(0.7, 0.7)
- image.SetSkillAffectFlag(False)
- image.Show()
- self.affectImageDict[affect] = image
- self.__ArrangeImageList()
- except Exception, e:
- print "except Aff affect ", e
- pass
- def BINARY_NEW_RemoveAffect(self, type, pointIdx):
- if type == chr.NEW_AFFECT_MALL:
- affect = self.MALL_DESC_IDX_START + pointIdx
- else:
- affect = type
- print "Remove Affect %s %s" % ( type , pointIdx )
- self.__RemoveAffect(affect)
- self.__ArrangeImageList()
- def SetAffect(self, affect):
- self.__AppendAffect(affect)
- self.__ArrangeImageList()
- def ResetAffect(self, affect):
- self.__RemoveAffect(affect)
- self.__ArrangeImageList()
- def SetLoverInfo(self, name, lovePoint):
- image = LovePointImage()
- image.SetParent(self)
- image.SetLoverInfo(name, lovePoint)
- self.lovePointImage = image
- self.__ArrangeImageList()
- def ShowLoverState(self):
- if self.lovePointImage:
- self.lovePointImage.Show()
- self.__ArrangeImageList()
- def HideLoverState(self):
- if self.lovePointImage:
- self.lovePointImage.Hide()
- self.__ArrangeImageList()
- def ClearLoverState(self):
- self.lovePointImage = None
- self.__ArrangeImageList()
- def OnUpdateLovePoint(self, lovePoint):
- if self.lovePointImage:
- self.lovePointImage.OnUpdateLovePoint(lovePoint)
- def SetHorseState(self, level, health, battery):
- if level==0:
- self.horseImage=None
- else:
- image = HorseImage()
- image.SetParent(self)
- image.SetState(level, health, battery)
- image.Show()
- self.horseImage=image
- self.__ArrangeImageList()
- def SetPlayTime(self, playTime):
- self.serverPlayTime = playTime
- self.clientPlayTime = app.GetTime()
- if localeInfo.IsVIETNAM():
- image = PlayTimeImage()
- image.SetParent(self)
- image.SetPlayTime(playTime)
- image.Show()
- self.playTimeImage=image
- self.__ArrangeImageList()
- def __AppendAffect(self, affect):
- if self.affectImageDict.has_key(affect):
- return
- try:
- affectData = self.AFFECT_DATA_DICT[affect]
- except KeyError:
- return
- name = affectData[0]
- filename = affectData[1]
- skillIndex = player.AffectIndexToSkillIndex(affect)
- if 0 != skillIndex:
- name = skill.GetSkillName(skillIndex)
- image = AffectImage()
- image.SetParent(self)
- image.SetSkillAffectFlag(True)
- try:
- image.LoadImage(filename)
- except:
- pass
- image.SetToolTipText(name, 0, 40)
- image.SetScale(0.7, 0.7)
- image.Show()
- self.affectImageDict[affect] = image
- def __RemoveAffect(self, affect):
- """
- if affect == chr.NEW_AFFECT_AUTO_SP_RECOVERY:
- self.autoPotionImageSP.Hide()
- if affect == chr.NEW_AFFECT_AUTO_HP_RECOVERY:
- self.autoPotionImageHP.Hide()
- """
- if not self.affectImageDict.has_key(affect):
- print "__RemoveAffect %s ( No Affect )" % affect
- return
- print "__RemoveAffect %s ( Affect )" % affect
- del self.affectImageDict[affect]
- self.__ArrangeImageList()
- def __ArrangeImageList(self):
- width = len(self.affectImageDict) * self.IMAGE_STEP
- if self.lovePointImage:
- width+=self.IMAGE_STEP
- if self.horseImage:
- width+=self.IMAGE_STEP
- self.SetSize(width, 26)
- xPos = 0
- if self.lovePointImage:
- if self.lovePointImage.IsShow():
- self.lovePointImage.SetPosition(xPos, 0)
- xPos += self.IMAGE_STEP
- if self.horseImage:
- self.horseImage.SetPosition(xPos, 0)
- xPos += self.IMAGE_STEP
- for image in self.affectImageDict.values():
- image.SetPosition(xPos, 0)
- xPos += self.IMAGE_STEP
- def OnUpdate(self):
- try:
- if app.ENABLE_TARGET_AFFECT:
- if app.GetGlobalTime() - self.lastUpdateTime > 500 or self.ignoreCheck:
- self.lastUpdateTime = app.GetGlobalTime()
- for image in self.affectImageDict.values():
- if image.GetAffect() == chr.NEW_AFFECT_AUTO_HP_RECOVERY or image.GetAffect() == chr.NEW_AFFECT_AUTO_SP_RECOVERY:
- image.UpdateAutoPotionDescription()
- continue
- if not image.IsSkillAffect():
- image.UpdateDescription()
- else:
- if app.GetGlobalTime() - self.lastUpdateTime > 500:
- self.lastUpdateTime = app.GetGlobalTime()
- for image in self.affectImageDict.values():
- if image.GetAffect() == chr.NEW_AFFECT_AUTO_HP_RECOVERY or image.GetAffect() == chr.NEW_AFFECT_AUTO_SP_RECOVERY:
- image.UpdateAutoPotionDescription()
- continue
- if not image.IsSkillAffect():
- image.UpdateDescription()
- except Exception, e:
- print "AffectShower::OnUpdate error : ", e
-
this system only work in monster ?? or player others? ??
-
-
-
Code: uitarget.py
- import app
- import ui
- import player
- import haiesnet as net
- import wndMgr
- import messenger
- import guild
- import chr
- import nonplayer
- import localeInfo
- import constInfo
- import event
- import target_hp
- class TargetBoard(ui.ThinBoard):
- BUTTON_NAME_LIST = (
- localeInfo.TARGET_BUTTON_WHISPER,
- localeInfo.TARGET_BUTTON_EXCHANGE,
- localeInfo.TARGET_BUTTON_FIGHT,
- localeInfo.TARGET_BUTTON_ACCEPT_FIGHT,
- localeInfo.TARGET_BUTTON_AVENGE,
- localeInfo.TARGET_BUTTON_FRIEND,
- localeInfo.TARGET_BUTTON_INVITE_PARTY,
- localeInfo.TARGET_BUTTON_LEAVE_PARTY,
- localeInfo.TARGET_BUTTON_EXCLUDE,
- localeInfo.TARGET_BUTTON_INVITE_GUILD,
- localeInfo.TARGET_BUTTON_DISMOUNT,
- localeInfo.TARGET_BUTTON_EXIT_OBSERVER,
- localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
- localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY,
- localeInfo.TARGET_BUTTON_BUILDING_DESTROY,
- localeInfo.TARGET_BUTTON_EMOTION_ALLOW,
- localeInfo.TARGET_BUTTON_BLOCK,
- localeInfo.TARGET_BUTTON_UNBLOCK,
- localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT,
- "VOTE_BLOCK_CHAT",
- localeInfo.TARGET_BUTTON_DC_HAIES,
- localeInfo.TARGET_BUTTON_REFRESH_HAIES,
- #localeInfo.TARGET_BUTTON_FIGHT_HARTS,
- #localeInfo.TARGET_BUTTON_ACCEPT_FIGHT_HARTS,
- #localeInfo.TARGET_BUTTON_AVENGE_HARTS,
- #localeInfo.TARGET_BUTTON_FREEZ,
- )
- GRADE_NAME = {
- nonplayer.PAWN : localeInfo.TARGET_LEVEL_PAWN,
- nonplayer.S_PAWN : localeInfo.TARGET_LEVEL_S_PAWN,
- nonplayer.KNIGHT : localeInfo.TARGET_LEVEL_KNIGHT,
- nonplayer.S_KNIGHT : localeInfo.TARGET_LEVEL_S_KNIGHT,
- nonplayer.BOSS : localeInfo.TARGET_LEVEL_BOSS,
- nonplayer.KING : localeInfo.TARGET_LEVEL_KING,
- }
- EXCHANGE_LIMIT_RANGE = 3000
- def __init__(self):
- ui.ThinBoard.__init__(self)
- self.targethp = target_hp.HealthBoard()
- name = ui.TextLine()
- name.SetParent(self)
- name.SetDefaultFontName()
- name.SetOutline()
- name.Show()
- hpGauge = ui.Gauge()
- hpGauge.SetParent(self)
- hpGauge.MakeGauge(130, "red")
- hpGauge.Hide()
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- hpDecimal = ui.TextLine()
- hpDecimal.SetParent(hpGauge)
- hpDecimal.SetDefaultFontName()
- hpDecimal.SetPosition(5, 5)
- hpDecimal.SetOutline()
- hpDecimal.Hide()
- closeButton = ui.Button()
- closeButton.SetParent(self)
- closeButton.SetUpVisual("d:/ymir work/ui/public/close_button_01.sub")
- closeButton.SetOverVisual("d:/ymir work/ui/public/close_button_02.sub")
- closeButton.SetDownVisual("d:/ymir work/ui/public/close_button_03.sub")
- closeButton.SetPosition(30, 13)
- if localeInfo.IsARABIC():
- hpGauge.SetPosition(55, 17)
- hpGauge.SetWindowHorizontalAlignLeft()
- closeButton.SetWindowHorizontalAlignLeft()
- else:
- hpGauge.SetPosition(175, 17)
- hpGauge.SetWindowHorizontalAlignRight()
- closeButton.SetWindowHorizontalAlignRight()
- closeButton.SetEvent(ui.__mem_func__(self.OnPressedCloseButton))
- closeButton.Show()
- self.buttonDict = {}
- self.showingButtonList = []
- for buttonName in self.BUTTON_NAME_LIST:
- button = ui.Button()
- button.SetParent(self)
- if localeInfo.IsARABIC():
- button.SetUpVisual("d:/ymir work/ui/public/Small_Button_01.sub")
- button.SetOverVisual("d:/ymir work/ui/public/Small_Button_02.sub")
- button.SetDownVisual("d:/ymir work/ui/public/Small_Button_03.sub")
- else:
- button.SetUpVisual("d:/ymir work/ui/public/small_thin_button_01.sub")
- button.SetOverVisual("d:/ymir work/ui/public/small_thin_button_02.sub")
- button.SetDownVisual("d:/ymir work/ui/public/small_thin_button_03.sub")
- button.SetWindowHorizontalAlignCenter()
- button.SetText(buttonName)
- button.Hide()
- self.buttonDict[buttonName] = button
- self.showingButtonList.append(button)
- self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER].SetEvent(ui.__mem_func__(self.OnWhisper))
- if app.ENABLE_MESSENGER_BLOCK:
- self.buttonDict[localeInfo.TARGET_BUTTON_BLOCK].SetEvent(ui.__mem_func__(self.OnAppendToBlockMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_UNBLOCK].SetEvent(ui.__mem_func__(self.OnRemoveToBlockMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE].SetEvent(ui.__mem_func__(self.OnExchange))
- self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT].SetEvent(ui.__mem_func__(self.OnPVP))
- self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE].SetEvent(ui.__mem_func__(self.OnPVP))
- #self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT_HARTS].SetEvent(ui.__mem_func__(self.OnPVPHart))
- #self.buttonDict[localeInfo.TARGET_BUTTON_ACCEPT_FIGHT_HARTS].SetEvent(ui.__mem_func__(self.OnPVPHart))
- #self.buttonDict[localeInfo.TARGET_BUTTON_AVENGE_HARTS].SetEvent(ui.__mem_func__(self.OnPVPHart))
- self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_FRIEND].SetEvent(ui.__mem_func__(self.OnAppendToMessenger))
- self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyInvite))
- self.buttonDict[localeInfo.TARGET_BUTTON_LEAVE_PARTY].SetEvent(ui.__mem_func__(self.OnPartyExit))
- self.buttonDict[localeInfo.TARGET_BUTTON_EXCLUDE].SetEvent(ui.__mem_func__(self.OnPartyRemove))
- self.buttonDict[localeInfo.TARGET_BUTTON_INVITE_GUILD].SAFE_SetEvent(self.__OnGuildAddMember)
- self.buttonDict[localeInfo.TARGET_BUTTON_DISMOUNT].SAFE_SetEvent(self.__OnDismount)
- self.buttonDict[localeInfo.TARGET_BUTTON_EXIT_OBSERVER].SAFE_SetEvent(self.__OnExitObserver)
- self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
- self.buttonDict[localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY].SAFE_SetEvent(self.__OnRequestParty)
- self.buttonDict[localeInfo.TARGET_BUTTON_BUILDING_DESTROY].SAFE_SetEvent(self.__OnDestroyBuilding)
- self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW].SAFE_SetEvent(self.__OnEmotionAllow)
- self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT].SAFE_SetEvent(self.__OnViewEquipment)
- self.buttonDict["VOTE_BLOCK_CHAT"].SetEvent(ui.__mem_func__(self.__OnVoteBlockChat))
- self.buttonDict[localeInfo.TARGET_BUTTON_DC_HAIES].SetEvent(ui.__mem_func__(self.OnKick))
- self.buttonDict[localeInfo.TARGET_BUTTON_REFRESH_HAIES].SetEvent(ui.__mem_func__(self.OnRefresh))
- #self.buttonDict[localeInfo.TARGET_BUTTON_FREEZ].SetEvent(ui.__mem_func__(self.OnFreez))
- self.name = name
- self.hpGauge = hpGauge
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- self.hpDecimal = hpDecimal
- self.closeButton = closeButton
- self.nameString = 0
- self.nameLength = 0
- self.vid = 0
- self.eventWhisper = None
- self.isShowButton = False
- self.__Initialize()
- self.ResetTargetBoard()
- def __del__(self):
- ui.ThinBoard.__del__(self)
- print "===================================================== DESTROYED TARGET BOARD"
- def __Initialize(self):
- self.nameString = ""
- self.nameLength = 0
- self.vid = 0
- self.isShowButton = False
- def Destroy(self):
- self.eventWhisper = None
- self.closeButton = None
- self.showingButtonList = None
- self.buttonDict = None
- self.name = None
- self.hpGauge = None
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- self.hpDecimal = None
- self.targethp = None
- self.__Initialize()
- def OnPressedCloseButton(self):
- player.ClearTarget()
- self.Close()
- def Close(self):
- self.__Initialize()
- self.Hide()
- self.targethp.Hide()
- def Open(self, vid, name):
- if vid:
- if not constInfo.GET_VIEW_OTHER_EMPIRE_PLAYER_TARGET_BOARD():
- if not player.IsSameEmpire(vid):
- self.Hide()
- return
- if vid != self.GetTargetVID():
- self.ResetTargetBoard()
- self.SetTargetVID(vid)
- self.SetTargetName(name)
- if player.IsMainCharacterIndex(vid):
- self.__ShowMainCharacterMenu()
- elif chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
- self.Hide()
- else:
- self.RefreshButton()
- self.Show()
- if self.vid == 0:
- self.targethp.Hide()
- else:
- self.targethp.Show()
- self.targethp.SetWindowHorizontalAlignCenter()
- else:
- self.HideAllButton()
- self.__ShowButton(localeInfo.TARGET_BUTTON_WHISPER)
- self.__ShowButton("VOTE_BLOCK_CHAT")
- self.__ArrangeButtonPosition()
- self.SetTargetName(name)
- self.Show()
- def Refresh(self):
- if self.IsShow():
- if self.IsShowButton():
- self.RefreshButton()
- def RefreshByVID(self, vid):
- if vid == self.GetTargetVID():
- self.Refresh()
- def RefreshByName(self, name):
- if name == self.GetTargetName():
- self.Refresh()
- def __ShowMainCharacterMenu(self):
- canShow=0
- self.HideAllButton()
- if player.IsMountingHorse():
- self.__ShowButton(localeInfo.TARGET_BUTTON_DISMOUNT)
- canShow=1
- if player.IsObserverMode():
- self.__ShowButton(localeInfo.TARGET_BUTTON_EXIT_OBSERVER)
- canShow=1
- if canShow:
- self.__ArrangeButtonPosition()
- self.Show()
- else:
- self.Hide()
- def __ShowNameOnlyMenu(self):
- self.HideAllButton()
- def SetWhisperEvent(self, event):
- self.eventWhisper = event
- def UpdatePosition(self):
- self.SetPosition(wndMgr.GetScreenWidth()/2 - self.GetWidth()/2, 10)
- def ResetTargetBoard(self):
- self.targethp.Hide()
- for btn in self.buttonDict.values():
- btn.Hide()
- self.__Initialize()
- self.name.SetPosition(0, 13)
- self.name.SetHorizontalAlignCenter()
- self.name.SetWindowHorizontalAlignCenter()
- self.hpGauge.Hide()
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- self.hpDecimal.Hide()
- self.SetSize(250, 40)
- def SetTargetVID(self, vid):
- self.vid = vid
- def SetEnemyVID(self, vid):
- self.SetTargetVID(vid)
- name = chr.GetNameByVID(vid)
- level = nonplayer.GetLevelByVID(vid)
- grade = nonplayer.GetGradeByVID(vid)
- nameFront = ""
- if -1 != level:
- nameFront += "Lv." + str(level) + " "
- if self.GRADE_NAME.has_key(grade):
- nameFront += "(" + self.GRADE_NAME[grade] + ") "
- self.SetTargetName(nameFront + name)
- def GetTargetVID(self):
- return self.vid
- def GetTargetName(self):
- return self.nameString
- def SetTargetName(self, name):
- self.nameString = name
- self.nameLength = len(name)
- self.name.SetText(name)
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- def SetHP(self, hpPercentage, iMinHP, iMaxHP):
- if not self.hpGauge.IsShow():
- if app.ENABLE_VIEW_TARGET_PLAYER_HP:
- showingButtonCount = len(self.showingButtonList)
- if showingButtonCount > 0:
- if chr.GetInstanceType(self.vid) == chr.INSTANCE_TYPE_PLAYER:
- self.SetSize(max(150 + 75 * 3, showingButtonCount * 75), self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- if localeInfo.IsARABIC():
- self.name.SetPosition( self.GetWidth()-23, 13)
- else:
- self.name.SetPosition(23, 13)
- self.name.SetWindowHorizontalAlignLeft()
- self.name.SetHorizontalAlignLeft()
- self.hpGauge.Show()
- self.UpdatePosition()
- self.hpGauge.SetPercentage(hpPercentage, 100)
- if app.ENABLE_VIEW_TARGET_DECIMAL_HP:
- iMinHPText = '.'.join([i - 3 < 0 and str(iMinHP)[:i] or str(iMinHP)[i-3:i] for i in range(len(str(iMinHP)) % 3, len(str(iMinHP))+1, 3) if i])
- iMaxHPText = '.'.join([i - 3 < 0 and str(iMaxHP)[:i] or str(iMaxHP)[i-3:i] for i in range(len(str(iMaxHP)) % 3, len(str(iMaxHP))+1, 3) if i])
- self.hpDecimal.SetText(str(iMinHPText) + "/" + str(iMaxHPText))
- (textWidth, textHeight)=self.hpDecimal.GetTextSize()
- if localeInfo.IsARABIC():
- self.hpDecimal.SetPosition(120 / 2 + textWidth / 2, -13)
- else:
- self.hpDecimal.SetPosition(130 / 2 - textWidth / 2, -13)
- self.hpDecimal.Show()
- else:
- def SetHP(self, hpPercentage):
- if not self.hpGauge.IsShow():
- if app.ENABLE_VIEW_TARGET_PLAYER_HP:
- showingButtonCount = len(self.showingButtonList)
- if showingButtonCount > 0:
- if chr.GetInstanceType(self.GetTargetVID) != chr.INSTANCE_TYPE_PLAYER:
- if showingButtonCount != 1:
- self.SetSize(max(150, showingButtonCount * 75), self.GetHeight())
- else:
- self.SetSize(max(150, 2 * 75), self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- else:
- self.SetSize(200 + 7*self.nameLength, self.GetHeight())
- if localeInfo.IsARABIC():
- self.name.SetPosition( self.GetWidth()-23, 13)
- else:
- self.name.SetPosition(23, 13)
- self.name.SetWindowHorizontalAlignLeft()
- self.name.SetHorizontalAlignLeft()
- self.hpGauge.Show()
- self.UpdatePosition()
- def ShowDefaultButton(self):
- self.isShowButton = True
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_WHISPER])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE])
- #if chr.IsGameMaster(player.GetMainCharacterIndex()):
- #self.__ShowButton(localeInfo.TARGET_BUTTON_FREEZ)
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT])
- #self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_FIGHT_HARTS])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_VIEW_EQUIPMENT])
- self.showingButtonList.append(self.buttonDict[localeInfo.TARGET_BUTTON_EMOTION_ALLOW])
- for button in self.showingButtonList:
- button.Show()
- def HideAllButton(self):
- self.isShowButton = False
- for button in self.showingButtonList:
- button.Hide()
- self.showingButtonList = []
- def __ShowButton(self, name):
- if not self.buttonDict.has_key(name):
- return
- self.buttonDict[name].Show()
- self.showingButtonList.append(self.buttonDict[name])
- def __HideButton(self, name):
- if not self.buttonDict.has_key(name):
- return
- button = self.buttonDict[name]
- button.Hide()
- for btnInList in self.showingButtonList:
- if btnInList == button:
- self.showingButtonList.remove(button)
- break
- def OnWhisper(self):
- if None != self.eventWhisper:
- self.eventWhisper(self.nameString)
- def OnExchange(self):
- net.SendExchangeStartPacket(self.vid)
- def OnPVP(self):
- net.SendChatPacket("/_mobarzapvp %d" % (self.vid))
- #def OnPVPHart(self):
- #net.SendChatPacket("/_mobarzapvpharts %d" % (self.vid))
- def OnAppendToMessenger(self):
- net.SendMessengerAddByVIDPacket(self.vid)
- if app.ENABLE_MESSENGER_BLOCK:
- def OnAppendToBlockMessenger(self):
- net.SendMessengerAddBlockByVIDPacket(self.vid)
- def OnRemoveToBlockMessenger(self):
- messenger.RemoveBlock(constInfo.ME_KEY)
- net.SendMessengerRemoveBlockPacket(constInfo.ME_KEY, chr.GetNameByVID(self.vid))
- def OnPartyInvite(self):
- net.SendPartyInvitePacket(self.vid)
- def OnPartyExit(self):
- net.SendPartyExitPacket()
- def OnPartyRemove(self):
- net.SendPartyRemovePacket(player.PartyMemberVIDToPID(self.vid))
- def __OnGuildAddMember(self):
- net.SendGuildAddMemberPacket(self.vid)
- def __OnDismount(self):
- net.SendChatPacket("/unmount")
- def __OnExitObserver(self):
- net.SendChatPacket("/observer_exit")
- def __OnViewEquipment(self):
- net.SendChatPacket("/view_equip " + str(self.vid))
- def __OnRequestParty(self):
- net.SendChatPacket("/party_request " + str(self.vid))
- def __OnDestroyBuilding(self):
- net.SendChatPacket("/build d %d" % (self.vid))
- def __OnEmotionAllow(self):
- net.SendChatPacket("/emotion_allow %d" % (self.vid))
- def __OnVoteBlockChat(self):
- cmd = "/vote_block_chat %s" % (self.nameString)
- net.SendChatPacket(cmd)
- def OnPressEscapeKey(self):
- self.OnPressedCloseButton()
- return True
- def IsShowButton(self):
- return self.isShowButton
- def RefreshButton(self):
- if chr.INSTANCE_TYPE_BUILDING == chr.GetInstanceType(self.vid):
- #self.__ShowButton(localeInfo.TARGET_BUTTON_BUILDING_DESTROY)
- #self.__ArrangeButtonPosition()
- return
- if player.IsPVPInstance(self.vid) or player.IsObserverMode():
- # PVP_INFO_SIZE_BUG_FIX
- self.SetSize(200 + 7*self.nameLength, 40)
- self.UpdatePosition()
- # END_OF_PVP_INFO_SIZE_BUG_FIX
- return
- self.ShowDefaultButton()
- if str(player.GetName())[0] == "[":
- self.__ShowButton(localeInfo.TARGET_BUTTON_DC_HAIES)
- self.__ShowButton(localeInfo.TARGET_BUTTON_REFRESH_HAIES)
- if guild.MainPlayerHasAuthority(guild.AUTH_ADD_MEMBER):
- if not guild.IsMemberByName(self.nameString):
- if 0 == chr.GetGuildID(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_GUILD)
- if not messenger.IsFriendByName(self.nameString):
- self.__ShowButton(localeInfo.TARGET_BUTTON_FRIEND)
- if app.ENABLE_MESSENGER_BLOCK and not str(self.nameString)[0] == "[":
- if not messenger.IsBlockByName(self.nameString):
- self.__ShowButton(localeInfo.TARGET_BUTTON_BLOCK)
- self.__HideButton(localeInfo.TARGET_BUTTON_UNBLOCK)
- else:
- self.__ShowButton(localeInfo.TARGET_BUTTON_UNBLOCK)
- self.__HideButton(localeInfo.TARGET_BUTTON_BLOCK)
- if player.IsPartyMember(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- #self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT_HARTS)
- if player.IsPartyLeader(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_LEAVE_PARTY)
- elif player.IsPartyLeader(player.GetMainCharacterIndex()):
- self.__ShowButton(localeInfo.TARGET_BUTTON_EXCLUDE)
- else:
- if player.IsPartyMember(player.GetMainCharacterIndex()):
- if player.IsPartyLeader(player.GetMainCharacterIndex()):
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- else:
- if chr.IsPartyMember(self.vid):
- self.__ShowButton(localeInfo.TARGET_BUTTON_REQUEST_ENTER_PARTY)
- else:
- self.__ShowButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- if player.IsRevengeInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- self.__ShowButton(localeInfo.TARGET_BUTTON_AVENGE)
- #self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT_HARTS)
- #self.__ShowButton(localeInfo.TARGET_BUTTON_AVENGE_HARTS)
- elif player.IsChallengeInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- self.__ShowButton(localeInfo.TARGET_BUTTON_ACCEPT_FIGHT)
- #self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT_HARTS)
- self.__ShowButton(localeInfo.TARGET_BUTTON_ACCEPT_FIGHT_HARTS)
- elif player.IsCantFightInstance(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- #self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT_HARTS)
- if not player.IsSameEmpire(self.vid):
- self.__HideButton(localeInfo.TARGET_BUTTON_INVITE_PARTY)
- self.__HideButton(localeInfo.TARGET_BUTTON_FRIEND)
- self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT)
- #self.__HideButton(localeInfo.TARGET_BUTTON_FIGHT_HARTS)
- distance = player.GetCharacterDistance(self.vid)
- if distance > self.EXCHANGE_LIMIT_RANGE:
- self.__HideButton(localeInfo.TARGET_BUTTON_EXCHANGE)
- self.__ArrangeButtonPosition()
- self.__ArrangeButtonPosition()
- def __ArrangeButtonPosition(self):
- showingButtonCount = len(self.showingButtonList)
- pos = -(showingButtonCount / 2) * 68
- if 0 == showingButtonCount % 2:
- pos += 34
- for button in self.showingButtonList:
- button.SetPosition(pos, 33)
- pos += 68
- if app.ENABLE_VIEW_TARGET_PLAYER_HP:
- if showingButtonCount <= 2:
- self.SetSize(max(150 + 125, showingButtonCount * 75), 65)
- else:
- self.SetSize(max(150, showingButtonCount * 75), 65)
- else:
- self.SetSize(max(150, showingButtonCount * 75), 65)
- self.UpdatePosition()
- def OnUpdate(self):
- if self.isShowButton:
- exchangeButton = self.buttonDict[localeInfo.TARGET_BUTTON_EXCHANGE]
- distance = player.GetCharacterDistance(self.vid)
- if distance < 0:
- return
- if exchangeButton.IsShow():
- if distance > self.EXCHANGE_LIMIT_RANGE:
- self.RefreshButton()
- else:
- if distance < self.EXCHANGE_LIMIT_RANGE:
- self.RefreshButton()
- def OnKick(self):
- net.SendChatPacket("/dc " + str(chr.GetNameByVID(self.vid)))
- #def OnFreez(self):
- #net.SendChatPacket("/set_freez_haies " + str(self.vid))
- def OnRefresh(self):
- net.SendChatPacket("/set_nick_name " + str(self.vid))
First of
Without code we cannot do everything
Without knowing Wich systems that is we cant do anything
Without having a syserr we can't do anything
Wich system have you build in
Show us some code
Then we can help
My magic glassball can't tell us your problem