Jump to content

DemOnJR

Premium
  • Posts

    208
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by DemOnJR

  1. Solved using @ Gurgarath post https://metin2.dev/topic/5062-lycan-sync-tree-bug/?do=findComment&comment=153909&_rid=20400

    Edit:
    Has nothing to do with the Lycan in my case was the Manny that did not work and i have fiexed it doing the following edits:

    • added the FOLDER location on mob_proto client/server (and oh boyyy there are many more missing...)
    • sync the folders content both from client to the server folders to have same same exact values
       
    VNUM		FOLDER
    mannyvnum 	christmas_2016_mammoth

     

    • Love 1
  2. 3 hours ago, SCOOB said:

    Don't need to do that..

     

    Just delete everything from "folder" column (from all mounts) -- in mob_proto.txt -- and the lag will be gone.

    I will try that today and i will be back with an edit!
    Solved scroll down to see the fix.

  3. This also is happening on my server (martysama srcs) on some mounts like Manny, the gr2 and msm client/server have the same values ... but because of the speed of the mount the mobs do not render.

    Solved Scroll down to see the fix.

  4. Spoiler
    16 minutes ago, ZentraX said:

    How about adding an task with std::async? I would prefer it with a promise like this:

    private:
      std::future<int32_t> m_pingTask{};
      int32_t m_ping{}; 
    public:
      // easy running in background :_D 
      void Ping()
      {
        // Task is already running
        if (m_pingTask.valid()) return;
    
        m_pingTask = std::async(std::launch::async, []() { /*... Perform ping request here */ return ping;}); 
      }
    
      void UpdatePing()
      {
        if (m_pingTask.valid())
        {
          const auto status = m_pingTask.wait_until(std::chrono::system_clock::now() + std::chrono::seconds(0)); // 0 not timeout if the task is done here
          if (status == std::future_status::ready) // ready means the task is done
          {
              m_ping = m_pingTask.get(); // here you can get the like use python create a func for it like app.GetPing() and return this value here
              m_pingTask = {};
          }
        }
      }
    
       int32_t GetPing() const
       {
    		return m_ping;
       }



     

     

    Idk you can try to use async also is your choice, i do not use boost so thread is ok.

  5. Tested and is working.
    If you get the error with thread on compilation just add std::thread like in this example:

    #if defined(ENABLE_PERFORMANCE_STATISTICS)
    	static DWORD s_dwCheckPingTime = ELTimer_GetMSec();
    
    	if (ELTimer_GetMSec() - s_dwCheckPingTime > CServerStateChecker::MAX_RTT_REQUEST_MS)
    	{
    		std::thread t(NonBlockingServerStateChecker, &m_kServerStateChecker, &m_dwRTT, &m_fPktLossPct, &s_dwCheckPingTime);
    		t.detach();
    	}
    #endif

    Also if the ms is 999ms you need to allow IMCP traffic on your FIREWALL.

    And done.
    .png

  6. Working thanks.

    Spoiler
    17 hours ago, martysama0134 said:

    I created an auto-refresh feature every 5s:

     

    wBXMpbn.png

    spacer.png

     

    import app
    import ui
    import wndMgr
    import uiToolTip
    import localeInfo
    import dbg
    import sys, imp
    
    REFRESH_TIME = 5.0
    MSG_STRING02 = "Tip: Press F11 to auto refresh: {}"
    
    def LoadModule(name):
    	if name in sys.modules: del sys.modules[name]
    	if name in locals(): del locals()[name]
    	if name in globals(): del globals()[name]
    
    	# Open the module file
    	module_file_path = "{}.py".format(name)
    	module_file = old_open(module_file_path, 'rb')
    
    	# Load the module from the file
    	module = imp.load_module(name, module_file, module_file_path, ('.py', 'rb', imp.PY_SOURCE))
    
    	if not module in locals():
    		locals()[name] = module
    
    	if not module in globals():
    		globals()[name] = module
    
    	return module
    
    class TestScript(ui.BoardWithTitleBar):
    
    	BOARD_WIDTH = 230
    	BOARD_HEIGHT = 80+30
    
    	SLOT_WIDTH = 150
    
    	def __init__(self):
    		ui.BoardWithTitleBar.__init__(self)
    
    		self.wndScript = None
    
    		self.autoRefresh = False
    		self.nextRefresh = 0.0
    
    		## Item ToolTip
    		self.tooltipItem = uiToolTip.ItemToolTip()
    		self.tooltipItem.Hide()
    
    		## Board
    		self.SetSize(self.BOARD_WIDTH, self.BOARD_HEIGHT)
    		self.SetPosition(0, wndMgr.GetScreenHeight() - self.BOARD_HEIGHT)
    
    		self.AddFlag("movable")
    		self.SetTitleName("Test Script")
    		self.SetCloseEvent(self.Hide)
    		self.Show()
    
    		## Board > Slot Bar
    		slotBar = ui.SlotBar()
    		slotBar.SetParent(self)
    		slotBar.SetSize(self.SLOT_WIDTH, 18)
    		slotBar.SetPosition(13, 32)
    		slotBar.Show()
    		self.slotBar = slotBar
    
    		## Board > Slot Bar > EditLine
    		editLine = ui.EditLine()
    		editLine.SetParent(self.slotBar)
    		editLine.SetSize(self.SLOT_WIDTH, 18)
    		editLine.SetPosition(4, 3)
    		editLine.SetMax(30)
    		editLine.SetText("bio")#"uiTest")
    		editLine.Show()
    		self.editLine = editLine
    
    		## Board > Load Button
    		loadButton = ui.Button()
    		loadButton.SetParent(self)
    		loadButton.SetPosition(self.SLOT_WIDTH + 23, 32)
    		loadButton.SetUpVisual("d:/ymir work/ui/public/small_button_01.sub")
    		loadButton.SetOverVisual("d:/ymir work/ui/public/small_button_02.sub")
    		loadButton.SetDownVisual("d:/ymir work/ui/public/small_button_03.sub")
    		loadButton.SetEvent(self.__OnClickLoadButton)
    		loadButton.SetText("Load")
    		loadButton.Show()
    		self.loadButton = loadButton
    
    		## Board > TextLine (Print Mouse Position)
    		self.textLine = ui.TextLine()
    		self.textLine.SetParent(self)
    		self.textLine.SetFontName(localeInfo.UI_DEF_FONT)
    		self.textLine.SetWindowHorizontalAlignCenter()
    		self.textLine.SetHorizontalAlignCenter()
    		self.textLine.SetWindowVerticalAlignBottom()
    		self.textLine.SetVerticalAlignBottom()
    		self.textLine.SetPosition(0, 33)
    		self.textLine.SetText("Tip: Press F10 to load / reload.")
    		self.textLine.Show()
    
    		## Board > TextLine2 (Print Mouse Position)
    		self.textLine2 = ui.TextLine()
    		self.textLine2.SetParent(self)
    		self.textLine2.SetFontName(localeInfo.UI_DEF_FONT)
    		self.textLine2.SetWindowHorizontalAlignCenter()
    		self.textLine2.SetHorizontalAlignCenter()
    		self.textLine2.SetWindowVerticalAlignBottom()
    		self.textLine2.SetVerticalAlignBottom()
    		self.textLine2.SetPosition(0, 13)
    		self.textLine2.SetText(MSG_STRING02.format("OFF"))
    		self.textLine2.Show()
    
    	def OnUpdate(self):
    		if self.autoRefresh:
    			if self.nextRefresh < app.GetTime():
    				self.nextRefresh = app.GetTime() + REFRESH_TIME
    				self.__OnClickLoadButton()
    
    	def __del__(self):
    		ui.BoardWithTitleBar.__del__(self)
    
    		del self.tooltipItem
    		del self.tooltipSkill
    
    		self.slotBar = None
    		self.editLine = None
    		self.loadButton = None
    		self.textLine = None
    
    	def Show(self):
    		ui.BoardWithTitleBar.Show(self)
    
    	def Hide(self):
    		ui.BoardWithTitleBar.Hide(self)
    
    	def OnKeyDown(self, key):
    		if key == app.DIK_F10:
    			self.__OnClickLoadButton()
    		elif key == app.DIK_F11:
    			self.__OnClickToggleAutoRefresh()
    
    	def __OnClickToggleAutoRefresh(self):
    		self.autoRefresh = not self.autoRefresh
    		self.textLine2.SetText(MSG_STRING02.format("ON" if self.autoRefresh else "OFF"))
    
    	def __OnClickLoadButton(self):
    		module_name = self.editLine.GetText()
    		if not module_name:
    			dbg.TraceError("Empty module name")
    			return
    
    		if self.wndScript:
    			self.wndScript.Hide()
    			del self.wndScript
    			self.wndScript = None
    
    		dbg.TraceError("Loading module: {}".format(module_name))
    		try:
    			module = LoadModule(module_name)
    		except Exception as error:
    			dbg.TraceError("Error loading module: {}".format(error))
    			return
    
    		self.wndScript = module.BioWindow()
    		self.wndScript.Open()
    
    wndTestScript = TestScript()
    wndTestScript.Show()

     

     

     

    • Love 1
  7. Tested, this will add you +2 Seconds at least, on loading and or on every teleport.

    Spoiler

    After i have added the extra lines:

    # FIRST
    
    ShadowTextureSize changed 512 -> 2048
    LoadWaterMapFile metin2_map_c1\000000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000000\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\000000\attr.atr 0
    LoadSplatFile metin2_map_c1\000000\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000000\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 88
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001000\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\001000\attr.atr 0
    LoadSplatFile metin2_map_c1\001000\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001000\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 146
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002000\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002000\attr.atr 0
    LoadSplatFile metin2_map_c1\002000\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002000\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 5
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003000\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\003000\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003000\attr.atr 0
    LoadSplatFile metin2_map_c1\003000\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003000\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 0
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000001\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000001\attr.atr 0
    LoadSplatFile metin2_map_c1\000001\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 9
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001001\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\001001\attr.atr 1
    LoadSplatFile metin2_map_c1\001001\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001001\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 39
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002001\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002001\attr.atr 1
    LoadSplatFile metin2_map_c1\002001\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 35
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003001\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\003001\attr.atr 1
    LoadSplatFile metin2_map_c1\003001\tile.raw CTerrain::RAW_AllocateSplats 13
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003001\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 22
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 5
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000002\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\000002\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000002\attr.atr 0
    LoadSplatFile metin2_map_c1\000002\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000002\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 22
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001002\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\001002\attr.atr 1
    LoadSplatFile metin2_map_c1\001002\tile.raw CTerrain::RAW_AllocateSplats 12
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001002\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 20
    CMapOutdoor::LoadArea1 0
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CANNOT_FIND_PACK_FILE [d:/ymir work/zone/b/obj/general_obj_pieceofstone01 .mdatr]
    CMapOutdoor::LoadArea2 43
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002002\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002002\attr.atr 1
    LoadSplatFile metin2_map_c1\002002\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002002\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 8
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003002\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\003002\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\003002\attr.atr 0
    LoadSplatFile metin2_map_c1\003002\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003002\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 0
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000003\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000003\attr.atr 0
    LoadSplatFile metin2_map_c1\000003\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000003\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 29
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001003\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\001003\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001003\attr.atr 1
    LoadSplatFile metin2_map_c1\001003\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 22
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002003\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002003\attr.atr 0
    LoadSplatFile metin2_map_c1\002003\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 28
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003003\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003003\attr.atr 1
    LoadSplatFile metin2_map_c1\003003\tile.raw CTerrain::RAW_AllocateSplats 8
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 2
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000004\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000004\attr.atr 1
    LoadSplatFile metin2_map_c1\000004\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000004\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 7
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001004\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001004\attr.atr 0
    LoadSplatFile metin2_map_c1\001004\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001004\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 7
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002004\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\002004\attr.atr 0
    LoadSplatFile metin2_map_c1\002004\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002004\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 8
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003004\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003004\attr.atr 1
    LoadSplatFile metin2_map_c1\003004\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003004\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 1
    CMapOutdoor::LoadArea3 0
    Update::Load spent 873 ms
    
    # SECOND
    
    ShadowTextureSize changed 2048 -> 512
    ShadowTextureSize changed 512 -> 2048
    FrameSkip Adjusting... 865
     BINARY_ServerCommand_Reserve xmas_boom 1
    LoadWaterMapFile metin2_map_c1\000000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000000\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000000\attr.atr 1
    LoadSplatFile metin2_map_c1\000000\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000000\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 87
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001000\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001000\attr.atr 0
    LoadSplatFile metin2_map_c1\001000\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001000\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 147
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002000\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\002000\attr.atr 0
    LoadSplatFile metin2_map_c1\002000\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002000\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 6
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003000\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003000\attr.atr 0
    LoadSplatFile metin2_map_c1\003000\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003000\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 1
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000001\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\000001\attr.atr 1
    LoadSplatFile metin2_map_c1\000001\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000001\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 10
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001001\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\001001\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001001\attr.atr 1
    LoadSplatFile metin2_map_c1\001001\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 38
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002001\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\002001\attr.atr 1
    LoadSplatFile metin2_map_c1\002001\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 21
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003001\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003001\attr.atr 1
    LoadSplatFile metin2_map_c1\003001\tile.raw CTerrain::RAW_AllocateSplats 12
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 21
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 4
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000002\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000002\attr.atr 0
    LoadSplatFile metin2_map_c1\000002\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000002\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 23
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001002\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\001002\attr.atr 1
    LoadSplatFile metin2_map_c1\001002\tile.raw CTerrain::RAW_AllocateSplats 13
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001002\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CANNOT_FIND_PACK_FILE [d:/ymir work/zone/b/obj/general_obj_pieceofstone01 .mdatr]
    CMapOutdoor::LoadArea2 43
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002002\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002002\attr.atr 1
    LoadSplatFile metin2_map_c1\002002\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002002\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 8
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003002\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003002\attr.atr 0
    LoadSplatFile metin2_map_c1\003002\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003002\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 0
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000003\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\000003\attr.atr 0
    LoadSplatFile metin2_map_c1\000003\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000003\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 29
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001003\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001003\attr.atr 0
    LoadSplatFile metin2_map_c1\001003\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001003\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 22
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002003\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\002003\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002003\attr.atr 1
    LoadSplatFile metin2_map_c1\002003\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 26
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003003\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003003\attr.atr 1
    LoadSplatFile metin2_map_c1\003003\tile.raw CTerrain::RAW_AllocateSplats 8
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 2
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000004\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\000004\attr.atr 0
    LoadSplatFile metin2_map_c1\000004\tile.raw CTerrain::RAW_AllocateSplats 8
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000004\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 7
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001004\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\001004\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001004\attr.atr 1
    LoadSplatFile metin2_map_c1\001004\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001004\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 7
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002004\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002004\attr.atr 1
    LoadSplatFile metin2_map_c1\002004\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002004\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 8
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003004\water.wtr 1
    LoadRawHeightMapFile metin2_map_c1\003004\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\003004\attr.atr 0
    LoadSplatFile metin2_map_c1\003004\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003004\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 1
    CMapOutdoor::LoadArea3 0
    Update::Load spent 860 ms

    Before
     

    # FIRST
    
    ShadowTextureSize changed 512 -> 2048
    LoadWaterMapFile metin2_map_c1\000000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000000\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000000\attr.atr 1
    LoadSplatFile metin2_map_c1\000000\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000000\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 87
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001000\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001000\attr.atr 0
    LoadSplatFile metin2_map_c1\001000\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001000\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 155
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002000\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002000\attr.atr 1
    LoadSplatFile metin2_map_c1\002000\tile.raw CTerrain::RAW_AllocateSplats 12
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002000\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 5
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003000\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003000\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003000\attr.atr 0
    LoadSplatFile metin2_map_c1\003000\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003000\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 0
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000001\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000001\attr.atr 0
    LoadSplatFile metin2_map_c1\000001\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 9
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001001\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\001001\attr.atr 0
    LoadSplatFile metin2_map_c1\001001\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001001\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 38
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002001\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\002001\attr.atr 0
    LoadSplatFile metin2_map_c1\002001\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 22
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003001\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003001\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003001\attr.atr 1
    LoadSplatFile metin2_map_c1\003001\tile.raw CTerrain::RAW_AllocateSplats 13
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003001\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 4
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000002\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000002\attr.atr 0
    LoadSplatFile metin2_map_c1\000002\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000002\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 23
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001002\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\001002\attr.atr 0
    LoadSplatFile metin2_map_c1\001002\tile.raw CTerrain::RAW_AllocateSplats 12
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001002\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CArea::SetBuilding: There is no data: d:/ymir work/zone/░°┐δ/hay_01.gr2
    SYSERR: CANNOT_FIND_PACK_FILE [d:/ymir work/zone/b/obj/general_obj_pieceofstone01 .mdatr]
    CMapOutdoor::LoadArea2 42
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002002\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002002\attr.atr 0
    LoadSplatFile metin2_map_c1\002002\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002002\shadowmap.raw 2 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 21
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 9
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003002\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003002\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003002\attr.atr 1
    LoadSplatFile metin2_map_c1\003002\tile.raw CTerrain::RAW_AllocateSplats 11
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003002\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 1
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000003\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\000003\attr.atr 0
    LoadSplatFile metin2_map_c1\000003\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 18
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 29
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001003\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\001003\attr.atr 0
    LoadSplatFile metin2_map_c1\001003\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 22
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002003\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002003\attr.atr 0
    LoadSplatFile metin2_map_c1\002003\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 16
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 28
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003003\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003003\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003003\attr.atr 0
    LoadSplatFile metin2_map_c1\003003\tile.raw CTerrain::RAW_AllocateSplats 7
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003003\shadowmap.raw 0 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 2
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\000004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\000004\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\000004\attr.atr 0
    LoadSplatFile metin2_map_c1\000004\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\000004\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 8
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\001004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\001004\height.raw LoadHeightMap::CalculateNormal 3 ms
    LoadAttrMapFile metin2_map_c1\001004\attr.atr 0
    LoadSplatFile metin2_map_c1\001004\tile.raw CTerrain::RAW_AllocateSplats 9
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\001004\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 15
    CMapOutdoor::LoadArea1 1
    CMapOutdoor::LoadArea2 6
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\002004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\002004\height.raw LoadHeightMap::CalculateNormal 2 ms
    LoadAttrMapFile metin2_map_c1\002004\attr.atr 0
    LoadSplatFile metin2_map_c1\002004\tile.raw CTerrain::RAW_AllocateSplats 10
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\002004\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 17
    CMapOutdoor::LoadArea1 0
    CMapOutdoor::LoadArea2 8
    CMapOutdoor::LoadArea3 0
    LoadWaterMapFile metin2_map_c1\003004\water.wtr 0
    LoadRawHeightMapFile metin2_map_c1\003004\height.raw LoadHeightMap::CalculateNormal 1 ms
    LoadAttrMapFile metin2_map_c1\003004\attr.atr 1
    LoadSplatFile metin2_map_c1\003004\tile.raw CTerrain::RAW_AllocateSplats 12
    CTerrain::LoadShadowTexture 0 ms
    LoadShadowMap metin2_map_c1\003004\shadowmap.raw 1 ms
    CTerrain::LoadMiniMapTexture 0 ms
    CMapOutdoor::LoadTerrain 19
    
    # NO SECOND ONE

     

    I will do some tests again, and will be back.

    The problem was that i did forget to remove the module from python, now is working ok, i will still leave the above error here maybe someone will do the same mistake :)))

  8. Update to C++20 

    This is the hidden content, please
     or 
    This is the hidden content, please
    idk if is the right one but is working...

    On 6/4/2023 at 10:42 AM, iSkyx said:

    Anyone know how to fix this?

     

     

    0604 11:40:04110 :: CRaceManager::GetRaceDataPointer: cannot load data by dwRaceIndex 5
    0604 11:40:04110 :: CResourceManager::GetResourcePointer: filename error!
     

    Edit the followin lines with your msm locations mine are inside root/msm/....

    static std::vector<TRaceData> m_vecRaceData =
    {
      { RACE_WARRIOR_M, "msm/warrior_m.msm", "d:/ymir work/pc/warrior/intro/" },
      { RACE_WARRIOR_W, "msm/warrior_w.msm", "d:/ymir work/pc2/warrior/intro/" },
    
      { RACE_ASSASSIN_W, "msm/assassin_w.msm", "d:/ymir work/pc/assassin/intro/" },
      { RACE_ASSASSIN_M, "msm/assassin_m.msm", "d:/ymir work/pc2/assassin/intro/" },
    
      { RACE_SURA_M, "msm/sura_m.msm", "d:/ymir work/pc/sura/intro/" },
      { RACE_SURA_W, "msm/sura_w.msm", "d:/ymir work/pc2/sura/intro/" },
    
      { RACE_SHAMAN_W, "msm/shaman_w.msm", "d:/ymir work/pc/shaman/intro/" },
      { RACE_SHAMAN_M, "msm/shaman_m.msm", "d:/ymir work/pc2/shaman/intro/" },
    };

    Tests
    Wihout:
    spacer.png
    With CPP PSM:
    spacer.png

    • Metin2 Dev 35
    • Good 7
    • Love 10
  9. On 12/10/2020 at 9:22 PM, MrQuin said:
    void CInstanceBase::SHORSE::Create(const TPixelPosition& c_rkPPos, UINT eRace, UINT eHitEffect)


     

    SetAlphaValue


    Maybe,Try and see.

    Thanks, is working i did the following:

    // Inside
    void CInstanceBase::SHORSE::Create(const TPixelPosition& c_rkPPos, UINT eRace, UINT eHitEffect)
    {
      ...
    }
    
    // Search
    rkActor.SetShape(0);
    
    // Add or 0.50f... you can make it more visible if you want
    , 1.0f
      
    // Like
    rkActor.SetShape(0, 1.0f);

    .png

    .png

    • Love 2
  10. Everything is working fine like in the gif of @ Tatsumaru remember the taskbar.py is inside special_patch_common\locale\common\ui if you use martysama.

    But yes the error that some of the users have already reported it is still there

    0820 16:23:10734 :: uiParty:282: RuntimeWarning: tp_compare didn't return -1 or -2 for exception
    0820 16:23:10734 :: Traceback (most recent call last):
    0820 16:23:10734 :: File "game.py", line 1009, in UpdatePartyMemberInfo
    0820 16:23:10734 :: File "interfaceModule.py", line 747, in UpdatePartyMemberInfo
    0820 16:23:10734 :: File "uiParty.py", line 667, in UpdatePartyMemberInfo
    0820 16:23:10734 :: File "uiParty.py", line 282, in SetCharacterHP
    0820 16:23:10739 :: TypeError
    0820 16:23:10739 :: an integer is required

    To fix it you need to do what VegaS™ did say here: 

     


  11. Working thanks.

    spacer.png

    Because someone get errors here is how i have added the system.
    First make the Source Client changes from here: https://metin2.dev/topic/28867-windows-auto-hide/?do=findComment&comment=148237&_rid=20400
    You can stop at the step

    Compile binary and open interfacemodule.py , search for x2:

     

     After that follow this steps:

    Spoiler

    Inside:
    locale/common/locale_interface.txt
    Add at the end:

    OPTION_AUTO_HIDE	Auto Hide
    OPTION_AUTO_HIDE_ON	On
    OPTION_AUTO_HIDE_OFF	Off

    Remember the tabs between the option and the text example: OPTION_AUTO_HIDE_ON[PRESSTABHERE]On

    Inside:
    uiscript/systemoptiondialog.py
    Add at the end:

    import app
    if app.__BL_WINDOW_AUTO_HIDE__:
      window["children"][0]["children"] += (
        {
          "name": "auto_hide",
          "type": "text",
    
          "x": 40 + TEXT_TEMPORARY_X,
          "y": 210 + 2,
    
          "text": uiScriptLocale.OPTION_AUTO_HIDE,
        },
        {
          "name": "auto_hide_on",
          "type": "radio_button",
    
          "x": 110,
          "y": 210,
    
          "text": uiScriptLocale.OPTION_AUTO_HIDE_ON,
    
          "default_image": ROOT_PATH + "middle_button_01.sub",
          "over_image": ROOT_PATH + "middle_button_02.sub",
          "down_image": ROOT_PATH + "middle_button_03.sub",
        },
        {
          "name": "auto_hide_off",
          "type": "radio_button",
    
          "x": 110 + 70,
          "y": 210,
    
          "text": uiScriptLocale.OPTION_AUTO_HIDE_OFF,
    
          "default_image": ROOT_PATH + "middle_button_01.sub",
          "over_image": ROOT_PATH + "middle_button_02.sub",
          "down_image": ROOT_PATH + "middle_button_03.sub",
        },
      )

    Inside:
    root/uitaskbar.py
    Make the changes like this:

      ...
      def OnChangeCurrentSkill(self, skillSlotNumber):
        self.curSkillButton.SetSkill(skillSlotNumber)
        self.curSkillButton.Show()
        self.curMouseModeButton[self.MOUSE_BUTTON_RIGHT].Hide()
        # Add this
      if app.__BL_WINDOW_AUTO_HIDE__:
        def IsOpenRightLeftMouseButtonWindow(self):
          wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_LEFT]
          if wndMouseButtonMode and wndMouseButtonMode.IsShow():
            return True
    
          wndMouseButtonMode = self.mouseModeButtonList[self.MOUSE_BUTTON_RIGHT]
          if wndMouseButtonMode and wndMouseButtonMode.IsShow():
            return True
    
          if self.mouseImage and self.mouseImage.IsShow():
            return True
    
          return False
        # End

    Inside:
    root/interfacemodule.py
    Make the changes like this:

    	...
    		self.wndEnergyBar = None
    		import app
    		if app.ENABLE_ENERGY_SYSTEM:
    			wndEnergyBar = uiTaskBar.EnergyBar()
    			wndEnergyBar.LoadWindow()
    			self.wndEnergyBar = wndEnergyBar
    		# Add this
    		if app.__BL_WINDOW_AUTO_HIDE__:
    			(xConstPosTaskbar, self.yConstPosTaskbar) = self.wndTaskBar.GetLocalPosition()
    			(xConstPosEnergyBar, self.yConstPosEnergyBar) = self.wndEnergyBar.GetLocalPosition()
    		# End
    	def __MakeParty(self):
    		wndParty = uiParty.PartyWindow()
    		wndParty.Hide()
    		self.wndParty = wndParty
    	...
    	...	
    	def BUILD_CloseWindow(self):
    		self.__ShowWindows(self.wndGuildBuilding.wnds)
    		self.wndGuildBuilding = None
    
    	def BUILD_OnUpdate(self):
         	# Add this
    		if app.__BL_WINDOW_AUTO_HIDE__:
    			xMouse, yMouse = wndMgr.GetMousePosition()
    			xWidth = wndMgr.GetScreenWidth()
    			yHeight = wndMgr.GetScreenHeight()
    
    			if self.wndMiniMap:
    				(xCurrentMinimap, yCurrentMinimap) = self.wndMiniMap.GetLocalPosition()
    				if (xWidth - 150 <= xMouse <= xWidth and 0 <= yMouse <= 135) or \
    						systemSetting.IsGUIMode() == False:
    					if xCurrentMinimap > xWidth - self.wndMiniMap.GetWidth():
    						self.wndMiniMap.SetPosition(max(xCurrentMinimap - 10, xWidth - self.wndMiniMap.GetWidth()), yCurrentMinimap)
    				else:
    					if xCurrentMinimap < xWidth:
    						self.wndMiniMap.SetPosition(min(xCurrentMinimap + 10, xWidth), yCurrentMinimap)
    
    			if self.wndTaskBar and self.wndTaskBar.IsShow() and \
    					self.wndEnergyBar and \
    					self.wndChat:
    				(xCurrentTaskbar, yCurrentTaskbar) = self.wndTaskBar.GetLocalPosition()
    				(xCurrentEnergyBar, yCurrentEnergyBar) = self.wndEnergyBar.GetLocalPosition()
    				(xCurrentChat, yCurrentChat) = self.wndChat.GetLocalPosition()
    
    				if yHeight - 90 <= yMouse <= yHeight or \
    						self.IsOpenChat() or \
    						self.wndTaskBar.IsOpenRightLeftMouseButtonWindow() or \
    						systemSetting.IsGUIMode() == False:
    					if yCurrentTaskbar > self.yConstPosTaskbar:
    						self.wndTaskBar.SetPosition(xCurrentTaskbar, max(yCurrentTaskbar - 5, self.yConstPosTaskbar))
    					if yCurrentEnergyBar > self.yConstPosEnergyBar:
    						self.wndEnergyBar.SetPosition(xCurrentEnergyBar, max(yCurrentEnergyBar - 5, self.yConstPosEnergyBar))
    					if yCurrentChat > yHeight - self.wndChat.EDIT_LINE_HEIGHT - 37:
    						self.wndChat.SetPosition(xCurrentChat, max(yCurrentChat - 3, yHeight - self.wndChat.EDIT_LINE_HEIGHT - 37))
    						self.wndChat.Refresh()
    				else:
    					if yCurrentTaskbar < self.yConstPosTaskbar + 65:
    						self.wndTaskBar.SetPosition(xCurrentTaskbar, min(yCurrentTaskbar + 5, self.yConstPosTaskbar + 65))
    					if yCurrentEnergyBar < self.yConstPosEnergyBar + 65:
    						self.wndEnergyBar.SetPosition(xCurrentEnergyBar, min(yCurrentEnergyBar + 5, self.yConstPosEnergyBar + 65))
    					if yCurrentChat < yHeight - self.wndChat.EDIT_LINE_HEIGHT:
    						self.wndChat.SetPosition(xCurrentChat, min(yCurrentChat + 3, yHeight - self.wndChat.EDIT_LINE_HEIGHT))
    						self.wndChat.Refresh()
    		# End
    		if not self.wndGuildBuilding:
    			return
    
    		if self.wndGuildBuilding.IsPositioningMode():
    			import background
    			x, y, z = background.GetPickingPoint()
    			self.wndGuildBuilding.SetBuildingPosition(x, y, z)
    
    	def BUILD_OnMouseLeftButtonDown(self):
    		if not self.wndGuildBuilding:
    			return
    	...

    Inside:
    root/uisystemoption.py
    Make the changes like this:

    	...	
    	def __init__(self):
    		ui.ScriptWindow.__init__(self)
    		self.__Initialize()
    		self.__Load()
    		# Add this
    		if app.__BL_WINDOW_AUTO_HIDE__:
    			self.RefreshGUIMode()
    		# End
    
    	def __del__(self):
    		ui.ScriptWindow.__del__(self)
    	...
    	...
      	def __Initialize(self):
    		self.tilingMode = 0
    		self.titleBar = 0
    		self.changeMusicButton = 0
    		self.selectMusicFile = 0
    		self.ctrlMusicVolume = 0
    		self.ctrlSoundVolume = 0
    		self.musicListDlg = 0
    		self.tilingApplyButton = 0
    		self.cameraModeButtonList = []
    		self.fogModeButtonList = []
    		self.tilingModeButtonList = []
    		self.ctrlShadowQuality = 0
            # Add this
    		if app.__BL_WINDOW_AUTO_HIDE__:
    			self.autoHideModeButtonList = []
            # End
    
    	def Destroy(self):
    		self.ClearDictionary()
        ...
    	...
      	def __Load_BindObject(self):
    		try:
    			GetObject = self.GetChild
    			self.titleBar = GetObject("titlebar")
    			self.selectMusicFile = GetObject("bgm_file")
    			self.changeMusicButton = GetObject("bgm_button")
    			self.ctrlMusicVolume = GetObject("music_volume_controller")
    			self.ctrlSoundVolume = GetObject("sound_volume_controller")
    			self.cameraModeButtonList.append(GetObject("camera_short"))
    			self.cameraModeButtonList.append(GetObject("camera_long"))
    			self.fogModeButtonList.append(GetObject("fog_level0"))
    			self.fogModeButtonList.append(GetObject("fog_level1"))
    			self.fogModeButtonList.append(GetObject("fog_level2"))
    			self.tilingModeButtonList.append(GetObject("tiling_cpu"))
    			self.tilingModeButtonList.append(GetObject("tiling_gpu"))
    			self.tilingApplyButton=GetObject("tiling_apply")
    			# Add this
    			if app.__BL_WINDOW_AUTO_HIDE__:
    				self.autoHideModeButtonList.append(GetObject("auto_hide_on"))
    				self.autoHideModeButtonList.append(GetObject("auto_hide_off"))
    			# End
    			#self.ctrlShadowQuality = GetObject("shadow_bar")
    		except:
    			import exception
    			exception.Abort("OptionDialog.__Load_BindObject")
    
    	def __Load(self):
    		self.__Load_LoadScript("uiscript/systemoptiondialog.py")
    		self.__Load_BindObject()
        ...
    		...	
    		self.tilingModeButtonList[0].SAFE_SetEvent(self.__OnClickTilingModeCPUButton)
    		self.tilingModeButtonList[1].SAFE_SetEvent(self.__OnClickTilingModeGPUButton)
    		# Add this
    		if app.__BL_WINDOW_AUTO_HIDE__:
    			self.autoHideModeButtonList[0].SAFE_SetEvent(self.__OnClickAutoHideModeOnButton)
    			self.autoHideModeButtonList[1].SAFE_SetEvent(self.__OnClickAutoHideModeOffButton)
    		# End
    		self.tilingApplyButton.SAFE_SetEvent(self.__OnClickTilingApplyButton)
    
    		self.__SetCurTilingMode()
            ...
    	...
      	def __OnClickTilingModeGPUButton(self):
    		self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_GPU_TILING_1)
    		self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_GPU_TILING_2)
    		self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_GPU_TILING_3)
    		self.__SetTilingMode(1)
    	# Add this
    	if app.__BL_WINDOW_AUTO_HIDE__:
    		def __OnClickAutoHideModeOnButton(self):
    			systemSetting.SetGUIMode(True)
    			self.RefreshGUIMode()
    
    		def __OnClickAutoHideModeOffButton(self):
    			systemSetting.SetGUIMode(False)
    			self.RefreshGUIMode()
    
    		def RefreshGUIMode(self):
    			if systemSetting.IsGUIMode():
    				self.autoHideModeButtonList[0].Down()
    				self.autoHideModeButtonList[1].SetUp()
    			else:
    				self.autoHideModeButtonList[0].SetUp()
    				self.autoHideModeButtonList[1].Down()
    	# End
    	def __OnClickTilingApplyButton(self):
    		self.__NotifyChatLine(localeInfo.SYSTEM_OPTION_TILING_EXIT)
    		if 0==self.tilingMode:
    			background.EnableSoftwareTiling(1)
    		else:
    			background.EnableSoftwareTiling(0)
    
    		net.ExitGame()
    	...

     

     

    • Metin2 Dev 1
    • Love 1
  12. For MartySama source:

    Change:
    TCHAR* szModule = ""; 
    To:
    const TCHAR* szModule = "";
    
    Change:
    CreateProcess("C:\\Windows\\System32\\dxdiag.exe", "/dontskip /whql:off /t dxdiag_log.txt", NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, crash_path.c_str(), &si, &pi)
    To:
    CreateProcessA("C:\\Windows\\System32\\dxdiag.exe", const_cast<LPSTR>("/dontskip /whql:off /t dxdiag_log.txt"), NULL, NULL, FALSE, CREATE_NO_WINDOW, NULL, crash_path.c_str(), &si, &pi)

    Also keep in mind the minidump

    #if !defined(_EXTENDED_ERROR_LOG_)
    #define ENABLE_CRASH_MINIDUMP
    #endif

    .png

  13. Thanks

      

    On 7/15/2023 at 3:42 PM, [TiTAN] said:

    As vegas fix is not complete, i quickly made up this shit that at least works, i will rewrite it when i have some time:

    	def __SelectSkillGroup(self, pageIndex):
    		for pageButton in self.skillGroupButton:
    			pageButton.SetUp()
    
    		self.skillGroupButton[pageIndex].Down()
    
    		if self.__CanUseHorseSkill():
    			if 0 == pageIndex:
    				pageIndex = net.GetMainActorSkillGroup()-1
    			elif 1 == pageIndex:
    				pageIndex = self.PAGE_HORSE
    		else:
    			skillGroupIndex = net.GetMainActorSkillGroup()
    			if bool(skillGroupIndex):
    				(tmpCurSkillGroup, tmpSkillGroup) = (skillGroupIndex - 1, skillGroupIndex)
    			else:
    				(tmpCurSkillGroup, tmpSkillGroup) = (pageIndex, pageIndex + 1)
    
    		if self.__CanUseHorseSkill():
    			self.curSelectedSkillGroup = pageIndex
    			self.__SetSkillSlotData(net.GetMainActorRace(), pageIndex+1, net.GetMainActorEmpire())
    		else:
    			self.curSelectedSkillGroup = tmpCurSkillGroup
    			self.__SetSkillSlotData(net.GetMainActorRace(), tmpSkillGroup, net.GetMainActorEmpire())
    
    		self.RefreshSkill()

     

    LE: We maybe need 3rd button because you will not be able to use horse skills if you have them when no skill group selected

    Solved, by mistake i have edited this row and forget to remove it: 

     

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