📄 nationsys.cpp
字号:
if (g_wMapServerPort<BASE_NEW_WARFIELD_PORT||g_wMapServerPort>=(BASE_NEW_WARFIELD_PORT+MAX_NEW_WARFIELD))
return false;
return true;
}
int CheckJoinReinforce(bool type=true) // 老馆傈里 true
{
if (!type)
return 0;
if ((g_pWarfieldStatus[0].Possession==g_pWarfieldStatus[1].Possession)&&
(g_pWarfieldStatus[1].Possession==g_pWarfieldStatus[2].Possession))
{
return g_pWarfieldStatus[0].Possession;
}
return 0;
}
int GetYL_JoinNation() // 011020 LTS
{
if ((g_pWarfieldStatus[0].Possession==g_pWarfieldStatus[1].Possession)&&
(g_pWarfieldStatus[1].Possession==g_pWarfieldStatus[2].Possession))
{
if (g_pWarfieldStatus[0].Possession==NW_BY) return NW_ZY;
else return NW_BY;
}
return 0;
}
// Very often call Function
int CheckNationStatus(const int type,const int StatusNo) // type 0 : EveryServer 1 : NationManageServer
{
int WarfieldNo=-1;
if (type)
{
if (g_pNation->GetWarfieldStatus(0)==StatusNo) WarfieldNo=0;
if (g_pNation->GetWarfieldStatus(1)==StatusNo) WarfieldNo=1;
if (g_pNation->GetWarfieldStatus(2)==StatusNo) WarfieldNo=2;
}
else
{
if (g_pWarfieldStatus[0].Status==StatusNo) WarfieldNo=0;
if (g_pWarfieldStatus[1].Status==StatusNo) WarfieldNo=1;
if (g_pWarfieldStatus[2].Status==StatusNo) WarfieldNo=2;
}
return WarfieldNo;
}
bool CheckWarLoopProcess() // 傈里 风橇啊 柳青登绰瘤 犬牢茄促.
{
if (isNationManageServer())
{
if (g_pNation->GetWarfieldStatus(0)>NW_PEACE) return true;
if (g_pNation->GetWarfieldStatus(1)>NW_PEACE) return true;
if (g_pNation->GetWarfieldStatus(2)>NW_PEACE) return true;
if (g_pNation->GetNewWarfieldStatus(0)>NW_PEACE) return true;
}
else
{
if (g_pWarfieldStatus[0].Status>NW_PEACE) return true;
if (g_pWarfieldStatus[1].Status>NW_PEACE) return true;
if (g_pWarfieldStatus[2].Status>NW_PEACE) return true;
if (g_pNewWarfieldStatus[0]>NW_PEACE) return true;
}
return false;
}
int ReturnWarfieldNoByWarLoopProcess() // CheckWarLoopProcess客 街栏肺 静牢促.. 器窃秦档 等促..
{
if (isNationManageServer())
{
if (g_pNation->GetWarfieldStatus(0)>NW_PEACE) return 0;
if (g_pNation->GetWarfieldStatus(1)>NW_PEACE) return 1;
if (g_pNation->GetWarfieldStatus(2)>NW_PEACE) return 2;
if (g_pNation->GetNewWarfieldStatus(0)>NW_PEACE) return 3;
}
else
{
if (g_pWarfieldStatus[0].Status>NW_PEACE) return 0;
if (g_pWarfieldStatus[1].Status>NW_PEACE) return 1;
if (g_pWarfieldStatus[2].Status>NW_PEACE) return 2;
if (g_pNewWarfieldStatus[0]>NW_PEACE) return 3;
}
return -1;
}
bool isAttacker(int WarfieldNo,t_connection c[],int cn) // 绢怕目客 叼奇辑甫 魄窜窍绰 辟芭绰 葛电 甘辑滚狼 g_pWarfieldStatus[].Possession俊 乐促.
{
int Nationality=c[cn].chrlst.name_status.nation; // 澜.. 侩捍狼 曼咯俊 蝶扼...
if (NW_YL==Nationality) // 老胶捞搁..
{
Nationality=c[cn].chrlst.NWCharacter.YL_JoinNation; //唱扼锅龋啊 朝酒柯促
}
if (g_pWarfieldStatus[WarfieldNo].Possession==Nationality) return false;
return true;
}
bool isAttacker(CHARLIST* pCaster)
{
int Nationality=pCaster->name_status.nation; // 澜.. 侩捍狼 曼咯俊 蝶扼...
if (NW_YL==Nationality) // 老胶捞搁..
{
Nationality=pCaster->NWCharacter.YL_JoinNation; //唱扼锅龋啊 朝酒柯促
}
if (g_pWarfieldStatus[g_wMapServerPort-BASE_WARFIELD_PORT].Possession==Nationality) return false;
return true;
}
bool isAttacker(int WarfieldNo,int Nation) // 老胶狼 版快 公炼扒 傍拜磊肺 魄沥阑 罐绰促.
{
if (g_pWarfieldStatus[WarfieldNo].Possession==Nation) return false;
return true;
}
bool IsWar()
{
if (isNationWarfieldServer())
{
if (g_pWarfield->GetStatus() == NW_WAR)
{
return true;//020903 lsw
}
}
if (isNewWarfieldServer())
{
if (g_pNewWarfield->GetWarfieldStatus() == NW_WAR)
{
return true;
}
}
return false;
}
bool isMySquad(CHARLIST* pCaster,CHARLIST* pTarget)
{
if (!isNationWarfieldServer()) return false;
if (g_pWarfield->GetStatus()!=NW_WAR) return false;
if (pCaster->name_status.nation==pTarget->name_status.nation) // 鞍篮 唱扼捞促
{
if (pCaster->NWCharacter.SquadNo==pTarget->NWCharacter.SquadNo) // 何措 锅龋啊 鞍促.
{
if (pCaster->NWCharacter.SquadNo!=0) return true;
}
}
return false;
}
void ClearNationWar_Exp() // LTS NEW LOCALWAR
{
SAFE_DELETE_ARRAY(g_pNationWar_Exp);
}
bool LoadNationWar_Exp() // LTS NEW LOCALWAR
{
HSTMT hStmt=NULL;
RETCODE ret;
SWORD nClos;
char query_stmt[80]={0,};
SDWORD cbValue;
int FieldCount;
int tempExpGrade;
SQLAllocStmt(hDBC,&hStmt);
wsprintf(query_stmt,"select Count(Exp_Grade) as FieldCount from NationWar_Exp");
ret=SQLExecDirect(hStmt,(UCHAR*)query_stmt,SQL_NTS);
if (ret!=SQL_SUCCESS_WITH_INFO && ret !=SQL_SUCCESS)
{
MyLog(0,"NationWar_Exp Table Query Error!!");
SQLFreeStmt(hStmt,SQL_DROP);
return false;
}
SQLNumResultCols(hStmt,&nClos);
ret=SQLFetch(hStmt);
if (ret!=SQL_SUCCESS_WITH_INFO && ret !=SQL_SUCCESS)
{
MyLog(0,"NationWar_Exp Table Fetch Error!!");
SQLFreeStmt(hStmt,SQL_DROP);
return false;
}
ret=SQLGetData(hStmt,1,SQL_C_SLONG,&FieldCount,sizeof(int),&cbValue); // 鞘靛墨款飘 备窍扁
if (ret!=SQL_SUCCESS_WITH_INFO && ret!=SQL_SUCCESS)
{
MyLog(0,"NationWar_Exp Table SQL Return Error(%d)!!",ret);
SQLFreeStmt(hStmt,SQL_DROP);
return false;
}
SQLFreeStmt(hStmt,SQL_DROP);
SQLAllocStmt(hDBC,&hStmt);
g_pNationWar_Exp=new int[FieldCount+1]; // 皋葛府 且寸 // 0何磐 矫累窍骨肺
if (!g_pNationWar_Exp)
{
MyLog(0,"Memory Allocation Error for NationWar Exp Table!!");
return false;
}
wsprintf(query_stmt,"select * from NationWar_Exp order by Exp_Grade");
ret=SQLExecDirect(hStmt,(UCHAR*)query_stmt,SQL_NTS);
if (ret!=SQL_SUCCESS_WITH_INFO && ret !=SQL_SUCCESS)
{
MyLog(0,"NationWar_Exp Table Query Error!!");
SQLFreeStmt(hStmt,SQL_DROP);
return false;
}
SQLNumResultCols(hStmt,&nClos);
ret=SQLFetch(hStmt);
if (ret!=SQL_SUCCESS_WITH_INFO && ret !=SQL_SUCCESS)
{
MyLog(0,"NationWar_Exp Table Fetch Error!!");
SQLFreeStmt(hStmt,SQL_DROP);
return false;
}
while (ret==SQL_SUCCESS)
{
ret=SQLGetData(hStmt,1,SQL_C_SLONG,&tempExpGrade,sizeof(int),&cbValue);
if (ret!=SQL_SUCCESS_WITH_INFO && ret!=SQL_SUCCESS)
{
MyLog(0,"NationWar_Exp Table SQL Return Error(%d)!!",ret);
SQLFreeStmt(hStmt,SQL_DROP);
return false;
}
ret=SQLGetData(hStmt,3,SQL_C_SLONG,&g_pNationWar_Exp[tempExpGrade],sizeof(int),&cbValue);
if (ret!=SQL_SUCCESS_WITH_INFO && ret!=SQL_SUCCESS)
{
MyLog(0,"NationWar_Exp Table SQL Return Error(%d)!!",ret);
SQLFreeStmt(hStmt,SQL_DROP);
return false;
}
ret=SQLFetch(hStmt);
}
SQLFreeStmt(hStmt,SQL_DROP);
return true;
}
void ReLoadNationData()
{
if (isNationWarfieldServer()) g_pWarfield->InitWarLoopDefine();
}
bool CanDestroyTarget(CHARLIST* pCaster,CHARLIST* pTarget) // CAttackMagic::Result
{
if (isNationWarfieldServer())
{
if (isAttacker(pCaster)) // Attacker // 荐龋籍 己巩狼 版快
{
if (64==pTarget->SprNo) // 焊胶 荐龋籍
{
for (int i=0;i<NW_MAX_NPC;i++) // NPC傈眉甫 鉴雀 (20俺)
{
if (63==g_pWarfield->GetWeaponIndex(i)) //焊炼 荐龋籍
{
if (1==g_pWarfield->GetWeaponStatus(i))
{
return false; //混酒 乐促搁
}
}
}
return true; //促磷菌促搁..
}
else
{
return true;
}// 焊胶 荐龋籍捞 酒聪搁 饼荐 乐促.
}
else
{
return false;
}// Defencer //荐龋籍 己巩狼 版快 饼荐 绝促
}
if (isNewWarfieldServer())
{
return g_pNewWarfield->CanAttackGuard(pCaster,pTarget);
}
return false;
}
void CountNationDeath(CHARLIST* pCaster,CHARLIST* pTarget)
{
if (!isNationWarfieldServer()) return;
if (pTarget->name_status.nation==NW_YL)
{
if (isAttacker(g_pWarfield->GetWarfieldCode(),pTarget->NWCharacter.YL_JoinNation))
g_pWarfield->IncKilledCount(NW_ATTACKER);
else g_pWarfield->IncKilledCount(NW_DEFENCER);
}
else
{
if (isAttacker(g_pWarfield->GetWarfieldCode(),pTarget->name_status.nation))
g_pWarfield->IncKilledCount(NW_ATTACKER);
else g_pWarfield->IncKilledCount(NW_DEFENCER);
}
}
void UpdateWarTime() // 011015 LTS
{
struct tm *today;
time_t lTime;
__int64 curr_time;
__int64 starttime;
__int64 year,mon,yday,day,hour,min,sec;
time(&lTime);
today = localtime(&lTime);
year = today->tm_year + 1900;
mon = today->tm_mon;
yday = today->tm_yday;
day = today->tm_mday;
hour = today->tm_hour;
min = today->tm_min;
sec = today->tm_sec;
//-----------------------------------------------
curr_time = ((__int64)(g_year - 1) * 31536000)
+ ((g_yday) * 86400)
+ (g_hour * 3600)
+ (g_min * 60)
+ g_sec;
starttime = ((__int64)(1998) * 31536000)
+ ((365-61) * 86400)
+ (24 * 3600)
+ (0 * 60)
+ 0;
g_WarTime = (curr_time - starttime );
//MyLog(0,"Time : %ld",g_WarTime); // LTS TEMP
};
// ScripFunction _____________________________________________________________
bool CheckDefence(int cn)
{
if (!isNationWarfieldServer())
{
return false; //巩力啊 乐促. 傍拜磊啊 酒聪促.
}
if (isAttacker(g_wMapServerPort-BASE_WARFIELD_PORT,connections,cn))
{
return false;
}
else
{
return true;
}
return false;
}
bool CanGoBonus()
{
if (isNationWarfieldServer())
{
return g_pWarfield->isBonusTime();
}
if (isNewWarfieldServer())
{
if (g_pNewWarfield->GetWarfieldStatus() == NW_SOPEN)
{
return true;
}
}
return false;
}
// ___________________________________________________________________________
int CheckNationStatus(const int StatusNo)
{
int WarfieldNo=-1;
if (isNationManageServer())
{
if (g_pNation->GetWarfieldStatus(0)==StatusNo)
{
WarfieldNo=0;
}
if (g_pNation->GetWarfieldStatus(1)==StatusNo)
{
WarfieldNo=1;
}
if (g_pNation->GetWarfieldStatus(2)==StatusNo)
{
WarfieldNo=2;
}
}
else
{
if (g_pWarfieldStatus[0].Status==StatusNo)
{
WarfieldNo=0;
}
if (g_pWarfieldStatus[1].Status==StatusNo)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -