📄 ltssupport.cpp
字号:
case CMD_LOCALWAR_STATUS :
ProcessCMD_LOCALWAR_STATUS(&SendPacket,&tempPacket);
SendCMD_ANSWER_LOCAL_DELIVERY(UserID,MapServerPort,&SendPacket);
break;
case CMD_REQUEST_LOCALWAR_INFO :
ProcessCMD_REQUEST_LOCALWAR_INFO(&SendPacket,&tempPacket);
SendCMD_ANSWER_LOCAL_DELIVERY(UserID,MapServerPort,&SendPacket);
break;
case CMD_EVENT_LOCALWAR_JOIN :
ProcessCMD_EVENT_LOCALWAR_JOIN(&SendPacket,&tempPacket);
SendCMD_ANSWER_LOCAL_DELIVERY(UserID,MapServerPort,&SendPacket);
break;
}
}
void SetEventLocalWarJoinResult(int UserID,int Result)
{
switch(Result)
{
case 0 :
case 2 :
case 3 : connections[UserID].chrlst.EventLocalWarJoin=0; break;
case 1 : connections[UserID].chrlst.EventLocalWarJoin=1; break;
}
}
void RecvCMD_ANSWER_LOCAL_DELIVERY(t_packet *p, t_connection c[], int cn)
{
DWORD UserID;
t_packet tempPacket;
UserID=p->u.LocalWar.Delivery_A.UserID;
tempPacket.h.header.size=p->u.LocalWar.Delivery_A.Size;// 030518 kyo
tempPacket.h.header.type=p->u.LocalWar.Delivery_A.nType; // 030518 kyo
//memcpy((char*)&tempPacket,p->u.LocalWar.Delivery_A.Data,p->u.LocalWar.Delivery_A.Size);
memcpy((char*)&(tempPacket.u),(p->u.LocalWar.Delivery_A.Data),p->u.LocalWar.Delivery_A.Size); // 030518 kyo
switch (tempPacket.h.header.type)
{
case CMD_EVENT_LOCALWAR_JOIN_RESULT : SetEventLocalWarJoinResult(UserID,tempPacket.u.LocalWar.CommonDataC.Data); break;
}
QueuePacket(c,UserID,&tempPacket,1);
}
void RecvCMD_LOCALWAR_STATUS(t_packet *p, t_connection c[], int cn )
{
t_packet packet;
if (isNationManageServer())
{
ProcessCMD_LOCALWAR_STATUS(&packet,p);
QueuePacket(c,cn,&packet,1);
}
else SendCMD_REQUEST_LOCAL_DELIVERY(p,c,cn);
}
void RecvCMD_REQUEST_LOCALWAR_INFO(t_packet *p, t_connection c[], int cn )
{
t_packet packet;
if (isNationManageServer())
{
ProcessCMD_REQUEST_LOCALWAR_INFO(&packet,p);
QueuePacket(c,cn,&packet,1);
}
else SendCMD_REQUEST_LOCAL_DELIVERY(p,c,cn);
}
void IncLocalWarfieldMemberCount(int cn)
{
if (g_isLocalWarServer)
{
if (connections[cn].chrlst.JoinLocalWar)
{
t_packet packet;
g_pLocalWarfield->IncManCount(g_pLocalWarfield->ConvertNation2Index(connections[cn].chrlst.name_status.nation));
packet.h.header.type=CMD_INC_USER_LOCALWARFIELD;
packet.u.LocalWar.LocalWarUserAdd.Index=g_pLocalWarfield->GetLocalWarfieldIndex();
packet.u.LocalWar.LocalWarUserAdd.Nation=connections[cn].chrlst.name_status.nation;
packet.h.header.size=sizeof(t_LocalWarUserAdd);
SendPacket2NWManager(&packet);
}
}
}
void DecLocalWarfieldMemberCount(int cn)
{
t_packet packet;
if (g_isLocalWarServer)
{
if (connections[cn].chrlst.JoinLocalWar)
{
g_pLocalWarfield->DecManCount(g_pLocalWarfield->ConvertNation2Index(connections[cn].chrlst.name_status.nation));
packet.h.header.type=CMD_DEC_USER_LOCALWARFIELD;
packet.u.LocalWar.LocalWarUserAdd.Index=g_pLocalWarfield->GetLocalWarfieldIndex();
packet.u.LocalWar.LocalWarUserAdd.Nation=connections[cn].chrlst.name_status.nation;
packet.h.header.size=sizeof(t_LocalWarUserAdd);
SendPacket2NWManager(&packet);
}
}
}
void RecvCMD_LOCALWAR_JOIN(t_packet *p, t_connection c[], int cn )
{
LPCHARLIST ch = ::CheckServerId(cn);
if(!ch){return;}
t_packet packet, packet2;
if (!ch->JoinLocalWar)
{
if (ch->name_status.nation!=MapInfo[MapNumber].nation)
{ // 惫利捞 促弗 甘俊辑绰 曼咯且荐 绝促.
packet.h.header.type=CMD_LOCALWAR_JOIN_RESULT;
packet.u.LocalWar.CommonDataC.Data=FALSE;
packet.h.header.size=sizeof(t_CommonDataC);
QueuePacket(c,cn,&packet,1);
return;
}
ch->JoinLocalWar=TRUE;
packet.h.header.type=CMD_LOCALWAR_JOIN_RESULT;
packet.u.LocalWar.CommonDataC.Data=TRUE;
packet.h.header.size=sizeof(t_CommonDataC);
QueuePacket(c,cn,&packet,1);
g_pLogManager->SaveLocalWarInfo(ch); // CSD-040407
packet2.h.header.type=CMD_USER_JOIN_LOCALWAR; //蜡历啊 惫瘤傈俊 炼牢 沁促绊 舅妨霖促.
packet2.u.LocalWar.UserJoinLocalWar.ServerID=cn;
packet2.h.header.size=sizeof(t_UserJoinLocalWar);
CastMe2Other( cn, &packet2);
IncLocalWarfieldMemberCount(cn);
}
}
void RecvCMD_REQUEST_COMPARE_PHASE(t_packet *p, t_connection c[], int cn )
{
int NewPhase;
if (!connections[cn].chrlst.JoinLocalWar) return;
if (g_isLocalWarServer)
{
if (connections[cn].chrlst.name_status.nation!=MapInfo[MapNumber].nation)
{
NewPhase=g_pLocalWarfield->GetLocalWarfieldPhase();
switch (connections[cn].chrlst.CurrentPhase)
{
case 0 :
switch(NewPhase)
{
case 1 : connections[cn].chrlst.CurrentPhase=1; break;
case 2 : connections[cn].chrlst.CurrentPhase=2; break;
}
break;
case 1 :
switch(NewPhase)
{
case 2 : connections[cn].chrlst.CurrentPhase=2; break;
}
break;
default : connections[cn].chrlst.CurrentPhase=NewPhase;
}
}
IncLocalWarfieldMemberCount(cn);
}
else
{
if (connections[cn].chrlst.JoinLocalWar) connections[cn].chrlst.CurrentPhase=0;
}
}
void RecvCMD_INC_USER_LOCALWARFIELD(t_packet *p, t_connection c[], int cn )
{
int Index=p->u.LocalWar.LocalWarUserAdd.Index;
int NationIndex=g_pNation->ConvertNation2Index(p->u.LocalWar.LocalWarUserAdd.Nation);
int Nation=p->u.LocalWar.LocalWarUserAdd.Nation;
g_pNation->IncLocalWarfieldManCount(Index,NationIndex);
MyLog(0,"曼咯牢盔 函悼 __ 锅龋 : %d, 惫利 : %d , 牢盔 : %d",Index,Nation,g_pNation->GetLocalWarfieldManCount(Index,NationIndex));
}
void RecvCMD_DEC_USER_LOCALWARFIELD(t_packet *p, t_connection c[], int cn )
{
int Index=p->u.LocalWar.LocalWarUserAdd.Index;
int NationIndex=g_pNation->ConvertNation2Index(p->u.LocalWar.LocalWarUserAdd.Nation);
int Nation=p->u.LocalWar.LocalWarUserAdd.Nation;
g_pNation->DecLocalWarfieldManCount(Index,NationIndex);
MyLog(0,"曼咯牢盔 函悼 __ 锅龋 : %d, 惫利 : %d , 牢盔 : %d",Index,Nation,g_pNation->GetLocalWarfieldManCount(Index,NationIndex));
}
void SendCMD_LOCALWAR_BEGIN2Client()
{ //< CSD-CN-031213
t_packet p;
p.h.header.type = CMD_LOCALWAR_BEGIN;
p.h.header.size = 0;
g_pUserManager->SendPacket(&p);
} //> CSD-CN-031213
void SendCMD_LOCALWAR_FAME_EXP(CHARLIST* ch,int Fame,int Exp)
{
t_packet packet;
packet.h.header.type=CMD_LOCALWAR_FAME_EXP;
packet.u.LocalWar.FameExpChange.GainedFame=Fame;
packet.u.LocalWar.FameExpChange.GainedExp=Exp;
packet.h.header.size=sizeof(t_FameExpChange);
QueuePacket(connections,ch->GetServerID(),&packet,1);
}
void CalcGainedFame(CHARLIST* ch)// LTS DUAL FAME
{
short OldFame = ch->fame;
if (ch->GainedFame>=9)
{//掂倔其烙捞 9捞惑捞搁 其烙篮 12, 掂倔其烙篮 8刘啊
SaveChangeFame(ch,ch->fame,ch->fame+12,LF_LOCALWAR);// 020909 LTS
ch->fame+=12;// 胶颇捞 霸烙阑 困茄 蔼阑 刘啊矫挪促.
MyLog(0,"Fame Changed , Name:[%s], Nation:[%d], OldFame:[%d], NewFame:[%d], Differ:[%d]",ch->Name,ch->name_status.nation,OldFame,ch->fame,ch->fame-OldFame);
const int iOldDF = var[ch->GetServerID()][DUAL_FAME_FIELD];
const int iNewDF = iOldDF+8;
var[ch->GetServerID()][DUAL_FAME_FIELD] = iNewDF;
::SaveChangeDualFame( ch, iOldDF, iNewDF, LDF_LOCALWAR);
::MyLog(0,"Increase User Spy Game Point, User : %s, OldPoint %d, NewPoint %d",ch->Name,iOldDF,iNewDF);
}
else
{
if (ch->GainedFame>0)
{
SaveChangeFame(ch,ch->fame,ch->fame+ch->GainedFame,LF_LOCALWAR); // 020909 LTS
ch->fame+=ch->GainedFame;
MyLog(0,"Fame Changed , Name:[%s], Nation:[%d], OldFame:[%d], NewFame:[%d], Differ:[%d]",ch->Name,ch->name_status.nation,OldFame,ch->fame,ch->fame-OldFame);
}
int tempValue=2+ch->GainedFame;
if (tempValue>=8)
{
const int iOldDF = var[ch->GetServerID()][DUAL_FAME_FIELD];
const int iNewDF = iOldDF+8;
var[ch->GetServerID()][DUAL_FAME_FIELD] = iNewDF;
::SaveChangeDualFame( ch, iOldDF, iNewDF, LDF_LOCALWAR);
::MyLog(0,"Increase User Spy Game Point, User : %s, OldPoint %d, NewPoint %d",ch->Name,iOldDF,iNewDF);
}
else
{
if (tempValue>1) // 钦捞 剧牢 荤恩俊霸
{
const int iOldDF = var[ch->GetServerID()][DUAL_FAME_FIELD];
const int iNewDF = iOldDF+tempValue;
var[ch->GetServerID()][DUAL_FAME_FIELD] = iNewDF;
::SaveChangeDualFame( ch, iOldDF, iNewDF, LDF_LOCALWAR);
::MyLog(0,"Increase User Spy Game Point, User : %s, OldPoint %d, NewPoint %d",ch->Name,iOldDF,iNewDF);
}
else // 钦捞 澜牢 荤恩俊霸
{
const int iOldDF = var[ch->GetServerID()][DUAL_FAME_FIELD];
const int iNewDF = iOldDF+2;
var[ch->GetServerID()][DUAL_FAME_FIELD] = iNewDF;
::SaveChangeDualFame( ch, iOldDF, iNewDF, LDF_LOCALWAR);
::MyLog(0,"Increase User Spy Game Point, User : %s, OldPoint %d, NewPoint %d",ch->Name,iOldDF,iNewDF);
}
}
}
int tempFame=ch->fame-OldFame;
if (tempFame>=5&&tempFame<=9)
{
int tempExp_Grade = ch->GetLevel() - 4; // CSD-030806
if (tempExp_Grade>110) {tempExp_Grade=110;}
if (ch->ChangeUpAddExpBonus(g_pNationWar_Exp[tempExp_Grade]))
{ //< CSD-TW-030624
::isLevelUp(ch);
SendCMD_LOCALWAR_FAME_EXP(ch,tempFame,g_pNationWar_Exp[tempExp_Grade]);
} //> CSD-TW-030624
else
{
SendCMD_LOCALWAR_FAME_EXP(ch,tempFame,0);
}
}
else if (tempFame>=10&&tempFame<=11)
{
int tempExp_Grade = ch->GetLevel() - 2; // CSD-030806
if (tempExp_Grade>110){ tempExp_Grade=110;}
if (ch->ChangeUpAddExpBonus(g_pNationWar_Exp[tempExp_Grade]))
{ //< CSD-TW-030624
::isLevelUp(ch);
SendCMD_LOCALWAR_FAME_EXP(ch,tempFame,g_pNationWar_Exp[tempExp_Grade]);
} //> CSD-TW-030624
else
{
SendCMD_LOCALWAR_FAME_EXP(ch,tempFame,0);
}
}
else if (tempFame==12)
{
int tempExp_Grade = ch->GetLevel(); // CSD-030806
if (tempExp_Grade>110){tempExp_Grade=110;}
if (ch->ChangeUpAddExpBonus(g_pNationWar_Exp[tempExp_Grade]))
{ //< CSD-TW-030624
::isLevelUp(ch);
SendCMD_LOCALWAR_FAME_EXP(ch,tempFame,g_pNationWar_Exp[tempExp_Grade]);
} //> CSD-TW-030624
else
{
SendCMD_LOCALWAR_FAME_EXP(ch,tempFame,0);
}
}
else
{
SendCMD_LOCALWAR_FAME_EXP(ch,tempFame,0);
}
}
//020828 lsw
void CalcMapUsersGainedFame(int Nation)
{ //< CSD-HK-030829
for (int i = DRAGON_CONNECTIONS_START; i < DRAGON_MAX_CONNECTIONS; ++i)
{
CHARLIST* pUser = CheckServerId(i);
if (pUser != NULL)
{
if (pUser->JoinLocalWar && pUser->name_status.nation == Nation)
{
CalcGainedFame(pUser);
}
else // 胶颇捞 霸烙阑 困茄 蔼阑 诀单捞飘 茄促.
{
if (pUser->JoinLocalWar)
{
int tempValue = pUser->GainedFame + 2;
if (tempValue >= 8)
{
const int iOldDF = var[i][DUAL_FAME_FIELD];
const int iNewDF = iOldDF + 8;
var[pUser->GetServerID()][DUAL_FAME_FIELD] = iNewDF;
::SaveChangeDualFame(pUser, iOldDF, iNewDF, LDF_LOCALWAR);
::MyLog(0,"Increase User Spy Game Point, User : %s, OldPoint %d, NewPoint %d", pUser->Name, iOldDF, iNewDF);
}
else
{
if (tempValue>1) // 0焊促 奴荤恩俊霸.... 掘篮 蔼阑
{
const int iOldDF = var[i][DUAL_FAME_FIELD];
const int iNewDF = iOldDF + tempValue;
var[i][DUAL_FAME_FIELD] = iNewDF;
::SaveChangeDualFame(pUser, iOldDF, iNewDF, LDF_LOCALWAR);
::MyLog(0,"Increase User Spy Game Point, User : %s, OldPoint %d, NewPoint %d", pUser->Name, iOldDF, iNewDF);
}
else // 0焊促 累篮 荤恩篮.. 公炼扒2
{
const int iOldDF = var[i][DUAL_FAME_FIELD];
const int iNewDF = iOldDF + 2;
var[i][DUAL_FAME_FIELD] = iNewDF;
::SaveChangeDualFame(pUser, iOldDF, iNewDF, LDF_LOCALWAR);
::MyLog(0,"Increase User Spy Game Point, User : %s, OldPoint %d, NewPoint %d", pUser->Name, iOldDF, iNewDF);
}
}
}
}
}
}
} //> CSD-HK-030829
void SendCMD_LOCALWAR_END2Client(t_packet* p)
{ //< CSD-CN-031213 : 泅犁 甘狼 惫瘤傈俊 曼啊茄 葛电 蜡历狼 曼啊甫 秒家茄促.
g_pUserManager->SendPacket(p);
CUserManager::HASH_USER user = g_pUserManager->GetUserSet();
for (CUserManager::ITOR_USER i = user.begin(); i != user.end(); ++i)
{
CHARLIST* pUser = CheckServerId(i->second);
if (pUser != NULL && pUser->JoinLocalWar)
{
CheckAndSendChangeEquip(pUser, 1);
//pUser->JoinLocalWar = 0; // 030520 kyo
}
}
} //> CSD-CN-031213
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -