Jump to content

AlexxD

Inactive Member
  • Posts

    161
  • Joined

  • Last visited

  • Days Won

    1
  • Feedback

    0%

Posts posted by AlexxD

  1. Hi all, so I've implemented today Active Slot Effect for DS Button in inventory, but I have small image of DS Button, and it's highlighting for big button, as in:

    IMAGE

    I tried to change 

    DSSButtonEffect.SetPosition(3.2, 0)
    
    DSSButtonEffect.AppendSlot(0, 0, 0, 32, 32)
    
    to
    
    DSSButtonEffect.SetPosition(0.8, 0)
    
    DSSButtonEffect.AppendSlot(0, 0, 0, 8, 8)

    but no effect.. can someone explain me why is showing like that and how to fix?

  2. On 12/24/2016 at 7:01 PM, Germais said:

    It's been quite a while for now that i can't figure out the cause of this problem,
    As you can see in the gif below, the added bonuses to the sash stay on top of the base bonuses which is a big problem for the certificate of reversal (sash bonus removal), plus it looks ugly.

    Now i've been looking around and it looks like it may be comming from the item_proto itself because when I use my older version of the proto it shows up correctly. I do think it's a problem with the dump_proto, maybe the structure is not right, so I went to check and i think everything looks fine for the sash, besides the only thing that need to be on the item read is COSTUME_ACCE and WEAR_COSTUME_ACCE.

    If anyone askes for it, here is my dump_proto.cpp(http://pastebin.com/XuqV0SXQ), ItemCSVReader.cpp(http://pastebin.com/FQjnrVe4) and here is the structure of my item_proto(http://pastebin.com/sSj9fKdX).

    OZ46gtY.gif

    By the way, I also thought it could be a problem with the uitooltip.py from the client so I went to take a look at everything seems fine...

    Any guesses on the cause feel free to comment, thanks in advance.

    """"""
    #1) Search: def __AppendAttributeInformation(self, attrSlot):
    #2) After their function make a new line and paste:
    	def __AppendAcceAttributeInformation(self, attrSlot):
    		if 0 != attrSlot:
    			hasAttack = 0
    			hasMagicAttack = 0
    			minPower = 0
    			maxPower = 0
    			minMagicAttackPower = 0
    			maxMagicAttackPower = 0
    			
    			for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
    				if i <= 6:
    					continue
    				else:
    					type = attrSlot[i][0]
    					value = attrSlot[i][1]
    					if 0 == value:
    						continue
    					
    					if type == 53 and i == 8:
    						hasAttack = 1
    						minPower = value
    					elif type == 53 and i == 9:
    						hasAttack = 1
    						maxPower = value
    					elif type == 55 and i == 10:
    						hasMagicAttack = 1
    						minMagicAttackPower = value
    					elif type == 55 and i == 11:
    						hasMagicAttack = 1
    						maxMagicAttackPower = value
    			
    			if hasAttack == 1:
    				self.__AppendAttackAccePowerInfo(minPower, maxPower)
    			
    			if hasMagicAttack == 1:
    				self.__AppendMagicAttackAcceInfo(minMagicAttackPower, maxMagicAttackPower)
    			
    			for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
    				if i <= 6 or i >= 8 and i <= 11:
    					continue
    				else:
    					type = attrSlot[i][0]
    					value = attrSlot[i][1]
    					if 0 == value:
    						continue
    					
    					affectString = self.__GetAffectString(type, value)
    					if affectString:
    						affectColor = self.__GetAttributeColor(i, value)
    						self.AppendTextLine(affectString, affectColor)
    			
    			for i in xrange(player.ATTRIBUTE_SLOT_MAX_NUM):
    				if i >= 7:
    					continue
    				else:
    					type = attrSlot[i][0]
    					value = attrSlot[i][1]
    					if 0 == value:
    						continue
    					
    					affectString = self.__GetAffectString(type, value)
    					if affectString:
    						affectColor = self.__GetAttributeColor(i, value)
    						self.AppendTextLine(affectString, affectColor)
    
    	def __AppendAttackAccePowerInfo(self, minPower, maxPower):
    		minPower_final = minPower
    		maxPower_final = maxPower
    		if maxPower > minPower:
    			self.AppendTextLine(localeInfo.TOOLTIP_ITEM_ATT_POWER % (minPower_final, maxPower_final), self.POSITIVE_COLOR)
    		else:
    			self.AppendTextLine(localeInfo.TOOLTIP_ITEM_ATT_POWER_ONE_ARG % (minPower_final), self.POSITIVE_COLOR)
    
    	def __AppendMagicAttackAcceInfo(self, minMagicAttackPower, maxMagicAttackPower):
    		minMagicAttackPower_final = minMagicAttackPower
    		maxMagicAttackPower_final = maxMagicAttackPower
    		if minMagicAttackPower_final > 0 or maxMagicAttackPower_final > 0:
    			if maxMagicAttackPower_final > minMagicAttackPower_final:
    				self.AppendTextLine(localeInfo.TOOLTIP_ITEM_MAGIC_ATT_POWER % (minMagicAttackPower_final, maxMagicAttackPower_final), self.POSITIVE_COLOR)
    			else:
    				self.AppendTextLine(localeInfo.TOOLTIP_ITEM_MAGIC_ATT_POWER_ONE_ARG % (minMagicAttackPower_final), self.POSITIVE_COLOR)
    """"""
    
    """"""
    #1) Search: def __GetAttributeColor(self, index, value):
    #2) Delete their function and paste:
    	def __GetAttributeColor(self, index, value):
    		if value > 0:
    			if index >= 5 and index <= 6:
    				return self.SPECIAL_POSITIVE_COLOR2
    			elif index >= 7:
    				return self.POSITIVE_COLOR
    			else:
    				return self.SPECIAL_POSITIVE_COLOR
    		elif value == 0:
    			return self.NORMAL_COLOR
    		else:
    			return self.NEGATIVE_COLOR
    """"""
    
    """"""
    #1) Search: isCostumeBody = 0
    #2) Make a new line and paste:
    isCostumeAcce = 0
    """"""
    
    """"""
    #1) Search: isCostumeBody = item.COSTUME_TYPE_BODY == itemSubType
    #2) Make a new line and paste:
    isCostumeAcce = item.COSTUME_TYPE_ACCE == itemSubType
    """"""
    
    """"""
    #1) Search: elif 0 != isCostumeItem:
    #2) Delete their function and paste:
    		elif 0 != isCostumeItem:
    			self.__AppendLimitInformation()
    			self.__AppendAffectInformation()
    			if isCostumeAcce != 0:
    				self.__AppendAcceAttributeInformation(attrSlot)
    			else:
    				self.__AppendAttributeInformation(attrSlot)
    			
    			self.AppendWearableInformation()
    			bHasRealtimeFlag = 0
    			for i in xrange(item.LIMIT_MAX_NUM):
    				(limitType, limitValue) = item.GetLimit(i)
    				if item.LIMIT_REAL_TIME == limitType:
    					bHasRealtimeFlag = 1
    			
    			if 1 == bHasRealtimeFlag:
    				self.AppendMallItemLastTime(metinSlot[0])
    			
    			if isCostumeAcce != 0:
    				if metinSlot != 0:
    					absChance = int(metinSlot[1])
    					if absChance > 0:
    						self.AppendSpace(5)
    						self.AppendTextLine(localeInfo.ACCE_ABSORB_CHANCE % (absChance), self.CONDITION_COLOR)
    """"""
                      
    edit for your files where you need

     

    • Love 1
  3. 36 minutes ago, Kunoji said:

    Hello! I have a problems with:
    a) Login Interface, Character Select Interface etc.
    I installed interface from this link:
     

    
    http://www.elitepvpers.com/forum/metin2-pserver-designs-websites-scripts/3409632-release-code-zum-interface-von-feistygraphic.html

    And I have an error. All it's okay, but client crash after logging. 

    Sysser:

    
    1214 17:34:07089 :: 
    networkModule.py(line:200) SetSelectCharacterPhase
    system.py(line:130) __pack_import
    system.py(line:110) _process_result
    introSelect.py(line:9) ?
    system.py(line:137) __pack_import
    
    networkModule.SetSelectCharacterPhase - exceptions.ImportError:No module named localeInfo
    
    1214 17:34:07089 :: ============================================================================================================
    1214 17:34:07089 :: Abort!!!!
    
    

    B )
    With in-game interface from this link:
     

    
    http://www.elitepvpers.com/forum/metin2-pserver-designs-websites-scripts/3578220-2015-client-interface.html

    All is ok, but when I readed a mission interface disappears and i can't run, walk etc.

    Sorry for my bad English, but I'm from Poland :)
    Greetings

    Here:

    introSelect.py(line:9) ?

    At line 9 from introSelect.py you have localeInfo, replace with

    locale

    PS: Replace all localeInfo with locale

  4. On 13.12.2016 at 0:09 PM, EnKor said:

    Hi there.

    my sys error has to many of this error:

    SYSERR: Dec 14 10:01:41 :: Process: UNKNOWN HEADER: 9, LAST HEADER: 254(2), REMAIN BYTES: 8, fd: 19
     

    but with diferente headers.

    i have search a lot. and people say its because diferent pachet.h client/server.

     

    i realy dont know how to solve this. can any one help me please. i upload pachet.h from server/client

    This is the hidden content, please

     

     

     

    edit:

     

    and hot to solve this warnings in client Source from cryptopp

      Reveal hidden contents
    
    
    ../../../Extern/include/cryptopp/cryptlib.h: In member function 'bool CryptoPP::NameValuePairs::GetValue(const char*, T&) const [with T = std::string]':
    ../../../Extern/include/cryptopp/cryptlib.h:277:   instantiated from here
    ../../../Extern/include/cryptopp/cryptlib.h:264: warning: dereferencing type-punned pointer will break strict-aliasing rules
    ../../../Extern/include/cryptopp/cryptlib.h: In member function 'bool CryptoPP::NameValuePairs::GetValue(const char*, T&) const [with T = int]':
    ../../../Extern/include/cryptopp/cryptlib.h:283:   instantiated from here

     

    please.

     

    Take a look here:

     

    HEADER_CG_DIRECT_ENTER = 9

    it's in your binary. Search everything that have a connection with this header.

     

  5. On 02.12.2016 at 3:08 AM, Gmmetinero said:

    I have this error when I creating the client source

    
    Error    83    error LNK2001:  external symbol "public: int __thiscall CPythonShop::GetOfflineShopItemPriceCheque(struct SItemPos)" (?GetOfflineShopItemPriceCheque@CPythonShop@@QAEHUSItemPos@@@Z)  without resolving   C:\Users\Administrador\Desktop\Cliente\vs_files\UserInterface\PythonShop.obj    UserInterface
    
    Error    84    error LNK1120:  1 external unresolved     C:\Users\Administrador\Desktop\Cliente\binary\Metin2Release.exe    UserInterface

    Thanks for advance

    You have a problem here:
     

    CPythonShop::GetOfflineShopItemPriceCheque

    Search it and take a look at

    SItemPos

    and see if you have something like "won" there

  6. 17 minutes ago, icewolf said:

    Hi Everyone 

    i have a big problem with my FreeBSD 

     

    i cant Write "root" or the password 

     

    and the FileZilla + Putty does'nt work because i don't have the IP from FreeBSD :(

     

    this problem came when my computer sadnly  shutdown 

    p_343g8ypy1.jpg

    When i try to Write "root"

    it's give me this error

    p_3438vzeb1.jpg

     

    Please guy's i have no Packup for my files :(

    Restart your vdi and when this occurs:

    Enter full pathname of shell or RETURN for /bin/sh.

    1) Press ENTER and after write on console:
     

    fsck -y

    1.1) Press ENTER and after the system finished scanning your HDD, write:

    shutdown -r now

    for a restart. I think this will help you.

    • Love 2
  7. On 10/14/2016 at 11:14 PM, filipw1 said:

     

      Reveal hidden contents

    1014_220130.jpg1014_220517.jpg

    Works fine. The reason of game crashes is in a input_main.cpp.

    Replace that function:
    http://pastebin.com/xAyqSn4T

    And then in uiprivateshopsearch.py in your root change these functions:
    http://pastebin.com/7d2Dw4MD

    Now it will be fine (for me it's fine :D)

    If you're doing this, shoulders won't be found so perfectly, and then the bugs will appear, because an acce has 15 bonuses, but the system reads only 7, so the players won't see the full bonuses on it.

  8. 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

  9. 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.

    • Metin2 Dev 1
  10. 7 hours ago, TheJacob said:

    Yes, I use my binary... But why If i have effect.eix/epk (size 3 633kb) and extract and now compile size is 3 541kb...

    What can I to do to use repacked original files and launch game?

    I really don't know how to explain that, but your crypter have different resources and different files in there. Original crypter from Ymir, it's from their own source, so I do not think that files are different, just the way is crypted.

     

    • Love 1
  11. 3 hours ago, TheJacob said:

    Hallo,

    I need help repack metin2 files...

    I have official client metin2 (2014/2015) i change root.eix/epk and libs... and start. All successful run. If I extract effect.eix/epk and compile(package) to effect.eix/epk and run client error if I login...

    What i make bad? This isnt only effect, but PC, PC2, Monster2.... Where is error? Compiler?

     

    I need repack all official files...

     

    Thx for any help. TheJacob

    I guess you're using your own binary, right? If you're not, then, official launcher just read the original size of these files or CRC, or anything else to crypt that datas. So, it'll not be working.

  12. 23 minutes ago, Alcatraz ツ said:

    Hi Guys,

    I have a question and although I wanted to introduce a new system options that you can choose whether to have day or night. I ever was tried but so far nothing works. When I click Sysmteoption closes my client and I get an error. The syserr I write purely down. If anyone can help me please send me a PN.

    Thank you very much.

     

      Hide contents
    
    
    0414 18:18:27713 :: CEffectManager::RegisterEffect - LoadScript(effekte/tweet.mse) Error
    0414 18:18:27714 :: CInstanceBase::RegisterEffect(eEftType=121, c_szEftAttachBone=Bip01, c_szEftName=effekte/tweet.mse, isCache=0) - Error
    0414 18:18:27727 :: CTextFileLoader::LoadGroup : must have a value (filename: D:/ymir work/pc/common/effect/armor/duest1.dds line: 2 key: aÿï)
    0414 18:18:28601 :: CTextFileLoader::LoadGroup : must have a value (filename: d:/ymir work/guild/effect/yongsinuipi_make.mse line: 0 key: )
    0414 18:18:28617 :: CTextFileLoader::LoadGroup : must have a value (filename: d:/ymir work/guild/effect/yongsinuichukbok_make.mse line: 0 key: )
    0414 18:18:28627 :: CTextFileLoader::LoadGroup : must have a value (filename: d:/ymir work/guild/effect/seonghwigap_make.mse line: 0 key: )
    0414 18:18:28637 :: CTextFileLoader::LoadGroup : must have a value (filename: d:/ymir work/guild/effect/gasokhwa_make.mse line: 0 key: )
    0414 18:18:28646 :: CTextFileLoader::LoadGroup : must have a value (filename: d:/ymir work/guild/effect/yongsinuibunno_make.mse line: 0 key: )
    0414 18:18:28656 :: CTextFileLoader::LoadGroup : must have a value (filename: d:/ymir work/guild/effect/jumunsul_make.mse line: 0 key: )
    0414 18:18:43493 :: Unknown Server Command AfkButton 86 | AfkButton
    0414 18:18:58334 :: 
    uiGameOption.py(line:94) __Load_BindObject
    
    OptionDialog.__Load_BindObject - <type 'exceptions.AttributeError'>:'OptionDialog' object has no attribute 'ModusTagTextButtonList'
    
    0414 18:18:58334 :: ============================================================================================================
    0414 18:18:58334 :: Abort!!!!
    
    
    0414 18:18:58335 :: 
    uiSystem.py(line:66) __ClickSystemButton
    uiGameOption.py(line:28) __init__
    uiGameOption.py(line:115) __Load
    uiGameOption.py(line:106) __Load_BindObject
    exception.py(line:36) Abort
    
    SystemDialog.__LoadSystem.__ClickSystemButton - <type 'exceptions.SystemExit'>:
    
    0414 18:18:58335 :: ============================================================================================================
    0414 18:18:58335 :: Abort!!!!

     

    Look at this problem:

    Spoiler

    OptionDialog.__Load_BindObject - <type 'exceptions.AttributeError'>:'OptionDialog' object has no attribute 'ModusTagTextButtonList'

    your python files reads module

    Spoiler

    'ModusTagTextButtonList'

    but this module DOES NOT exist in uiscript files, so you can't enter in those menus.

  13. 34 minutes ago, TyWin said:

    Hello everyone. I want to ask if you can edit one thing, that actually "hurts" me right now ^^.

    Costume_mount works for me good but I have only 1 trouble with it. When I attack I can't ride it. It's like older version of mounts on Metin2 official.

    Can someone help me with removing this blockation? 

    Image: https://metin2.download/picture/l9PH6Z0s7JgPPT1Z3uJSgg9swwOMEeBN/.png

    Somehow, that mounts, Dragor, in your case, I think, in the past they had ITEM_QUEST type, and then, you don't have to equip them in inventory slots. Now, you have ITEM_COSTUME type, costumes needs to be in inventory. So, if you are on floor and you attack anything, you CAN NOT equip the mount untill you'll stop attacking.

  14. 4 minutes ago, stevenmelis said:

    Thank you. Nice support

    Example in item_proto, with bonuses:

    Spoiler

    71143    ÇŕşąŔÇ ąÝÁö    ITEM_RING    0    1    ANTI_DROP | ANTI_STACK    NONE    WEAR_SHIELD    NONE    0    0    0    0    0    REAL_TIME    604800    LIMIT_NONE    0    APPLY_ATT_GRADE_BONUS    150    APPLY_DEF_GRADE_BONUS    150    APPLY_MAX_HP    1800    0    0    0    0    0    0    0    0    0

     

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