Jump to content

Conquerors of Yohara Official Server Level System and Point System Update.


Recommended Posts

15 minutes ago, Kafa said:

You forget something try search for substate, sub, sungma keywords check if you have everything

can you add me in discord please? Kaylee#3362

39 minutes ago, Kafa said:

You forget something try search for substate, sub, sungma keywords check if you have everything

I'm just remove in contants.cpp  // POINT_CONQUEROR_POINT  because if I leave it gives error to compile

#ifdef ENABLE_CONQUEROR_LEVEL
    { POINT_SUNGMA_STR,                    },
    { POINT_SUNGMA_HP,                    },
    { POINT_SUNGMA_MOVE,                },
    { POINT_SUNGMA_INMUNE,                },
    //{ POINT_CONQUEROR_POINT,            },
#endif

  • Metin2 Dev 3
  • Love 1
Link to comment
Share on other sites

17 hours ago, peakzinho said:

can you add me in discord please? Kaylee#3362

I'm just remove in contants.cpp  // POINT_CONQUEROR_POINT  because if I leave it gives error to compile

#ifdef ENABLE_CONQUEROR_LEVEL
    { POINT_SUNGMA_STR,                    },
    { POINT_SUNGMA_HP,                    },
    { POINT_SUNGMA_MOVE,                },
    { POINT_SUNGMA_INMUNE,                },
    //{ POINT_CONQUEROR_POINT,            },
#endif

 

dont remove  //{ POINT_CONQUEROR_POINT,            },

Link to comment
Share on other sites

  • 2 weeks later...

I did everything for questlua_pc.cpp.

int pc_get_cenquerorlevel

int pc_set_cenquerorlevel I did these.

I go to yohara level with quest. But there is a problem.

Level is not instantly refreshed. I have to be teleported or horseback riding to regenerate.

 

spacer.png

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

  • 1 month later...
  • 3 weeks later...
  • 1 month later...

https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif thanks for the system but, can you me say how i can include the level on introselect and have anyone this https://metin2.download/picture/r3F9504x09DVmF8K988YXgTtGTP6KMUj/.gif

Edited by Metin2 Dev
Core X - External 2 Internal
  • Metin2 Dev 9
  • Good 5
  • Love 5
Link to comment
Share on other sites

  • 11 months later...
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

 

Edited by Metin2 Dev
Core X - External 2 Internal
Link to comment
Share on other sites

  • 9 months later...
On 3/6/2023 at 5:30 AM, Kash13 said:

Hola

 

gracias por compartir, que hacer en este caso? 

 

https://metin2.download/picture/66eeYcDX5SXAwdYIw1Lcr7N0jq88KOlX/.png

Archive

common/tables.h

Look for the following:

typedef struct SPlayerTable

Add this before
} TPlayerTable;

BYTE conquerorlevel;
BYTE conqueror_level_step;
short sungma_str, sungma_hp, sungma_move, sungma_immune;
DWORD conqueror_exp;
short conqueror_point;


Example:


BYTE conquerorlevel;
BYTE conqueror_level_step;
short sungma_str, sungma_hp, sungma_move, sungma_immune;
DWORD conqueror_exp;
short conqueror_point;

} TPlayerTable;

Edited by Developer1321
Link to comment
Share on other sites

5 minutes ago, Developer1321 said:

Archive

common/tables.h

Look for the following:

typedef struct SPlayerTable

Add this before
} TPlayerTable;

BYTE conquerorlevel;
BYTE conqueror_level_step;
short sungma_str, sungma_hp, sungma_move, sungma_immune;
DWORD conqueror_exp;
short conqueror_point;


Example:


BYTE conquerorlevel;
BYTE conqueror_level_step;
short sungma_str, sungma_hp, sungma_move, sungma_immune;
DWORD conqueror_exp;
short conqueror_point;

} TPlayerTable;

i have it there already still facing same error 

i even added the bonuses in player table at navicat , still couldnt solve it or find whats the reason for this problem 

Link to comment
Share on other sites

12 minutes ago, Kash13 said:

ya lo tengo allí y todavía me encuentro con el mismo error 

Incluso agregué los bonos en la tabla de jugadores en Navicat, todavía no pude resolverlo o encontrar el motivo de este problema. 

Pass your tables.h file or show how you have it set.

Link to comment
Share on other sites

3 minutes ago, Kash13 said:

Is that the define that you have added in the service.h or CommonDefines.h?

Edited by Metin2 Dev International
Core X - External 2 Internal
Link to comment
Share on other sites

37 minutes ago, Developer1321 said:

Is that the define that you have added in the service.h or CommonDefines.h?

yup same defined added in service

https://metin2.download/picture/xChRLz2yb2nbKh0vY05Y81sgVC2vuljI/.png

 

Edit

On 3/6/2023 at 7:30 AM, Kash13 said:

Hello

 

thanks for sharing , what to do in this case ? 

 

https://metin2.download/picture/66eeYcDX5SXAwdYIw1Lcr7N0jq88KOlX/.png

okay so i found the problem and solved it

 

thanks to @Developer1321i was able to find where is the problem from the questions he asked me

 

the fix is : tables.h on my source doesnt include service.h so it isn't able to see the function there ..

 

all i had to do is add the function in CommonDefines instead as it is included inside tables.h and this solved it for me

 

 

Edited by Metin2 Dev International
Core X - External 2 Internal
  • Love 1
Link to comment
Share on other sites

  • 10 months later...
1 hour ago, ReFresh said:

Maybe import uiToolTip is missing in uicharacter?

nope, checked ... 

new type of error 

networkmodule.SetSelectCharacterPhase - <type 'exceptions.NameError'>:name 'localeInfo' is not defined

Link to comment
Share on other sites

Announcements



×
×
  • Create New...

Important Information

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