Jump to content

xxx30xxx

Inactive Member
  • Posts

    35
  • Joined

  • Last visited

  • Feedback

    0%

Everything posted by xxx30xxx

  1. Exygo i mean how add 7 day in date just this i'm very sorry Because I don't know how to use them
  2. guys i'm sorry but i mean how i use date in this function mysql_direct_query("UPDATE account.account SET gold_expire=_DATE_, silver_expire=_DATE_ WHERE id=_ID_") I need to add 7 days to one of the accounts If he are using this tool 40004 I'm sorry, I'm not good in English Thank you everyone
  3. how i use this mysql_query i'm not developer now he work with my soruce but i don't now how i use it
  4. hi dev i want ask how i use this [Hidden Content] like add 7 day for player if he use 40004
  5. hi dev When I move from MAP to MAP Page closes the game and show this [Hidden Content]
  6. now problem 1129 17:14:15472 :: Phase Select does not handle this header (header: 87, last: 32, 87) 1129 17:14:15506 :: introSelect.py(line:278) __LoadBoardDialog ui.py(line:2827) LoadScriptFile SelectCharacterWindow.LoadBoardDialog.LoadScript - <type 'exceptions.KeyError'>:'window' 1129 17:14:15506 :: ============================================================================================================ 1129 17:14:15506 :: Abort!!!!
  7. import app import ui import guild import 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("/war %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(10, wndMgr.GetScreenHeight() - 100) 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(30, 10 + 18*0) scoreText.SetHorizontalAlignLeft() 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(30, 10 + 18*1) scoreText.SetHorizontalAlignLeft() 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, } 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() self.RefreshGuildSkillPage() self.RefreshGuildGradePage() ui.ScriptWindow.Show(self) def __LoadWindow(self): global DISABLE_GUILD_SKILL try: pyScrLoader = ui.PythonScriptLoader() if localeInfo.IsARABIC() : pyScrLoader.LoadScriptFile(self, uiScriptLocale.LOCALE_UISCRIPT_PATH + "guildwindow.py") else: 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"), } 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, } 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"), } 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"), } ## 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 except: import exception exception.Abort("GuildWindow.__LoadWindow.BindObject") self.__MakeInfoPage() self.__MakeBoardPage() self.__MakeMemberPage() 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 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 if localeInfo.IsARABIC(): gradeNumberSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 310, yPos) else: gradeNumberSlotImage = ui.MakeImageBox(page, "d:/ymir work/ui/public/Parameter_Slot_00.sub", 14, 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() 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 = 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() 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 = 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 = 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() 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("/gskillup " + 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.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") """
  8. hello i have problem this syster 1129 09:00:08329 :: networkModule.py(line:200) SetSelectCharacterPhase system.py(line:151) __hybrid_import system.py(line:116) _process_result introSelect.py(line:30) <module> system.py(line:151) __hybrid_import system.py(line:116) _process_result interfaceModule.py(line:30) <module> system.py(line:151) __hybrid_import networkModule.SetSelectCharacterPhase - <type 'exceptions.IndentationError'>:unindent does not match any outer indentation level (uiGuild.py, line 2012) 1129 09:00:08329 :: ============================================================================================================ 1129 09:00:08329 :: Abort!!!!
  9. hi guys I'm searching Source server and client a good source
×
×
  • Create New...

Important Information

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