Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate

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

saske98, cuong1372, calibur, elcrom and 1 Guest are viewing this topic.

Offline samsunggon #60 Posteado: November 04, 2025, 07:27:50 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 459
  • Gracias recibida: 2656
  • 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
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


check dataserver logs if have error?

because mine i use the ready database
and create account using in game creation

and all working


DISCORD: valentino1515


Offline smil158 #61 Posteado: November 04, 2025, 07:38:04 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 14
  • Gracias recibida: 4
  • 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


check dataserver logs if have error?

because mine i use the ready database
and create account using in game creation

and all working
The logs of the data server are all normal. So you mean there's an issue with the DB I restored, right?

Gracias:


Offline samsunggon #62 Posteado: November 04, 2025, 07:39:32 AM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 459
  • Gracias recibida: 2656
  • 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
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


check dataserver logs if have error?

because mine i use the ready database
and create account using in game creation

and all working
The logs of the data server are all normal. So you mean there's an issue with the DB I restored, right?

yes

im using mssql server 2014
and no error / bugs


DISCORD: valentino1515


Offline smil158 #63 Posteado: November 04, 2025, 07:55:51 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 14
  • Gracias recibida: 4
  • 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


check dataserver logs if have error?

because mine i use the ready database
and create account using in game creation

and all working
The logs of the data server are all normal. So you mean there's an issue with the DB I restored, right?

yes

im using mssql server 2014
and no error / bugs
I used MS SQL Server 2008 and switched to another database, but the same error still occurred. I crashed. This is my incorrect image https://imgur.com/a/xG5tDNw


Offline 2ooooo2 #64 Posteado: November 04, 2025, 11:33:15 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 52
  • Gracias recibida: 5
  • ve
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


check dataserver logs if have error?

because mine i use the ready database
and create account using in game creation

and all working
The logs of the data server are all normal. So you mean there's an issue with the DB I restored, right?

yes

im using mssql server 2014
and no error / bugs
I used MS SQL Server 2008 and switched to another database, but the same error still occurred. I crashed. This is my incorrect image https://imgur.com/a/xG5tDNw

crea la cuenta por titan editor si la crea por alli la base de datos esta bien....


Offline pokimon #65 Posteado: November 04, 2025, 12:06:00 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 31
  • Gracias recibida: 3
  • th
how to increase fps
An error occurred. Unable to change job class 1 with the Priest NPC.


Offline pokimon #66 Posteado: November 04, 2025, 12:08:06 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 31
  • Gracias recibida: 3
  • th
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.
An error occurred. Unable to change job class 1 with the Priest NPC.


Offline Genius05 #67 Posteado: November 04, 2025, 03:52:35 PM | Modificado: November 04, 2025, 03:58:56 PM by Genius05

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 183
  • Gracias recibida: 204
  • 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?

 el custom ranking si funciona perfecto bro.
An error occurred. Unable to change job class 1 with the Priest NPC.
quien tiene el fix de chaosbox. y el info del tiempo de chaos castle.¿?
https://imgur.com/a/ULOilmZ


Offline AlejandrO777 #68 Posteado: November 04, 2025, 10:16:42 PM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Heroe
  • Posts: 172
  • Gracias recibida: 3427
  • ar
Bug de los pets/mum slot no se visualizan por los otros pjs!!


Offline 2ooooo2 #69 Posteado: November 04, 2025, 10:55:07 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 52
  • Gracias recibida: 5
  • ve
alguien ha copilado bien el main a mi me da error de pin uso el vs 2022


Offline Genius05 #70 Posteado: November 05, 2025, 01:22:57 AM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 183
  • Gracias recibida: 204
  • 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?

 el custom ranking si funciona perfecto bro.
An error occurred. Unable to change job class 1 with the Priest NPC.
quien tiene el fix de chaosbox. y el info del tiempo de chaos castle.¿?
https://imgur.com/a/ULOilmZ

comparto codigo en Interface Ex700

del Chaosbox

void WindowsChaosBox(int index, float x, float y, float w, float h)
{
   int This; // [sp+84h] [bp-25Ch]@1
   int v6; // eax@1
   char v7[256]; // al@4
   int Color; // ST18_4@2
   int Width = TransForX(190);
   int Heigth = TransForY(429);
   This = GetChaosBox(GetInstance());

   int Addradd = pWinWidth / pWinHeightReal / 2 - 320;

   pOpenWindow(pWindowThis(), 77);

   if (pCheckWindow(pWindowThis(), 77))
   {
      *(signed int*)(This + 20) = Return2X(TransFor2X(640) - (Width * 3)) + Addradd + Addradd;
   }
   else
   {
      *(signed int*)(This + 20) = Return2X(TransFor2X(640) - (Width * 2)) + Addradd + Addradd;
   }

   x = TransFor2X((double)*(signed int*)(This + 20));
   y = TransForY((double)*(signed int*)(This + 24));

   RenderBitmap(61526, x, y, Width, Heigth, 0.0, 0.0, 0.6325000525, 0.6325000525, 0, 0, 0);

   if (*(DWORD*)(This + 16))
   {
      int MainSlot = *(DWORD*)(This + 16);
      //-- Inventory
      //*(DWORD *)(MainSlot + 44) = ReturnY(TransForY(242));
      int t = *(DWORD*)(MainSlot + 56) * Return2X(TransForX(17));
      *(DWORD*)(MainSlot + 40) = Return2X(x - 15 + (Width / 2) - TransFor2X(t / 2));

   }
}



Offline pokimon #71 Posteado: November 05, 2025, 01:55:17 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 31
  • Gracias recibida: 3
  • th
Please help suggest a solution to prevent NPCs from changing character jobs.


Online tuyentc #72 Posteado: November 05, 2025, 07:48:51 AM | Modificado: November 05, 2025, 07:51:06 AM by tuyentc

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 34
  • Gracias recibida: 73
  • vn
fix text ChaosCastle :

https://ibb.co/Y7xSb9DT

---> WideScreen.cpp

//SetDword((0x0085B3B1+1), (0x201+FrameWinCDepthBox));            //-- ChaosCastle

SetDword((0x0085B3B1 + 1), (320 + QTFrame.DisplayWinExt / 2 + 150)); //-- ChaosCastleTimer

Good luck :D

Gracias:


Offline 2ooooo2 #73 Posteado: November 05, 2025, 10:59:19 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 52
  • Gracias recibida: 5
  • ve
Bug de los pets/mum slot no se visualizan por los otros pjs!!

bro cual surces es mas estable? esta o la publicada 7.7.7??


Offline 2ooooo2 #74 Posteado: November 05, 2025, 10:59:43 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 52
  • Gracias recibida: 5
  • ve
Bug de los pets/mum slot no se visualizan por los otros pjs!!

bro cual surces es mas estable? esta o la publicada 7.7.7??


Offline AlejandrO777 #75 Posteado: November 05, 2025, 12:08:44 PM

  • Colaborador
  • 0 puntos por ventas
  • *
  • Rank: Heroe
  • Posts: 172
  • Gracias recibida: 3427
  • ar
Bug de los pets/mum slot no se visualizan por los otros pjs!!

bro cual surces es mas estable? esta o la publicada 7.7.7??

es la misma vaina con diferentes bugs XD yo ya la tengo fix pero me da paja subirla xD lo bueno que aqui compartieron bastantes fix ami no me ayudo nadie


Offline Genius05 #76 Posteado: November 05, 2025, 12:23:34 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 183
  • Gracias recibida: 204
  • ve
Bug de los pets/mum slot no se visualizan por los otros pjs!!

bro cual surces es mas estable? esta o la publicada 7.7.7??

es la misma vaina con diferentes bugs XD yo ya la tengo fix pero me da paja subirla xD lo bueno que aqui compartieron bastantes fix ami no me ayudo nadie

Si resolviste los de pet/muun/slot..?


Offline hola23 #77 Posteado: November 05, 2025, 04:25:18 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 219
  • Gracias recibida: 4731
  • ar
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..




Offline Genius05 #78 Posteado: November 05, 2025, 05:09:14 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 183
  • Gracias recibida: 204
  • ve
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..


Para el nivel 1000 solo es configuración en common, exp es calculado a la de ssemu por lo tanto 10 vale 1 y 1000 vale 6


Offline Genius05 #79 Posteado: November 05, 2025, 05:13:29 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 183
  • Gracias recibida: 204
  • ve
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..


Algún Héroe sin capa para los fix de los pets/slot y erring


Offline hola23 #80 Posteado: November 05, 2025, 05:25:07 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 219
  • Gracias recibida: 4731
  • ar
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..


Para el nivel 1000 solo es configuración en common, exp es calculado a la de ssemu por lo tanto 10 vale 1 y 1000 vale 6

VOS YA LO HICISTE??


Offline 2ooooo2 #81 Posteado: November 05, 2025, 06:37:19 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 52
  • Gracias recibida: 5
  • ve
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..


Para el nivel 1000 solo es configuración en common, exp es calculado a la de ssemu por lo tanto 10 vale 1 y 1000 vale 6

VOS YA LO HICISTE??
bro puedes subir la source de main para vs 2022 porfa  magia2


Offline Genius05 #82 Posteado: November 05, 2025, 06:44:47 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 183
  • Gracias recibida: 204
  • ve
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..


Para el nivel 1000 solo es configuración en common, exp es calculado a la de ssemu por lo tanto 10 vale 1 y 1000 vale 6

VOS YA LO HICISTE??
bro puedes subir la source de main para vs 2022 porfa  magia2

si claro puede usar toda la bases a vs 2022 v143, bueno yo la estoy usando con esa version , solo es de actulizar la dependencia


Offline Evangelio #83 Posteado: November 05, 2025, 07:55:31 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 252
  • Gracias recibida: 2222
  • ar
Remplace el Fix lado GS y compile y el Dayli se ve asi.

https://imgur.com/a/5KG0qgq


Offline hola23 #84 Posteado: November 05, 2025, 08:40:20 PM

  • 0 puntos por ventas
  • *
  • Rank: Puto amo
  • Posts: 219
  • Gracias recibida: 4731
  • ar
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..


Para el nivel 1000 solo es configuración en common, exp es calculado a la de ssemu por lo tanto 10 vale 1 y 1000 vale 6

VOS YA LO HICISTE??
bro puedes subir la source de main para vs 2022 porfa  magia2

ya esta aportada en el post bro.


Offline k33n00 #85 Posteado: November 05, 2025, 08:57:23 PM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 10
  • vn
The account cannot create a character immediately upon entering the game, and the screen freezes.


I uploaded the new GAMESERVER there. DELETE THE OLD ONE AND USE THE NEW ONE PROVIDED AT THE BEGINNING OF THE POST.
After replacement, it still remains the same and cannot create a character. Can we package a fixed one?

I DON'T UNDERSTAND YOU, EXPLAIN YOURSELF

How to get this interface back, I "Buil" with the main source and it shows another interface
https://ibb.co/PZ3N69Vb


Offline quanhongle #86 Posteado: November 05, 2025, 11:36:52 PM | Modificado: November 06, 2025, 02:56:32 AM by quanhongle

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 19
  • Gracias recibida: 2
  • vn

Offline Genius05 #87 Posteado: November 05, 2025, 11:57:35 PM

  • 0 puntos por ventas
  • *
  • Rank: Liga mayor
  • Posts: 183
  • Gracias recibida: 204
  • ve
POR AHORA SOLO SE ENCONTRO
- 1 LOS PETS NO SE VISUALIZA A OTROS JUGADORES.
(PERO SUS EFFECTOS DE LOS PETS SI FUNCIONAN CORRECTAMENTE) EJEMPLO HP - MP - DAÑO Y DEMAS Q SE LE PUEDE AGREGAR.

(TAMBIEN QUIERO RECORDAR QUE LA FUENTE TENIA , SLOT DE ERRING , NOMAS QUE FUERON ELIMINADOS, SE PUEDE ENCONTRAR EN OTRAS FUENTE EN LA 1.3- // EL PROBLEMA ESTABA EN QUE ESTABA SOLO VISUAL, YA Q NO APORTABA EN NADA NI DAÑO NI VIDA NADA. POR ESA RAZON FUERON ELIMINADO.

TAMBIEN CUENTA CON NIVEL 1000. ( PERO DEBE SER Q FALTE ALGO EN LA DB O NOSE DONDE. PORQUE DESPUES DE PASAR NIVEL 400 SE SALTEA LOS NIVELES Y NO SUBE NO LLEGA AL 1000. LLEGA AL 873 MAS O MENOS.

ESAS 2 COSAS COMO ERRING Y NIVEL 1000. SE PUEDE FIXEAR SI ALGUIEN QUIERE Y APORTAR PARA EL FORO, PERO MIENTRAS SOLO CONTAMOS CON EL VISUAL PET Q OTROS USERS NO LO PUEDEN VER, . DESPUES NO SE REPORTARON NI SE ENCONTRO OTRO BUG..


mas tarde comparto el fix
https://imgur.com/a/AQjdJ1Y

Gracias:


Offline k33n00 #88 Posteado: November 06, 2025, 12:44:43 AM

  • 0 puntos por ventas
  • *
  • Rank: Dedicado
  • Posts: 33
  • Gracias recibida: 10
  • vn
fix text ChaosCastle :

https://ibb.co/Y7xSb9DT

---> WideScreen.cpp

//SetDword((0x0085B3B1+1), (0x201+FrameWinCDepthBox));            //-- ChaosCastle

SetDword((0x0085B3B1 + 1), (320 + QTFrame.DisplayWinExt / 2 + 150)); //-- ChaosCastleTimer




Let me ask, when I "build" the "main" source provided by the author of the article, it does not show the original interface when entering the game, how can I fix it, it is not as shown in the picture when I perform the "800x600" interface



Good luck :D


Offline marshal #89 Posteado: November 06, 2025, 06:01:07 AM

  • 0 puntos por ventas
  • *
  • Rank: Principiante
  • Posts: 2
  • Gracias recibida: 2
  • ar
Que buen aporte. Nunca imagine que esta fuente de Protecno iba a ser aportada.


Solo usuarios registrados pueden comentar y agradecer, Logueate o Registrate


 

Related Topics

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