[SOURCE] Functional Colosseum!

Joined
Oct 6, 2008
Messages
471
Reaction score
73
Normally I don't Re post peoples work from other forums because I feel that most should be smart enough to view dev forums besides RageZone but this was to random to pass up

Credits go to Yannick @ EPvPers

Use a translator if you can not understand


Edit by ShadowDragon - Re-Uploaded files are here:

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


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!


---------- Post added at 12:07 PM ---------- Previous post was at 12:03 PM ----------

just in case

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^^

EDIT: updated info

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



2-3 Tage ~



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;
}

APP_NEWCOLOCOMPLETE
APP_NEWCOLOENTER
TID_COLOSSEUM_COLOISGUILDJOIN0
APP_NEWCOLOMASSAGE
APP_NEWCOLORANKGUILD
APP_NEWCOLORANKNOMAL
APP_NEWCOLORETRY
APP_NEWCOLOSTART
TID_COLOSSEUM_WATINGSTAGESTART01
APP_NEWCOLOSTARTREADY1
APP_NEWCOLOSTARTREADY2
TID_COLOSSEUM_COLOISGUILDJOIN01
TID_COLOSSEUM_WATINGSTAGESTART01


Here's the rest of them. Define these, and if you follow the tut, should give no errors.

Remember to define TID_COLOSSEUM_COLOSUCCESS01 in the resource.

also

Remember to define MMI_COLOSSEUM_COLOENTER01 or else it'll give unknown identifier errors.
 
Last edited by a moderator:
Done implementing, lets see if this badboy works<3

---------- Post added at 07:22 PM ---------- Previous post was at 06:18 PM ----------

Since the mod deleted my post -.-

Remember to define TID_COLOSSEUM_COLOSUCCESS01 in the resource.

there was another one as well, but the mod deleted it, and I'm too lazy to go look for it. It's pretty self explained when you get the error.
 
APP_NEWCOLOCOMPLETE
APP_NEWCOLOENTER
TID_COLOSSEUM_COLOISGUILDJOIN0
APP_NEWCOLOMASSAGE
APP_NEWCOLORANKGUILD
APP_NEWCOLORANKNOMAL
APP_NEWCOLORETRY
APP_NEWCOLOSTART
TID_COLOSSEUM_WATINGSTAGESTART01
APP_NEWCOLOSTARTREADY1
APP_NEWCOLOSTARTREADY2
TID_COLOSSEUM_COLOISGUILDJOIN01
TID_COLOSSEUM_WATINGSTAGESTART01


Here's the rest of them. Define these, and if you follow the tut, should give no errors.
 
Last edited:
APP_NEWCOLOCOMPLETE
APP_NEWCOLOENTER
TID_COLOSSEUM_COLOISGUILDJOIN0
APP_NEWCOLOMASSAGE
APP_NEWCOLORANKGUILD
APP_NEWCOLORANKNOMAL
APP_NEWCOLORETRY
APP_NEWCOLOSTART
TID_COLOSSEUM_WATINGSTAGESTART01
APP_NEWCOLOSTARTREADY1
APP_NEWCOLOSTARTREADY2
TID_COLOSSEUM_COLOISGUILDJOIN01
TID_COLOSSEUM_WATINGSTAGESTART01


Here's the rest of them. Define these, and if you follow the tut, should give no errors.

Where exactly should the way, in what file ..
Please help: (
 
Yes ..Thx,,^^

But i become last error

Source\_Interface\WndWorld.cpp(4396): error C2196: case value '100' already used

This error occurs if I open the

PHP:
#if __VER >= 12 // __TAX
        case MMI_SECRET_ENTRANCE_1:
            {
                g_DPlay.SendTeleportToSecretRoomDungeon();
            }
            break;
#endif // __TAX

I was saying the one there
what needs to change, but unfortunately knows what net ..

Would appreciate your help very ..

lg
 
Yes ..Thx,,^^

But i become last error



This error occurs if I open the

PHP:
#if __VER >= 12 // __TAX
        case MMI_SECRET_ENTRANCE_1:
            {
                g_DPlay.SendTeleportToSecretRoomDungeon();
            }
            break;
#endif // __TAX

I was saying the one there
what needs to change, but unfortunately knows what net ..

Would appreciate your help very ..

lg

check where MMI_SECRET_ENTRANCE_1 is defined, then use another value since 100 is already used. (It's defined with a number)
 
I seriously don't know how anybody has gotten this working without fixing things.
I'm adding it now, and there are a tons of things that simply aren't right o.o

edit: nvm, the coding is fine actually. note for future users of this thread, don't google translate the entire page xD it messes up the coding
 
Last edited:
Need help again please,,,

I get this error

2011/ 8/ 8 21:03:30 FileName character.inc(9235) : MMI_COLOSSEUM_COLOENTER01 Not Found. : MMI_COLOSSEUM_COLOENTER01 ); // ???? ??

AddMenu( MMI_COLOSSEUM_COLOENTER02 )

2011/ 8/ 8 21:03:30 FileName character.inc(9236) : MMI_COLOSSEUM_COLOENTER02 Not Found. : MMI_COLOSSEUM_COLOENTER02 ); // ??



I have two things in it and also the source defineText.h
you have to hire any where else adden?
 
[/COLOR]
APP_NEWCOLOCOMPLETE
APP_NEWCOLOENTER
TID_COLOSSEUM_COLOISGUILDJOIN0
APP_NEWCOLOMASSAGE
APP_NEWCOLORANKGUILD
APP_NEWCOLORANKNOMAL
APP_NEWCOLORETRY
APP_NEWCOLOSTART
TID_COLOSSEUM_WATINGSTAGESTART01
APP_NEWCOLOSTARTREADY1
APP_NEWCOLOSTARTREADY2
TID_COLOSSEUM_COLOISGUILDJOIN01
TID_COLOSSEUM_WATINGSTAGESTART01


Here's the rest of them. Define these, and if you follow the tut, should give no errors.

Gotta define then in ResData.h and defineText.h?
 
[/COLOR]

Gotta define then in ResData.h and defineText.h?
These get from Global Flyff resdata and customize:
Code:
APP_NEWCOLOCOMPLETE
APP_NEWCOLOENTER
APP_NEWCOLOMASSAGE
APP_NEWCOLORANKGUILD
APP_NEWCOLORANKNOMAL
APP_NEWCOLORETRY
APP_NEWCOLOSTART
APP_NEWCOLOSTARTREADY1
APP_NEWCOLOSTARTREADY2
These define in DefineText.h, add in textclient.inc and textclient.txt...
Code:
TID_COLOSSEUM_COLOISGUILDJOIN0
TID_COLOSSEUM_WATINGSTAGESTART01
TID_COLOSSEUM_COLOISGUILDJOIN01
TID_COLOSSEUM_WATINGSTAGESTART01
 
I'm getting error's compiling.

Neuz fatal error LNK1120: 7 unresolved externals
c:\Documents and Settings\Administrator\Desktop\source2\Official Source\WORLDSERVER\DPCoreClient.cpp(878): error C2248: 'CUser::SendColosseumEnter' : cannot access private member declared in class 'CUser'
c:\Documents and Settings\Administrator\Desktop\source2\Official Source\WORLDSERVER\DPCoreClient.cpp(881): error C2248: 'CUser::SendColosseumEnter' : cannot access private member declared in class 'CUser'
Neuz error LNK2019: unresolved external symbol "public: __thiscall CWndColosseumStart::CWndColosseumStart(void)" (??0CWndColosseumStart@@QAE@XZ) referenced in function "public: void __thiscall CDPClient::OnColosseumStart(class CAr &)" (?OnColosseumStart@CDPClient@@QAEXAAVCAr@@@Z)
Neuz error LNK2019: unresolved external symbol "public: __thiscall CWndColosseumMassage::CWndColosseumMassage(void)" (??0CWndColosseumMassage@@QAE@XZ) referenced in function "public: void __thiscall CDPClient::OnColosseumEnter(class CAr &)" (?OnColosseumEnter@CDPClient@@QAEXAAVCAr@@@Z)
Neuz error LNK2019: unresolved external symbol "public: __thiscall CWndColosseumRetry::CWndColosseumRetry(void)" (??0CWndColosseumRetry@@QAE@XZ) referenced in function "public: void __thiscall CDPClient::OnColosseumEndMatch(class CAr &)" (?OnColosseumEndMatch@CDPClient@@QAEXAAVCAr@@@Z)
Neuz error LNK2019: unresolved external symbol "public: __thiscall CWndColosseumStartReady1::CWndColosseumStartReady1(void)" (??0CWndColosseumStartReady1@@QAE@XZ) referenced in function "public: void __thiscall CDPClient::OnColosseumReady1(class CAr &)" (?OnColosseumReady1@CDPClient@@QAEXAAVCAr@@@Z)
Neuz error LNK2019: unresolved external symbol "public: __thiscall CWndColosseumStartReady2::CWndColosseumStartReady2(void)" (??0CWndColosseumStartReady2@@QAE@XZ) referenced in function "public: void __thiscall CDPClient::OnColosseumReady2(class CAr &)" (?OnColosseumReady2@CDPClient@@QAEXAAVCAr@@@Z)
Neuz error LNK2019: unresolved external symbol "public: __thiscall CWndColosseumComplete::CWndColosseumComplete(void)" (??0CWndColosseumComplete@@QAE@XZ) referenced in function "public: void __thiscall CDPClient::OnColosseumEndMatch(class CAr &)" (?OnColosseumEndMatch@CDPClient@@QAEXAAVCAr@@@Z)
Neuz error LNK2019: unresolved external symbol "public: __thiscall CWndColosseumEnter::CWndColosseumEnter(void)" (??0CWndColosseumEnter@@QAE@XZ) referenced in function "public: virtual int __thiscall CWndWorld::OnCommand(unsigned int,unsigned long,class CWndBase *)" (?OnCommand@CWndWorld@@UAEHIKPAVCWndBase@@@Z)


@Jomex may i get some help? ;l
 
Back