elfeush Posted May 20, 2018 Posted May 20, 2018 Hey any one knew this slot_bit_type ? {back} not 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?
0 guytis Posted September 15, 2019 Posted September 15, 2019 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.
0 Nevermind25 Posted September 15, 2019 Posted September 15, 2019 19 hours ago, guytis said: I did it, so don't say you can't. Regards. You can help or give a photo of that?
0 Nevermind25 Posted September 26, 2019 Posted September 26, 2019 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?
0 Rootware Posted September 26, 2019 Posted September 26, 2019 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. 1
0 guytis Posted September 27, 2019 Posted September 27, 2019 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); }
0 Nevermind25 Posted September 27, 2019 Posted September 27, 2019 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
0 Nevermind25 Posted September 27, 2019 Posted September 27, 2019 @guytis in ItemList.cpp is the same? i think that yes but you are the wiseman
0 Nevermind25 Posted September 27, 2019 Posted September 27, 2019 I didn't say nothing, the correction must be done in both files ItemList.cpp and InventoryUpdate.cpp Else when you log in the character the fixed slot will be unequipped.-
0 guytis Posted September 28, 2019 Posted September 28, 2019 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); } 1
0 sandeagle Posted September 30, 2019 Posted September 30, 2019 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.
0 Nevermind25 Posted September 30, 2019 Posted September 30, 2019 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
0 xPeNaChO Posted October 4, 2019 Posted October 4, 2019 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.
0 Nevermind25 Posted October 4, 2019 Posted October 4, 2019 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
0 LucasDesigner Posted December 15, 2019 Posted December 15, 2019 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
Question
elfeush
Hey any one knew this slot_bit_type ? {back} not
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?
39 answers to this question
Recommended Posts