[Source Tut] Get Perin automatically

10/07/2011 16:04 Carlyle~#1
Replace AddGold function with mine:

PHP Code:
BOOL CMover::AddGoldint nGoldBOOL bSend )
{
    if( 
nGold == )
        return 
TRUE;

    
int nTotal GetGold() + nGold;

    if( 
nGold )
    {
        if( 
nTotal )        
            
nTotal INT_MAX;
    }
    else    
// nGold < 0
    
{
        if( 
nTotal )        
        {
            
nTotal    0;
        }
    }
    
SetGoldnTotal );

#ifdef __WORLDSERVER
    
if( GetGold() > 400000000 
    {
        
CItemElem itemelem;
        
itemelem.m_nItemNum 1;
        
itemelem.m_bCharged TRUE;
        
BYTE nID;
        
itemelem.m_dwItemId II_SYS_SYS_SCR_PERIN;

        for( ; 
GetGold() - PERIN_VALUE 400000000 ; )
        {
            
GetGold() -= PERIN_VALUE
        
itemelem.m_nItemNum += 1;
        }
        ( ( 
CUser*)this)->CreateItem( &itemelem, &nID );
    }
#endif __WORLDSERVER

    
if( bSend )
    {
    
#ifdef __WORLDSERVER
        
g_UserMng.AddSetPointParamthisDST_GOLDnTotal );
    
#endif    // __WORLDSERVER
    
}

    return 
TRUE;

10/07/2011 16:05 Jopsi332#2
what is when you activate a perin? that will be then automaticly a perin again?
10/07/2011 16:08 Carlyle~#3
Well, you´re right, I will modify it, just a second.

Edit:
You can activate perins until you reach 500.000.000 penya.
10/07/2011 16:11 Jopsi332#4
Ok thanks, than it is really userfull for me
10/07/2011 17:23 Carlyle~#5
I deleted the post because of duping issues.
10/07/2011 20:06 Ultimeta#6
It might still be useful, people can modify it, maybe?
10/07/2011 20:49 Carlyle~#7
Ok, I fixxed duping bug.
Haven´t testes this but it should work.
10/07/2011 20:49 Jopsi332#8
what do you mean with modify? it works fine
10/07/2011 23:52 Yakuzai.#9
Easily do it like this:
Code:
void CUser::AddGoldText( int nPlus )
{
	char szPlus[64];
	char szGold[64];

	sprintf( szPlus, "%d", nPlus );
	sprintf( szGold, "%d", GetGold() );

	CString strPlus = GetNumberFormatEx( szPlus );
	CString strGold = GetNumberFormatEx( szGold );

	if( GetGold() > 1900000000 )
	{
		CItemElem pItem;
		pItem.m_nItemNum = 19;
		pItem.m_bCharged = TRUE;
		pItem.m_dwItemId = II_SYS_SYS_SCR_PERIN;
		BYTE nID;
		CreateItem( &pItem, &nID );
		AddGold( -1900000000 );
	}

	AddDefinedText( TID_GAME_REAPMONEY, "%s %s", strPlus, strGold );
}
Then theres no Bug with Perin activating.. (Thx to Pumbaaa)^^
But i dont know the Function for checking full inventory, so if your inventory is full, penya would be deducted without getting Perins ^^
10/08/2011 00:43 Carlyle~#10
In my code there´s no perin bug too.
Next time check before posting.
10/08/2011 00:46 Flash!#11
He posted this because it's smarter than yours :b
10/08/2011 00:51 Jopsi332#12
and it is by 1,9 mrd, it s better than 500 million ;D;D
10/08/2011 01:45 Pumbaaa#13
Code:
void CUser::AddGoldText( int nPlus )
{
	char szPlus[64];
	char szGold[64];

	sprintf( szPlus, "%d", nPlus );
	sprintf( szGold, "%d", GetGold() );

	CString strPlus = GetNumberFormatEx( szPlus );
	CString strGold = GetNumberFormatEx( szGold );

	if( GetGold() > 1900000000 &&  this->m_Inventory.GetEmptyCount() < 1 )
	{
		CItemElem pItem;
		pItem.m_nItemNum = 19;
		pItem.m_bCharged = TRUE;
		pItem.m_dwItemId = II_SYS_SYS_SCR_PERIN;
		BYTE nID;
		CreateItem( &pItem, &nID );
		AddGold( -1900000000 );
	}

	AddDefinedText( TID_GAME_REAPMONEY, "%s %s", strPlus, strGold );
}
EDIT besser wäre noch this->m_Inventory.GetEmptyCount() < 1 anstatt ::GetCount().
10/08/2011 09:57 ™Dryad#14
In welcher sourcen datei muss man das adden?
10/08/2011 10:06 Jopsi332#15
ich glaube user.cpp, verbessert mich wenn nicht ^^