[Source] PenyaToPerin

05/10/2012 15:57 [LS]Michael#1
wollte eine function schreiben die penya in perin umtauscht blos irgendwie erfüllt sie nicht ihre aufgabe würde mich freuen wen mir einer helfen kann woran das liegt

PHP Code:
BOOL TextCmd_penyatoperinCScannerscanner )
{
scanner.GetToken();
#ifdef __WORLDSERVER
    
DWORD dwNum;
    
DWORD dwCharged        0;
    
CItemElem itemElem;
    
CUserpUser    = (CUser*)scanner.dwValue;
    
CWorldpWorld    pUser->GetWorld();
        
int MaxPenya pUser->GetGold();
        
int Count 0;
            while( 
MaxPenya >= 100000000 )
            {
                
Count += 1;
                
MaxPenya -= 100000000;
            }
            
dwNum Count;
        
itemElem.m_dwItemId        26456;
        
itemElem.m_nItemNum        = (short)( dwNum );
        
pUser->AddGold( (Count*100000000) * (-1) );
        
pUser->CreateItem( &itemElem);//, &nId 
        
g_dpDBClient.SavePlayerpUserpWorld->GetID(), pUser->GetPos(), pUser->GetLayer() );
        
char message[255];
        
sprintfmessage"You received %d %s"CountitemElem.GetName() );
    
#endif    // __WORLDSERVER
return TRUE;

05/10/2012 16:01 DarknessFighter#2
Frag mal sedrika, er hat es auch.
05/10/2012 16:03 [LS]Michael#3
der gibt mir ja kein support^^
05/10/2012 16:21 lolix3#4
Hier ersetz die Funktion in User.cpp

PHP Code:
void CUser::AddGoldTextint nPlus )
{
    
char szPlus[64];
    
char szGold[64];

    
sprintfszPlus"%d"nPlus );
    
sprintfszGold"%d"GetGold() );

    
CString strPlus GetNumberFormatExszPlus );
    
CString strGold GetNumberFormatExszGold );

    if( 
GetGold() > 2100000000 &&  this->m_Inventory.GetEmptyCount() == && CMover::GetPerinNum() > )
    {
        
CItemElem pItem;
        
pItem.m_nItemNum CMover::GetPerinNum() + 21;
        
pItem.m_bCharged TRUE;
        
pItem.m_dwItemId II_SYS_SYS_SCR_PERIN;
        
BYTE nID;
        
CMover::RemovePerinCMover::GetPerinNum() );
        
CreateItem( &pItem, &nID );
        
AddGold( -2100000000 );
        
AddDefinedTextTID_GAME_MAKEPERIN );
    }
    else if (
GetGold() > 2100000000 &&  this->m_Inventory.GetEmptyCount() > && CMover::GetPerinNum() == 0)
    {
        
CItemElem pItem;
        
pItem.m_nItemNum 21;
        
pItem.m_bCharged TRUE;
        
pItem.m_dwItemId II_SYS_SYS_SCR_PERIN;
        
BYTE nID;
        
CreateItem( &pItem, &nID );
        
AddGold( -2100000000 );
        
AddDefinedTextTID_GAME_MAKEPERIN );
    }
    else if (
GetGold() > 2100000000 &&  this->m_Inventory.GetEmptyCount() > && CMover::GetPerinNum() > 1)
    {
        
CItemElem pItem;
        
pItem.m_nItemNum 21;
        
pItem.m_bCharged TRUE;
        
pItem.m_dwItemId II_SYS_SYS_SCR_PERIN;
        
BYTE nID;
        
CreateItem( &pItem, &nID );
        
AddGold( -2100000000 );
        
AddDefinedTextTID_GAME_MAKEPERIN );
    }
    else if (
GetGold() > 2100000000 &&  this->m_Inventory.GetEmptyCount() == && CMover::GetPerinNum() == 0)
    {
        
AddDefinedTextTID_GAME_MAKEPERIN_FAILURE );
    }

    
AddDefinedTextTID_GAME_REAPMONEY"%s %s"strPlusstrGold );

Dann DefineText.h (Source & Resource)

PHP Code:
#define TID_GAME_MAKEPERIN 4702
#define TID_GAME_MAKEPERIN_FAILURE 4703 
textClient.inc

PHP Code:
TID_GAME_MAKEPERIN    0xffbb00
{
    
IDS_TEXTCLIENT_INC_100000
}
TID_GAME_MAKEPERIN_FAILURE    0xff0000
{
    
IDS_TEXTCLIENT_INC_100001

textClient.txt.txt

PHP Code:
IDS_TEXTCLIENT_INC_100000    Es wurden 21 Perins erstelltDer Betrag wurde von deinen Penya abgezogen.
IDS_TEXTCLIENT_INC_100001    Es konnten keine Perins erstellt werdenbitte prüfe dein Inventar
Perin Stacks werden beibehalten, es werden nur Perins erstellt / Penya abgezogen wenn Inventar Platz hat, oder ein Perin Stack vorhanden ist. Es wird eine (goldene xD) Nachricht ausgegeben, wenn die Perins erstellt wurden, oder eine (rote) ausgegeben, wenn kein Platz im Inventar ist.

Credits by Yakuzai.

Hoffe es ist das was du brauchst, oder brauchen kannst.

Gruss lolix3 ;>
05/10/2012 17:22 [LS]Michael#5
optimal wäre ja noch wen ich meine function auch zum laufen griege
05/10/2012 19:59 Jopsi332#6
Code:
BOOL TextCmd_penyatoperin( CScanner& scanner )
{
scanner.GetToken();
#ifdef __WORLDSERVER
	DWORD dwCharged		= 0;
	CItemElem itemElem;
	CUser* pUser	= (CUser*)scanner.dwValue;
	CWorld* pWorld	= pUser->GetWorld();
		int MaxPenya = pUser->GetGold();
		int Count = 0;
			while( MaxPenya >= 100000000 )
			{
				Count += 1;
				MaxPenya -= 100000000;
			}

        itemElem.m_nItemNum = CMover::GetPerinNum() + Count;
        itemElem.m_bCharged = TRUE;
	itemElem.m_dwItemId = II_SYS_SYS_SCR_PERIN;
        BYTE nID;
        pUser->CreateItem( &pItem, &nID );
        pUser->AddGold( (Count*100000000) * (-1) );
		g_dpDBClient.SavePlayer( pUser, pWorld->GetID(), pUser->GetPos(), pUser->GetLayer() );
CString message;
message.Format( "You received %d %s", Count, itemElem.GetName() );
pUser->AddText(message);

#endif	// __WORLDSERVER
return TRUE;
}
vllt. so?
05/11/2012 08:40 alfredico#7
itemElem.m_nItemNum = CMover::GetPerinNum() + Count;

short for get ammount.
05/11/2012 12:35 Sedrika#8
Quote:
Originally Posted by [LS]Michael View Post
der gibt mir ja kein support^^
Ich hab es dir doch noch gestern per ICQ geschrieben....

PHP Code:
BOOL TextCmd_PenyaToPerinCScannerscanner )
{
#ifdef __WORLDSERVER
    
CUserpUser = (CUser*)scanner.dwValue;

    
CItemElem itemElem;
    
itemElem.m_dwItemId II_SYS_SYS_SCR_PERIN;
    
itemElem.m_nItemNum 0;
    
itemElem.m_bCharged TRUE;
    
BYTE nId;

    
int MaxPenya pUser->GetGold();
    
int Count 0;
    while( 
MaxPenya >= 100000000 ){
        
Count += 1;
        
MaxPenya -= 100000000;
    }

    
itemElem.m_nItemNum Count;
    
pUser->AddGold( (Count*100000000) * (-1) );

    
DWORD dwRetVal pUser->CreateItem( &itemElem, &nId );

    
char message[255];
    if( 
dwRetVal ){
        
sprintfmessage"You received %d %s"CountitemElem.GetName() );
    }else{
        
sprintfmessage"%d %s has been send to your PostBox"CountitemElem.GetName() );
        
LogItemInfo aLogItem;
        
aLogItem.Action "S";
        
aLogItem.SendName pUser->GetName();
        
aLogItem.WorldId pUser->GetWorld()->GetID();
        
aLogItem.Gold aLogItem.Gold2 pUser->GetGold();

        
g_dpDBClient.SendQueryPostMailpUser->m_idPlayer0itemElem0"""" );
        
aLogItem.RecvName "PenyaToPerin";
        
g_DPSrvr.OnLogItemaLogItem, &itemElemitemElem.m_nItemNum );
    }
    
pUser->AddTextmessage );
#endif //__WORLDSERVER
    
return TRUE;

Und es funktioniert...
05/11/2012 20:26 [LS]Michael#9
Schau mal Aufe zeit