📄 nationsys.cpp
字号:
void SendPacket2NWManager(t_packet* p)
{
g_pServerTable->SendRajaPacketToOtherMapServer( NATION_MANAGE_SERVER, (char *)p, p->h.header.size+sizeof(t_header) );
}
// Send Packet to Special Map Server
void SendPacket2NWMap(const WORD Port,t_packet* p)
{
g_pServerTable->SendRajaPacketToOtherMapServer( Port, (char *)p, p->h.header.size+sizeof(t_header) );
// g_pServerTable->SendRajaPacketToOtherMapServer( (WORD)Port, (char *)p, p->h.header.size+sizeof(t_header) );
}
// Send Packet to All Map Servers
void SendPacket2Maps(t_packet* p)
{
g_pServerTable->BroadCastToEveryServer((char *)p, p->h.header.size+sizeof(t_header),SERVER_TYPE_MAP);
}
// Send Packet to Parts of Map Servers , Parameter Dependence
void SendPacket2NationMaps(const int Nation,t_packet* p)
{
for(int i=0 ; i< MAX_MAP_;i++)
{
if (Nation == MapInfo[i].nation)//020903 lsw
g_pServerTable->SendRajaPacketToOtherMapServer( (WORD)MapInfo[i].port, (char *)p, p->h.header.size+sizeof(t_header) );
}
}
// Send Several Packet to Parts of Map Servers
void SendPacket2NationMaps(const int Nation1,t_packet* p1,const int Nation2,t_packet* p2)//020903 lsw
{
for(int i=0 ; i< MAX_MAP_;i++)
{
if (Nation1 ==MapInfo[i].nation)
{
g_pServerTable->SendRajaPacketToOtherMapServer( (WORD)MapInfo[i].port, (char *)p1, p1->h.header.size+sizeof(t_header) );
}
if (Nation2 ==MapInfo[i].nation)
{
g_pServerTable->SendRajaPacketToOtherMapServer( (WORD)MapInfo[i].port, (char *)p2, p2->h.header.size+sizeof(t_header) );
}
}
}
// Send Several Packet to Parts of Map Servers
void SendPacket2NationMaps(const int Nation1,t_packet* p1,const int Nation2,t_packet* p2,const int Nation3,t_packet* p3) //020903 lsw
{
for(int i=0 ; i< MAX_MAP_;i++)
{
if (Nation1==MapInfo[i].nation)
{
g_pServerTable->SendRajaPacketToOtherMapServer( (WORD)MapInfo[i].port, (char *)p1, p1->h.header.size+sizeof(t_header) );
}
if (Nation2==MapInfo[i].nation)
{
g_pServerTable->SendRajaPacketToOtherMapServer( (WORD)MapInfo[i].port, (char *)p2, p2->h.header.size+sizeof(t_header) );
}
if (Nation3==MapInfo[i].nation)
{
g_pServerTable->SendRajaPacketToOtherMapServer( (WORD)MapInfo[i].port, (char *)p3, p3->h.header.size+sizeof(t_header) );
}
}
}
void SendPacket2NationClients(const int Nation,t_packet* p)
{ //< CSD-CN-031213
CUserManager::HASH_USER user = g_pUserManager->GetUserSet();
for (CUserManager::ITOR_USER i = user.begin(); i != user.end(); ++i)
{
const int idUser = i->second;
CHARLIST* pUser = CheckServerId(idUser);
if (pUser != NULL && Nation == pUser->name_status.nation)
{
QueuePacket(connections, idUser, p, 1);
}
}
} //> CSD-CN-031213
// Send Several Packet to Partial Clients
void SendPacket2NationClients(const int Nation1,t_packet* p1,const int Nation2,t_packet* p2)
{ //< CSD-CN-031213
CUserManager::HASH_USER user = g_pUserManager->GetUserSet();
for (CUserManager::ITOR_USER i = user.begin(); i != user.end(); ++i)
{
const int idUser = i->second;
CHARLIST* pUser = CheckServerId(idUser);
if (pUser != NULL)
{
if (Nation1 == pUser->name_status.nation)
{
QueuePacket(connections, idUser, p1, 1);
}
if (Nation2 == pUser->name_status.nation)
{
QueuePacket(connections, idUser, p2, 1);
}
}
}
} //> CSD-CN-031213
// Send War BBS Packet to All Map Servers
void SendWarBBS2Maps(t_WarBBS* WarBBS)
{
t_packet packet;
packet.h.header.type=CMD_WAR_BBS;
packet.u.NationWar.WarBBS.WarfieldNo= WarBBS->WarfieldNo;
packet.u.NationWar.WarBBS.BBSType= WarBBS->BBSType;
packet.u.NationWar.WarBBS.LanNo= WarBBS->LanNo;
packet.u.NationWar.WarBBS.ArgType= WarBBS->ArgType;
packet.u.NationWar.WarBBS.Size= WarBBS->Size;
memcpy(packet.u.NationWar.WarBBS.Arg,WarBBS->Arg,WarBBS->Size);
packet.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+packet.u.NationWar.WarBBS.Size;
SendPacket2Maps(&packet);
}
// Send War BBS to Map Server
void SendWarBBS2NationMaps(const int Nation,t_WarBBS* WarBBS)
{
t_packet p1;
p1.h.header.type=CMD_WAR_BBS;
p1.u.NationWar.WarBBS.WarfieldNo= WarBBS->WarfieldNo;
p1.u.NationWar.WarBBS.BBSType = WarBBS->BBSType;
p1.u.NationWar.WarBBS.LanNo = WarBBS->LanNo;
p1.u.NationWar.WarBBS.ArgType = WarBBS->ArgType;
p1.u.NationWar.WarBBS.Size = WarBBS->Size;
memcpy(p1.u.NationWar.WarBBS.Arg,WarBBS->Arg,WarBBS->Size);
p1.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+p1.u.NationWar.WarBBS.Size;
SendPacket2NationMaps(Nation,&p1);
}
// Send War BBS to Map Servers
void SendWarBBS2NationMaps(const int DefenceNation,t_WarBBS* WarBBSAttack,t_WarBBS* WarBBSDefence,t_WarBBS* WarBBSReinforce) //规绢惫 , 傍拜惫 , 吝赋惫 俊 皋矫瘤甫 焊晨..
{
t_packet AttackerPacket,DefencerPacket,ReinforcePacket;
int AttackNation,ReinforceNation;
AttackerPacket.h.header.type=CMD_WAR_BBS;
AttackerPacket.u.NationWar.WarBBS.WarfieldNo=WarBBSAttack->WarfieldNo;
AttackerPacket.u.NationWar.WarBBS.BBSType=WarBBSAttack->BBSType;
AttackerPacket.u.NationWar.WarBBS.LanNo=WarBBSAttack->LanNo;
AttackerPacket.u.NationWar.WarBBS.ArgType=WarBBSAttack->ArgType;
AttackerPacket.u.NationWar.WarBBS.Size=WarBBSAttack->Size;
memcpy(AttackerPacket.u.NationWar.WarBBS.Arg,WarBBSAttack->Arg,WarBBSAttack->Size);
AttackerPacket.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+AttackerPacket.u.NationWar.WarBBS.Size;
DefencerPacket.h.header.type=CMD_WAR_BBS;
DefencerPacket.u.NationWar.WarBBS.WarfieldNo=WarBBSDefence->WarfieldNo;
DefencerPacket.u.NationWar.WarBBS.BBSType=WarBBSDefence->BBSType;
DefencerPacket.u.NationWar.WarBBS.LanNo=WarBBSDefence->LanNo;
DefencerPacket.u.NationWar.WarBBS.ArgType=WarBBSDefence->ArgType;
DefencerPacket.u.NationWar.WarBBS.Size=WarBBSDefence->Size;
memcpy(DefencerPacket.u.NationWar.WarBBS.Arg,WarBBSDefence->Arg,WarBBSDefence->Size);
DefencerPacket.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+DefencerPacket.u.NationWar.WarBBS.Size;
ReinforcePacket.h.header.type=CMD_WAR_BBS;
ReinforcePacket.u.NationWar.WarBBS.WarfieldNo=WarBBSReinforce->WarfieldNo;
ReinforcePacket.u.NationWar.WarBBS.BBSType=WarBBSReinforce->BBSType;
ReinforcePacket.u.NationWar.WarBBS.LanNo=WarBBSReinforce->LanNo;
ReinforcePacket.u.NationWar.WarBBS.ArgType=WarBBSReinforce->ArgType;
ReinforcePacket.u.NationWar.WarBBS.Size=WarBBSReinforce->Size;
memcpy(ReinforcePacket.u.NationWar.WarBBS.Arg,WarBBSReinforce->Arg,WarBBSReinforce->Size);
ReinforcePacket.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+ReinforcePacket.u.NationWar.WarBBS.Size;
ReinforceNation=NW_YL;
if (DefenceNation==NW_BY)
{
AttackNation=NW_ZY;
}
else
{
AttackNation=NW_BY;
}
SendPacket2NationMaps(AttackNation,&AttackerPacket,DefenceNation,&DefencerPacket,ReinforceNation,&ReinforcePacket);
}
// Send War BBS to Clients Divided Nation
void SendWarBBS2NationClients(const int Nation,t_WarBBS* WarBBS)
{
t_packet packet;
packet.h.header.type=CMD_WAR_BBS;
packet.u.NationWar.WarBBS.WarfieldNo=WarBBS->WarfieldNo;
packet.u.NationWar.WarBBS.BBSType=WarBBS->BBSType;
packet.u.NationWar.WarBBS.LanNo=WarBBS->LanNo;
packet.u.NationWar.WarBBS.ArgType=WarBBS->ArgType;
packet.u.NationWar.WarBBS.Size=WarBBS->Size;
memcpy(packet.u.NationWar.WarBBS.Arg,WarBBS->Arg,WarBBS->Size);
packet.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+packet.u.NationWar.WarBBS.Size;
SendPacket2NationClients(Nation,&packet);
}
// Send Several War BBS to Clients
void SendWarBBS2NationClients(const int DefenceNation,t_WarBBS* WarBBSAttack,t_WarBBS* WarBBSDefence)
{
t_packet AttackerPacket,DefencerPacket;
int AttackNation;
AttackerPacket.h.header.type=CMD_WAR_BBS;
AttackerPacket.u.NationWar.WarBBS.WarfieldNo=WarBBSAttack->WarfieldNo;
AttackerPacket.u.NationWar.WarBBS.BBSType=WarBBSAttack->BBSType;
AttackerPacket.u.NationWar.WarBBS.LanNo=WarBBSAttack->LanNo;
AttackerPacket.u.NationWar.WarBBS.ArgType=WarBBSAttack->ArgType;
AttackerPacket.u.NationWar.WarBBS.Size=WarBBSAttack->Size;
memcpy(AttackerPacket.u.NationWar.WarBBS.Arg,WarBBSAttack->Arg,WarBBSAttack->Size);
AttackerPacket.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+AttackerPacket.u.NationWar.WarBBS.Size;
DefencerPacket.h.header.type=CMD_WAR_BBS;
DefencerPacket.u.NationWar.WarBBS.WarfieldNo=WarBBSDefence->WarfieldNo;
DefencerPacket.u.NationWar.WarBBS.BBSType=WarBBSDefence->BBSType;
DefencerPacket.u.NationWar.WarBBS.LanNo=WarBBSDefence->LanNo;
DefencerPacket.u.NationWar.WarBBS.ArgType=WarBBSDefence->ArgType;
DefencerPacket.u.NationWar.WarBBS.Size=WarBBSDefence->Size;
memcpy(DefencerPacket.u.NationWar.WarBBS.Arg,WarBBSDefence->Arg,WarBBSDefence->Size);
DefencerPacket.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+DefencerPacket.u.NationWar.WarBBS.Size;
if (DefenceNation==NW_BY)
{
AttackNation=NW_ZY;
}
else
{
AttackNation=NW_BY;
}
SendPacket2NationClients(AttackNation,&AttackerPacket,DefenceNation,&DefencerPacket);
}
// Send War BBS to Clients
void SendWarBBS2Clients(t_WarBBS* WarBBS)
{
t_packet packet;
packet.h.header.type=CMD_WAR_BBS;
packet.u.NationWar.WarBBS.WarfieldNo=WarBBS->WarfieldNo;
packet.u.NationWar.WarBBS.BBSType=WarBBS->BBSType;
packet.u.NationWar.WarBBS.LanNo=WarBBS->LanNo;
packet.u.NationWar.WarBBS.ArgType=WarBBS->ArgType;
packet.u.NationWar.WarBBS.Size=WarBBS->Size;
memcpy(packet.u.NationWar.WarBBS.Arg,WarBBS->Arg,WarBBS->Size);
packet.h.header.size=sizeof(t_WarBBS)-MAX_STRING_PK+packet.u.NationWar.WarBBS.Size;
g_pUserManager->SendPacket(&packet); // CSD-CN-031213
}
// Where : Call From CheckHandleByNationWar
// Usage : Packet Process
void SendCMD_REQUEST_DELIVERY(const WORD Port,t_packet *p, t_connection c[], const int cn)
{
t_packet packet;
packet.h.header.type=CMD_REQUEST_DELIVERY;
packet.u.NationWar.Delivery_R.Port=g_wMapServerPort;
packet.u.NationWar.Delivery_R.UserID=cn;
packet.u.NationWar.Delivery_R.Size=sizeof(t_header)+p->h.header.size;
memcpy(packet.u.NationWar.Delivery_R.Data,(char*)p,packet.u.NationWar.Delivery_R.Size);
packet.h.header.size=sizeof(t_Delivery_R)-MAX_STRING_PK+packet.u.NationWar.Delivery_R.Size; //100篮 滚欺狼 荐捞促. MAX_STRING_PK (NetWork4.h)//020903 lsw
g_pServerTable->SendRajaPacketToOtherMapServer(Port, (char *)&packet, packet.h.header.size+sizeof(t_header) );
}
void SendCMD_ANSWER_DELIVERY(const int UserID,const WORD MapServerPort,t_packet* p)
{
t_packet DeliveryPacket;
DeliveryPacket.h.header.type=CMD_ANSWER_DELIVERY;
DeliveryPacket.u.NationWar.Delivery_A.UserID=UserID;
DeliveryPacket.u.NationWar.Delivery_A.Size=sizeof(t_header)+p->h.header.size;
memcpy(DeliveryPacket.u.NationWar.Delivery_A.Data,(char*)p,DeliveryPacket.u.NationWar.Delivery_A.Size);
DeliveryPacket.h.header.size=sizeof(t_Delivery_A)-100+DeliveryPacket.u.NationWar.Delivery_A.Size;
g_pServerTable->SendRajaPacketToOtherMapServer(MapServerPort, (char *)&DeliveryPacket, DeliveryPacket.h.header.size+sizeof(t_header) );
}
void SendCMD_REQUEST_CHECK_WARNO(const int cn) // MenuServer.cpp SendJoinGameWho() Call // 011028 LTS
{
// 贸澜 肺变沁促.
LPCHARLIST ch = ::CheckServerId(cn);
if(!ch){return;}
t_packet packet;
if (isNationManageServer())
{
DWORD tempCount=g_pNation->GetWarCount(); // LTS NEW_NATION_WAR
if (tempCount!=ch->NWCharacter.WarNo) // 傈里锅龋啊 撇府促搁
{
memset(&ch->NWCharacter,0,sizeof(NW_Character)); // 某腐磐狼 NWCHaracter甫 檬扁拳 秦扼.
ch->NWCharacter.WarNo=tempCount; // LTS NEW_NATION_WAR
packet.h.header.type=CMD_CLEAR_WAR_CHARACTER_DATA; // 努扼府攫飘档 檬扁拳 茄促.
packet.u.NationWar.CommonDataC.Data=tempCount; // LTS NEW_NATION_WAR
packet.h.header.size=sizeof(t_CommonDataC);
QueuePacket(connections,cn,&packet,1);
}
else // 傈里 锅龋啊 鞍促搁 // 辟单 乞拳扁埃捞搁 // 何措付农甫 瘤快档废 茄促.
{
if ((g_pWarfieldStatus[0].Status<2)&&
(g_pWarfieldStatus[1].Status<2)&&
(g_pWarfieldStatus[2].Status<2))
{
memset(&ch->NWCharacter,0,sizeof(DWORD)); // 某腐磐狼 NWCHaracter甫 檬扁拳 秦扼.
ch->NWCharacter.WarNo=tempCount; // LTS NEW_NATION_WAR
packet.h.header.type=CMD_CLEAR_WAR_CHARACTER_DATA; // 努扼府攫飘档 檬扁拳 茄促.
packet.u.NationWar.CommonDataC.Data=tempCount; // LTS NEW_NATION_WAR
packet.h.header.size=sizeof(t_CommonDataC);
QueuePacket(connections,cn,&packet,1);
}
}
}
else
{
packet.h.header.type=CMD_REQUEST_CHECK_WARNO; // 傈里锅龋甫 包府辑滚俊霸 夸备窍绊
packet.h.header.size=sizeof(t_RequestCheckWarNo);
packet.u.NationWar.RequestCheckWarNo.Port=g_wMapServerPort; // RecvCMD_ANSWER_CHECK_WARNO俊辑 贸府茄促.
packet.u.NationWar.RequestCheckWarNo.ServerID=cn;
SendPacket2NWManager(&packet);
}
}
void SendCMD_SQUAD_LODING_POINT(const int WarfieldNo) // 包府辑滚俊辑 傈里辑滚肺 傈里矫累窍扼绊 且锭 焊郴绰 菩哦
{
t_packet packet;
if (!isNationManageServer()) return;
int WFieldNo=WarfieldNo-BASE_WARFIELD_PORT;
packet.h.header.type=CMD_SQUAD_LOADING_POINT; // NW_MAN->NW_WAR
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_ATTACKER][0]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_ATTACKER,0);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_ATTACKER][1]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_ATTACKER,1);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_ATTACKER][2]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_ATTACKER,2);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_ATTACKER][3]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_ATTACKER,3);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_ATTACKER][4]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_ATTACKER,4);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_DEFENCER][0]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_DEFENCER,0);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_DEFENCER][1]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_DEFENCER,1);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_DEFENCER][2]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_DEFENCER,2);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_DEFENCER][3]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_DEFENCER,3);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_DEFENCER][4]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_DEFENCER,4);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_REINFORCE][0]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_REINFORCE,0);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_REINFORCE][1]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_REINFORCE,1);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_REINFORCE][2]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_REINFORCE,2);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_REINFORCE][3]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_REINFORCE,3);
packet.u.NationWar.SquadLoadingPoint.SquadLoadingPoint[NW_REINFORCE][4]=g_pNation->GetSquadLoadingPoint(WFieldNo,NW_REINFORCE,4);
packet.h.header.size=sizeof(t_SquadLoadingPoint);
g_pServerTable->SendRajaPacketToOtherMapServer((WORD)WarfieldNo,(char *)&packet, packet.h.header.size+sizeof(t_header) );
}
void SendCMD_SQUAD_RARE(const WORD WarfieldNo)
{
t_packet packet;
if (!isNationManageServer()) return;
packet.h.header.type=CMD_SQUAD_RARE;
const int WFieldNo=WarfieldNo-BASE_WARFIELD_PORT;
for (int i=0;i<NW_SQUAD_KIND;i++) // LOOP UNROLL捞 加档啊 狐福唱 焊扁 塞甸促.
{
for (int j=0;j<NW_SQUAD_MAX;j++)
{
for (int k=0;k<NW_SQUAD_RARE_MAX;k++)
{
packet.u.NationWar.NWSquadRare.SquadRare[i][j][k]=g_pNation->GetSquadRareSok(WFieldNo,i,j,k);
}
}
}
//011014 lsw >
packet.h.header.size=sizeof(t_NWSquadRare);
//011014 lsw <
// g_pServerTable->SendRajaPacketToOtherMapServer((WORD)WarfieldNo,(char *)&packet, packet.h.header.size+sizeof(t_header) );
g_pServerTable->SendRajaPacketToOtherMapServer(WarfieldNo,(char *)&packet, packet.h.header.size+sizeof(t_header) );
}
void RecvCMD_REQUEST_CHECK_WARNO(t_packet* p,t_connection c[],const int cn) // 坷流 包府辑滚父..
{
t_packet packet;
if (!isNationManageServer()) return;
packet.h.header.type=CMD_ANSWER_CHECK_WARNO;
DWORD tempWarNo=g_pNation->GetWarCount(); // LTS NEW_NATION_WAR
packet.u.NationWar.AnswerCheckWarNo.WarNo=(BYTE)tempWarNo; // LTS NEW_NATION_WAR
packet.u.NationWar.AnswerCheckWarNo.ServerID=p->u.NationWar.RequestCheckWarNo.ServerID;
packet.h.header.size=sizeof(t_AnswerCheckWarNo);
SendPacket2NWMap(p->u.NationWar.RequestCheckWarNo.Port,&packet);
}
void RecvCMD_ANSWER_CHECK_WARNO(t_packet* p,t_connection c[],const int cn) // 011028 LTS
{// 包府辑滚俊辑 傈里锅龋啊 吭促.
const int iUserCn = p->u.NationWar.AnswerCheckWarNo.ServerID;
const int iWarNo = p->u.NationWar.AnswerCheckWarNo.WarNo;
LPCHARLIST ch = ::CheckServerId(iUserCn);
if(!ch)
{
::MyLog(0,"RecvCMD_ANSWER_CHECK_WARNO() Error WarNo[%d] CN[%d] ",iWarNo,iUserCn);
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -