Welcome to MaxCheaters.com

Register now to gain access to all of our features. Once registered and logged in, you will be able to create topics, post replies to existing threads

  • 0

Help Inventroy slot problem (Vanganth)


Question

Hey any one knew this slot_bit_type ?             {back} not                                    slot.png.1831b46dc30822c33ddf7758950856e1.png

 

          here you got types slots i think this slot it's hairall but its same like hair slot So its hairall / back or hairex but this all slots don't working maybe some one knoe how this working?                                              

 

                                                                                                                             sor.png.b6bbaa222be5f733bb89d6db3ae15865.png

Share this post


Link to post
Share on other sites
  • Answers 38
  • Created
  • Last Reply

Top Posters For This Question

Top Posters For This Question

Popular Posts

you don't need to compare 0 with 0 in C, just use if (!_wcsmp(wstr, L"yourtext"))

Take L2PHX and sniff CharInfo packet from L2OFF and L2J servers. You need equip problem item to char slots and you will find diffs in your sending info. In depending from result you will see where you get wrong ID by Inventory slot mask.

yes yes     int ItemListFix(PCHAR buf, int bufLen, CItem *pItem, WORD ItemType, DWORD ObjectID, DWORD ItemID, DWORD Count, WORD ItemType2, WORD CustomType1, WORD IsEquiped, DWORD BodyPart, WORD EnchantLevel, WORD CustomType2) { //Old FMT: "hdddhhhdhh" const char *format = "hdddhhhdhhdd"; //New IL Format DWORD AugmentationID = 0; DWORD Mana = 0; // DWORD itemId = 0; // DWORD SlotType = 0; if(pItem->IsValidItem()) { AugmentationID = pItem->nAugmentationID;

Posted Images

Recommended Posts

  • 0
17 hours ago, Nevermind25 said:

In my knowledge in both slots must be the same item, back slot does not exist for interlude, just hair/hairall and underwear. 

If you think, you cant put at the same time a hat and a noblesse tiara, or party mask 

I did it, so don't say you can't. Regards.

Share this post


Link to post
Share on other sites
  • 0

File CharInfo.cpp CPacketFix::CharinfoBCfix, CPacketFix::CharInfoFix 

/* d */ Packet.WriteD(BaseClass);

		INT32 dhairId = va_arg(tag, INT32);
		INT32 headId = va_arg(tag, INT32);
		INT32 rhandId = va_arg(tag, INT32);
		INT32 lhandId = va_arg(tag, INT32);
		INT32 glovesId = va_arg(tag, INT32);
		INT32 chestId = va_arg(tag, INT32);
		INT32 legsId = va_arg(tag, INT32);
		INT32 feetId = va_arg(tag, INT32);
		INT32 backId = va_arg(tag, INT32);
		INT32 lrhandId = va_arg(tag, INT32);
		INT32 hairId = va_arg(tag, INT32);
		INT32 faceId = 0;	//interlude addon
		//removed visualarmor
/* d */ Packet.WriteD(dhairId);	//dhair
/* d */ Packet.WriteD(headId);	//head
/* d */ Packet.WriteD(rhandId);	//rhand
/* d */ Packet.WriteD(lhandId);	//lhand
/* d */ Packet.WriteD(glovesId);	//gloves
/* d */ Packet.WriteD(chestId);	//chest
/* d */ Packet.WriteD(legsId);	//legs
/* d */ Packet.WriteD(feetId);	//feet
/* d */ Packet.WriteD(backId);	//back
/* d */ Packet.WriteD(lrhandId);	//lrhand
/* d */ Packet.WriteD(hairId);	//hair
/* d */ Packet.WriteD(faceId); //Face slot

In the file Userinfo.cpp  seems to be the same code but with CPacketFix::UserInfoFix and CPacketFix::GMUserInfoFix

 

/* d */ Packet.WriteD(BaseClass);

		INT32 dhairId = va_arg(tag, INT32);
		INT32 headId = va_arg(tag, INT32);
		INT32 rhandId = va_arg(tag, INT32);
		INT32 lhandId = va_arg(tag, INT32);
		INT32 glovesId = va_arg(tag, INT32);
		INT32 chestId = va_arg(tag, INT32);
		INT32 legsId = va_arg(tag, INT32);
		INT32 feetId = va_arg(tag, INT32);
		INT32 backId = va_arg(tag, INT32);
		INT32 lrhandId = va_arg(tag, INT32);
		INT32 hairId = va_arg(tag, INT32);
		INT32 faceId = 0;	//interlude addon 
		//visualarmor removed
/* d */ Packet.WriteD(dhairId);	//dhair
/* d */ Packet.WriteD(headId);	//head
/* d */ Packet.WriteD(rhandId);	//rhand
/* d */ Packet.WriteD(lhandId);	//lhand
/* d */ Packet.WriteD(glovesId);	//gloves
/* d */ Packet.WriteD(chestId);	//chest
/* d */ Packet.WriteD(legsId);	//legs
/* d */ Packet.WriteD(feetId);	//feet
/* d */ Packet.WriteD(backId);	//back
/* d */ Packet.WriteD(lrhandId);	//lrhand
/* d */ Packet.WriteD(hairId);	//hair
/* d */ Packet.WriteD(faceId); //Face slot

 

Someone can help to fix this? 

Share this post


Link to post
Share on other sites
  • 0

Take L2PHX and sniff CharInfo packet from L2OFF and L2J servers. You need equip problem item to char slots and you will find diffs in your sending info. In depending from result you will see where you get wrong ID by Inventory slot mask.

  • Upvote 1

Share this post


Link to post
Share on other sites
  • 0

fix

#include "StdAfx.h"
#include "Packets.h"

int InventoryUpdateFix(PCHAR buf, int bufLen, CItem *pItem, WORD UpdateType, WORD ItemType, DWORD ObjectID, DWORD ItemID, DWORD Count, WORD ItemType2, WORD CustomType1, WORD IsEquiped, DWORD BodyPart, WORD EnchantLevel, WORD CustomType2)
{
	// Old FMT:			 "hhdddhhhdhh"
	const char *format = "hhdddhhhdhhdd"; //New IL Format
	DWORD AugmentationID = 0;
	DWORD Mana = 0;
//	DWORD itemId = 0;
//	DWORD SlotType = 0;
	if(pItem->IsValidItem())
	{
		AugmentationID = pItem->nAugmentationID;
		Mana = pItem->nManaLeft/60;

//		SlotType = pItem->pSID->nSlotType;
//		itemId = pItem->pSID->nItemID;
//		g_Log.Add(CLog::Error, "----InventoryUpdateFix----");
//		g_Log.Add(CLog::Error, "nItemId: [%d] nItemType[%d]",itemId,SlotType  );
//		g_Log.Add(CLog::Error, "UpdateType: [%d] ItemType2[%d] CustomType1[%d] BodyPart[%d] CustomType2[%d]",UpdateType,ItemType2,CustomType1,BodyPart,CustomType2  );
//		g_Log.Add(CLog::Error, "--------------------------");

+		if (BodyPart ==1)
+			BodyPart = 262144;

	}
	return Assemble(buf, bufLen, format, UpdateType, ItemType, ObjectID, ItemID, Count, ItemType2
		,CustomType1, IsEquiped, BodyPart, EnchantLevel, CustomType2, AugmentationID, Mana);
}

 

Share this post


Link to post
Share on other sites
  • 0
7 hours ago, guytis said:

fix


#include "StdAfx.h"
#include "Packets.h"

int InventoryUpdateFix(PCHAR buf, int bufLen, CItem *pItem, WORD UpdateType, WORD ItemType, DWORD ObjectID, DWORD ItemID, DWORD Count, WORD ItemType2, WORD CustomType1, WORD IsEquiped, DWORD BodyPart, WORD EnchantLevel, WORD CustomType2)
{
	// Old FMT:			 "hhdddhhhdhh"
	const char *format = "hhdddhhhdhhdd"; //New IL Format
	DWORD AugmentationID = 0;
	DWORD Mana = 0;
//	DWORD itemId = 0;
//	DWORD SlotType = 0;
	if(pItem->IsValidItem())
	{
		AugmentationID = pItem->nAugmentationID;
		Mana = pItem->nManaLeft/60;

//		SlotType = pItem->pSID->nSlotType;
//		itemId = pItem->pSID->nItemID;
//		g_Log.Add(CLog::Error, "----InventoryUpdateFix----");
//		g_Log.Add(CLog::Error, "nItemId: [%d] nItemType[%d]",itemId,SlotType  );
//		g_Log.Add(CLog::Error, "UpdateType: [%d] ItemType2[%d] CustomType1[%d] BodyPart[%d] CustomType2[%d]",UpdateType,ItemType2,CustomType1,BodyPart,CustomType2  );
//		g_Log.Add(CLog::Error, "--------------------------");

+		if (BodyPart ==1)
+			BodyPart = 262144;

	}
	return Assemble(buf, bufLen, format, UpdateType, ItemType, ObjectID, ItemID, Count, ItemType2
		,CustomType1, IsEquiped, BodyPart, EnchantLevel, CustomType2, AugmentationID, Mana);
}

 

awesome, i would delayed a entire month xD

Share this post


Link to post
Share on other sites
  • 0
6 hours ago, Nevermind25 said:

@guytis   en ItemList.cpp es lo mismo? Creo que sí, pero tú eres el sabio

 

yes yes

 

 

int ItemListFix(PCHAR buf, int bufLen, CItem *pItem, WORD ItemType, DWORD ObjectID, DWORD ItemID, DWORD Count, WORD ItemType2, WORD CustomType1, WORD IsEquiped, DWORD BodyPart, WORD EnchantLevel, WORD CustomType2)
{
	//Old FMT:			 "hdddhhhdhh"
	const char *format = "hdddhhhdhhdd"; //New IL Format
						 
	DWORD AugmentationID = 0;
	DWORD Mana = 0;
//	DWORD itemId = 0;
//	DWORD SlotType = 0;
	if(pItem->IsValidItem())
	{
		AugmentationID = pItem->nAugmentationID;
		Mana = pItem->nManaLeft / 60;

//		SlotType = pItem->pSID->nSlotType;
//		itemId = pItem->pSID->nItemID;
//		g_Log.Add(CLog::Error, "---------ItemListFix------");
//		g_Log.Add(CLog::Error, "nItemId: [%d] nItemType[%d]",itemId,SlotType  );
//		g_Log.Add(CLog::Error, "ItemType: [%d] ItemType2[%d] CustomType1[%d] BodyPart[%d] CustomType2[%d]",ItemType,ItemType2,CustomType1,BodyPart,CustomType2  );
//		g_Log.Add(CLog::Error, "---------------------------");

		if (BodyPart ==1)
			BodyPart = 262144;
	}
	return Assemble(buf, bufLen, format, ItemType, ObjectID, ItemID, Count, ItemType2
		,CustomType1, IsEquiped, BodyPart, EnchantLevel, CustomType2, AugmentationID, Mana);
}

 

  • Upvote 1

Share this post


Link to post
Share on other sites
  • 0
On 9/28/2019 at 8:10 AM, guytis said:

 

yes yes

 

 


int ItemListFix(PCHAR buf, int bufLen, CItem *pItem, WORD ItemType, DWORD ObjectID, DWORD ItemID, DWORD Count, WORD ItemType2, WORD CustomType1, WORD IsEquiped, DWORD BodyPart, WORD EnchantLevel, WORD CustomType2)
{
	//Old FMT:			 "hdddhhhdhh"
	const char *format = "hdddhhhdhhdd"; //New IL Format
						 
	DWORD AugmentationID = 0;
	DWORD Mana = 0;
//	DWORD itemId = 0;
//	DWORD SlotType = 0;
	if(pItem->IsValidItem())
	{
		AugmentationID = pItem->nAugmentationID;
		Mana = pItem->nManaLeft / 60;

//		SlotType = pItem->pSID->nSlotType;
//		itemId = pItem->pSID->nItemID;
//		g_Log.Add(CLog::Error, "---------ItemListFix------");
//		g_Log.Add(CLog::Error, "nItemId: [%d] nItemType[%d]",itemId,SlotType  );
//		g_Log.Add(CLog::Error, "ItemType: [%d] ItemType2[%d] CustomType1[%d] BodyPart[%d] CustomType2[%d]",ItemType,ItemType2,CustomType1,BodyPart,CustomType2  );
//		g_Log.Add(CLog::Error, "---------------------------");

		if (BodyPart ==1)
			BodyPart = 262144;
	}
	return Assemble(buf, bufLen, format, ItemType, ObjectID, ItemID, Count, ItemType2
		,CustomType1, IsEquiped, BodyPart, EnchantLevel, CustomType2, AugmentationID, Mana);
}

 

 

you rly did a great job..thx man.

Share this post


Link to post
Share on other sites
  • 0

here still have a error, some items in c6 are hairall and must use the two slots (circlets, hats) and some other uses 1 slot and it suposes that you can equip for example a rabbit ear an a eye patch, this fix is good, if i find the way to make the other i'll paste here the code

Share this post


Link to post
Share on other sites
  • 0

When adding the fix, what would be the method that should be used in the type of itemdata, because I tested and is using underwear type, but that would not be correct. Because this item is next to the necklace.

Share this post


Link to post
Share on other sites
  • 0
15 hours ago, xPeNaChO said:

When adding the fix, what would be the method that should be used in the type of itemdata, because I tested and is using underwear type, but that would not be correct. Because this item is next to the necklace.

anyway, the fix is good

 

the correct position is this. 

 

[hair] [helmet] [hair2] [underwear] [necklace]

================== 

[hairall] [helmet] [hairall] [underwear] [necklace]

 

Some interlude has the {back} slot? in this case the back is used like c4 

Share this post


Link to post
Share on other sites
  • 0

A sua adaptação foi super boa, mas ainda não passou de uma gambiarra .. precisa ser feita, mas algumas coisas fica oculta após ser gerada algum erro no código .. 

 

mass parabéns caminho tá certo :thumbs-up:

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.