Tauscht das hier
Code:
#ifdef __BARUNA_PIERCING
case BARUNA_PIERCE:
{
DWORD dwId1, dwId2, dwId3, dwId4;
ar >> dwId1; // Baruna Weapon
ar >> dwId2; // Baruna Rune
ar >> dwId3; // Baruna Pprotect
ar >> dwId4; // Baruna Piercing Rate
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
CItemElem* pItemElem0 = pUser->m_Inventory.GetAtId( dwId1 );
CItemElem* pItemElem1 = pUser->m_Inventory.GetAtId( dwId2 );
CItemElem* pItemElem2 = pUser->m_Inventory.GetAtId( dwId3 );
CItemElem* pItemElem3 = pUser->m_Inventory.GetAtId( dwId4 );
if( IsUsableItem( pItemElem0 ) == FALSE || IsUsableItem( pItemElem1 ) == FALSE )
return;
if( pUser->m_vtInfo.GetOther() )
return;
if( pUser->m_vtInfo.VendorIsVendor() )
return;
if( pUser->m_Inventory.IsEquip( pItemElem0->m_dwObjId ) )
return;
if( pItemElem0->GetProp()->dwReferStat1 != BARUNA_D ||
( pItemElem0->GetProp()->dwItemKind2 != IK2_WEAPON_DIRECT && pItemElem0->GetProp()->dwItemKind2 != IK2_WEAPON_MAGIC ) )
return;
if( pItemElem0->GetPiercingSize() >= MAX_PIERCING_BARUNA )
return;
if( pItemElem1->GetProp()->dwItemKind3 != IK3_BARUNAWEA_PIERCE_RUNE )
return;
if( IsUsableItem( pItemElem2 ) && pItemElem2->m_dwItemId != II_SYS_SYS_SCR_BARUNAPRPROTECT )
return;
if( IsUsableItem( pItemElem3 ) && pItemElem3->m_dwItemId != II_SYS_SYS_SCR_BARUNAPRRATE )
return;
int nProb = 0;
nProb = pItemElem1->GetProp()->nEffectValue;
if( pItemElem3 != NULL )
nProb += pItemElem3->GetProp()->nEffectValue;
if( xRandom( 10000 ) > (DWORD)nProb )
{
pUser->AddPlaySound( SND_INF_UPGRADEFAIL );
g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_FAIL, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
if( pItemElem2 == NULL )
{
pUser->RemoveItem( (BYTE)dwId2, (short)1 );
pUser->AddDefinedText( TID_BW_PEARCING_CONFIRM_MSG_2 , "" );
}
else
pUser->AddDefinedText( TID_BW_PEARCING_CONFIRM_MSG_3 , "" );
}
else
{
pUser->UpdateItem( (BYTE)pItemElem0->m_dwObjId, UI_PIERCING_SIZE, pItemElem0->GetPiercingSize() + 1 );
pUser->AddPlaySound( SND_INF_UPGRADESUCCESS );
g_UserMng.AddCreateSfxObj((CMover *)pUser, XI_INT_SUCCESS, pUser->GetPos().x, pUser->GetPos().y, pUser->GetPos().z);
pUser->AddDefinedText( TID_BW_PEARCING_CONFIRM_MSG_1 , "" );
pUser->Pierce( pItemElem0, pItemElem1->m_dwItemId );
pUser->RemoveItem( (BYTE)dwId2, (short)1 );
}
if( pItemElem2 != NULL )
pUser->RemoveItem( (BYTE)dwId3, (short)1 );
if( pItemElem3 != NULL )
pUser->RemoveItem( (BYTE)dwId4, (short)1 );
}
return;
}
break;
#endif // __BARUNA_PIERCING
gegen eure Funktion in der DpSrvr.cpp und Baruna Piercing ist gefixt
edit
ihr müsst noch
#define MAX_PIERCING_BARUNA 3
unter
#define MAX_RANGE_NPC_MENU 1024
einfügen