Little code help

01/31/2020 16:36 IFlyffMc#1
How can posibly change this code into specific item and not a raised pet and i wanted to be on the 10th and 20th rb will get a specific item too? please help me


Code:
#ifdef __REBIRTH
void CDPSrvr::OnDoReb( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
#ifdef __SYSSECURITY
try{
#endif	
	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 ) //  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 );
						//  14-06-14
						//pUser->m_nReb++;
						if( ++pUser->m_nReb == 30 )
						{
							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? das Platin Level hinzugef?t.");
						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."); //  14-06-14
			}else{
			
				pUser->AddText("You have to reach the Max. Level & 99.99% exp first to do a Rebirth");
				return;
			}
		}
	}
#ifdef __SYSSECURITY
}
catch(...)
{
	Error("Error on Line %d in %s",__LINE__,__FILE__);
}
#endif
}
#endif // __REBIRTH
02/01/2020 04:27 flyffdev#2
Code:
if( ++pUser->m_nReb == 30 )
						{
							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);
						}
That's for the pet, you can remove the code if you do not want to get a pet at level 30

for the specific items you can actually set it on event.lua on resource

you're welcome ^_^
02/01/2020 16:43 IFlyffMc#3
Quote:
Originally Posted by flyffdev View Post
Code:
if( ++pUser->m_nReb == 30 )
						{
							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);
						}
That's for the pet, you can remove the code if you do not want to get a pet at level 30

for the specific items you can actually set it on event.lua on resource

you're welcome ^_^
Thanks for the reply sir! I got it hehe thank you Godblesss you!!
:handsdown: