-
Posts
62 -
Joined
-
Last visited
-
Feedback
0%
Content Type
Forums
Store
Third Party - Providers Directory
Feature Plan
Release Notes
Docs
Events
Posts posted by EAkar
-
-
On 30.05.2021 at 14:51, Bizzy said:
https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif sistem için teşekkürler ama introselect'e seviyeyi nasıl ekleyebileceğimi ve bunu herkese nasıl yapabileceğimi söyleyebilir misin https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif
import app import net import chr import event import systemSetting import ui import grp import snd import math 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 networkModule import uiAffectShower import uiScriptLocale import uiMapNameShower import interfaceModule import playerSettingModule 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 = 5 CHARACTER_TYPE_COUNT = 5 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, playerSettingModule.RACE_WOLFMAN_M : localeInfo.JOB_WOLFMAN, } 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, playerSettingModule.RACE_WOLFMAN_M : uiScriptLocale.JOBDESC_WOLFMAN_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, playerSettingModule.RACE_WOLFMAN_M : 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", playerSettingModule.RACE_WOLFMAN_M : "d:/ymir work/ui/intro/public_intro/face/face_wolfman_m_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", playerSettingModule.RACE_WOLFMAN_M : "d:/ymir work/ui/intro/public_intro/face/face_wolfman_m_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", playerSettingModule.RACE_WOLFMAN_M : "icon/face/wolf_m.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) if screenHeight<601: grp.SetViewport(250.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight) elif screenHeight>601 and screenHeight<801: grp.SetViewport(255.15/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight) elif screenHeight>801 and screenHeight<1200: grp.SetViewport(270.15/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight) else: grp.SetViewport(270.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight) app.SetCenterPosition(0.0, 0.0, 0.0) app.SetCamera(1795.0, 15.0, 180.0, 120.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 if app.ENABLE_CONQUEROR_LEVEL: self.toolTipConquerorInfoButton = None def __del__(self): ui.Window.__del__(self) net.SetPhaseWindow(net.PHASE_WINDOW_SELECT, 0) def Open(self): if not self.__LoadBoardDialog("UIScript/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() if self.__AreAllSlotEmpty(): self.stream.SetReselectEmpirePhase() self.my_id.SetText(net.GetLoginID()) self.SetEmpire(net.GetEmpireID()) app.ShowCursor() if app.ENABLE_CONQUEROR_LEVEL: self.btnSungmaPrev.Enable() self.btnSungmaNext.Enable() 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 if app.ENABLE_CONQUEROR_LEVEL: self.toolTipConquerorInfoButton = None self.btnSungmaPrev = None self.btnSungmaNext = 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) sash = 0 if app.ENABLE_SASH_SYSTEM: sash = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_SASH) if app.ENABLE_CONQUEROR_LEVEL: conquerorlevel = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_CONQUEROR_LEVEL) if id != 0: self.MakeCharacter(i, id, name, race, form, hair, sash) 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 app.ENABLE_CONQUEROR_LEVEL: conquerorlevel=net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_CONQUEROR_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() if app.ENABLE_CONQUEROR_LEVEL: if conquerorlevel: self.CharacterSlot_0_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (conquerorlevel)) self.CharacterSlot_0_Lv.SetPackedFontColor(0xFFBFD9FF) self.CharacterSlot_0_Lv.Show() else: self.CharacterSlot_0_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_0_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_0_Lv.Show() else: 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() if app.ENABLE_CONQUEROR_LEVEL: if conquerorlevel: self.CharacterSlot_1_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (conquerorlevel)) self.CharacterSlot_1_Lv.SetPackedFontColor(0xFFBFD9FF) self.CharacterSlot_1_Lv.Show() else: self.CharacterSlot_1_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_1_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_1_Lv.Show() else: 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() if app.ENABLE_CONQUEROR_LEVEL: if conquerorlevel: self.CharacterSlot_2_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (conquerorlevel)) self.CharacterSlot_2_Lv.SetPackedFontColor(0xFFBFD9FF) self.CharacterSlot_2_Lv.Show() else: self.CharacterSlot_2_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_2_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_2_Lv.Show() else: 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() if app.ENABLE_CONQUEROR_LEVEL: if conquerorlevel: self.CharacterSlot_3_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (conquerorlevel)) self.CharacterSlot_3_Lv.SetPackedFontColor(0xFFBFD9FF) self.CharacterSlot_3_Lv.Show() else: self.CharacterSlot_3_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_3_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_3_Lv.Show() else: 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() if app.ENABLE_CONQUEROR_LEVEL: if conquerorlevel: self.CharacterSlot_4_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (conquerorlevel)) self.CharacterSlot_4_Lv.SetPackedFontColor(0xFFBFD9FF) self.CharacterSlot_4_Lv.Show() else: self.CharacterSlot_4_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level)) self.CharacterSlot_4_Lv.SetFontColor(30, 72, 168) self.CharacterSlot_4_Lv.Show() else: 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 __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.NameList.append(GetObject("name_wolf")) 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")) if app.ENABLE_CONQUEROR_LEVEL: self.toolTipConquerorInfoButton = uiToolTip.ToolTip() self.btnSungmaPrev = GetObject("origin_stat_button") self.btnSungmaNext = GetObject("sungma_stat_button") self.HTH_IMG = GetObject("hth_img") self.INT_IMG = GetObject("int_img") self.STR_IMG = GetObject("str_img") self.DEX_IMG = GetObject("dex_img") self.HTH_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowHTHToolTip) self.HTH_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideHTHToolTip) self.INT_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowINTToolTip) self.INT_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideINTToolTip) self.STR_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowSTRToolTip) self.STR_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideSTRToolTip) self.DEX_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowDEXToolTip) self.DEX_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideDEXToolTip) self.SUNGMA_ST_IMG = GetObject("sungma_str_img") self.SUNGMA_HP_IMG = GetObject("sungma_hp_img") self.SUNGMA_MOVE_IMG = GetObject("sungma_move_img") self.SUNGMA_INMUNE_IMG = GetObject("sungma_immune_img") self.SUNGMA_ST_IMG.Hide() self.SUNGMA_HP_IMG.Hide() self.SUNGMA_MOVE_IMG.Hide() self.SUNGMA_INMUNE_IMG.Hide() self.SUNGMA_ST_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowSTToolTip) self.SUNGMA_ST_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideSTToolTip) self.SUNGMA_HP_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowHPToolTip) self.SUNGMA_HP_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideHPToolTip) self.SUNGMA_MOVE_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowMOVEToolTip) self.SUNGMA_MOVE_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideMOVEToolTip) self.SUNGMA_INMUNE_IMG.SAFE_SetStringEvent("MOUSE_OVER_IN", self.__ShowINMUNEToolTip) self.SUNGMA_INMUNE_IMG.SAFE_SetStringEvent("MOUSE_OVER_OUT", self.__HideINMUNEToolTip) 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.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=10: self.OverInButton(arg) GetObject("prev_button").HideToolTip = lambda arg=10: self.OverOutButton() GetObject("next_button").ShowToolTip = lambda arg=11: self.OverInButton(arg) GetObject("next_button").HideToolTip = lambda arg=11: 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 app.ENABLE_CONQUEROR_LEVEL: self.btnSungmaPrev.SetEvent(ui.__mem_func__(self.SungmaPrev)) self.btnSungmaNext.SetEvent(ui.__mem_func__(self.SungmaNext)) 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 if app.ENABLE_CONQUEROR_LEVEL: def SungmaPrev(self): self.SUNGMA_ST_IMG.Hide() self.SUNGMA_HP_IMG.Hide() self.SUNGMA_MOVE_IMG.Hide() self.SUNGMA_INMUNE_IMG.Hide() 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) self.CharacterHTH.SetText(str(valueHTH)) self.CharacterINT.SetText(str(valueINT)) self.CharacterSTR.SetText(str(valueSTR)) self.CharacterDEX.SetText(str(valueDEX)) self.destGauge = [0.0, 0.0, 0.0, 0.0] statesSummary = 90 if statesSummary > 0.0: self.destGauge = [ float(valueHTH) / statesSummary, float(valueINT) / statesSummary, float(valueSTR) / statesSummary, float(valueDEX) / statesSummary ] 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) def SungmaNext(self): self.SUNGMA_ST_IMG.Show() self.SUNGMA_HP_IMG.Show() self.SUNGMA_MOVE_IMG.Show() self.SUNGMA_INMUNE_IMG.Show() valueConquerorST=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_SUNGMA_ST) valueConquerorHP=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_SUNGMA_HP) valueConquerorMOVE=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_SUNGMA_MOVE) valueConquerorINMUNE=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_SUNGMA_INMUNE) self.CharacterHTH.SetText(str(valueConquerorST)) self.CharacterINT.SetText(str(valueConquerorHP)) self.CharacterSTR.SetText(str(valueConquerorMOVE)) self.CharacterDEX.SetText(str(valueConquerorINMUNE)) self.destGauge = [0.0, 0.0, 0.0, 0.0] statesSummary = 90 if statesSummary > 0.0: self.destGauge = [ float(valueConquerorST) / statesSummary, float(valueConquerorHP) / statesSummary, float(valueConquerorMOVE) / statesSummary, float(valueConquerorINMUNE) / statesSummary ] 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) def __ShowHTHToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_IMG_CON) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideHTHToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() def __ShowINTToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_IMG_INT) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideINTToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() def __ShowSTRToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_IMG_STR) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideSTRToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() def __ShowDEXToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_IMG_DEX) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideDEXToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() #Sungma def __ShowSTToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_SUNGMA_STR) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideSTToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() def __ShowHPToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_SUNGMA_HP) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideHPToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() def __ShowMOVEToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_SUNGMA_MOVE) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideMOVEToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() def __ShowINMUNEToolTip(self): self.toolTipConquerorInfoButton.ClearToolTip() self.toolTipConquerorInfoButton.AutoAppendTextLine(localeInfo.STAT_TOOLTIP_SUNGMA_IMMUNE) self.toolTipConquerorInfoButton.AlignHorizonalCenter() self.toolTipConquerorInfoButton.ShowToolTip() def __HideINMUNEToolTip(self): self.toolTipConquerorInfoButton.HideToolTip() def MakeCharacter(self, index, id, name, race, form, hair, sash): 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) if app.ENABLE_SASH_SYSTEM: chr.SetSash(sash) 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) if app.ENABLE_CONQUEROR_LEVEL: self.btnSungmaNext.SetUp() self.btnSungmaPrev.SetUp() self.btnSungmaNext.Disable() self.btnSungmaPrev.Disable() 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 = 0 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) sash = 0 if app.ENABLE_SASH_SYSTEM: sash = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_SASH) if id != 0: self.MakeCharacter(index, id, name, race, form, hair, sash) 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) if app.ENABLE_CONQUEROR_LEVEL: conquerorlevel=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_CONQUEROR_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 = 90 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("") ## Event def GetSlotIndex(self): return self.slot 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 > 0.1: if FALSE == self.openLoadingFlag: chrSlot=self.stream.GetCharacterSlot() #print "chrSlot = %s" % chrSlot if musicInfo.selectMusic != "": snd.FadeLimitOutMusic("BGM/"+musicInfo.selectMusic, systemSetting.GetMusicVolume()*0.05) net.DirectEnter(chrSlot) playTime = net.GetAccountCharacterSlotDataInteger(chrSlot, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME) import player player.SetPlayTime(playTime) 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 <= 9: 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) play_time = uiScriptLocale.SELECT_PLAYTIME + " :" day = playTime / (60 * 24) if day: play_time = play_time + " " + str(day) + localeInfo.DAY hour = (playTime - (day * 60 * 24))/60 if hour: play_time = play_time + " " + str(hour) + localeInfo.HOUR min = playTime - (hour * 60) - (day * 60 * 24) play_time = play_time + " " + str(min) + localeInfo.MINUTE self.toolTip.AutoAppendNewTextLine(play_time, 0xffffff00, False) ##YELLOW## self.toolTip.toolTipWidth += 55 self.toolTip.Show() elif stat == 10: 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 == 11: 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 #Event 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) 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
-
Does the weather change when the player teleports?
-
11 hours ago, Hanma said:
Common/Length.h open
Search:ATTRIBUTE_SET_MAX_NUM
Add AboveATTRIBUTE_SET_PENDANT,
Look This:
ATTRIBUTE_SET_PENDANT,
ATTRIBUTE_SET_MAX_NUM
or My Files:
enum EAttributeSet { ATTRIBUTE_SET_WEAPON, ATTRIBUTE_SET_BODY, ATTRIBUTE_SET_WRIST, ATTRIBUTE_SET_FOOTS, ATTRIBUTE_SET_NECK, ATTRIBUTE_SET_HEAD, ATTRIBUTE_SET_SHIELD, ATTRIBUTE_SET_EAR, #ifdef ENABLE_ITEM_ATTR_COSTUME ATTRIBUTE_SET_COSTUME_BODY, ATTRIBUTE_SET_COSTUME_HAIR, #if defined(ENABLE_ITEM_ATTR_COSTUME) && defined(ENABLE_WEAPON_COSTUME_SYSTEM) ATTRIBUTE_SET_COSTUME_WEAPON, #endif #endif #ifdef ENABLE_PENDANT_SYSTEM ATTRIBUTE_SET_PENDANT, ATTRIBUTE_SET_PENDANT_SPECIAL, #endif ATTRIBUTE_SET_MAX_NUM };
Ok
Also
Basic Code ClientManagerBoot.cpp
ATTRIBUTE_SET_PENDANT
Nice Code
EAttributeSet::ATTRIBUTE_SET_PENDANT -
I'm looking for APPLY_RANDOM which is in the official game but I can't find it
-
1
-
-
dont work bro
-
I'm having the same problem. And I don't think anyone can solve it
-
Skill book names are not displayed. Anyone experiencing this problem?
-
1 hour ago, Mali said:
The books are given randomly
Tooltip does not write anything.
-
@ Mali The name of the Skill Books does not appear.
-
TRANSMUTATION_REVERSAL = 72325,
dont work.
does not undo the changelook.-
3
-
-
#0 CHARACTER::FindAffect (bApply=<optimized out>, dwType=<optimized out>, this=<optimized out>) at /usr/local/lib/gcc8/include/c++/bits/stl_list.h:308 pkAffect = <optimized out> pkAffect = <optimized out> it = {_M_node = 0x0} it = <optimized out> pkAffect = <optimized out> #1 CHARACTER::AddAffect (this=0x4fc09a80, dwType=727, bApplyOn=0 '\000', lApplyValue=0, dwFlag=49, lDuration=3600, lSPCost=0, bOverride=true, IsCube=false) at char_affect.cpp:623 __FUNCTION__ = "AddAffect" pkAff = 0x0 wMovSpd = <optimized out> wAttSpd = <optimized out> #2 0x0825f976 in MeleyLair::r_meleyspawn_event (event=..., processing_time=750) at MeleyLair.h:103 dwTime = <optimized out> stones_count = <optimized out> pEventInfo = 0x4fcb9760 pMap = 0x4fb90080 dwTimeReload = 30 dwMobVnum = <optimized out> --Type <RET> for more, q to quit, c to continue without paging--
AddAffect Function:
bool CHARACTER::AddAffect(DWORD dwType, BYTE bApplyOn, long lApplyValue, DWORD dwFlag, long lDuration, long lSPCost, bool bOverride, bool IsCube)
char_affect.cpp:623 (Inside the AddAffect function)
if (IsCube) pkAff = FindAffect(dwType, bApplyOn); else pkAff = FindAffect(dwType);
MeleyLair.h:103
LPCHARACTER& GetStatue4Char() { return pkStatue4; }
Thanks for your help.
I don't know if it's correct to fix what I did, but I tried it like this.Previously :
pMap->GetStatue4Char()->AddAffect(AFFECT_STATUE, POINT_NONE, 0, AFF_STATUE1, 3600, 0, true); 7 ArgumentLater:
pMap->GetStatue4Char()->AddAffect(AFFECT_STATUE, POINT_NONE, 0, AFF_STATUE1, 3600, 0, true, false); 8 ArgumentAddAffect arguments:
dwType, bApplyOn, lApplyValue, dwFlag, lDuration, lSPCost, bOverride, IsCube = 8 Argument
-
On 9/17/2021 at 1:48 PM, Cunoo said:
I think can be something like this.. Because I never got black screen after fix, but if I can "get" black screen (10 hours+ in game) Im kicked.. I test it 3x and same problem just Im kicked before I can got black screen... Game is compiled clean from kraizy same as client, only for test.. I think there is something more bad.. Game is overflowed with something more.. Im not sure where is problem because I try debug and nothing happen.. I dont have too much deep knowledges for more.. But for me is this problem really strange because I use clean game for test... Today I test it on my game.. So I write feedback too late..
"_IMPROVED_PACKET_ENCRYPTION_"
delete this from your files. But fix it before you delete it. delete this encryption after repairing.-
1
-
-
Hello friends. I wish everyone good health.
Meley's skills do no damage. There are plugins for SkillValue SkillLimit in mob_proto file. I am adding the skills from the skill_proto.sql file. But it doesn't do any damage. How do I get Meley's skill effects to deal damage?
SE_MELEY_DAMAGE
SE_MELEY_NORMAL_DAMAGEDo I need to make an effect pack like this? and these effects do i need to add damage. Thank you very much to those who will inform me.
-
It's working perfectly now.
here is the plugin for new feelings for you:
Search:{ pkMotionManager.NAME_ANGRY, "angry.msa", 0 },
ADD:{ pkMotionManager.NAME_DANCE_7, "dance_7.msa", 0 },
{ pkMotionManager.NAME_JOY, "joy.msa", 0 },
{ pkMotionManager.NAME_PUSHUP, "pushup.msa", 0 },
{ pkMotionManager.NAME_EXERCISE, "exercise.msa", 0 },
{ pkMotionManager.NAME_DOZE, "doze.msa", 0 },
{ pkMotionManager.NAME_SELFIE, "selfie.msa", 0 },
Search:{ pkBase.EFFECT_EMOTICON + 11, "", "d:/ymir work/effect/etc/emoticon/fish.mse" },
ADD:
{ pkBase.EFFECT_EMOTICON + 12, "", "d:/ymir work/effect/etc/emoticon/charging.mse" },
{ pkBase.EFFECT_EMOTICON + 13, "", "d:/ymir work/effect/etc/emoticon/nosay.mse" },
{ pkBase.EFFECT_EMOTICON + 14, "", "d:/ymir work/effect/etc/emoticon/weather1.mse" },
{ pkBase.EFFECT_EMOTICON + 15, "", "d:/ymir work/effect/etc/emoticon/weather2.mse" },
{ pkBase.EFFECT_EMOTICON + 16, "", "d:/ymir work/effect/etc/emoticon/weather3.mse" },
{ pkBase.EFFECT_EMOTICON + 17, "", "d:/ymir work/effect/etc/emoticon/hungry.mse" },
{ pkBase.EFFECT_EMOTICON + 18, "", "d:/ymir work/effect/etc/emoticon/siren.mse" },
{ pkBase.EFFECT_EMOTICON + 19, "", "d:/ymir work/effect/etc/emoticon/letter.mse" },
{ pkBase.EFFECT_EMOTICON + 20, "", "d:/ymir work/effect/etc/emoticon/call.mse" },
{ pkBase.EFFECT_EMOTICON + 21, "", "d:/ymir work/effect/etc/emoticon/celebration.mse" },
{ pkBase.EFFECT_EMOTICON + 22, "", "d:/ymir work/effect/etc/emoticon/alcohol.mse" },
{ pkBase.EFFECT_EMOTICON + 23, "", "d:/ymir work/effect/etc/emoticon/busy.mse" },
{ pkBase.EFFECT_EMOTICON + 24, "", "d:/ymir work/effect/etc/emoticon/whirl.mse" },
If you use it this way, the emoji of new emotions will not appear in the game (except for animations such as dancing, selfie)
So use it this way.
Open PlayerSettingsModule.py
Search:def __LoadGameEffect():
if app.ENABLE_CPP_PSM:
cpsm.LoadGameEffect()
ADD:net.RegisterEmoticonString("(sweat)")
net.RegisterEmoticonString("(money)")
net.RegisterEmoticonString("(happy)")
net.RegisterEmoticonString("(love)")
net.RegisterEmoticonString("(love2)")
net.RegisterEmoticonString("(angry)")
net.RegisterEmoticonString("(aha)")
net.RegisterEmoticonString("(gloom)")
net.RegisterEmoticonString("(sorry)")
net.RegisterEmoticonString("(!)")
net.RegisterEmoticonString("(?)")
net.RegisterEmoticonString("(fish)")
if app.ENABLE_EXPRESSING_EMOTION: ## THANK YOU OWSAP
net.RegisterEmoticonString("(charging)")
net.RegisterEmoticonString("(nosay)")
net.RegisterEmoticonString("(weather1)")
net.RegisterEmoticonString("(weather2)")
net.RegisterEmoticonString("(weather3)")
net.RegisterEmoticonString("(hungry)")
net.RegisterEmoticonString("(siren)")
net.RegisterEmoticonString("(letter)")
net.RegisterEmoticonString("(call)")
net.RegisterEmoticonString("(celebration)")
net.RegisterEmoticonString("(alcohol)")
net.RegisterEmoticonString("(busy)")
net.RegisterEmoticonString("(whirl)")now everything is ok. If you are using the S Skill system.
PlayerSettingsModule.cpp Open
Search and Replace:static const DWORD GUILD_SKILL_DRAGONBLOOD = pkMotionManager.NAME_SKILL + 107;
static const DWORD GUILD_SKILL_DRAGONBLESS = pkMotionManager.NAME_SKILL + 108;
static const DWORD GUILD_SKILL_BLESSARMOR = pkMotionManager.NAME_SKILL + 109;
static const DWORD GUILD_SKILL_SPPEDUP = pkMotionManager.NAME_SKILL + 110;
static const DWORD GUILD_SKILL_DRAGONWRATH = pkMotionManager.NAME_SKILL + 111;
static const DWORD GUILD_SKILL_MAGICUP = pkMotionManager.NAME_SKILL + 112;static const DWORD HORSE_SKILL_WILDATTACK = pkMotionManager.NAME_SKILL + 113;
static const DWORD HORSE_SKILL_CHARGE = pkMotionManager.NAME_SKILL + 114;
static const DWORD HORSE_SKILL_SPLASH = pkMotionManager.NAME_SKILL + 115;Note : If your 6th Skills are not visible
Open PlayerSettingsModule.py and Search and Change :NEW_678TH_SKILL_ENABLE = constInfo.NEW_678TH_SKILL_ENABLE
Now everything is smooth. Take care of yourselves. I love you. Greetings from Turkey.
-
On 4/9/2022 at 7:29 PM, avertusss said:
I have the same problem @filipw1 Any solution?
Yes : "Bip01", "D:/ymir work/pc/common/effect/armor/armor_9_terabithia.mse"
No :(VS ERROR) : "Bip01", 'D:/ymir work/pc/common/effect/armor/armor_9_terabithia.mse"' ' ' ' No
" " " Yes
OK?Control files.
{ pkBase.EFFECT_EMOTICON + 17, "", "d:/ymir work/effect/etc/emoticon/hungry.mse" },
{ pkBase.EFFECT_EMOTICON + 18, "", "d:/ymir work/effect/etc/emoticon/siren.mse" },
{ pkBase.EFFECT_EMOTICON + 19, "", "d:/ymir work/effect/etc/emoticon/letter.mse" },
{ pkBase.EFFECT_EMOTICON + 20, "", "d:/ymir work/effect/etc/emoticon/call.mse" },
{ pkBase.EFFECT_EMOTICON + 21, "", "d:/ymir work/effect/etc/emoticon/celebration.mse" },
{ pkBase.EFFECT_EMOTICON + 22, "", "d:/ymir work/effect/etc/emoticon/alcohol.mse" },
{ pkBase.EFFECT_EMOTICON + 23, "", "d:/ymir work/effect/etc/emoticon/busy.mse" },
{ pkBase.EFFECT_EMOTICON + 24, "", "d:/ymir work/effect/etc/emoticon/whirl.mse" },new emotions(emotion bag) added but not working.
On 3/13/2022 at 3:46 PM, Thorek said:You must add new emotion to m_vecEffectData vector and v_vecEmoticonString.
new emotions(emotion bag) added but not working.
{ pkBase.EFFECT_EMOTICON + 17, "", "d:/ymir work/effect/etc/emoticon/hungry.mse" },
{ pkBase.EFFECT_EMOTICON + 18, "", "d:/ymir work/effect/etc/emoticon/siren.mse" },
{ pkBase.EFFECT_EMOTICON + 19, "", "d:/ymir work/effect/etc/emoticon/letter.mse" },
{ pkBase.EFFECT_EMOTICON + 20, "", "d:/ymir work/effect/etc/emoticon/call.mse" },
{ pkBase.EFFECT_EMOTICON + 21, "", "d:/ymir work/effect/etc/emoticon/celebration.mse" },
{ pkBase.EFFECT_EMOTICON + 22, "", "d:/ymir work/effect/etc/emoticon/alcohol.mse" },
{ pkBase.EFFECT_EMOTICON + 23, "", "d:/ymir work/effect/etc/emoticon/busy.mse" },
{ pkBase.EFFECT_EMOTICON + 24, "", "d:/ymir work/effect/etc/emoticon/whirl.mse" }, -
My brother who coded this system, you are a marvel. I really admire you.
But I just want to see inside the chests.
How can I disable CTRL + LSHIFT. For example: How do I prevent the screen from turning on when I click Black Steel Armor? Thanks.
PyObject* itemHasDropInfo(PyObject* poSelf, PyObject* poArgs) { int iItemIndex; if (!PyTuple_GetInteger(poArgs, 0, &iItemIndex)) return Py_BadArgument(); CItemManager::TChestDropItemInfoVec* vDropInfo = nullptr; vDropInfo = CItemManager::Instance().GetItemDropInfoVec(iItemIndex); return Py_BuildValue("b", (vDropInfo && !vDropInfo->empty())); } PyObject* itemGetDropInfo(PyObject* poSelf, PyObject* poArgs) { int iItemIndex; if (!PyTuple_GetInteger(poArgs, 0, &iItemIndex)) return Py_BadArgument(); PyObject* poList = PyList_New(0); CItemManager::TChestDropItemInfoVec* vDropInfo = nullptr; vDropInfo = CItemManager::Instance().GetItemDropInfoVec(iItemIndex); return Py_BuildValue("iO", __CreateDropPage(vDropInfo, poList), poList); } if app.__BL_CHEST_DROP_INFO__: def OpenChestDropWindow(self, itemVnum): if self.wndChestDropInfo: self.wndChestDropInfo.Open(itemVnum) if app.__BL_CHEST_DROP_INFO__: if app.IsPressed(app.DIK_LCONTROL): if item.HasDropInfo(ItemVNum) and self.interface: self.interface.OpenChestDropWindow(ItemVNum) return if app.__BL_CHEST_DROP_INFO__: def AppendChestDropInfo(self, itemVnum): hasinfo = item.HasDropInfo(itemVnum, True) if hasinfo: self.AppendSpace(5) self.AppendTextLine(localeInfo.CHEST_DROP_INFO, self.NORMAL_COLOR)
Ok. Fixed
-
0412 04:34:04659 :: LZObject: not a valid data
0412 04:34:04659 :: LoadLocaleData - LoadChestDropInfo(locale/xx/chest_drop) Error
0412 04:34:04799 ::
networkModule.py(line:192) SetSelectCharacterPhase
system.py(line:177) __hybrid_import
system.py(line:142) _process_result
introSelect.py(line:22) <module>
system.py(line:177) __hybrid_import
system.py(line:142) _process_result
interfaceModule.py(line:44) <module>
system.py(line:177) __hybrid_import
system.py(line:142) _process_result
uiaverage_price.py(line:55) <module>networkModule.SetSelectCharacterPhase - <type 'exceptions.RuntimeError'>:skill.GetSkillName - Failed to find skill by 1
0412 04:34:04799 :: ============================================================================================================
0412 04:34:04799 :: Abort!!!!Oky. Fix
Edit : json open false -> true -
Elements are not visible in the player.
-
On 02.11.2021 at 10:49, VqLx said:
herşey çalışıyor.
5 saat sınırdır, örneğin 7 gün ayarlayabilir miyim?void CClientManager::OfflineMessageGarbage()
{
if (m_OfflineMessage.empty())
return;
static const/*expr*/ int iHour = 5;
-
std::vector<TEffect> m_vecEffectData =
-
-
If the Player has AFFECT and kills the monster, the points will come.
Example:if (FindAffect(AFFECT_QUEST_SOUL)) {
pkKiller->PointChange(POINT_QSOUL, 1, true);}
how can I do it. Thank you.
-
-
When I click on the blood victim object, I want affect to appear. and when i hover the mouse over this affect
I want the spirits to write %d/20. I tried to do it myself, but affect does not come out.
Type : ITEM_USE
SubType: USE_SPECIAL
My sample codes:
char_item:
case 70311: if (FindAffect(AFFECT_QUEST_SOUL)) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have used this before.")); return false; } if (GetQuestSoulPoint() >= 20) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You cannot use it now. Use spirits first.")); return false; } if (quest::CQuestManager::instance().GetEventFlag("enable_roulette_event") != 1) { ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Ups! The event is currently inactive!")); return false; } AddAffect(AFFECT_QUEST_SOUL, POINT_NONE, 0, AFF_NONE, 2*60*60, 0, true); item->SetCount(item->GetCount() - 1); ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You can collect souls.")); ChatPacket(CHAT_TYPE_COMMAND, "AffectBloodCommand %d", GetQuestSoulPoint()); break;
affect.h
AFFECT_QUEST_SOUL = 741,
clientsource instancebase "yes"
game.pyserverCommandList["AffectBloodCommand"] = self.AffectBloodCommand
def AffectBloodCommand(self, point): if self.affectShower: self.affectShower.AffectShowerBlood(point)
uiaffectshower.py
class MainBloodShower(ui.ExpandedImageBox): def __init__(self): ui.ExpandedImageBox.__init__(self) self.point = 0 self.toolTip = uiToolTip.ToolTip(100) self.toolTip.HideToolTip() def SetState(self, point): self.toolTip.ClearToolTip() fileName ="d:/ymir work/ui/skill/common/affect/bloodpoint.sub" self.LoadImage(fileName) self.__AppendText(localeInfo.TOOLTIP_AFFECT_LATE_SUMMER_EVENT_BUFF % (self.point)) self.SetScale(0.7, 0.7) def __AppendText(self, text): self.toolTip.AppendTextLine(text) self.toolTip.ResizeToolTip() def OnMouseOverIn(self): self.toolTip.ShowToolTip() def OnMouseOverOut(self): self.toolTip.HideToolTip()
class AffectShower(ui.Window): for
def __init__(self): self.mainbloodshower=None def ClearAllAffects(self): self.mainbloodshower=None def AffectShowerBlood(self, point): image = MainBloodShower() image.SetParent(self) image.SetState(point) image.Show() self.mainbloodshower=image self.__ArrangeImageList() def __ArrangeImageList(self): if self.mainbloodshower: self.mainbloodshower.SetPosition(xPos, 0) xPos += self.IMAGE_STEP AffectCount += 1
but the effect does not come when I click on the item.
char_battle.cpp
int randomnumberlimit = 800; int prob = 100; int DeleteSoulPoint = GetQuestSoulPoint(); int levelrange = 10; if (quest::CQuestManager::instance().GetEventFlag("enable_roulette_event") == 1) { if (FindAffect(AFFECT_QUEST_SOUL) { if (!IsPC() && (pkKiller && pkKiller->IsPC())) { if (pkKiller->GetLevel() >= (pkKiller->GetLevel() - levelrange)) { if (GetMobRank() >= MOB_RANK_PAWN) { if (number(1, randomnumberlimit) <= prob) { pkKiller->PointChange(POINT_QSOUL, 1, true); pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("Huha! Winner SoulPoint. ")); } } if (GetQuestSoulPoint() >= 20) pkKiller->ChatPacket(CHAT_TYPE_INFO, LC_TEXT("You have gathered the necessary souls. Now take it to the Ritual.")); RemoveAffect(AFFECT_QUEST_SOUL); } } } }
Official Private Shop Search
in Features & Metin2 Systems
Posted
@ Mali
Hello financial.
How can I search for all classes or just by typing the item name?
I don't want to choose a class. I just want to write the name of the item and find the item. Regardless of class.