[Source Release] Voll funktionsfähiges Colosseum!

07/22/2011 08:05 yannickminecraft#1
Heyho leutZ

Hier gibts jetzt die Snippets für das Colosseum (Ranking funktion ist leider nicht dabei). Die Resourcen müsst ihr aber selber einbauen (maps, NPC usw..).

Zuerst die eigenen Dateien für das Colosseum
[Only registered and activated users can see links. Click Here To Register...]

Die Colosseum.lua kommt in den Resource Ordner.
Die ColosseumFunc.lua kommt in den "LuaFunc" Ordner der sich im Resource Ordner befindet.

WndColosseum.cpp / WndColosseum.h kommen im Source in den Ordner "_Interface".
Colosseum.cpp / Colosseum.cpp kommen im Source in den Ordner "_Common".

Danach adden wir noch die WndColosseum.cpp/h in die Neuz Solution und die Colosseum.cpp/h in die WorldServer Solution

Dann adden wir noch die Define für das Colosseum in den Dateien ../NEUZ/versioncommon.h und ../WORLDSERVER/versioncommon.h
Code:
#define __COLOSSEUM

../_Interface/WndWorld.cpp

Wir gehen zur Function
Code:
BOOL CWndWorld::OnEraseBkgnd(C2DRender* p2DRender)
Und tragen unter

Code:
	pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
	pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
	pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
	pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
	pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
	pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
	pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
	pd3dDevice->SetRenderState( D3DRS_ALPHAREF,        0x08 );
diesen code ein

Code:
#ifdef __COLOSSEUM

	if ( dwColosseumStartSplashTick > g_tmCurrent )
	{
		int nAlpha = ( dwColosseumStartSplashTick - g_tmCurrent ) / 32;
		if( nAlpha > 255 )
			nAlpha = 255;

		int x = (GetClientRect().Width() / 2) - (m_TexColosseumStart.m_size.cx / 2);
		int y = (GetClientRect().Height() / 2) - (m_TexColosseumStart.m_size.cy / 2);
		m_TexColosseumStart.Render( &g_Neuz.m_2DRender, CPoint(x, y) , nAlpha );
	}
#endif //__COLOSSEUM
------------------------------------------------------

Wir gehen zur Function
Code:
void CWndWorld::OnInitialUpdate()
Suchen danach
Code:
	m_TexGuildWinner.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "TexGuildCombatWinner.bmp" ), 0xffff00ff );
	m_TexGuildBest.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "TexGuildCombatBest.bmp" ), 0xffff00ff );
und tragen darunter ein
Code:
#ifdef __COLOSSEUM
	dwColosseumStartSplashTick = 0;
	m_TexColosseumStart.LoadTexture( m_pApp->m_pd3dDevice, MakePath( DIR_THEME, "WndColoCountDesign.tga" ), D3DCOLOR_ARGB( 0, 0, 0, 0 ) );
#endif //__COLOSSEUM
------------------------------------------------------

Wir gehen zur Function
Code:
BOOL CWndWorld::OnCommand( UINT nID, DWORD dwMessage, CWndBase* pWndBase )
Suchen danach
Code:
		switch( nID )
		{
und tragen drunter ein
Code:
#ifdef __COLOSSEUM
		case MMI_COLOSSEUM_COLOENTER01:
			{
				SAFE_DELETE( g_WndMng.m_pColosseumEnter );
				g_WndMng.m_pColosseumEnter = new CWndColosseumEnter;
				if( g_WndMng.m_pColosseumEnter )
					g_WndMng.m_pColosseumEnter->Initialize();
			}
			break;
#endif //__COLOSSEUM
------------------------------------------------------

Wir gehen zur Function
Code:
HRESULT CWndWorld::InvalidateDeviceObjects()
Suchen nach
Code:
	m_TexGuildWinner.Invalidate();
	m_TexGuildBest.Invalidate();
und tragen darunter ein
Code:
#ifdef __COLOSSEUM
	m_TexColosseumStart.Invalidate();
#endif //__COLOSSEUM
------------------------------------------------------

Wir gehen zur Function
Code:
HRESULT CWndWorld::DeleteDeviceObjects()
Suchen nach
Code:
	m_TexGuildWinner.DeleteDeviceObjects();
	m_TexGuildBest.DeleteDeviceObjects();
und tragen darunter ein
Code:
#ifdef __COLOSSEUM
	m_TexColosseumStart.DeleteDeviceObjects();
#endif //__COLOSSEUM
------------------------------------------------------

../_Interface/WndWorld.h

Wir suchen nach
Code:
class CWndWorld : public CWndNeuz
{
	BOOL m_bBGM;
	FLOAT m_fHigh;
	FLOAT m_fLow;
	CPoint m_ptMouseOld;
	CPoint m_ptMouseSpot;
	BOOL m_bFreeMove;
	BOOL m_bFlyMove;
	BOOL m_bSelectTarget;
#ifdef __VRCAMERA
	BOOL m_bCameraMode;
#endif
	BOOL		m_bViewMap;

public:
und tragen darunter ein:
Code:
#ifdef __COLOSSEUM
	CTexture m_TexColosseumStart;
	DWORD dwColosseumStartSplashTick;
#endif //__COLOSSEUM
------------------------------------------------------

../NEUZ/DPClient.cpp

Wir gehen zur Function
Code:
void CDPClient::OnSnapshot( CAr & ar )
Suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
			case SNAPSHOTTYPE_GUILDHOUSE_TENDER_MAINWND:	OnGuildHouseTenderMainWnd( ar ); break;
			case SNAPSHOTTYPE_GUILDHOUSE_TENDER_INFOWND:	OnGuildHouseTenderInfoWnd( ar ); break;
			case SNAPSHOTTYPE_GUILDHOUSE_TENDER_RESULT:		OnGuildHouseTenderResult( ar ); break;
#endif // __GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
			case SNAPSHOTTYPE_COLOSSEUM_ENTER:	OnColosseumEnter( ar ); break;
			case SNAPSHOTTYPE_COLOSSEUM_START:	OnColosseumStart( ar ); break;
			case SNAPSHOTTYPE_COLOSSEUM_ENDWAIT:	OnColosseumEndWait( ar ); break;
			case SNAPSHOTTYPE_COLOSSEUM_READY1:	OnColosseumReady1( ar ); break;
			case SNAPSHOTTYPE_COLOSSEUM_READY2:	OnColosseumReady2( ar ); break;
			case SNAPSHOTTYPE_COLOSSEUM_ENDMATCH: OnColosseumEndMatch( ar ); break;
#endif // __ COLOSSEUM
------------------------------------------------------

Wir tragen ganz am ende VOR DEM "CDPClient g_Dplay;" dies ein:
Code:
#ifdef	__COLOSSEUM
void CDPClient::SendColosseumStart( BYTE nState, BYTE byDifficult, BYTE byMenu )
{
	BEFORESENDSOLE( ar, PACKETTYPE_COLOSSEUM, DPID_UNKNOWN );
	ar << nState << byDifficult << byMenu;
	SEND( ar, this, DPID_SERVERPLAYER );
}

void CDPClient::SendColosseumEnter( BYTE nState )
{
	BEFORESENDSOLE( ar, PACKETTYPE_COLOSSEUM, DPID_UNKNOWN );
	ar << nState;
	SEND( ar, this, DPID_SERVERPLAYER );
}

void CDPClient::SendColosseumEndWait( BYTE nState )
{
	BEFORESENDSOLE( ar, PACKETTYPE_COLOSSEUM, DPID_UNKNOWN );
	ar << nState;
	SEND( ar, this, DPID_SERVERPLAYER );
}
void CDPClient::OnColosseumEnter( CAr & ar )
{
	SAFE_DELETE( g_WndMng.m_pColosseumMassage );
	g_WndMng.m_pColosseumMassage = new CWndColosseumMassage();
	if( g_WndMng.m_pColosseumMassage )
	{
		g_WndMng.m_pColosseumMassage->Initialize();
	}
}

void CDPClient::OnColosseumStart( CAr & ar )
{
	int nTime;
	ar >> nTime;

	if( g_WndMng.m_pColosseumStart && nTime == 0 )
	{
		g_WndMng.m_pColosseumStart->Destroy();
	}
	else
	{

		SAFE_DELETE( g_WndMng.m_pColosseumStart );
		g_WndMng.m_pColosseumStart = new CWndColosseumStart();
		if( g_WndMng.m_pColosseumStart )
		{
			g_WndMng.m_pColosseumStart->m_nTime = nTime;
			g_WndMng.m_pColosseumStart->Initialize();
		}
	}
}

void CDPClient::OnColosseumEndWait( CAr & ar )
{
	if( g_WndMng.m_pColosseumStart )
		g_WndMng.m_pColosseumStart->Destroy();

	if( g_WndMng.m_pColosseumMassage )
		g_WndMng.m_pColosseumMassage->Destroy();
}

void CDPClient::OnColosseumReady1( CAr & ar )
{
	int nTime;
	BYTE nStage;
	ar >> nTime >> nStage;

	if( g_WndMng.m_pColosseumStartReady2 )
		g_WndMng.m_pColosseumStartReady2->Destroy();

	SAFE_DELETE( g_WndMng.m_pColosseumStartReady1 );
	g_WndMng.m_pColosseumStartReady1 = new CWndColosseumStartReady1();
	if( g_WndMng.m_pColosseumStartReady1 )
	{
		g_WndMng.m_pColosseumStartReady1->m_nTime = nTime;
		g_WndMng.m_pColosseumStartReady1->m_nStage = nStage;
		g_WndMng.m_pColosseumStartReady1->Initialize();
	}
}

void CDPClient::OnColosseumReady2( CAr & ar )
{
	int nTime;
	ar >> nTime;

	if( g_WndMng.m_pColosseumStartReady1 )
		g_WndMng.m_pColosseumStartReady1->Destroy();
    
	SAFE_DELETE( g_WndMng.m_pColosseumStartReady2 );
	g_WndMng.m_pColosseumStartReady2 = new CWndColosseumStartReady2();
	if( g_WndMng.m_pColosseumStartReady2 )
	{
		g_WndMng.m_pColosseumStartReady2->m_nTime = nTime;
		g_WndMng.m_pColosseumStartReady2->Initialize();
	}
}
void CDPClient::OnColosseumEndMatch( CAr & ar )
{
	BOOL bWin;
	int nTime;
	ar >> bWin >> nTime;

	if( g_WndMng.m_pColosseumMassage )
		g_WndMng.m_pColosseumMassage->Destroy();
	if( g_WndMng.m_pColosseumStart )
		g_WndMng.m_pColosseumStart->Destroy();
	if( g_WndMng.m_pColosseumStartReady1 )
		g_WndMng.m_pColosseumStartReady1->Destroy();
	if( g_WndMng.m_pColosseumStartReady2 )
		g_WndMng.m_pColosseumStartReady2->Destroy();

	if( bWin )
	{
		SAFE_DELETE( g_WndMng.m_pColosseumComplete );
		g_WndMng.m_pColosseumComplete = new CWndColosseumComplete();
		if( g_WndMng.m_pColosseumComplete )
		{
			g_WndMng.m_pColosseumComplete->m_nTime = nTime;
			g_WndMng.m_pColosseumComplete->Initialize();
		}
	}
	else
	{
		SAFE_DELETE( g_WndMng.m_pColosseumRetry );
		g_WndMng.m_pColosseumRetry = new CWndColosseumRetry();
		if( g_WndMng.m_pColosseumRetry )
		{
			g_WndMng.m_pColosseumRetry->Initialize();
		}
	}
}
#endif // __COLOSSEUM
------------------------------------------------------

../WORLDSERVER/User.cpp

Wir suchen nach
Code:
void CUser::AddGuildHouseTenderResult( OBJID objGHId, BOOL bResult )
{
	if( IsDelete() )	return;

	m_Snapshot.cb++;
	m_Snapshot.ar << GetId();
	m_Snapshot.ar << SNAPSHOTTYPE_GUILDHOUSE_TENDER_RESULT;
	m_Snapshot.ar << objGHId << bResult;
}
#endif // __GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
void CUser::SendColosseumEnter()
{
	if( IsDelete() )	return;
	
	m_Snapshot.cb++;
	m_Snapshot.ar << GetId();
	m_Snapshot.ar << SNAPSHOTTYPE_COLOSSEUM_ENTER;
}
void CUser::SendColosseumStart( int nTime )
{
	if( IsDelete() )	return;
	
	m_Snapshot.cb++;
	m_Snapshot.ar << GetId();
	m_Snapshot.ar << SNAPSHOTTYPE_COLOSSEUM_START;
	m_Snapshot.ar << nTime;
}
void CUser::SendColosseumReady1( int nTime, BYTE nStage )
{
	if( IsDelete() )	return;
	
	m_Snapshot.cb++;
	m_Snapshot.ar << GetId();
	m_Snapshot.ar << SNAPSHOTTYPE_COLOSSEUM_READY1;
	m_Snapshot.ar << nTime << nStage;
}
void CUser::SendColosseumReady2( int nTime )
{
	if( IsDelete() )	return;
	
	m_Snapshot.cb++;
	m_Snapshot.ar << GetId();
	m_Snapshot.ar << SNAPSHOTTYPE_COLOSSEUM_READY2;
	m_Snapshot.ar << nTime;
}
void CUser::SendColosseumEndMatch( BOOL bWin, int nTime )
{
	if( IsDelete() )	return;
	
	m_Snapshot.cb++;
	m_Snapshot.ar << GetId();
	m_Snapshot.ar << SNAPSHOTTYPE_COLOSSEUM_ENDMATCH;
	m_Snapshot.ar << bWin << nTime;
}
#endif //__COLOSSEUM
------------------------------------------------------

../NEUZ/DPClient.h

Wir suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
private:
	void	OnGuildHouseTenderMainWnd( CAr & ar );
	void	OnGuildHouseTenderInfoWnd( CAr & ar );
	void	OnGuildHouseTenderResult( CAr & ar );
public:
	void	SendGuildHouseTenderMainWnd( DWORD dwGHType, OBJID objNpcId );
	void	SendGuildHouseTenderInfoWnd( OBJID objGHId );
	void	SendGuildHouseTenderJoin( OBJID objGHId, int nTenderPerin, int nTenderPenya );
#endif // __GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
	void	SendColosseumStart( BYTE nState, BYTE byDifficult, BYTE byMenu );
	void	SendColosseumEnter( BYTE nState );
	void	SendColosseumEndWait( BYTE nState );
	void	OnColosseumEnter( CAr & ar );
	void	OnColosseumStart( CAr & ar );
	void	OnColosseumEndWait( CAr & ar );
	void	OnColosseumReady1( CAr & ar );
	void	OnColosseumReady2( CAr & ar );
	void	OnColosseumEndMatch( CAr & ar );
#endif // __COLOSSEUM
------------------------------------------------------

../_Network/MsgHdr.h

Wir suchen nach
Code:
#define PACKETTYPE_QUERYMAILBOX_REQ					(DWORD)0x88100240
#define PACKETTYPE_QUERYMAILBOX_COUNT				(DWORD)0x88100241
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
#define	PACKETTYPE_COLOSSEUM					(DWORD)0x88200000
#endif // __COLOSSEUM
------------------------------------------------------

Wir suchen nach
Code:
#define	SNAPSHOTTYPE_QUERYMAILBOX_REQ				(WORD)0x8860
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
#define	SNAPSHOTTYPE_COLOSSEUM_ENTER				(WORD)0x8880
#define	SNAPSHOTTYPE_COLOSSEUM_START				(WORD)0x8881
#define	SNAPSHOTTYPE_COLOSSEUM_ENDWAIT				(WORD)0x8882
#define	SNAPSHOTTYPE_COLOSSEUM_READY1				(WORD)0x8883
#define	SNAPSHOTTYPE_COLOSSEUM_READY2				(WORD)0x8884
#define	SNAPSHOTTYPE_COLOSSEUM_ENDMATCH				(WORD)0x8885
#endif // __COLOSSEUM
------------------------------------------------------

../WORLDSERVER/User.h

Wir suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
public:
	void	AddGuildHouseTenderMainWnd( map<OBJID, char*>& mapGHList );
	void	AddGuildHouseTenderInfoWnd( OBJID objGHId, int nTenderMinPenya, __int64 nTenderPenya, vector<DWORD>& vecGuildId );
	void	AddGuildHouseTenderResult( OBJID objGHId, BOOL bResult );
#endif // __GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
public:
	void	SendColosseumEnter();
	void	SendColosseumStart( int nTime );
	void	SendColosseumReady1( int nTime, BYTE nStage );
	void	SendColosseumReady2( int nTime );
	void	SendColosseumEndMatch( BOOL bWin, int nTime );
#endif //__COLOSSEUM
------------------------------------------------------

../WORLDSERVER/DPSrvr.cpp

Wir suchen nach
Code:
#if __VER >= 15 // __CAMPUS
#include "CampusHelper.h"
#endif // __CAMPUS
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
#include "Colosseum.h"
#endif // __COLOSSEUM
------------------------------------------------------

Wir suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
	ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_MAINWND, OnGuildHouseTenderMainWnd );
	ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_INFOWND, OnGuildHouseTenderInfoWnd );
	ON_MSG( PACKETTYPE_GUILDHOUSE_TENDER_JOIN, OnGuildHouseTenderJoin );
#endif // __GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
	ON_MSG( PACKETTYPE_COLOSSEUM, OnColosseum );
#endif // __COLOSSEUM
------------------------------------------------------

Wir tragen ganz am ende der Datei dies ein
Code:
#ifdef	__COLOSSEUM
void CDPSrvr::OnColosseum( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE lpBuf, u_long uBufSize )
{
	CUser* pUser	= g_UserMng.GetUser( dpidCache, dpidUser );
	if( IsValidObj( pUser ) )
	{
		BYTE nState;
		ar >> nState;
		CParty* pParty = g_PartyMng.GetParty( pUser->GetPartyId() );
		switch( nState )
		{
		case 1: //Start Match
			BYTE byDifficult, byMenu;
			ar >> byDifficult >> byMenu;

			if( pParty && pParty->IsLeader( pUser->m_idPlayer ) )
			{
				if( CColosseumMng::GetInstance()->CreateNewMatch( pUser, byDifficult, byMenu ) )
				{
					CColosseumMatch* pColosseumMatch = CColosseumMng::GetInstance()->GetMatchByParty( pParty );
					if( pColosseumMatch )
						pColosseumMatch->EnterRoom( pUser );
					pUser->AddText("Match wurde gestartet");
				}
				else
					pUser->AddText( "Du bist bereits angemeldet" );
			}
			else
				pUser->AddText( "Du hast keine Party oder bist nicht der Party Leader." );

		break;

		case 2:
			if( pParty )
			{
				CColosseumMatch* pColosseumMatch = CColosseumMng::GetInstance()->GetMatchByParty( pParty );
				if( pColosseumMatch )
					if( pColosseumMatch->m_byMenu == 2 )
					{
						if( pColosseumMatch->m_uGuildID == pUser->m_idGuild )
							pColosseumMatch->EnterRoom( pUser );
					}
					else
						pColosseumMatch->EnterRoom( pUser );
			}
		break;

		case 3:
			if( pParty && pParty->IsLeader( pUser->m_idPlayer ) )
			{
				CColosseumMatch* pColosseumMatch = CColosseumMng::GetInstance()->GetMatchByParty( pParty );
				if( pColosseumMatch )
					pColosseumMatch->EndWaitTime();
			}
		break;
		}
	}
}
#endif // __COLOSSEUM
------------------------------------------------------

../WORLDSERVER/DPSrvr.h

Wir suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
	void	OnGuildHouseTenderMainWnd( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
	void	OnGuildHouseTenderInfoWnd( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
	void	OnGuildHouseTenderJoin( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
#endif // __GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
	void	OnColosseum( CAr & ar, DPID dpidCache, DPID dpidUser, LPBYTE, u_long );
#endif //__COLOSSEUM
------------------------------------------------------

../WORLDSERVER/ThreadMng.cpp

Wir suchen nach
Code:
#include "guildquest.h"
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
#include "Colosseum.h"
#endif // __COLOSSEUM
------------------------------------------------------

Wir suchen nach
Code:
	#ifdef __EVENTLUA_SPAWN
				prj.m_EventLua.EventSpawnProcess();
	#endif // __EVENTLUA_SPAWN
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
				CColosseumMng::GetInstance()->Process();
#endif // __COLOSSEUM
------------------------------------------------------

../WORLDSERVER/DPCoreClient.cpp

Wir suchen nach
Code:
#include "WantedListSnapshot.h"
und tragen darunter ein
Code:
#ifdef __COLOSSEUM
#include "Colosseum.h"
#endif // __COLOSSEUM
------------------------------------------------------

Wir gehen zur Function
Code:
void CDPCoreClient::OnAddPartyMember( CAr & ar, DPID, DPID, OBJID )
suchen nach
Code:
			if( IsValidObj( (CObj*)pMember ) )
			{
				pMember->m_idparty	= idParty;
und tragen darunter ein
Code:
#ifdef __COLOSSEUM
				CColosseumMatch* ColoMatch = CColosseumMng::GetInstance()->GetMatchByParty( pParty );
				if( ColoMatch && ColoMatch->m_bWaitTime )
					if( ColoMatch->m_byMenu == 2 )
					{
						if( ColoMatch->m_uGuildID == pMember->m_idGuild )
							pMember->SendColosseumEnter();
					}
					else
						pMember->SendColosseumEnter();
#endif //__COLOSSEUM
------------------------------------------------------

Wir suchen nach der Function
Code:
void CDPCoreClient::OnRemovePartyMember( CAr & ar, DPID, DPID, OBJID )
suchen nach
Code:
		lpPlayer	= CPlayerDataCenter::GetInstance()->GetPlayerString( idMember );
		if( lpPlayer )
			lstrcpy( pszMember, lpPlayer );
#endif	// __SYS_PLAYER_DATA
und tragen darunter ein
Code:
#ifdef __COLOSSEUM
		CColosseumMatch* pColoMatch = CColosseumMng::GetInstance()->GetMatchByParty( pParty );
		if( pColoMatch )
			pColoMatch->KickUser( idMember );
#endif // __COLOSSEUM
------------------------------------------------------

../_Common/Party.cpp

Wir suchen nach
Code:
#if __VER >= 11 // __SYS_PLAYER_DATA
#include "playerdata.h"
#endif	// __SYS_PLAYER_DATA
und tragen darunter ein
Code:
#ifdef __COLOSSEUM
#include "Colosseum.h"
#endif // __COLOSSEUM
------------------------------------------------------

Wir gehen zur Function
Code:
BOOL CPartyMng::DeleteParty( u_long uPartyId )
suchen nach
Code:
#if __VER >= 14 // __INSTANCE_DUNGEON
		CInstanceDungeonParty::GetInstance()->DestroyAllDungeonByDungeonID( uPartyId );
#endif // __INSTANCE_DUNGEON
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
		CColosseumMng::GetInstance()->DestroyMatch( uPartyId );
#endif // __COLOSSEUM
------------------------------------------------------

../_Common/Mover.cpp

Wir suchen nach
Code:
#include "eveschool.h"
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
#include "Colosseum.h"
#endif // __COLOSSEUM
------------------------------------------------------

Wir gehen zur function
Code:
int CMover::DoDie( CCtrl *pAttackCtrl, DWORD dwMsg )
suchen nach
Code:
#if __VER >= 15 // __IMPROVE_QUEST_INTERFACE
	if( IsPlayer() == FALSE && pAttacker && pAttacker->IsPlayer() )
	{
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
		CColosseumMatch* pColosseumMatch = CColosseumMng::GetInstance()->GetMatchByMoverID( GetId() );
		if( pColosseumMatch )
			pColosseumMatch->DestroyMover();
#endif // __COLOSSEUM
------------------------------------------------------

../_Common/Project.cpp

Wir suchen nach
Code:
#ifdef __ENVIRONMENT_EFFECT
#include "Environment.h"
#endif // __ENVIRONMENT_EFFECT
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
#include "Colosseum.h"
#endif // __COLOSSEUM
------------------------------------------------------

Wir gehen zur Function
Code:
BOOL CProject::OpenProject( LPCTSTR lpszFileName )
und tragen VOR DEM "return TRUE;" dies ein
Code:
#ifdef __WORLDSERVER
#ifdef	__COLOSSEUM
	CColosseumMng::GetInstance()->LoadScript();
#endif // __COLOSSEUM
#endif
------------------------------------------------------

../_Interface/WndManager.h

Wir suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
#include "WndHousing.h"
#endif //__GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
#include "WndColosseum.h"
#endif	// __COLOSSEUM
------------------------------------------------------

Wir suchen nach
Code:
	// ¸ÞÁö½Ã À©µµ
	CWndMessageBox*		m_pWndMessageBox;
	CWndMessageBoxUpper*		m_pWndMessageBoxUpper;

	//	Äù½ºÆ® ¾ÆÀÌÅÛ Á¤º¸
	CWndQuestItemInfo*	m_pQuestItemInfo;
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
	CWndColosseumComplete*	m_pColosseumComplete;
	CWndColosseumEnter*		m_pColosseumEnter;
	CWndColosseumMassage*	m_pColosseumMassage;
	CWndColosseumRankGuild*	m_pColosseumRankGuild;
	CWndColosseumRankNomal*	m_pColosseumRankNomal;
	CWndColosseumRetry*		m_pColosseumRetry;
	CWndColosseumStart*		m_pColosseumStart;
	CWndColosseumStartReady1*	m_pColosseumStartReady1;
	CWndColosseumStartReady2*	m_pColosseumStartReady2;
#endif // __COLOSSEUM
------------------------------------------------------

../_Interface/WndManager.cpp

Wir suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
	m_pWndGHBid = NULL;
#endif //__GUILD_HOUSE_MIDDLE

#ifdef __MAIL_REQUESTING_BOX
	m_bWaitRequestMail = FALSE;
#endif
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
	m_pColosseumComplete = NULL;
	m_pColosseumEnter	= NULL;
	m_pColosseumMassage	= NULL;
	m_pColosseumRankGuild	= NULL;
	m_pColosseumRankNomal	= NULL;
	m_pColosseumRetry	= NULL;
	m_pColosseumStart	= NULL;
	m_pColosseumStartReady1	= NULL;
	m_pColosseumStartReady2	= NULL;
#endif // __COLOSSEUM
------------------------------------------------------

Wir suchen nach
Code:
#ifdef __YS_CHATTING_BLOCKING_SYSTEM
	SAFE_DELETE( m_pWndChattingBlockingList );
#endif // __YS_CHATTING_BLOCKING_SYSTEM

#ifdef __GUILD_HOUSE_MIDDLE
	SAFE_DELETE( m_pWndGHBid );
#endif //__GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
	SAFE_DELETE( m_pColosseumComplete );
	SAFE_DELETE( m_pColosseumEnter );
	SAFE_DELETE( m_pColosseumMassage );
	SAFE_DELETE( m_pColosseumRankGuild );
	SAFE_DELETE( m_pColosseumRankNomal );
	SAFE_DELETE( m_pColosseumRetry );
	SAFE_DELETE( m_pColosseumStart );
	SAFE_DELETE( m_pColosseumStartReady1 );
	SAFE_DELETE( m_pColosseumStartReady2 );
#endif	// __COLOSSEUM
------------------------------------------------------

Wir suchen nach
Code:
#ifdef __GUILD_HOUSE_MIDDLE
	else if( m_pWndGHBid == pWndChild )
	{
		SAFE_DELETE( m_pWndGHBid );
		pWndChild = NULL;
	}
#endif //__GUILD_HOUSE_MIDDLE
und tragen darunter ein
Code:
#ifdef	__COLOSSEUM
	else if(m_pColosseumComplete == pWndChild)
	{
		SAFE_DELETE( m_pColosseumComplete );
		pWndChild = NULL;
	}
	else if(m_pColosseumEnter == pWndChild)
	{
		SAFE_DELETE( m_pColosseumEnter );
		pWndChild = NULL;
	}
	else if(m_pColosseumMassage == pWndChild)
	{
		SAFE_DELETE( m_pColosseumMassage );
		pWndChild = NULL;
	}
	else if(m_pColosseumRankGuild == pWndChild)
	{
		SAFE_DELETE( m_pColosseumRankGuild );
		pWndChild = NULL;
	}
	else if(m_pColosseumRankNomal == pWndChild)
	{
		SAFE_DELETE( m_pColosseumRankNomal );
		pWndChild = NULL;
	}
	else if(m_pColosseumRetry == pWndChild)
	{
		SAFE_DELETE( m_pColosseumRetry );
		pWndChild = NULL;
	}
	else if(m_pColosseumStart == pWndChild)
	{
		SAFE_DELETE( m_pColosseumStart );
		pWndChild = NULL;
	}
	else if(m_pColosseumStartReady1 == pWndChild)
	{
		SAFE_DELETE( m_pColosseumStartReady1 );
		pWndChild = NULL;
	}
	else if(m_pColosseumStartReady2 == pWndChild)
	{
		SAFE_DELETE( m_pColosseumStartReady2 );
		pWndChild = NULL;
	}
#endif // __COLOSSEUM



Jetzt habt ihr das Colosseum!
07/22/2011 08:28 dennisdra#2
Nach dem Release mit der jobauswahl im Char create Fenster dachte ich mir Ok Nice aber mit dem Release Hat sich meine Meinung über dich geändert.

Nice Release ! Thx haste bekommen.
Bin grad @ School daher kann ich's nicht testen, werde jedoch nachher Rückmeldung geben.


MfG

Dennisdra
07/22/2011 10:31 guardianangel#3
Code:
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(48): warning C4244: '=' : conversion from 'DWORD' to 'BYTE', possible loss of data
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(50): warning C4244: '=' : conversion from 'DWORD' to 'BYTE', possible loss of data
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(61): error C2248: 'CUser::SendColosseumEnter' : cannot access private member declared in class 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(64): error C2248: 'CUser::SendColosseumEnter' : cannot access private member declared in class 'CUser'
        User.h(764) : see declaration of 'CUser::SendColosseumEnter'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(138): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(142): error C2248: 'CUser::SendColosseumStart' : cannot access private member declared in class 'CUser'
        User.h(765) : see declaration of 'CUser::SendColosseumStart'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(205): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(236): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(240): error C2248: 'CUser::SendColosseumReady2' : cannot access private member declared in class 'CUser'
        User.h(767) : see declaration of 'CUser::SendColosseumReady2'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(265): error C2248: 'CUser::SendColosseumStart' : cannot access private member declared in class 'CUser'
        User.h(765) : see declaration of 'CUser::SendColosseumStart'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(273): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(292): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(298): error C2248: 'CUser::SendColosseumStart' : cannot access private member declared in class 'CUser'
        User.h(765) : see declaration of 'CUser::SendColosseumStart'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(299): error C2248: 'CUser::SendColosseumReady1' : cannot access private member declared in class 'CUser'
        User.h(766) : see declaration of 'CUser::SendColosseumReady1'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(313): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(319): error C2065: 'TID_COLOSSEUM_COLOSUCCESS01' : undeclared identifier
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(323): error C2248: 'CUser::SendColosseumReady1' : cannot access private member declared in class 'CUser'
        User.h(766) : see declaration of 'CUser::SendColosseumReady1'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(331): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(336): error C2248: 'CUser::SendColosseumEndMatch' : cannot access private member declared in class 'CUser'
        User.h(768) : see declaration of 'CUser::SendColosseumEndMatch'
        User.h(67) : see declaration of 'CUser'
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(346): warning C4018: '<' : signed/unsigned mismatch
c:\Source 22.05.2011\Source\Official Source\WORLDSERVER\DPCoreClient.cpp(879): error C2248: 'CUser::SendColosseumEnter' : cannot access private member declared in class 'CUser'
c:\Source 22.05.2011\Source\Official Source\WORLDSERVER\DPCoreClient.cpp(882): error C2248: 'CUser::SendColosseumEnter' : cannot access private member declared in class 'CUser'
Alles genau nach deinem Tut gemacht und die Fehler spuckt er aus
weiss nicht was ich damit anfangen soll
Hilfe wäre sehr Nice :)
07/22/2011 10:34 yannickminecraft#4
Quote:
Originally Posted by guardianangel View Post
Alles genau nach deinem Tut gemacht und die Fehler spuckt er aus
weiss nicht was ich damit anfangen soll
Hilfe wäre sehr Nice :)
../WorldServer/User.h

Änder mal das
Code:
#ifdef	__COLOSSEUM
	void	SendColosseumEnter();
	void	SendColosseumStart( int nTime );
	void	SendColosseumReady1( int nTime, BYTE nStage );
	void	SendColosseumReady2( int nTime );
	void	SendColosseumEndMatch( BOOL bWin, int nTime );
#endif //__COLOSSEUM
zu
Code:
#ifdef	__COLOSSEUM
public:
	void	SendColosseumEnter();
	void	SendColosseumStart( int nTime );
	void	SendColosseumReady1( int nTime, BYTE nStage );
	void	SendColosseumReady2( int nTime );
	void	SendColosseumEndMatch( BOOL bWin, int nTime );
#endif //__COLOSSEUM
und sag bitte bescheid ob er nun sauber arbeitet^^
07/22/2011 10:45 guardianangel#5
Code:
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(48): warning C4244: '=' : conversion from 'DWORD' to 'BYTE', possible loss of data
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(50): warning C4244: '=' : conversion from 'DWORD' to 'BYTE', possible loss of data
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(138): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(205): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(236): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(273): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(292): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(313): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(319): error C2065: 'TID_COLOSSEUM_COLOSUCCESS01' : undeclared identifier
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(331): warning C4018: '<' : signed/unsigned mismatch
C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(346): warning C4018: '<' : signed/unsigned mismatch
Das kommt jetzt ...
Is aufjeden fall weniger geworden ...

Ich mach jetzt die komplette Solution um dir weitere Mögliche Fehler zu BErichten ...
Vielen Dank für die Hilfe ^^
07/22/2011 10:48 yannickminecraft#6
Quote:
Originally Posted by guardianangel View Post
Das kommt jetzt ...
Is aufjeden fall weniger geworden ...

Ich mach jetzt die komplette Solution um dir weitere Mögliche Fehler zu BErichten ...
Vielen Dank für die Hilfe ^^
Die Warnings sind eigentlich egal einfach ignorieren.

C:\Source 22.05.2011\Source\Official Source\_Common\Colosseum.cpp(319): error C2065: 'TID_COLOSSEUM_COLOSUCCESS01' : undeclared identifier

Du hast dies nicht in deinen Resourcen definiert "TID_COLOSSEUM_COLOSUCCESS01".

Hast wohl was beim einbinden der Resourcen (kein source zeugs) was vergessen ;)
07/22/2011 10:54 FragGoogle#7
Krasser kerl o_o Guter release, wie dein anderer auch, war ja länger ruhe in source sachen bzw nur kleine dinge, aber das :)
Thanks hast du meld dich nochmal per PN hatte irgendwie keine mehr zurück bekommen? :D
07/22/2011 10:58 Killlerooo#8
Hast DU super gemacht Yannick ;)
07/22/2011 11:10 guardianangel#9
Vielen Dank ...
Hab jetzt alles was Fehlt nachgetragen mal schaun obs Geht ^^

Hab vor lauter Lauter vergessen die Resourcen einzutragen ^^



Edit :

So Funzt jetzt ...
Nun nur noch testen obs auch geht xD


EDIT :

Beim Builden der Neuz :

Code:
C:\Source 22.05.2011\Source\Official Source\_Interface\WndWorld.cpp(3953): error C2051: case expression not constant
C:\Source 22.05.2011\Source\Official Source\_Interface\WndWorld.cpp(3953): error C2065: 'MMI_COLOSSEUM_COLOENTER01' : undeclared identifier
Hmmm scheint doch eigene Dummheit zu sehn ...
hatte es nich in defineNeuz xD

Jetz mal schaun xD
07/22/2011 11:24 yannickminecraft#10
Quote:
Originally Posted by guardianangel View Post
EDIT :

Beim Builden der Neuz :

Code:
C:\Source 22.05.2011\Source\Official Source\_Interface\WndWorld.cpp(3953): error C2051: case expression not constant
C:\Source 22.05.2011\Source\Official Source\_Interface\WndWorld.cpp(3953): error C2065: 'MMI_COLOSSEUM_COLOENTER01' : undeclared identifier
Du solltest echt mal die Fehlermeldung zuerst lesen ^^
MMI_COLOSSEUM_COLOENTER01
Kann er nicht finden hast immernoch nicht die resourcen richtig gezogen ^^
07/22/2011 11:25 guardianangel#11
Ja ...
Ich habs gepostet und dann gerallt XD

Tut mir Leid ...
Aufjeden Fall MEGAGEIL
deine Releases ...

Ich glaub nich das irgendwer
sowas toppen kann
07/22/2011 11:30 Killlerooo#12
Ich kenne da jemanden ;)
07/22/2011 11:36 Velmore#13
yannick wie lange hast du gebraucht und das ganze zu coden?
07/22/2011 11:38 guardianangel#14
Eine Frage Bleibt für mich Noch ... xD

Code:
Wir gehen zur Function
Code:

BOOL CProject::OpenProject( LPCTSTR lpszFileName )

und tragen VOR DEM "return TRUE;" dies ein
Code:

#ifdef __WORLDSERVER
#ifdef	__COLOSSEUM
	CColosseumMng::GetInstance()->LoadScript();
#endif // __COLOSSEUM
#endif

Wo Genau ? ...

Unter dem BOOL blabla steht irgendwann Return False

Wenn ich davor Den Eintrag mache Lädt die World nicht mehr die MAsquerade.prj ^^
07/22/2011 11:42 yannickminecraft#15
UPDATE

In der WndWorld.cpp müsst ihr bei der function OnEraseBkgnd() diesen code:
Code:
#ifdef __COLOSSEUM

	if ( dwColosseumStartSplashTick > g_tmCurrent )
	{
		int nAlpha = ( dwColosseumStartSplashTick - g_tmCurrent ) / 32;
		Error("Error Report SplashTick %i Current %i Alpha %i",dwColosseumStartSplashTick, g_tmCurrent, nAlpha);
		if( nAlpha > 255 )
			nAlpha = 255;

		int x = (GetClientRect().Width() / 2) - (m_TexColosseumStart.m_size.cx / 2);
		int y = (GetClientRect().Height() / 2) - (m_TexColosseumStart.m_size.cy / 2);
		m_TexColosseumStart.Render( &g_Neuz.m_2DRender, CPoint(x, y) , nAlpha );
	}
#endif //__COLOSSEUM
unter diesen schreiben:
Code:
	pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
	pd3dDevice->SetRenderState( D3DRS_SRCBLEND,  D3DBLEND_SRCALPHA );
	pd3dDevice->SetRenderState( D3DRS_DESTBLEND, D3DBLEND_INVSRCALPHA );
	pd3dDevice->SetRenderState( D3DRS_ZWRITEENABLE, FALSE );
	pd3dDevice->SetRenderState( D3DRS_ZENABLE, FALSE );
	pd3dDevice->SetRenderState( D3DRS_ALPHABLENDENABLE,   TRUE );
	pd3dDevice->SetRenderState( D3DRS_ALPHATESTENABLE, TRUE );
	pd3dDevice->SetRenderState( D3DRS_ALPHAREF,        0x08 );
Dann passt das ganze wieder mit dem Background

Quote:
Originally Posted by Velmore View Post
yannick wie lange hast du gebraucht und das ganze zu coden?
2-3 Tage ~

Quote:
Originally Posted by guardianangel View Post
Eine Frage Bleibt für mich Noch ... xD

Code:
Wir gehen zur Function
Code:

BOOL CProject::OpenProject( LPCTSTR lpszFileName )

und tragen VOR DEM "return TRUE;" dies ein
Code:

#ifdef __WORLDSERVER
#ifdef	__COLOSSEUM
	CColosseumMng::GetInstance()->LoadScript();
#endif // __COLOSSEUM
#endif

Wo Genau ? ...

Unter dem BOOL blabla steht irgendwann Return False

Wenn ich davor Den Eintrag mache Lädt die World nicht mehr die MAsquerade.prj ^^
Du musst es ganz ganz am ende machen. Also zwischen
Code:
#ifdef __IMPROVE_MAP_SYSTEM
#ifdef __CLIENT
	m_MapInformationManager.LoadMapInformationData();
#endif // __CLIENT
#endif // __IMPROVE_MAP_SYSTEM
und

Code:
return TRUE;
}