Jump to content

FlorinMarian

Premium
  • Posts

    305
  • Joined

  • Last visited

  • Days Won

    2
  • Feedback

    0%

Posts posted by FlorinMarian

  1. Hi, guys!

    I've studied C++ last year at informatics but I can't say that it was love at first seen.

    If anyone can see where's the nullptr which causes this, i'll be very glad to give thank him.

    [New LWP 100559]
    Core was generated by `./srv1-ch1-core1'.
    Program terminated with signal SIGABRT, Aborted.
    #0  thr_kill () at thr_kill.S:3
    3       thr_kill.S: No such file or directory.
    [Current thread is 1 (LWP 100121)]
    (gdb) bt
    #0  thr_kill () at thr_kill.S:3
    #1  0x00e5239a in __raise (s=6) at /usr/src/lib/libc/gen/raise.c:52
    #2  0x00de2ad1 in abort () at /usr/src/lib/libc/stdlib/abort.c:67
    #3  0x00d7f4bf in report_failure (err=<optimized out>, thrown_exception=0xf2aa7dc0) at cxxrt_exception.cc:719
    #4  0x00d7e232 in operator new (size=<optimized out>) at cxxrt_memory.cc:100
    #5  0x008aecf9 in CHARACTER_MANAGER::CreateCharacter (this=0xffffd6a8, name=0x251f149d "Spirit al m\342niei comun", dwPID=0) at char_manager.cpp:91
    #6  0x008afbdb in CHARACTER_MANAGER::SpawnMob (this=<optimized out>, dwVnum=1065, lMapIndex=660069, x=268363, y=732709, z=0, bSpawnMotion=<optimized out>, iRot=148, bShow=<optimized out>)
        at char_manager.cpp:441
    #7  0x0088b8f7 in CHARACTER::Dead (this=0xf6d5ec80, pkKiller=<optimized out>, bImmediateDead=<optimized out>) at char_battle.cpp:1619
    #8  0x008f60e3 in (anonymous namespace)::FKillSectree::operator() (this=<optimized out>, ent=0xf6d5ec80) at dungeon.cpp:979
    #9  FCollectEntity::ForEach<(anonymous namespace)::FKillSectree> (this=<optimized out>, f=...) at ./sectree.h:73
    #10 SECTREE_MAP::for_each<(anonymous namespace)::FKillSectree> (this=<optimized out>, rfunc=...) at ./sectree_manager.h:81
    #11 CDungeon::KillAll (this=0x55268d00) at dungeon.cpp:1024
    #12 0x0096f294 in quest::dungeon_kill_all (L=<optimized out>) at questlua_dungeon.cpp:1494
    #13 0x00d12828 in luaD_precall (L=0xe2f77880, func=0xa8652d18) at ldo.c:260
    #14 0x00d202c7 in luaV_execute (L=0xe2f77880) at lvm.c:627
    #15 0x00d12f08 in resume (L=0xe2f77880, ud=0xffff9f5c) at ldo.c:344
    #16 0x00d123f6 in luaD_rawrunprotected (L=0xe2f77880, f=0xd12e90 <resume>, ud=0xffff9f5c) at ldo.c:88
    #17 0x00d12d45 in lua_resume (L=0xe2f77880, nargs=0) at ldo.c:371
    #18 0x00969001 in quest::CQuestManager::RunState (this=0xfffface0, qs=...) at questlua.cpp:1012
    #19 0x009952bf in quest::CQuestManager::ExecuteQuestScript (pc=..., quest_name=..., state=0,
        code=0x25067c00 "if pc . in_dungeon ( ) and pc . get_map_index ( ) >= 660000 and pc . get_map_index ( ) < 670000 then d . kill_all ( ) \nd . setqf2 ( \"deviltower_zone\" , \"9_done\" , 1 ) \nnotice_multiline ( gameforge [ g"..., code_size=434, pChatScripts=0x0, bUseCache=true) at questmanager.cpp:1791
    #20 0x0099214f in quest::CQuestManager::ExecuteQuestScript (pc=..., quest_index=19, state=0,
        code=0x25067c00 "if pc . in_dungeon ( ) and pc . get_map_index ( ) >= 660000 and pc . get_map_index ( ) < 670000 then d . kill_all ( ) \nd . setqf2 ( \"deviltower_zone\" , \"9_done\" , 1 ) \nnotice_multiline ( gameforge [ g"..., code_size=434, pChatScripts=0x0, bUseCache=<optimized out>) at questmanager.cpp:1737
    #21 0x0099b658 in quest::NPC::HandleEvent (this=0x2503d694, pc=..., EventIndex=1) at questnpc.cpp:524
    #22 0x0099bc91 in quest::NPC::OnKill (this=0x2503d694, pc=...) at questnpc.cpp:321
    #23 0x00992708 in quest::CQuestManager::Kill (this=0xfffface0, pc=750, npc=1093) at questmanager.cpp:526
    #24 0x0088d22c in CHARACTER::Reward (this=0xf7b47980, bItemDrop=<optimized out>) at char_battle.cpp:879
    #25 0x0088bec0 in CHARACTER::Dead (this=0xf7b47980, pkKiller=<optimized out>, bImmediateDead=<optimized out>) at char_battle.cpp:1634
    #26 0x008907c5 in CHARACTER::Damage (this=0xf7b47980, pAttacker=0xf5f6a600, dam=3596, type=DAMAGE_TYPE_NORMAL) at char_battle.cpp:2394
    #27 0x0085ba90 in battle_hit (pkAttacker=0xf5f6a600, pkVictim=0xf7b47980, iRetDam=@0xffffa45c: 2551) at battle.cpp:852
    #28 0x0085b8cf in battle_melee_attack (ch=0xf5f6a600, victim=0xf7b47980) at battle.cpp:220
    #29 0x0088a61e in CHARACTER::Attack (this=0xf5f6a600, pkVictim=0xf7b47980, bType=0 '\000') at char_battle.cpp:321
    #30 0x00922d36 in CInputMain::Attack (this=<optimized out>, ch=0xf5f6a600, header=2 '\002', data=0xa5d92f00 "\002") at input_main.cpp:1998
    #31 0x00926983 in CInputMain::Analyze (this=0xa77206f8, d=0xa7720680, bHeader=2 '\002', c_pData=0xa5d92f00 "\002") at input_main.cpp:4396
    #32 0x00912850 in CInputProcessor::Process (this=0xa77206f8, lpDesc=0xa7720680, c_pvOrig=0xa5d92f00, iBytes=8, r_iBytesProceed=@0xffffa688: 0) at input.cpp:118
    #33 0x008e9055 in DESC::ProcessInput (this=0xa7720680) at desc.cpp:306
    #34 0x00a28194 in io_loop (fdw=0x21a27660) at main.cpp:1091
    #35 0x00a27e79 in idle () at main.cpp:982
    #36 0x00a26385 in main (argc=1, argv=0xffffdbf8) at main.cpp:609
    (gdb)

    Thank you!

     

    EDIT: Every crash related to this fails at " LPCHARACTER ch = M2_NEW CHARACTER;" and each .core generated has ~ 3GB (maximum allowed for 32bits binary)

    This makes sense to be vulnerable to a exploit which allocate memory until it crashes.

  2. Hi, guys!

    Even i've passed C++ exam on faculty, I didn't spent enough time on it and I'd love to know how this enum works.

    enum EItemWearableFlag
    {
    	WEARABLE_BODY	= (1 << 0),
    	WEARABLE_HEAD	= (1 << 1),
    	WEARABLE_FOOTS	= (1 << 2),
    	WEARABLE_WRIST	= (1 << 3),
    	WEARABLE_WEAPON	= (1 << 4),
    	WEARABLE_NECK	= (1 << 5),
    	WEARABLE_EAR	= (1 << 6),
    	WEARABLE_UNIQUE	= (1 << 7),
    	WEARABLE_SHIELD	= (1 << 8),
    	WEARABLE_ARROW	= (1 << 9),
    	WEARABLE_HAIR	= (1 << 10),
    	WEARABLE_ABILITY		= (1 << 11),
    	WEARABLE_COSTUME_BODY	= (1 << 12),
    	WEARABLE_COSTUME_HAIR	= (1 << 13),
    #ifdef ENABLE_MOUNT_COSTUME_SYSTEM
    	WEARABLE_COSTUME_MOUNT	= (1 << 14),
    #endif
    #ifdef __ACCE_COSTUME_SYSTEM__
    	WEARABLE_COSTUME_SASH	= (1 << 15),
    #endif
    #ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    	WEARABLE_COSTUME_WEAPON = (1 << 16),
    #endif
    #ifdef __PET_SYSTEM__
    	WEARABLE_NORMAL_PET		= (1 << 17),
    #endif
    #if defined(ENABLE_COSTUME_ITEM_SKIN)
    	WEARABLE_PET_SKIN		= (1 << 18),
    	WEARABLE_MOUNT_SKIN		= (1 << 19),
    #endif
    #ifdef ITEM_TALISMAN_EQUIPMENT
    	WEARABLE_PENDANT		= (1 << 20),
    #endif
    };

    What I don't understand, is why this statement isn't true for my item?

    	else if (GetWearFlag() & WEARABLE_PENDANT)
    		return WEAR_PENDANT;
    9620	È­¿°ÀÇ ³ë¸®°³ +20	ITEM_ARMOR	ARMOR_PENDANT	1	NONE	ITEM_TUNABLE	WEAR_PENDANT	NONE	360000	5000	9621	440	0	LEVEL	20	LIMIT_NONE	0	APPLY_ENCHANT_FIRE	20	APPLY_NONE	0	APPLY_NONE	0	APPLY_NONE	0	0	0	0	0	0	0	0	0	0

    Thank you!

  3. 48 minutes ago, TMP4 said:

    uiinventory.py (It's a default code, you may have modified)

    	def RefreshCostumeSlot(self):
    		getItemVNum=player.GetItemIndex
    		
    		for i in xrange(item.COSTUME_SLOT_COUNT):
    			slotNumber = item.COSTUME_SLOT_START + i
    			self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
    
    		self.wndEquip.RefreshSlot()

    As you see the default code only works if it's in order like 19..20..21..22..23.
    While your costum item stuffs ends on 23, you have pets on 27 so it's not working.

    Plus I'm not sure if your pet slot are calculated in COSTUME_SLOT_COUNT but you did not show it so idk. (GameType.h look for #ifdef ENABLE_COSTUME_SYSTEM it should have only 1 search result)

    You may can do something like this:

      Hide contents
    	def RefreshCostumeSlot(self):
    		getItemVNum=player.GetItemIndex
    		
    		for i in xrange(item.COSTUME_SLOT_COUNT):
    			slotNumber = item.COSTUME_SLOT_START + i
    			self.wndEquip.SetItemSlot(slotNumber, getItemVNum(slotNumber), 0)
    
    		self.wndEquip.SetItemSlot(27, getItemVNum(27), 0)
    
    		self.wndEquip.RefreshSlot()

     

    Not sure if it's works, it would be better to have them in order and have it calculated in COSTUME_SLOT_COUNT.

    That did the trick.

    It wasn't really 27 as slot number but setting correct slot number solved my problem.

    Thank you !

    #CloseRequest

  4. Hi, guys!

    I've spent lot of hours but i'm out of ideas, any help will be appreciated.

    What I try to achieve? I try to add PET_SLOT on CostumeWindow. It works like a charm if i try to add it on InventoryWindowEx.py but isn't visible if when I try to apply it on CostumeWindow.py.

    Very important: For debugging purposes I've moved other costume items to "x":115, "y":158 and I can confirm coords are correct (I have an extended window, not classical new_costume_bg.jpg). It's also important to mention that I've mixed item.EQUIPMENT_PET with item.EQUIPMENT_BELT and I had pet item on belt slot but belt dissapeared somewhere on costume window.

    ItemData.h

    		enum EItemType
    		{
    			ITEM_TYPE_NONE,					//0
    			ITEM_TYPE_WEAPON,				//1//¹«±â
    			ITEM_TYPE_ARMOR,				//2//°©¿Ê
    			ITEM_TYPE_USE,					//3//¾ÆÀÌÅÛ »ç¿ë
    			ITEM_TYPE_AUTOUSE,				//4
    			ITEM_TYPE_MATERIAL,				//5
    			ITEM_TYPE_SPECIAL,				//6 //½ºÆä¼È ¾ÆÀÌÅÛ
    			ITEM_TYPE_TOOL,					//7
    			ITEM_TYPE_LOTTERY,				//8//º¹±Ç
    			ITEM_TYPE_ELK,					//9//µ·
    			ITEM_TYPE_METIN,				//10
    			ITEM_TYPE_CONTAINER,			//11
    			ITEM_TYPE_FISH,					//12//³¬½Ã
    			ITEM_TYPE_ROD,					//13
    			ITEM_TYPE_RESOURCE,				//14
    			ITEM_TYPE_CAMPFIRE,				//15
    			ITEM_TYPE_UNIQUE,				//16
    			ITEM_TYPE_SKILLBOOK,			//17
    			ITEM_TYPE_QUEST,				//18
    			ITEM_TYPE_POLYMORPH,			//19
    			ITEM_TYPE_TREASURE_BOX,			//20//º¸¹°»óÀÚ
    			ITEM_TYPE_TREASURE_KEY,			//21//º¸¹°»óÀÚ ¿­¼è
    			ITEM_TYPE_SKILLFORGET,			//22
    			ITEM_TYPE_GIFTBOX,				//23
    			ITEM_TYPE_PICK,					//24
    			ITEM_TYPE_HAIR,					//25//¸Ó¸®
    			ITEM_TYPE_TOTEM,				//26//ÅäÅÛ
    			ITEM_TYPE_BLEND,				//27//»ý¼ºµÉ¶§ ·£´ýÇÏ°Ô ¼Ó¼ºÀÌ ºÙ´Â ¾à¹°
    			ITEM_TYPE_COSTUME,				//28//ÄÚ½ºÃõ ¾ÆÀÌÅÛ (2011³â 8¿ù Ãß°¡µÈ ÄÚ½ºÃõ ½Ã½ºÅÛ¿ë ¾ÆÀÌÅÛ)
    			ITEM_TYPE_DS,					//29 //¿ëÈ¥¼®
    			ITEM_TYPE_SPECIAL_DS,			//30 // Ư¼öÇÑ ¿ëÈ¥¼® (DS_SLOT¿¡ Âø¿ëÇÏ´Â UNIQUE ¾ÆÀÌÅÛÀ̶ó »ý°¢ÇÏ¸é µÊ)
    			ITEM_TYPE_EXTRACT,					//31 ÃßÃâµµ±¸.
    			ITEM_TYPE_SECONDARY_COIN,			//32 ¸íµµÀü.
    			ITEM_TYPE_RING,						//33 ¹ÝÁö (À¯´ÏÅ© ½½·ÔÀÌ ¾Æ´Ñ ¼ø¼ö ¹ÝÁö ½½·Ô)
    			ITEM_TYPE_BELT,						//34 º§Æ®
    #ifdef ENABLE_ATTR_TRANSFER_SYSTEM
    			ITEM_TYPE_TRANSFER_SCROLL,		//35
    #endif
    #ifdef ENABLE_GROWTH_PET_SYSTEM
    			ITEM_TYPE_PET,					//36
    #endif
    #ifdef __UNIMPLEMENTED__
    			ITEM_TYPE_MEDIUM,				//37
    			ITEM_TYPE_GACHA					//38 Florin
    #endif
    #ifdef ENABLE_PET_SLOT
    			ITEM_TYPE_NORMAL_PET,			//39
    #endif
    			ITEM_TYPE_MAX_NUM,
    		};
    
    		enum EWearPositions
    		{
    			WEAR_BODY,          // 0
    			WEAR_HEAD,          // 1
    			WEAR_FOOTS,         // 2
    			WEAR_WRIST,         // 3
    			WEAR_WEAPON,        // 4
    			WEAR_NECK,          // 5
    			WEAR_EAR,           // 6
    			WEAR_UNIQUE1,       // 7
    			WEAR_UNIQUE2,       // 8
    			WEAR_ARROW,         // 9
    			WEAR_SHIELD,        // 10
    
    			WEAR_ABILITY1,  // 11
    			WEAR_ABILITY2,  // 12
    			WEAR_ABILITY3,  // 13
    			WEAR_ABILITY4,  // 14
    			WEAR_ABILITY5,  // 15
    			WEAR_ABILITY6,  // 16
    			WEAR_ABILITY7,  // 17
    			WEAR_ABILITY8,  // 18
    			WEAR_COSTUME_BODY,	// 19
    			WEAR_COSTUME_HAIR,	// 20
    
    #ifdef ENABLE_MOUNT_COSTUME_SYSTEM
    			WEAR_COSTUME_MOUNT,	// 21
    #endif
    
    #ifdef ENABLE_SASH_SYSTEM
    			WEAR_COSTUME_SASH,	// 22
    #endif
    
    #ifdef ENABLE_WEAPON_COSTUME_SYSTEM
    			WEAR_COSTUME_WEAPON,	//23
    #endif
    
    			WEAR_RING1,			// 24	: ½Å±Ô ¹ÝÁö½½·Ô1 (¿ÞÂÊ)
    			WEAR_RING2,			// 25	: ½Å±Ô ¹ÝÁö½½·Ô2 (¿À¸¥ÂÊ)
    
    			WEAR_BELT,			// 26	: ½Å±Ô º§Æ®½½·Ô
    
    #ifdef ENABLE_PET_SLOT
    			WEAR_NORMAL_PET,	// 27
    #endif
    
    			WEAR_MAX_NUM = 32,
    		};

    GameType.h

    #ifdef ENABLE_NEW_EQUIPMENT_SYSTEM
    	const DWORD c_New_Equipment_Start = c_Equipment_Start + 24;	// 21
    	const DWORD c_New_Equipment_Count = 3
    #ifdef ENABLE_PET_SLOT
    	+ 1
    #endif
    	;
    	const DWORD c_Equipment_Ring1 = c_New_Equipment_Start + 0;
    	const DWORD c_Equipment_Ring2 = c_New_Equipment_Start + 1;
    	const DWORD c_Equipment_Belt  = c_New_Equipment_Start + 2;
    #endif
    #ifdef ENABLE_PET_SLOT
    	const DWORD c_Equipment_Pet   = c_New_Equipment_Start + 3;
    #endif

    PythonItemModule.cpp

    
    #ifdef ENABLE_PET_SLOT
    	PyModule_AddIntConstant(poModule, "EQUIPMENT_PET",				c_Equipment_Pet);
    #endif

     

    Thank you!

  5. You're too afraid about this issue which can be easily solved with small investment in remote backup and standalone webserver.

    About your idea, any method you will use will also require DB access.

    Most silly issues you can encounter following your path:

    1. It's hard to make a captcha which can't be bypassed

    2. If I understood correctly, you want to create account if it doesnt exists. What about typos? Eg. my account is "admin" and i write accidentaly "amdin" and may password admin. You will just make those who want to spam your DB easy life.

    Best regards, Florin.

  6. 1 minute ago, xGalardo said:

    Configuration: https://metin2.download/picture/oC8qAhsr0KFSZ8i79HVt2jifeO8904n7/.png

    Processor: Intel(R) Xeon(R) CPU X5650 @ 2.67GHz

    Ram: 7 GB

    VCpu: 4 x 2,66 ghz

    Without a massive overselling, should be fine.

    Maybe your provider has maybe problems with networking (packet loss).

    Play a little bit and check with this command if u have dropped packets: 

    netstat -idb -I <interface>

     

  7. Hi, there!

    You can extract this part with "who and what damage" from Dungeon Info System, which includes Ranking.

    I recommend to extract it from Overfall2 Serverfiles because there they have already lua integration and you have only to pickup any metin on any map instead of specific boss in specific dungeon.

    Best regards, Florin.

  8. 7 minutes ago, ByLost said:

    sys_log:

    [GM]Dev attack hack! time (delta, limit)=(0, 161) hack_count 10

     

    if (CheckSpeedHack)
    		{
    			int iDelta = (int) (pinfo->dwTime - ch->GetDesc()->GetClientTime());
    			int iServerDelta = (int) (dwCurTime - ch->GetDesc()->GetClientTime());
    
    			iDelta = (int) (dwCurTime - pinfo->dwTime);
    
    			// ½Ã°£ÀÌ ´Ê°Ô°£´Ù. ÀÏ´Ü ·Î±×¸¸ ÇصдÙ. ÁøÂ¥ ÀÌ·± »ç¶÷µéÀÌ ¸¹ÀºÁö üũÇؾßÇÔ. TODO
    			if (iDelta >= 30000)
    			{
    				sys_log(0, "SPEEDHACK: slow timer name %s delta %d", ch->GetName(), iDelta);
    				/* ch->GetDesc()->DelayedDisconnect(3); */
    			}
    			// 1ÃÊ¿¡ 20msec »¡¸® °¡´Â°Å ±îÁö´Â ÀÌÇØÇÑ´Ù.
    			else if (iDelta < -(iServerDelta / 50))
    			{
    				sys_log(0, "SPEEDHACK: DETECTED! %s (delta %d %d)", ch->GetName(), iDelta, iServerDelta);
    				/* ch->GetDesc()->DelayedDisconnect(3); */
    			}
    		}

     

    @FlorinMarian

    bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
    {
    	if (ch->m_kAttackLog.dwVID == victim->GetVID())
    	{
    		if (current_time - ch->m_kAttackLog.dwTime < GET_ATTACK_SPEED(ch))
    		{
    			INCREASE_SPEED_HACK_COUNT(ch);
    
    			sys_log(0, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d",
    					ch->GetName(),
    					current_time - ch->m_kAttackLog.dwTime,
    					GET_ATTACK_SPEED(ch),
    					ch->m_speed_hack_count);
    			if (test_server)
    			{
    				ch->ChatPacket(CHAT_TYPE_INFO, "%s attack hack! time (delta, limit)=(%u, %u) hack_count %d",
    						ch->GetName(),
    						current_time - ch->m_kAttackLog.dwTime,
    						GET_ATTACK_SPEED(ch),
    						ch->m_speed_hack_count);
    			}
    
    			SET_ATTACK_TIME(ch, victim, current_time);
    			SET_ATTACKED_TIME(ch, victim, current_time);
                if (ch->m_speed_hack_count >= 10)
    				/* ch->GetDesc()->DelayedDisconnect(3); */
    			return true;
    		}
    	}
    
    	SET_ATTACK_TIME(ch, victim, current_time);
    
    	if (victim->m_AttackedLog.dwPID == ch->GetPlayerID())
    	{
    		if (current_time - victim->m_AttackedLog.dwAttackedTime < GET_ATTACK_SPEED(ch))
    		{
    			INCREASE_SPEED_HACK_COUNT(ch);
    
    			sys_log(0, "%s Attack Speed HACK! time (delta, limit)=(%u, %u), hack_count = %d",
    					ch->GetName(),
    					current_time - victim->m_AttackedLog.dwAttackedTime,
    					GET_ATTACK_SPEED(ch),
    					ch->m_speed_hack_count);
    			if (test_server)
    			{
    				ch->ChatPacket(CHAT_TYPE_INFO, "Attack Speed Hack(%s), (delta, limit)=(%u, %u)",
    						ch->GetName(),
    						current_time - victim->m_AttackedLog.dwAttackedTime,
    						GET_ATTACK_SPEED(ch));
    			}
    
    			SET_ATTACKED_TIME(ch, victim, current_time);
                if (ch->m_speed_hack_count >= 10)
    				/* ch->GetDesc()->DelayedDisconnect(3); */
    			return true;
    		}
    	}
    
    	SET_ATTACKED_TIME(ch, victim, current_time);
    	return false;
    }

     

    It comes from my guess.

    Simple replace bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time) function with

    bool IS_SPEED_HACK(LPCHARACTER ch, LPCHARACTER victim, DWORD current_time)
    {
    	return false;
    }

     

    • Metin2 Dev 1
  9. Hi, guys!

    I've tried to fix it by myself but life shown me again I'm not enough experienced in python yet.

    The error:

    0713 16:00:27609 :: Traceback (most recent call last):
    
    0713 16:00:27609 ::   File "ui.py", line 2130, in OnOverInItem
    
    0713 16:00:27609 ::   File "ui.py", line 92, in __call__
    
    0713 16:00:27609 ::   File "ui.py", line 83, in __call__
    
    0713 16:00:27609 ::   File "uiInventory.py", line 1385, in OverInItem
    
    0713 16:00:27609 ::   File "uiInventory.py", line 1652, in ShowToolTip
    
    0713 16:00:27609 ::   File "uiToolTip.py", line 610, in SetInventoryItem
    
    0713 16:00:27609 ::   File "uiToolTip.py", line 1665, in AddItemData
    
    0713 16:00:27609 :: IndexError
    0713 16:00:27609 :: : 
    0713 16:00:27609 :: list index out of range
    0713 16:00:27609 :: 

    ui.py:  Click here

    uiiventory.py: Click here

    uitooltip.py: Click here

    Thank you !

    • Metin2 Dev 1
    • Think 1
×
×
  • 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.