Das ganze ist so aufgebaut das es ingame völlig Idiotensicher zu benutzen ist sobald man den Befehl /awake kennt.
Alles was man falsch machen kann wird vom System automatisch beantwortet.
PetStack Fixxed |||| Baruna Crash Bug Fixxed
Falls ihr eure Baruna Waffen awakebar habt und mit /awake nutzbar machen wollt alle Zeilen die Mit //Baruna kommentiert sind komplett auskommentieren bzw löschen.
FuncTextCmd.cpp
PHP Code:
ON_TEXTCMDFUNC( TextCmd_AwakeItem, "AwakeItem", "awake", "°¢¼ºÃູ", "°¢Ãà", TCM_BOTH, AUTH_GENERAL , "" )
PHP Code:
BOOL TextCmd_AwakeItem( CScanner & s )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)s.dwValue;
CItemElem* pItemElem = pUser->m_Inventory.GetAt( 0 );
if( pItemElem )
{
int nCost = 150000;
int nRandomOptionKind = g_xRandomOptionProperty->GetRandomOptionKind( pItemElem );
if( 0 < nCost )
{
if( pItemElem->GetProp()->dwItemKind1 == IK1_WEAPON ||
pItemElem->GetProp()->dwItemKind1 == IK1_ARMOR ||
pItemElem->GetProp()->dwItemKind3 == IK3_PET ||
pItemElem->GetProp()->dwItemKind3 == IK3_EGG )
{
if( !pItemElem->IsEgg( ) )
{
if( !pItemElem->GetProp()->IsBaruna() ) //Baruna
{ //Baruna
if( pUser->GetGold() >= nCost )
{
if ( !pUser->HasActivatedEatPet() && !pUser->HasPet() )
{
pUser->AddGold( -( nCost ) );
g_xRandomOptionProperty->InitializeRandomOption( pItemElem->GetRandomOptItemIdPtr() );
g_xRandomOptionProperty->GenRandomOption( pItemElem->GetRandomOptItemIdPtr(), nRandomOptionKind, pItemElem->GetProp()->dwParts );
pUser->UpdateItemEx( (BYTE)( pItemElem->m_dwObjId ), UI_RANDOMOPTITEMID, pItemElem->GetRandomOptItemId() );
}
else
{
pUser->AddText( "Du musst dein Pet zum erwecken einpacken." );
}
}
else
{
pUser->AddText( "Du hast nicht genug Geld um ein Item zu erwecken." );
}
}
else //Baruna
{ //Baruna
pUser->AddText( "Sorry aber Baruna Waffen kann man zurzeit nicht erwecken." ); //Baruna
} //Baruna
} //Baruna
else
{
pUser->AddText( "Du kannst das Pet erst erwecken wenn es geschlüpft ist." );
}
}
else
{
pUser->AddText( "Du kannst dieses Item nicht erwecken." );
pUser->AddText( "Lege ein Erweckbares Item in den ersten Slot deines Inventars um es zu erwecken!" );
}
}
}
else
{
pUser->AddText( "Das zu erweckende Item muss im ersten Slot deines Inventars liegen!" );
}
#endif //__WORLDSERVER
return TRUE;
}
randomoption.h
PHP Code:
//Innerhalb von :
//
//class CRandomOptionProperty
//{
//public:
BOOL GenAwakeItem( __int64* pnRandomOptItemId, int nRandomOptionKind, int nParts, bool bDecreaseFlag = false );
randomoption.cpp
PHP Code:
BOOL CRandomOptionProperty::GenAwakeItem( __int64* pnRandomOptItemId, int nRandomOptionKind, int nParts, bool bDecreaseFlag /* = false */ )
{
if( GetRandomOptionSize( *pnRandomOptItemId ) > 0 )
{
return FALSE;
}
int nRandomOptionSize = DetermineRandomOptionSize( nRandomOptionKind );
int nDecreaseNumber = -1;
if( bDecreaseFlag == true )
{
nDecreaseNumber = xRandom( nRandomOptionSize );
}
while( nRandomOptionSize-- > 0 )
{
RANDOM_OPTION* pRandomOption = DetermineRandomOptionDst( nRandomOptionKind, nParts );
ASSERT( pRandomOption );
bool bDecreaseAdj = false;
if( nRandomOptionSize == nDecreaseNumber )
{
bDecreaseAdj = true;
}
else
{
bDecreaseAdj = false;
}
short nAdj = DetermineRandomOptionAdj( pRandomOption, bDecreaseAdj );
SetParam( pnRandomOptItemId, pRandomOption->nDst, nAdj );
}
return TRUE;
}