Jump to content

Recommended Posts

On 9/22/2016 at 4:43 PM, Legend said:

Can you explain to us about your problem?

He's meaning he can't see sash on the character when he select it (root/introselect.py)

On 9/22/2016 at 5:32 PM, Chris90909090909090 said:

i see sash not in introselect

1) Search in introselect:

Spoiler

def Refresh(self):

1.1) After:

Spoiler

hair = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_HAIR)

1.2) Add:

Spoiler

acce = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ACCE)

2) Search:

Spoiler

self.MakeCharacter(i, id, name, race, form, hair)

2.1) Replace with:

Spoiler

self.MakeCharacter(i, id, name, race, form, hair, acce)

3) Search:

Spoiler

def MakeCharacter

3.1) Replace definition with this:

Spoiler

def MakeCharacter(self, index, id, name, race, form, hair, acce):

4) After this:

Spoiler

chr.SetHair(hair)

*in def MakeCharacter definition*

4.1) Add:

Spoiler

chr.SetAcce(acce)

5) In def SelectSlot definition, after:

Spoiler

hair = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_HAIR)

5.1) add:

Spoiler

acce = net.GetAccountCharacterSlotDataInteger(index, net.ACCOUNT_CHARACTER_SLOT_ACCE)

6) Also there, replace this:

Spoiler

self.MakeCharacter(index, id, name, race, form, hair)

6.1) with this:

Spoiler

self.MakeCharacter(index, id, name, race, form, hair, acce)

Enjoy.

Edited by AlexxD
Complete functions.
  • Metin2 Dev 1

"Don't be a scammer. Don't be a hacker. Don't be a motherfucker. Karma is a bitch"

Link to comment
Share on other sites

16 minutes ago, Chris90909090909090 said:

Post your introselect.py

Edited by Metin2 Dev
Core X - External 2 Internal

"Don't be a scammer. Don't be a hacker. Don't be a motherfucker. Karma is a bitch"

Link to comment
Share on other sites

import chr
import grp
import app
import math
import wndMgr
import snd
import net
import systemSetting
import localeInfo
import chr

import ui
import uiScriptLocale
import networkModule
import playerSettingModule

####################################
# ºü¸¥ ½ÇÇàÀ» À§ÇÑ ¸ðµâ ·Îµù ºÐ´ã
####################################
import uiCommon                    
import uiMapNameShower             
import uiAffectShower              
import uiPlayerGauge               
import uiCharacter                 
import uiTarget                    
import consoleModule               
import interfaceModule             
import uiTaskBar                   
import uiInventory

###################################

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):

    # SLOT4
    #SLOT_ROTATION = ( 140.0, 260.0, 20.0 )    
    #SLOT_COUNT = 3
    SLOT_ROTATION = [144.0,216.0,288.0, 0.0, 72.0, 0,0,0]
    SLOT_COUNT = 8
    CHARACTER_TYPE_COUNT = 5

    EMPIRE_NAME = { 
        net.EMPIRE_A : localeInfo.EMPIRE_A, 
        net.EMPIRE_B : localeInfo.EMPIRE_B, 
        net.EMPIRE_C : localeInfo.EMPIRE_C 
    }

    class CharacterRenderer(ui.Window):
        def OnRender(self):
            grp.ClearDepthBuffer()

            grp.SetGameRenderState()
            grp.PushState()
            grp.SetOmniLight()

            screenWidth = wndMgr.GetScreenWidth()
            screenHeight = wndMgr.GetScreenHeight()
            newScreenWidth = float(screenWidth - 70)
            newScreenHeight = float(screenHeight)

            grp.SetViewport(70.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight)

            app.SetCenterPosition(-15.0, -170.0, -35.0)
            app.SetCamera(1550.0+(2.2*(float(newScreenHeight-600))), 15.0, 180.0, 95.0)
            grp.SetPerspective(11.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.flagDict = {}
        self.curRotation = []
        self.destRotation = []
        for rot in self.SLOT_ROTATION:
            self.curRotation.append(rot)
            self.destRotation.append(rot)

        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
        import constInfo
        constInfo.BANK_PIN = 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
        self.Rotation = 0
        playerSettingModule.LoadGameData("INIT")

        self.InitCharacterBoard()

        self.btnStart.Enable()
        self.btnCreate.Enable()
        self.btnDelete.Enable()
        #self.btnExit.Enable()
        self.btnLeft.Enable()
        self.btnRight.Enable()

        self.dlgBoard.Show()
        self.SetWindowName("SelectCharacterWindow")
        self.Show()

        if self.slot>=0:
            self.SelectSlot(self.slot)

        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.HideAllFlag()
        self.SetEmpire(net.GetEmpireID())

        app.ShowCursor()

    def Close(self):


        self.stream.popupWindow.Close()

        if self.dlgBoard:
            self.dlgBoard.ClearDictionary()

        self.empireName = None
        self.flagDict = {}
        self.dlgBoard = None
        self.btnStart = None
        self.btnCreate = None
        self.btnDelete = None
        #self.btnExit = None
        self.btnLeft = None
        self.btnRight = None
        self.backGround = None

        self.dlgQuestion.ClearDictionary()
        self.dlgQuestion = None
        self.dlgQuestionText = None
        self.dlgQuestionAcceptButton = None
        self.dlgQuestionCancelButton = None
        self.privateInputBoard = None
        self.nameInputBoard = None

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

        self.Hide()
        self.KillFocus()

        app.HideCursor()

    def SetEmpire(self, id):
        #self.empireName.SetText(self.EMPIRE_NAME.get(id, ""))
        if self.flagDict.has_key(id):
            self.flagDict[id].Show()
        
    def HideAllFlag(self):
        for flag in self.flagDict.values():
            flag.Hide()

    def Refresh(self):
        if not self.isLoad:
            return

        # SLOT4
        indexArray = (4, 3, 2, 1, 0)
        id=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID)
        race=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_RACE)
        form=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_FORM)
        name=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_NAME)
        hair=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_HAIR)
        acce = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ACCE)


        if id:
            self.MakeCharacter(i, id, name, race, form, hair, acce)

        self.SelectSlot(self.slot)
    
    def Refresh2(self):
        if not self.isLoad:
            return
        indexArray = (4, 3, 2, 1, 0)
        for i in xrange(8):
            if chr.HasInstance(i):
                chr.DeleteInstance(i)
        # SLOT4
        
        id=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID)
        race=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_RACE)
        form=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_FORM)
        name=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_NAME)
        hair=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_HAIR)
        acce = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ACCE)

        if id:
            self.MakeCharacter(i, id, name, race, form, hair, acce)

    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.charvon        = GetObject("character_txt2")
            self.btnStart        = GetObject("start_button")
            self.btnCreate        = GetObject("create_button")
            self.btnDelete        = GetObject("delete_button")
            #self.btnExit        = GetObject("exit_button")

            self.CharacterName    = GetObject("character_name_value")
            self.CharacterLevel = GetObject("character_level_value")
            #self.PlayTime        = GetObject("character_play_time_value")
            self.CharacterHTH    = GetObject("character_hth")
            self.CharacterINT    = GetObject("character_int")
            self.CharacterSTR    = GetObject("character_str")
            self.CharacterDEX    = GetObject("character_dex")
            
            self.GuildName        = GetObject("GuildName")

            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_shaman"))

            self.GaugeList = []
            self.GaugeList.append(GetObject("gauge_hth"))
            self.GaugeList.append(GetObject("gauge_int"))
            self.GaugeList.append(GetObject("gauge_str"))
            self.GaugeList.append(GetObject("gauge_dex"))

            self.btnLeft = GetObject("left_button")
            self.btnRight = GetObject("right_button")

            #self.empireName = GetObject("EmpireName")
            #self.flagDict[net.EMPIRE_A] = GetObject("EmpireFlag_A")
            #self.flagDict[net.EMPIRE_B] = GetObject("EmpireFlag_B")
            #self.flagDict[net.EMPIRE_C] = GetObject("EmpireFlag_C")

            self.backGround = GetObject("BackGround")
            self.charrend = GetObject("charrend")

        except:
            import exception
            exception.Abort("SelectCharacterWindow.LoadBoardDialog.BindObject")

        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))

        

        if NOT_NEED_DELETE_CODE:
            self.btnDelete.SetEvent(ui.__mem_func__(self.PopupDeleteQuestion))
        else:
            self.btnDelete.SetEvent(ui.__mem_func__(self.InputPrivateCode))

        self.btnLeft.SetEvent(ui.__mem_func__(self.DecreaseSlotIndex))
        self.btnRight.SetEvent(ui.__mem_func__(self.IncreaseSlotIndex))
        
        self.chrRenderer = self.CharacterRenderer()
        self.chrRenderer.SetParent(self.backGround)
        self.chrRenderer.Show()

        return 1

    def MakeCharacter(self, index, id, name, race, form, hair, acce):
        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)

        chr.Refresh()
        chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
        chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)

        chr.SetRotation(0.0)

    ## Manage Character
    def StartGame(self):

        if self.sendedChangeNamePacket:
            return

        if self.changeNameFlag:
            self.OpenChangeNameDialog()
            return

        if -1 != self.startIndex:
            return
        self.btnStart.SetUp()
        self.btnCreate.SetUp()
        self.btnDelete.SetUp()
        #self.btnExit.SetUp()
        self.btnLeft.SetUp()
        self.btnRight.SetUp()

        self.btnStart.Disable()
        self.btnCreate.Disable()
        self.btnDelete.Disable()
        #self.btnExit.Disable()
        self.btnLeft.Disable()
        self.btnRight.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):
        id = self.GetCharacterSlotID(self.slot)
        if 0==id:
            self.stream.SetCharacterSlot(self.slot)

            EMPIRE_MODE = 1

            if EMPIRE_MODE:
                if self.__AreAllSlotEmpty():
                    self.stream.SetReselectEmpirePhase()
                else:
                    self.stream.SetCreateCharacterPhase()

            else:
                self.stream.SetCreateCharacterPhase()

    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)

    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 GetSlotIndex(self):
        return self.slot

    def DecreaseSlotIndex(self):
        slotIndex = (self.GetSlotIndex() - 1 + self.SLOT_COUNT) % self.SLOT_COUNT
        self.SelectSlot(slotIndex)

    def IncreaseSlotIndex(self):
        slotIndex = (self.GetSlotIndex() + 1) % self.SLOT_COUNT
        self.SelectSlot(slotIndex)

    def SelectSlot(self, index):
        if index < 0:
            return
        if index >= self.SLOT_COUNT:
            return

        self.slot = index
        self.Refresh2()
        
        self.charvon.SetText(str(self.slot+1) + "       8")

        chr.SelectInstance(self.slot)

        for i in xrange(self.CHARACTER_TYPE_COUNT):
            self.destNameAlpha = 0.0

        for i in xrange(self.SLOT_COUNT):
            self.destRotation[(i+self.slot)%self.SLOT_COUNT] = self.SLOT_ROTATION

        self.destGauge = [0.0, 0.0, 0.0, 0.0, 0.0]

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

            self.btnStart.Enable()
            self.btnDelete.Enable()
            self.btnCreate.Disable()

            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.CharacterName.SetText(name)
            self.CharacterLevel.SetText(str(level))

            #self.PlayTime.SetText(str(playTime))
            self.CharacterHTH.SetText("Vitalitat(" + str(valueHTH) + "):")
            self.CharacterINT.SetText("Intelligenz(" + str(valueINT) + "):")
            self.CharacterSTR.SetText("Starke(" + str(valueSTR) + "):")
            self.CharacterDEX.SetText("Beweglichkeit(" + str(valueDEX) + "):")

            if guildName:
                self.GuildName.SetText(guildName)
            else:
                self.GuildName.SetText(localeInfo.SELECT_NOT_JOIN_GUILD)

            statesSummary = float(valueHTH + valueINT + valueSTR + valueDEX)
            if statesSummary > 0.0:
                self.destGauge =    [
                                        float(valueHTH) / statesSummary,
                                        float(valueINT) / statesSummary,
                                        float(valueSTR) / statesSummary,
                                        float(valueDEX) / statesSummary
                                    ]

        else:

            self.InitCharacterBoard()

    def InitCharacterBoard(self):

        self.btnStart.Disable()
        self.btnDelete.Disable()
        self.btnCreate.Enable()

        self.CharacterName.SetText("")
        self.CharacterLevel.SetText("")
        #self.PlayTime.SetText("")
        self.CharacterHTH.SetText("")
        self.CharacterINT.SetText("")
        self.CharacterSTR.SetText("")
        self.CharacterDEX.SetText("")
        self.GuildName.SetText(localeInfo.SELECT_NOT_JOIN_GUILD)

    ## 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

    def OnUpdate(self):
        chr.Update()
        self.Rotation = self.Rotation - 0.5
        chr.SetRotation(self.Rotation)

        for i in xrange(4):
            self.curGauge += (self.destGauge - self.curGauge) / 10.0
            if abs(self.curGauge - self.destGauge) < 0.005:
                self.curGauge = self.destGauge
            self.GaugeList.SetPercentage(self.curGauge, 1.0)

        for i in xrange(self.CHARACTER_TYPE_COUNT):
            self.curNameAlpha += (self.destNameAlpha - self.curNameAlpha) / 10.0
            if len(self.NameList) > i:
                self.NameList.SetAlpha(self.curNameAlpha)

        #for i in xrange(self.SLOT_COUNT):
        #
        #    if FALSE == chr.HasInstance(i):
        #        continue
        #
        #    chr.SelectInstance(i)
        #
        #    distance = 50.0
        #    rotRadian = self.destRotation * (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)
        #
        #    #####
        #
        #    dir = app.GetRotatingDirection(self.destRotation, self.curRotation)
        #    rot = app.GetDegreeDifference(self.destRotation, self.curRotation)
        #
        #    if app.DEGREE_DIRECTION_RIGHT == dir:
        #        self.curRotation += rot / 10.0
        #    elif app.DEGREE_DIRECTION_LEFT == dir:
        #        self.curRotation -= rot / 10.0
        #
        #    self.curRotation = (self.curRotation + 360.0) % 360.0

        #######################################################
        if -1 != self.startIndex:

            ## Temporary
            ## BackGroundLoadingÀÌ Áö¿ø µÉ¶§±îÁö Àӽ÷Î..
            if app.GetTime() - self.startReservingTime > 3.0:
                if FALSE == self.openLoadingFlag:
                    chrSlot=self.stream.GetCharacterSlot()
                    net.DirectEnter(chrSlot)
                    self.openLoadingFlag = TRUE

                    playTime=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME)

                    import player
                    player.SetPlayTime(playTime)
                    import chat
                    chat.Clear() ## µé¾î°¥¶§ Chat À» ÃʱâÈ­. Àӽà Pos.
            ## Temporary
        #######################################################

    def EmptyFunc(self):
        pass

    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 OnPressExitKey(self):
        self.ExitSelect()
        return TRUE

Link to comment
Share on other sites

1 minute ago, Chris90909090909090 said:
Spoiler

 

import chr
import grp
import app
import math
import wndMgr
import snd
import net
import systemSetting
import localeInfo
import chr

import ui
import uiScriptLocale
import networkModule
import playerSettingModule

####################################
# ºü¸¥ ½ÇÇàÀ» À§ÇÑ ¸ðµâ ·Îµù ºÐ´ã
####################################
import uiCommon                    
import uiMapNameShower             
import uiAffectShower              
import uiPlayerGauge               
import uiCharacter                 
import uiTarget                    
import consoleModule               
import interfaceModule             
import uiTaskBar                   
import uiInventory

###################################

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):

    # SLOT4
    #SLOT_ROTATION = ( 140.0, 260.0, 20.0 )    
    #SLOT_COUNT = 3
    SLOT_ROTATION = [144.0,216.0,288.0, 0.0, 72.0, 0,0,0]
    SLOT_COUNT = 8
    CHARACTER_TYPE_COUNT = 5

    EMPIRE_NAME = { 
        net.EMPIRE_A : localeInfo.EMPIRE_A, 
        net.EMPIRE_B : localeInfo.EMPIRE_B, 
        net.EMPIRE_C : localeInfo.EMPIRE_C 
    }

    class CharacterRenderer(ui.Window):
        def OnRender(self):
            grp.ClearDepthBuffer()

            grp.SetGameRenderState()
            grp.PushState()
            grp.SetOmniLight()

            screenWidth = wndMgr.GetScreenWidth()
            screenHeight = wndMgr.GetScreenHeight()
            newScreenWidth = float(screenWidth - 70)
            newScreenHeight = float(screenHeight)

            grp.SetViewport(70.0/screenWidth, 0.0, newScreenWidth/screenWidth, newScreenHeight/screenHeight)

            app.SetCenterPosition(-15.0, -170.0, -35.0)
            app.SetCamera(1550.0+(2.2*(float(newScreenHeight-600))), 15.0, 180.0, 95.0)
            grp.SetPerspective(11.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.flagDict = {}
        self.curRotation = []
        self.destRotation = []
        for rot in self.SLOT_ROTATION:
            self.curRotation.append(rot)
            self.destRotation.append(rot)

        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
        import constInfo
        constInfo.BANK_PIN = 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
        self.Rotation = 0
        playerSettingModule.LoadGameData("INIT")

        self.InitCharacterBoard()

        self.btnStart.Enable()
        self.btnCreate.Enable()
        self.btnDelete.Enable()
        #self.btnExit.Enable()
        self.btnLeft.Enable()
        self.btnRight.Enable()

        self.dlgBoard.Show()
        self.SetWindowName("SelectCharacterWindow")
        self.Show()

        if self.slot>=0:
            self.SelectSlot(self.slot)

        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.HideAllFlag()
        self.SetEmpire(net.GetEmpireID())

        app.ShowCursor()

    def Close(self):


        self.stream.popupWindow.Close()

        if self.dlgBoard:
            self.dlgBoard.ClearDictionary()

        self.empireName = None
        self.flagDict = {}
        self.dlgBoard = None
        self.btnStart = None
        self.btnCreate = None
        self.btnDelete = None
        #self.btnExit = None
        self.btnLeft = None
        self.btnRight = None
        self.backGround = None

        self.dlgQuestion.ClearDictionary()
        self.dlgQuestion = None
        self.dlgQuestionText = None
        self.dlgQuestionAcceptButton = None
        self.dlgQuestionCancelButton = None
        self.privateInputBoard = None
        self.nameInputBoard = None

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

        self.Hide()
        self.KillFocus()

        app.HideCursor()

    def SetEmpire(self, id):
        #self.empireName.SetText(self.EMPIRE_NAME.get(id, ""))
        if self.flagDict.has_key(id):
            self.flagDict[id].Show()
        
    def HideAllFlag(self):
        for flag in self.flagDict.values():
            flag.Hide()

    def Refresh(self):
        if not self.isLoad:
            return

        # SLOT4
        indexArray = (4, 3, 2, 1, 0)
        id=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID)
        race=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_RACE)
        form=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_FORM)
        name=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_NAME)
        hair=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_HAIR)
        acce = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ACCE)


        if id:
            self.MakeCharacter(i, id, name, race, form, hair, acce)

        self.SelectSlot(self.slot)
    
    def Refresh2(self):
        if not self.isLoad:
            return
        indexArray = (4, 3, 2, 1, 0)
        for i in xrange(8):
            if chr.HasInstance(i):
                chr.DeleteInstance(i)
        # SLOT4
        
        id=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_ID)
        race=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_RACE)
        form=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_FORM)
        name=net.GetAccountCharacterSlotDataString(self.slot, net.ACCOUNT_CHARACTER_SLOT_NAME)
        hair=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_HAIR)
        acce = net.GetAccountCharacterSlotDataInteger(i, net.ACCOUNT_CHARACTER_SLOT_ACCE)

        if id:
            self.MakeCharacter(i, id, name, race, form, hair, acce)

    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.charvon        = GetObject("character_txt2")
            self.btnStart        = GetObject("start_button")
            self.btnCreate        = GetObject("create_button")
            self.btnDelete        = GetObject("delete_button")
            #self.btnExit        = GetObject("exit_button")

            self.CharacterName    = GetObject("character_name_value")
            self.CharacterLevel = GetObject("character_level_value")
            #self.PlayTime        = GetObject("character_play_time_value")
            self.CharacterHTH    = GetObject("character_hth")
            self.CharacterINT    = GetObject("character_int")
            self.CharacterSTR    = GetObject("character_str")
            self.CharacterDEX    = GetObject("character_dex")
            
            self.GuildName        = GetObject("GuildName")

            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_shaman"))

            self.GaugeList = []
            self.GaugeList.append(GetObject("gauge_hth"))
            self.GaugeList.append(GetObject("gauge_int"))
            self.GaugeList.append(GetObject("gauge_str"))
            self.GaugeList.append(GetObject("gauge_dex"))

            self.btnLeft = GetObject("left_button")
            self.btnRight = GetObject("right_button")

            #self.empireName = GetObject("EmpireName")
            #self.flagDict[net.EMPIRE_A] = GetObject("EmpireFlag_A")
            #self.flagDict[net.EMPIRE_B] = GetObject("EmpireFlag_B")
            #self.flagDict[net.EMPIRE_C] = GetObject("EmpireFlag_C")

            self.backGround = GetObject("BackGround")
            self.charrend = GetObject("charrend")

        except:
            import exception
            exception.Abort("SelectCharacterWindow.LoadBoardDialog.BindObject")

        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))

        

        if NOT_NEED_DELETE_CODE:
            self.btnDelete.SetEvent(ui.__mem_func__(self.PopupDeleteQuestion))
        else:
            self.btnDelete.SetEvent(ui.__mem_func__(self.InputPrivateCode))

        self.btnLeft.SetEvent(ui.__mem_func__(self.DecreaseSlotIndex))
        self.btnRight.SetEvent(ui.__mem_func__(self.IncreaseSlotIndex))
        
        self.chrRenderer = self.CharacterRenderer()
        self.chrRenderer.SetParent(self.backGround)
        self.chrRenderer.Show()

        return 1

    def MakeCharacter(self, index, id, name, race, form, hair, acce):
        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)

        chr.Refresh()
        chr.SetMotionMode(chr.MOTION_MODE_GENERAL)
        chr.SetLoopMotion(chr.MOTION_INTRO_WAIT)

        chr.SetRotation(0.0)

    ## Manage Character
    def StartGame(self):

        if self.sendedChangeNamePacket:
            return

        if self.changeNameFlag:
            self.OpenChangeNameDialog()
            return

        if -1 != self.startIndex:
            return
        self.btnStart.SetUp()
        self.btnCreate.SetUp()
        self.btnDelete.SetUp()
        #self.btnExit.SetUp()
        self.btnLeft.SetUp()
        self.btnRight.SetUp()

        self.btnStart.Disable()
        self.btnCreate.Disable()
        self.btnDelete.Disable()
        #self.btnExit.Disable()
        self.btnLeft.Disable()
        self.btnRight.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):
        id = self.GetCharacterSlotID(self.slot)
        if 0==id:
            self.stream.SetCharacterSlot(self.slot)

            EMPIRE_MODE = 1

            if EMPIRE_MODE:
                if self.__AreAllSlotEmpty():
                    self.stream.SetReselectEmpirePhase()
                else:
                    self.stream.SetCreateCharacterPhase()

            else:
                self.stream.SetCreateCharacterPhase()

    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)

    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 GetSlotIndex(self):
        return self.slot

    def DecreaseSlotIndex(self):
        slotIndex = (self.GetSlotIndex() - 1 + self.SLOT_COUNT) % self.SLOT_COUNT
        self.SelectSlot(slotIndex)

    def IncreaseSlotIndex(self):
        slotIndex = (self.GetSlotIndex() + 1) % self.SLOT_COUNT
        self.SelectSlot(slotIndex)

    def SelectSlot(self, index):
        if index < 0:
            return
        if index >= self.SLOT_COUNT:
            return

        self.slot = index
        self.Refresh2()
        
        self.charvon.SetText(str(self.slot+1) + "       8")

        chr.SelectInstance(self.slot)

        for i in xrange(self.CHARACTER_TYPE_COUNT):
            self.destNameAlpha = 0.0

        for i in xrange(self.SLOT_COUNT):
            self.destRotation[(i+self.slot)%self.SLOT_COUNT] = self.SLOT_ROTATION

        self.destGauge = [0.0, 0.0, 0.0, 0.0, 0.0]

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

            self.btnStart.Enable()
            self.btnDelete.Enable()
            self.btnCreate.Disable()

            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.CharacterName.SetText(name)
            self.CharacterLevel.SetText(str(level))

            #self.PlayTime.SetText(str(playTime))
            self.CharacterHTH.SetText("Vitalitat(" + str(valueHTH) + "):")
            self.CharacterINT.SetText("Intelligenz(" + str(valueINT) + "):")
            self.CharacterSTR.SetText("Starke(" + str(valueSTR) + "):")
            self.CharacterDEX.SetText("Beweglichkeit(" + str(valueDEX) + "):")

            if guildName:
                self.GuildName.SetText(guildName)
            else:
                self.GuildName.SetText(localeInfo.SELECT_NOT_JOIN_GUILD)

            statesSummary = float(valueHTH + valueINT + valueSTR + valueDEX)
            if statesSummary > 0.0:
                self.destGauge =    [
                                        float(valueHTH) / statesSummary,
                                        float(valueINT) / statesSummary,
                                        float(valueSTR) / statesSummary,
                                        float(valueDEX) / statesSummary
                                    ]

        else:

            self.InitCharacterBoard()

    def InitCharacterBoard(self):

        self.btnStart.Disable()
        self.btnDelete.Disable()
        self.btnCreate.Enable()

        self.CharacterName.SetText("")
        self.CharacterLevel.SetText("")
        #self.PlayTime.SetText("")
        self.CharacterHTH.SetText("")
        self.CharacterINT.SetText("")
        self.CharacterSTR.SetText("")
        self.CharacterDEX.SetText("")
        self.GuildName.SetText(localeInfo.SELECT_NOT_JOIN_GUILD)

    ## 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

    def OnUpdate(self):
        chr.Update()
        self.Rotation = self.Rotation - 0.5
        chr.SetRotation(self.Rotation)

        for i in xrange(4):
            self.curGauge += (self.destGauge - self.curGauge) / 10.0
            if abs(self.curGauge - self.destGauge) < 0.005:
                self.curGauge = self.destGauge
            self.GaugeList.SetPercentage(self.curGauge, 1.0)

        for i in xrange(self.CHARACTER_TYPE_COUNT):
            self.curNameAlpha += (self.destNameAlpha - self.curNameAlpha) / 10.0
            if len(self.NameList) > i:
                self.NameList.SetAlpha(self.curNameAlpha)

        #for i in xrange(self.SLOT_COUNT):
        #
        #    if FALSE == chr.HasInstance(i):
        #        continue
        #
        #    chr.SelectInstance(i)
        #
        #    distance = 50.0
        #    rotRadian = self.destRotation * (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)
        #
        #    #####
        #
        #    dir = app.GetRotatingDirection(self.destRotation, self.curRotation)
        #    rot = app.GetDegreeDifference(self.destRotation, self.curRotation)
        #
        #    if app.DEGREE_DIRECTION_RIGHT == dir:
        #        self.curRotation += rot / 10.0
        #    elif app.DEGREE_DIRECTION_LEFT == dir:
        #        self.curRotation -= rot / 10.0
        #
        #    self.curRotation = (self.curRotation + 360.0) % 360.0

        #######################################################
        if -1 != self.startIndex:

            ## Temporary
            ## BackGroundLoadingÀÌ Áö¿ø µÉ¶§±îÁö Àӽ÷Î..
            if app.GetTime() - self.startReservingTime > 3.0:
                if FALSE == self.openLoadingFlag:
                    chrSlot=self.stream.GetCharacterSlot()
                    net.DirectEnter(chrSlot)
                    self.openLoadingFlag = TRUE

                    playTime=net.GetAccountCharacterSlotDataInteger(self.slot, net.ACCOUNT_CHARACTER_SLOT_PLAYTIME)

                    import player
                    player.SetPlayTime(playTime)
                    import chat
                    chat.Clear() ## µé¾î°¥¶§ Chat À» ÃʱâÈ­. Àӽà Pos.
            ## Temporary
        #######################################################

    def EmptyFunc(self):
        pass

    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 OnPressExitKey(self):
        self.ExitSelect()
        return TRUE

 

 

Don't copy.. upload it somewhere or give me it full, .py file

"Don't be a scammer. Don't be a hacker. Don't be a motherfucker. Karma is a bitch"

Link to comment
Share on other sites

  • 1 month later...
  • Active Member

Hey guys I have the same problem with my acce system when I first enter the introselect mode the sash is not on the character but after a relog the sash is visible so the problem is only on first time. I compared the py given but the acce records are the same... Could be something else?

Link to comment
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

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.