Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

Autor Topic: FUENTE LEGADO BASE PIKE 4.3 (MUSERVER+DB+CLIENTE+SOURCE)  (Visto 1700 veces)

Dizzy, hola23, xscorpx and 3 Guests are viewing this topic.

Marcado como mejor respuesta por: hola23 Posteado November 03, 2025, 06:41:03 AM

Offline tuyentc #30 Posteado: November 03, 2025, 03:42:52 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 30
  • vn
fix in MasterSkillTree.cpp :
bool CMasterSkillTree::CheckMasterLevel(LPOBJ lpObj) // OK
{
#if(GAMESERVER_UPDATE>=401)

   
   if (gServerInfo.m_MasterSkillTree == 0)
   {
      return 0;
   }

   
   if (lpObj->Level >= gServerInfo.m_MaxLevel && lpObj->ChangeUp >= 2)
   {
      return 1;
   }

   
   return 0;

#endif
}

Gracias:


Offline samsunggon #31 Posteado: November 03, 2025, 03:45:25 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 466
  • Gracias recibida: 2625
  • ph
fix : if (gMasterSkillTree.CheckMasterLevel(lpObj) != 0)

change == is !=
Done
viết đủ 3000000000000000000000000
Super bro, problem solved

from what part of source? gameserver source? objectmanager.cpp? fiesta

gameserver source  > objectmanager.cpp


DISCORD: valentino1515


Offline jeffzkie69 #32 Posteado: November 03, 2025, 04:06:28 AM

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 164
  • Gracias recibida: 43
  • ph
link fix :
https://mega.nz/file/nRsCyIRJ#MttHNxq7tOgOnALFLFRmrp4jTn_4jcaPBLUi8ytkKRc

thank you! but i need to fix it on myself on source code, can you share where and what part is the fix thank you!


Offline samsunggon #33 Posteado: November 03, 2025, 05:31:23 AM | Modificado: November 03, 2025, 05:35:33 AM by samsunggon

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 466
  • Gracias recibida: 2625
  • ph
fix for exp bug / no level
or
1 mobs = lvl 400

i dont know if bug / misconfig

open gameserver > objectmanager.cpp
and

search this



DISCORD: valentino1515


Offline 2ooooo2 #34 Posteado: November 03, 2025, 06:44:01 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 32
  • Gracias recibida: 3
  • ve

Offline Genius05 #35 Posteado: November 03, 2025, 07:59:54 AM

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 164
  • Gracias recibida: 133
  • ve
link fix :
https://mega.nz/file/nRsCyIRJ#MttHNxq7tOgOnALFLFRmrp4jTn_4jcaPBLUi8ytkKRc

no funciona sube directo a 400lvl

si funciona pasa que no configura bien desde el common

experiencia intentaron llevarla a ssemu pero no la completaron.



Offline smil158 #36 Posteado: November 03, 2025, 09:07:52 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 14
  • Gracias recibida: 3
  • cn
Why can't I create a character in the game after entering my account? What's the problem?


Offline Genius05 #37 Posteado: November 03, 2025, 09:26:30 AM

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 164
  • Gracias recibida: 133
  • ve
Why can't I create a character in the game after entering my account? What's the problem?

But you can create what appears; you can check if "Common Create Character Settings" is enabled, and double-check the database.


Offline T-LEGENDARY #38 Posteado: November 03, 2025, 09:33:15 AM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 771
  • Gracias recibida: 12029
  • br
Noce por que bugean tantos src XD si no saben codear o solo copian y pegan aganlo bien XD como es un main que usa offset lo puedes romper en cualquier momento así que debes saber lo que estas haciendo tanto en el gameserver y main.dll.
Veo cantidad de src bugeados e.E

this is version 1.0 , pyke have version 1.9


Offline T-LEGENDARY #39 Posteado: November 03, 2025, 10:18:27 AM | Modificado: November 03, 2025, 10:34:06 AM by T-LEGENDARY

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 771
  • Gracias recibida: 12029
  • br
ORGANIZED SOURCE , I DON`T CORRET ANYTHING, JUST ORGANIZED , BUT I DON`T RECOMEND THIS SOURCE CODE ALOT BUGS.

this source code is 2019 visual studio




Offline 2ooooo2 #40 Posteado: November 03, 2025, 10:24:10 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 32
  • Gracias recibida: 3
  • ve
ORGANIZED SOURCE , I DON`T CORRET ANYTHING, JUST ORGANIZED , BUT I DON`T RECOMEND THIS SOURCE CODE ALOT BUGS


 

cuales errores le has encontrado?


Offline antoniodel #41 Posteado: November 03, 2025, 10:28:27 AM

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 78
  • Gracias recibida: 126
  • br
ORGANIZED SOURCE , I DON`T CORRET ANYTHING, JUST ORGANIZED , BUT I DON`T RECOMEND THIS SOURCE CODE ALOT BUGS


 

What errors or bugs were found on this server?


Offline T-LEGENDARY #42 Posteado: November 03, 2025, 10:28:58 AM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 771
  • Gracias recibida: 12029
  • br
ORGANIZED SOURCE , I DON`T CORRET ANYTHING, JUST ORGANIZED , BUT I DON`T RECOMEND THIS SOURCE CODE ALOT BUGS


 

cuales errores le has encontrado?

- try get item in daily reward
- try level up
- try see the beggins items in custom ranking but before put items in inventory
- and finally try see item tool tip " item information on custom ranking"
- try pvp

Gracias:


Offline 2ooooo2 #43 Posteado: November 03, 2025, 11:03:29 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 32
  • Gracias recibida: 3
  • ve
ORGANIZED SOURCE , I DON`T CORRET ANYTHING, JUST ORGANIZED , BUT I DON`T RECOMEND THIS SOURCE CODE ALOT BUGS.

this source code is 2019 visual studio


 
puedes subir solo el main a vs 2022? este de la publicacion me da error


Online hola23 #44 Posteado: November 03, 2025, 11:42:18 AM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 191
  • Gracias recibida: 4567
  • ar
-LOS FIX DAYLI - Y LEVEL YA SE ARREGLARON FUERON APORTADOS EN EL POST PRINCIPAL-

GRACIAS A TODOS LO QUE APORTARON PARA SOLUCIONAR EL BUG. EN ESPECIAL :  tuyentc


Offline 2ooooo2 #45 Posteado: November 03, 2025, 12:32:10 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 32
  • Gracias recibida: 3
  • ve
-LOS FIX DAYLI - Y LEVEL YA SE ARREGLARON FUERON APORTADOS EN EL POST PRINCIPAL-

GRACIAS A TODOS LO QUE APORTARON PARA SOLUCIONAR EL BUG. EN ESPECIAL :  tuyentc

en el post publicaste los source con los fix ya listo bro?


Online hola23 #46 Posteado: November 03, 2025, 12:44:07 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 191
  • Gracias recibida: 4567
  • ar
-LOS FIX DAYLI - Y LEVEL YA SE ARREGLARON FUERON APORTADOS EN EL POST PRINCIPAL-

GRACIAS A TODOS LO QUE APORTARON PARA SOLUCIONAR EL BUG. EN ESPECIAL :  tuyentc

en el post publicaste los source con los fix ya listo bro?

si bro todo completo. el fix ya echo q fue aportado y tambien la source completa . y tambien configurado para q cuando matas a un mobs de nivel 1- suba a nivel 2. y asi. ya corregido todo y dayli igual

Gracias:


Offline Genius05 #47 Posteado: November 03, 2025, 06:48:42 PM

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 164
  • Gracias recibida: 133
  • ve
-LOS FIX DAYLI - Y LEVEL YA SE ARREGLARON FUERON APORTADOS EN EL POST PRINCIPAL-

GRACIAS A TODOS LO QUE APORTARON PARA SOLUCIONAR EL BUG. EN ESPECIAL :  tuyentc

en el post publicaste los source con los fix ya listo bro?

si bro todo completo. el fix ya echo q fue aportado y tambien la source completa . y tambien configurado para q cuando matas a un mobs de nivel 1- suba a nivel 2. y asi. ya corregido todo y dayli igual

Saludos.. alguien probo los item acc. pues al activar el acc no aparece la aurora azul  de bajo del personaje o hay que activar algo desde el main.info.?


Offline 2ooooo2 #48 Posteado: November 03, 2025, 07:24:43 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 32
  • Gracias recibida: 3
  • ve
-LOS FIX DAYLI - Y LEVEL YA SE ARREGLARON FUERON APORTADOS EN EL POST PRINCIPAL-

GRACIAS A TODOS LO QUE APORTARON PARA SOLUCIONAR EL BUG. EN ESPECIAL :  tuyentc

en el post publicaste los source con los fix ya listo bro?

si bro todo completo. el fix ya echo q fue aportado y tambien la source completa . y tambien configurado para q cuando matas a un mobs de nivel 1- suba a nivel 2. y asi. ya corregido todo y dayli igual

Saludos.. alguien probo los item acc. pues al activar el acc no aparece la aurora azul  de bajo del personaje o hay que activar algo desde el main.info.?
[/quno lo he probado aun dejame reviso aver q tal

Gracias:


Offline quanhongle #49 Posteado: November 03, 2025, 08:25:35 PM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 4
  • Gracias recibida: 0
  • vn
-LOS FIX DAYLI - Y LEVEL YA SE ARREGLARON FUERON APORTADOS EN EL POST PRINCIPAL-

GRACIAS A TODOS LO QUE APORTARON PARA SOLUCIONAR EL BUG. EN ESPECIAL :  tuyentc

en el post publicaste los source con los fix ya listo bro?
Hello, can you pls tell me how to fix dailyreward,
I still was able to use it in the first install, but now I cannot ^^
thank you
si bro todo completo. el fix ya echo q fue aportado y tambien la source completa . y tambien configurado para q cuando matas a un mobs de nivel 1- suba a nivel 2. y asi. ya corregido todo y dayli igual


Offline 2ooooo2 #50 Posteado: November 03, 2025, 08:43:16 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 32
  • Gracias recibida: 3
  • ve
el acc se ve bien... lo que no se ve es el custom ranking se queda cargando y no aparece nada alguien sabe porque?


Online hola23 #51 Posteado: November 03, 2025, 09:06:00 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 191
  • Gracias recibida: 4567
  • ar
el acc se ve bien... lo que no se ve es el custom ranking se queda cargando y no aparece nada alguien sabe porque?

 el custom ranking si funciona perfecto bro.


Offline bigrealtk92 #52 Posteado: November 03, 2025, 09:52:30 PM

  • 0 puntos por ventas
  • *
  • Rank: Usuario activo
  • Posts: 60
  • Gracias recibida: 11
  • vn

Offline whisky123 #53 Posteado: November 03, 2025, 11:07:56 PM

  • 0 puntos por ventas
  • *
  • Rank: Destacado
  • Posts: 97
  • Gracias recibida: 32
  • tw
Where is the full source and muserver + client?


Offline Genius05 #54 Posteado: November 03, 2025, 11:22:48 PM

  • 0 puntos por ventas
  • *
  • Rank: Experto
  • Posts: 164
  • Gracias recibida: 133
  • ve
el acc se ve bien... lo que no se ve es el custom ranking se queda cargando y no aparece nada alguien sabe porque?

Si sale, a mí no :/ digo es la aurora de abajo que sale como el brillo a 11 de nivel pero igual vuelvo a checar, y para el custom ranking es solo aplicar la tabla en el db, la encuentra en la db de muserve


Offline smil158 #55 Posteado: Today at 01:01:51 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 14
  • Gracias recibida: 3
  • cn
Why can't I create a character in the game after entering my account? What's the problem?

But you can create what appears; you can check if "Common Create Character Settings" is enabled, and double-check the database.

https://imgur.com/a/xG5tDNw

I didn't do anything, this is how I entered the game. The database is also using the latest published version


Offline hoangha001 #56 Posteado: Today at 02:10:56 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 4
  • Gracias recibida: 0
  • vn
 pleas3 Can everyone please show me how to fix Post_item with Jewelbank? The situation is as follows: JCItemPublic.Hook(); and
gCustomJewelBank.Load(); share the same hook, which is 0x007DD0D9. So when I place JCItemPublic.Hook(); before gCustomJewelBank.Load();, Post_item works but Jewelbank does not, and vice versa; only one of the two can be used. How can I make both work?


Offline tuyentc #57 Posteado: Today at 04:08:55 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 30
  • vn
fix post item :

1 --> post_item.cpp
void HookRenderItemToolTip(int a1)
{
   ((void(__cdecl*)()) 0x007DCF20)();
   lpItemObj item = (lpItemObj) * (DWORD*)(a1 + 84);

   if (gInterface.CheckWindow(8))
   {
      return;
   }

   DWORD uniqId = 0;
   if (item)
   {
      int pos = -1;
      if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x18))
      {
         uniqId = item->UniqueID;
      }
      else if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x1C))
      {
         uniqId = item->UniqueID + 0x10000000;
      }
      else if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x20))
      {
         uniqId = item->UniqueID + 0x20000000;
      }

      // === CTRL + Right click = Post item ===
      if (pIsKeyRelease(VK_RBUTTON) && pIsKeyRepeat(VK_CONTROL))
      {
         JCItemPublic.PostItemProc(uniqId);
         return;
      }

      // === Right click = Jewel Bank ===
      if (GetKeyState(VK_RBUTTON) & 0x8000) 
      {
         // panel: normal / expanded / 2nd inventory
         int panel = *(DWORD*)(a1 + 44);

         
         if (panel == 200 || panel == 44 || panel == 131)
         {
            int start = (panel == 200) ? 12 : (panel == 44) ? 76 : 108;
            int Slot = item->PosX + (item->PosY * 8) + start;

            gCustomJewelBank.JewelBankSend(Slot);
            return;
         }
      }

      // === Default Right click = move / equip etc ===
      if (!pIsKeyRepeat(VK_CONTROL))
      {
         JCItemPublic.CDActionItem(item);
         return;
      }
   }
}

2 ---> CustomJewelBank.cpp

void CCustomJewelBank::Load()
{
   //SetCompleteHook(0xE8, 0x007DD0D9, &InvetoryItemOver);
}

3 ---> CustomJewelBank.cpp
void InvetoryItemOver(int This)
{
   lpItemObj item = (lpItemObj) * (DWORD*)(This + 84);

   if (item)
   {
      
      if (GetKeyState(VK_RBUTTON) & 0x8000)
      {
         int start = 12;
         if (*(DWORD*)(This + 44) == 200)
         {
            start = 12;
         }
         else if (*(DWORD*)(This + 44) == 44)
         {
            start = 76;
         }
         else if (*(DWORD*)(This + 44) == 131)
         {
            start = 108;
         }

         int Slot = item->PosX + (item->PosY * 8) + start;
         gCustomJewelBank.JewelBankSend(Slot);
      }
   }

   ((void(__thiscall*)(int))0x007DCF20)(This);
}

good luck

Gracias:


Offline samsunggon #58 Posteado: Today at 06:55:46 AM | Modificado: Today at 07:23:24 AM by samsunggon

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 466
  • Gracias recibida: 2625
  • ph
FIX FOR JEWEL BANK+POST ITEM+PVP CTRL +AUTO WEAR

AUTO WEAR IF YOU TRY TO POST ITEM YOUR OWN WINGS/ITEMS
sample your sm wings cant post items and direct to wear in wings slot
this fix is to prevent auto wear if your own items you want to POST

ItemMove.cpp

Code: [Select]
void RightClickMoveItem()
{
// ============================================================
// ✅ FIX: Block auto-wear if CTRL is pressed (PK mode)
// ============================================================
if (GetKeyState(VK_CONTROL) & 0x8000)
{
return; // Do NOT auto-equip the item
}

// ============================================================
// ✅ ORIGINAL RIGHT-CLICK LOGIC
// ============================================================

if (!ppMousePress(VK_RBUTTON) || PickedItem || ItemMove)
{
return;
}

if (pCheckWindow(pWindowThis(), 9) == 0 && pCheckWindow(pWindowThis(), 13) == 0) // ChaosBox ~ Inventory
{
return;
}

ItemMove = false;
SourceFlag = -1;

SourceSlot = *(DWORD*)((DWORD)InventoryThis(pWindowThis()) + 284);
TargetSlot = -1;

if (SourceSlot >= 0 && SourceSlot < INVENTORY_WEAR_SIZE)
{
if (*(DWORD*)MAIN_CURRENT_MAP == 10 || *(DWORD*)MAIN_CURRENT_MAP == 39)
{
if (SourceSlot == 7 &&
GetItemEquipedIndex(8) != GET_ITEM(13, 3) &&
GetItemEquipedIndex(8) != GET_ITEM(13, 4) &&
GetItemEquipedIndex(8) != GET_ITEM(13, 37))
{
return;
}

if (SourceSlot == 8 &&
(GetItemEquipedIndex(8) == GET_ITEM(13, 3) ||
GetItemEquipedIndex(8) == GET_ITEM(13, 4) ||
GetItemEquipedIndex(8) == GET_ITEM(13, 37)) &&
GetItemEquipedIndex(7) == 0xFFFF)
{
return;
}
}

DWORD ItemStruct = GetItemEquiped(SourceSlot);

if (ItemStruct && GetItemEquipedIndex(SourceSlot) != 0xFFFF)
{
ITEM_INFO2* lpItemInfo = GetItemInfo(*(WORD*)ItemStruct);

TargetSlot = InventoryFindEmptySlot(InventoryThis(pWindowThis()), lpItemInfo->Width, lpItemInfo->Height);

if (TargetSlot != -1)
{
SendRequestEquipmentItem(0, SourceSlot, ItemStruct, 0, INVENTORY_WEAR_SIZE + TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 0;
}
}
}
else
{
int InventoryMain = InventoryFindItemSlot(GetMyInventoryCtrl(InventoryThis(pWindowThis()), 0), pCursorX, pCursorY);
int InventoryExpand1 = InventoryFindItemSlot(GetMyInventoryCtrl(InventoryThis(pWindowThis()), 1), pCursorX, pCursorY);
int InventoryExpand2 = InventoryFindItemSlot(GetMyInventoryCtrl(InventoryThis(pWindowThis()), 2), pCursorX, pCursorY);

if (pCheckWindow(pWindowThis(), 9) != 0)
{
DWORD MixItemStruct = (DWORD)InventoryFindItem(MixGetMyInventoryCtrl(MixInventoryThis(pWindowThis())), pCursorX, pCursorY);

if (MixItemStruct)
{
ITEM_INFO2* lpItemInfo = GetItemInfo(*(WORD*)MixItemStruct);

SourceSlot = InventoryFindItemSlot(MixGetMyInventoryCtrl(MixInventoryThis(pWindowThis())), pCursorX, pCursorY);
TargetSlot = InventoryFindEmptySlot(InventoryThis(pWindowThis()), lpItemInfo->Width, lpItemInfo->Height);

if (SourceSlot != -1 && TargetSlot != -1)
{
SendRequestEquipmentItem(3, SourceSlot, MixItemStruct, 0, INVENTORY_WEAR_SIZE + TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 1;
}
}
else
{
DWORD InventoryCtrl = -1;

DWORD ItemStruct = (DWORD)InventoryFindItemAtPt(InventoryThis(pWindowThis()), pCursorX, pCursorY, &InventoryCtrl);

if (ItemStruct)
{
ITEM_INFO2* lpItemInfo = GetItemInfo(*(WORD*)ItemStruct);

if (InventoryMain != -1)
SourceSlot = INVENTORY_WEAR_SIZE + InventoryMain;
else if (InventoryExpand1 != -1)
SourceSlot = INVENTORY_EXT1_SIZE + InventoryExpand1;
else if (InventoryExpand2 != -1)
SourceSlot = INVENTORY_EXT2_SIZE + InventoryExpand2;

TargetSlot = InventoryMixFindEmptySlot(MixGetMyInventoryCtrl(MixInventoryThis(pWindowThis())), lpItemInfo->Width, lpItemInfo->Height);

if (SourceSlot != -1 && TargetSlot != -1)
{
SendRequestEquipmentItem(0, SourceSlot, ItemStruct, 3, TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 0;
}
}
}
}
else
{
if (pCheckWindow(pWindowThis(), 7) != 0 || pCheckWindow(pWindowThis(), 8) != 0) // Trade ~ Warehouse
{
return;
}

DWORD InventoryCtrl = -1;

DWORD ItemStruct = (DWORD)InventoryFindItemAtPt(InventoryThis(pWindowThis()), pCursorX, pCursorY, &InventoryCtrl);

if (ItemStruct)
{
if (InventoryMain != -1)
SourceSlot = INVENTORY_WEAR_SIZE + InventoryMain;
else if (InventoryExpand1 != -1)
SourceSlot = INVENTORY_EXT1_SIZE + InventoryExpand1;
else if (InventoryExpand2 != -1)
SourceSlot = INVENTORY_EXT2_SIZE + InventoryExpand2;

TargetSlot = GetInventoryWearSlot(*(WORD*)ItemStruct);

if (SourceSlot != -1 && TargetSlot != 0xFF)
{
SendRequestEquipmentItem(0, SourceSlot, ItemStruct, 0, TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 0;
}
}
}
}
}

CustomJewelBank.cpp

Code: [Select]
void InvetoryItemOver(int This)
{
lpItemObj item = (lpItemObj) * (DWORD*)(This + 84);

if (item)
{
if (GetKeyState(VK_RBUTTON) & 0x8000 && GetKeyState(VK_SHIFT) & 0x8000)
{
int start = 12;
if (*(DWORD*)(This + 44) == 200)
{
start = 12;
}
else if (*(DWORD*)(This + 44) == 44)
{
start = 76;
}
else if (*(DWORD*)(This + 44) == 131)
{
start = 108;
}

int Slot = item->PosX + (item->PosY * 8) + start;

gCustomJewelBank.JewelBankSend(Slot);
}
}

((void(__thiscall*)(int))0x007DCF20)(This);
}

void CCustomJewelBank::Load()
{
//SetCompleteHook(0xE8, 0x007DD0D9, &InvetoryItemOver);
}

post_item.cpp

Code: [Select]
void HookRenderItemToolTip(int a1)
{
((void(__cdecl*)()) 0x007DCF20)();
lpItemObj item = (lpItemObj) * (DWORD*)(a1 + 84);
//===Fix Move Item

//===
if (gInterface.CheckWindow(8))
{
return;
}
DWORD uniqId = 0;
if (item) {
int pos = -1;
if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x18))
{
uniqId = item->UniqueID;
}
else if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x1C))
{
uniqId = item->UniqueID + 0x10000000;
}
else if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x20))
{
uniqId = item->UniqueID + 0x20000000;
}
//
// CTRL + Right Click (block equip / block move)
if ((GetKeyState(VK_RBUTTON) & 0x8000) && (GetKeyState(VK_CONTROL) & 0x8000))
{
JCItemPublic.PostItemProc(uniqId); // your link item function
return; // IMPORTANT: block default MU behavior
}

else
{
// === Right click = Jewel Bank ===
if (GetKeyState(VK_RBUTTON) & 0x8000 && GetKeyState(VK_SHIFT) & 0x8000)
{
// panel: normal / expanded / 2nd inventory
int panel = *(DWORD*)(a1 + 44);


if (panel == 200 || panel == 44 || panel == 131)
{
int start = (panel == 200) ? 12 : (panel == 44) ? 76 : 108;
int Slot = item->PosX + (item->PosY * 8) + start;

gCustomJewelBank.JewelBankSend(Slot);
return;
}
}
// === Default Right click = move / equip etc ===
if (!pIsKeyRepeat(VK_CONTROL))
{
JCItemPublic.CDActionItem(item);
return;
}
}
}
}


credits: ChatGpt

100% Working for me no error / bugs


DISCORD: valentino1515


Offline smil158 #59 Posteado: Today at 07:25:38 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 14
  • Gracias recibida: 3
  • cn
FIX FOR JEWEL BANK+POST ITEM+PVP CTRL +AUTO WEAR

AUTO WEAR IF YOU TRY TO POST ITEM YOUR OWN WINGS/ITEMS
sample your sm wings cant post items and direct to wear in wings slot
this fix is to prevent auto wear if your own items you want to POST

ItemMove.cpp

Code: [Select]
void RightClickMoveItem()
{
// ============================================================
// ✅ FIX: Block auto-wear if CTRL is pressed (PK mode)
// ============================================================
if (GetKeyState(VK_CONTROL) & 0x8000)
{
return; // Do NOT auto-equip the item
}

// ============================================================
// ✅ ORIGINAL RIGHT-CLICK LOGIC
// ============================================================

if (!ppMousePress(VK_RBUTTON) || PickedItem || ItemMove)
{
return;
}

if (pCheckWindow(pWindowThis(), 9) == 0 && pCheckWindow(pWindowThis(), 13) == 0) // ChaosBox ~ Inventory
{
return;
}

ItemMove = false;
SourceFlag = -1;

SourceSlot = *(DWORD*)((DWORD)InventoryThis(pWindowThis()) + 284);
TargetSlot = -1;

if (SourceSlot >= 0 && SourceSlot < INVENTORY_WEAR_SIZE)
{
if (*(DWORD*)MAIN_CURRENT_MAP == 10 || *(DWORD*)MAIN_CURRENT_MAP == 39)
{
if (SourceSlot == 7 &&
GetItemEquipedIndex(8) != GET_ITEM(13, 3) &&
GetItemEquipedIndex(8) != GET_ITEM(13, 4) &&
GetItemEquipedIndex(8) != GET_ITEM(13, 37))
{
return;
}

if (SourceSlot == 8 &&
(GetItemEquipedIndex(8) == GET_ITEM(13, 3) ||
GetItemEquipedIndex(8) == GET_ITEM(13, 4) ||
GetItemEquipedIndex(8) == GET_ITEM(13, 37)) &&
GetItemEquipedIndex(7) == 0xFFFF)
{
return;
}
}

DWORD ItemStruct = GetItemEquiped(SourceSlot);

if (ItemStruct && GetItemEquipedIndex(SourceSlot) != 0xFFFF)
{
ITEM_INFO2* lpItemInfo = GetItemInfo(*(WORD*)ItemStruct);

TargetSlot = InventoryFindEmptySlot(InventoryThis(pWindowThis()), lpItemInfo->Width, lpItemInfo->Height);

if (TargetSlot != -1)
{
SendRequestEquipmentItem(0, SourceSlot, ItemStruct, 0, INVENTORY_WEAR_SIZE + TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 0;
}
}
}
else
{
int InventoryMain = InventoryFindItemSlot(GetMyInventoryCtrl(InventoryThis(pWindowThis()), 0), pCursorX, pCursorY);
int InventoryExpand1 = InventoryFindItemSlot(GetMyInventoryCtrl(InventoryThis(pWindowThis()), 1), pCursorX, pCursorY);
int InventoryExpand2 = InventoryFindItemSlot(GetMyInventoryCtrl(InventoryThis(pWindowThis()), 2), pCursorX, pCursorY);

if (pCheckWindow(pWindowThis(), 9) != 0)
{
DWORD MixItemStruct = (DWORD)InventoryFindItem(MixGetMyInventoryCtrl(MixInventoryThis(pWindowThis())), pCursorX, pCursorY);

if (MixItemStruct)
{
ITEM_INFO2* lpItemInfo = GetItemInfo(*(WORD*)MixItemStruct);

SourceSlot = InventoryFindItemSlot(MixGetMyInventoryCtrl(MixInventoryThis(pWindowThis())), pCursorX, pCursorY);
TargetSlot = InventoryFindEmptySlot(InventoryThis(pWindowThis()), lpItemInfo->Width, lpItemInfo->Height);

if (SourceSlot != -1 && TargetSlot != -1)
{
SendRequestEquipmentItem(3, SourceSlot, MixItemStruct, 0, INVENTORY_WEAR_SIZE + TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 1;
}
}
else
{
DWORD InventoryCtrl = -1;

DWORD ItemStruct = (DWORD)InventoryFindItemAtPt(InventoryThis(pWindowThis()), pCursorX, pCursorY, &InventoryCtrl);

if (ItemStruct)
{
ITEM_INFO2* lpItemInfo = GetItemInfo(*(WORD*)ItemStruct);

if (InventoryMain != -1)
SourceSlot = INVENTORY_WEAR_SIZE + InventoryMain;
else if (InventoryExpand1 != -1)
SourceSlot = INVENTORY_EXT1_SIZE + InventoryExpand1;
else if (InventoryExpand2 != -1)
SourceSlot = INVENTORY_EXT2_SIZE + InventoryExpand2;

TargetSlot = InventoryMixFindEmptySlot(MixGetMyInventoryCtrl(MixInventoryThis(pWindowThis())), lpItemInfo->Width, lpItemInfo->Height);

if (SourceSlot != -1 && TargetSlot != -1)
{
SendRequestEquipmentItem(0, SourceSlot, ItemStruct, 3, TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 0;
}
}
}
}
else
{
if (pCheckWindow(pWindowThis(), 7) != 0 || pCheckWindow(pWindowThis(), 8) != 0) // Trade ~ Warehouse
{
return;
}

DWORD InventoryCtrl = -1;

DWORD ItemStruct = (DWORD)InventoryFindItemAtPt(InventoryThis(pWindowThis()), pCursorX, pCursorY, &InventoryCtrl);

if (ItemStruct)
{
if (InventoryMain != -1)
SourceSlot = INVENTORY_WEAR_SIZE + InventoryMain;
else if (InventoryExpand1 != -1)
SourceSlot = INVENTORY_EXT1_SIZE + InventoryExpand1;
else if (InventoryExpand2 != -1)
SourceSlot = INVENTORY_EXT2_SIZE + InventoryExpand2;

TargetSlot = GetInventoryWearSlot(*(WORD*)ItemStruct);

if (SourceSlot != -1 && TargetSlot != 0xFF)
{
SendRequestEquipmentItem(0, SourceSlot, ItemStruct, 0, TargetSlot);
ResetMouseRButton();
ItemMove = true;
SourceFlag = 0;
}
}
}
}
}

CustomJewelBank.cpp

Code: [Select]
void InvetoryItemOver(int This)
{
lpItemObj item = (lpItemObj) * (DWORD*)(This + 84);

if (item)
{
if (GetKeyState(VK_RBUTTON) & 0x8000 && GetKeyState(VK_SHIFT) & 0x8000)
{
int start = 12;
if (*(DWORD*)(This + 44) == 200)
{
start = 12;
}
else if (*(DWORD*)(This + 44) == 44)
{
start = 76;
}
else if (*(DWORD*)(This + 44) == 131)
{
start = 108;
}

int Slot = item->PosX + (item->PosY * 8) + start;

gCustomJewelBank.JewelBankSend(Slot);
}
}

((void(__thiscall*)(int))0x007DCF20)(This);
}

void CCustomJewelBank::Load()
{
//SetCompleteHook(0xE8, 0x007DD0D9, &InvetoryItemOver);
}

post_item.cpp

Code: [Select]
void HookRenderItemToolTip(int a1)
{
((void(__cdecl*)()) 0x007DCF20)();
lpItemObj item = (lpItemObj) * (DWORD*)(a1 + 84);
//===Fix Move Item

//===
if (gInterface.CheckWindow(8))
{
return;
}
DWORD uniqId = 0;
if (item) {
int pos = -1;
if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x18))
{
uniqId = item->UniqueID;
}
else if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x1C))
{
uniqId = item->UniqueID + 0x10000000;
}
else if (a1 == *(DWORD*)(*(DWORD*)0x098670B8 + 0x20))
{
uniqId = item->UniqueID + 0x20000000;
}
//
// CTRL + Right Click (block equip / block move)
if ((GetKeyState(VK_RBUTTON) & 0x8000) && (GetKeyState(VK_CONTROL) & 0x8000))
{
JCItemPublic.PostItemProc(uniqId); // your link item function
return; // IMPORTANT: block default MU behavior
}

else
{
// === Right click = Jewel Bank ===
if (GetKeyState(VK_RBUTTON) & 0x8000 && GetKeyState(VK_SHIFT) & 0x8000)
{
// panel: normal / expanded / 2nd inventory
int panel = *(DWORD*)(a1 + 44);


if (panel == 200 || panel == 44 || panel == 131)
{
int start = (panel == 200) ? 12 : (panel == 44) ? 76 : 108;
int Slot = item->PosX + (item->PosY * 8) + start;

gCustomJewelBank.JewelBankSend(Slot);
return;
}
}
// === Default Right click = move / equip etc ===
if (!pIsKeyRepeat(VK_CONTROL))
{
JCItemPublic.CDActionItem(item);
return;
}
}
}
}


credits: ChatGpt

100% Working for me no error / bugs
I used the MuSever he released to modify an IP address, opened MIAN, but couldn't create a character. Is there something not set correctly? Please advise


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

  Subject / Started by Replies Last post
69 Replies
10987 Views
Last post September 17, 2025, 03:09:17 AM
by hofer
18 Replies
25878 Views
Last post August 27, 2025, 03:55:44 AM
by kodai
5 Replies
7143 Views
Last post September 26, 2022, 04:06:08 PM
by Betell Host
20 Replies
4427 Views
Last post April 11, 2025, 12:03:23 AM
by Nexus
1 Replies
2127 Views
Last post April 11, 2025, 09:59:33 PM
by Peluuca