Ist mein erstes TuT, also wenns Kritik gibt, bitte sagen, damit ichs verbessern kann.
Ich weiß auch nicht, ob mein Code so optimal ist, es gibt sicher eine bessere Lösung, bin noch C++ Anfänger.
Also, als erstes öffnet ihr die FuncTextCmd.cpp und sucht nach
Code:
BOOL TextCmd_System( CScanner & scanner )
Dort findet ihr das:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CUser* pUser = (CUser*)scanner.dwValue;
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
g_DPCoreClient.SendSystem( szString );
#endif // __WORLDSERVER
return TRUE;
}
Nun führen wir eine neue Variable ein, ich nenne sie einfach mal szName
dann sieht das ganze so aus:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
g_DPCoreClient.SendSystem( szString );
#endif // __WORLDSERVER
return TRUE;
}
Die Variable setzen wir auch gleich auf "[", um uns später arbeit zu ersparen xD
Dann löschen wir den Quelltest von scanner.GetLastFull(); zu g_DPCoreClient.SendSystem( szString );.
Das ganze sieht dann so aus:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
#endif // __WORLDSERVER
return TRUE;
}
und fügen folgendes an die Stelle ein:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
strcat( szName, pUser->GetName());
strcat( szName, "]: ");
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
strcat( szName, szString );
g_DPCoreClient.SendSystem( szName );
#endif // __WORLDSERVER
return TRUE;
}
Nun sollte der GM-Shout so aussehen:
Code:
[GM Information][NAME] TEXT
Wenn ihr nun auch noch wollt, dass dort z.B. Admin steht, müsst ihr folgendes einfügen:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
//FÜR ADMIN
if(pUser->m_dwAuthorization == AUTH_ADMINISTRATOR)
strcat( szName, "Admin][" );
strcat( szName, "TestGM][" );
strcat( szName, pUser->GetName());
strcat( szName, "]: ");
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
strcat( szName, szString );
g_DPCoreClient.SendSystem( szName );
#endif // __WORLDSERVER
return TRUE;
}
Wenn ihr dies nicht nur für Admin machen wollt, müsst ihr immer ein
Code:
else if(pUser->m_dwAuthorization == AUTHORIZATION)
strcat( szName, "Admin][" );
hinzufügen.
Hier noch eine Liste, mit den verschiedenen Autorisierungen, die /sys verwenden können:
Code:
AUTH_GAMEMASTER1 //Gamemaster lvl 1
AUTH_GAMEMASTER2 //Gamemaster lvl 2
AUTH_GAMEMASTER3 //Gamemaster lvl 3
AUTH_ADMINISTRATOR //Administrator
Hoffe euch hat der Guide gefallen, Kritik ist erwünscht.
Mfg. Pumbaaa
Ich weiß auch nicht, ob mein Code so optimal ist, es gibt sicher eine bessere Lösung, bin noch C++ Anfänger.
Also, als erstes öffnet ihr die FuncTextCmd.cpp und sucht nach
Code:
BOOL TextCmd_System( CScanner & scanner )
Dort findet ihr das:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CUser* pUser = (CUser*)scanner.dwValue;
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
g_DPCoreClient.SendSystem( szString );
#endif // __WORLDSERVER
return TRUE;
}
Nun führen wir eine neue Variable ein, ich nenne sie einfach mal szName
dann sieht das ganze so aus:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
g_DPCoreClient.SendSystem( szString );
#endif // __WORLDSERVER
return TRUE;
}
Die Variable setzen wir auch gleich auf "[", um uns später arbeit zu ersparen xD
Dann löschen wir den Quelltest von scanner.GetLastFull(); zu g_DPCoreClient.SendSystem( szString );.
Das ganze sieht dann so aus:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
#endif // __WORLDSERVER
return TRUE;
}
und fügen folgendes an die Stelle ein:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
strcat( szName, pUser->GetName());
strcat( szName, "]: ");
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
strcat( szName, szString );
g_DPCoreClient.SendSystem( szName );
#endif // __WORLDSERVER
return TRUE;
}
Nun sollte der GM-Shout so aussehen:
Code:
[GM Information][NAME] TEXT
Wenn ihr nun auch noch wollt, dass dort z.B. Admin steht, müsst ihr folgendes einfügen:
Code:
{
#ifdef __WORLDSERVER
CHAR szString[512] = "";
CHAR szName[512] = "[";
CUser* pUser = (CUser*)scanner.dwValue;
//FÜR ADMIN
if(pUser->m_dwAuthorization == AUTH_ADMINISTRATOR)
strcat( szName, "Admin][" );
strcat( szName, "TestGM][" );
strcat( szName, pUser->GetName());
strcat( szName, "]: ");
scanner.GetLastFull();
if( strlen( scanner.token ) >= 512 )
return TRUE;
strcpy( szString, scanner.token );
StringTrimRight( szString );
strcat( szName, szString );
g_DPCoreClient.SendSystem( szName );
#endif // __WORLDSERVER
return TRUE;
}
Wenn ihr dies nicht nur für Admin machen wollt, müsst ihr immer ein
Code:
else if(pUser->m_dwAuthorization == AUTHORIZATION)
strcat( szName, "Admin][" );
hinzufügen.
Hier noch eine Liste, mit den verschiedenen Autorisierungen, die /sys verwenden können:
Code:
AUTH_GAMEMASTER1 //Gamemaster lvl 1
AUTH_GAMEMASTER2 //Gamemaster lvl 2
AUTH_GAMEMASTER3 //Gamemaster lvl 3
AUTH_ADMINISTRATOR //Administrator
Hoffe euch hat der Guide gefallen, Kritik ist erwünscht.
Mfg. Pumbaaa