📄 ltssupport.cpp
字号:
void RecvCMD_LOCALWAR_BEGIN( t_packet *p, t_connection c[], int cn )
{
SendCMD_LOCALWAR_BEGIN2Client();
g_LocalWarBegin=1;
// MyLog(0,"Local War Status : %d",g_LocalWarBegin);
if (g_isLocalWarServer)
{
g_pLocalWarfield->SetLocalWarStatus(1);
g_pLocalWarfield->RecoveryAllSealStone(); // 030520 kyo //葛电 搬拌籍狼 HP甫 雀汗
}
}
void GiveLife2SealStone()
{
for (int i=0;i<MAX_NATION;i++)
for (int j=0;j<MAX_SEALSTONE_NATION_;j++)
{
SealStone[i].status[j]=1; // Alive;
}
}
void SendCMD_SEALSTONE_BROKED(SealStoneStatus* tp)
{
t_packet packet;
packet.h.header.type=CMD_SEALSTONE_BROKED;
switch (tp->SprNo)
{
case 98 : packet.u.LocalWar.SealStoneBroked.Nation=NW_BY; break;
case 99 : packet.u.LocalWar.SealStoneBroked.Nation=NW_ZY; break;
case 91 : packet.u.LocalWar.SealStoneBroked.Nation=NW_YL; break;
}
packet.u.LocalWar.SealStoneBroked.MapNumber=tp->MapNumber;
packet.u.LocalWar.SealStoneBroked.LocateX=tp->X;
packet.u.LocalWar.SealStoneBroked.LocateY=tp->Y;
packet.h.header.size=sizeof(t_SealStoneBroked);
g_pUserManager->SendPacket(&packet); // CSD-CN-031213
SendPacket2Maps(&packet);
}
void RecvCMD_SEALSTONE_BROKED( t_packet *p, t_connection c[], int cn )
{
if (MapInfo[MapNumber].nation==p->u.LocalWar.SealStoneBroked.Nation)
{ //< CSD-CN-031213
g_pUserManager->SendPacket(p);
return;
} //> CSD-CN-031213
if (MapInfo[MapNumber].nation==0)
{
SendPacket2NationClients(p->u.LocalWar.SealStoneBroked.Nation,p);
}
}
void SendCMD_SEALSTONE_ATTACKED(SealStoneStatus* tp)
{
t_packet packet;
packet.h.header.type=CMD_SEALSTONE_ATTACKED;
packet.u.LocalWar.SealStoneAttacked.MapNumber=tp->MapNumber;
packet.u.LocalWar.SealStoneAttacked.LocateX=tp->X;
packet.u.LocalWar.SealStoneAttacked.LocateY=tp->Y;
packet.h.header.size=sizeof(t_SealStoneAttacked);
g_pUserManager->SendPacket(&packet); // CSD-CN-031213
switch (tp->SprNo)
{
case 98 : SendPacket2Maps(&packet); break;
case 99 : SendPacket2Maps(&packet); break;
case 91 : SendPacket2Maps(&packet); break;
}
}
void RecvCMD_SEALSTONE_ATTACKED( t_packet *p, t_connection c[], int cn )
{
if (MapInfo[MapNumber].nation==p->u.LocalWar.SealStoneAttacked.Nation)
{ //< CSD-CN-031213
g_pUserManager->SendPacket(p);
return;
} //> CSD-CN-031213
if (MapInfo[MapNumber].nation == 0)
{
SendPacket2NationClients(p->u.LocalWar.SealStoneAttacked.Nation,p);
}
}
void SendCMD_LOCALWAR_POINT_CHANGED()
{
t_packet packet;
packet.h.header.type=CMD_LOCALWAR_POINT_CHANGED;
packet.u.LocalWar.LocalWarPointChanged.RemainTime=g_pNation->GetLocalWarRemainTime()-g_curr_time;
packet.u.LocalWar.LocalWarPointChanged.Point[0]=g_pNation->GetLocalWarPoint(0);
packet.u.LocalWar.LocalWarPointChanged.Point[1]=g_pNation->GetLocalWarPoint(1);
packet.u.LocalWar.LocalWarPointChanged.Point[2]=g_pNation->GetLocalWarPoint(2);
packet.h.header.size=sizeof(t_LocalWarPointChanged);
SendPacket2Maps(&packet);
g_pUserManager->SendPacket(&packet); // CSD-CN-031213
}
int LocalWarPointMAXIndex() // LTS NEW LOCALWAR
{
if (!isNationManageServer()) return 0;
short Point[3], MAXPointIndex=0;
Point[0]=g_pNation->GetLocalWarPoint(0);
Point[1]=g_pNation->GetLocalWarPoint(1);
Point[2]=g_pNation->GetLocalWarPoint(2);
if (Point[MAXPointIndex]<Point[1]) MAXPointIndex=1;
if (Point[MAXPointIndex]<Point[2]) MAXPointIndex=2;
return MAXPointIndex;
}
int CheckMaxPoint(int nPoint1, int nPoint2)
{ // 030506 kyo
if (nPoint1 > nPoint2)
{
return 3; // LTH-040308-KO 惑困 窃荐客 备盒窿扁困秦. 3:nPoint1>nPoint2, 4:nPoint1<nPoint2, 5:nPoint1=nPoint2
}
else if (nPoint1 < nPoint2)
{
return 4; // LTH-040308-KO 惑困 窃荐客 备盒窿扁困秦
}
else
{
return 5; // LTH-040308-KO 惑困 窃荐客 备盒窿扁困秦
}
}
//< LTH-040308-KO 惑困 窃荐狼 箭磊客 备盒窿扁 困秦 馆券窍绰 荐甫 官操绊 老胶档 力措肺 厚背窍霸 父惦
// 6:nIndex1>nIndex2, 7:nIndex1<nIndex2, 8:nIndex1=nIndex2
int CheckMaxArrayPoint(int nIndex1, int nIndex2, unsigned short Array_1[3] ,unsigned short Array_2[3], unsigned short Array_3[3])
{//3硅凯狼 nIndex1苞 nIndex2吝俊 奴 蔼阑 府畔 0: nIndex1, 1:nIndex2, 2:滴 蔼捞 悼老
int rt = CheckMaxPoint(Array_1[nIndex1], Array_1[nIndex2]);
switch (rt)
{
case 5:
{
rt = CheckMaxPoint(Array_2[nIndex1], Array_2[nIndex2]);
switch (rt)
{
case 5:
{
rt = CheckMaxPoint( Array_3[nIndex1], Array_3[nIndex2] );
switch (rt)
{
case 5: return 9;
case 3: return 7;
case 4: return 8;
}
break;
}
case 3: return 7;
case 4: return 8;
}
break;
}
case 3: return 7;
case 4: return 8;
}
return -1;
}
//> LTH-040308-KO
void SendCMD_LOCALWAR_END_WIN( const int nWinNation)
{// 030518 kyo
t_packet packet;
packet.h.header.type=CMD_LOCALWAR_END;
packet.u.LocalWar.CommonDataC.Data=nWinNation;
packet.h.header.size=sizeof(t_CommonDataC);
SendPacket2Maps(&packet);//葛电 甘俊 焊郴辑 其烙拌魂
}
void SendCMD_LOCALWAR_END() // LTS NEW LOCALWAR // 惫瘤傈 辆丰
{ //const NationTBL[3]={ 3,4,6 };
const int NationTBL[NW_COMMANDER]={ NW_BY,NW_ZY,NW_YL}; // 03518 kyo
const char NationTBLStr[NW_COMMANDER][8]={"NW_BY","NW_ZY","NW_YL"}; // 030515 kyo
//t_packet packet;
_ASSERTE(g_pNation);// 030518 kyo
//int MAXPointIndex=g_pNation->CheckWinNation();
int nWinNation=g_pNation->CheckWinNation();
// 葛电 惑炔捞 鞍促搁 葛电 惫啊啊 铰府窍霸 茄促.
// 0:官捞辑胶 1:磊捞戚 2:老胶 3:(磊捞戚=老胶)>官捞辑胶 4:(官捞辑胶=老胶)>磊捞戚 5:(磊捞戚=官捞辑胶)>老胶 6: 葛滴悼老
// 咯矾惫啊狼 悼矫 铰府老 版快 惫啊锅龋狼 +蔼栏肺 拌魂
// ex) 3,4,6 : 茄惫啊(NationTBL[nWinNation]) 7(官+磊),9(磊+老),10(官+老),13(促)
switch( nWinNation )
{
case 0:
case 1:
case 2:
{
//packet.u.LocalWar.CommonDataC.Data = NationTBL[nWinNation];
SendCMD_LOCALWAR_END_WIN(NationTBL[nWinNation]);// 030518 kyo
MyLog(0, "LocalWar End:: Win Team %s", NationTBLStr[nWinNation] );// 030515 kyo
break;
}
case 3:
{
//packet.u.LocalWar.CommonDataC.Data = NationTBL[1]+NationTBL[2];
SendCMD_LOCALWAR_END_WIN(NationTBL[1]);// 030518 kyo
SendCMD_LOCALWAR_END_WIN(NationTBL[2]);// 030518 kyo
MyLog(0, "LocalWar End:: Win Team=%s && Win Team=%s", NationTBLStr[1], NationTBLStr[2] );// 030515 kyo
break;
}
case 4:
{
//packet.u.LocalWar.CommonDataC.Data = NationTBL[0]+NationTBL[2];
SendCMD_LOCALWAR_END_WIN(NationTBL[0]);// 030518 kyo
SendCMD_LOCALWAR_END_WIN(NationTBL[2]);// 030518 kyo
MyLog(0, "LocalWar End:: Win Team=%s && Win Team=%s", NationTBLStr[0], NationTBLStr[2] );// 030515 kyo
break;
}
case 5:
{
//packet.u.LocalWar.CommonDataC.Data = NationTBL[0]+NationTBL[1];
SendCMD_LOCALWAR_END_WIN(NationTBL[0]);// 030518 kyo
SendCMD_LOCALWAR_END_WIN(NationTBL[1]);// 030518 kyo
MyLog(0, "LocalWar End:: Win Team=%s && Win Team=%s", NationTBLStr[0], NationTBLStr[1] );// 030515 kyo
break;
}
case 6:
{
//packet.u.LocalWar.CommonDataC.Data = NationTBL[0]+NationTBL[1]+NationTBL[2];
//MyLog(0, "LocalWar End:: Win Team=%s && Win Team=%s && Win Team=%s", NationTBLStr[0], NationTBLStr[1], NationTBLStr[2] );// 03515 kyo
SendCMD_LOCALWAR_END_WIN(0);// 030518 kyo
MyLog(0, "LocalWar End:: All Lose ~~~~~ ");
break;
}
default:
{
//_ASSERT(NULL);
break;
}
}
/*
packet.h.header.type=CMD_LOCALWAR_END;
//packet.u.LocalWar.CommonDataC.Data=NationTBL[MAXPointIndex];
packet.u.LocalWar.CommonDataC.Data=NationTBL[nWinNation];
packet.h.header.size=sizeof(t_CommonDataC);
//if (MAXPointIndex>=0) CalcMapUsersGainedFame(NationTBL[MAXPointIndex]);
//CalcMapUsersGainedFame(NationTBL[nWinNation]); //RecvCMD_LOCALWAR_END()俊辑 其烙拌魂茄促. 吝汗拌魂错促.
//SendCMD_LOCALWAR_END2Client(&packet);// 泅犁 甘狼 惫瘤傈俊 曼啊茄 葛电 蜡历狼 曼啊甫 秒家茄促. 吝汗凳
SendPacket2Maps(&packet);//葛电 甘俊 焊郴辑 其烙拌魂
*/
}
void ReturnLocalwarHome()
{ //< 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 && pUser->JoinLocalWar)
{
pUser->JoinLocalWar = 0;
CheckAndSendChangeEquip(pUser, 1);
LPMAPINFO pMapInfo = GetMapInfoByMapPort(g_MapPort);
if (!pMapInfo)
{
continue;
}
if (pMapInfo->nation == 0 || pMapInfo->nation == pUser->name_status.nation)
{
continue;
}
// 利惫牢 版快父 磊扁狼 惫啊肺 捞悼
switch (pUser->name_status.nation)
{
case NW_BY:
{
MapMove(idUser, "MA-IN", 245, 115);
break;
}
case NW_ZY:
{
MapMove(idUser, "RENES_C", 210, 175);
break;
}
case NW_YL:
{
MapMove(idUser, "BARANTAN", 325, 98);
break;
}
}
}
}
} //> CSD-CN-031213
void RecvCMD_LOCALWAR_END(t_packet *p, t_connection c[], int cn )
{ //< CSD-031007
g_LocalWarBegin=0;
// MyLog(0,"Local War Status : %d",g_LocalWarBegin);
::CalcMapUsersGainedFame(p->u.LocalWar.CommonDataC.Data);
::SendCMD_LOCALWAR_END2Client(p);
if (g_isLocalWarServer)
{
g_pLocalWarfield->ClearManCount();
g_pLocalWarfield->SetLocalWarStatus(0);
}
::ReturnLocalwarHome();// 030518 kyo
} //> CSD-031007
void RecvCMD_LOCALWAR_NATION_POINT_CHANGED(t_packet *p, t_connection c[], int cn )
{
t_packet packet;
g_pNation->IncLocalWarPoint(0,p->u.LocalWar.NationPointChanged.NationPoint[0]);
g_pNation->IncLocalWarPoint(1,p->u.LocalWar.NationPointChanged.NationPoint[1]);
g_pNation->IncLocalWarPoint(2,p->u.LocalWar.NationPointChanged.NationPoint[2]);
packet.h.header.type=CMD_LOCALWAR_POINT_BBS;
packet.u.LocalWar.LocalWarPointChanged.RemainTime=g_pNation->GetLocalWarRemainTime()-g_curr_time;
packet.u.LocalWar.LocalWarPointChanged.Point[0]=g_pNation->GetLocalWarPoint(0);
packet.u.LocalWar.LocalWarPointChanged.Point[1]=g_pNation->GetLocalWarPoint(1);
packet.u.LocalWar.LocalWarPointChanged.Point[2]=g_pNation->GetLocalWarPoint(2);
packet.h.header.size=sizeof(t_LocalWarPointChanged);
SendPacket2LocalWarJoinClients(&packet);
SendPacket2Maps(&packet);
}
void RecvCMD_LOCALWAR_POINT_BBS(t_packet *p, t_connection c[], int cn )
{
SendPacket2LocalWarJoinClients(p);
}
void RecvCMD_ACTION_STATUS(t_packet *p, t_connection c[], int cn )
{
connections[cn].chrlst.nCurrentAction=p->u.LocalWar.ActionStatus.nCurrentAction;
p->u.LocalWar.ActionStatus.ServerID=cn;
CastMe2Other(cn,p);
}
void RecvCMD_SITDOWN_DIRECTION_CHANGED(t_packet *p, t_connection c[], int cn )
{
connections[cn].chrlst.Direction=(DIRECTION)p->u.LocalWar.SDChanged.Direction;
p->u.LocalWar.SDChanged.ServerID=cn;
CastMe2Other(cn,p);
}
// 020428 YGI acer
void RecvCMD_HERO_ACTION_CHANGED(t_packet *p, t_connection c[], int cn )
{
CHARLIST* ch=&connections[cn].chrlst;
if (p->u.LocalWar.CommonDataC.Data==ACTION_SITDOWN)
{
MoveEmptyInv( &ch->equip[ WT_SHOES], ch );
POS pos;
SetItemPos( EQUIP, WT_SHOES, &pos );
// 020428 YGI acer
SendDeleteItem( &ch->equip[ WT_SHOES], &pos, ch );
CheckAndSendChangeEquip( ch, 1 );
}
}
// Event LocalWar System _____________________________________________________________________________
bool LoadStartUpPoint()
{
// 030919 HK YGI
// char NetworkDir[MAX_PATH];
// char MapServerConfigFileName[MAX_PATH];
int i;
char tempString[MAX_PATH];
/*
if (GetPrivateProfileString("Network","path","",NetworkDir,MAX_PATH, MAP_SERVER_INI_)<=0)
{
MyLog(0,"Mapserver.ini狼 Path汲沥捞 肋给登绢乐嚼聪促.");
return false;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -