Jump to content

EAkar

Inactive Member
  • Posts

    62
  • Joined

  • Last visited

  • Feedback

    0%

Posts posted by EAkar

  1.  

    spacer.png

     

    Hahahaha ?
    These files are completely corrupt. You will have problems with the zodiac temple. This fault only applies to the zodiac trader. Shops like normal market gun dealers are not problematic. I'm removing this mirroring system from my files immediately. Very dangerous.

     

    I advise you to use other mirroring system files. I do not recommend these files. It causes a lot of problems that you don't know about. Coincidentally I went out the zodiac multiples and found this problem. ? That's why this system is very dangerous.

    • Lmao 1
  2. On 12/2/2021 at 2:14 AM, Near said:

    Could someone please help me with these errors?

    https://metin2.download/picture/FVrunE0od7GBgdiV9Cl9ACT02F7ZDblJ/.png
    https://metin2.download/picture/fJnR1H6414lCX346sh9h15skLwvbr2jG/.png

    The first is the syserr when opening the window, and the second is that the options menu does not close.

    if app.BL_MOVE_CHANNEL:
    	class MoveChannelDialog(ui.ScriptWindow):
    		def __init__(self):
    			ui.ScriptWindow.__init__(self)
    			self.__LoadDialog()
    			
    			self.IsShow = False
    			
    		def __del__(self):
    			ui.ScriptWindow.__del__(self)
    			
    		def __LoadDialog(self) :	
    			try:
    				pyScrLoader = ui.PythonScriptLoader()
    				pyScrLoader.LoadScriptFile(self, "UIScript/MoveChannelDialog.py")
    			except:
    				import exception
    				exception.Abort("MoveChannelDialog.__LoadDialog")
    			
    
    			self.ParentBoard = self.GetChild("MoveChannelBoard")
    			self.ChildBoard = self.GetChild("BlackBoard")
    			self.GetChild("MoveChannelTitle").SetCloseEvent(ui.__mem_func__(self.Close))
    			
    			self.ChannelList = []
    			cnt = 5
    			cnt = cnt - 1 # 99서버 제외
    			
    			self.DlgWidht = 190
    			self.BlackBoardHeight = 23*cnt + 5*(cnt-1) + 13
    			self.DlgHeight = self.BlackBoardHeight + 75
    			
    			self.AcceptBtn = ui.MakeButton(self.ParentBoard, 13, self.DlgHeight - 33, "", "d:/ymir work/ui/public/", "middle_button_01.sub", "middle_button_02.sub", "middle_button_03.sub")
    			self.AcceptBtn.SetText( localeInfo.MOVE_CHANNEL_SELECT )
    			self.AcceptBtn.SetEvent(ui.__mem_func__(self.AcceptButton))
    			self.CloseBtn = ui.MakeButton(self.ParentBoard, self.DlgWidht - 73, self.DlgHeight - 33, "", "d:/ymir work/ui/public/", "middle_button_01.sub", "middle_button_02.sub", "middle_button_03.sub")
    			self.CloseBtn.SetText( localeInfo.MOVE_CHANNEL_CANCEL )
    			self.CloseBtn.SetEvent(ui.__mem_func__(self.Close))
    
    			for i in xrange(cnt):
    				btn = ui.MakeButton(self.ChildBoard, 8, 6 + i*28, "", "d:/ymir work/ui/game/myshop_deco/", "select_btn_01.sub", "select_btn_02.sub", "select_btn_03.sub")
    				btn.SetText("Kanal {0}".format(int(i+1)))
    				btn.SetEvent(ui.__mem_func__(self.__SelectChannel), i+1)
    				self.ChannelList.append(btn)
    			
    			self.ParentBoard.SetSize(self.DlgWidht, self.DlgHeight)
    			self.ChildBoard.SetSize(self.DlgWidht - 26, self.BlackBoardHeight)
    			self.SetSize(self.DlgWidht, self.DlgHeight)
    			
    			self.UpdateRect()
    			
    		def __SelectChannel(self, idx):
    			self.ChangeChannelNumber = idx
    			
    			for btn in self.ChannelList:
    				btn.SetUp()
    				btn.Enable()
    				
    			self.ChannelList[idx-1].Down()
    			self.ChannelList[idx-1].Disable()
    			
    		def AcceptButton(self):
    			if self.ChangeChannelNumber == self.StartChannelNumber:
    				return
    			
    			net.MoveChannelGame(self.ChangeChannelNumber)
    			self.StartChannelNumber = self.ChangeChannelNumber
    			self.Close()
    						
    		def Show(self) :
    			ui.ScriptWindow.Show(self)
    			
    			self.StartChannelNumber = net.GetChannelNumber()
    			self.__SelectChannel(self.StartChannelNumber)
    			
    			self.IsShow = True
    		
    		def Close(self):
    			self.Hide()
    			
    			self.IsShow = False
    			
    		def OnPressEscapeKey(self):
    			self.Close()
    			return True
    			
    		def IsShowWindow(self):
    			return self.IsShow

    İnterFaceModule.py

        if app.BL_MOVE_CHANNEL:
            def RefreshServerInfo(self, channelNumber):
                if self.wndMiniMap:
                    self.wndMiniMap.RefreshServerInfo(channelNumber)

    Game.py

        if app.BL_MOVE_CHANNEL:
            def __SeverInfo(self, channelNumber, mapIndex):
                #print "__SeverInfo %s %s" % (channelNumber, mapIndex)
                
                _chNum    = int(channelNumber.strip())
                _mapIdx    = int(mapIndex.strip())
                
                if _chNum == 99:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_GAME_99)
                elif _mapIdx >= 10000:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_DUNGEON)
                else:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE % _chNum)
                    
                net.SetChannelName(_chNum)
                net.SetMapIndex(_mapIdx)
                self.interface.RefreshServerInfo(channelNumber)

  3. 11 hours ago, Vaynz said:

    The tutorial is complete, for those who have problems with this "pack_open" not defined

    Search:
    ShopData = pack_open(REMOTE_FILE_NAME, "r").readlines()
    
    Change with:
    ShopData = open(REMOTE_FILE_NAME, "r").readlines()

    And if you have problem with buying items is from ENABLE_MULTISHOP, you have to adapt the system in localeinfo.py and uishop.py in function AskBuyItem.

     

    70,75,48 is from your mysql player -> shop_item (Vnum where is opening the shop with items "doing what you want") 

    Example:

    Like in my case ->shop item : Vnum (3 is to open the window with weapons and where you find items)

    In player -> shop you have (Shop vnum - (3), Name (bla bla), NPC - Npc vnum (9001) ) example

    In remote_shop_names.txt you have to put them like how in input_main.cpp vnum it is. Example (3, )

    Locale- 3 go first and name in remote_shop_names.txt -> Weapons

    If we go for a new shop (Do same like weapons and go in input_main.cpp vnum in row 3, 4, 5) and in remote shop again do that

    3 = Weapons

    4 = Armors

    5 = General.

    SJ8Tn36.png - How Input_main.cpp how looks

    How remote_shop_names looks.

    NEgcgHn.png

    Sorry for bad english and bad "explain", i just woke up. I hope you understood the idea.

    "Market name is working" aswell, maybe u missed something from tutorial.

    I installed the system without any problems. I guess it doesn't match.

    • Good 1
  4. Edit : Fixed. 

    npc vnum = player.shop(npc_vnum) WRONGGGG

    player.shop open (vnum) true

    Example : 

    1    ????    9001
    2    ?????    9009
    3    ????    9003
    4    ?????    9002

    9001 wrong
    1 true

    also

    The market name is not written. Market name : None ?

    spacer.png

  5. There is lag in the system.

    The key opens the lock. But after 4 5 seconds it turns on. Or I have to open it with the key again for it to appear.

    Someone else on another forum has the same problem. Add if you can fix the problem. I wouldn't recommend it if you can't fix the problem. Good Morning.

     

    Lag starts when 3 keys are requested. But there is no problem with 2 keys. As I said, when it starts asking for 3 or 4 keys, there is lag. (Note: I didn't lock 3 4 inventory. I only locked my 4th inventory.

    const DWORD c_Inventory_Open_Page_Count = 3;
     

    spacer.png

    continuation of the video

    spacer.png

    also doing this instead of make_unique.

    s_grid[i] = std::unique_ptr <CGrid>(new CGrid(INVENTORY_WIDTH,INVENTORY_HEIGHT));
         

    and

    s_grid[i] = std::unique_ptr<CGrid>(new CGrid(INVENTORY_WIDTH,new_size));

  6. On 10/28/2021 at 3:13 PM, Mali said:

    weapon costume is not my system, just look at other codes for the solve problem.

    I'm not mad at you trabzon ?

    but you might have an idea what the problem is. Only you can help with this. The costume system may not be yours. But you can help. It still doesn't matter if you're not helping. After all, you shared this system with us. You are a really good person. Not everyone can do this. entrust it to Allah.

    On 10/28/2021 at 11:38 AM, aberious said:

    send discord men...

    Metin2Shooping#3082

  7. No Problem : (look image) -- Everything looks good.

    spacer.png

     

    I used a costume weapon on it. Everything is fine and there are no problems.

     

    spacer.png

     

    and the biggest problem!!!

    When I remove the costume weapon, the original weapon appears. But the runic sword must appear.

     

    spacer.png

     

     

    		case ITEM_WEAPON:
    		{
    #ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    			if (0 != m_pOwner->GetWear(WEAR_COSTUME_WEAPON))
    				break;
    #endif
    			if (bAdd) {
    #if defined(__BL_TRANSMUTATION__)
    				if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
    					m_pOwner->SetPart(PART_WEAPON, GetTransmutationVnum() > 0 ? GetTransmutationVnum() : GetVnum());
    #else
    				if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
    					m_pOwner->SetPart(PART_WEAPON, GetVnum());
    #endif
    			} else {
    				if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
    					m_pOwner->SetPart(PART_WEAPON, 0);
    			}
    		}
    		break;

     

  8. MOVE_CHANNEL_NOTICE_GAME_99    You are connected with the Affiliate Channel.
    MOVE_CHANNEL_NOTICE_DUNGEON    You are connected to a dungeon channel or a map.


        if app.BL_MOVE_CHANNEL:
            def __SeverInfo(self, channelNumber, mapIndex):
                #print "__SeverInfo %s %s" % (channelNumber, mapIndex)
                
                _chNum    = int(channelNumber.strip())
                _mapIdx    = int(mapIndex.strip())
                
                if _chNum == 99:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_GAME_99)
                elif _mapIdx >= 10000:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE_DUNGEON)
                else:
                    chat.AppendChat(chat.CHAT_TYPE_INFO, localeInfo.MOVE_CHANNEL_NOTICE % _chNum)
                    
                net.SetChannelName(_chNum)
                net.SetMapIndex(_mapIdx)
                self.interface.RefreshServerInfo(channelNumber)

  9. delete these ridiculous codes and just fix it with python code.

     

    					## ÀÚµ¿¹°¾à (#72723, #72724) Ư¼öó¸® - ¾ÆÀÌÅÛÀε¥µµ ½½·Ô¿¡ È°¼ºÈ­/ºñÈ°¼ºÈ­ Ç¥½Ã¸¦ À§ÇÑ ÀÛ¾÷ÀÓ - [hyo]
    					if constInfo.IS_AUTO_POTION(itemIndex):
    						# metinSocket - [0] : È°¼ºÈ­ ¿©ºÎ, [1] : »ç¿ëÇÑ ¾ç, [2] : ÃÖ´ë ¿ë·®
    						metinSocket = [player.GetItemMetinSocket(Position, j) for j in xrange(player.METIN_SOCKET_MAX_NUM)]
    						
    						if 0 != int(metinSocket[0]):
    							slot.ActivateSlot(slotNumber)
    						else:
    							slot.DeactivateSlot(slotNumber)
    				elif player.SLOT_TYPE_SKILL == Type:
    
    					skillIndex = player.GetSkillIndex(Position)
    					if 0 == skillIndex:
    						slot.ClearSlot(slotNumber)
    						continue
    
    					skillType = skill.GetSkillType(skillIndex)
    					if skill.SKILL_TYPE_GUILD == skillType:
    						import guild
    						skillGrade = 0
    						skillLevel = guild.GetSkillLevel(Position)
    
    					else:
    						skillGrade = player.GetSkillGrade(Position)
    						skillLevel = player.GetSkillLevel(Position)
    
    					slot.SetSkillSlotNew(slotNumber, skillIndex, skillGrade, skillLevel)
    					slot.SetSlotCountNew(slotNumber, skillGrade, skillLevel)
    					slot.SetCoverButton(slotNumber)
    
    					## NOTE : CoolTime üũ
    					if player.IsSkillCoolTime(Position):
    						(coolTime, elapsedTime) = player.GetSkillCoolTime(Position)
    						slot.SetSlotCoolTime(slotNumber, coolTime, elapsedTime)
    
    					## NOTE : Activate µÇ¾î ÀÖ´Ù¸é ¾ÆÀÌÄܵµ ¾÷µ¥ÀÌÆ®
    					if player.IsSkillActive(Position):
    						# if not slotNumber in self.Jeaktivni:
    							slot.ActivateSlot(slotNumber)
    							# self.Jeaktivni.append(slotNumber)
    					# else:
    						# if slotNumber in self.Jeaktivni:
    							# slot.DeactivateSlot(slotNumber)
    							# self.Jeaktivni.remove(slotNumber)

     

  10. These operations give game.core. Game gives core on loading screen.

    No wrong additions. Everything is correct. There was no kernel crash prior to doing this action.

    char.h 

    #ifdef ENABLE_ITEM_GRID_MAP
        std::unordered_map<BYTE, BYTE> pItemsGridMap;
    #else
        BYTE            bItemGrid[INVENTORY_AND_EQUIP_SLOT_MAX];
    #endif

    and 

        LPITEM            GetInventoryItem(WORD wCell) const;
    #ifdef ENABLE_ITEM_GRID_MAP
        BYTE            ItemGridMapGetConst(BYTE cell_index) const;
    #endif


    char_item.cpp


     

    bool CHARACTER::IsEmptyItemGrid(TItemPos Cell, BYTE bSize, int iExceptionCell) const
    {
    	switch (Cell.window_type)
    	{
    	case INVENTORY:
    	{
    		WORD bCell = Cell.cell;
    
    		++iExceptionCell;
    
    		if (Cell.IsBeltInventoryPosition())
    		{
    			LPITEM beltItem = GetWear(WEAR_BELT);
    
    			if (NULL == beltItem)
    				return false;
    
    			if (false == CBeltInventoryHelper::IsAvailableCell(bCell - BELT_INVENTORY_SLOT_START, beltItem->GetValue(0)))
    				return false;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    			if (ItemGridMapGetConst(bCell))
    			{
    				if (ItemGridMapGetConst(bCell) == iExceptionCell)
    					return true;
    
    				return false;
    			}
    #else
    			if (m_pointsInstant.bItemGrid[bCell])
    			{
    				if (m_pointsInstant.bItemGrid[bCell] == iExceptionCell)
    					return true;
    
    				return false;
    			}
    #endif
    
    			if (bSize == 1)
    				return true;
    		}
    		else if (bCell >= INVENTORY_MAX_NUM)
    			return false;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    		if (ItemGridMapGetConst(bCell))
    		{
    			if (ItemGridMapGetConst(bCell) == iExceptionCell)
    #else
    		if (m_pointsInstant.bItemGrid[bCell])
    		{
    			if (m_pointsInstant.bItemGrid[bCell] == iExceptionCell)
    #endif
    			{
    				if (bSize == 1)
    					return true;
    
    				int j = 1;
    				BYTE bPage = bCell / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT);
    
    				do
    				{
    					BYTE p = bCell + (5 * j);
    
    					if (p >= INVENTORY_MAX_NUM)
    						return false;
    
    					if (p / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT) != bPage)
    						return false;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    					if (ItemGridMapGetConst(p))
    						if (ItemGridMapGetConst(p) != iExceptionCell)
    							return false;
    #else
    					if (m_pointsInstant.bItemGrid[p])
    						if (m_pointsInstant.bItemGrid[p] != iExceptionCell)
    							return false;
    #endif
    				} while (++j < bSize);
    
    				return true;
    			}
    			else
    				return false;
    		}
    
    		if (1 == bSize)
    			return true;
    		else
    		{
    			int j = 1;
    			BYTE bPage = bCell / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT);
    
    			do
    			{
    				BYTE p = bCell + (5 * j);
    
    				if (p >= INVENTORY_MAX_NUM)
    					return false;
    
    				if (p / (INVENTORY_MAX_NUM / INVENTORY_PAGE_COUNT) != bPage)
    					return false;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    				if (ItemGridMapGetConst(p))
    					if (ItemGridMapGetConst(p) != iExceptionCell)
    						return false;
    #else
    				if (m_pointsInstant.bItemGrid[p])
    					if (m_pointsInstant.bItemGrid[p] != iExceptionCell)
    						return false;
    #endif
    			} while (++j < bSize);
    
    			return true;
    		}
    	}
    	break;
    	case DRAGON_SOUL_INVENTORY:
    	{
    		WORD wCell = Cell.cell;
    		if (wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM)
    			return false;
    
    		iExceptionCell++;
    
    		if (m_pointsInstant.wDSItemGrid[wCell])
    		{
    			if (m_pointsInstant.wDSItemGrid[wCell] == iExceptionCell)
    			{
    				if (bSize == 1)
    					return true;
    
    				int j = 1;
    
    				do
    				{
    					int p = wCell + (DRAGON_SOUL_BOX_COLUMN_NUM * j);
    
    					if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM)
    						return false;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    					if (ItemGridMapGetConst(p))
    #else
    					if (m_pointsInstant.bItemGrid[p])
    #endif
    						if (m_pointsInstant.wDSItemGrid[p] != iExceptionCell)
    							return false;
    				} while (++j < bSize);
    
    				return true;
    			}
    			else
    				return false;
    		}
    
    		if (1 == bSize)
    			return true;
    		else
    		{
    			int j = 1;
    
    			do
    			{
    				int p = wCell + (DRAGON_SOUL_BOX_COLUMN_NUM * j);
    
    				if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM)
    					return false;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    				if (ItemGridMapGetConst(p))
    #else
    				if (m_pointsInstant.bItemGrid[p])
    #endif
    					if (m_pointsInstant.wDSItemGrid[p] != iExceptionCell)
    						return false;
    			} while (++j < bSize);
    
    			return true;
    		}
    	}
    	break;
    void CHARACTER::SetItem(TItemPos Cell, LPITEM pItem)
    #endif
    {
    	WORD wCell = Cell.cell;
    	BYTE window_type = Cell.window_type;
    	if ((unsigned long)((CItem*)pItem) == 0xff || (unsigned long)((CItem*)pItem) == 0xffffffff)
    	{
    		sys_err("!!! FATAL ERROR !!! item == 0xff (char: %s cell: %u)", GetName(), wCell);
    		core_dump();
    		return;
    	}
    
    	if (pItem && pItem->GetOwner())
    	{
    		assert(!"GetOwner exist");
    		return;
    	}
    
    	switch (window_type)
    	{
    	case INVENTORY:
    	case EQUIPMENT:
    	{
    		if (wCell >= INVENTORY_AND_EQUIP_SLOT_MAX)
    		{
    			sys_err("CHARACTER::SetItem: invalid item cell %d", wCell);
    			return;
    		}
    
    		LPITEM pOld = m_pointsInstant.pItems[wCell];
    
    		if (pOld)
    		{
    			if (wCell < INVENTORY_MAX_NUM)
    			{
    				for (int i = 0; i < pOld->GetSize(); ++i)
    				{
    					int p = wCell + (i * 5);
    
    					if (p >= INVENTORY_MAX_NUM)
    						continue;
    
    					if (m_pointsInstant.pItems[p] && m_pointsInstant.pItems[p] != pOld)
    						continue;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    					m_pointsInstant.pItemsGridMap[p] = 0;
    #else
    					m_pointsInstant.bItemGrid[p] = 0;
    #endif
    				}
    			}
    			else
    #ifdef ENABLE_ITEM_GRID_MAP
    				m_pointsInstant.pItemsGridMap[wCell] = 0;
    #else
    				m_pointsInstant.bItemGrid[wCell] = 0;
    #endif
    		}
    
    		if (pItem)
    		{
    			if (wCell < INVENTORY_MAX_NUM)
    			{
    				for (int i = 0; i < pItem->GetSize(); ++i)
    				{
    					int p = wCell + (i * 5);
    
    					if (p >= INVENTORY_MAX_NUM)
    						continue;
    
    #ifdef ENABLE_ITEM_GRID_MAP
    					m_pointsInstant.pItemsGridMap[p] = wCell + 1;
    #else
    					m_pointsInstant.bItemGrid[p] = wCell + 1;
    #endif
    				}
    			}
    			else
    #ifdef ENABLE_ITEM_GRID_MAP
    				m_pointsInstant.pItemsGridMap[wCell] = wCell + 1;
    #else
    				m_pointsInstant.bItemGrid[wCell] = wCell + 1;
    #endif
    		}
    
    		m_pointsInstant.pItems[wCell] = pItem;
    	}
    	break;
    
    	case DRAGON_SOUL_INVENTORY:
    	{
    		LPITEM pOld = m_pointsInstant.pDSItems[wCell];
    
    		if (pOld)
    		{
    			if (wCell < DRAGON_SOUL_INVENTORY_MAX_NUM)
    			{
    				for (int i = 0; i < pOld->GetSize(); ++i)
    				{
    					int p = wCell + (i * DRAGON_SOUL_BOX_COLUMN_NUM);
    
    					if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM)
    						continue;
    
    					if (m_pointsInstant.pDSItems[p] && m_pointsInstant.pDSItems[p] != pOld)
    						continue;
    
    					m_pointsInstant.wDSItemGrid[p] = 0;
    				}
    			}
    			else
    				m_pointsInstant.wDSItemGrid[wCell] = 0;
    		}
    
    		if (pItem)
    		{
    			if (wCell >= DRAGON_SOUL_INVENTORY_MAX_NUM)
    			{
    				sys_err("CHARACTER::SetItem: invalid DS item cell %d", wCell);
    				return;
    			}
    
    			if (wCell < DRAGON_SOUL_INVENTORY_MAX_NUM)
    			{
    				for (int i = 0; i < pItem->GetSize(); ++i)
    				{
    					int p = wCell + (i * DRAGON_SOUL_BOX_COLUMN_NUM);
    
    					if (p >= DRAGON_SOUL_INVENTORY_MAX_NUM)
    						continue;
    
    					m_pointsInstant.wDSItemGrid[p] = wCell + 1;
    				}
    			}
    			else
    				m_pointsInstant.wDSItemGrid[wCell] = wCell + 1;
    		}
    
    		m_pointsInstant.pDSItems[wCell] = pItem;
    	}
    	break;
    #ifdef ENABLE_ITEM_GRID_MAP
    BYTE CHARACTER::ItemGridMapGetConst(BYTE cell_index) const
    {
    	auto it = m_pointsInstant.pItemsGridMap.find(cell_index);
    
    	if (it != m_pointsInstant.pItemsGridMap.end())
    	{
    		return it->second;
    	}
    	else
    	{
    		return 0;
    	}
    }
    #endif
    #ifdef ENABLE_ITEM_GRID_MAP
    	m_pointsInstant.pItemsGridMap.clear();
    #endif
    
    #ifdef ENABLE_ACCE_SYSTEM
    	m_bAcceCombination = false;
    	m_bAcceAbsorption = false;
    #endif

     

    I cleared the codes and the game opened ?

  11. this system breaks root. imgct.py import it into game.py

    After import imgct package root and try to open the game and it won't open. You will get a Runmain Error. Undo what you did and the game opens.

    All py open NullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNullNull

    • Metin2 Dev 1
  12. Peer.cpp add 

    #include <sstream>

     

    spacer.png


    spacer.png

    spacer.png

     

     

    net.GetChannelName

    It has no function in my files. I installed the system without any problems. But I guess it doesn't match with my files. I'm changing channels, but the old channel count still remains under the minimap.

    That's why Vegas' editing works better.

    edit game.py

    self.interface.RefreshServerInfo(channelNumber)

    Edit interfacemodule.py.

    if app.BL_MOVE_CHANNEL:
    def RefreshServerInfo(self, channelNumber):
    if self.wndMiniMap:
    self.wndMiniMap.RefreshServerInfo(channelNumber)

    edit minimap.py

    if app.BL_MOVE_CHANNEL:
    def RefreshServerInfo(self, channelNumber):
    if channelNumber == 99:
    serverInfoStr = serverInfo.SERVER_1 + ' - Common Channel'
    else:
    serverInfoStr = serverInfo.SERVER_1 + ' - ' + 'Channel ' + str(channelNumber)
    self.serverInfo.SetText(serverInfoStr)
    net.SetServerInfo(serverInfoStr)

    fixed.

  13. Everything works smoothly. Thank you very much Mali61. There is just one small problem. The WJ_TRADABLE_ICON effect does not appear when the window is opened. If I just click on the window or object, the effect comes on.

  14. 53 minutes ago, V0lvox said:

    I do have it like this:
     

                if (bAdd) {
    #ifdef __CHANGE_LOOK_SYSTEM__
                    if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
                        m_pOwner->SetPart(PART_WEAPON, GetItemLook() > 0 ? GetItemLook() : GetVnum());
    #else
                    if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
                        m_pOwner->SetPart(PART_WEAPON, GetVnum());
    #endif
                } else {
                    if (m_wCell == INVENTORY_MAX_NUM + WEAR_WEAPON)
                        m_pOwner->SetPart(PART_WEAPON, 0);
                }

     

    The problem persists. The case is not related to ITEM_WEAPON. The problem is elsewhere. But I don't know where it is.

    No problem with armor. There is only one problem with the gun.

    @ MaliCan you help with this?

    Thank You bro.

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