[Source TUT]Authorization per Command ändern

11/23/2011 16:53 Synxx©#16
Quote:
Originally Posted by ToxicLibrary™ View Post
Jop Admin's hast du so einen schlichten Verstand das du denkst die Welt wäre Kunterbunt, alles wäre Fair & jeder hat sich Lieb?

Ich will keine Namen nennen aber kenne mehr als genug Admin's die aus diesem Release nun ihren Vorteil ziehen würden.
Ich find deine Kommentare schon irg unnötig.
Der Admin,also normalerweise dem,der der Server gehört könnte egal wie pushen weil er der Admin ist.
Meistens ist es für Admins nervig wenn sie einen Neuen im Team haben und extra in die db gehen müssen.
Bei servern wo ich früher war habe ich meine rechte erst nach ner woche bekommen weil der admin kein bock hatte auf die db zu gehen...
11/23/2011 17:01 Jopsi332#17
Endlcih einer der es kapiert
11/23/2011 17:08 Flash!#18
Quote:
Meistens ist es für Admins nervig wenn sie einen Neuen im Team haben und extra in die db gehen müssen.
Bei servern wo ich früher war habe ich meine rechte erst nach ner woche bekommen weil der admin kein bock hatte auf die db zu gehen...
Wenn die dafür schon zu faul sind wofür haben die dann 'nen Flyff Server offen?
11/23/2011 23:21 yannickminecraft#19
Wie Etioom gerade in MSN schrieb:

[23:11] pdiec: der code is so behindert

Ich gehmal genauer ins detail anstatt nur stumpf zu spammen ;'D

1. Du trägst den Befehl nur für AUTH_ADMINISTRATOR Berechtigungen ein und in der Function selbst prüfst du NOCHMALS ob er admin ist?
if( pUser->m_dwAuthorization = AUTH_ADMINISTRATOR )

Logik???

2.
Code:
	if( !IsValidObj( pUser ) )
	{
		pUser->AddText( "Invalid user." );		
		return TRUE;
	}
Du prüfst erst ob pUser ausreichend rechte hast. Danach prüfst du ERST ob es ihn überhaupt gibt?

Dann kommt der brüller!!!! DU WILLST pUser EINE NACHRICHT SENDEN WENN ER GARNICHT EXISTIERT (crasht 200%).

IsValidObj() benutzt eig. bei klassen um zu kucken ob dort etwas reingeladen wurde damit der Server nicht crasht. Aber du packst in das else einen Functionscall damit der Worldserver zu 100% crasht???

Dazu kommt:
Du prüfst ob er Admin ist und kuckst danach dann ob er überhaupt existiert O_O????


3.
Code:
	u_long idTarget	= CPlayerDataCenter::GetInstance()->GetPlayerId( scanner.token );

	if( idTarget == 0 )
	{
	pUser->AddText("Invalid User!");
	}
Du prüfst ob der User existiert anhand der PlayerID? LOOL??? Wofür gibt es IsValidObj.

Ladest ihn direkt in CUser rein und prüfst dann via. IsValidObj ob er wirklich existiert.

4.

Code:
	CUser* pTarget	= g_UserMng.GetUserByPlayerID( idTarget );	

	if( !IsValidObj( pTarget ) )
	{
		pUser->AddText( "Invalid User name." );		
		return TRUE;
	}
Gleicher fail was ist in deinem Gehirn los lOLOLOLOL????





Kurz und knapp:

Du bist gefailt bob lass das coden und geh mappen wie Reaven oder clept0 kp scheint ja nich schwer zu sein wenn die beiden es können.

Bzw. Was soll man mit so einer crap function?
11/24/2011 04:48 Jopsi332#20
ich überprüfe ob pTarget existiert und schicke dann pUser eine nachricht.Ich habs ja getestet von daher geht es auch !
11/24/2011 07:49 .Crasy#21
Soo, los gehts:

Quote:
if( !IsValidObj( pUser ) )
{
pUser->AddText( "Invalid user." );
return TRUE;
}
Sprich, wenn dein Char nicht Dargestellt wird, wird Invalid User ausgegeben, das kann eigtl. aber nie der fall sein daher unnütz.

Du prüfst den anderen lieber 2x anstat 1x Kurz und Knapp zu prüfen ob er Online ist, n1.

Das beste ist aber immer noch:

Quote:
if( pUser->m_dwAuthorization = AUTH_ADMINISTRATOR )
1. Gibt es einen Error zurück da der Operator "=" falsch ist, wenn dann "==".
2. Wozu wenn man die ganze kacke gleich für Admin machen kann?

So, hier:

Quote:
BOOL TextCmd_Updater( CScanner & scanner )
{
#ifdef __WORLDSERVER
CUser* pUser = (CUser*)scanner.dwValue;

scanner.GetToken();
u_long idTarget = CPlayerDataCenter::GetInstance()->GetPlayerId( scanner.token );

if( idTarget > 0 )
{
CUser* pTarget = g_UserMng.GetUserByPlayerID( idTarget );

if( !IsValidObj( pTarget ) )
{
pUser->AddText( "Invalid User name." );
return TRUE;
}

CString strRang = scanner.Token;

switch( strRang )
{
case "Admin": pTarget->m_dwAuthorization = AUTH_ADMINISTRATOR; break;
case "Gm1": pTarget->m_dwAuthorization = AUTH_GAMEMASTER1; break;
case "Gm2": pTarget->m_dwAuthorization = AUTH_GAMEMASTER2; break;
case "Gm3": pTarget->m_dwAuthorization = AUTH_GAMEMASTER3; break;
case "General": pTarget->m_dwAuthorization = AUTH_GENERAL; break;
default: pTarget->m_dwAuthorization = AUTH_GENERAL; break;
}
char* szText[255];
sprintf( szText, Your Authorization where temporaly updatet! - %s", strRang );
pTarget->UpdateParam();
pTarget->AddText( szText );

}
else
{
pUser->AddText("User not Found.");
return false;
}

#endif // __WORLDSERVER
return TRUE;
}
Kurz umgeschrieben.
11/24/2011 12:29 Jopsi332#22
das gibt kein error zurück? :D
11/24/2011 16:29 yannickminecraft#23
@Crasy obwohl du mich einfach nur wiederholst hastn thanks^^


Quote:
Originally Posted by .Crasy View Post
1. Gibt es einen Error zurück da der Operator "=" falsch ist, wenn dann "==".
Ich glaub der Compiler intepretiert das als zuweisung in der IF-Abfrage.
Also kriegt der Admin nochmal den status admin und die If-Abfrage returnt immer TRUE.

Dadurch das er aber den Command selbst schon nur für Admins Deklariert kann dies kein User nutzen (sein glück^^).