- Joined
- Apr 30, 2011
- Messages
- 255
- Reaction score
- 91
this guide is for those who cant follow the source given by Johnny
just follow and paste the code
Dont hate me.. just trying to help those newbie like me
tt1:
Update....
if you got problem with the first Step, use this:
look this
replace the entire code regards with BOOL CAIPet::SubItemLoot( void )
with this
i dont know your exact source codes regards with BOOL CAIPet::SubItemLoot( void ) so, paste mine
just follow and paste the code
First:
_AIInterface Folder (AIPet.cpp)
Look for
paste the code under
2nd: _Common (Mover.cpp)
Under this
Copy and paste this
3rd: _Common (Mover.h)
Under this
Copy and Paste this
Under this
Copy and Paste this
4th: _Interface (WndPetSys.cpp)
Under this
Paste this
Under this
Paste this
5th: _Network (MsgHdr.h)
Under this
Paste this
6th: Neuz (DPClient.cpp)
Under this
Paste this
Look this
Under this
Paste this
6th: Neuz (DPClient.h)
Under this
Paste this
7th: Neuz (VersionCommon.h)
Under this
Paste this
8th: WorldServer (DPSrvr.cpp)
Under this
Paste this
End of the Code Paste this
9th: WorldServer (DPSrvr.h)
Before this
Paste this
10th: WorldServer (VersionCommon.h)
Under this
Paste this
New Resdata.inc
Resdata.txt
_AIInterface Folder (AIPet.cpp)
Look for
Code:
BOOL CAIPet::SubItemLoot( void )
paste the code under
Code:
if( pItemProp )
{
BOOL b1 = TRUE;
#ifdef _PETFILTER_HOL_B
if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
b1 = FALSE;
else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
b1 = FALSE;
else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
b1 = FALSE;
else if(!pOwner->bCards && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && pItemProp->dwItemKind3 != IK3_ULTIMATE && pItemProp->dwItemKind3 != IK3_ENCHANT && pItemProp->dwItemKind3 != IK3_PIERDICE)
b1 = FALSE;
else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
b1 = FALSE;
else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
b1 = FALSE;
else if(!pOwner->bStones && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && (pItemProp->dwItemKind3 == IK3_PIERDICE || pItemProp->dwItemKind3 == IK3_ENCHANT || pItemProp->dwItemKind3 == IK3_ULTIMATE || pItemProp->dwItemKind3 == IK3_SUPSTONE))
b1 = FALSE;
else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind3 == IK2_JEWELRY)
b1 = FALSE;
#endif
#ifdef _PETFILTER_HOL_B
if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
b1 = FALSE;
else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
b1 = FALSE;
else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
b1 = FALSE;
else if(!pOwner->bCards && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && pItemProp->dwItemKind3 != IK3_ULTIMATE && pItemProp->dwItemKind3 != IK3_ENCHANT && pItemProp->dwItemKind3 != IK3_PIERDICE)
b1 = FALSE;
else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
b1 = FALSE;
else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
b1 = FALSE;
else if(!pOwner->bStones && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && (pItemProp->dwItemKind3 == IK3_PIERDICE || pItemProp->dwItemKind3 == IK3_ENCHANT || pItemProp->dwItemKind3 == IK3_ULTIMATE || pItemProp->dwItemKind3 == IK3_SUPSTONE))
b1 = FALSE;
else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind3 == IK2_JEWELRY)
b1 = FALSE;
#endif
2nd: _Common (Mover.cpp)
Under this
Code:
#endif // __PET_1024
#endif // __CLIENT
Copy and paste this
#ifdef __CLIENT
#ifdef _PETFILTER_HOL_B
void CMover::SendBuffPetCollectUpdate()
{
if(this->IsPlayer())
{
g_DPlay.SendBuffPetCollectUpdate();
}
}
#endif
#endif
#ifdef _PETFILTER_HOL_B
void CMover::SendBuffPetCollectUpdate()
{
if(this->IsPlayer())
{
g_DPlay.SendBuffPetCollectUpdate();
}
}
#endif
#endif
3rd: _Common (Mover.h)
Under this
Code:
DWORD m_dwStateMode;
#ifdef _PETFILTER_HOL_B
BOOL bQuestItem, bWeapons, bArmor, bCards, bFood, bEggs, bStones, bAccessory;
#endif
BOOL bQuestItem, bWeapons, bArmor, bCards, bFood, bEggs, bStones, bAccessory;
#endif
Code:
void SetCmdParam( int nIdx, int nValue ) { m_nCParam[nIdx] = nValue; }
#ifdef _PETFILTER_HOL_B
public:
void SendBuffPetSelect();
void SendBuffPetCollectUpdate();
private:
#endif
public:
void SendBuffPetSelect();
void SendBuffPetCollectUpdate();
private:
#endif
4th: _Interface (WndPetSys.cpp)
Under this
Code:
m_nCtrlId[7] = WIDC_BUFFPET_SLOT8;
#ifdef _PETFILTER_HOL_B
CWndButton* chk = (CWndButton*) GetDlgItem( WIDC_CHECK1 );
chk->SetCheck(g_DPlay.bQuestItem);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK2 );
chk->SetCheck(g_DPlay.bWeapons);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK3 );
chk->SetCheck(g_DPlay.bArmor);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK4 );
chk->SetCheck(g_DPlay.bCards);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK5 );
chk->SetCheck(g_DPlay.bFood);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK6 );
chk->SetCheck(g_DPlay.bEggs);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK7 );
chk->SetCheck(g_DPlay.bStones);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK8 );
chk->SetCheck(g_DPlay.bAccessory);
#endif
CWndButton* chk = (CWndButton*) GetDlgItem( WIDC_CHECK1 );
chk->SetCheck(g_DPlay.bQuestItem);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK2 );
chk->SetCheck(g_DPlay.bWeapons);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK3 );
chk->SetCheck(g_DPlay.bArmor);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK4 );
chk->SetCheck(g_DPlay.bCards);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK5 );
chk->SetCheck(g_DPlay.bFood);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK6 );
chk->SetCheck(g_DPlay.bEggs);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK7 );
chk->SetCheck(g_DPlay.bStones);
chk = (CWndButton*) GetDlgItem( WIDC_CHECK8 );
chk->SetCheck(g_DPlay.bAccessory);
#endif
Code:
BOOL CWndBuffPetStatus::OnChildNotify( UINT message, UINT nID, LRESULT* pLResult )
{
#ifdef _PETFILTER_HOL_B
switch ( nID )
{
case WIDC_CHECK1:
{
g_DPlay.bQuestItem = !g_DPlay.bQuestItem;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK2:
{
g_DPlay.bWeapons = !g_DPlay.bWeapons;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK3:
{
g_DPlay.bArmor = !g_DPlay.bArmor;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK4:
{
g_DPlay.bCards = !g_DPlay.bCards;
g_DPlay.SendBuffPetCollectUpdate();
break; }
case WIDC_CHECK5:
{
g_DPlay.bFood = !g_DPlay.bFood;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK6:
{
g_DPlay.bEggs = !g_DPlay.bEggs;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK7:
{
g_DPlay.bStones = !g_DPlay.bStones;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK8:
{
g_DPlay.bAccessory = !g_DPlay.bAccessory;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
}
#endif
switch ( nID )
{
case WIDC_CHECK1:
{
g_DPlay.bQuestItem = !g_DPlay.bQuestItem;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK2:
{
g_DPlay.bWeapons = !g_DPlay.bWeapons;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK3:
{
g_DPlay.bArmor = !g_DPlay.bArmor;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK4:
{
g_DPlay.bCards = !g_DPlay.bCards;
g_DPlay.SendBuffPetCollectUpdate();
break; }
case WIDC_CHECK5:
{
g_DPlay.bFood = !g_DPlay.bFood;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK6:
{
g_DPlay.bEggs = !g_DPlay.bEggs;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK7:
{
g_DPlay.bStones = !g_DPlay.bStones;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
case WIDC_CHECK8:
{
g_DPlay.bAccessory = !g_DPlay.bAccessory;
g_DPlay.SendBuffPetCollectUpdate();
break;
}
}
#endif
5th: _Network (MsgHdr.h)
Under this
Code:
#define PACKETTYPE_QUERYMAILBOX_COUNT (DWORD)0x88100241
#define PACKETTYPE_VISPET_UPDATECOLLECTIONS (DWORD)0x88100242
6th: Neuz (DPClient.cpp)
Under this
Code:
void CDPClient::SendSwapVis( int nPos1, int nPos2 )
{
BEFORESENDSOLE( ar, PACKETTYPE_VISPET_SWAPVIS, DPID_UNKNOWN );
ar << nPos1 << nPos2;
SEND( ar, this, DPID_SERVERPLAYER );
}
#ifdef _PETFILTER_HOL_B
void CDPClient::SendBuffPetCollectUpdate()
{
BEFORESENDSOLE( ar, PACKETTYPE_VISPET_UPDATECOLLECTIONS, DPID_UNKNOWN );
ar << (BYTE) bQuestItem << (BYTE) bWeapons << (BYTE) bArmor << (BYTE) bCards << (BYTE) bFood << (BYTE) bEggs << (BYTE) bStones << (BYTE) bAccessory;
SEND( ar, this, DPID_SERVERPLAYER );
}
#endif
void CDPClient::SendBuffPetCollectUpdate()
{
BEFORESENDSOLE( ar, PACKETTYPE_VISPET_UPDATECOLLECTIONS, DPID_UNKNOWN );
ar << (BYTE) bQuestItem << (BYTE) bWeapons << (BYTE) bArmor << (BYTE) bCards << (BYTE) bFood << (BYTE) bEggs << (BYTE) bStones << (BYTE) bAccessory;
SEND( ar, this, DPID_SERVERPLAYER );
}
#endif
Code:
void CDPClient::OnGuildHousePacket( CAr & ar )
Code:
CWndGuildHousing* pWnd = (CWndGuildHousing*)g_WndMng.GetApplet( APP_GH_FURNITURE_STORAGE );
if( pWnd )
pWnd->RefreshItemList( ); // À©µµÃ¢ÀÌ ¶°ÀÖÀ¸¸é Refresh
else
#ifdef _PETFILTER_HOL_B
if(!bInitializedPetCollection)
{
bQuestItem = bWeapons = bArmor = bCards = bFood = bEggs = bStones = bAccessory = TRUE;
g_pPlayer->SendBuffPetCollectUpdate();
bInitializedPetCollection = TRUE;
}
#endif
if(!bInitializedPetCollection)
{
bQuestItem = bWeapons = bArmor = bCards = bFood = bEggs = bStones = bAccessory = TRUE;
g_pPlayer->SendBuffPetCollectUpdate();
bInitializedPetCollection = TRUE;
}
#endif
6th: Neuz (DPClient.h)
Under this
Code:
public:
void SendGuildHouseTenderMainWnd( DWORD dwGHType, OBJID objNpcId );
void SendGuildHouseTenderInfoWnd( OBJID objGHId );
void SendGuildHouseTenderJoin( OBJID objGHId, int nTenderPerin, int nTenderPenya );
#endif // __GUILD_HOUSE_MIDDLE
#ifdef _PETFILTER_HOL_B
public:
void SendBuffPetCollectUpdate( );
BOOL bInitializedPetCollection, bQuestItem , bWeapons , bArmor , bCards , bFood, bEggs, bStones , bAccessory;
#endif
public:
void SendBuffPetCollectUpdate( );
BOOL bInitializedPetCollection, bQuestItem , bWeapons , bArmor , bCards , bFood, bEggs, bStones , bAccessory;
#endif
7th: Neuz (VersionCommon.h)
Under this
Code:
#define __MAINSERVER
#define _PETFILTER_HOL_B
8th: WorldServer (DPSrvr.cpp)
Under this
Code:
#ifdef __QUIZ
ON_MSG( PACKETTYPE_QUIZ_ENTRANCE, OnQuizEventEntrance );
ON_MSG( PACKETTYPE_QUIZ_TELEPORT, OnQuizEventTeleport );
#endif // __QUIZ
#ifdef _PETFILTER_HOL_B
ON_MSG( PACKETTYPE_VISPET_UPDATECOLLECTIONS, OnBuffPetUpdateCollection );
#endif
ON_MSG( PACKETTYPE_VISPET_UPDATECOLLECTIONS, OnBuffPetUpdateCollection );
#endif
End of the Code Paste this
#ifdef _PETFILTER_HOL_B
void CDPSrvr::OnBuffPetUpdateCollection( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )
{
try
{
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) == TRUE )
{
BYTE cQuestItem , cWeapons , cArmor , cCards , cFood , cEggs , cStones , cAccessory;
ar >> cQuestItem >> cWeapons >> cArmor >> cCards >> cFood >> cEggs >> cStones >> cAccessory;
if(cQuestItem > 0) { pUser->bQuestItem = TRUE; } else { pUser->bQuestItem = FALSE; }
if(cWeapons > 0) { pUser->bWeapons = TRUE; } else { pUser->bWeapons = FALSE; }
if(cArmor > 0) { pUser->bArmor = TRUE; } else { pUser->bArmor = FALSE; }
if(cCards > 0) { pUser->bCards = TRUE; } else { pUser->bCards = FALSE; }
if(cFood > 0) { pUser->bFood = TRUE; } else { pUser->bFood = FALSE; }
if(cEggs > 0) { pUser->bEggs = TRUE; } else { pUser->bEggs = FALSE; }
if(cStones > 0) { pUser->bStones = TRUE; } else { pUser->bStones = FALSE; }
if(cAccessory > 0) { pUser->bAccessory = TRUE; } else { pUser->bAccessory = FALSE; }
//Error("OnBuffPetUpdate (%i, %i, %i, %i, %i, %i, %i, %i)", (int) g_pPlayer->->bQuestItem, (int) pUser->m_pActMover->bWeapons, (int) pUser->m_pActMover->bArmor, (int) pUser->m_pActMover->bCards, (int) pUser->m_pActMover->bFood, (int) pUser->m_pActMover->bEggs, (int) pUser->m_pActMover->bStones, (int) pUser->m_pActMover->bAccessory);
}
}
catch(...)
{
Error("Exception caught in File %s on line %d", __FILE__, __LINE__);
}
}
#endif
void CDPSrvr::OnBuffPetUpdateCollection( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long )
{
try
{
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) == TRUE )
{
BYTE cQuestItem , cWeapons , cArmor , cCards , cFood , cEggs , cStones , cAccessory;
ar >> cQuestItem >> cWeapons >> cArmor >> cCards >> cFood >> cEggs >> cStones >> cAccessory;
if(cQuestItem > 0) { pUser->bQuestItem = TRUE; } else { pUser->bQuestItem = FALSE; }
if(cWeapons > 0) { pUser->bWeapons = TRUE; } else { pUser->bWeapons = FALSE; }
if(cArmor > 0) { pUser->bArmor = TRUE; } else { pUser->bArmor = FALSE; }
if(cCards > 0) { pUser->bCards = TRUE; } else { pUser->bCards = FALSE; }
if(cFood > 0) { pUser->bFood = TRUE; } else { pUser->bFood = FALSE; }
if(cEggs > 0) { pUser->bEggs = TRUE; } else { pUser->bEggs = FALSE; }
if(cStones > 0) { pUser->bStones = TRUE; } else { pUser->bStones = FALSE; }
if(cAccessory > 0) { pUser->bAccessory = TRUE; } else { pUser->bAccessory = FALSE; }
//Error("OnBuffPetUpdate (%i, %i, %i, %i, %i, %i, %i, %i)", (int) g_pPlayer->->bQuestItem, (int) pUser->m_pActMover->bWeapons, (int) pUser->m_pActMover->bArmor, (int) pUser->m_pActMover->bCards, (int) pUser->m_pActMover->bFood, (int) pUser->m_pActMover->bEggs, (int) pUser->m_pActMover->bStones, (int) pUser->m_pActMover->bAccessory);
}
}
catch(...)
{
Error("Exception caught in File %s on line %d", __FILE__, __LINE__);
}
}
#endif
9th: WorldServer (DPSrvr.h)
Before this
Code:
private:
DPID m_dpidCache; // ij½¬¼¹ö DPID
};
#ifdef _PETFILTER_HOL_B
void OnBuffPetUpdateCollection( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
#endif
void OnBuffPetUpdateCollection( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
#endif
10th: WorldServer (VersionCommon.h)
Under this
Code:
#define __MAINSERVER
#define _PETFILTER_HOL_B
New Resdata.inc
APP_BUFFPET_STATUS "WndTile00.tga" "" 1 352 128 0x2410000 26
{
// Title String
IDS_RESDATA_INC_006602
}
{
// Help Key
IDS_RESDATA_INC_006603
}
{
WTYPE_CUSTOM WIDC_CUSTOM1 "" 0 8 6 72 90 0x260000 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006604
}
{
// ToolTip
IDS_RESDATA_INC_006605
}
WTYPE_STATIC WIDC_BUFFPET_SLOT1 "WndElemItemBlank.tga" 0 80 2 112 34 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006606
}
{
// ToolTip
IDS_RESDATA_INC_006607
}
WTYPE_STATIC WIDC_BUFFPET_SLOT3 "WndElemItemBlank.tga" 0 144 2 176 34 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006608
}
{
// ToolTip
IDS_RESDATA_INC_006609
}
WTYPE_STATIC WIDC_BUFFPET_SLOT2 "WndElemItemBlank.tga" 0 112 2 144 34 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006610
}
{
// ToolTip
IDS_RESDATA_INC_006611
}
WTYPE_STATIC WIDC_BUFFPET_SLOT4 "WndElemItemBlank.tga" 0 80 32 112 64 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006612
}
{
// ToolTip
IDS_RESDATA_INC_006613
}
WTYPE_STATIC WIDC_BUFFPET_SLOT7 "WndElemItemBlank.tga" 0 80 62 112 94 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006614
}
{
// ToolTip
IDS_RESDATA_INC_006615
}
WTYPE_STATIC WIDC_BUFFPET_SLOT9 "WndElemItemBlank.tga" 0 144 62 176 94 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006616
}
{
// ToolTip
IDS_RESDATA_INC_006617
}
WTYPE_STATIC WIDC_BUFFPET_SLOT5 "WndElemItemBlank.tga" 0 112 32 144 64 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006618
}
{
// ToolTip
IDS_RESDATA_INC_006619
}
WTYPE_STATIC WIDC_BUFFPET_SLOT8 "WndElemItemBlank.tga" 0 112 62 144 94 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006620
}
{
// ToolTip
IDS_RESDATA_INC_006621
}
WTYPE_STATIC WIDC_BUFFPET_SLOT6 "WndElemItemBlank.tga" 0 144 32 176 64 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006622
}
{
// ToolTip
IDS_RESDATA_INC_006623
}
WTYPE_STATIC WIDC_STATIC2 "WndEditTile200.tga" 1 178 2 340 18 0x2220001 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027068
}
{
// ToolTip
IDS_RESDATA_INC_027069
}
WTYPE_BUTTON WIDC_CHECK1 "ButtCheck.bmp" 0 180 22 276 38 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027070
}
{
// ToolTip
IDS_RESDATA_INC_027071
}
WTYPE_BUTTON WIDC_CHECK2 "ButtCheck.bmp" 0 180 40 276 56 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027072
}
{
// ToolTip
IDS_RESDATA_INC_027073
}
WTYPE_BUTTON WIDC_CHECK3 "ButtCheck.bmp" 0 180 56 276 72 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027074
}
{
// ToolTip
IDS_RESDATA_INC_027075
}
WTYPE_BUTTON WIDC_CHECK4 "ButtCheck.bmp" 0 180 72 276 88 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027076
}
{
// ToolTip
IDS_RESDATA_INC_027077
}
WTYPE_BUTTON WIDC_CHECK5 "ButtCheck.bmp" 0 258 24 354 40 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027078
}
{
// ToolTip
IDS_RESDATA_INC_027079
}
WTYPE_BUTTON WIDC_CHECK6 "ButtCheck.bmp" 0 258 39 354 55 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027080
}
{
// ToolTip
IDS_RESDATA_INC_027081
}
WTYPE_BUTTON WIDC_CHECK7 "ButtCheck.bmp" 0 258 56 354 72 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027082
}
{
// ToolTip
IDS_RESDATA_INC_027083
}
WTYPE_BUTTON WIDC_CHECK8 "ButtCheck.bmp" 0 259 72 355 88 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027084
}
{
// ToolTip
IDS_RESDATA_INC_027085
}
}
{
// Title String
IDS_RESDATA_INC_006602
}
{
// Help Key
IDS_RESDATA_INC_006603
}
{
WTYPE_CUSTOM WIDC_CUSTOM1 "" 0 8 6 72 90 0x260000 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006604
}
{
// ToolTip
IDS_RESDATA_INC_006605
}
WTYPE_STATIC WIDC_BUFFPET_SLOT1 "WndElemItemBlank.tga" 0 80 2 112 34 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006606
}
{
// ToolTip
IDS_RESDATA_INC_006607
}
WTYPE_STATIC WIDC_BUFFPET_SLOT3 "WndElemItemBlank.tga" 0 144 2 176 34 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006608
}
{
// ToolTip
IDS_RESDATA_INC_006609
}
WTYPE_STATIC WIDC_BUFFPET_SLOT2 "WndElemItemBlank.tga" 0 112 2 144 34 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006610
}
{
// ToolTip
IDS_RESDATA_INC_006611
}
WTYPE_STATIC WIDC_BUFFPET_SLOT4 "WndElemItemBlank.tga" 0 80 32 112 64 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006612
}
{
// ToolTip
IDS_RESDATA_INC_006613
}
WTYPE_STATIC WIDC_BUFFPET_SLOT7 "WndElemItemBlank.tga" 0 80 62 112 94 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006614
}
{
// ToolTip
IDS_RESDATA_INC_006615
}
WTYPE_STATIC WIDC_BUFFPET_SLOT9 "WndElemItemBlank.tga" 0 144 62 176 94 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006616
}
{
// ToolTip
IDS_RESDATA_INC_006617
}
WTYPE_STATIC WIDC_BUFFPET_SLOT5 "WndElemItemBlank.tga" 0 112 32 144 64 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006618
}
{
// ToolTip
IDS_RESDATA_INC_006619
}
WTYPE_STATIC WIDC_BUFFPET_SLOT8 "WndElemItemBlank.tga" 0 112 62 144 94 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006620
}
{
// ToolTip
IDS_RESDATA_INC_006621
}
WTYPE_STATIC WIDC_BUFFPET_SLOT6 "WndElemItemBlank.tga" 0 144 32 176 64 0x2220002 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_006622
}
{
// ToolTip
IDS_RESDATA_INC_006623
}
WTYPE_STATIC WIDC_STATIC2 "WndEditTile200.tga" 1 178 2 340 18 0x2220001 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027068
}
{
// ToolTip
IDS_RESDATA_INC_027069
}
WTYPE_BUTTON WIDC_CHECK1 "ButtCheck.bmp" 0 180 22 276 38 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027070
}
{
// ToolTip
IDS_RESDATA_INC_027071
}
WTYPE_BUTTON WIDC_CHECK2 "ButtCheck.bmp" 0 180 40 276 56 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027072
}
{
// ToolTip
IDS_RESDATA_INC_027073
}
WTYPE_BUTTON WIDC_CHECK3 "ButtCheck.bmp" 0 180 56 276 72 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027074
}
{
// ToolTip
IDS_RESDATA_INC_027075
}
WTYPE_BUTTON WIDC_CHECK4 "ButtCheck.bmp" 0 180 72 276 88 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027076
}
{
// ToolTip
IDS_RESDATA_INC_027077
}
WTYPE_BUTTON WIDC_CHECK5 "ButtCheck.bmp" 0 258 24 354 40 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027078
}
{
// ToolTip
IDS_RESDATA_INC_027079
}
WTYPE_BUTTON WIDC_CHECK6 "ButtCheck.bmp" 0 258 39 354 55 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027080
}
{
// ToolTip
IDS_RESDATA_INC_027081
}
WTYPE_BUTTON WIDC_CHECK7 "ButtCheck.bmp" 0 258 56 354 72 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027082
}
{
// ToolTip
IDS_RESDATA_INC_027083
}
WTYPE_BUTTON WIDC_CHECK8 "ButtCheck.bmp" 0 259 72 355 88 0x220018 0 0 0 0 46 112 169
{
// Title String
IDS_RESDATA_INC_027084
}
{
// ToolTip
IDS_RESDATA_INC_027085
}
}
Resdata.txt
IDS_RESDATA_INC_027068 Drop Filter
IDS_RESDATA_INC_027069
IDS_RESDATA_INC_027070 QI
IDS_RESDATA_INC_027071
IDS_RESDATA_INC_027072 Weapons
IDS_RESDATA_INC_027073
IDS_RESDATA_INC_027074 Armor Parts
IDS_RESDATA_INC_027075
IDS_RESDATA_INC_027076 Cards
IDS_RESDATA_INC_027077
IDS_RESDATA_INC_027078 Food
IDS_RESDATA_INC_027079
IDS_RESDATA_INC_027080 Egg
IDS_RESDATA_INC_027081
IDS_RESDATA_INC_027082 Stones
IDS_RESDATA_INC_027083
IDS_RESDATA_INC_027084 Jewelry
IDS_RESDATA_INC_027085
IDS_RESDATA_INC_027069
IDS_RESDATA_INC_027070 QI
IDS_RESDATA_INC_027071
IDS_RESDATA_INC_027072 Weapons
IDS_RESDATA_INC_027073
IDS_RESDATA_INC_027074 Armor Parts
IDS_RESDATA_INC_027075
IDS_RESDATA_INC_027076 Cards
IDS_RESDATA_INC_027077
IDS_RESDATA_INC_027078 Food
IDS_RESDATA_INC_027079
IDS_RESDATA_INC_027080 Egg
IDS_RESDATA_INC_027081
IDS_RESDATA_INC_027082 Stones
IDS_RESDATA_INC_027083
IDS_RESDATA_INC_027084 Jewelry
IDS_RESDATA_INC_027085
Dont hate me.. just trying to help those newbie like me

Update....
if you got problem with the first Step, use this:
look this
Code:
BOOL CAIPet::SubItemLoot( void )
replace the entire code regards with BOOL CAIPet::SubItemLoot( void )
with this
BOOL CAIPet::SubItemLoot( void )
{
CMover* pMover = GetMover();
CMover* pOwner = prj.GetMover( m_idOwner );
CWorld* pWorld = GetWorld();
MoverProp *pProp = pMover->GetProp();
D3DXVECTOR3 vPos = pMover->GetPos();
CObj *pObj = NULL;
int nRange = 0;
D3DXVECTOR3 vDist;
FLOAT fDistSq, fMinDist = 9999999.0f;
CObj *pMinObj = NULL;
vDist = pOwner->GetPos() - pMover->GetPos();
fDistSq = D3DXVec3LengthSq( &vDist );
if( fDistSq > 32.0f * 32.0f ) // ÁÖÀδ԰úÀÇ °Å¸®°¡ 32¹ÌÅÍ°¡ ³ÑÀ¸¸é ¾ÆÀÌÅÛ ¾ÈÁý´Â´Ù.
return FALSE;
if( pOwner && pOwner->IsFly() )
return FALSE;
// ±ÙóÀÇ ¾ÆÀÌÅÛÀ» °Ë»öÇÔ. - ÁÖÀδԲ¨¸¸ °Ë»öÇؾßÇÒµí...
FOR_LINKMAP( pWorld, vPos, pObj, nRange, CObj::linkDynamic, pMover->GetLayer() )
{
if( pObj->GetType() == OT_ITEM ) //OT_ITEM
{
CItem *pItem = (CItem *)pObj; //pItem vllt IK3 usw
ItemProp* pItemProp = pItem->GetProp();
// ÀÌ°É µû·Î ³ÖÀºÀÌÀ¯´Â StateIdle ARRIVAL¿¡¼ DoLoot()ÇÏ°í ³Á÷ÈÄ¿¡ ´Ù½Ã SubItemLoot()À» È£ÃâÇßÀ»¶§
// LootÇÑ ¾ÆÀÌÅÛÀÌ ¾ÆÁ÷ ¾ÈÁö¿öÁ®¼ ¿©±â¼ ¶Ç °Ë»öÀÌ µÇ´õ¶ó°í.. ±×·¡¼ Áߺ¹µÇ´Â ¾ÆÀÌÅÛÀº °Ë»ö ¾ÈµÇ°Ô °íÃĺôÙ.
// if( pItem->GetId() != m_idLootItem )
if( pItem->IsDelete() == FALSE )
{
if( pItemProp )
{
BOOL b1 = TRUE;
#ifdef _PETFILTER_HOL_B
//Error("Kind1: %i,Kind2: %i,Kind3: %i; pMover->m_pActMover->bQuestItem: %i", (int) pItemProp->dwItemKind1, (int) pItemProp->dwItemKind2, (int) pItemProp->dwItemKind3, (int)pMover->m_pActMover->bQuestItem);
// BYTE cQuestItem , cWeapons , cArmor , cCards , cDrinks, cEggs, cStones , cAccessory
if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
b1 = FALSE;
else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
b1 = FALSE;
else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
b1 = FALSE;
else if(!pOwner->bCards && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && pItemProp->dwItemKind3 != IK3_ULTIMATE && pItemProp->dwItemKind3 != IK3_ENCHANT && pItemProp->dwItemKind3 != IK3_PIERDICE)
b1 = FALSE;
else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
b1 = FALSE;
else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
b1 = FALSE;
else if(!pOwner->bStones && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && (pItemProp->dwItemKind3 == IK3_PIERDICE || pItemProp->dwItemKind3 == IK3_ENCHANT || pItemProp->dwItemKind3 == IK3_ULTIMATE || pItemProp->dwItemKind3 == IK3_SUPSTONE))
b1 = FALSE;
else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind3 == IK2_JEWELRY)
b1 = FALSE;
#endif
if( pOwner->IsLoot( pItem, TRUE ) && b1 ) // ·çÆõǴ¾ÆÀÌÅÛÀÎÁö °Ë»çÇÔ.
{
vDist = pObj->GetPos() - pMover->GetPos();
fDistSq = D3DXVec3LengthSq( &vDist ); // °Å¸® ±¸ÇÔ.
if( fDistSq < 15 * 15 && fDistSq < fMinDist ) // 10¹ÌÅÍ À̳»°í... °¡Àå °Å¸®°¡ °¡±î¿î ¾ÆÅÛÀ» ãÀ½.
{
pMinObj = pObj;
}
}
}
}
}
}
END_LINKMAP
if( pMinObj )
{
// Get object ID of the loot item
DWORD dwIdLootItem = ((CItem *)pMinObj)->GetId();
// Get the item obj
CCtrl *pCtrl = prj.GetCtrl( dwIdLootItem );
// if exists...
if( IsValidObj(pCtrl) )
{
MoveToDst( pMinObj->GetPos() ); // ¸ñÇ¥ÂÊÀ¸·Î À̵¿.
m_idLootItem = dwIdLootItem;
m_bLootMove = TRUE;
}
}
return m_bLootMove;
}
{
CMover* pMover = GetMover();
CMover* pOwner = prj.GetMover( m_idOwner );
CWorld* pWorld = GetWorld();
MoverProp *pProp = pMover->GetProp();
D3DXVECTOR3 vPos = pMover->GetPos();
CObj *pObj = NULL;
int nRange = 0;
D3DXVECTOR3 vDist;
FLOAT fDistSq, fMinDist = 9999999.0f;
CObj *pMinObj = NULL;
vDist = pOwner->GetPos() - pMover->GetPos();
fDistSq = D3DXVec3LengthSq( &vDist );
if( fDistSq > 32.0f * 32.0f ) // ÁÖÀδ԰úÀÇ °Å¸®°¡ 32¹ÌÅÍ°¡ ³ÑÀ¸¸é ¾ÆÀÌÅÛ ¾ÈÁý´Â´Ù.
return FALSE;
if( pOwner && pOwner->IsFly() )
return FALSE;
// ±ÙóÀÇ ¾ÆÀÌÅÛÀ» °Ë»öÇÔ. - ÁÖÀδԲ¨¸¸ °Ë»öÇؾßÇÒµí...
FOR_LINKMAP( pWorld, vPos, pObj, nRange, CObj::linkDynamic, pMover->GetLayer() )
{
if( pObj->GetType() == OT_ITEM ) //OT_ITEM
{
CItem *pItem = (CItem *)pObj; //pItem vllt IK3 usw
ItemProp* pItemProp = pItem->GetProp();
// ÀÌ°É µû·Î ³ÖÀºÀÌÀ¯´Â StateIdle ARRIVAL¿¡¼ DoLoot()ÇÏ°í ³Á÷ÈÄ¿¡ ´Ù½Ã SubItemLoot()À» È£ÃâÇßÀ»¶§
// LootÇÑ ¾ÆÀÌÅÛÀÌ ¾ÆÁ÷ ¾ÈÁö¿öÁ®¼ ¿©±â¼ ¶Ç °Ë»öÀÌ µÇ´õ¶ó°í.. ±×·¡¼ Áߺ¹µÇ´Â ¾ÆÀÌÅÛÀº °Ë»ö ¾ÈµÇ°Ô °íÃĺôÙ.
// if( pItem->GetId() != m_idLootItem )
if( pItem->IsDelete() == FALSE )
{
if( pItemProp )
{
BOOL b1 = TRUE;
#ifdef _PETFILTER_HOL_B
//Error("Kind1: %i,Kind2: %i,Kind3: %i; pMover->m_pActMover->bQuestItem: %i", (int) pItemProp->dwItemKind1, (int) pItemProp->dwItemKind2, (int) pItemProp->dwItemKind3, (int)pMover->m_pActMover->bQuestItem);
// BYTE cQuestItem , cWeapons , cArmor , cCards , cDrinks, cEggs, cStones , cAccessory
if(!pOwner->bQuestItem && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GEM && pItemProp->dwItemKind3 == IK3_GEM)
b1 = FALSE;
else if(!pOwner->bWeapons && pItemProp->dwItemKind1 == IK1_WEAPON)
b1 = FALSE;
else if(!pOwner->bArmor && pItemProp->dwItemKind1 == IK1_ARMOR)
b1 = FALSE;
else if(!pOwner->bCards && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && pItemProp->dwItemKind3 != IK3_ULTIMATE && pItemProp->dwItemKind3 != IK3_ENCHANT && pItemProp->dwItemKind3 != IK3_PIERDICE)
b1 = FALSE;
else if(!pOwner->bFood && pItemProp->dwItemKind1 == IK1_GENERAL && (pItemProp->dwItemKind2 == IK2_FOOD || pItemProp->dwItemKind2 == IK2_REFRESHER || pItemProp->dwItemKind2 == IK2_POTION))
b1 = FALSE;
else if(!pOwner->bEggs && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_GENERAL && pItemProp->dwItemKind3 == IK3_EGG)
b1 = FALSE;
else if(!pOwner->bStones && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_MATERIAL && (pItemProp->dwItemKind3 == IK3_PIERDICE || pItemProp->dwItemKind3 == IK3_ENCHANT || pItemProp->dwItemKind3 == IK3_ULTIMATE || pItemProp->dwItemKind3 == IK3_SUPSTONE))
b1 = FALSE;
else if(!pOwner->bAccessory && pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind3 == IK2_JEWELRY)
b1 = FALSE;
#endif
if( pOwner->IsLoot( pItem, TRUE ) && b1 ) // ·çÆõǴ¾ÆÀÌÅÛÀÎÁö °Ë»çÇÔ.
{
vDist = pObj->GetPos() - pMover->GetPos();
fDistSq = D3DXVec3LengthSq( &vDist ); // °Å¸® ±¸ÇÔ.
if( fDistSq < 15 * 15 && fDistSq < fMinDist ) // 10¹ÌÅÍ À̳»°í... °¡Àå °Å¸®°¡ °¡±î¿î ¾ÆÅÛÀ» ãÀ½.
{
pMinObj = pObj;
}
}
}
}
}
}
END_LINKMAP
if( pMinObj )
{
// Get object ID of the loot item
DWORD dwIdLootItem = ((CItem *)pMinObj)->GetId();
// Get the item obj
CCtrl *pCtrl = prj.GetCtrl( dwIdLootItem );
// if exists...
if( IsValidObj(pCtrl) )
{
MoveToDst( pMinObj->GetPos() ); // ¸ñÇ¥ÂÊÀ¸·Î À̵¿.
m_idLootItem = dwIdLootItem;
m_bLootMove = TRUE;
}
}
return m_bLootMove;
}
i dont know your exact source codes regards with BOOL CAIPet::SubItemLoot( void ) so, paste mine
Last edited: