Files
mir_server/server/LogicServer/base/Guild.h

1163 lines
33 KiB
C
Raw Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
#define MAXMEMOCOUNT 1024
#define MAX_WAR_HISTORY 100
#define MAXGGUILDCOIN 2000000000 //行会资金的上限
#define GUILD_UPGRADE_ITEM_IDX_1 1 //行会升级道具1
#define GUILD_UPGRADE_ITEM_IDX_2 2 //行会升级道具2
#define GUILD_UPGRADE_ITEM_IDX_3 3 //行会升级道具3
#define GUILDTREE_PERIOD_1 1 //幼苗期
#define GUILDTREE_PERIOD_2 2 //成熟期
#define GUILDTREE_PERIOD_3 3 //开花期
#define GUILDTREE_PERIOD_4 4 //结果期
#define GUILDFRUIT_PERIOD_1 1 //1级果实
#define GUILDFRUIT_PERIOD_2 2 //2级果实
#define GUILDFRUIT_PERIOD_3 3 //3级果实
#define GUILDFRUIT_PERIOD_4 4 //4级果实
#define GUILDFRUIT_PERIOD_5 5 //5级果实
#define GUILDFRUIT_PERIOD_6 6 //6级果实
//行会关系
#define GUILD_RELATION_NORMAL 0 //普通关系
#define GUILD_RELATION_UNION 1 //联盟关系
#define GUILD_RELATION_ENEMY 2 //敌对关系
//行会宣战关系(坑爹)
#define GUILD_WARSHIP_NO 0 //非宣战关系(包括联盟和普通关系)
#define GUILD_WARSHIP_YES 1 //宣战关系
using namespace jxSrvDef;
enum tagUpGuildSkillType
{
uGuildLevel = 1, ///< 帮派等级
uGuildCont = 2, ///< 帮派资金
uGuildYs = 3, ///< 帮派玥石
};
enum GuildBuildType{
gbtMainHall = 1, ///< 主殿
gbExerciserooem, //练功房
gbAssemblyhall, //议事厅
gbtGuildShop, ///< 行会商店
gbtMoonBox, ///< 月光宝盒
gbtGuildBoss, ///< 封印兽碑
//5行会仓库
//6行会光环
gbtTech = 7, ///< 行会科技
//8行会熔炉
gbtDragonThunder = 9,///< 震天龙弹
gbtEnd, ///< 结束
gbtCount = gbtEnd - 1,
};
typedef struct tagGuildBuild
{
int nType;
int nLevel;
tagGuildBuild()
{
nType = 0;
nLevel = 0;
}
}TAGGUILDBUILD, *PTAGGUILDBUILD;
//行会活动
typedef struct tagGuildActive
{
unsigned char nGuildActSts; //活动状态0-未开启1-进行中2-进行完毕
unsigned int nGuildActHandle;
unsigned char nFreshMonIdx; //第N波刷怪从1开始
unsigned int nActTimerHandle; //活动timer句柄
unsigned int nFreshTimerHandle; //刷新timer句柄
int nLevelWhenActive; //活动开启时行会的等级(以防活动过程中行会升级)
tagGuildActive()
{
memset(this,0,sizeof(*this));
}
}GuildActive;
typedef CHandleList<ActorCommonNode,UINT> ActorNodeList;
typedef struct tagApplyList
{
unsigned int nActorId; // 玩家id
ACTORNAME szName; //玩家昵称
int nLevel; //玩家等级
int nCircle; //玩家转数
int nSex; //性别
int nJob; //职业
unsigned int nVip; //职业
tagApplyList()
{
memset(this, 0, sizeof(*this));
}
}ApplyList;
class CGuildComponent;
class CJoinGuildApply;
class CGuild
{
public:
enum tagRelationShipType
{
rsReadyWar = 0,
rsOnWar,
rsPeaceful,
};
enum tagInterMsgId
{
imInvite, //邀请加入
imJoin, //申请加入
imCall, //召唤
};
typedef struct tagInterMsg
{
BYTE nMsgId; //消息的类型
EntityHandle hActorHandle; //目标的实体handle
ACTORNAME szName; //目标的名称
EntityHandle hSrcHandle; //发起人的handle通常是召唤的时候用到
ActorCommonNode Node;
tagInterMsg()
{
hActorHandle = 0;
hSrcHandle = 0;
szName[0] = 0;
}
}InterMsg;
typedef CHandleList<InterMsg,UINT> GuildInterMsgList;
public:
/*
* Comments:
* Param INT_PTR nGid:
* @Return VOID:
*/
//VOID EndWar(INT_PTR nGid);
//取得对外的公告信息
inline LPCSTR GetOutMemo() {return m_sOutMemo;}
//取得对内的公告信息
inline LPCSTR GetInMemo() {return m_sInMemo;}
inline LPCSTR GetGroupMemo() {return m_sGroupMemo;}
//加载沙巴克成员信息
void LoadSbkOffLinedata();
void getsbkOfflineData(CDataPacket& data, int& nCount);
/*
殿使m_nLevel
*/
inline int GetLevel() { return GetGuildbuildingLev(gbtMainHall); /*return m_nLevel;*/}
//取得帮派繁荣度
inline int GetFr() {return m_nFanrong;}
//获得帮派资金
inline int GetCoin() {return m_GuildCoin;}
//获得帮派玥石
inline int GetGuildYs() {return m_GuildYs;}
//修改帮派玥石
void ChangeGuildYs(int value) {m_GuildYs += value;}
//设置帮派资金
inline void SetCoin(int newCoin)
{
m_boUpdateTime = true;
if(newCoin > MAXGGUILDCOIN)
{
newCoin = MAXGGUILDCOIN;
}
if(newCoin > 0)
m_GuildCoin=newCoin;
else
m_GuildCoin = 0;
NotifyGuildDonateData(); //发送给行会成员
}
void ChangeGuildCoin(int value, INT_PTR nLogId = 0,LPCTSTR pStr = "");
//设置帮派玥石
inline void SetGuildYs(int value) {m_GuildYs += value;}
//设置对外的公告boSave为true表示稍后会保存到数据库中
VOID SetOutMemo(LPCSTR sOut,bool boSave);
//设置对内的公告boSave为true表示稍后会保存到数据库中
VOID SetInMemo(LPCSTR sIn,bool boSave) ;
//设置行会群公告
VOID SetGuildGroupMemo(LPCSTR sIn,bool boSave);
//设置帮派等级
VOID SetGuildLevel(int value,bool boSave,bool boRank, bool boUpgrade) ;
//设置繁荣度
VOID SetFr(int value,bool boSave,bool boRank);
void SetGuildFr(int value)
{
int gFr = GetFr();
SetFr(gFr+value,TRUE,true);
}
//帮派销毁
void Destroy();
/*
* Comments:线广CActor的SendTipmsgFormatWithId函数实现发送信息
* Param INT_PTR nPos:
* Param INT_PTR nTipmsgID:CActor的SendTipmsgFormatWithId函数
* Param INT_PTR nType:
* Param ...:
* @Return VOID:
*/
VOID SendGuildMsg(INT_PTR nPos,INT_PTR nTipmsgID,INT_PTR nType = ttTipmsgWindow, ...);
/*
* Comments:线广
* Param INT_PTR nPos:
* Param LPCSTR sMsg:
* Param INT_PTR nType:
* @Return VOID:
*/
VOID SendGuildMsg(INT_PTR nPos,LPCSTR sMsg,INT_PTR nType = ttTipmsgWindow);
/*
* Comments:线
* Param CActor* pActor
* Param LPCSTR sMsg:
*/
VOID SendGuildChatMsg(CActor* pActor, char* msg);
/*
* Comments:
* Param INT_PTR nEventId:id
* @Return VOID:
*/
VOID GiveAchieve(INT_PTR nEventId,INT_PTR nParam1);
/*
* Comments: 广
* Param char * pData:
* Param SIZE_T size:
* @Return void:
*/
void BroadCast(LPCVOID pData,SIZE_T size, int nLevel = 0, int nCircle = 0);
void BroadCastExceptSelf(LPCVOID pData,SIZE_T size,unsigned int nMyId);
//向所有帮派玩家广播一个消息
void BroadCastByMsgId(int nMsgId);
/*
* Comments:
* Param char * pData:
* Param SIZE_T size:
* @Return void:
*/
void GuildGroupBroadCast(LPCVOID pData,SIZE_T size);
//向行会频道广播消息
void BroadCastMsgInGuildChannel(char* szMsg, int nLevel = 0, int nCircle = 0);
/*
* Comments: 线广
* Param LPCVOID lpData:
* Param SIZE_T dwSize:
* @Return void:
*/
inline void SendData(LPCVOID lpData, SIZE_T dwSize)
{
BroadCast(lpData, dwSize);
}
/*
* Comments:
* @Return void:
*/
void NotifyUpdateGuildInfo();
void NotifyGuildSimpleInfo();
void NotifyGuildDonateData();
void NotifyGuildTreeBackCoin();
//提醒行会成员的客户端更新仓库
void NotifyUpdateDepot();
//提醒行会弹劾发生
void NotifyImpeachMember(LPCTSTR strPosName, ACTORNAME strOldActorName, ACTORNAME strNewActorName);
//发送求救信息
void SendActorHelp(LPCSTR nName,int nSceneId,int x,int y);
/*
* Comments:
* Param INT_PTR sType:
* Param INT_PTR sCount:
* Param bool sConsume:
* @Return void:
*/
bool BcanUpGuildSkillLevel(CActor* pActor,int sType,int sCount,bool sConsume);
/*
* Comments:
* Param INT_PTR sType:
* Param INT_PTR sCount:
* Param bool sConsume:
* @Return void:
*/
bool DecountUpGuildSkill(int sType,int sCount,bool sConsume);
//保存帮会技能信息到数据库
void SaveDbGuildSkill(CActor* pActor,int skillId,int skillLevel);
//设置挑战副本的句柄
void SetBossChanllengeHandle(unsigned int bHandle){m_BossChanllengeHandle = bHandle;}
//获得帮派副本句柄
unsigned int GeBossChanllengeHandle() {return m_BossChanllengeHandle;}
//设置行会镖车的句柄
void SetGuildDartHandle(double nHandle) {m_GuildDartHandle = nHandle;}
//返回行会镖车的句柄
double GetGuildDartHandle() {return m_GuildDartHandle;}
//设置行会镖车的到期时间
void SetGuildExipredTime(int nValue) {m_GuildBiaoCheExpriedTime = nValue;}
public:
CGuild();
~CGuild();
/*
* Comments:,
* Param CActor * pActor:pActor为NULL线
* Param nType:,
* @Return VOID:
*/
VOID AddMemberToList(CActor* pActor,INT_PTR nGuildPos=smGuildCommon);
//处理未在线申请添加成员
VOID AddMemberToList(ApplyList* pApply,INT_PTR nGuildPos = smGuildCommon);
void SetMemberOnline(CActor* pActor);
VOID InitGuild(CActor* pActor);
//获得帮派成员的数量
inline INT_PTR GetMemberCount()
{
return m_ActorOffLine.size();
}
//设置帮派成员的阵营(某场景之中才算)
void SetMemberCamp(int nCampId, int nScendId);
/*
* Comments:线buff
* Param nScenceId:0-
* @Return void:
*/
void AddMemberBuffById(int nBuffId, int nScenceId=0);
void DelMemberBuffById(int nBuffId);
/*
* Comments:
* @Return int INT_PTR:
*/
int GetMaxMemberCount();
/*
* Comments:,使
* @Return INT_PTR:
*/
INT_PTR MaxGuildPosCount(int nGuildPos);
/*
* Comments:,使
* @Return int INT_PTR:
*/
int GetMaxTkCount();
/*
* Comments:
* @Return VOID:
*/
VOID Save();
/*
* Comments:
* @Return VOID:
*/
VOID SaveGuildMember(ActorCommonNode& actor);
/*
* Comments:
* Param InterMsg Msg:
* @Return BOOL:TRUE表示加入成功
*/
BOOL AddInterMsg(InterMsg Msg);
/*
* Comments:
* Param InterMsg Msg:
* @Return BOOL:TRUE表示有
*/
BOOL FindAndDeleteInterMsg(InterMsg& Msg);
BOOL FindAndInterMsg(InterMsg& Msg);
/*
* Comments:ActorOffLine中查找到这个角色handle
* Param nActorid:id
* Param EntityHandle hHandle:handle
* @Return VOID:
*/
VOID FindAndSetHandle(unsigned int nActorid,EntityHandle hHandle);
/*
* Comments:id查找成员节点ActorOffLine列表采用排序存储
* Param INT_PTR nActor:
* @Return ActorCommonNode*:
*/
ActorCommonNode* FindMember(unsigned int nActorid);
//根据姓名查找
ActorCommonNode* FindMemberByName(const char* nName);
//根据角色id获得角色名称
char* FindGuildMemberName(unsigned int nActorid);
/*
* Comments:ActorCommonNode中线线线
* ActorCommonNode里面的数据了
* 线
* Param CActor * pActor:
* Param ActorCommonNode * pNode:
* @Return VOID:
*/
VOID UpdateActorData(CActor* pActor,ActorCommonNode* pNode);
VOID UpdateActorData(CJoinGuildApply* pApply,ActorCommonNode* pNode);
void AddMember(ActorCommonNode& pNode);
/*
* Comments:ActorCommonNode中线线线
* ActorCommonNode里面的数据了
* Param ApplyList * pActor:
* Param ActorCommonNode * pNode:
* @Return VOID:
*/
VOID UpdateActorData(ApplyList* pApply,ActorCommonNode* pNode);
/*
* Comments:
* Param int nGid:id
* Param int nactorId:id
* Param int type: 1 2 3
* @Return VOID:
*/
VOID DealGuildApply(unsigned int nGid, unsigned int nactorId, int type);
/*
* Comments:
* Param nActoridid
* Param CActor * pActor:线线pActor为NULL
* Param ActorCommonNode * pNode:pActor为NULL
* Param boType:TRUEFALSE,nZZNext(,
* @Return VOID:
*/
VOID DeleteMember(unsigned int nActorid,CActor* pActor,ActorCommonNode* pNode,BOOL boType);
/*
* Comments:线线
* Param EntityHandle & hHandle:
* @Return VOID:
*/
VOID DeleteOnLineList(EntityHandle& hHandle);
/*
* Comments:
* Param int nGuildId:id
* @Return VOID:
*/
VOID AddWarGuild(unsigned int nGuildId,CGuild* pGuild);
/*
* Comments:
* Param int nGuildId:id
* @Return VOID:
*/
VOID AddUnionWarGuild(unsigned int nGuildId,CGuild* pGuild);
/*
*/
TAGGUILDBUILD* GetBuildByType(int type) { return NULL;}
/*
* Comments:
* Param int nOtherId:id
* @Return int:tagWarStatus的定义
*/
int GetRelationShipInWar(unsigned int nGuildId);
//获取下次可以宣战的时间
int GetCanWarNextTime(unsigned int nGuildId);
/*
* Comments:
* Param CActor * pActor:
* @Return VOID:
*/
VOID SendWarGuildList(CActor* pActor);
/*
* Comments:
* @Return VOID:
*/
VOID SendWarGuildListToAllMember();
/*
* Comments: 线
* @Return VOID:
*/
VOID UpdateGuildMemberGuildLevelProperty();
//更新名称显示
void UpdateActorShowName();
/*
* Comments:
* @Return VOID:
*/
void SendGuildSkillToAllMember(int skillId,int skillLevel);
/*
* Comments:,SendWarGuildList比较接近
* @Return VOID:
*/
VOID SendWarList(CActor* pActor);
/*
* Comments:
* @Return VOID:
*/
VOID SendWarHistory(CActor* pActor);
/*
* Comments:
* @Return VOID:
*/
VOID CheckWarList();
/*
* Comments:PK的数目
* Param INT_PTR nGid:
* Param INT_PTR nCount:,1
* @Return VOID:
*/
VOID AddPkCount(INT_PTR nGid,INT_PTR nCount = 1);
/*
* Comments:
* Param INT_PTR nGid:id
* Param INT_PTR nCount:
* @Return VOID:
*/
VOID AddDieCount(INT_PTR nGid, INT_PTR nCount = 1);
/*
* Comments:
* Param int nTime:
* Param char* nRecord:
* @Return VOID:
*/
void AddEventRecord(char* nRecord,int nEventId,int nParam1,int nParam2,int nParam3,char* nParam4,char* nParam5);
//保存到数据库
void SaveGuildEventtoDb(int Index,int nType);
void SaveAllGuildEvent();
//保存仓库物品到数据库
void SaveGuildDepoItem();
//沙巴克战时更新成员颜色
void UpdateGuildActorNameInSbk();
//保存仓库数据
void SaveDepotData();
//保存仓库记录
void SaveGuildDepotRecord();
//组装帮派消息
void BuildUpEventRecord(int nIndex,int nEventId,int nParam1,int nParam2,int nParam3,char* szParam4,char* szParam5);
//获得职位名称
char* GetGuiPosName(int posType);
//获取帮派名称
inline LPCTSTR GetGuildName(){return m_sGuildname;}
//获取帮派id
inline unsigned int GetGuildId(){return m_nGid;}
//根据类型获取名字
char* GetCoinname(int nType);
//根据仓库记录的索引获取记录
char* GetDepotRecordMsg(int nIndex,char* sText);
//获取召唤斗魂的标志
bool GetUseGuildBoss() {return m_UseGuildBoss;}
//设置召唤斗魂的标志
void SetUseGuildBoss(bool value) {m_UseGuildBoss = value;}
//帮派成员离开或加入
void SendAddOrLeftMember(CActor* pActor,BYTE nType,unsigned int nActorId,char* nName);
//设置语音频道id
void SetYyType(int nYtype,bool bSave = true)
{
if(bSave == true)
m_boUpdateTime= bSave;
m_sYyType = nYtype;
}
inline int GetYType() {return m_sYyType;}
//设置语音频道宣言
void SetYyMemo(LPCSTR sIn,bool boSave)
{
_asncpytA(m_sYyMemo,sIn);
if (boSave)
m_boUpdateTime = boSave;
}
inline LPCSTR GetNextUpdateInmemo() {return m_sNextUpdateInMemo;}
void SetNextUpdateInmemo(LPCSTR sIn)
{
_asncpytA(m_sNextUpdateInMemo, sIn);
}
void SetYyGridCompere(LPCSTR sGridName)
{
_asncpytA(m_sYyGrilCompere, sGridName);
}
inline LPCSTR GetYyGridCompere()
{
return m_sYyGrilCompere;
}
inline LPCSTR GetYyMemo() {return m_sYyMemo;}
//gm改变帮主
void GmChangeLeader(const char* nName);
void SetCertification(int nCertification)
{
m_nCertification = nCertification;
m_boUpdateTime = true;
}
int GetCertification()
{
return m_nCertification;
}
inline void SetQqGroupId(LPCSTR nqGroupId,bool boSave)
{
_asncpytA(m_sQqGroupId,nqGroupId);
if (boSave)
m_boUpdateTime = boSave;
}
inline LPCSTR GetQqGroupId() {return m_sQqGroupId;}
inline void SetYyGroupId(LPCSTR strYGroupId,bool boSave)
{
_asncpytA(m_sYyGroupId,strYGroupId);
if (boSave)
m_boUpdateTime = boSave;
}
inline LPCSTR GetYyGroupId() {return m_sYyGroupId;}
//根据行会id获取关系
int GetRelationShipForId(unsigned int nGuildId);
//根据行会id设置关系
void SetRelationShipWithId(unsigned int nGuildId,int nType);
//发送给行会有其他行会请求联盟
bool SendWarUnionMsgToActor(unsigned int nGuildId,unsigned int nActorId,LPCSTR nGuildName);
//客户端收到这个消息,更新行会列表
void UpdateGuildList();
//有人申请加入行会
void SendActorApplyToGuild();
//发送打开行会集结令的面板
bool SendOpenBuildFormToClient(CActor* pActor);
//行会开启buff
void AddGuildBuff(int nBuffType,int nGroupID,double dValue,int nTimes, int nInterval,char * buffName,bool timeOverlay =false, void *pGiver=0, int param = 0);
//沙巴克城主开启buff
void SbkMasterOpenBuff(int nBuffType,int nGroupID,double dValue,int nTimes, int nInterval,char * buffName,bool timeOverlay =false, void *pGiver=0, int param = 0);
//给盟友加buff
void AddBuffToUnion(int nBuffType,int nGroupID,double dValue,int nTimes, int nInterval,char * buffName,bool timeOverlay =false, void *pGiver=0, int param = 0);
/* 通过物品系列号查找用户物品对象
* boRemove
* @return
*/
int FindItemIndex(const CUserItem::ItemSeries series);
//群发封号列表
void SendTitleToAll();
//群发行会建筑等级的变化
void OnSendGuildBuildingChange(int nIndex,int nLevel);
//发送行会日志
void SendGuildEventLog(CActor* pActor);
//下发行会挑战的结果
void SendGuildChanllengeResult(unsigned int nActorId,int nType,int nResult);
//有封号改变群发
void SendChangeTitleToAll(unsigned int nActorId,BYTE nIndex);
//是否正在宣战等
bool OnGuildWar();
//获取是否开启活动勇闯毒潭状态
int GetToxicFreshTimes() { return m_ToxicFreshTimes;}
//设置开启勇闯毒潭状态
void SetToxicFreshTimes(int nTimes) {m_ToxicFreshTimes = nTimes;}
//设置在启勇闯毒潭中击杀的个数
void SetkilToxicNum(int nValue) {m_KillToxicNum = nValue;}
//获取在启勇闯毒潭中击杀的个数
int GetkillToxicNum() {return m_KillToxicNum;}
//获取行会仓库的物品数量
int GetGuildDepotCount();
//获取行会仓库的最大页数
int GetGuildDepotPageMax();
int GetGuildDepotGridsCount()
{
return GetGuildDepotPageMax() * GUILDDEPOT_PAGE_GRIDS;
}
//处理等待审核的兑换请求
void ProcDepotItemInExchangeCheck();
public: //沙城战
//更新沙巴克的头衔
void UpdateSbkGuildTitle(bool bFlag, bool boChangeNewTitle = true);
//处理sbk 成就
void UpdateSbkGuidAchieve();
//【影魅合服】发送合服活动连续占领三次的行会奖励
void SendCombineSbk3Award();
/*获取行会的职位人数(实时计算)
nGuildPos:1-2-
*/
int GetGuildPosCount(int nGuildPos);
//添加到行会贡献的列表里
void AddToGuildGxList(unsigned int nActorId,int nGx);
//获取贡献排名
int GetGuildGxIndex(unsigned int nActorId);
//获取行会已挑战的次数
int GetGuildChallengeTimes() {return m_GuildChangleTimes;}
//设置行会挑战的次数
void SetGuildChallengeTimes(int nTimes) {m_boUpdateTime = true; m_GuildChangleTimes = nTimes;}
//设置行会下次挑战的时间
void SetGuildNextChallengeTime(int nTime) {m_boUpdateTime = true; m_ChanlgeLeftTimes = nTime;}
//获取行会下次挑战的时间
int GetGuildNextChallengeTime() {return m_ChanlgeLeftTimes;}
//设置行会封印兽碑的等级
void SetGuildBossLevel(int nLevel) {m_boUpdateTime = true; m_GuildBossLevel = nLevel;}
//获得行会封印兽碑
int GetGuildBossLevel() {return m_GuildBossLevel;}
/// 获取建筑的等级
/// @param nType GuildBuildType
int GetGuildbuildingLev(int nType);
//设置建筑的等级
void ChangeGuildBuildingLev(int nType,int nValue);
//获取建筑的剩余cd
int GetGuildBuildingCdTime() {return m_UpLeftTime;}
//设置建筑的剩余cd
void SetGuildBuildingCdTime(int nTime);
//下发行会建筑冷却时间
void SendGuildBuildCdTime();
//下发行会升级材料信息
void SendGuildUpgradeItem();
//计算建筑评分
int CalcGuildBuildingSorce();
//从在线中获取最高战力的那一个
unsigned int GetTopBattleFromOnLineList();
//自动切换行会掌门
void AutoChangeLeader( unsigned int nLeaderId );
/*弹劾掌门,不需要了
void ImpeachLeader();
*/
void GetGuildMemberBasicData(unsigned int nActordId, int& nSex, int& nJob);
char* GetGuildTitleName(int nGuildPos);
void GetUpgradeItemCount(int& nItemNum1, int& nItemNum2, int& nItemNum3);
void SetUpgradeItemCount(int nItemNum1, int nItemNum2, int nItemNum3);
int GetAutoJoinLevel();
void SetAutoJoinLevel(int nNewLevel);
//每日数据处理
void ProcDailyData();
//添加申请
int AddJoinApply(CActor* pActor);
int DealApplyByActorId(unsigned int nActorId, int nResult);
static void GetGuildEventLog(GUILDEVENTRECOUD &stEventRecord, int nGuildEventId, int nParam1, int nParam2, int nParam3,
char* szParam4, char* szParam5);
bool CheckIsApply(unsigned int nActorId)
{
std::map<unsigned int, ApplyList>::iterator it = m_ApplyList.find(nActorId);
if(it != m_ApplyList.end())
{
return true;
}
return false;
}
//申请列表大小
int ApplySize(){ return m_ApplyList.size();}
void NotifyGuildWarList();
void AfterDonateDealGuild();
bool static decrease(const ActorCommonNode &FirstActor, const ActorCommonNode &SecondActor);
void SetCallMemInfo(unsigned int nActorId, int nSceneId, int nX, int nY, unsigned int nExpireTime)
{
m_CallInfo = std::make_tuple(nActorId, nSceneId, nX, nY, nExpireTime);
}
std::tuple<unsigned int,int,int,int,unsigned int>
GetCallMemInfo()
{
return m_CallInfo;
}
private:
//行会升级
void OnGuildLevelUp();
void ClearGuildDepotItemExchange( unsigned int nActorId );
public:
unsigned int m_nGid; //帮派的id
UINT m_nRank; //本帮派的排名
char m_sGuildname[32];//帮派的名字
// ACTORNAME m_sFoundname;//创始人的名字
ACTORNAME m_sLeaderName; //会长昵称
unsigned int m_nLeaderId; //会长id 用这个id
ACTORNAME m_sQqGroupId; //qq群id
ACTORNAME m_sYyGroupId; //语音频道id
ACTORNAME m_sYyGrilCompere; //美女主播
int m_nBidCoin; //竞价数量
int m_CreateTime; //行会创建的时间
// ActorCommonNode* m_pLeader; //帮主 ---不用了
int m_nSecLeaderCount; //当前副帮主的个数
int m_GuildTkCount; //堂主的个数
int m_GuildEliteCount; //精英的个数
int m_AddMemberFlag; //0 需要审核 1 自动添加
//不在线的成员名字,这个列表的成员不会被删除
//所有帮众的列表如果上线了hActorHandle会设置成新的handle否则就是0
// ActorNodeList m_ActorOffLine;
std::vector<ActorCommonNode> m_ActorOffLine;
//在线的成员
CEntityList m_ActorOnLine;
GUILDEVENTRECOUD m_EventRecord[MAX_EVENTCOUNT]; //记录帮派事件
std::map<unsigned int,ApplyList> m_ApplyList; //申请列表
int m_EventCount; //当前记录的事件个数
CVector<WarRelationData> m_WarList; //行会关系、状态帮派列表
CVector<INTERRELATIONMSG> m_UiounMsgList; //请求为联盟的列表
CVector<GUILDDEPOTITEM> m_GuildDepotBag; //行会仓库
CVector<GUILDDEPOTMSG> m_GuildDepotRecord; //行会仓库操作记录
CVector<GUILDMEMGXLIST> m_GuildMemGxList; //行会贡献排名列表
CVector<TAGGUILDBUILD> m_GuildBuildList; //行会建筑
bool m_bSaveDepotRecord; //是否需要保存行会仓库与仓库记录
int m_TileUpdateTime; //封号修改的时间
GUIlDTITLES m_GuildTitles[7]; //封号修改
int m_SignUpFlag; //今天是否报名 0 未报名 1 已报名
int m_nCertification; //官方认证(拉人)
int m_ToxicFreshTimes; //是否开启勇闯毒潭活动
int m_KillToxicNum; //在勇闯毒潭中击杀怪物的个数
//////////////////////////////////////////////////////
//堂主的列表
BYTE m_nZytype; //所属阵营
//0 已解散1正常
bool m_boStatus;
bool m_boUpdateTime;//更新数据的时间如果0或者小于现在时间表示无须更新
CVector<WarGuildHistory> m_WarListHistory;
//以下是帮派内部的消息,比如邀请、申请加入等
GuildInterMsgList m_InterMsgList;
CVector<GUILDSKILLS> m_GuildSkillList; //帮派等级的列表
//因为下发给客户端的接口,需要返回申请加入的消息的个数,而队列中的消息是包含了申请加入的消息和邀请加入的消息,所以用这个变量专门来保存这个数量
int m_nJoinMsgCount;
WORD m_nIcon;
bool m_UseGuildBoss; //是否正在召唤斗魂
double m_GuildDartHandle; //行会镖车的句柄
int m_GuildBiaoCheExpriedTime; //行会镖车到期时间
int m_MainHallLev; //主殿的等级
int m_ExerciseRoomlv; //练功房
int m_AssemblyHallLv; //议事厅
int m_GuildShopLev; //行会商店等级
int m_GuildBossLevel; //行会封印兽碑的等级
int m_MoonBoxLevel; //月光宝盒的等级
int m_GuildChangleTimes; //行会封印兽碑挑战次数
int m_ChanlgeLeftTimes; //行会封印兽碑下次挑战的时间
int m_UpLeftTime; //升级的剩余时间
unsigned int m_BossChanllengeHandle; //挑战的封印兽碑的句柄
BYTE m_btTechLevel; //行会科技等级
BYTE m_btDragonThunderLevel; ///< 震天龙弹等级
WORD m_nThunderPower; ///< 震天龙弹填充进度
WORD m_nFillThunderTimes; ///< 震天龙弹填充次数
unsigned int m_nCallTime; //召集的时间
unsigned int m_nNewInMemoUpdateTime; //下次更新m_sNextUpdateInMemo的时间
int m_nAutoJoinLevel; //允许玩家自动加入帮派的等级
int m_nExchangeCheckCircleMin; //需要兑换审核的最低转数
//具体行会升级道具id见guild.txt
int m_nUpgradeItemNum1; //行会升级道具1的数量
int m_nUpgradeItemNum2; //行会升级道具2的数量
int m_nUpgradeItemNum3; //行会升级道具3的数量
std::tuple<unsigned int,int,int,int,unsigned int> m_CallInfo; //召唤者id场景idx, y, 过期时间
private:
WORD m_nLevel; // 等级 这几个值改变的时候要设置nUpdateTime以保存到数据库中
int m_GuildCoin; //行会资金
int m_nDailyGuildCoinDonated; //行会成员每天捐献的资金
char m_sInMemo[MAXMEMOCOUNT]; //内部公告信息
char m_sOutMemo[MAXMEMOCOUNT]; //外部公告信息
char m_sNextUpdateInMemo[MAXMEMOCOUNT];//下次更新内部公告消息
char m_sGroupMemo[MAXMEMOCOUNT]; //群公告
int m_sYyType; //语音频道类型
char m_sYyMemo[MAXMEMOCOUNT]; //语音频道宣言
//////////////////////////////////////////////////////////////////
int m_GuildYs; //帮派玥石
int m_nFanrong; // 繁荣度
//------------------------------行会神树-----------------------------------
public:
void GetGuildTreeData(int &nTreeLevel, int &nTreeDegree)
{
nTreeLevel = m_nGuildTreeLevel;
nTreeDegree = m_nGuildTreeDegree;
}
void SetGuildTreeData(int nTreeLevel, int nTreeDegree);
void GetGuildFruitData(int &nFruitLevel, int &nFruitDegree, int &nFruitNum)
{
nFruitLevel = m_nGuildFruitLevel;
nFruitDegree = m_nGuildFruitDegree;
nFruitNum = m_nGuildFruitNum;
}
void SetGuildFruitData(int nFruitLevel, int nFruitDegree, int nFruitNum);
void ResetGuildTreeAndFruitByGuildLevel();
//根据行会等级获取果实最低等级
int GetGuildFruitLevelByGuildlevel();
//根据果实等级设置果实数量
int GetGuildFruitNumByFruitlevel(int nFruitLevel);
unsigned int GetGuildTreeFruitTime()
{
return m_nGuildTreeFruitTime;
}
void SetGuildTreeFruitTime(unsigned int nFruitTime)
{
if( nFruitTime >= 0 )
{
m_nGuildTreeFruitTime = nFruitTime;
m_boUpdateTime = true;
}
}
//把神树设置为幼苗期
void ProcGuildTreeToSapling(unsigned int nNow);
//行会神树反馈行会资金
void ProcGuildTreeBackCoin();
void NotifyTreeAndFruitData(int nType);
const GuildFruitLevel* GetGuildFruitLevel(int nFruitLevel);
public:
int m_nGuildTreeLevel; //行会神树等级(不使用)
int m_nGuildTreeDegree; //行会神树进度,即神树精华(不使用)
int m_nGuildFruitLevel; //行会神树果实等级(品质)(不使用)
int m_nGuildFruitDegree; //行会神树果实进度(亮灯)(不使用)
int m_nGuildFruitNum; //行会神树果实进度数量(不使用)
unsigned int m_nGuildTreeFruitTime; //行会神树进入成熟期的时间(不使用)
unsigned int m_nGuildTreeBackCoin; //行会神树反馈的资金(不使用)
//------------------------行会任务-----------------------------------------
public:
//行会任务
void OnGuildTask(int nTaskType, int nTaskObjId, int nAddTaskSche, int nParam=-1);
void RefreshGuildTask(bool bForce=false);
void GetGuildTaskData(int &nTaskId, int &nTaskSche);
int GetDailyGuildCoinDonated()
{
return m_nDailyGuildCoinDonated;
}
void SetDailyGuildCoinDonated(int nNewGuildCoin)
{
m_nDailyGuildCoinDonated = nNewGuildCoin;
m_boUpdateTime = true;
}
void AddDailyGuildCoinDonated(int nAddGuildCoin)
{
m_nDailyGuildCoinDonated += nAddGuildCoin;
m_boUpdateTime = true;
}
int GetGuildTaskObjId(int nTaskId);
int GetGuildTaskObjNum(int nTaskId);
void SetGuildTaskId(int nTaskId)
{
if( nTaskId > 0 )
{
m_nGuildTaskId = nTaskId;
}
}
void SetGuildTaskSche(int nTaskSche)
{
if( nTaskSche > 0 )
{
m_nGuildTaskSche = nTaskSche;
}
}
private:
short GetGuildTaskType(int nTaskId);
const GuildTask* GetGuildTaskById(int nTaskId);
public:
int m_nGuildTaskId; //行会任务ID
int m_nGuildTaskSche; //行会任务进度
//------------------------攻城战-----------------------------------------
public:
void NotifyGuildSiegeCmdPanel(unsigned char nFlag);
void SetGuildSiegeCommand(CActor* pActor, int nCmdIdx, int nCmdMsgIdx);
void SendGuildSiegeCmdPanel(CActor* pActor, unsigned char nFlag);
void SendGuildSiegeCommand(CActor* pActor);
unsigned int GetGuildSiegeCommandTime()
{
return m_nGuildSiegeCmdTime;
}
private:
void NotifyGuildSiegeCommand();
private:
int m_nGuildSiegeCmdIdx; //下发指令的
int m_nGuildSiegeCmdMsgIdx; //下发指令的相关消息(随机一条)
int m_nGuildSiegeCmdSceneId; //帮主下发指令时的场景
int m_nGuildSiegeCmdPosX; //帮主下发指令时的x、y坐标
int m_nGuildSiegeCmdPosY;
unsigned int m_nGuildSiegeCmdTime; //下发指令的时间
DECLARE_OBJECT_COUNTER(CGuild)
public:
//跨服相关
void SendSbkGuildRankAward(int nRankId);
void SendSbkGuildAward();
};