Files

249 lines
8.0 KiB
C
Raw Permalink Normal View History

2025-01-09 17:45:40 +08:00
#pragma once
static const char *szSupplyBatBeginTime = "supplyBatBeginTime"; //布局争夺战开启时间
//记录击杀玩家的相关时间记录
typedef struct tagKillerData
{
unsigned int nKillerActorId; //击杀者的ActorId
unsigned int nBeKilledActorId; //被击杀者id
unsigned int nKillGetExploitTime;//击杀获得战绩时间击杀同一目标在30分钟内只能获得一次战绩奖励。
tagKillerData()
{
memset(this,0, sizeof(*this));
}
}KillerData;
class CMiscMgr:
public CComponent
{
public:
CMiscMgr();
~CMiscMgr();
public:
/*
* Comments:
* @Return VOID:
*/
VOID RunOne(CMiniDateTime& minidate,TICKCOUNT tick);
VOID Init();
/*
* Comments:
* Param LPCTSTR sFileName:
* @Return bool:
*/
bool HotUpdateScript(LPCTSTR sFileName);
//************************************
// Method: KickAllActorByLevel 后台命令T人与禁用角色
// FullName: CMiscMgr::KickAllActorByLevel
// Access: public
// Returns: bool
// Qualifier:
// Parameter: int nCircle 转数
// Parameter: int nLevel 等级
// Parameter: bool boDisApear 是否删除
//************************************
bool KickAllActorByLevel(int nCircle, int nLevel, bool boDisApear = false);
/*
* Comments:
* Param int nStartHour:
* Param int nStartMin:
* Param int nStartSec:
* Param int nEndHour:
* Param int nEndMin:
* Param int nEndSec:
* @Return bool:truefalse
*/
bool isInTimeRange(int nStartHour,int nStartMin,int nStartSec,int nEndHour,int nEndMin,int nEndSec);
//************************************
// Method: isInDateRange 判断是否在指定时间
// FullName: CMiscMgr::isInDateRange
// Access: public
// Returns: bool
// Qualifier:
// Parameter: int nStartYear
// Parameter: int nStartMonth
// Parameter: int nStartDay
// Parameter: int nStartHour
// Parameter: int nStartMin
// Parameter: int nStartSec
// Parameter: int nEndYear
// Parameter: int nEndMonth
// Parameter: int nEndDay
// Parameter: int nEndHour
// Parameter: int nEndMin
// Parameter: int nEndSec
//************************************
bool isInDateRange(int nStartYear,int nStartMonth,int nStartDay,int nStartHour,int nStartMin,int nStartSec,int nEndYear,int nEndMonth,int nEndDay,int nEndHour,int nEndMin,int nEndSec);
//************************************
// Method: DoScriptFunction 调用脚本
// FullName: CMiscMgr::DoScriptFunction
// Access: public
// Returns: void
// Qualifier:
// Parameter: LPCTSTR szFuncName 方法名
//************************************
void DoScriptFunction(LPCTSTR szFuncName);
//************************************
// Method: DoScriptFunction 调用脚本
// FullName: CMiscMgr::DoScriptFunction
// Access: public
// Returns: void
// Qualifier:
// Parameter: LPCTSTR szFuncName 方法名
// Parameter: int nFlag 参数
//************************************
void DoScriptFunction(LPCTSTR szFuncName, int nFlag);
//************************************
// Method: DoScriptFunction 调用脚本
// FullName: CMiscMgr::DoScriptFunction
// Access: public
// Returns: void
// Qualifier:
// Parameter: CActor * pActor 人物指针
// Parameter: LPCTSTR szFuncName 方法名
//************************************
void DoScriptFunction(CActor* pActor, LPCTSTR szFuncName);
//************************************
// Method: DoScriptFunction 调用脚本
// FullName: CMiscMgr::DoScriptFunction
// Access: public
// Returns: void
// Qualifier:
// Parameter: CActor * pActor 人物指针
// Parameter: LPCTSTR szFuncName 方法名
// Parameter: int nFlag 参数
//************************************
void DoScriptFunction(CActor* pActor, LPCTSTR szFuncName, int nFlag);
//************************************
// Method: DoScriptFunction
// FullName: CMiscMgr::DoScriptFunction 调用脚本
// Access: public
// Returns: void
// Qualifier:
// Parameter: CActor * pActor 人物指针
// Parameter: LPCTSTR szFuncName 方法名
// Parameter: int nFlag 参数一
// Parameter: int nParam 参数二
//************************************
void DoScriptFunction(CActor* pActor, LPCTSTR szFuncName, int nFlag, int nParam, int nParam2 = 0);
//************************************
// Method: GetDaysBeforeCombineServer 获取合区前第几天
// FullName: CMiscMgr::GetDaysBeforeCombineServer
// Access: public
// Returns: int 合区前第几天
// Qualifier:
//************************************
int GetDaysBeforeCombineServer();
void SetServerTempCombineTime(unsigned int time, unsigned int beginTime)
{
m_serverTempCombineTime = time;
m_serverBenginCombineTime = beginTime;
}
unsigned int GetServerTempCombineTime(unsigned int &beginTime)
{
beginTime = m_serverBenginCombineTime;
return m_serverTempCombineTime;
}
/*
* Comments:nModule的随机数
* Param int nModule:
* @Return int: ,0nModule-1
*/
unsigned int getRandomNum( int nModule)
{
if( nModule <=0 )return 0;
return ( (unsigned int) wrandvalue() + (unsigned int)_getTickCount() ) % (unsigned int) nModule ;
}
int getRandomNum( int nMin, int nMax)
{
int nModule = nMax - nMin;
int nMid = (nMax - nMin)/2;
int nNum = getRandomNum( nModule);
return nNum - nMid;
}
//是否互为好友
bool IsFriendEach(CActor* pActor1, CActor* pActor2);
CScene* GetScenePtrById( int nSceneId);
//获取系统静态变量
INT_PTR GetSystemStaticVarValue(LPCTSTR szVarName,INT_PTR nDefaultValue=0);
//设置系统静态变量
void SetSystemStaticVarValue(LPCTSTR szVarName, INT_PTR nValue);
//获取系统动态变量
INT_PTR GetSystemDyanmicVarValue(LPCTSTR szVarName,INT_PTR nDefaultValue);
//获取某个排行榜的达到限额要求的数量
int GetRankLimitCount(CRanking *pRanking, int nLimit=0);
/*
* Comments:
* Param unsigned int nId: ID <=
* Param unsigned int nOverTime:
* Param bool bClearRank:
* @Return int: ID
*/
int SetCompensateVar(int nId, unsigned int nBeginTime=0, unsigned int nLastTime=0,
int nLevelLimit=0, char* szTitle="", bool bClearRank=false);
/*
* Comments:
* Param unsigned int nId: ID
* Param unsigned int nOverTime:
* @Return bool:
*/
void GetCompensateVar(int &nId, unsigned int &nBeginTime, unsigned int &nOverTime);
char* GetCompensateTitle();
bool IsNearBySceneNpc(CActor *pActor, int nSceneId, int nNpcId );
//后台禁止玩家
bool OnBackForbidUserMis(int Actorid, INT_PTR nDuration);
bool OnBackUnForbidUserMis(int Actorid);
bool OnBackClearAllMsg();//清理所有消息
// 后台 添加/删除自定义称号
bool OnBackAddCustomTitle(unsigned int nActorId, int nCustomTitleId);
bool OnBackDelCustomTitle(unsigned int nActorId, int nCustomTitleId);
VOID OnDbReturnData(INT_PTR nCmd,char * data,SIZE_T size);
public:
//增加击杀记录
KillerData* AddKillerData(unsigned int nKillerActorId, unsigned int nBeKilledActorId);
KillerData* GetKillData(unsigned int nKillerActorId, unsigned int nBeKilledActorId);
private:
void CheckScriptTimer(CMiniDateTime& minidate,TICKCOUNT tick); //定时检测定时器
private:
CMiniDateTime m_tomorrow; //明日凌晨的时间
CMiniDateTime m_sendlogout; //发送登出日志时间
CMiniDateTime m_sendlogin; //发送登入日志时间
CTimer<60000> m_1minuteTimer; //1分钟的定时器
CTimer<300000> m_5minuteTimer; //5分钟的定时器
TICKCOUNT m_nBackStageKillActorTime;//后台使用踢人与禁用功能的时间
unsigned int m_serverTempCombineTime; // 服务器合区时间(用于后台设置开启某些系统用)
unsigned int m_serverBenginCombineTime; // 服务器开启合区时间
CVector<KillerData> m_killerData;//记录击杀时间
};