Quote:
#ifndef __EVE_SCHOOL_H__
#define __EVE_SCHOOL_H__
#include "guild.h"
#define MAX_SCHOOL 10
enum
{
SBS_END, SBS_READY, SBS_START, SBS_START2,
};
typedef struct _SCHOOL_ENTRY
{
u_long id;
char lpName[MAX_G_NAME];
int nSurvivor;
int nSize;
int nLevel;
int nDead;
_SCHOOL_ENTRY()
{
id = 0;
*lpName = '\0';
nSurvivor = 0;
nSize = 0;
nLevel = 0;
nDead = 0;
};
}
SCHOOL_ENTRY, *PSCHOOL_ENTRY;
class CGuildMng;
class CEveSchool
{
public:
CGuildMng* m_pSchoolMng;
D3DXVECTOR3 m_avPos[MAX_SCHOOL];
D3DXVECTOR3 m_vDefault;
DWORD m_dwsbstart2;
public:
CEveSchool();
~CEveSchool() {}
BOOL Ready( void );
BOOL Start( void );
BOOL Start2( void );
BOOL End( void );
BOOL Report( void );
BOOL LoadPos( LPCSTR lpszFileName );
D3DXVECTOR3 GetPos( u_long id );
D3DXVECTOR3 GetPos( void ) { return m_vDefault; }
static CEveSchool* GetInstance();
};
typedef struct __AUTO_OPEN
{
BOOL bUseing;
BYTE nHour;
BYTE nMinute;
} __AUTO_OPEN;
class CGuildCombat
{
#ifdef __WORLDSERVER
__AUTO_OPEN __AutoOpen[7];
#endif // __WORLDSERVER
public:
enum { OPEN_STATE, CLOSE_STATE, WAR_STATE, COMPLET_CLOSE_STATE, GM_COLSE_STATE };
enum { NOTENTER_STATE = 100, NOTENTER_COUNT_STATE, ENTER_STATE, MAINTENANCE_STATE, WAR_WAR_STATE, WAR_CLOSE_STATE, WAR_CLOSE_WAIT_STATE, WAR_TELEPORT_STATE };
enum { ALLMSG = 1000, GUILDMSG, JOINMSG, WORLDMSG, STATE, WARSTATE, WAIT };
struct __REQUESTGUILD
{
u_long uidGuild;
DWORD dwPenya;
};
struct __JOINPLAYER
{
u_long uidPlayer; // ij¸¯ÅÍ ¾ÆÀ̵ð
int nlife; // ³²Àº »ý¸í
// BOOL bEntry; // Âü°¡ À¯/¹«
int nPoint; // Æ÷ÀÎÆ®
int uKillidGuild; // Àü¿¡ Á×ÀÎ ±æµå
int nMap; // ´ëÀü ÅÚ·¹Æ÷Æ® ¸Ê
DWORD dwTelTime; // ´ëÀü ÅÚ·¹Æ÷Æ® ½Ã°£
__JOINPLAYER()
{
uidPlayer = 0;
nlife = 0;
nPoint = 0;
uKillidGuild = 0;
nMap = 0;
dwTelTime = 0;
}
};
struct __GCSENDITEM
{
int nWinCount;
DWORD dwItemId;
int nItemNum;
__GCSENDITEM()
{
nWinCount = 0;
dwItemId = 0;
nItemNum = 0;
}
};
struct __GuildCombatMember
{
#ifdef __S_BUG_GC
u_long uGuildId;
#endif // __S_BUG_GC
vector<__JOINPLAYER*> vecGCSelectMember; // ´ëÀü¿¡ ¼±ÅÃµÈ ¸â¹ö Á¤º¸
// set<u_long> GuildCombatJoinMember; // ±æµåÀü¿¡ Âü°¡ÇѸâ¹ö
// set<u_long> GuildCombatOutMember; // Âü°¡Çߴµ¥ Á×¾ú´ø°¡ ³ª°£ ¸â¹ö
// FLOAT fAvgLevel; // Æò±Õ ·¹º§
DWORD dwPenya; // Âü°¡ºñ
BOOL bRequest; // Âü°¡ À¯/¹«
u_long m_uidDefender; // µðÆæ´õ
int nJoinCount; // Âü°¡ Ä«¿îÅÍ
int nWarCount; // ÀüÅõ Àοø¼ö
int nGuildPoint; // ±æµå Æ÷ÀÎÆ®
list<__JOINPLAYER*> lspFifo;
void Clear()
{
#ifdef __S_BUG_GC
uGuildId = 0;
#endif // __S_BUG_GC
SelectMemberClear();
dwPenya = 0;
bRequest = FALSE;
m_uidDefender = 0;
nJoinCount = 0;
nWarCount = 0;
nGuildPoint = 0;
};
void SelectMemberClear()
{
for( int veci = 0 ; veci < (int)( vecGCSelectMember.size() ) ; ++veci )
{
__JOINPLAYER* pJoinPlayer = vecGCSelectMember[veci];
SAFE_DELETE( pJoinPlayer );
}
vecGCSelectMember.clear();
lspFifo.clear();
}
};
struct __GuildCombatProcess
{
int nState;
DWORD dwTime;
DWORD dwCommand;
DWORD dwParam;
};
struct __GCRESULTVALUEGUILD
{
int nCombatID; // ±æµå´ëÀü ¾ÆÀ̵ð
u_long uidGuild; // ±æµå ¾ÆÀ̵ð
__int64 nReturnCombatFee; // µ¹·Á¹ÞÀ» Âü¿©±Ý
__int64 nReward; // º¸»ó±Ý
};
struct __GCRESULTVALUEPLAYER
{
int nCombatID; // ±æµå´ëÀü ¾ÆÀ̵ð
u_long uidGuild; // ±æµå ¾ÆÀ̵ð
u_long uidPlayer; // Ç÷¹ÀÌ¾î ¾ÆÀ̵ð
__int64 nReward; // º¸»ó±Ý
};
struct __GCGETPOINT
{
u_long uidGuildAttack;
u_long uidGuildDefence;
u_long uidPlayerAttack;
u_long uidPlayerDefence;
int nPoint;
BOOL bKillDiffernceGuild;
BOOL bMaster;
BOOL bDefender;
BOOL bLastLife;
__GCGETPOINT()
{
uidGuildAttack = uidGuildDefence = uidPlayerAttack = uidPlayerDefence = nPoint = 0;
bKillDiffernceGuild = bMaster = bDefender = bLastLife = FALSE;
}
};
struct __GCPLAYERPOINT
{
u_long uidPlayer;
int nJob;
int nPoint;
__GCPLAYERPOINT()
{
uidPlayer = nJob = nPoint = 0;
}
};
int m_nGuildCombatIndex;
u_long m_uWinGuildId;
int m_nWinGuildCount;
u_long m_uBestPlayer;
vector<__GCGETPOINT> m_vecGCGetPoint;
vector<__GCPLAYERPOINT> m_vecGCPlayerPoint;
#ifdef __WORLDSERVER
#ifdef __S_BUG_GC
vector<__GuildCombatMember*> m_vecGuildCombatMem;
#else // __S_BUG_GC
map<u_long, __GuildCombatMember*> m_GuildCombatMem;
#endif // __S_BUG_GC
DWORD m_dwTime;
int m_nProcessGo;
int m_nProcessCount[ 25 ];
__GuildCombatProcess GuildCombatProcess[250];
int m_nStopWar; // 1À̸é Áß°£¿¡ Á¾·á, 2ÀÌ¸é ¿î¿µÀÚ°¡ Á¾·á
int m_nJoinPanya; // ´ëÀü¿¡ Âü°¡ÇÒ¼ö ÀÖ´Â ±âº» Penya
int m_nGuildLevel; // ´ëÀü¿¡ Âü°¡ÇÒ¼ö ÀÖ´Â ÃÖ¼Ò ±æµå·¹º§
#if __VER >= 8 // __GUILDCOMBAT_85
int m_nMinGuild; // ÃÖ¼Ò ÀüÀïÀ» ÇÒ¼ö ÀÖ´Â ±æµå °³¼ö(ÃÖ¼Ò Âü¿© ±æµå Á¶°ÇÀÌ µÇ¾ß ±æµå ´ëÀüÀÌ ½ÃÀÛÇÔ)
int m_nMaxGCSendItem;
#endif // __VER >= 8
int m_nMaxGuild; // ´ëÀü¿¡ Âü°¡ÇÒ¼ö ÀÖ´Â ±æµå
int m_nMaxJoinMember; // ´ëÀü¿¡ Âü°¡ÇÒ¼ö ÀÖ´Â ÃÖ´ë À¯Àú
int m_nMaxPlayerLife; // ´ëÀü¿¡ Âü°¡ÇÑ À¯ÀúÀÇ ÃÖ´ë »ý¸í
int m_nMaxWarPlayer; // ÃÖ´ë ¼±¹ß´ë À¯Àú
int m_nMaxMapTime; // ´ëÀü À§Ä¡ ¼³Á¤ ½Ã°£
int m_nMaxGuildPercent; // ´ëÀü±æµå »ó±Ý ÆÛ¼¾Æ®
int m_nMaxPlayerPercent;// º£½ºÆ® Ç÷¹ÀÌ¾î ÆÛ¼¾Æ®
int m_nRequestCanclePercent; // Âü°¡½Åû½Ã Ãë¼ÒÇÑ ±æµå¿¡°Ô µ¹·ÁÁÙ ÆÛ¼¾Æ®
int m_nNotRequestPercent; // Âü°¡½Ã ÀÔÂûÀÌ ¾ÈµÈ±æµå¿¡°Ô µ¹·ÁÁÙ ÆÛ¼¾Æ®
int m_nItemPenya; // ´ëÀü »óǰ ¾ÆÀÌÅÛ °¡°Ý(¿ë¸ÁÅä?)
BOOL m_bMutex; // ±æµå´ëÀü ¿ÀÇ Çѹø¸¸...
BOOL m_bMutexMsg; // ±æµå´ëÀü ¿ÀÇ Çѹø¸¸...
CTimer m_ctrMutexOut;
#if __VER >= 8 // __GUILDCOMBAT_85
vector< CString > m_vecstrGuildMsg;
vector<__GCSENDITEM> vecGCSendItem;
#endif // __VER >= 8
vector<__REQUESTGUILD> vecRequestRanking; // Âü°¡ ¼øÀ§
vector<__GCRESULTVALUEGUILD> m_GCResultValueGuild; // ±æµå´ëÀü °á°ú°ª
vector<__GCRESULTVALUEPLAYER> m_GCResultValuePlayer; // ±æµå´ëÀü °á°ú°ª
#endif // __WORLDSERVER
int m_nState; // ±æµå¿ö »óÅÂ
int m_nGCState; // ÀüÅõ ÁßÀÏ ¶§ÀÇ »óÅÂ
#ifdef __CLIENT
BOOL m_bRequest; // ½Åû À¯¹«
BOOL IsRequest( void ) { return m_bRequest; };
#endif // __CLIENT
public:
// Constructions
CGuildCombat();
virtual ~CGuildCombat();
void GuildCombatClear( int Clear = 1 );
void GuildCombatGameClear();
void SelectPlayerClear( u_long uidGuild );
void AddvecGCGetPoint( u_long uidGuildAttack, u_long uidGuildDefence, u_long uidPlayerAttack, u_long uidPlayerDefence, int nPoint,
BOOL bKillDiffernceGuild, BOOL bMaster, BOOL bDefender, BOOL bLastLife );
void AddvecGCPlayerPoint( u_long uidPlayer, int nJob, int nPoint );
#ifdef __WORLDSERVER
BOOL LoadScript( LPCSTR lpszFileName );
void JoinGuildCombat( u_long idGuild, DWORD dwPenya, BOOL bRequest );
void AddSelectPlayer( u_long idGuild, u_long uidPlayer );
void GetSelectPlayer( u_long idGuild, vector<__JOINPLAYER> &vecSelectPlayer );
void OutGuildCombat( u_long idGuild );
void SetMaintenance();
void SetEnter();
void SetGuildCombatStart();
void SetGuildCombatClose( BOOL bGM = FALSE );
void SetGuildCombatCloseWait( BOOL bGM = FALSE );
void GuildCombatCloseTeleport();
void SetNpc( void );
void SetRequestRanking( void );
void SetDefender( u_long uidGuild, u_long uidDefender );
void SetPlayerChange( CUser* pUser, CUser* pLeader );
u_long GetDefender( u_long uidGuild );
u_long GetBestPlayer( u_long* dwGetGuildId, int* nGetPoint );
DWORD GetRequstPenya( u_long uidGuild );
void GetPoint( CUser* pAttacker, CUser* pDefender );
__int64 GetPrizePenya( int nFlag );
BOOL IsRequestWarGuild( u_long uidGuild, BOOL bAll );
BOOL IsSelectPlayer( CUser* pUser );
void JoinWar( CUser* pUser, int nMap = 99, BOOL bWar = TRUE );
void OutWar( CUser* pUser, CUser* pLeader, BOOL bLogOut = FALSE );
void JoinObserver( CUser* pUser );
void GuildCombatRequest( CUser* pUser, DWORD dwPenya );
void GuildCombatCancel( CUser* pUser );
void GuildCombatOpen( void );
void GuildCombatEnter( CUser* pUser );
void SetSelectMap( CUser* pUser, int nMap );
void UserOutGuildCombatResult( CUser* pUser );
void GuildCombatResult( BOOL nResult = FALSE, u_long idGuildWin = 0 );
void Process();
void ProcessCommand();
void ProcessJoinWar();
void SendJoinMsg( LPCTSTR lpszString );
void SendGuildCombatEnterTime( void );
void SendGCLog( void );
void SerializeGCWarPlayerList( CAr & ar );
#if __VER >= 11 // __GUILDCOMBATCHIP
void GuildCombatResultRanking();
#endif // __GUILDCOMBATCHIP
CTime GetNextGuildCobmatTime(void);
int m_nDay;
#ifdef __S_BUG_GC
__GuildCombatMember* FindGuildCombatMember( u_long GuildId );
#endif // __S_BUG_GC
#endif // __WORLDSERVER
};
#endif // __EVE_SCHOOL_H__