Jump to content
  • 0
Sign in to follow this  
Volkihars

en cours Slot de Personnages Supplémentaires

Question

Version des Files / Type d’Émulateur VDI FILES 2016 FE #Saw

Domaine ( Base de Données, Client, Core, Sources... ) : #Saw

Niveau : Intermédiaire

I. Description du dysfonctionnement :

 

Bonjour.

J'ai suivi le tutoriel de @Vanithys, tout fonctionne correctement partie Source Server & Source Client.
Là où ça bloque c'est au niveau du Client.. car l'interface selection du personnage est différente.


031518Capture.PNG
 

II. introselect .py

SLOT_COUNT:

SLOT_COUNT = 4

Remplacer par :

SLOT_COUNT = 5

chr.DeleteInstance():

		chr.DeleteInstance(0)
		chr.DeleteInstance(1)
		chr.DeleteInstance(2)
		chr.DeleteInstance(3)
		#chr.DeleteInstance(4)

Remplacer par :

		chr.DeleteInstance(0)
		chr.DeleteInstance(1)
		chr.DeleteInstance(2)
		chr.DeleteInstance(3)
		chr.DeleteInstance(4)

def OnKeyDown(self, key):

		if 1 == key:
			self.ExitSelect()
		if 2 == key:
			self.SelectSlot(0)
		if 3 == key:
			self.SelectSlot(1)
		if 4 == key:
			self.SelectSlot(2)

Remplacer par:

		if 1 == key:
			self.ExitSelect()
		if 2 == key:
			self.SelectSlot(0)
		if 3 == key:
			self.SelectSlot(1)
		if 4 == key:
			self.SelectSlot(2)
		if 5 == key:
			self.SelectSlot(3)

Ensuite le tutoriel demande de modifier c'est ligne de code, vu ce n'est pas la même interface les codes sont différentes.

SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0]
indexArray = (3, 2, 1, 0)

Alors j'ai supprimé les # dès lignes suivantes
 

		#self.CharacterSlot_4.Hide()
		#self.CharacterFace_4.Hide()
		#self.CharacterSlot_4_Lv.Hide()
		#self.CharacterSlot_4_Name.Hide()
		#elif i == 4:
		#	self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_2[race])
		#	self.CharacterFace_4.Show()
		#	self.CharacterSlot_4.Show()
		#	self.CharacterSlot_4_Name.SetText(name)
		#	self.CharacterSlot_4_Name.Show()
		#	self.CharacterSlot_4_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level))
		#	self.CharacterSlot_4_Lv.SetFontColor(30, 72, 168)
		#	self.CharacterSlot_4_Lv.Show()
		#self.CharacterSlot_4 = GetObject("CharacterSlot_4")
		#self.CharacterFace_4 = GetObject("CharacterFace_4")
		#self.CharacterSlot_4_Lv = ui.TextLine()
		#self.CharacterSlot_4_Lv.SetParent(self.CharacterSlot_4)
		#self.CharacterSlot_4_Lv.SetPosition(108, 19)
		#self.CharacterSlot_4_Lv.SetHorizontalAlignLeft()
		#self.CharacterSlot_4_Lv.SetText("")
		#self.CharacterSlot_4_Name = ui.TextLine()
		#self.CharacterSlot_4_Name.SetParent(self.CharacterSlot_4)
		#self.CharacterSlot_4_Name.SetPosition(140, 3)
		#self.CharacterSlot_4_Name.SetHorizontalAlignRight()
		#self.CharacterSlot_4_Name.SetText("")
		#GetObject("CharacterSlot_4").ShowToolTip = lambda arg=9: self.OverInButton(arg)
		#GetObject("CharacterSlot_4").HideToolTip = lambda arg=9: self.OverOutButton()
		#self.CharacterSlot_4.SAFE_SetEvent(self.SelectSlot, 4)
		if index == 0:
			self.CharacterSlot_0.Down()
			self.CharacterSlot_0_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_0.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_1.SetUp()
			self.CharacterSlot_2.SetUp()
			self.CharacterSlot_3.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		elif index == 1:
			self.CharacterSlot_1.Down()
			self.CharacterSlot_1_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_1.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_0.SetUp()
			self.CharacterSlot_2.SetUp()
			self.CharacterSlot_3.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		elif index == 2:
			self.CharacterSlot_2.Down()
			self.CharacterSlot_2_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_2.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_0.SetUp()
			self.CharacterSlot_1.SetUp()
			self.CharacterSlot_3.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		elif index == 3:
			self.CharacterSlot_3.Down()
			self.CharacterSlot_3_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_3.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_0.SetUp()
			self.CharacterSlot_1.SetUp()
			self.CharacterSlot_2.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#elif index == 4:
		#	self.CharacterSlot_4.Down()
		#	self.CharacterSlot_4_Name.SetFontColor(1.0, 0.6000, 0.3500)
		#	self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_1[race])
		#	self.CharacterSlot_0.SetUp()
		#	self.CharacterSlot_1.SetUp()
		#	self.CharacterSlot_2.SetUp()
		#	self.CharacterSlot_3.SetUp()
		#	self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#	self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#	self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#	self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)

III. SysErr ( Client / Server ) / SysLog ( Server )
 

Citation

       0403 16:36:08355 ::
       introSelect.py(line:493) __LoadBoardDialog
       ui.py(line:2931) GetChild

       SelectCharacterWindow.LoadBoardDialog.BindObject - <type 'exceptions.KeyError'>:'CharacterSlot_4'

       0403 16:36:08356 :: ============================================================================================================
       0403 16:36:08356 :: Abort!!!!

 

Merci pour votre aide.

Cordialement,

 

J'affirme avoir lu et accepté le règlement de Funky Émulation

Share this post


Link to post

19 answers to this question

Recommended Posts

  • 0

Bonjour,

 

Question débile mais bon, au moins c'est fait.

Lorsque tu as enlever les # devant les 'self' as tu également ajouté la position de ton 5ème personnage dans ton interface ?.

 

il y a 29 minutes, Volkihars a dit :

SLOT_ROTATION = [135.0, 225.0, 315.0, 45.0]

 

Même si différente normalement ce sont les positions de tes personnages dans l'interface.

Si tu ne l'as pas fait, met une valeur proche d'une des autres et vois si cela fonctionne.

Share this post


Link to post
  • 0

Oui je sais, mais je voulais savoir si tu avait mis celle du personnage 5.

Envoi ton fichier complet.

Share this post


Link to post
  • 0

Ok, @DixN

 

import ui
import chr
import grp
import app
import snd
import net
import math
import event
import wndMgr
import uiCommon
import uiTarget
import constInfo
import musicInfo
import uiTaskBar
import uiToolTip
import localeInfo
import uiCharacter
import uiInventory
import uiPlayerGauge
import consoleModule
import systemSetting
import networkModule
import uiAffectShower
import uiScriptLocale
import uiMapNameShower
import interfaceModule
import playerSettingModule

index = 0
LEAVE_BUTTON_FOR_POTAL = FALSE
NOT_NEED_DELETE_CODE = FALSE
ENABLE_ENGNUM_DELETE_CODE = FALSE

if localeInfo.IsJAPAN():
	NOT_NEED_DELETE_CODE = TRUE
elif localeInfo.IsHONGKONG():
	ENABLE_ENGNUM_DELETE_CODE = TRUE
elif localeInfo.IsNEWCIBN() or localeInfo.IsCIBN10():
	ENABLE_ENGNUM_DELETE_CODE = TRUE
elif localeInfo.IsEUROPE():
	ENABLE_ENGNUM_DELETE_CODE = TRUE

class SelectCharacterWindow(ui.Window):
	SLOT_COUNT = 4
	CHARACTER_TYPE_COUNT = 4
	
	EMPIRE_NAME = {
		net.EMPIRE_A : localeInfo.EMPIRE_A,
		net.EMPIRE_B : localeInfo.EMPIRE_B,
		net.EMPIRE_C : localeInfo.EMPIRE_C
	}
	
	RACE_NAME = {
					playerSettingModule.RACE_WARRIOR_M : localeInfo.JOB_WARRIOR,
					playerSettingModule.RACE_WARRIOR_W : localeInfo.JOB_WARRIOR,
					playerSettingModule.RACE_ASSASSIN_M : localeInfo.JOB_ASSASSIN,
					playerSettingModule.RACE_ASSASSIN_W	: localeInfo.JOB_ASSASSIN,
					playerSettingModule.RACE_SURA_M : localeInfo.JOB_SURA,
					playerSettingModule.RACE_SURA_W : localeInfo.JOB_SURA,
					playerSettingModule.RACE_SHAMAN_M : localeInfo.JOB_SHAMAN,
					playerSettingModule.RACE_SHAMAN_W : localeInfo.JOB_SHAMAN,
	}
	
	DESCRIPTION_FILE_NAME =	{
								playerSettingModule.RACE_WARRIOR_M : uiScriptLocale.JOBDESC_WARRIOR_PATH,
								playerSettingModule.RACE_WARRIOR_W : uiScriptLocale.JOBDESC_WARRIOR_PATH,
								playerSettingModule.RACE_ASSASSIN_M : uiScriptLocale.JOBDESC_ASSASSIN_PATH,
								playerSettingModule.RACE_ASSASSIN_W	: uiScriptLocale.JOBDESC_ASSASSIN_PATH,
								playerSettingModule.RACE_SURA_M : uiScriptLocale.JOBDESC_SURA_PATH,
								playerSettingModule.RACE_SURA_W : uiScriptLocale.JOBDESC_SURA_PATH,
								playerSettingModule.RACE_SHAMAN_M : uiScriptLocale.JOBDESC_SHAMAN_PATH,
								playerSettingModule.RACE_SHAMAN_W : uiScriptLocale.JOBDESC_SHAMAN_PATH,
	}
	
	DESCRIPTION_FILE_NAME_LIMIT =	{
								playerSettingModule.RACE_WARRIOR_M : 1,
								playerSettingModule.RACE_WARRIOR_W : 1,
								playerSettingModule.RACE_ASSASSIN_M : 1,
								playerSettingModule.RACE_ASSASSIN_W	: 1,
								playerSettingModule.RACE_SURA_M : 1,
								playerSettingModule.RACE_SURA_W : 1,
								playerSettingModule.RACE_SHAMAN_M : 0,
								playerSettingModule.RACE_SHAMAN_W : 0,
	}
	
	FACE_IMAGE_DICT_1 = {
							playerSettingModule.RACE_WARRIOR_M : "d:/ymir work/ui/intro/public_intro/face/face_warrior_m_01.sub",
							playerSettingModule.RACE_WARRIOR_W : "d:/ymir work/ui/intro/public_intro/face/face_warrior_w_01.sub",
							playerSettingModule.RACE_ASSASSIN_M : "d:/ymir work/ui/intro/public_intro/face/face_assassin_m_01.sub",
							playerSettingModule.RACE_ASSASSIN_W	: "d:/ymir work/ui/intro/public_intro/face/face_assassin_w_01.sub",
							playerSettingModule.RACE_SURA_M : "d:/ymir work/ui/intro/public_intro/face/face_sura_m_01.sub",
							playerSettingModule.RACE_SURA_W : "d:/ymir work/ui/intro/public_intro/face/face_sura_w_01.sub",
							playerSettingModule.RACE_SHAMAN_M : "d:/ymir work/ui/intro/public_intro/face/face_shaman_m_01.sub",
							playerSettingModule.RACE_SHAMAN_W : "d:/ymir work/ui/intro/public_intro/face/face_shaman_w_01.sub",
						}
	
	FACE_IMAGE_DICT_2 = {
							playerSettingModule.RACE_WARRIOR_M : "d:/ymir work/ui/intro/public_intro/face/face_warrior_m_02.sub",
							playerSettingModule.RACE_WARRIOR_W : "d:/ymir work/ui/intro/public_intro/face/face_warrior_w_02.sub",
							playerSettingModule.RACE_ASSASSIN_M : "d:/ymir work/ui/intro/public_intro/face/face_assassin_m_02.sub",
							playerSettingModule.RACE_ASSASSIN_W	: "d:/ymir work/ui/intro/public_intro/face/face_assassin_w_02.sub",
							playerSettingModule.RACE_SURA_M : "d:/ymir work/ui/intro/public_intro/face/face_sura_m_02.sub",
							playerSettingModule.RACE_SURA_W : "d:/ymir work/ui/intro/public_intro/face/face_sura_w_02.sub",
							playerSettingModule.RACE_SHAMAN_M : "d:/ymir work/ui/intro/public_intro/face/face_shaman_m_02.sub",
							playerSettingModule.RACE_SHAMAN_W : "d:/ymir work/ui/intro/public_intro/face/face_shaman_w_02.sub",
						}
	
	FACE_IMAGE_DICT_3 = {
						playerSettingModule.RACE_WARRIOR_M : "icon/face/warrior_m.tga",
						playerSettingModule.RACE_WARRIOR_W : "icon/face/warrior_w.tga",
						playerSettingModule.RACE_ASSASSIN_M : "icon/face/assassin_m.tga",
						playerSettingModule.RACE_ASSASSIN_W	: "icon/face/assassin_w.tga",
						playerSettingModule.RACE_SURA_M : "icon/face/sura_m.tga",
						playerSettingModule.RACE_SURA_W : "icon/face/sura_w.tga",
						playerSettingModule.RACE_SHAMAN_M : "icon/face/shaman_m.tga",
						playerSettingModule.RACE_SHAMAN_W : "icon/face/shaman_w.tga",
					}
	
	class DescriptionBox(ui.Window):
		def __init__(self):
			ui.Window.__init__(self)
			self.descIndex = 0
		def __del__(self):
			ui.Window.__del__(self)
		def SetIndex(self, index):
			self.descIndex = index
		def OnRender(self):
			event.RenderEventSet(self.descIndex)

	class CharacterRenderer(ui.Window):
		def OnRender(self):
			grp.ClearDepthBuffer()
			grp.SetGameRenderState()
			grp.PushState()
			grp.SetOmniLight()
			
			screenWidth = wndMgr.GetScreenWidth()
			screenHeight = wndMgr.GetScreenHeight()
			newScreenWidth = float(screenWidth - 270)
			newScreenHeight = float(screenHeight)
			grp.SetViewport(270.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight)
			
			app.SetCenterPosition(0.0, 0.0, 0.0)
			app.SetCamera(1550.0, 15.0, 180.0, 95.0)
			grp.SetPerspective(10.0, newScreenWidth/newScreenHeight, 1000.0, 3000.0)
			
			(x, y) = app.GetCursorPosition()
			grp.SetCursorPosition(x, y)
			chr.Deform()
			chr.Render()
			grp.RestoreViewport()
			grp.PopState()
			grp.SetInterfaceRenderState()

	def __init__(self, stream):
		ui.Window.__init__(self)
		net.SetPhaseWindow(net.PHASE_WINDOW_SELECT, self)
		self.stream=stream
		self.slot = self.stream.GetCharacterSlot()
		
		self.openLoadingFlag = FALSE
		self.startIndex = -1
		self.startReservingTime = 0
		
		self.curNameAlpha = []
		self.destNameAlpha = []
		for i in xrange(self.CHARACTER_TYPE_COUNT):
			self.curNameAlpha.append(0.0)
			self.destNameAlpha.append(0.0)
		
		self.curGauge = [0.0, 0.0, 0.0, 0.0]
		self.destGauge = [0.0, 0.0, 0.0, 0.0]
		
		self.dlgBoard = 0
		self.changeNameFlag = FALSE
		self.nameInputBoard = None
		self.sendedChangeNamePacket = FALSE

		self.startIndex = -1
		self.isLoad = 0

	def __del__(self):
		ui.Window.__del__(self)
		net.SetPhaseWindow(net.PHASE_WINDOW_SELECT, 0)

	def Open(self):
		if not self.__LoadBoardDialog(uiScriptLocale.LOCALE_UISCRIPT_PATH + "selectcharacterwindow.py"):
			dbg.TraceError("SelectCharacterWindow.Open - __LoadScript Error")
			return
		
		if not self.__LoadQuestionDialog("uiscript/questiondialog.py"):
			return
		
		playerSettingModule.LoadGameData("INIT")
		self.InitCharacterBoard()
		self.btnStart.Enable()
		self.btnCreate.Enable()
		self.btnDelete.Enable()
		self.btnExit.Enable()
		self.dlgBoard.Show()
		self.SetWindowName("SelectCharacterWindow")
		self.Show()
		
		if self.slot >= 0:
			self.SelectSlot(self.slot)
		
		if musicInfo.selectMusic != "":
			snd.SetMusicVolume(systemSetting.GetMusicVolume())
			snd.FadeInMusic("BGM/"+musicInfo.selectMusic)
		
		app.SetCenterPosition(0.0, 0.0, 0.0)
		app.SetCamera(1550.0, 15.0, 180.0, 95.0)
		
		self.isLoad=1
		self.Refresh()
		if self.stream.isAutoSelect:
			chrSlot=self.stream.GetCharacterSlot()
			self.SelectSlot(chrSlot)
			self.StartGame()
		
		self.SetEmpire(net.GetEmpireID())
		app.ShowCursor()

	def Close(self):
		if musicInfo.selectMusic != "":
			snd.FadeOutMusic("BGM/"+musicInfo.selectMusic)
		
		self.stream.popupWindow.Close()
		if self.dlgBoard:
			self.dlgBoard.ClearDictionary()
		
		self.my_id = None
		self.textBoard = None
		self.empireName = None
		self.EmpireFlagA = None
		self.EmpireFlagB = None
		self.EmpireFlagC = None
		self.dlgBoard = None
		self.btnStart = None
		self.btnCreate = None
		self.btnDelete = None
		self.btnExit = None
		self.backGroundImg1 = None
		self.backGroundImg2 = None
		self.backGroundImg3 = None
		self.dlgQuestion.ClearDictionary()
		self.dlgQuestion = None
		self.dlgQuestionText = None
		self.dlgQuestionAcceptButton = None
		self.dlgQuestionCancelButton = None
		self.privateInputBoard = None
		self.nameInputBoard = None
		
		chr.DeleteInstance(self.slot)
		
		self.Hide()
		self.KillFocus()
		app.HideCursor()
		event.Destroy()

	def SetEmpire(self, id):
		self.empireName.SetText(self.EMPIRE_NAME.get(id, ""))
		if id == 1:
			self.empireName.SetFontColor(1.0, 0, 0)
			self.EmpireFlagA.Show()
			self.EmpireFlagB.Hide()
			self.EmpireFlagC.Hide()
			self.BackGround = self.backGroundImg1
			self.backGroundImg1.Show()
			self.backGroundImg2.Hide()
			self.backGroundImg3.Hide()
			
			self.chrRenderer = self.CharacterRenderer()
			self.chrRenderer.SetParent(self.backGroundImg1)
			self.chrRenderer.Show()
		elif id == 2:
			self.empireName.SetFontColor(1.0, 1.0, 0.0)
			self.EmpireFlagA.Hide()
			self.EmpireFlagB.Show()
			self.EmpireFlagC.Hide()
			self.BackGround = self.backGroundImg2
			self.backGroundImg1.Hide()
			self.backGroundImg2.Show()
			self.backGroundImg3.Hide()
			
			self.chrRenderer = self.CharacterRenderer()
			self.chrRenderer.SetParent(self.backGroundImg2)
			self.chrRenderer.Show()
		elif id == 3:
			self.empireName.SetFontColor(0.0, 0, 1.0)
			self.EmpireFlagA.Hide()
			self.EmpireFlagB.Hide()
			self.EmpireFlagC.Show()
			self.BackGround = self.backGroundImg3
			self.backGroundImg1.Hide()
			self.backGroundImg2.Hide()
			self.backGroundImg3.Show()
			
			self.chrRenderer = self.CharacterRenderer()
			self.chrRenderer.SetParent(self.backGroundImg3)
			self.chrRenderer.Show()

	def Refresh(self):
		if not self.isLoad:
			return
		
		for i in xrange(self.SLOT_COUNT):
			id = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID)
			race = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_RACE)
			form = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_FORM)
			name = net.GetAccountCharacterSlotDataString(i, net.ACCOUNT_CHARACTER_SLOT_NAME)
			hair = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_HAIR)
			#acce = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ACCE)
			#acce_spec = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ACCE_SPEC)
			if id != 0:
				#self.MakeCharacter(index, id, name, race, form, hair, acce, acce_spec)
				#self.MakeCharacter(index, id, name, race, form, hair, acce)
				self.MakeCharacter(index, id, name, race, form, hair)
				self.SelectSlot(i)
				break
		
		self.CharacterSlot_0.Hide()
		self.CharacterFace_0.Hide()
		self.CharacterSlot_0_Lv.Hide()
		self.CharacterSlot_0_Name.Hide()
		self.CharacterSlot_1.Hide()
		self.CharacterFace_1.Hide()
		self.CharacterSlot_1_Lv.Hide()
		self.CharacterSlot_1_Name.Hide()
		self.CharacterSlot_2.Hide()
		self.CharacterFace_2.Hide()
		self.CharacterSlot_2_Lv.Hide()
		self.CharacterSlot_2_Name.Hide()
		self.CharacterSlot_3.Hide()
		self.CharacterFace_3.Hide()
		self.CharacterSlot_3_Lv.Hide()
		self.CharacterSlot_3_Name.Hide()
		#self.CharacterSlot_4.Hide()
		#self.CharacterFace_4.Hide()
		#self.CharacterSlot_4_Lv.Hide()
		#self.CharacterSlot_4_Name.Hide()
		for i in xrange(self.SLOT_COUNT):
			id = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID)
			race = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_RACE)
			name = net.GetAccountCharacterSlotDataString(i, net.ACCOUNT_CHARACTER_SLOT_NAME)
			level = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_LEVEL)
			if id != 0:
				if i == 0:
					self.CharacterFace_0.LoadImage(self.FACE_IMAGE_DICT_2[race])
					self.CharacterFace_0.Show()
					self.CharacterSlot_0.Show()
					self.CharacterSlot_0_Name.SetText(name)
					self.CharacterSlot_0_Name.Show()
					self.CharacterSlot_0_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level))
					self.CharacterSlot_0_Lv.SetFontColor(30, 72, 168)
					self.CharacterSlot_0_Lv.Show()
				elif i == 1:
					self.CharacterFace_1.LoadImage(self.FACE_IMAGE_DICT_2[race])
					self.CharacterFace_1.Show()
					self.CharacterSlot_1.Show()
					self.CharacterSlot_1_Name.SetText(name)
					self.CharacterSlot_1_Name.Show()
					self.CharacterSlot_1_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level))
					self.CharacterSlot_1_Lv.SetFontColor(30, 72, 168)
					self.CharacterSlot_1_Lv.Show()
				elif i == 2:
					self.CharacterFace_2.LoadImage(self.FACE_IMAGE_DICT_2[race])
					self.CharacterFace_2.Show()
					self.CharacterSlot_2.Show()
					self.CharacterSlot_2_Name.SetText(name)
					self.CharacterSlot_2_Name.Show()
					self.CharacterSlot_2_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level))
					self.CharacterSlot_2_Lv.SetFontColor(30, 72, 168)
					self.CharacterSlot_2_Lv.Show()
				elif i == 3:
					self.CharacterFace_3.LoadImage(self.FACE_IMAGE_DICT_2[race])
					self.CharacterFace_3.Show()
					self.CharacterSlot_3.Show()
					self.CharacterSlot_3_Name.SetText(name)
					self.CharacterSlot_3_Name.Show()
					self.CharacterSlot_3_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level))
					self.CharacterSlot_3_Lv.SetFontColor(30, 72, 168)
					self.CharacterSlot_3_Lv.Show()
				#elif i == 4:
				#	self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_2[race])
				#	self.CharacterFace_4.Show()
				#	self.CharacterSlot_4.Show()
				#	self.CharacterSlot_4_Name.SetText(name)
				#	self.CharacterSlot_4_Name.Show()
				#	self.CharacterSlot_4_Lv.SetText(localeInfo.INTRO_SELECT_LEVEL % (level))
				#	self.CharacterSlot_4_Lv.SetFontColor(30, 72, 168)
				#	self.CharacterSlot_4_Lv.Show()

	def GetCharacterSlotID(self, slotIndex):
		return net.GetAccountCharacterSlotDataInteger(slotIndex, net.ACCOUNT_CHARACTER_SLOT_ID)

	def GetSlotIndex(self):
		return self.slot

	def __LoadQuestionDialog(self, fileName):
		self.dlgQuestion = ui.ScriptWindow()

		try:
			pyScrLoader = ui.PythonScriptLoader()
			pyScrLoader.LoadScriptFile(self.dlgQuestion, fileName)
		except:
			import exception
			exception.Abort("SelectCharacterWindow.LoadQuestionDialog.LoadScript")

		try:
			GetObject=self.dlgQuestion.GetChild
			self.dlgQuestionText=GetObject("message")
			self.dlgQuestionAcceptButton=GetObject("accept")
			self.dlgQuestionCancelButton=GetObject("cancel")
		except:
			import exception
			exception.Abort("SelectCharacterWindow.LoadQuestionDialog.BindObject")

		self.dlgQuestionText.SetText(localeInfo.SELECT_DO_YOU_DELETE_REALLY)
		self.dlgQuestionAcceptButton.SetEvent(ui.__mem_func__(self.RequestDeleteCharacter))
		self.dlgQuestionCancelButton.SetEvent(ui.__mem_func__(self.dlgQuestion.Hide))
		return 1

	def __LoadBoardDialog(self, fileName):
		self.dlgBoard = ui.ScriptWindow()
		try:
			pyScrLoader = ui.PythonScriptLoader()
			pyScrLoader.LoadScriptFile(self.dlgBoard, fileName)
		except:
			import exception
			exception.Abort("SelectCharacterWindow.LoadBoardDialog.LoadScript")
		
		try:
			GetObject=self.dlgBoard.GetChild
			self.backGroundImg1 = GetObject("BackGround")
			self.backGroundImg2 = GetObject("BackGround2")
			self.backGroundImg2.Hide()
			self.backGroundImg3 = GetObject("BackGround3")
			self.backGroundImg3.Hide()
			
			self.btnStart = GetObject("start_button")
			self.btnCreate = GetObject("create_button")
			self.btnDelete = GetObject("delete_button")
			self.btnExit = GetObject("exit_button")
			self.CharacterSlot_0 = GetObject("CharacterSlot_0")
			self.CharacterFace_0 = GetObject("CharacterFace_0")
			self.CharacterSlot_0_Lv = ui.TextLine()
			self.CharacterSlot_0_Lv.SetParent(self.CharacterSlot_0)
			self.CharacterSlot_0_Lv.SetPosition(108, 19)
			self.CharacterSlot_0_Lv.SetHorizontalAlignLeft()
			self.CharacterSlot_0_Lv.SetText("")
			self.CharacterSlot_0_Name = ui.TextLine()
			self.CharacterSlot_0_Name.SetParent(self.CharacterSlot_0)
			self.CharacterSlot_0_Name.SetPosition(140, 3)
			self.CharacterSlot_0_Name.SetHorizontalAlignRight()
			self.CharacterSlot_0_Name.SetText("")
			self.CharacterSlot_1 = GetObject("CharacterSlot_1")
			self.CharacterFace_1 = GetObject("CharacterFace_1")
			self.CharacterSlot_1_Lv = ui.TextLine()
			self.CharacterSlot_1_Lv.SetParent(self.CharacterSlot_1)
			self.CharacterSlot_1_Lv.SetPosition(108, 19)
			self.CharacterSlot_1_Lv.SetHorizontalAlignLeft()
			self.CharacterSlot_1_Lv.SetText("")
			self.CharacterSlot_1_Name = ui.TextLine()
			self.CharacterSlot_1_Name.SetParent(self.CharacterSlot_1)
			self.CharacterSlot_1_Name.SetPosition(140, 3)
			self.CharacterSlot_1_Name.SetHorizontalAlignRight()
			self.CharacterSlot_1_Name.SetText("")
			self.CharacterSlot_2 = GetObject("CharacterSlot_2")
			self.CharacterFace_2 = GetObject("CharacterFace_2")
			self.CharacterSlot_2_Lv = ui.TextLine()
			self.CharacterSlot_2_Lv.SetParent(self.CharacterSlot_2)
			self.CharacterSlot_2_Lv.SetPosition(108, 19)
			self.CharacterSlot_2_Lv.SetHorizontalAlignLeft()
			self.CharacterSlot_2_Lv.SetText("")
			self.CharacterSlot_2_Name = ui.TextLine()
			self.CharacterSlot_2_Name.SetParent(self.CharacterSlot_2)
			self.CharacterSlot_2_Name.SetPosition(140, 3)
			self.CharacterSlot_2_Name.SetHorizontalAlignRight()
			self.CharacterSlot_2_Name.SetText("")
			self.CharacterSlot_3 = GetObject("CharacterSlot_3")
			self.CharacterFace_3 = GetObject("CharacterFace_3")
			self.CharacterSlot_3_Lv = ui.TextLine()
			self.CharacterSlot_3_Lv.SetParent(self.CharacterSlot_3)
			self.CharacterSlot_3_Lv.SetPosition(108, 19)
			self.CharacterSlot_3_Lv.SetHorizontalAlignLeft()
			self.CharacterSlot_3_Lv.SetText("")
			self.CharacterSlot_3_Name = ui.TextLine()
			self.CharacterSlot_3_Name.SetParent(self.CharacterSlot_3)
			self.CharacterSlot_3_Name.SetPosition(140, 3)
			self.CharacterSlot_3_Name.SetHorizontalAlignRight()
			self.CharacterSlot_3_Name.SetText("")
			#self.CharacterSlot_4 = GetObject("CharacterSlot_4")
			#self.CharacterFace_4 = GetObject("CharacterFace_4")
			#self.CharacterSlot_4_Lv = ui.TextLine()
			#self.CharacterSlot_4_Lv.SetParent(self.CharacterSlot_4)
			#self.CharacterSlot_4_Lv.SetPosition(108, 19)
			#self.CharacterSlot_4_Lv.SetHorizontalAlignLeft()
			#self.CharacterSlot_4_Lv.SetText("")
			#self.CharacterSlot_4_Name = ui.TextLine()
			#self.CharacterSlot_4_Name.SetParent(self.CharacterSlot_4)
			#self.CharacterSlot_4_Name.SetPosition(140, 3)
			#self.CharacterSlot_4_Name.SetHorizontalAlignRight()
			#self.CharacterSlot_4_Name.SetText("")
			self.DiscFace = GetObject("DiscFace")
			self.raceName = GetObject("raceName_Text")
			
			self.my_id = GetObject("my_id")
			self.textBoard = GetObject("text_board")
			self.textBoardPrev = GetObject("prev_button")
			self.textBoardNext = GetObject("next_button")
			
			self.CharacterHTH = GetObject("hth_value")
			self.CharacterINT = GetObject("int_value")
			self.CharacterSTR = GetObject("str_value")
			self.CharacterDEX = GetObject("dex_value")
			
			self.NameList = []
			self.NameList.append(GetObject("name_warrior"))
			self.NameList.append(GetObject("name_assassin"))
			self.NameList.append(GetObject("name_sura"))
			self.NameList.append(GetObject("name_shaman"))
			
			self.GaugeList = []
			self.GaugeList.append(GetObject("hth_gauge"))
			self.GaugeList.append(GetObject("int_gauge"))
			self.GaugeList.append(GetObject("str_gauge"))
			self.GaugeList.append(GetObject("dex_gauge"))
			
			self.empireName = GetObject("EmpireName")
			self.EmpireFlagA = GetObject("EmpireFlag_A")
			self.EmpireFlagB = GetObject("EmpireFlag_B")
			self.EmpireFlagC = GetObject("EmpireFlag_C")
		except:
			import exception
			exception.Abort("SelectCharacterWindow.LoadBoardDialog.BindObject")
		
		self.toolTip = uiToolTip.ToolTip()
		self.toolTip.ClearToolTip()
		
		self.descIndex = 0
		self.descriptionBox = self.DescriptionBox()
		self.descriptionBox.Show()
		self.my_id.SetText(constInfo.ACCOUNT_NAME)
		self.textBoardPrev.SetEvent(ui.__mem_func__(self.PrevDescriptionPage))
		self.textBoardNext.SetEvent(ui.__mem_func__(self.NextDescriptionPage))
		GetObject("start_button").ShowToolTip = lambda arg=1: self.OverInButton(arg)
		GetObject("start_button").HideToolTip = lambda arg=1: self.OverOutButton()
		GetObject("exit_button").ShowToolTip = lambda arg=2: self.OverInButton(arg)
		GetObject("exit_button").HideToolTip = lambda arg=2: self.OverOutButton()
		GetObject("delete_button").ShowToolTip = lambda arg=3: self.OverInButton(arg)
		GetObject("delete_button").HideToolTip = lambda arg=3: self.OverOutButton()
		GetObject("create_button").ShowToolTip = lambda arg=4: self.OverInButton(arg)
		GetObject("create_button").HideToolTip = lambda arg=4: self.OverOutButton()
		GetObject("CharacterSlot_0").ShowToolTip = lambda arg=5: self.OverInButton(arg)
		GetObject("CharacterSlot_0").HideToolTip = lambda arg=5: self.OverOutButton()
		GetObject("CharacterSlot_1").ShowToolTip = lambda arg=6: self.OverInButton(arg)
		GetObject("CharacterSlot_1").HideToolTip = lambda arg=6: self.OverOutButton()
		GetObject("CharacterSlot_2").ShowToolTip = lambda arg=7: self.OverInButton(arg)
		GetObject("CharacterSlot_2").HideToolTip = lambda arg=7: self.OverOutButton()
		GetObject("CharacterSlot_3").ShowToolTip = lambda arg=8: self.OverInButton(arg)
		GetObject("CharacterSlot_3").HideToolTip = lambda arg=8: self.OverOutButton()
		#GetObject("CharacterSlot_4").ShowToolTip = lambda arg=9: self.OverInButton(arg)
		#GetObject("CharacterSlot_4").HideToolTip = lambda arg=9: self.OverOutButton()
		GetObject("prev_button").ShowToolTip = lambda arg=9: self.OverInButton(arg)
		GetObject("prev_button").HideToolTip = lambda arg=9: self.OverOutButton()
		GetObject("next_button").ShowToolTip = lambda arg=10: self.OverInButton(arg)
		GetObject("next_button").HideToolTip = lambda arg=10: self.OverOutButton()
		
		for name in self.NameList:
			name.SetAlpha(0.0)
		
		self.btnStart.SetEvent(ui.__mem_func__(self.StartGame))
		self.btnCreate.SetEvent(ui.__mem_func__(self.CreateCharacter))
		self.btnExit.SetEvent(ui.__mem_func__(self.ExitSelect))
		
		self.CharacterSlot_0.SAFE_SetEvent(self.SelectSlot, 0)
		self.CharacterSlot_1.SAFE_SetEvent(self.SelectSlot, 1)
		self.CharacterSlot_2.SAFE_SetEvent(self.SelectSlot, 2)
		self.CharacterSlot_3.SAFE_SetEvent(self.SelectSlot, 3)
		#self.CharacterSlot_4.SAFE_SetEvent(self.SelectSlot, 4)
		
		if NOT_NEED_DELETE_CODE:
			self.btnDelete.SetEvent(ui.__mem_func__(self.PopupDeleteQuestion))
		else:
			self.btnDelete.SetEvent(ui.__mem_func__(self.InputPrivateCode))
		
		self.chrRenderer = self.CharacterRenderer()
		self.chrRenderer.SetParent(self.backGroundImg1)
		self.chrRenderer.Show()
		
		return 1

	#def MakeCharacter(self, index, id, name, race, form, hair, acce, acce_spec):
	def MakeCharacter(self, index, id, name, race, form, hair):
		if 0 == id:
			return
		
		chr.CreateInstance(index)
		chr.SelectInstance(index)
		chr.SetVirtualID(index)
		chr.SetNameString(name)
		
		chr.SetRace(race)
		chr.SetArmor(form)
		chr.SetHair(hair)
		#chr.SetAcce(acce)
		#if acce_spec == 100:
		#	chr.SetAcce(acce, 99)
		#else:
		#	chr.SetAcce(acce, 0)
		chr.Refresh()
		chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
		chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)
		chr.SetRotation(0.0)
		
		distance = 50.0
		rotRadian = 82.0 * (math.pi*2) / 360.0
		x = distance*math.sin(rotRadian) + distance*math.cos(rotRadian)
		y = distance*math.cos(rotRadian) - distance*math.sin(rotRadian)
		
		chr.SetPixelPosition(int(x), int(y), 30)
		self.DiscFace.LoadImage(self.FACE_IMAGE_DICT_3[race])
		self.DiscFace.Show()
		self.raceName.SetText(self.RACE_NAME[race])
		self.raceName.Show()

	def StartGame(self):
		self.toolTip.Hide()
		
		if self.sendedChangeNamePacket:
			return
		
		if self.changeNameFlag:
			self.OpenChangeNameDialog()
			return
		
		if -1 != self.startIndex:
			return
		
		if musicInfo.selectMusic != "":
			snd.FadeLimitOutMusic("BGM/"+musicInfo.selectMusic, systemSetting.GetMusicVolume()*0.05)
		
		self.btnStart.SetUp()
		self.btnCreate.SetUp()
		self.btnDelete.SetUp()
		self.btnExit.SetUp()
		
		self.btnStart.Disable()
		self.btnCreate.Disable()
		self.btnDelete.Disable()
		self.btnExit.Disable()
		self.dlgQuestion.Hide()
		
		self.stream.SetCharacterSlot(self.slot)
		self.startIndex = self.slot
		self.startReservingTime = app.GetTime()
		for i in xrange(self.SLOT_COUNT):
			if FALSE == chr.HasInstance(i):
				continue
			
			chr.SelectInstance(i)
			if i == self.slot:
				self.slot = self.slot
				chr.PushOnceMotion(chr.MOTION_INTRO_SELECTED, 0.1)
				continue
			
			chr.PushOnceMotion(chr.MOTION_INTRO_NOT_SELECTED, 0.1)

	def OpenChangeNameDialog(self):
		import uiCommon
		nameInputBoard = uiCommon.InputDialogWithDescription()
		nameInputBoard.SetTitle(localeInfo.SELECT_CHANGE_NAME_TITLE)
		nameInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputName))
		nameInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputName))
		nameInputBoard.SetMaxLength(chr.PLAYER_NAME_MAX_LEN)
		nameInputBoard.SetBoardWidth(200)
		nameInputBoard.SetDescription(localeInfo.SELECT_INPUT_CHANGING_NAME)
		nameInputBoard.Open()
		nameInputBoard.slot = self.slot
		self.nameInputBoard = nameInputBoard

	def OnChangeName(self, id, name):
		self.SelectSlot(id)
		self.sendedChangeNamePacket = FALSE
		self.PopupMessage(localeInfo.SELECT_CHANGED_NAME)

	def AcceptInputName(self):
		changeName = self.nameInputBoard.GetText()
		if not changeName:
			return

		self.sendedChangeNamePacket = TRUE
		net.SendChangeNamePacket(self.nameInputBoard.slot, changeName)
		return self.CancelInputName()

	def CancelInputName(self):
		self.nameInputBoard.Close()
		self.nameInputBoard = None
		return TRUE

	def OnCreateFailure(self, type):
		self.sendedChangeNamePacket = FALSE
		if 0 == type:
			self.PopupMessage(localeInfo.SELECT_CHANGE_FAILURE_STRANGE_NAME)
		elif 1 == type:
			self.PopupMessage(localeInfo.SELECT_CHANGE_FAILURE_ALREADY_EXIST_NAME)
		elif 100 == type:
			self.PopupMessage(localeInfo.SELECT_CHANGE_FAILURE_STRANGE_INDEX)

	def CreateCharacter(self):
		self.toolTip.Hide()
		for i in xrange(self.SLOT_COUNT):
			id = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID)
			if id == 0:
				self.stream.SetCharacterSlot(i)
				EMPIRE_MODE = 1
				if EMPIRE_MODE:
					if self.__AreAllSlotEmpty():
						self.stream.SetReselectEmpirePhase()
					else:
						self.stream.SetCreateCharacterPhase()
				else:
					self.stream.SetCreateCharacterPhase()
				
				break

	def __AreAllSlotEmpty(self):
		for iSlot in xrange(self.SLOT_COUNT):
			if 0 != net.GetAccountCharacterSlotDataInteger(iSlot, net.ACCOUNT_CHARACTER_SLOT_ID):
				return 0
		
		return 1

	def PopupDeleteQuestion(self):
		id = self.GetCharacterSlotID(self.slot)
		if 0 == id:
			return

		self.dlgQuestion.Show()
		self.dlgQuestion.SetTop()

	def RequestDeleteCharacter(self):
		self.dlgQuestion.Hide()

		id = self.GetCharacterSlotID(self.slot)
		if 0 == id:
			self.PopupMessage(localeInfo.SELECT_EMPTY_SLOT)
			return

		net.SendDestroyCharacterPacket(self.slot, "1234567")
		self.PopupMessage(localeInfo.SELECT_DELEING)

	def InputPrivateCode(self):
		import uiCommon
		privateInputBoard = uiCommon.InputDialogWithDescription()
		privateInputBoard.SetTitle(localeInfo.INPUT_PRIVATE_CODE_DIALOG_TITLE)
		privateInputBoard.SetAcceptEvent(ui.__mem_func__(self.AcceptInputPrivateCode))
		privateInputBoard.SetCancelEvent(ui.__mem_func__(self.CancelInputPrivateCode))
		
		if ENABLE_ENGNUM_DELETE_CODE:
			pass
		else:
			privateInputBoard.SetNumberMode()
		
		privateInputBoard.SetSecretMode()
		privateInputBoard.SetMaxLength(7)
		privateInputBoard.SetBoardWidth(250)
		privateInputBoard.SetDescription(localeInfo.INPUT_PRIVATE_CODE_DIALOG_DESCRIPTION)
		privateInputBoard.Open()
		self.privateInputBoard = privateInputBoard

	def AcceptInputPrivateCode(self):
		privateCode = self.privateInputBoard.GetText()
		if not privateCode:
			return

		id = self.GetCharacterSlotID(self.slot)
		if 0 == id:
			self.PopupMessage(localeInfo.SELECT_EMPTY_SLOT)
			return

		net.SendDestroyCharacterPacket(self.slot, privateCode)
		self.PopupMessage(localeInfo.SELECT_DELEING)

		self.CancelInputPrivateCode()
		return TRUE

	def CancelInputPrivateCode(self):
		self.privateInputBoard = None
		return TRUE

	def OnDeleteSuccess(self, slot):
		self.PopupMessage(localeInfo.SELECT_DELETED)
		self.DeleteCharacter(slot)

	def OnDeleteFailure(self):
		self.PopupMessage(localeInfo.SELECT_CAN_NOT_DELETE)

	def DeleteCharacter(self, index):
		chr.DeleteInstance(index)
		self.SelectSlot(self.slot)
		self.Refresh()

	def ExitSelect(self):
		self.dlgQuestion.Hide()
		if LEAVE_BUTTON_FOR_POTAL:
			if app.loggined:
				self.stream.SetPhaseWindow(0)
			else:
				self.stream.setloginphase()
		else:
			self.stream.SetLoginPhase()
		
		self.Hide()

	def SelectSlot(self, index):
		if index < 0:
			return
		
		if index >= self.SLOT_COUNT:
			return
		
		snd.PlaySound("sound/ui/click.wav")
		chr.DeleteInstance(0)
		chr.DeleteInstance(1)
		chr.DeleteInstance(2)
		chr.DeleteInstance(3)
		#chr.DeleteInstance(4)
		self.DiscFace.Hide()
		self.raceName.Hide()
		id = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ID)
		race = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_RACE)
		form = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_FORM)
		name = net.GetAccountCharacterSlotDataString(index, net.ACCOUNT_CHARACTER_SLOT_NAME)
		hair = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_HAIR)
		#acce = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ACCE)
		#acce_spec = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ACCE_SPEC)
		if id != 0:
			#self.MakeCharacter(index, id, name, race, form, hair, acce, acce_spec)
			self.MakeCharacter(index, id, name, race, form, hair)
		
		if index == 0:
			self.CharacterSlot_0.Down()
			self.CharacterSlot_0_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_0.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_1.SetUp()
			self.CharacterSlot_2.SetUp()
			self.CharacterSlot_3.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		elif index == 1:
			self.CharacterSlot_1.Down()
			self.CharacterSlot_1_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_1.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_0.SetUp()
			self.CharacterSlot_2.SetUp()
			self.CharacterSlot_3.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		elif index == 2:
			self.CharacterSlot_2.Down()
			self.CharacterSlot_2_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_2.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_0.SetUp()
			self.CharacterSlot_1.SetUp()
			self.CharacterSlot_3.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		elif index == 3:
			self.CharacterSlot_3.Down()
			self.CharacterSlot_3_Name.SetFontColor(1.0, 0.6000, 0.3500)
			self.CharacterFace_3.LoadImage(self.FACE_IMAGE_DICT_1[race])
			self.CharacterSlot_0.SetUp()
			self.CharacterSlot_1.SetUp()
			self.CharacterSlot_2.SetUp()
			#self.CharacterSlot_4.SetUp()
			self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
			#self.CharacterSlot_4_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#elif index == 4:
		#	self.CharacterSlot_4.Down()
		#	self.CharacterSlot_4_Name.SetFontColor(1.0, 0.6000, 0.3500)
		#	self.CharacterFace_4.LoadImage(self.FACE_IMAGE_DICT_1[race])
		#	self.CharacterSlot_0.SetUp()
		#	self.CharacterSlot_1.SetUp()
		#	self.CharacterSlot_2.SetUp()
		#	self.CharacterSlot_3.SetUp()
		#	self.CharacterSlot_0_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#	self.CharacterSlot_1_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#	self.CharacterSlot_2_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		#	self.CharacterSlot_3_Name.SetFontColor(0.8549, 0.8549, 0.8549)
		
		self.slot = index
		chr.SelectInstance(self.slot)
		
		for i in xrange(self.CHARACTER_TYPE_COUNT):
			self.destNameAlpha[i] = 0.0
		
		self.destGauge = [0.0, 0.0, 0.0, 0.0]
		id=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID)
		if 0 != id:
			self.btnStart.Show()
			self.btnDelete.Show()
			self.btnCreate.Hide()
			for i in xrange(self.SLOT_COUNT):
				id_check = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ID)
				if id_check == 0:
					self.btnCreate.Show()
			
			playTime=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME)
			level=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_LEVEL)
			race=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_RACE)
			valueHTH=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_HTH)
			valueINT=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_INT)
			valueSTR=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_STR)
			valueDEX=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_DEX)
			name=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_NAME)
			guildID=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_GUILD_ID)
			guildName=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_GUILD_NAME)
			self.changeNameFlag=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_CHANGE_NAME_FLAG)
			
			job = chr.RaceToJob(race)
			if job >= 0 and job < self.CHARACTER_TYPE_COUNT:
				self.destNameAlpha[job] = 1.0
			
			self.CharacterHTH.SetText(str(valueHTH))
			self.CharacterINT.SetText(str(valueINT))
			self.CharacterSTR.SetText(str(valueSTR))
			self.CharacterDEX.SetText(str(valueDEX))
			
			statesSummary = float(valueHTH + valueINT + valueSTR + valueDEX)
			if statesSummary > 0.0:
				self.destGauge = [
										((float(valueHTH) * 10) / 90) / 10,
										((float(valueINT) * 10) / 90) / 10,
										((float(valueSTR) * 10) / 90) / 10,
										((float(valueDEX) * 10) / 90) / 10
									]
			
			event.ClearEventSet(self.descIndex)
			self.descIndex = event.RegisterEventSet(self.DESCRIPTION_FILE_NAME[race])
			if self.DESCRIPTION_FILE_NAME_LIMIT[race] == 1:
				self.textBoardPrev.Show()
				self.textBoardNext.Show()
			else:
				self.textBoardPrev.Hide()
				self.textBoardNext.Hide()
		else:
			self.textBoardPrev.Hide()
			self.textBoardNext.Hide()
			self.InitCharacterBoard()

	def PrevDescriptionPage(self):
		if event.IsWait(self.descIndex) == TRUE:
			if event.GetVisibleStartLine(self.descIndex)-14 >= 0:
				event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)-14)
				event.Skip(self.descIndex)
		else:
			event.Skip(self.descIndex)

	def NextDescriptionPage(self):
		if event.IsWait(self.descIndex) == TRUE:
			event.SetVisibleStartLine(self.descIndex, event.GetVisibleStartLine(self.descIndex)+14)
			event.Skip(self.descIndex)
		else:
			event.Skip(self.descIndex)

	def InitCharacterBoard(self):
		self.btnStart.Hide()
		self.btnDelete.Hide()
		self.btnCreate.Show()
		
		self.CharacterHTH.SetText("")
		self.CharacterINT.SetText("")
		self.CharacterSTR.SetText("")
		self.CharacterDEX.SetText("")

	def OnUpdate(self):
		chr.Update()
		(xposEventSet, yposEventSet) = self.textBoard.GetGlobalPosition()
		event.UpdateEventSet(self.descIndex, xposEventSet+7, -(yposEventSet+7))
		self.descriptionBox.SetIndex(self.descIndex)
		
		for i in xrange(4):
			self.curGauge[i] += (self.destGauge[i] - self.curGauge[i]) / 10.0
			if abs(self.curGauge[i] - self.destGauge[i]) < 0.005:
				self.curGauge[i] = self.destGauge[i]
			
			self.GaugeList[i].SetPercentage(self.curGauge[i], 1.0)
		for i in xrange(self.CHARACTER_TYPE_COUNT):
			self.curNameAlpha[i] += (self.destNameAlpha[i] - self.curNameAlpha[i]) / 10.0
			self.NameList[i].SetAlpha(self.curNameAlpha[i])
		for i in xrange(self.SLOT_COUNT):
			if FALSE == chr.HasInstance(i):
				continue
		if -1 != self.startIndex:
			if app.GetTime() - self.startReservingTime > 3.0:
				if FALSE == self.openLoadingFlag:
					chrSlot=self.stream.GetCharacterSlot()
					net.DirectEnter(chrSlot)
					self.openLoadingFlag = TRUE
					import chat
					chat.Clear()

	def PopupMessage(self, msg, func=0):
		if not func:
			func=self.EmptyFunc

		self.stream.popupWindow.Close()
		self.stream.popupWindow.Open(msg, func, localeInfo.UI_OK)

	def OverInButton(self, stat):
		if stat == 1:
			self.toolTip.ClearToolTip()
			self.toolTip.AlignHorizonalCenter()
			self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_SELECT, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
			self.toolTip.Show()
		elif stat == 2:
			self.toolTip.ClearToolTip()
			self.toolTip.AlignHorizonalCenter()
			self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_EXIT, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
			self.toolTip.Show()
		elif stat == 3:
			self.toolTip.ClearToolTip()
			self.toolTip.AlignHorizonalCenter()
			self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_DELETE, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
			self.toolTip.Show()
		elif stat == 4:
			self.toolTip.ClearToolTip()
			self.toolTip.AlignHorizonalCenter()
			self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_CREATE, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
			self.toolTip.Show()
		elif stat >= 5 and stat <= 8:
			playTime = net.GetAccountCharacterSlotDataInteger(stat-5, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME)
			guildName = net.GetAccountCharacterSlotDataString(stat-5, net.ACCOUNT_CHARACTER_SLOT_GUILD_NAME)
			
			self.toolTip.ClearToolTip()
			self.toolTip.AlignHorizonalCenter()
			if guildName:
				self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_YES_GUILD % (guildName), grp.GenerateColor(1.0, 1.0, 0.0, 1.0), True)
			else:
				self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_NO_GUILD, grp.GenerateColor(1.0, 1.0, 0.0, 1.0), True)

			self.toolTip.AutoAppendNewTextLine(uiScriptLocale.SELECT_PLAYTIME % (playTime), grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
			self.toolTip.Show()
		elif stat == 9:
			self.toolTip.ClearToolTip()
			self.toolTip.AlignHorizonalCenter()
			self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CREATE_PREV, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
			self.toolTip.Show()
		elif stat == 10:
			self.toolTip.ClearToolTip()
			self.toolTip.AlignHorizonalCenter()
			self.toolTip.AutoAppendNewTextLine(uiScriptLocale.CREATE_NEXT, grp.GenerateColor(1.0, 1.0, 0.0, 1.0))
			self.toolTip.Show()

	def OverOutButton(self):
		self.toolTip.Hide()

	def EmptyFunc(self):
		pass

	def OnPressExitKey(self):
		self.ExitSelect()
		return TRUE

	def OnPressEscapeKey(self):
		self.ExitSelect()
		return TRUE

	def OnKeyDown(self, key): ## On attribué à la touche entré, la validation du personnage 

		if 1 == key:
			self.ExitSelect()
		if 2 == key:
			self.SelectSlot(0)
		if 3 == key:
			self.SelectSlot(1)
		if 4 == key:
			self.SelectSlot(2)

		if 28 == key:

			id = net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID)
			if 0 == id:
				self.CreateCharacter()

			else:
				self.StartGame()
 
		if 203 == key:
			self.slot = (self.GetSlotIndex() - 1 + self.SLOT_COUNT) % self.SLOT_COUNT
			self.SelectSlot(self.slot)
		if 205 == key:
			self.slot = (self.GetSlotIndex() + 1) % self.SLOT_COUNT
			self.SelectSlot(self.slot)

		return TRUE

C'est le fichier par défaut.

Edited by Volkihars (see edit history)

Share this post


Link to post
  • 0

Pour le moment je n'est pas pu lire la totalité,mais est-ce que le # est volontaire ? :

chr.DeleteInstance(0)
chr.DeleteInstance(1)
chr.DeleteInstance(2)
chr.DeleteInstance(3)
#chr.DeleteInstance(4)

 

Share this post


Link to post
  • 0

Très bien, ton erreur arrive quand ? avant ou après la création des personnages ?

As-tu également vérifié dans les autres fichiers que peut utilisé cette interface si quelques chose d'autre n'est pas décommenté ?

Share this post


Link to post
  • 0

Avant, dès que je me log le client se ferme direct.. quand je laisse le fichier par défaut je peut me log également créer mon 5ème personnage mes on le vois pas..

Share this post


Link to post
  • 0

C'est peut être con ce que je vais te dire, mais as tu essayer de faire uniquement ce qu'il y a dans le tuto sans toucher au # ?

Par exemple, enlever le # sur le deleteinstance et ensuite mettre tes lignes dans le Key ?

 

Ceci n'est pas la solution mais juste histoire de voir si ton personnage apparait.

Et le introselect est relié à autre chose ?

Edited by DixN (see edit history)

Share this post


Link to post
  • 0

Ok, bah je testerai ce soir je suis actuellement au taff.. 

 

Je lancerai également le client en mode Débug.. j’afficherai les logs 

Share this post


Link to post
  • 0

Nous ne sommes pas sur un tutoriel Asikoo, a moins que je ne comprenne pas bien ton message.

Tu as peut être confondu avec le tuto de Vanithys

Share this post


Link to post
  • 0

Salut,

 

Ce qu'il veut dire, c'est qu'on ne fait pas de support sur des tutoriels déjà existants.

 

Par contre @Volkihars, tu as remarqué que ton erreur syserr n'a rien à voir avec tout ce qui a été dit ?

 

Citation

       0403 16:36:08355 ::
       introSelect.py(line:493) __LoadBoardDialog
       ui.py(line:2931) GetChild

       SelectCharacterWindow.LoadBoardDialog.BindObject - <type 'exceptions.KeyError'>:'CharacterSlot_4'

       0403 16:36:08356 :: ============================================================================================================
       0403 16:36:08356 :: Abort!!!!

 

Ça veut juste dire que dans ton fichier selectcharacterwindow.py tu n'as pas de clé "CharacterSlot_4".

Vérifie que tu as tout bien rajouté dans ton fichier.

Share this post


Link to post
  • 0

@ASIKOO, J’ai pas fais un copie/coller du tutoriel lol j’avoue c’est pas top sur l’iPhone.. ^^ 

 

@Kameyu, D’accord ! Je regarderai à ça du coup.. je vous tiens informer :)

 

ÉDIT:

 

@Kameyu, J'ai regarder dans uiscript/selectcharacterwindow.py mes je trouve pas comment ajouter une key..

Edited by Volkihars (see edit history)

Share this post


Link to post
  • 0

Bonsoir,

 

Pense également à bien vérifié quel fichiers sont utilisé par ta demande et faire les modifications adéquate.

 

Cordialement,

Share this post


Link to post
  • 0
Sans réponse - Le sujet étant sans réponse ou non résolu, il se voit verrouillé et déplacé dans le forum : Résolu ou sans réponse...

Share this post


Link to post
Guest
This topic is now closed to further replies.
Sign in to follow this  
  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • 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.