[Source-Edit] Lord-Event als GM

11/05/2011 19:22 Kindergarten#1
So hab mir mal die Zeit genommen was zu umzuschreiben, (nein ich habs aus kein andern Forum kopiert).

Damit sollte es möglich sein als GM ganz normal die Lord-Events zu starten.

WndLord.cpp (Neuz)

BOOL CWndLordEvent::Initialize( CWndBase* pWndParent, DWORD nType)
suchen und Komplette Funktion hiermit ersetzen:
Code:
BOOL CWndLordEvent::Initialize( CWndBase* pWndParent, DWORD nType)
{
	if(CCLord::Instance()->IsLord(g_pPlayer->m_idPlayer) || g_pPlayer->IsAuthHigher( AUTH_GAMEMASTER ))
	{
		return CWndNeuz::InitDialog( g_Neuz.GetSafeHwnd(), APP_LORD_EVENT, 0, CPoint( 0, 0 ), pWndParent );
	}
	else
	{
		g_WndMng.OpenMessageBox(prj.GetText(TID_GAME_L_EVENT_CREATE_E001));
		Destroy();
		return FALSE;
	}
}
slord.cpp (World)
Suchen:
Code:
		if( !CSLord::Instance()->IsLord( pUser->m_idPlayer ) )	// is he lord?
			 return TID_GAME_L_EVENT_CREATE_E001;
und hiermit ersetzen:
Code:
		if(!pUser->IsAuthHigher(AUTH_GAMEMASTER))
		{
			if( !CSLord::Instance()->IsLord( pUser->m_idPlayer ) )
			{
				return TID_GAME_L_EVENT_CREATE_E001;
			}
		}
~ so jetzt nurnoch compilen und fertig ~



Ich haben keine Garantie darauf das es zu 100% funktioniert, hatte noch keine Zeit es zu testen.
11/05/2011 19:42 Pumbaaa#2
Nein funktioniert nicht.
11/05/2011 20:00 Blackx33!#3
Jo funkt nicht ^^
11/05/2011 20:06 yannickminecraft#4
Das ding wirkt ja nie beim Event starten sondern nur clientside.
11/05/2011 23:04 N8Schatten#5
Is aber ne super idee könnte das pls wer korigieren währe echt praktisch das zu können^^
11/05/2011 23:08 .Monster#6
PHP Code:
        if(!g_pPlayer->IsAuthHigherAUTH_GAMEMASTER ))    // is he gm?
        
{
            if( !
CSLord::Instance()->IsLordpUser->m_idPlayer ) )    // is he lord?
            
{
                return 
TID_GAME_L_EVENT_CREATE_E001;
            }
        } 
Wo ist da der Sinn?
11/05/2011 23:23 .Crasy#7
Garkein? das ! heißt NICHT das wiederrum würde so in der verwendung heißen das jeder Player diese Meldung bekomt, wenn ein GM das versucht zu öffnen würde er diese auch bekomen weil er wiederrum kein Lord ist.

Du kanst dir Lord Events erstellen indem du mal die election's commands ansiehst..

Tipp: "/election.." gibts glaub 6 Commands oder so womit du ganze Lord zeug steuern kanst.
11/06/2011 00:42 Kindergarten#8
so habe es zum funktionieren gebracht, geänderte funktion steht oben.
und btw es hat einen Sinn, er fragt ab ob er gm ist ist dies nicht der fall fragt er ab ob er lord ist.
Sollte dies auch nicht stimmen gibt er die Fehlermeldung aus.

Ist er GM wird die ganze Abfrage übersprungen.


Den Sinn erkennt man wenn man sich die komplette Strujtur hier anschaut:
Code:
namespace	lordevent
{
	int	CreateRequirements( CUser* pUser, int iEEvent, int iIEvent )
	{
		ILordEvent* pEvent		= CSLord::Instance()->GetEvent();
		if(!pUser->IsAuthHigher(AUTH_GAMEMASTER))
		{
			if( !CSLord::Instance()->IsLord( pUser->m_idPlayer ) )
			{
				return TID_GAME_L_EVENT_CREATE_E001;
			}
		}
		if( pEvent->GetComponent( pUser->m_idPlayer ) )		// is there no event?
			return TID_GAME_L_EVENT_CREATE_E002;
		if( pUser->IsQuerying() )
			return TID_GAME_LORD_IS_QUERYING;
		__int64 iCost	= pEvent->GetCost( iEEvent, iIEvent );
		if( iCost == 0 )
			return TID_GAME_L_EVENT_CREATE_E004;
		if( iCost > pUser->GetTotalGold() )
			return TID_GAME_L_EVENT_CREATE_E003;

		pUser->SetQuerying( TRUE );
		return 0;
	}
};
11/06/2011 16:44 420twisted1#9
would this create a bug? if the player is lord but not a gm does it still work?
11/06/2011 21:29 Kindergarten#10
yes i tested it today, it checks first if the user is a GM, if its so then it skip the lordcondition.
if he's not a gm it checks if the user is the lord. else it give the normal message that only the lord can use the menu