-
Compteur de contenus
87 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Boutique
Calendrier
Tout ce qui a été posté par Volkihars
-
Ça passe vite ! Faut ça continue
-
@david180001, J'ai eu le même problème que toi il à pas mal de temps, voici une ligne de code que j'utilise pour le " mob_drop_item " Group metin_of_sorrow { Mob 8001 Type drop 1 10 1 50 2 30 1 50 3 20 1 50 4 50 1 50 } Si tu introduit un item non valide, ton serveur ne fonctionnera pas comme t'as dis @vali54 plus haut.
-
Thank you
-
je suis a la recherche du tuto calypso installer serveur dédier
Volkihars a répondu à un(e) question de Infinity dans Questions & Réponses
Le tutoriel est complet, dis nous ou tu bloque -
Utilise la commande ci-dessous, dans la "Console..." Player (MySQL), ensuite ça t'affiche les mobs/boss/stones qui ont un dam_multiply entre 1 à 100 mysql> SELECT dam_multiply,vnum FROM mob_proto WHERE dam_multiply > 0; Ensuite modifie la colonne "dam_multiply" via un tableur..
-
Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Ok, bah je ferai ça plutard dès que je trouve j'expliquerai -
Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
@ASIKOO, J’ai pas fais un copie/coller du tutoriel lol j’avoue c’est pas top sur l’iPhone.. ^^ @Kameyu, D’accord ! Je regarderai à ça du coup.. je vous tiens informer ÉDIT: @Kameyu, J'ai regarder dans uiscript/selectcharacterwindow.py mes je trouve pas comment ajouter une key.. -
Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Ok, bah je testerai ce soir je suis actuellement au taff.. Je lancerai également le client en mode Débug.. j’afficherai les logs -
Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Avant, dès que je me log le client se ferme direct.. quand je laisse le fichier par défaut je peut me log également créer mon 5ème personnage mes on le vois pas.. -
Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
C'est le fichier par défaut, désolé pas préciser ^^ -
Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Ok, @DixN import ui import chr import grp import app import snd import net import math import event import wndMgr import uiCommon import uiTarget import constInfo import musicInfo import uiTaskBar import uiToolTip import localeInfo import uiCharacter import uiInventory import uiPlayerGauge import consoleModule import systemSetting import networkModule import uiAffectShower import uiScriptLocale import uiMapNameShower import interfaceModule import playerSettingModule index = 0 LEAVE_BUTTON_FOR_POTAL = FALSE NOT_NEED_DELETE_CODE = FALSE ENABLE_ENGNUM_DELETE_CODE = FALSE if localeInfo.IsJAPAN(): NOT_NEED_DELETE_CODE = TRUE elif localeInfo.IsHONGKONG(): ENABLE_ENGNUM_DELETE_CODE = TRUE elif localeInfo.IsNEWCIBN() or localeInfo.IsCIBN10(): ENABLE_ENGNUM_DELETE_CODE = TRUE elif localeInfo.IsEUROPE(): ENABLE_ENGNUM_DELETE_CODE = TRUE class SelectCharacterWindow(ui.Window): SLOT_COUNT = 4 CHARACTER_TYPE_COUNT = 4 EMPIRE_NAME = { net.EMPIRE_A : localeInfo.EMPIRE_A, net.EMPIRE_B : localeInfo.EMPIRE_B, net.EMPIRE_C : localeInfo.EMPIRE_C } RACE_NAME = { playerSettingModule.RACE_WARRIOR_M : localeInfo.JOB_WARRIOR, playerSettingModule.RACE_WARRIOR_W : localeInfo.JOB_WARRIOR, playerSettingModule.RACE_ASSASSIN_M : localeInfo.JOB_ASSASSIN, playerSettingModule.RACE_ASSASSIN_W : localeInfo.JOB_ASSASSIN, playerSettingModule.RACE_SURA_M : localeInfo.JOB_SURA, playerSettingModule.RACE_SURA_W : localeInfo.JOB_SURA, playerSettingModule.RACE_SHAMAN_M : localeInfo.JOB_SHAMAN, playerSettingModule.RACE_SHAMAN_W : localeInfo.JOB_SHAMAN, } DESCRIPTION_FILE_NAME = { playerSettingModule.RACE_WARRIOR_M : uiScriptLocale.JOBDESC_WARRIOR_PATH, playerSettingModule.RACE_WARRIOR_W : uiScriptLocale.JOBDESC_WARRIOR_PATH, playerSettingModule.RACE_ASSASSIN_M : uiScriptLocale.JOBDESC_ASSASSIN_PATH, playerSettingModule.RACE_ASSASSIN_W : uiScriptLocale.JOBDESC_ASSASSIN_PATH, playerSettingModule.RACE_SURA_M : uiScriptLocale.JOBDESC_SURA_PATH, playerSettingModule.RACE_SURA_W : uiScriptLocale.JOBDESC_SURA_PATH, playerSettingModule.RACE_SHAMAN_M : uiScriptLocale.JOBDESC_SHAMAN_PATH, playerSettingModule.RACE_SHAMAN_W : uiScriptLocale.JOBDESC_SHAMAN_PATH, } DESCRIPTION_FILE_NAME_LIMIT = { playerSettingModule.RACE_WARRIOR_M : 1, playerSettingModule.RACE_WARRIOR_W : 1, playerSettingModule.RACE_ASSASSIN_M : 1, playerSettingModule.RACE_ASSASSIN_W : 1, playerSettingModule.RACE_SURA_M : 1, playerSettingModule.RACE_SURA_W : 1, playerSettingModule.RACE_SHAMAN_M : 0, playerSettingModule.RACE_SHAMAN_W : 0, } FACE_IMAGE_DICT_1 = { playerSettingModule.RACE_WARRIOR_M : "d:/ymir work/ui/intro/public_intro/face/face_warrior_m_01.sub", playerSettingModule.RACE_WARRIOR_W : "d:/ymir work/ui/intro/public_intro/face/face_warrior_w_01.sub", playerSettingModule.RACE_ASSASSIN_M : "d:/ymir work/ui/intro/public_intro/face/face_assassin_m_01.sub", playerSettingModule.RACE_ASSASSIN_W : "d:/ymir work/ui/intro/public_intro/face/face_assassin_w_01.sub", playerSettingModule.RACE_SURA_M : "d:/ymir work/ui/intro/public_intro/face/face_sura_m_01.sub", playerSettingModule.RACE_SURA_W : "d:/ymir work/ui/intro/public_intro/face/face_sura_w_01.sub", playerSettingModule.RACE_SHAMAN_M : "d:/ymir work/ui/intro/public_intro/face/face_shaman_m_01.sub", playerSettingModule.RACE_SHAMAN_W : "d:/ymir work/ui/intro/public_intro/face/face_shaman_w_01.sub", } FACE_IMAGE_DICT_2 = { playerSettingModule.RACE_WARRIOR_M : "d:/ymir work/ui/intro/public_intro/face/face_warrior_m_02.sub", playerSettingModule.RACE_WARRIOR_W : "d:/ymir work/ui/intro/public_intro/face/face_warrior_w_02.sub", playerSettingModule.RACE_ASSASSIN_M : "d:/ymir work/ui/intro/public_intro/face/face_assassin_m_02.sub", playerSettingModule.RACE_ASSASSIN_W : "d:/ymir work/ui/intro/public_intro/face/face_assassin_w_02.sub", playerSettingModule.RACE_SURA_M : "d:/ymir work/ui/intro/public_intro/face/face_sura_m_02.sub", playerSettingModule.RACE_SURA_W : "d:/ymir work/ui/intro/public_intro/face/face_sura_w_02.sub", playerSettingModule.RACE_SHAMAN_M : "d:/ymir work/ui/intro/public_intro/face/face_shaman_m_02.sub", playerSettingModule.RACE_SHAMAN_W : "d:/ymir work/ui/intro/public_intro/face/face_shaman_w_02.sub", } FACE_IMAGE_DICT_3 = { playerSettingModule.RACE_WARRIOR_M : "icon/face/warrior_m.tga", playerSettingModule.RACE_WARRIOR_W : "icon/face/warrior_w.tga", playerSettingModule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga", playerSettingModule.RACE_ASSASSIN_W : "icon/face/assassin_w.tga", playerSettingModule.RACE_SURA_M : "icon/face/sura_m.tga", playerSettingModule.RACE_SURA_W : "icon/face/sura_w.tga", playerSettingModule.RACE_SHAMAN_M : "icon/face/shaman_m.tga", playerSettingModule.RACE_SHAMAN_W : "icon/face/shaman_w.tga", } class DescriptionBox(ui.Window): def __init__(self): ui.Window.__init__(self) self.descIndex = 0 def __del__(self): ui.Window.__del__(self) def SetIndex(self, index): self.descIndex = index def OnRender(self): event.RenderEventSet(self.descIndex) class CharacterRenderer(ui.Window): def OnRender(self): grp.ClearDepthBuffer() grp.SetGameRenderState() grp.PushState() grp.SetOmniLight() screenWidth = wndMgr.GetScreenWidth() screenHeight = wndMgr.GetScreenHeight() newScreenWidth = float(screenWidth - 270) newScreenHeight = float(screenHeight) grp.SetViewport(270.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight) app.SetCenterPosition(0.0, 0.0, 0.0) app.SetCamera(1550.0, 15.0, 180.0, 95.0) grp.SetPerspective(10.0, newScreenWidth/newScreenHeight, 1000.0, 3000.0) (x, y) = app.GetCursorPosition() grp.SetCursorPosition(x, y) chr.Deform() chr.Render() grp.RestoreViewport() grp.PopState() grp.SetInterfaceRenderState() def __init__(self, stream): ui.Window.__init__(self) net.SetPhaseWindow(net.PHASE_WINDOW_SELECT, self) self.stream=stream self.slot = self.stream.GetCharacterSlot() self.openLoadingFlag = FALSE self.startIndex = -1 self.startReservingTime = 0 self.curNameAlpha = [] self.destNameAlpha = [] for i in xrange(self.CHARACTER_TYPE_COUNT): self.curNameAlpha.append(0.0) self.destNameAlpha.append(0.0) self.curGauge = [0.0, 0.0, 0.0, 0.0] self.destGauge = [0.0, 0.0, 0.0, 0.0] self.dlgBoard = 0 self.changeNameFlag = FALSE self.nameInputBoard = None self.sendedChangeNamePacket = FALSE self.startIndex = -1 self.isLoad = 0 def __del__(self): ui.Window.__del__(self) net.SetPhaseWindow(net.PHASE_WINDOW_SELECT, 0) def Open(self): if not self.__LoadBoardDialog(uiScriptLocale.LOCALE_UISCRIPT_PATH + "selectcharacterwindow.py"): dbg.TraceError("SelectCharacterWindow.Open - __LoadScript Error") return if not self.__LoadQuestionDialog("uiscript/questiondialog.py"): return playerSettingModule.LoadGameData("INIT") self.InitCharacterBoard() self.btnStart.Enable() self.btnCreate.Enable() self.btnDelete.Enable() self.btnExit.Enable() self.dlgBoard.Show() self.SetWindowName("SelectCharacterWindow") self.Show() if self.slot >= 0: self.SelectSlot(self.slot) if musicInfo.selectMusic != "": snd.SetMusicVolume(systemSetting.GetMusicVolume()) snd.FadeInMusic("BGM/"+musicInfo.selectMusic) app.SetCenterPosition(0.0, 0.0, 0.0) app.SetCamera(1550.0, 15.0, 180.0, 95.0) self.isLoad=1 self.Refresh() if self.stream.isAutoSelect: chrSlot=self.stream.GetCharacterSlot() self.SelectSlot(chrSlot) self.StartGame() self.SetEmpire(net.GetEmpireID()) app.ShowCursor() def Close(self): if musicInfo.selectMusic != "": snd.FadeOutMusic("BGM/"+musicInfo.selectMusic) self.stream.popupWindow.Close() if self.dlgBoard: self.dlgBoard.ClearDictionary() self.my_id = None self.textBoard = None self.empireName = None self.EmpireFlagA = None self.EmpireFlagB = None self.EmpireFlagC = None self.dlgBoard = None self.btnStart = None self.btnCreate = None self.btnDelete = None self.btnExit = None self.backGroundImg1 = None self.backGroundImg2 = None self.backGroundImg3 = None self.dlgQuestion.ClearDictionary() self.dlgQuestion = None self.dlgQuestionText = None self.dlgQuestionAcceptButton = None self.dlgQuestionCancelButton = None self.privateInputBoard = None self.nameInputBoard = None chr.DeleteInstance(self.slot) self.Hide() self.KillFocus() app.HideCursor() event.Destroy() def SetEmpire(self, id): self.empireName.SetText(self.EMPIRE_NAME.get(id, "")) if id == 1: self.empireName.SetFontColor(1.0, 0, 0) self.EmpireFlagA.Show() self.EmpireFlagB.Hide() self.EmpireFlagC.Hide() self.BackGround = self.backGroundImg1 self.backGroundImg1.Show() self.backGroundImg2.Hide() self.backGroundImg3.Hide() self.chrRenderer = self.CharacterRenderer() self.chrRenderer.SetParent(self.backGroundImg1) self.chrRenderer.Show() elif id == 2: self.empireName.SetFontColor(1.0, 1.0, 0.0) self.EmpireFlagA.Hide() self.EmpireFlagB.Show() self.EmpireFlagC.Hide() self.BackGround = self.backGroundImg2 self.backGroundImg1.Hide() self.backGroundImg2.Show() self.backGroundImg3.Hide() self.chrRenderer = self.CharacterRenderer() self.chrRenderer.SetParent(self.backGroundImg2) self.chrRenderer.Show() elif id == 3: self.empireName.SetFontColor(0.0, 0, 1.0) self.EmpireFlagA.Hide() self.EmpireFlagB.Hide() self.EmpireFlagC.Show() self.BackGround = self.backGroundImg3 self.backGroundImg1.Hide() self.backGroundImg2.Hide() self.backGroundImg3.Show() self.chrRenderer = self.CharacterRenderer() self.chrRenderer.SetParent(self.backGroundImg3) self.chrRenderer.Show() def Refresh(self): if not self.isLoad: return for i in xrange(self.SLOT_COUNT): id = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID) race = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_RACE) form = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_FORM) name = net.GetAccountCharacterSlotDataString(i, net.ACCOUNT_CHARACTER_SLOT_NAME) hair = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_HAIR) #acce = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ACCE) #acce_spec = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ACCE_SPEC) if id != 0: #self.MakeCharacter(index, id, name, race, form, hair, acce, acce_spec) #self.MakeCharacter(index, id, name, race, form, hair, acce) self.MakeCharacter(index, id, name, race, form, hair) self.SelectSlot(i) break self.CharacterSlot_0.Hide() self.CharacterFace_0.Hide() self.CharacterSlot_0_Lv.Hide() self.CharacterSlot_0_Name.Hide() self.CharacterSlot_1.Hide() self.CharacterFace_1.Hide() self.CharacterSlot_1_Lv.Hide() self.CharacterSlot_1_Name.Hide() self.CharacterSlot_2.Hide() self.CharacterFace_2.Hide() self.CharacterSlot_2_Lv.Hide() self.CharacterSlot_2_Name.Hide() self.CharacterSlot_3.Hide() self.CharacterFace_3.Hide() self.CharacterSlot_3_Lv.Hide() self.CharacterSlot_3_Name.Hide() #self.CharacterSlot_4.Hide() #self.CharacterFace_4.Hide() #self.CharacterSlot_4_Lv.Hide() #self.CharacterSlot_4_Name.Hide() for i in xrange(self.SLOT_COUNT): id = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID) race = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_RACE) name = net.GetAccountCharacterSlotDataString(i, net.ACCOUNT_CHARACTER_SLOT_NAME) level = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_LEVEL) if id != 0: if i == 0: self.CharacterFace_0.LoadImage(self.FACE_IMAGE_DICT_2[race]) self.CharacterFace_0.Show() self.CharacterSlot_0.Show() self.CharacterSlot_0_Name.SetText(name) self.CharacterSlot_0_Name.Show() self.CharacterSlot_0_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_0_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_0_Lv.Show() elif i == 1: self.CharacterFace_1.LoadImage(self.FACE_IMAGE_DICT_2[race]) self.CharacterFace_1.Show() self.CharacterSlot_1.Show() self.CharacterSlot_1_Name.SetText(name) self.CharacterSlot_1_Name.Show() self.CharacterSlot_1_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_1_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_1_Lv.Show() elif i == 2: self.CharacterFace_2.LoadImage(self.FACE_IMAGE_DICT_2[race]) self.CharacterFace_2.Show() self.CharacterSlot_2.Show() self.CharacterSlot_2_Name.SetText(name) self.CharacterSlot_2_Name.Show() self.CharacterSlot_2_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_2_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_2_Lv.Show() elif i == 3: self.CharacterFace_3.LoadImage(self.FACE_IMAGE_DICT_2[race]) self.CharacterFace_3.Show() self.CharacterSlot_3.Show() self.CharacterSlot_3_Name.SetText(name) self.CharacterSlot_3_Name.Show() self.CharacterSlot_3_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_3_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_3_Lv.Show() #elif i == 4: # self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_2[race]) # self.CharacterFace_4.Show() # self.CharacterSlot_4.Show() # self.CharacterSlot_4_Name.SetText(name) # self.CharacterSlot_4_Name.Show() # self.CharacterSlot_4_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) # self.CharacterSlot_4_Lv.SetFontColor(30, 72, 168) # self.CharacterSlot_4_Lv.Show() def GetCharacterSlotID(self, slotIndex): return net.GetAccountCharacterSlotDataInteger(slotIndex, net.ACCOUNT_CHARACTER_SLOT_ID) def GetSlotIndex(self): return self.slot def __LoadQuestionDialog(self, fileName): self.dlgQuestion = ui.ScriptWindow() try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self.dlgQuestion, fileName) except: import exception exception.Abort("SelectCharacterWindow.LoadQuestionDialog.LoadScript") try: GetObject=self.dlgQuestion.GetChild self.dlgQuestionText=GetObject("message") self.dlgQuestionAcceptButton=GetObject("accept") self.dlgQuestionCancelButton=GetObject("cancel") except: import exception exception.Abort("SelectCharacterWindow.LoadQuestionDialog.BindObject") self.dlgQuestionText.SetText(localeInfo.SELECT_DO_YOU_DELETE_REALLY) self.dlgQuestionAcceptButton.SetEvent(ui.__mem_func__(self.RequestDeleteCharacter)) self.dlgQuestionCancelButton.SetEvent(ui.__mem_func__(self.dlgQuestion.Hide)) return 1 def __LoadBoardDialog(self, fileName): self.dlgBoard = ui.ScriptWindow() try: pyScrLoader = ui.PythonScriptLoader() pyScrLoader.LoadScriptFile(self.dlgBoard, fileName) except: import exception exception.Abort("SelectCharacterWindow.LoadBoardDialog.LoadScript") try: GetObject=self.dlgBoard.GetChild self.backGroundImg1 = GetObject("BackGround") self.backGroundImg2 = GetObject("BackGround2") self.backGroundImg2.Hide() self.backGroundImg3 = GetObject("BackGround3") self.backGroundImg3.Hide() self.btnStart = GetObject("start_button") self.btnCreate = GetObject("create_button") self.btnDelete = GetObject("delete_button") self.btnExit = GetObject("exit_button") self.CharacterSlot_0 = GetObject("CharacterSlot_0") self.CharacterFace_0 = GetObject("CharacterFace_0") self.CharacterSlot_0_Lv = ui.TextLine() self.CharacterSlot_0_Lv.SetParent(self.CharacterSlot_0) self.CharacterSlot_0_Lv.SetPosition(108, 19) self.CharacterSlot_0_Lv.SetHorizontalAlignLeft() self.CharacterSlot_0_Lv.SetText("") self.CharacterSlot_0_Name = ui.TextLine() self.CharacterSlot_0_Name.SetParent(self.CharacterSlot_0) self.CharacterSlot_0_Name.SetPosition(140, 3) self.CharacterSlot_0_Name.SetHorizontalAlignRight() self.CharacterSlot_0_Name.SetText("") self.CharacterSlot_1 = GetObject("CharacterSlot_1") self.CharacterFace_1 = GetObject("CharacterFace_1") self.CharacterSlot_1_Lv = ui.TextLine() self.CharacterSlot_1_Lv.SetParent(self.CharacterSlot_1) self.CharacterSlot_1_Lv.SetPosition(108, 19) self.CharacterSlot_1_Lv.SetHorizontalAlignLeft() self.CharacterSlot_1_Lv.SetText("") self.CharacterSlot_1_Name = ui.TextLine() self.CharacterSlot_1_Name.SetParent(self.CharacterSlot_1) self.CharacterSlot_1_Name.SetPosition(140, 3) self.CharacterSlot_1_Name.SetHorizontalAlignRight() self.CharacterSlot_1_Name.SetText("") self.CharacterSlot_2 = GetObject("CharacterSlot_2") self.CharacterFace_2 = GetObject("CharacterFace_2") self.CharacterSlot_2_Lv = ui.TextLine() self.CharacterSlot_2_Lv.SetParent(self.CharacterSlot_2) self.CharacterSlot_2_Lv.SetPosition(108, 19) self.CharacterSlot_2_Lv.SetHorizontalAlignLeft() self.CharacterSlot_2_Lv.SetText("") self.CharacterSlot_2_Name = ui.TextLine() self.CharacterSlot_2_Name.SetParent(self.CharacterSlot_2) self.CharacterSlot_2_Name.SetPosition(140, 3) self.CharacterSlot_2_Name.SetHorizontalAlignRight() self.CharacterSlot_2_Name.SetText("") self.CharacterSlot_3 = GetObject("CharacterSlot_3") self.CharacterFace_3 = GetObject("CharacterFace_3") self.CharacterSlot_3_Lv = ui.TextLine() self.CharacterSlot_3_Lv.SetParent(self.CharacterSlot_3) self.CharacterSlot_3_Lv.SetPosition(108, 19) self.CharacterSlot_3_Lv.SetHorizontalAlignLeft() self.CharacterSlot_3_Lv.SetText("") self.CharacterSlot_3_Name = ui.TextLine() self.CharacterSlot_3_Name.SetParent(self.CharacterSlot_3) self.CharacterSlot_3_Name.SetPosition(140, 3) self.CharacterSlot_3_Name.SetHorizontalAlignRight() self.CharacterSlot_3_Name.SetText("") #self.CharacterSlot_4 = GetObject("CharacterSlot_4") #self.CharacterFace_4 = GetObject("CharacterFace_4") #self.CharacterSlot_4_Lv = ui.TextLine() #self.CharacterSlot_4_Lv.SetParent(self.CharacterSlot_4) #self.CharacterSlot_4_Lv.SetPosition(108, 19) #self.CharacterSlot_4_Lv.SetHorizontalAlignLeft() #self.CharacterSlot_4_Lv.SetText("") #self.CharacterSlot_4_Name = ui.TextLine() #self.CharacterSlot_4_Name.SetParent(self.CharacterSlot_4) #self.CharacterSlot_4_Name.SetPosition(140, 3) #self.CharacterSlot_4_Name.SetHorizontalAlignRight() #self.CharacterSlot_4_Name.SetText("") self.DiscFace = GetObject("DiscFace") self.raceName = GetObject("raceName_Text") self.my_id = GetObject("my_id") self.textBoard = GetObject("text_board") self.textBoardPrev = GetObject("prev_button") self.textBoardNext = GetObject("next_button") self.CharacterHTH = GetObject("hth_value") self.CharacterINT = GetObject("int_value") self.CharacterSTR = GetObject("str_value") self.CharacterDEX = GetObject("dex_value") self.NameList = [] self.NameList.append(GetObject("name_warrior")) self.NameList.append(GetObject("name_assassin")) self.NameList.append(GetObject("name_sura")) self.NameList.append(GetObject("name_shaman")) self.GaugeList = [] self.GaugeList.append(GetObject("hth_gauge")) self.GaugeList.append(GetObject("int_gauge")) self.GaugeList.append(GetObject("str_gauge")) self.GaugeList.append(GetObject("dex_gauge")) self.empireName = GetObject("EmpireName") self.EmpireFlagA = GetObject("EmpireFlag_A") self.EmpireFlagB = GetObject("EmpireFlag_B") self.EmpireFlagC = GetObject("EmpireFlag_C") except: import exception exception.Abort("SelectCharacterWindow.LoadBoardDialog.BindObject") self.toolTip = uiToolTip.ToolTip() self.toolTip.ClearToolTip() self.descIndex = 0 self.descriptionBox = self.DescriptionBox() self.descriptionBox.Show() self.my_id.SetText(constInfo.ACCOUNT_NAME) self.textBoardPrev.SetEvent(ui.__mem_func__(self.PrevDescriptionPage)) self.textBoardNext.SetEvent(ui.__mem_func__(self.NextDescriptionPage)) GetObject("start_button").ShowToolTip = lambda arg=1: self.OverInButton(arg) GetObject("start_button").HideToolTip = lambda arg=1: self.OverOutButton() GetObject("exit_button").ShowToolTip = lambda arg=2: self.OverInButton(arg) GetObject("exit_button").HideToolTip = lambda arg=2: self.OverOutButton() GetObject("delete_button").ShowToolTip = lambda arg=3: self.OverInButton(arg) GetObject("delete_button").HideToolTip = lambda arg=3: self.OverOutButton() GetObject("create_button").ShowToolTip = lambda arg=4: self.OverInButton(arg) GetObject("create_button").HideToolTip = lambda arg=4: self.OverOutButton() GetObject("CharacterSlot_0").ShowToolTip = lambda arg=5: self.OverInButton(arg) GetObject("CharacterSlot_0").HideToolTip = lambda arg=5: self.OverOutButton() GetObject("CharacterSlot_1").ShowToolTip = lambda arg=6: self.OverInButton(arg) GetObject("CharacterSlot_1").HideToolTip = lambda arg=6: self.OverOutButton() GetObject("CharacterSlot_2").ShowToolTip = lambda arg=7: self.OverInButton(arg) GetObject("CharacterSlot_2").HideToolTip = lambda arg=7: self.OverOutButton() GetObject("CharacterSlot_3").ShowToolTip = lambda arg=8: self.OverInButton(arg) GetObject("CharacterSlot_3").HideToolTip = lambda arg=8: self.OverOutButton() #GetObject("CharacterSlot_4").ShowToolTip = lambda arg=9: self.OverInButton(arg) #GetObject("CharacterSlot_4").HideToolTip = lambda arg=9: self.OverOutButton() GetObject("prev_button").ShowToolTip = lambda arg=9: self.OverInButton(arg) GetObject("prev_button").HideToolTip = lambda arg=9: self.OverOutButton() GetObject("next_button").ShowToolTip = lambda arg=10: self.OverInButton(arg) GetObject("next_button").HideToolTip = lambda arg=10: self.OverOutButton() for name in self.NameList: name.SetAlpha(0.0) self.btnStart.SetEvent(ui.__mem_func__(self.StartGame)) self.btnCreate.SetEvent(ui.__mem_func__(self.CreateCharacter)) self.btnExit.SetEvent(ui.__mem_func__(self.ExitSelect)) self.CharacterSlot_0.SAFE_SetEvent(self.SelectSlot, 0) self.CharacterSlot_1.SAFE_SetEvent(self.SelectSlot, 1) self.CharacterSlot_2.SAFE_SetEvent(self.SelectSlot, 2) self.CharacterSlot_3.SAFE_SetEvent(self.SelectSlot, 3) #self.CharacterSlot_4.SAFE_SetEvent(self.SelectSlot, 4) if NOT_NEED_DELETE_CODE: self.btnDelete.SetEvent(ui.__mem_func__(self.PopupDeleteQuestion)) else: self.btnDelete.SetEvent(ui.__mem_func__(self.InputPrivateCode)) self.chrRenderer = self.CharacterRenderer() self.chrRenderer.SetParent(self.backGroundImg1) self.chrRenderer.Show() return 1 #def MakeCharacter(self, index, id, name, race, form, hair, acce, acce_spec): def MakeCharacter(self, index, id, name, race, form, hair): if 0 == id: return chr.CreateInstance(index) chr.SelectInstance(index) chr.SetVirtualID(index) chr.SetNameString(name) chr.SetRace(race) chr.SetArmor(form) chr.SetHair(hair) #chr.SetAcce(acce) #if acce_spec == 100: # chr.SetAcce(acce, 99) #else: # chr.SetAcce(acce, 0) chr.Refresh() chr.SetMotionMode(chr.MOTION_MODE_GENERAL) chr.SetLoopMotion(chr.MOTION_INTRO_WAIT) chr.SetRotation(0.0) distance = 50.0 rotRadian = 82.0 * (math.pi*2) / 360.0 x = distance*math.sin(rotRadian) + distance*math.cos(rotRadian) y = distance*math.cos(rotRadian) - distance*math.sin(rotRadian) chr.SetPixelPosition(int(x), int(y), 30) self.DiscFace.LoadImage(self.FACE_IMAGE_DICT_3[race]) self.DiscFace.Show() self.raceName.SetText(self.RACE_NAME[race]) self.raceName.Show() def StartGame(self): self.toolTip.Hide() if self.sendedChangeNamePacket: return if self.changeNameFlag: self.OpenChangeNameDialog() return if -1 != self.startIndex: return if musicInfo.selectMusic != "": snd.FadeLimitOutMusic("BGM/"+musicInfo.selectMusic, systemSetting.GetMusicVolume()*0.05) self.btnStart.SetUp() self.btnCreate.SetUp() self.btnDelete.SetUp() self.btnExit.SetUp() self.btnStart.Disable() self.btnCreate.Disable() self.btnDelete.Disable() self.btnExit.Disable() self.dlgQuestion.Hide() self.stream.SetCharacterSlot(self.slot) self.startIndex = self.slot self.startReservingTime = app.GetTime() for i in xrange(self.SLOT_COUNT): if FALSE == chr.HasInstance(i): continue chr.SelectInstance(i) if i == self.slot: self.slot = self.slot chr.PushOnceMotion(chr.MOTION_INTRO_SELECTED, 0.1) continue chr.PushOnceMotion(chr.MOTION_INTRO_NOT_SELECTED, 0.1) def OpenChangeNameDialog(self): import uiCommon nameInputBoard = uiCommon.InputDialogWithDescription() nameInputBoard.SetTitle(localeInfo.SELECT_CHANGE_NAME_TITLE) nameInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputName)) nameInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputName)) nameInputBoard.SetMaxLength(chr.PLAYER_NAME_MAX_LEN) nameInputBoard.SetBoardWidth(200) nameInputBoard.SetDescription(localeInfo.SELECT_INPUT_CHANGING_NAME) nameInputBoard.Open() nameInputBoard.slot = self.slot self.nameInputBoard = nameInputBoard def OnChangeName(self, id, name): self.SelectSlot(id) self.sendedChangeNamePacket = FALSE self.PopupMessage(localeInfo.SELECT_CHANGED_NAME) def AcceptInputName(self): changeName = self.nameInputBoard.GetText() if not changeName: return self.sendedChangeNamePacket = TRUE net.SendChangeNamePacket(self.nameInputBoard.slot, changeName) return self.CancelInputName() def CancelInputName(self): self.nameInputBoard.Close() self.nameInputBoard = None return TRUE def OnCreateFailure(self, type): self.sendedChangeNamePacket = FALSE if 0 == type: self.PopupMessage(localeInfo.SELECT_CHANGE_FAILURE_STRANGE_NAME) elif 1 == type: self.PopupMessage(localeInfo.SELECT_CHANGE_FAILURE_ALREADY_EXIST_NAME) elif 100 == type: self.PopupMessage(localeInfo.SELECT_CHANGE_FAILURE_STRANGE_INDEX) def CreateCharacter(self): self.toolTip.Hide() for i in xrange(self.SLOT_COUNT): id = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID) if id == 0: self.stream.SetCharacterSlot(i) EMPIRE_MODE = 1 if EMPIRE_MODE: if self.__AreAllSlotEmpty(): self.stream.SetReselectEmpirePhase() else: self.stream.SetCreateCharacterPhase() else: self.stream.SetCreateCharacterPhase() break def __AreAllSlotEmpty(self): for iSlot in xrange(self.SLOT_COUNT): if 0 != net.GetAccountCharacterSlotDataInteger(iSlot, net.ACCOUNT_CHARACTER_SLOT_ID): return 0 return 1 def PopupDeleteQuestion(self): id = self.GetCharacterSlotID(self.slot) if 0 == id: return self.dlgQuestion.Show() self.dlgQuestion.SetTop() def RequestDeleteCharacter(self): self.dlgQuestion.Hide() id = self.GetCharacterSlotID(self.slot) if 0 == id: self.PopupMessage(localeInfo.SELECT_EMPTY_SLOT) return net.SendDestroyCharacterPacket(self.slot, "1234567") self.PopupMessage(localeInfo.SELECT_DELEING) def InputPrivateCode(self): import uiCommon privateInputBoard = uiCommon.InputDialogWithDescription() privateInputBoard.SetTitle(localeInfo.INPUT_PRIVATE_CODE_DIALOG_TITLE) privateInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputPrivateCode)) privateInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrivateCode)) if ENABLE_ENGNUM_DELETE_CODE: pass else: privateInputBoard.SetNumberMode() privateInputBoard.SetSecretMode() privateInputBoard.SetMaxLength(7) privateInputBoard.SetBoardWidth(250) privateInputBoard.SetDescription(localeInfo.INPUT_PRIVATE_CODE_DIALOG_DESCRIPTION) privateInputBoard.Open() self.privateInputBoard = privateInputBoard def AcceptInputPrivateCode(self): privateCode = self.privateInputBoard.GetText() if not privateCode: return id = self.GetCharacterSlotID(self.slot) if 0 == id: self.PopupMessage(localeInfo.SELECT_EMPTY_SLOT) return net.SendDestroyCharacterPacket(self.slot, privateCode) self.PopupMessage(localeInfo.SELECT_DELEING) self.CancelInputPrivateCode() return TRUE def CancelInputPrivateCode(self): self.privateInputBoard = None return TRUE def OnDeleteSuccess(self, slot): self.PopupMessage(localeInfo.SELECT_DELETED) self.DeleteCharacter(slot) def OnDeleteFailure(self): self.PopupMessage(localeInfo.SELECT_CAN_NOT_DELETE) def DeleteCharacter(self, index): chr.DeleteInstance(index) self.SelectSlot(self.slot) self.Refresh() def ExitSelect(self): self.dlgQuestion.Hide() if LEAVE_BUTTON_FOR_POTAL: if app.loggined: self.stream.SetPhaseWindow(0) else: self.stream.setloginphase() else: self.stream.SetLoginPhase() self.Hide() def SelectSlot(self, index): if index < 0: return if index >= self.SLOT_COUNT: return snd.PlaySound("sound/ui/click.wav") chr.DeleteInstance(0) chr.DeleteInstance(1) chr.DeleteInstance(2) chr.DeleteInstance(3) #chr.DeleteInstance(4) self.DiscFace.Hide() self.raceName.Hide() id = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ID) race = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_RACE) form = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_FORM) name = net.GetAccountCharacterSlotDataString(index, net.ACCOUNT_CHARACTER_SLOT_NAME) hair = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_HAIR) #acce = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ACCE) #acce_spec = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ACCE_SPEC) if id != 0: #self.MakeCharacter(index, id, name, race, form, hair, acce, acce_spec) self.MakeCharacter(index, id, name, race, form, hair) if index == 0: self.CharacterSlot_0.Down() self.CharacterSlot_0_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_0.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_1.SetUp() self.CharacterSlot_2.SetUp() self.CharacterSlot_3.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) elif index == 1: self.CharacterSlot_1.Down() self.CharacterSlot_1_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_1.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_0.SetUp() self.CharacterSlot_2.SetUp() self.CharacterSlot_3.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) elif index == 2: self.CharacterSlot_2.Down() self.CharacterSlot_2_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_2.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_0.SetUp() self.CharacterSlot_1.SetUp() self.CharacterSlot_3.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) elif index == 3: self.CharacterSlot_3.Down() self.CharacterSlot_3_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_3.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_0.SetUp() self.CharacterSlot_1.SetUp() self.CharacterSlot_2.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) #elif index == 4: # self.CharacterSlot_4.Down() # self.CharacterSlot_4_Name.SetFontColor(1.0, 0.6000, 0.3500) # self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_1[race]) # self.CharacterSlot_0.SetUp() # self.CharacterSlot_1.SetUp() # self.CharacterSlot_2.SetUp() # self.CharacterSlot_3.SetUp() # self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) # self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) # self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) # self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.slot = index chr.SelectInstance(self.slot) for i in xrange(self.CHARACTER_TYPE_COUNT): self.destNameAlpha[i] = 0.0 self.destGauge = [0.0, 0.0, 0.0, 0.0] id=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID) if 0 != id: self.btnStart.Show() self.btnDelete.Show() self.btnCreate.Hide() for i in xrange(self.SLOT_COUNT): id_check = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID) if id_check == 0: self.btnCreate.Show() playTime=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME) level=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_LEVEL) race=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_RACE) valueHTH=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_HTH) valueINT=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_INT) valueSTR=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_STR) valueDEX=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_DEX) name=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_NAME) guildID=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_GUILD_ID) guildName=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_GUILD_NAME) self.changeNameFlag=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_CHANGE_NAME_FLAG) job = chr.RaceToJob(race) if job >= 0 and job < self.CHARACTER_TYPE_COUNT: self.destNameAlpha[job] = 1.0 self.CharacterHTH.SetText(str(valueHTH)) self.CharacterINT.SetText(str(valueINT)) self.CharacterSTR.SetText(str(valueSTR)) self.CharacterDEX.SetText(str(valueDEX)) statesSummary = float(valueHTH + valueINT + valueSTR + valueDEX) if statesSummary > 0.0: self.destGauge = [ ((float(valueHTH) * 10) / 90) / 10, ((float(valueINT) * 10) / 90) / 10, ((float(valueSTR) * 10) / 90) / 10, ((float(valueDEX) * 10) / 90) / 10 ] event.ClearEventSet(self.descIndex) self.descIndex = event.RegisterEventSet(self.DESCRIPTION_FILE_NAME[race]) if self.DESCRIPTION_FILE_NAME_LIMIT[race] == 1: self.textBoardPrev.Show() self.textBoardNext.Show() else: self.textBoardPrev.Hide() self.textBoardNext.Hide() else: self.textBoardPrev.Hide() self.textBoardNext.Hide() self.InitCharacterBoard() def PrevDescriptionPage(self): if event.IsWait(self.descIndex) == TRUE: if event.GetVisibleStartLine(self.descIndex)-14 >= 0: event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)-14) event.Skip(self.descIndex) else: event.Skip(self.descIndex) def NextDescriptionPage(self): if event.IsWait(self.descIndex) == TRUE: event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)+14) event.Skip(self.descIndex) else: event.Skip(self.descIndex) def InitCharacterBoard(self): self.btnStart.Hide() self.btnDelete.Hide() self.btnCreate.Show() self.CharacterHTH.SetText("") self.CharacterINT.SetText("") self.CharacterSTR.SetText("") self.CharacterDEX.SetText("") def OnUpdate(self): chr.Update() (xposEventSet, yposEventSet) = self.textBoard.GetGlobalPosition() event.UpdateEventSet(self.descIndex, xposEventSet+7, -(yposEventSet+7)) self.descriptionBox.SetIndex(self.descIndex) for i in xrange(4): self.curGauge[i] += (self.destGauge[i] - self.curGauge[i]) / 10.0 if abs(self.curGauge[i] - self.destGauge[i]) < 0.005: self.curGauge[i] = self.destGauge[i] self.GaugeList[i].SetPercentage(self.curGauge[i], 1.0) for i in xrange(self.CHARACTER_TYPE_COUNT): self.curNameAlpha[i] += (self.destNameAlpha[i] - self.curNameAlpha[i]) / 10.0 self.NameList[i].SetAlpha(self.curNameAlpha[i]) for i in xrange(self.SLOT_COUNT): if FALSE == chr.HasInstance(i): continue if -1 != self.startIndex: if app.GetTime() - self.startReservingTime > 3.0: if FALSE == self.openLoadingFlag: chrSlot=self.stream.GetCharacterSlot() net.DirectEnter(chrSlot) self.openLoadingFlag = TRUE import chat chat.Clear() def PopupMessage(self, msg, func=0): if not func: func=self.EmptyFunc self.stream.popupWindow.Close() self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK) def OverInButton(self, stat): if stat == 1: self.toolTip.ClearToolTip() self.toolTip.AlignHorizonalCenter() self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_SELECT, grp.GenerateColor(1.0, 1.0, 0.0, 1.0)) self.toolTip.Show() elif stat == 2: self.toolTip.ClearToolTip() self.toolTip.AlignHorizonalCenter() self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_EXIT, grp.GenerateColor(1.0, 1.0, 0.0, 1.0)) self.toolTip.Show() elif stat == 3: self.toolTip.ClearToolTip() self.toolTip.AlignHorizonalCenter() self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_DELETE, grp.GenerateColor(1.0, 1.0, 0.0, 1.0)) self.toolTip.Show() elif stat == 4: self.toolTip.ClearToolTip() self.toolTip.AlignHorizonalCenter() self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_CREATE, grp.GenerateColor(1.0, 1.0, 0.0, 1.0)) self.toolTip.Show() elif stat >= 5 and stat <= 8: playTime = net.GetAccountCharacterSlotDataInteger(stat-5, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME) guildName = net.GetAccountCharacterSlotDataString(stat-5, net.ACCOUNT_CHARACTER_SLOT_GUILD_NAME) self.toolTip.ClearToolTip() self.toolTip.AlignHorizonalCenter() if guildName: self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_YES_GUILD % (guildName), grp.GenerateColor(1.0, 1.0, 0.0, 1.0), True) else: self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_NO_GUILD, grp.GenerateColor(1.0, 1.0, 0.0, 1.0), True) self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_PLAYTIME % (playTime), grp.GenerateColor(1.0, 1.0, 0.0, 1.0)) self.toolTip.Show() elif stat == 9: self.toolTip.ClearToolTip() self.toolTip.AlignHorizonalCenter() self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CREATE_PREV, grp.GenerateColor(1.0, 1.0, 0.0, 1.0)) self.toolTip.Show() elif stat == 10: self.toolTip.ClearToolTip() self.toolTip.AlignHorizonalCenter() self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CREATE_NEXT, grp.GenerateColor(1.0, 1.0, 0.0, 1.0)) self.toolTip.Show() def OverOutButton(self): self.toolTip.Hide() def EmptyFunc(self): pass def OnPressExitKey(self): self.ExitSelect() return TRUE def OnPressEscapeKey(self): self.ExitSelect() return TRUE def OnKeyDown(self, key): ## On attribué à la touche entré, la validation du personnage if 1 == key: self.ExitSelect() if 2 == key: self.SelectSlot(0) if 3 == key: self.SelectSlot(1) if 4 == key: self.SelectSlot(2) if 28 == key: id = net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID) if 0 == id: self.CreateCharacter() else: self.StartGame() if 203 == key: self.slot = (self.GetSlotIndex() - 1 + self.SLOT_COUNT) % self.SLOT_COUNT self.SelectSlot(self.slot) if 205 == key: self.slot = (self.GetSlotIndex() + 1) % self.SLOT_COUNT self.SelectSlot(self.slot) return TRUE C'est le fichier par défaut. -
Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Les positions restent la même pour les 5 personnages vus que le personnage est centré. -
Version des Files / Type d’Émulateur : VDI FILES 2016 FE #Saw Domaine ( Base de Données, Client, Core, Sources... ) : #Saw Niveau : Intermédiaire I. Description du dysfonctionnement : Bonjour. J'ai suivi le tutoriel de @Vanithys, tout fonctionne correctement partie Source Server & Source Client. Là où ça bloque c'est au niveau du Client.. car l'interface selection du personnage est différente. II. introselect .py SLOT_COUNT: SLOT_COUNT = 4 Remplacer par : SLOT_COUNT = 5 chr.DeleteInstance(): chr.DeleteInstance(0) chr.DeleteInstance(1) chr.DeleteInstance(2) chr.DeleteInstance(3) #chr.DeleteInstance(4) Remplacer par : chr.DeleteInstance(0) chr.DeleteInstance(1) chr.DeleteInstance(2) chr.DeleteInstance(3) chr.DeleteInstance(4) def OnKeyDown(self, key): if 1 == key: self.ExitSelect() if 2 == key: self.SelectSlot(0) if 3 == key: self.SelectSlot(1) if 4 == key: self.SelectSlot(2) Remplacer par: if 1 == key: self.ExitSelect() if 2 == key: self.SelectSlot(0) if 3 == key: self.SelectSlot(1) if 4 == key: self.SelectSlot(2) if 5 == key: self.SelectSlot(3) Ensuite le tutoriel demande de modifier c'est ligne de code, vu ce n'est pas la même interface les codes sont différentes. SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0] indexArray = (3, 2, 1, 0) Alors j'ai supprimé les # dès lignes suivantes #self.CharacterSlot_4.Hide() #self.CharacterFace_4.Hide() #self.CharacterSlot_4_Lv.Hide() #self.CharacterSlot_4_Name.Hide() #elif i == 4: # self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_2[race]) # self.CharacterFace_4.Show() # self.CharacterSlot_4.Show() # self.CharacterSlot_4_Name.SetText(name) # self.CharacterSlot_4_Name.Show() # self.CharacterSlot_4_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) # self.CharacterSlot_4_Lv.SetFontColor(30, 72, 168) # self.CharacterSlot_4_Lv.Show() #self.CharacterSlot_4 = GetObject("CharacterSlot_4") #self.CharacterFace_4 = GetObject("CharacterFace_4") #self.CharacterSlot_4_Lv = ui.TextLine() #self.CharacterSlot_4_Lv.SetParent(self.CharacterSlot_4) #self.CharacterSlot_4_Lv.SetPosition(108, 19) #self.CharacterSlot_4_Lv.SetHorizontalAlignLeft() #self.CharacterSlot_4_Lv.SetText("") #self.CharacterSlot_4_Name = ui.TextLine() #self.CharacterSlot_4_Name.SetParent(self.CharacterSlot_4) #self.CharacterSlot_4_Name.SetPosition(140, 3) #self.CharacterSlot_4_Name.SetHorizontalAlignRight() #self.CharacterSlot_4_Name.SetText("") #GetObject("CharacterSlot_4").ShowToolTip = lambda arg=9: self.OverInButton(arg) #GetObject("CharacterSlot_4").HideToolTip = lambda arg=9: self.OverOutButton() #self.CharacterSlot_4.SAFE_SetEvent(self.SelectSlot, 4) if index == 0: self.CharacterSlot_0.Down() self.CharacterSlot_0_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_0.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_1.SetUp() self.CharacterSlot_2.SetUp() self.CharacterSlot_3.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) elif index == 1: self.CharacterSlot_1.Down() self.CharacterSlot_1_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_1.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_0.SetUp() self.CharacterSlot_2.SetUp() self.CharacterSlot_3.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) elif index == 2: self.CharacterSlot_2.Down() self.CharacterSlot_2_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_2.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_0.SetUp() self.CharacterSlot_1.SetUp() self.CharacterSlot_3.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) elif index == 3: self.CharacterSlot_3.Down() self.CharacterSlot_3_Name.SetFontColor(1.0, 0.6000, 0.3500) self.CharacterFace_3.LoadImage(self.FACE_IMAGE_DICT_1[race]) self.CharacterSlot_0.SetUp() self.CharacterSlot_1.SetUp() self.CharacterSlot_2.SetUp() #self.CharacterSlot_4.SetUp() self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) #self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549) #elif index == 4: # self.CharacterSlot_4.Down() # self.CharacterSlot_4_Name.SetFontColor(1.0, 0.6000, 0.3500) # self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_1[race]) # self.CharacterSlot_0.SetUp() # self.CharacterSlot_1.SetUp() # self.CharacterSlot_2.SetUp() # self.CharacterSlot_3.SetUp() # self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549) # self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549) # self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549) # self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549) III. SysErr ( Client / Server ) / SysLog ( Server ) Merci pour votre aide. Cordialement, J'affirme avoir lu et accepté le règlement de Funky Émulation
-
C++ - Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) sujet de Vanithys dans Programmation & Développement / Codes
@DixN, Je suis actuellement au taff, je ferai un poste dans A/S/Q dans quelque heures.. On vas pas polluer ce tutoriel pour rien lol ? -
C++ - Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) sujet de Vanithys dans Programmation & Développement / Codes
Car le tutoriel n’est pas adapté pour les clients FE 2016, je sais quand même suivre un tutoriel ^^ J’expliquerai en détails, en rentrant chez moi. -
C++ - Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) sujet de Vanithys dans Programmation & Développement / Codes
Bonjour @DixN La modification source Server et Client fonctionne correctement c’est pas ça le problème.. C’est au niveau du client avec la nouvelle interface personnage Cordialement, -
? RAZER BlackWidow ça c’est du clavier ! J’utiliser la version Chroma qui m’a rendu l’ame le mois dernier.. c’est l’un de mes clavier préféré !
-
C++ - Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) sujet de Vanithys dans Programmation & Développement / Codes
Oui voilà @ASIKOO, l’interface n’est pas la même du coup la partie Client n’est pas adapté.. j’ai remarqué que le client FE possède déjà #chr.DeleteInstance(4) quand je supprime tout les # le client crach.. malheureusement je ne suis pas sur mon PC pour le syserr. @DixN, inscription il a quelque heure avec ton premier message.. j’imagine pas là suite.. -
C++ - Slot de Personnages Supplémentaires
Volkihars a répondu à un(e) sujet de Vanithys dans Programmation & Développement / Codes
Bonsoir, merci pour ce tutoriel. Pour un client 2016, que faut t'il modifier dans le "introselect.py" ? Cordialement. -
Le fichier mob_drop_item est vide.
-
[BUG] Voir les Boss sur la MiniMap
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Du coup, j'ai re-tester en mode "Debug" Etc.. est j'ai pas les mêmes log d'erreur.. je sais pas d’où ça viens.. -
[BUG] Voir les Boss sur la MiniMap
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Ok, bah super je vais tester ça maintenant alors... Je reviens quand j'aurai terminé pour donner des news. ÉDIT @Takuma : Du coup j'ai tout refait, écris les lignes de code à la main.. compiler en "Debug" pour voir les erreurs Fichier log.txt Fichier syserr.txt -
[BUG] Voir les Boss sur la MiniMap
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
@Takuma, Comment passe t'on en mode Debug ? -
Version des Files / Type d’Émulateur : VDI FILES 2016 FE #Saw Domaine ( Base de Données, Client, Core, Sources... ) : #Saw Niveau : Intermédiaire 1. Description du dysfonctionnement : Bonsoir @all, J'ai suivi le tutoriel de @Tamatoa à la lettre ! quand j'utilise la commande /inv le client se ferme sans m'afficher d'erreur "syserr" Liens du tutoriel en question : C++ - Voir les Boss sur la MiniMap J'ai aucune erreur côté source client. J'affirme avoir lu et accepté le règlement de Funky Émulation
-
Monster Informations : Lv %mob
Volkihars a répondu à un(e) question de Volkihars dans Questions & Réponses
Merci @ASIKOO, Du coup j'ai strictement rien toucher aux sources de @#Saw au niveau des levels à côtés des mobs/stones. Quand je tape un mob/stone le level s'affiche à côté, j’aimerai afficher les levels en permanent Merci d'avance pour votre aide.
