📄 nationsys.cpp
字号:
}
t_packet packet;
if (iWarNo != ch->NWCharacter.WarNo)
{ // 傈里锅龋啊 撇府促搁
::memset(&ch->NWCharacter,0,sizeof(NW_Character)); // 傈里阑 檬扁拳 秦扼.
ch->NWCharacter.WarNo=iWarNo;
packet.h.header.type=CMD_CLEAR_WAR_CHARACTER_DATA;
packet.u.NationWar.CommonDataC.Data=iWarNo;
packet.h.header.size=sizeof(t_CommonDataC);
::QueuePacket(connections,iUserCn,&packet,1);
}
else
{
if ((g_pWarfieldStatus[0].Status<2)&&
(g_pWarfieldStatus[1].Status<2)&&
(g_pWarfieldStatus[2].Status<2))
{
::memset(&ch->NWCharacter,0,sizeof(NW_Character)); // 傈里阑 檬扁拳 秦扼.
ch->NWCharacter.WarNo=iWarNo;
packet.h.header.type=CMD_CLEAR_WAR_CHARACTER_DATA;
packet.u.NationWar.CommonDataC.Data=iWarNo;
packet.h.header.size=sizeof(t_CommonDataC);
::QueuePacket(connections,iUserCn,&packet,1);
}
}
}
void SendCMD_CLEAR_SQUAD_DATA(t_connection c[],const int cn) // NWCharacter 甫 檬扁拳 窍扼绊 皋矫瘤甫 焊辰促.
{
// 傈里捞 场车阑锭.
t_packet packet;
packet.h.header.type=CMD_CLEAR_SQUAD_DATA;
packet.h.header.size=0;
QueuePacket(c,cn,&packet,1);
}
void SendCMD_CLEAR_SQUAD_DATA(const int Nation) // 0: ALL 3,4 : WarfieldNo
{
t_packet packet;
packet.h.header.type=CMD_CLEAR_SQUAD_DATA;
packet.h.header.size=0;
if (0==Nation)
{
SendPacket2Maps(&packet); //傈里 饶
}
else
{
SendPacket2NationMaps(Nation,&packet);
}
}
void SendWarBeginEndMessage2Client(const int type)
{
t_packet p;
if (type)
{
p.h.header.type=CMD_WAR_BEGIN;
}
else
{
p.h.header.type=CMD_WAR_END;
}
p.h.header.size=0;
g_pUserManager->SendPacket(&p); // CSD-CN-031213
if (!type) //傈里捞 场车栏搁.. 渴阑 哎酒涝绢扼...
{
for( int i = DRAGON_CONNECTIONS_START; i<DRAGON_MAX_CONNECTIONS; i++ )
{
CHARLIST* ch=CheckServerId(i);
if(ch)
{
CheckAndSendChangeEquip(ch,1);
}
}
}
}
void SendWarBeginEndMessage2Client(const int type,t_connection c[],const int cn)
{
t_packet p;
if (type) p.h.header.type=CMD_WAR_BEGIN;
else p.h.header.type=CMD_WAR_END;
p.h.header.size=0;
QueuePacket(c,cn,&p,1);
}
void RecvCMD_CHECK_WARFIELD_STATUS(t_packet *p,t_connection c[],const int cn)
{
if (isNationManageServer())
{
g_pNation->CheckWarFieldStatus(p->u.NationWar.WarfieldStatusChange.WarfieldNo,p->u.NationWar.WarfieldStatusChange.Status);
}
}
void RecvCMD_CHECK_WARFIELD_STATUS_RESULT(t_packet *p,t_connection c[],const int cn)
{
if (isNationWarfieldServer())
{
g_pWarfield->ChangeWarfieldStatus(p->u.NationWar.CommonDataC.Data);
}
}
void RecvCMD_WARFIELD_STATUS(t_packet *p,t_connection c[],const int cn)
{
if (isNationManageServer())
{
int temp=p->u.NationWar.WarfieldStatusChange.WarfieldNo-BASE_WARFIELD_PORT;
g_pNation->SetWarFieldStatus(temp,p->u.NationWar.WarfieldStatusChange.Status);
if (p->u.NationWar.WarfieldStatusChange.Status==NW_VOTE) g_pNation->InitVoteData(temp); //傈里曼咯 捧钎单捞磐甫 檬扁拳茄促.
}
}
void RecvCMD_WARBBS(t_packet *p)
{
switch (p->u.NationWar.WarBBS.BBSType)
{
case BBS_COMMANDER_ELECT :
{
char tempCommander[80];
char* tempChar;
memcpy(tempCommander,p->u.NationWar.WarBBS.Arg,p->u.NationWar.WarBBS.Size);
tempChar=tempCommander;
*(tempChar+p->u.NationWar.WarBBS.Size)='\0';
FindCommander(tempCommander); break;
}
}
g_pUserManager->SendPacket(p); // CSD-CN-031213
}
void RecvCMD_REQUEST_WARFIELD_STATUS(t_packet *p, t_connection c[], const int cn)
{
t_packet packet;
if (isNationManageServer()) //包府辑滚捞骨肺 溜矫 努扼捞攫飘俊 秦寸 菩哦阑 焊辰促.
{
ProcessCMD_REQUEST_WARFIELD_STATUS(&packet,p);
QueuePacket(c,cn,&packet,1);
}
else
{
SendCMD_REQUEST_DELIVERY(NATION_MANAGE_SERVER,p,c,cn); //包府辑滚啊 酒聪骨肺 Map侩菩哦栏肺 官操绊 傈价茄促.
}
}
void SendCMD_WARFIELD_WAR_DATA1(t_packet* p)
{
if (!isNationWarfieldServer()) return;
int i,GuardStoneCount=0,CastleGateWayCount=0;
int tempIndex;
int count=0;
const int GuardSize = g_pWarfield->GetGuardStoneCount();
const int CastleSize= g_pWarfield->GetCastleDoorCount();
if(0 >= GuardSize || 0 >= CastleSize)
{
return;
}
char* GuardStoneStatus =new char[GuardSize];
char* CastleGateWayStatus =new char[CastleSize];
for (i=0;i<NW_MAX_NPC;i++)
{
tempIndex=g_pWarfield->GetWeaponIndex(i);
if (tempIndex==63) //荐龋籍 //焊胶绰 磷栏搁 场捞促 公炼扒 混酒乐促绊!!
{
GuardStoneStatus[GuardStoneCount]=g_pWarfield->GetWeaponStatus(i);
GuardStoneCount++;
}
if (tempIndex>=65&&tempIndex<=67)
{
CastleGateWayStatus[CastleGateWayCount]=g_pWarfield->GetWeaponStatus(i);
CastleGateWayCount++;
}
}
if (GuardStoneCount!=GuardSize)
{
MyLog(0,"GuardStoneCount Check Error!!");
}
if (CastleGateWayCount!=CastleSize)
{
MyLog(0,"CastleGateWayCount Check Error");
}
p->h.header.type=CMD_WARFIELD_WAR_DATA1;
(char)p->u.data[count]=GuardSize;
for (i=0;i<GuardSize;i++)
{
count++;
(char)p->u.data[count]=GuardStoneStatus[i];
}
count++;
(char)p->u.data[count]=CastleGateWayCount;
for (i=0;i<CastleSize;i++)
{
count++;
(char)p->u.data[count]=CastleGateWayStatus[i];
}
p->h.header.size=1+1+GuardSize+CastleSize;
SAFE_DELETE(GuardStoneStatus);
SAFE_DELETE(CastleGateWayStatus);
}
void SendCMD_WARFIELD_WAR_DATA2(t_packet* p)
{
if (!isNationWarfieldServer()) return;
p->h.header.type=CMD_WARFIELD_WAR_DATA2;
p->u.NationWar.WarfieldData2.RemainTime=g_pWarfield->GetLoopTime()-g_WarTime;
p->u.NationWar.WarfieldData2.AttackerCount=g_pWarfield->GetAllSquadCurrentMemberCount(NW_ATTACKER);
p->u.NationWar.WarfieldData2.DefencerCount=g_pWarfield->GetAllSquadCurrentMemberCount(NW_DEFENCER);
p->u.NationWar.WarfieldData2.ReinforceCount=g_pWarfield->GetAllSquadCurrentMemberCount(NW_DEFENCER);
p->h.header.size=sizeof(t_WarfieldData2);
}
void SendCMD_WARFIELD_WAR_DATA3(t_packet* p,int WarfieldNo,int Nation) // 惫利捞 鞘夸窍促.
{
if (!isNationWarfieldServer())
{
return;
}
p->h.header.type=CMD_WARFIELD_WAR_DATA3;
if (isAttacker(WarfieldNo,Nation))
{
p->u.NationWar.WarfieldData3.Type=NW_ATTACKER;
}
else
{
p->u.NationWar.WarfieldData3.Type=NW_DEFENCER;
}
p->u.NationWar.WarfieldData3.MemberCount[0]=g_pWarfield->GetSquadCurrentMemberCount(p->u.NationWar.WarfieldData3.Type,0); // LOOP UNROLL //NW_SQUAD
p->u.NationWar.WarfieldData3.MemberCount[1]=g_pWarfield->GetSquadCurrentMemberCount(p->u.NationWar.WarfieldData3.Type,1);
p->u.NationWar.WarfieldData3.MemberCount[2]=g_pWarfield->GetSquadCurrentMemberCount(p->u.NationWar.WarfieldData3.Type,2);
p->u.NationWar.WarfieldData3.MemberCount[3]=g_pWarfield->GetSquadCurrentMemberCount(p->u.NationWar.WarfieldData3.Type,3);
p->u.NationWar.WarfieldData3.MemberCount[4]=g_pWarfield->GetSquadCurrentMemberCount(p->u.NationWar.WarfieldData3.Type,4);
p->h.header.size=sizeof(t_WarfieldData3);
}
void SendCMD_UPDATE_WARTIME(const int WarfieldNo,const int Status,const DWORD RemainTime)
{
t_packet packet;
packet.h.header.type=CMD_SET_REMAIN_TIME;
packet.u.NationWar.RemainTime.WarfieldNo=WarfieldNo;
packet.u.NationWar.RemainTime.Status=Status;
packet.u.NationWar.RemainTime.RemainTime=RemainTime;
packet.h.header.size=sizeof (t_RemainTime);
SendPacket2NWManager(&packet);
}
bool CheckCharSquadLeaderCondition(t_connection c[], const int cn ) // 011016 LTS
{ //< CSD-030806
if ((c[cn].chrlst.GetLevel()>=NW_SQUADLEADER_LEVEL_MIN) &&
(c[cn].chrlst.LadderScore>=NW_SQUADLEADER_LADDER_MIN))
{
return true;
}
return false;
} //> CSD-030806
bool CheckJoinSquadCondition(const int SquadNo,const int MemberCount) // 011028 LTS
{ //< CSD-030806
switch (SquadNo) //傍拜磊客 规绢磊狼 备己捞 鞍促.
{
case 1:
{
if (MemberCount <= NW_SQUAD1_MAN_MAX)
{
return true;
}
break;
}
case 2:
{
if (MemberCount <= NW_SQUAD2_MAN_MAX)
{
return true;
}
break;
}
case 3:
{
if (MemberCount <= NW_SQUAD3_MAN_MAX)
{
return true;
}
break;
}
case 4:
{
if (MemberCount <= NW_SQUAD4_MAN_MAX)
{
return true;
}
break;
}
}
return false;
} //> CSD-030806
bool CheckJoinLevel(const int SquadNo,t_connection c[],const int cn) // 011016 LTS
{ //< CSD-030806
CHARLIST* pApplicant = &c[cn].chrlst;
switch (SquadNo)
{
case 1:
{
if (pApplicant->GetLevel() >= NW_SQUAD1_LEVEL_MIN && pApplicant->GetLevel() <= NW_SQUAD1_LEVEL_MAX)
{
return true;
}
break;
}
case 2:
{
if (pApplicant->GetLevel() >= NW_SQUAD2_LEVEL_MIN && pApplicant->GetLevel() <= NW_SQUAD2_LEVEL_MAX)
{
return true;
}
break;
}
case 3:
{
if (pApplicant->GetLevel() >= NW_SQUAD3_LEVEL_MIN && pApplicant->GetLevel() <= NW_SQUAD3_LEVEL_MAX)
{
return true;
}
break;
}
case 4:
{
if (pApplicant->GetLevel() >= NW_SQUAD4_LEVEL_MIN && pApplicant->GetLevel() <= NW_SQUAD4_LEVEL_MAX)
{
return true;
}
break;
}
}
return false;
} //> CSD-030806
// Where : Call From DragonServer.cpp HandleCommand()
// Usage : Packet Process
void ProcessCMD_REQUEST_WARFIELD_STATUS(t_packet *ReturnPacket,t_packet* ReceivePacket) // 傈里磐惑怕
{
ReturnPacket->h.header.type=CMD_ANSWER_WARFIELD_STATUS;
ReturnPacket->u.NationWar.WarfieldStatus.PacketStatus=ReceivePacket->u.NationWar.WarfieldStatus.PacketStatus;
ReturnPacket->u.NationWar.WarfieldStatus.Status[0]=g_pNation->GetWarfieldStatus(0);
ReturnPacket->u.NationWar.WarfieldStatus.Status[1]=g_pNation->GetWarfieldStatus(1);
ReturnPacket->u.NationWar.WarfieldStatus.Status[2]=g_pNation->GetWarfieldStatus(2);
ReturnPacket->h.header.size=sizeof(t_WarfieldStatus);
}
void ProcessCMD_REQUEST_VOTE_DATA(t_packet *ReturnPacket,t_packet* ReceivePacket) // 傈里磐曼咯
{
ReturnPacket->h.header.type=CMD_ANSWER_VOTE_DATA;
ReturnPacket->u.NationWar.VoteData.WarfieldNo=ReceivePacket->u.NationWar.CommonDataC.Data;
ReturnPacket->u.NationWar.VoteData.VoteCount=g_pNation->GetVoteData(ReceivePacket->u.NationWar.CommonDataC.Data);
ReturnPacket->h.header.size=sizeof(t_VoteData);
}
void ProcessCMD_REQUEST_SQUAD_INFO(t_packet *ReturnPacket,t_packet* ReceivePacket) // 何措沥焊
{
const int Nation=ReceivePacket->u.NationWar.RequestSquadInfo.Nation;
const int WarfieldNo=ReceivePacket->u.NationWar.RequestSquadInfo.WarfieldNo;
const int SquadNo=ReceivePacket->u.NationWar.RequestSquadInfo.SquadNo;
t_SquadInformation* tempSquadInfo;
tempSquadInfo=g_pNation->GetSquadInfo(Nation,WarfieldNo,SquadNo);
ReturnPacket->h.header.type=CMD_ANSWER_SQU
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -