tag,
beim ersten geh mal in die funktextcmd.cpp und schick uns mal die funktion von : TextCmd_Summon
zum 2.
funktextcmd.cpp
Code:
BOOL TextCmd_Level( CScanner & scanner )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
if( !IsValidObj( pUser ) )
{
pUser->AddText( "Invalid user." );
return TRUE;
}
scanner.GetToken();
u_long idTarget = CPlayerDataCenter::GetInstance()->GetPlayerId( scanner.token );
if( idTarget == 0 )
idTarget = pUser->m_idPlayer;
CUser* pTarget = g_UserMng.GetUserByPlayerID( idTarget );
if( !IsValidObj( pTarget ) )
{
pUser->AddText( "Falscher Username!" );
return TRUE;
}
scanner.GetToken();
CString strJob = scanner.Token;
int nJob = JOB_VAGRANT;
LONG nLevel = scanner.GetNumber();
if( nLevel == 0 )
nLevel = 1;
for( int i = 0 ; i < MAX_JOB ; i++ )
{
if( strcmp( strJob, prj.m_aJob[i].szName ) == 0 || strcmp( strJob, prj.m_aJob[i].szEName ) == 0 )
{
nJob = i;
break;
}
}
char chMessage[MAX_PATH] = {0,};
if( MAX_JOB_LEVEL < nLevel && nJob == 0 )
{
sprintf( chMessage, prj.GetText(TID_GAME_CHOICEJOB) );
pUser->AddText( chMessage );
return TRUE;
}
#if __VER >= 10 // __LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
LONG nLegend = scanner.GetNumber();
if( ( nLegend > 0 ) && ( nLegend < 3 ) )
{
for( int i = nJob + 1 ; i < MAX_JOB ; i++ )
{
if( strcmp( strJob, prj.m_aJob[i].szName ) == 0 || strcmp( strJob, prj.m_aJob[i].szEName ) == 0 )
{
nJob = i;
if( nLegend == 1 )
break;
else
nLegend--;
}
}
pTarget->InitLevel( nJob, nLevel ); // lock
FILEOUT ("..\\logs/ChangeLevel-Job.log","%s hat %s auf ein andere Level Gesetzt", pUser->GetName(), pTarget->GetName());
return TRUE;
}
#endif //__LEGEND // 10Â÷ Àü½Â½Ã½ºÅÛ Neuz, World, Trans
if( nLevel <= MAX_JOB_LEVEL )
{
pTarget->InitLevel( JOB_VAGRANT, nLevel ); // lock
}
else
if( MAX_JOB_LEVEL < nLevel && nLevel <= MAX_JOB_LEVEL + MAX_EXP_LEVEL )
{
if( MAX_JOBBASE <= nJob && nJob < MAX_EXPERT)
{
pTarget->InitLevel( nJob, nLevel ); // lock
}
else
{
sprintf( chMessage, "Falscher Job" );
pUser->AddText( chMessage );
sprintf( chMessage, "Es gehen nur Folgende Jobs! : " );
for( int i = MAX_JOBBASE ; i < MAX_EXPERT ; ++i )
{
if( strlen( prj.m_aJob[i].szName ) < 15 )
{
strcat( chMessage, prj.m_aJob[i].szName );
if( i + 1 != MAX_EXPERT )
{
strcat( chMessage, ", ");
}
}
}
pUser->AddText( chMessage );
sprintf( chMessage, "Du musst immer 16/61 sein ! : %d ~ %d", MAX_JOB_LEVEL + 1, MAX_JOB_LEVEL + MAX_EXP_LEVEL );
pUser->AddText( chMessage );
return TRUE;
}
}
else
pUser->AddText("Falscher Name !");
if( MAX_JOB_LEVEL + MAX_EXP_LEVEL < nLevel && nLevel < MAX_LEVEL + 1 )
{
if( MAX_EXPERT <= nJob && nJob < MAX_PROFESSIONAL )
{
pTarget->InitLevel( nJob, nLevel ); // lock
}
else
{
sprintf( chMessage, "Not Professional Job" );
pUser->AddText( chMessage );
sprintf( chMessage, "Professional Job : " );
for( int i = MAX_EXPERT ; i < MAX_PROFESSIONAL ; ++i )
{
if( strlen( prj.m_aJob[i].szName ) < 15 )
{
strcat( chMessage, prj.m_aJob[i].szName );
if( i + 1 != MAX_PROFESSIONAL )
{
strcat( chMessage, ", ");
}
}
}
pUser->AddText( chMessage );
sprintf( chMessage, "Professional Level : %d ~~~ ", MAX_JOB_LEVEL + MAX_EXP_LEVEL + 1 );
pUser->AddText( chMessage );
return TRUE;
}
}
#endif // __WORLDSERVER
return TRUE;
}