Files
aixianling 5c9f1dae4a init
2025-01-09 17:45:40 +08:00

249 lines
8.0 KiB
C++
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#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:如果在这个时间段内返回true否则false
*/
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: 返回取模后的随机数,从0到nModule-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;//记录击杀时间
};