#define AUTH_OBSERVER 'D' #define AUTH_GENERAL 'F' #define AUTH_LOGCHATTING 'G' #define AUTH_JOURNALIST 'H' #define AUTH_HELPER 'J' #define AUTH_GAMEMASTER 'L' #define AUTH_GAMEMASTER2 'M' #define AUTH_GAMEMASTER3 'N' #define AUTH_OPERATOR 'O' #define AUTH_ADMINISTRATOR 'P'
Quote:
Hallo,
ich möchte dies Thema mal wieder aufgreifen, da ich es grade probiere.
Soweit habe ich es hinbekommen, aber es wird nur ein Admin (P) angezeigt, kein GM (L). Die Abfrage '&& !pUser2->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_SMELPROT )' habe ich rausgenommen, aber das sollte ja nicht das Problem sein.
Ich habe auch mal die AUTH in der Abfrage geändert, aber es wird nichts angezeigt. Normalerweise ist das ja AUTH_GAMEMASTER, aber auch hier wird kein GM angezeigt.
Könnte mir dabei bitte einer behilflich sein.
Danke !
for ( int i = 0; i < g_UserMng.GetCount(); i++ ){
CUser* pUser2 = static_cast<CUser*>( prj.GetUserByID( i ) );
BOOL TextCmd_gml(CScanner& scanner)
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
for (auto const& user : g_UserMng.m_users)
{
if (IsValidObj(user.second) && user.second->IsAuthHigher(AUTH_GAMEMASTER))
{
pUser->AddText(user.second->GetName());
}
}
#endif
return TRUE;
}
BOOL TextCmd_gml(CScanner& scanner)
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
CString strAuthName = "";
pUser->AddText("Admin/GameMaster online:");
for (auto const& user : g_UserMng.m_users)
{
if (IsValidObj(user.second) && user.second->IsAuthHigher(AUTH_GAMEMASTER))
{
switch (user.second->m_dwAuthorization)
{
case AUTH_ADMINISTRATOR:
strAuthName = "[ADMIN] ";
break;
case AUTH_GAMEMASTER:
strAuthName = "[GM] ";
break;
}
pUser->AddText(strAuthName + user.second->GetName());
}
}
#endif
return TRUE;
}
#ifdef __USER_COMMAND
BOOL TextCmd_gml ( CScanner& scanner )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;
CString Nick;
int online = 0;
g_DPCoreClient.SendGetPlayerCount( pUser->m_idPlayer );
pUser->AddText( "GM's online:" );
for ( int i = 0; i < g_UserMng.GetCount(); i++ ){
CUser* pUser2 = static_cast<CUser*>( prj.GetUserByID( i ) );
if( IsValidObj( pUser2 ) && pUser2->IsAuthHigher( AUTH_GAMEMASTER ) && !pUser2->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_SMELPROT ) ){
Nick = CPlayerDataCenter::GetInstance()->GetPlayerString( i );
pUser->AddText( Nick + " [Online]" );
online++;
}
}
if( online == 0 )
pUser->AddText( "Kein GM da." );
#endif
return TRUE;
}
#endif // __USER_COMMAND
Wenn das Item II_SYS_SYS_SCR_SMELPROT aktiviert ist, wird er nicht angezeigt und der sollte auch AUTH_GAMEMASTER haben.Quote:
Ich arbeite grade an meiner vs2003 source und möchte das gmlist command zum laufen bringen, aber es funktioniert nicht so richtig.
Der Befehlt wird zwar ausgeführt, aber es kommt nur die Überschrift und dann 'Kein GM da.', obwohl ein GM online ist...
Beim Compilieren kommt auch kein Fehler.
Was mache ich falsch?:confused:
Code:#ifdef __USER_COMMAND BOOL TextCmd_gml ( CScanner& scanner ) { #ifdef __WORLDSERVER CUser* pUser = (CUser*)scanner.dwValue; CString Nick; int online = 0; g_DPCoreClient.SendGetPlayerCount( pUser->m_idPlayer ); pUser->AddText( "GM's online:" ); for ( int i = 0; i < g_UserMng.GetCount(); i++ ){ CUser* pUser2 = static_cast<CUser*>( prj.GetUserByID( i ) ); if( IsValidObj( pUser2 ) && pUser2->IsAuthHigher( AUTH_GAMEMASTER ) && !pUser2->HasBuff( BUFF_ITEM, II_SYS_SYS_SCR_SMELPROT ) ){ Nick = CPlayerDataCenter::GetInstance()->GetPlayerString( i ); pUser->AddText( Nick + " [Online]" ); online++; } } if( online == 0 ) pUser->AddText( "Kein GM da." ); #endif return TRUE; } #endif // __USER_COMMAND