|
You last visited: Today at 23:21
Advertisement
Gentros' Files
Discussion on Gentros' Files within the Flyff Private Server forum part of the Flyff category.
06/18/2015, 01:00
|
#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?
|
|
|
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;
}
|
|
|
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;
}
|
|
|
06/18/2015, 14:54
|
#4
|
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:
Mach daraus einfach
AUTH_ADMINISTRATOR -> Für den Admin
AUTH_GENERAL -> Für X-beliebigen Spieler
|
|
|
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.
|
|
|
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() );
|
|
|
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 +2. The time now is 23:21.
|
|