Noticias:

SMF - Just Installed!

Menú principal

Source Custom ViewDetails character OBBY

Publicado por Dakosmu, Ago 15, 2023, 03:33 AM

Tema anterior - Siguiente tema

Dakosmu

Source Custom ViewDetails character OBBY

GAMER_SERVER

stdafx.h

AGREGAR:

#define SOIITEM 1
#pragma comment(lib,"wzMUQuiz.lib") //soiitem

ItemManager.cpp FINAL AGREGAR:

#if(SOIITEM)
void CItemManager::GCItemListViewSend(PMSG_VIEW_REQUEST_RECV* lpMsg, int aIndex) // OK
{
LPOBJ lpObj = &gObj[aIndex];

if (gObjIsConnectedGP(aIndex) == 0)
{
return;
}

int bIndex = MAKE_NUMBERW(lpMsg->index[0], lpMsg->index[1]);

if (gObjIsConnectedGP(bIndex) == 0)
{
return;
}

LPOBJ lpTarget = &gObj[bIndex];

if (lpObj->Interface.use != 0 || lpTarget->Interface.use != 0)
{
return;
}

BYTE send[4096];

PMSG_ITEM_LIST_SEND pMsg;

pMsg.header.setE(0x4E, 0x0D, 0);

int size = sizeof(pMsg);

pMsg.count = 0;

PMSG_ITEM_LIST info;

for (int n = 0; n < INVENTORY_WEAR_SIZE; n++)
{
if (lpTarget->Inventory[n].IsItem() != 0)
{
if (lpTarget->Inventory[n].m_ItemExist != 0)
{
info.slot = n;

this->ItemByteConvert(info.ItemInfo, lpTarget->Inventory[n]);

memcpy(&send[size], &info, sizeof(info));
size += sizeof(info);

pMsg.count++;
}
}
}

pMsg.header.size[0] = SET_NUMBERHB(size);
pMsg.header.size[1] = SET_NUMBERLB(size);

memcpy(send, &pMsg, sizeof(pMsg));

DataSend(aIndex, send, size);

for (int n = 0; n < INVENTORY_SIZE; n++)
{
if (lpTarget->Inventory[n].IsItem() != 0)
{
if (lpTarget->Inventory[n].m_ItemExist != 0 && lpTarget->Inventory[n].m_IsPeriodicItem != 0)
{
gCashShop.GCCashShopPeriodicViewItemSend(aIndex, lpTarget->Inventory[n].m_Index, n, lpTarget->Inventory[n].m_PeriodicItemTime);
}
}
}
}
#endif


CashShop.cpp

ABAJO DE:

CCashShop::~CCashShop() // OK
{

}

AGREGAR:

#if(SOIITEM)
void CCashShop::GCCashShopPeriodicViewItemSend(int aIndex, int index, int slot, int time) // OK
{
#if(GAMESERVER_UPDATE>=501)

PMSG_CASH_SHOP_PERIODIC_ITEM_SEND pMsg;

pMsg.header.set(0xD2, 0x05, sizeof(pMsg));

pMsg.index = index;

pMsg.slot = slot;

pMsg.time = time;

DataSend(aIndex, (BYTE*)&pMsg, pMsg.header.size);

#endif
}
#endif


ItemManager.h

ABAJO DE:

#define CHAOS_BOX_RANGE(x) (((x)<0)?0:((x)>=CHAOS_BOX_SIZE)?0:1)

#define MAX_ITEM_SPECIAL_ATTRIBUTE 7 //MC bot

AGREGAR:

#if(SOIITEM)
struct PMSG_VIEW_REQUEST_RECV
{
PSBMSG_HEAD header; // C1:36
BYTE index[2];
};
#endif


ItemManager.h

ABAJO DE:

bool CheckItemNotSlot(int index); // OK
int CheckItemInventorySpaceCount(LPOBJ lpObj,int width,int height);


AGREGAR:

#if(SOIITEM)
void GCItemListViewSend(PMSG_VIEW_REQUEST_RECV* lpMsg, int aIndex);
#endif

CashShop.h

ABAJO DE:

void GDCashShopPeriodicItemSaveSend(int aIndex);
void GCSendCoin(LPOBJ lpObj, int coin1, int coin2, int coin3);


AGREGAR:

#if(SOIITEM)
void GCCashShopPeriodicViewItemSend(int aIndex, int index, int slot, int time);
#endif


Protocol.cpp

ARRIBA DE:

case 0x00:
CGCharacterListRecv(aIndex);
break;
case 0x01:


AGREGAR:

#if(SOIITEM)
case 0xF4:
gItemManager.GCItemListViewSend((PMSG_VIEW_REQUEST_RECV*)lpMsg, aIndex);
break;
#endif



You require the following to view this post content:
  • You require a post count of at least 1, you need another 1 posts.
[/hide] comment(lib,"wzMUQuiz.lib") //soiitem
#define SOIITEM               1 // ON[/code]


main.cpp

#include "QuickCommandWindow.h"

#if(SOIITEM)
g_pQuickCommandWindow.szInit();
#endif


Protocol.cpp

#include "QuickCommandWindow.h"

ARRIBA DE:

g_MuunSystem.ItemGetRecv((PMSG_MUUN_ITEM_GET_RECV*)lpMsg);

#if(SOIITEM)
case 0x0D:
g_pQuickCommandWindow.ReceiveInventory(lpMsg);
return 1;
#endif
#if(SOIITEM)
case 0xD2: //soiitem
switch (lpMsg[3])
{
case 0x05:
g_pQuickCommandWindow.ReceivePeriodItemList(lpMsg);
break;
}
break;
#endif


Protocol.h

BUSCAR struct PWMSG_HEAD

AGREGAR:

#if(SOIITEM)
typedef struct
{
PSBMSG_HEAD header;
BYTE index[2];
}PMSG_VIEW_REQUEST_SEND;
#endif



QuickCommandWindow.h

#pragma once
#if(SOIITEM)
typedef struct //-- itemlist
{
PSWMSG_HEAD  Header;
BYTE         Value;
} HEADER_DEFAULT_SUBCODE_WORD, * LPHEADER_DEFAULT_SUBCODE_WORD;

typedef struct
{
PSBMSG_HEAD Header;
WORD wItemCode;
WORD wItemSlotIndex;
long lExpireDate;
}PMSG_PERIODITEMEX_ITEMLIST, *LPPMSG_PERIODITEMEX_ITEMLIST;

typedef struct //-- GetList Item
{
BYTE          Index;
BYTE          Item[12];
} RECEIVE_INVENTORY, * LPRECEIVE_INVENTORY;

namespace SEASON3B
{
typedef void (*PUSHEVENT_CALLBACK)(int);

void ResetEquipItem();
void setStatusDetails(bool bShow);
void SetPeriodItem(int iIndex, long lExpireDate);
void SetEquipItem(int iIndex, BYTE* pbyItemPacket);
void Init(int txt, PUSHEVENT_CALLBACK pCallback);

class QuickCommandWindow
{
public:
void szInit();
QuickCommandWindow(void);
virtual ~QuickCommandWindow(void);

BOOL ReceiveInventory(BYTE *ReceiveBuffer);
bool ReceivePeriodItemList(BYTE* ReceiveBuffer);
static void SendRequestViewItem(int pSelectedCha);

};
}



extern SEASON3B::QuickCommandWindow g_pQuickCommandWindow;
#endif

QuickCommandWindow.cpp

// QuickCommandWindow.cpp:
// GoldMu.net
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#if(SOIITEM)
#include "Protocol.h"
#include "QuickCommandWindow.h"

SEASON3B::QuickCommandWindow g_pQuickCommandWindow;

namespace SEASON3B
{
QuickCommandWindow::QuickCommandWindow(void)
{
}

QuickCommandWindow::~QuickCommandWindow(void)
{
}

void QuickCommandWindow::SendRequestViewItem(int pSelectedCha)
{
WORD p_Key = *(WORD *)(pSelectedCha + 126);


PMSG_VIEW_REQUEST_SEND Send;
Send.header.set(0xF3, 0xF4, sizeof(Send));
Send.index[0] = (BYTE)((p_Key) >> 8);
Send.index[1] = (BYTE)((p_Key) & 0xff);
DataSend((LPBYTE)&Send, Send.header.size);
}

BOOL QuickCommandWindow::ReceiveInventory(BYTE *ReceiveBuffer)
{
setStatusDetails(true);

ResetEquipItem();

LPHEADER_DEFAULT_SUBCODE_WORD DataRecv = (LPHEADER_DEFAULT_SUBCODE_WORD)ReceiveBuffer;
int Offset = sizeof(HEADER_DEFAULT_SUBCODE_WORD);

for(int i=0;iValue;i++)
{
LPRECEIVE_INVENTORY Data = (LPRECEIVE_INVENTORY)(ReceiveBuffer+Offset);

SetEquipItem(Data->Index, Data->Item);

Offset += sizeof(RECEIVE_INVENTORY);
}

return ( TRUE);
}

bool QuickCommandWindow::ReceivePeriodItemList(BYTE* pReceiveBuffer)
{
LPPMSG_PERIODITEMEX_ITEMLIST Data = (LPPMSG_PERIODITEMEX_ITEMLIST)pReceiveBuffer;

if(Data->wItemSlotIndex < 12)
{
SetPeriodItem(Data->wItemSlotIndex, (long)Data->lExpireDate);
}

return true;
}

void QuickCommandWindow::szInit()
{
Init(3400, SendRequestViewItem);
}
}
#endif


Creditos
OBBY




Bon Dia

Dakosmu

SI QUIEREN QUE SE HABILITE Y DESAVILITE DESDE TOOLS MAIN INFO: HACER ESTOO...


EN MAIN.CPP: CAMBIAR

#if(SOIITEM)
g_pQuickCommandWindow.szInit();
#endif

POR:

if (gProtect.m_MainInfo.EnableViewDetails == 1)
{
#if(SOIITEM)
g_pQuickCommandWindow.szInit();
#endif
}



Protect.h

AGREGAR

DWORD EnableViewDetails;



GetMain

AGREGAR:

DWORD EnableViewDetails;

info.EnableViewDetails = GetPrivateProfileInt("UPGRADE", " EnableViewDetails ", 0, ".\\MainInfo.ini");


//==========================================
//-- View Details
//-- 1: Enable
//-- 0: Disable
//========================================== 
EnableViewDetails = 1





Bon Dia


🡱 🡳