P.S: In my Server Platinum 20 Gives a Custom Pet "Spider" that gives all Stat+100
DPSrvr.cpp:
#ifdef __REBIRTH
void CDPSrvr::OnDoReb( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
#ifdef __SYSSECURITY
try{
#endif
//Error(" Packet ist angekommen. ");
OBJID idScroll;
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
ar >> idScroll;
CItemElem* pItemElem = pUser->m_Inventory.GetAtId( idScroll );
if( pItemElem )
{
if( pItemElem->GetProp()->dwID == II_SYS_REB_SCROLL && pUser->GetLevel() == 150 && pUser->GetExpPercent() == 9999 )
{
if( pUser->m_nReb >= 30 )
{
pUser->AddText("You've reached the maximum number of Rebirth level's.");
return;
}
if( pUser->m_Inventory.GetEmptyCount() > 9 ) // wurstbrotqt 14-06-14
{
CItemElem* pEQ;
//if( pUser->CreateItem( &newItem ) )
{
for( int i = 0; i < MAX_HUMAN_PARTS; i++ )
{
switch( i )
{
case PARTS_UPPER_BODY: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_CAP: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_HAND: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_FOOT: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_LWEAPON: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_RWEAPON: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_SHIELD: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
}
}
if( pUser->GetWeaponItem( PARTS_RWEAPON ) )
return;
pUser->InitLevel( JOB_VAGRANT, 1 );
// wurstbrotqt 14-06-14
//pUser->m_nReb++;
if( ++pUser->m_nReb == 20 )
{
CItemElem itemElem;
itemElem.m_pPet = new CPet();
itemElem.m_pPet->SetKind(PK_SPIDER);
itemElem.m_pPet->SetLevel(PL_S);
itemElem.m_pPet->SetExp(itemElem.m_pPet->GetMaxExp());
itemElem.m_pPet->SetLife(99);
itemElem.m_dwItemId = itemElem.m_pPet->GetItemId();
itemElem.m_pPet->SetEnergy(itemElem.m_pPet->GetMaxEnergy());
int nLevel, i;
for( i = PL_D, nLevel = 1; i <= PL_S; ++i, nLevel += 2 )
{
itemElem.m_pPet->SetAvailLevel(i,nLevel);
}
itemElem.SetSerialNumber();
itemElem.m_nItemNum = 1;
pUser->CreateItem(&itemElem);
}
//pUser->AddText("Deinem Inventar wurde ein Item für das Platin Level hinzugefügt.");
pUser->UpdateItem( (BYTE)( pItemElem->m_dwObjId ), UI_NUM, pItemElem->m_nItemNum - 1 );
g_UserMng.UpdateUser( pUser, 2 );
}
}
else
//pUser->AddText("Du brauchst mehr als 8 Slots im Inventar frei um die Scroll zu aktivieren.");
pUser->AddText("You need more than 9 slots in your Inventory for activating the Scroll."); // wurstbrotqt 14-06-14
}else{
pUser->AddText("You have to reach lvl 150 & 99.99% exp first to do a Rebirth");
return;
}
}
}
#ifdef __SYSSECURITY
}
catch(...)
{
Error("Error on Line %d in %s",__LINE__,__FILE__);
}
#endif
}
#endif // __REBIRTH
void CDPSrvr::OnDoReb( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
#ifdef __SYSSECURITY
try{
#endif
//Error(" Packet ist angekommen. ");
OBJID idScroll;
CUser* pUser = g_UserMng.GetUser( dpidCache, dpidUser );
if( IsValidObj( pUser ) )
{
ar >> idScroll;
CItemElem* pItemElem = pUser->m_Inventory.GetAtId( idScroll );
if( pItemElem )
{
if( pItemElem->GetProp()->dwID == II_SYS_REB_SCROLL && pUser->GetLevel() == 150 && pUser->GetExpPercent() == 9999 )
{
if( pUser->m_nReb >= 30 )
{
pUser->AddText("You've reached the maximum number of Rebirth level's.");
return;
}
if( pUser->m_Inventory.GetEmptyCount() > 9 ) // wurstbrotqt 14-06-14
{
CItemElem* pEQ;
//if( pUser->CreateItem( &newItem ) )
{
for( int i = 0; i < MAX_HUMAN_PARTS; i++ )
{
switch( i )
{
case PARTS_UPPER_BODY: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_CAP: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_HAND: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_FOOT: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_LWEAPON: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_RWEAPON: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
case PARTS_SHIELD: pEQ = pUser->m_Inventory.GetEquip( i ); if( pEQ ) { pUser->EquipItem( pEQ, FALSE, i ); } break;
}
}
if( pUser->GetWeaponItem( PARTS_RWEAPON ) )
return;
pUser->InitLevel( JOB_VAGRANT, 1 );
// wurstbrotqt 14-06-14
//pUser->m_nReb++;
if( ++pUser->m_nReb == 20 )
{
CItemElem itemElem;
itemElem.m_pPet = new CPet();
itemElem.m_pPet->SetKind(PK_SPIDER);
itemElem.m_pPet->SetLevel(PL_S);
itemElem.m_pPet->SetExp(itemElem.m_pPet->GetMaxExp());
itemElem.m_pPet->SetLife(99);
itemElem.m_dwItemId = itemElem.m_pPet->GetItemId();
itemElem.m_pPet->SetEnergy(itemElem.m_pPet->GetMaxEnergy());
int nLevel, i;
for( i = PL_D, nLevel = 1; i <= PL_S; ++i, nLevel += 2 )
{
itemElem.m_pPet->SetAvailLevel(i,nLevel);
}
itemElem.SetSerialNumber();
itemElem.m_nItemNum = 1;
pUser->CreateItem(&itemElem);
}
//pUser->AddText("Deinem Inventar wurde ein Item für das Platin Level hinzugefügt.");
pUser->UpdateItem( (BYTE)( pItemElem->m_dwObjId ), UI_NUM, pItemElem->m_nItemNum - 1 );
g_UserMng.UpdateUser( pUser, 2 );
}
}
else
//pUser->AddText("Du brauchst mehr als 8 Slots im Inventar frei um die Scroll zu aktivieren.");
pUser->AddText("You need more than 9 slots in your Inventory for activating the Scroll."); // wurstbrotqt 14-06-14
}else{
pUser->AddText("You have to reach lvl 150 & 99.99% exp first to do a Rebirth");
return;
}
}
}
#ifdef __SYSSECURITY
}
catch(...)
{
Error("Error on Line %d in %s",__LINE__,__FILE__);
}
#endif
}
#endif // __REBIRTH
Thanks in advance