Bom dia galera ! Eu estou estudando a função de Salvar itens no bau mas me deparei um limite de 32 Itens só no bau, tipo se vc colocar 32 Sheltons ainda sobrará slots ali visualmente mas não entra mais nada além de 32 Itens e tem mais espaço de peso.
vendo essa função aqui: int SaveWareHouse(sWAREHOUSE* lpWareHouse, TRANS_WAREHOUSE* lpTransWareHouse)
Bom dia galera !
Eu estou estudando a função de Salvar itens no bau mas me deparei um limite de 32 Itens só no bau, tipo se vc colocar 32 Sheltons ainda sobrará slots ali visualmente mas não entra mais nada além de 32 Itens e tem mais espaço de peso.
vendo essa função aqui:
int SaveWareHouse(sWAREHOUSE* lpWareHouse, TRANS_WAREHOUSE* lpTransWareHouse)
{
TRANS_WAREHOUSE TransWareHouse;
TRANS_THROW_ITEMS TransThrowItems;
sWAREHOUSE WareHouseCheck;
int CompSize;
int cnt;
DWORD dwChkSum;
char szComp1, szComp2;
int flag;
if ( lpTransWareHouse ) flag = 1;
else flag = 0;
if ( !flag && QuitSave ) return FALSE;
for( cnt=0;cnt<300;cnt++) {
if ( !lpWareHouse->WareHouseItem[cnt].Flag ) {
ZeroMemory( &lpWareHouse->WareHouseItem[cnt] , sizeof(sITEM ) );
}
}
CompSize = EecodeCompress( (BYTE )lpWareHouse , (BYTE )TransWareHouse.Data , sizeof(sWAREHOUSE) , sizeof( sITEM )*100 );
//¿ë·® ýũ
if ( !flag && CompSize>(smSOCKBUFF_SIZE-256) )
return FALSE;
if ( flag && CompSize>(smSOCKBUFF_SIZE-140) )
return FALSE;
DecodeCompress( (BYTE )TransWareHouse.Data , (BYTE )&WareHouseCheck , sizeof(sWAREHOUSE) );
szComp1 = (char *)lpWareHouse;
szComp2 = (char *)&WareHouseCheck;
dwChkSum = 0;
for( cnt=0;cnt<sizeof(sWAREHOUSE);cnt++ ) {
if ( szComp1[cnt]!=szComp2[cnt] ) {
return FALSE;
}
else {
dwChkSum += szComp1[cnt]*(cnt+1);
}
}
//â°í°¡ ¿·ÈÀ»¶§¿Í ´ÝÇûÀ»¶§ÀÇ µ·ÀÇ Â÷¸¦ °Ë»çÇϱâ À§ÇÑ º¯¼ö
WareHouseSubMoney += (CompWareHouseMoney-lpWareHouse->Money);
CompWareHouseMoney = 0;
if (!flag) {
//µ¥ÀÌŸ ¼¹ö¿¡ ¾ÆÀÌÅÛ ÀúÀå ¿ä±¸ ( º¹»ç ¾ÆÀÌÅÛ ¹æÁö )
SendSaveMoney(); //µ·
TransThrowItems.ThrowItemCount = 0;
for( cnt=0;cnt<THROW_ITEMS_MAX;cnt++) {
if ( lpWareHouse->WareHouseItem[cnt].Flag ) {
TransThrowItems.ThrowItems[TransThrowItems.ThrowItemCount].dwCode = lpWareHouse->WareHouseItem[cnt].sItemInfo.CODE;
TransThrowItems.ThrowItems[TransThrowItems.ThrowItemCount].dwHead = lpWareHouse->WareHouseItem[cnt].sItemInfo.ItemHeader.Head;
TransThrowItems.ThrowItems[TransThrowItems.ThrowItemCount].dwChkSum = lpWareHouse->WareHouseItem[cnt].sItemInfo.ItemHeader.dwChkSum;
TransThrowItems.ThrowItemCount++;
}
}
//µ¥ÀÌŸ ¼¹ö¿¡ ¾ÆÀÌÅÛ ÀúÀå ¿ä±¸ ÃÖ´ë 32°³ µ¿½Ã ( º¹»ç ¾ÆÀÌÅÛ ¹æÁö )
SendSaveThrowItems( &TransThrowItems );
}
TransWareHouse.code = smTRANSCODE_WAREHOUSE;
TransWareHouse.size = sizeof(TRANS_WAREHOUSE)-(sizeof(sWAREHOUSE)-CompSize);
TransWareHouse.DataSize = CompSize;
TransWareHouse.dwChkSum = dwChkSum;
TransWareHouse.wVersion[0] = Version_WareHouse;
TransWareHouse.wVersion[1] = 0;
if ( !flag ) {
//µ· ÀúÀå ( ¼¹ö¿¡¼ »ç¿ëÇÒ ³»¿ë / ºÒ·¯¿Ã¶§´Â ¼¹ö¿¡¼ ÃʱâÈ ÇØÁà¾ß ÇÔ )
TransWareHouse.WareHouseMoney = lpWareHouse->Money ^ (dwChkSum^smTRANSCODE_WAREHOUSE);
TransWareHouse.UserMoney = lpCurPlayer->smCharInfo.Money ^ (dwChkSum^smTRANSCODE_WAREHOUSE);
}
TransWareHouse.dwTemp[0] = 0;
TransWareHouse.dwTemp[1] = 0;
TransWareHouse.dwTemp[2] = 0;
TransWareHouse.dwTemp[3] = 0;
TransWareHouse.dwTemp[4] = 0;
dwLastWareHouseChkSum = dwChkSum; //ÃÖÁ¾ ÀúÀå â°í ÄÚµå
if ( flag ) {
memcpy( lpTransWareHouse , &TransWareHouse , sizeof(TRANS_WAREHOUSE) );
return TRUE;
}
if ( TransWareHouse.size>smSOCKBUFF_SIZE ) TransWareHouse.size = smSOCKBUFF_SIZE;
if ( smWsockDataServer ) {
smWsockDataServer->Send2( (char *)&TransWareHouse , TransWareHouse.size , TRUE );
SaveGameData(); //°ÔÀÓÀ» ÀúÀå
return TRUE;
}
return FALSE;
}
Percebi que THROW_ITEMS_MAX = 32 porém se eu aumento ainda sim não funciona. Alguém tem alguma ideia melhor de aumentar o limite ?