Register for your free account! | Forgot your password?

You last visited: Today at 15:17

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Gentros' Files

Discussion on Gentros' Files within the Flyff Private Server forum part of the Flyff category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2012
Posts: 68
Received Thanks: 2
Gentros' Files

Hallo liebe Community,

mir stellen sich folgende Fragen:
- Wieso kann ich als Administrator keine Spieler ohne Rechte zu mir porten ( /summon "Spielername" )?
- Ich möchte den /level Befehl so umschreiben, dass ich andere Spieler auch "leveln" kann. Nun.. wie mache ich das?
creativaot is offline  
Old 06/18/2015, 01:18   #2

 
elite*gold: 353
Join Date: Jan 2013
Posts: 923
Received Thanks: 616
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;
}
Kiseku is offline  
Thanks
1 User
Old 06/18/2015, 14:43   #3
 
elite*gold: 0
Join Date: May 2012
Posts: 68
Received Thanks: 2
Hier die Funktion:

Code:
BOOL TextCmd_Summon( CScanner& scanner )           
{
#ifdef __WORLDSERVER
	TCHAR lpszPlayer[32];

	scanner.GetToken();
	CUser* pUser	= (CUser*)scanner.dwValue;
	if( strcmp( pUser->GetName(), scanner.Token) )
	{
#if __VER >= 11 // __SYS_PLAYER_DATA
		u_long idPlayer		= CPlayerDataCenter::GetInstance()->GetPlayerId( scanner.token );
#else	// __SYS_PLAYER_DATA
		u_long idPlayer		= prj.GetPlayerID( scanner.Token );
#endif	// __SYS_PLAYER_DATA
		if( idPlayer > 0 ){
			strcpy( lpszPlayer, scanner.Token );
#ifdef __LAYER_1015
			g_DPCoreClient.SendSummonPlayer( pUser->m_idPlayer, pUser->GetWorld()->GetID(), pUser->GetPos(), idPlayer, pUser->GetLayer() );
#else	// __LAYER_1015
			g_DPCoreClient.SendSummonPlayer( pUser->m_idPlayer, pUser->GetWorld()->GetID(), pUser->GetPos(), idPlayer );
#endif	// __LAYER_1015
		}
		else {
//			scanner.Token라는 이름을 가진 사용자는 이 게임에 존재하지 않는다.
			pUser->AddReturnSay( 3, scanner.Token );
		}
	}
	else 
	{
		pUser->AddReturnSay( 2, " " );  		// 자기 자신에게 명령했다.		
	}
	
#endif	// __WORLDSERVER
	return TRUE;
}
creativaot is offline  
Old 06/18/2015, 14:54   #4
 
Marc~'s Avatar
 
elite*gold: 0
Join Date: Sep 2011
Posts: 677
Received Thanks: 390
Die Funktion ist relativ uninteressant
Code:
	ON_TEXTCMDFUNC( TextCmd_Summon,                "summon",            "su",             "¼Òȯ",           "¼Òȯ",    TCM_SERVER, AUTH_OPERATOR   , "À¯Àú¼Òȯ" )
Hier werden die Rechte eingestellt:
Code:
AUTH_OPERATOR
Mach daraus einfach
AUTH_ADMINISTRATOR -> Für den Admin
AUTH_GENERAL -> Für X-beliebigen Spieler
Marc~ is offline  
Old 06/18/2015, 15:06   #5
 
elite*gold: 0
Join Date: May 2012
Posts: 68
Received Thanks: 2
Ich glaube du hast mich missverstanden. Ich möchte nicht dass jeder x-beliebige Spieler den Befehl benutzen kann, sondern dass ich als Administrator auch AUTH_GENERAL zu mir teleportieren kann, was im Moment nicht funktioniert.

Code:
	ON_TEXTCMDFUNC( TextCmd_Summon,                "summon",            "su",             "소환",           "소환",    TCM_SERVER, AUTH_GAMEMASTER   , "유저소환" )
Damit kann der Supporter, bzw. der GM Stufe 1 den Befehl ausführen.
creativaot is offline  
Old 06/18/2015, 15:59   #6
 
elite*gold: 0
Join Date: Oct 2012
Posts: 948
Received Thanks: 157
Inside this function
BOOL TextCmd_Summon( CScanner& scanner )

Under

strcpy( lpszPlayer, scanner.Token );
Add
CUser* pUserTarget = static_cast<CUser*>( prj.GetUserByID( idPlayer ) );
if( pUserTarget )
pUserTarget->REPLACE( g_uIdofMulti, pUser->GetWorld()->GetID(), pUser->GetPos(), REPLACE_FORCE, pUser->GetLayer() );
raventh1984 is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
[Release] Gentros' v15 Files
02/29/2016 - Flyff PServer Guides & Releases - 46 Replies
http://www11.pic-upload.de/22.05.15/mz7aoyq3uh.png Hallo Flyff Sektion, da ich leider in den letzen tagen sehen musste das Armageddon seine Files nicht mehr weiter führt habe ich mir gedacht hau ich mal V15 Files raus mit ein paar Fixes. Diese Files werde ich immer wieder Updaten. Der derzeitige stand ist V15 und ich habe mir vorgenommen diese noch zu Uppen auf V17 oder V18 jenachdem wie das mit dem Resource teil klappt. Nunja kommen wir zu den änderungen. - einige Fixes -...



All times are GMT +1. The time now is 15:17.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.