[Mini-Release] Drop awake staff

02/18/2020 14:51 Steffen Tequila#1
Jow, wers' gebrauchen kann. wollt ich mal nutzen, aber kam doch nicht dazu.
Ihr erweckt damit fallen gelassene items von montser automatisch.

Etwas abgeänderter Code für 3line Awakes weil der andere nicht funkt auf 3lines.
Für die, die keine ahnung haben, der funkt 100% auf 3lines. ;-)

Ps: is' halt nur eine Kleinigkeit geändert, also nix großes.

Der Code ist unten zu finden, soll nur Orientierung sein.

Mover.cpp,
BOOL CMover :: DropItem,

Code:
							DWORD dwNum		= lpDropItem->dwNumber;
							if(  dwNum == (DWORD)-1 )
								dwNum	= 1;

							if( lpMoverProp->dwFlying )
							{
								CItemElem itemElem;
								itemElem.m_dwItemId	= lpDropItem->dwIndex;
								itemElem.m_nItemNum	= (short)( xRandom( dwNum ) + 1 );
								itemElem.SetAbilityOption( lpDropItem->dwLevel );
								
								if( pAttacker->CreateItem( &itemElem ) == TRUE )
								{	// log
									ItemProp* pItemProp	= itemElem.GetProp();
									if( pItemProp )
									{
										( (CUser*)pAttacker )->AddDefinedText( TID_GAME_REAPITEM, "\"%s\"", pItemProp->szName );
										if( pItemProp->dwItemKind1 == IK1_WEAPON || pItemProp->dwItemKind1 == IK1_ARMOR || ( pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_JEWELRY ) )
										{
											switch( pItemProp->nLog )
											{
												case 1:		g_dpDBClient.SendLogUniqueItem2( pAttacker, itemElem.GetProp(), itemElem.GetAbilityOption() );	break;
												case 2:		g_dpDBClient.SendLogUniqueItem2( pAttacker, itemElem.GetProp(), 200 );	break;
												case 3:		g_dpDBClient.SendLogUniqueItem2( pAttacker, itemElem.GetProp(), 100 );	break;
											}
										}
									}
									if( lpDropItem->dwNumber != (DWORD)-1 )
										nNumber++;
									if(  (DWORD)( nNumber ) >= lpMoverProp->m_DropItemGenerator.m_dwMax )
										break;
								}
								continue;
							}
							CItemElem* pItemElem	= new CItemElem;
							pItemElem->m_dwItemId	= lpDropItem->dwIndex;
							pItemElem->m_nItemNum	= (short)( xRandom( dwNum ) + 1 );
							

							ItemProp* pItemProp		= pItemElem->GetProp();
							if( pItemProp )
							{
								pItemElem->m_nHitPoint	= pItemProp->dwEndurance;
								pItemElem->SetRandomOpt( CRandomOptItemGen::GetInstance()->GenRandomOptItem( lpMoverProp->dwLevel, (FLOAT)nProbability / 100.0f, pItemProp, lpMoverProp->dwClass ) );
							}
							pItemElem->SetAbilityOption( lpDropItem->dwLevel );		// Ãß°¡ ´É·ÂÄ¡ +1, +2 °°Àº°Å.
							pItemElem->SetSerialNumber();
#ifdef __DROP_AWAKE_SHIVA
							int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind(pItemElem);
							if (nRandomOptionKind >= 0)	
							{
								g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr());
								g_xRandomOptionProperty->GenRandomOption(pItemElem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItemElem->GetProp()->dwParts, FALSE);
							}
#endif __DROP_AWAKE_SHIVA
greez stevyboy
02/19/2020 03:38 Avalion#2
you can also random just about anything that drops if you want to.
SetAbilityOption
SetPiercingSize
SetPiercingItem
SetUltimatePiercingSize
m_bItemResist
m_nResistAbilityOption
SetRandomOpt
SetLevelDown
02/22/2020 02:39 Hyellow#3
Quote:
Originally Posted by Avalion View Post
you can also random just about anything that drops if you want to.
SetAbilityOption
SetPiercingSize
SetPiercingItem
SetUltimatePiercingSize
m_bItemResist
m_nResistAbilityOption
SetRandomOpt
SetLevelDown
Its so good to see you active again. <3
02/26/2020 17:47 IFlyffMc#4
Quote:
Originally Posted by Steffen Tequila View Post
Jow, wers' gebrauchen kann. wollt ich mal nutzen, aber kam doch nicht dazu.
Ihr erweckt damit fallen gelassene items von montser automatisch.

Etwas abgeänderter Code für 3line Awakes weil der andere nicht funkt auf 3lines.
Für die, die keine ahnung haben, der funkt 100% auf 3lines. ;-)

Ps: is' halt nur eine Kleinigkeit geändert, also nix großes.

Der Code ist unten zu finden, soll nur Orientierung sein.

Mover.cpp,
BOOL CMover :: DropItem,

Code:
							DWORD dwNum		= lpDropItem->dwNumber;
							if(  dwNum == (DWORD)-1 )
								dwNum	= 1;

							if( lpMoverProp->dwFlying )
							{
								CItemElem itemElem;
								itemElem.m_dwItemId	= lpDropItem->dwIndex;
								itemElem.m_nItemNum	= (short)( xRandom( dwNum ) + 1 );
								itemElem.SetAbilityOption( lpDropItem->dwLevel );
								
								if( pAttacker->CreateItem( &itemElem ) == TRUE )
								{	// log
									ItemProp* pItemProp	= itemElem.GetProp();
									if( pItemProp )
									{
										( (CUser*)pAttacker )->AddDefinedText( TID_GAME_REAPITEM, "\"%s\"", pItemProp->szName );
										if( pItemProp->dwItemKind1 == IK1_WEAPON || pItemProp->dwItemKind1 == IK1_ARMOR || ( pItemProp->dwItemKind1 == IK1_GENERAL && pItemProp->dwItemKind2 == IK2_JEWELRY ) )
										{
											switch( pItemProp->nLog )
											{
												case 1:		g_dpDBClient.SendLogUniqueItem2( pAttacker, itemElem.GetProp(), itemElem.GetAbilityOption() );	break;
												case 2:		g_dpDBClient.SendLogUniqueItem2( pAttacker, itemElem.GetProp(), 200 );	break;
												case 3:		g_dpDBClient.SendLogUniqueItem2( pAttacker, itemElem.GetProp(), 100 );	break;
											}
										}
									}
									if( lpDropItem->dwNumber != (DWORD)-1 )
										nNumber++;
									if(  (DWORD)( nNumber ) >= lpMoverProp->m_DropItemGenerator.m_dwMax )
										break;
								}
								continue;
							}
							CItemElem* pItemElem	= new CItemElem;
							pItemElem->m_dwItemId	= lpDropItem->dwIndex;
							pItemElem->m_nItemNum	= (short)( xRandom( dwNum ) + 1 );
							

							ItemProp* pItemProp		= pItemElem->GetProp();
							if( pItemProp )
							{
								pItemElem->m_nHitPoint	= pItemProp->dwEndurance;
								pItemElem->SetRandomOpt( CRandomOptItemGen::GetInstance()->GenRandomOptItem( lpMoverProp->dwLevel, (FLOAT)nProbability / 100.0f, pItemProp, lpMoverProp->dwClass ) );
							}
							pItemElem->SetAbilityOption( lpDropItem->dwLevel );		// Ãß°¡ ´É·ÂÄ¡ +1, +2 °°Àº°Å.
							pItemElem->SetSerialNumber();
#ifdef __DROP_AWAKE_SHIVA
							int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind(pItemElem);
							if (nRandomOptionKind >= 0)	
							{
								g_xRandomOptionProperty->InitializeRandomOption(pItemElem->GetRandomOptItemIdPtr());
								g_xRandomOptionProperty->GenRandomOption(pItemElem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItemElem->GetProp()->dwParts, FALSE);
							}
#endif __DROP_AWAKE_SHIVA
greez stevyboy

is this a code for a drop item with awakes am i right sir?
02/27/2020 14:53 - DK#5
Quote:
Originally Posted by IFlyffMc View Post
is this a code for a drop item with awakes am i right sir?
Thats right.
04/09/2020 14:46 TestUrSkillz#6
After adding your code, often times Items are dropping without Awakening .. Can you tell me why ?