📄 ltssupport.cpp
字号:
#include "..\stdafx.h"
#include <stdio.h>
#include "../LowerLayers/MyLog.h"
#include "../LowerLayers/servertable.h"
#include "SealStone.h"
#include "CItem.h"
#include "NationSys.h"
#include "LTSSupport.h"
#include "Scrp_exe.h"
#include "dungeon.h"
#include "LogManager.h"
#include "AIManager.h"
#include "UserManager.h"
extern void RecvReqResetAbility( short int cn );
extern bool isLevelUp(CHARLIST*);
#define ABILITY_REDISTRIBUTION_MONEY 1000000000 // 10撅 农复
cLocalWarfield* g_pLocalWarfield=NULL;
cEventLocalWarfield* g_pEventLocalWarfield=NULL; // 020115 LTS
cDragonLordWar g_pDragonLordWar; // LTS DRAGONLORD
int g_isLocalWarServer=0;
int g_LocalWarBegin=0;
int g_EventLocalWarBegin=0; // 020115 LTS
int g_EventLocalWarStatus=0; // 020115 LTS
int g_EventLocalWarStep=0; // 020115 LTS
int g_isEventLocalWarServer=0; // 020115 LTS
int g_EventMapPort=0; // 020115 LTS
POINTS g_StartPoint[6]; // 唱扼喊 2俺究
DWORD g_AbilityRedistributionMoney[10];
int g_LocalWarResult[3]={1,1,1}; // LTS NEW LOCALWAR
POINTS g_LocalWarMovePoint[7][3]; // LTS NEW LOCALWAR
// Extern Variable Define _______________________________________________________________
extern cNation* g_pNation;
extern WORD g_wMapServerPort;
extern int* g_pNationWar_Exp; // LTS NEW LOCALWAR
// Extern Variable Define End ___________________________________________________________
// Extern Function Define________________________________________________________________
extern bool isNationManageServer();
extern void SendPacket2NWManager(t_packet* p);
extern void SendPacket2Maps(t_packet* p);
extern void SetShape( unsigned char *equip, short int cn );
extern void SendPacket2NationClients(const int Nation,t_packet* p); //020903 lsw
extern void SendPacket2NationMaps(const int Nation,t_packet* p);//020903 lsw
extern CHARLIST* CheckServerId(WORD id);
extern ItemAttr* SearchInv( CHARLIST *ch ); // 011214 LTS
extern void MoveEmptyInv( ItemAttr *item, CHARLIST *ch ); // 011215 LTS
extern void SendPacket2NWMap(const WORD Port,t_packet* p); // 020115 LTS//020903 lsw
// Extern Function Define End____________________________________________________________
extern unsigned short g_DefensePoint[]; // BBD 040401
int Pos(char* PosString,char KeyChar) // LTS NEW LOCALWAR // 裹侩利牢 窃荐 酒丛
{
int StringLength=strlen(PosString);
for (int i=0;i<StringLength;i++)
{
if (PosString[i]==KeyChar) return i;
}
return -1;
}
void DeleteString(char* DeleteString,int Pos) // LTS NEW LOCALWAR // 裹侩利牢 窃荐 酒丛
{
char tempString[MAX_PATH] = {0,};
int StringLength=strlen(DeleteString);
int j=0;
for (int i=Pos;i<StringLength;i++)
{
tempString[j]=DeleteString[i];
j++;
}
tempString[j]=NULL;
memset(DeleteString,0,MAX_PATH);
sprintf(DeleteString,tempString);
}
void CopyString(char* SrcString,char* DestString,int Pos) // LTS NEW LOCALWAR // 裹侩利牢 窃荐 酒丛
{
for (int i=0;i<Pos;i++)
{
DestString[i]=SrcString[i];
}
DestString[i]=NULL;
}
int InitMapServerConfigINI() // 020115 LTS // LTS NEW LOCALWAR
{
// 030919 HK YGI
// char NetworkDir[MAX_PATH];
// char MapServerConfigFileName[MAX_PATH];
char tempString[MAX_PATH];
char tempString2[MAX_PATH];
SERVER_DATA *pData=g_pServerTable->GetOwnServerData();
short MapServerPort=pData->wPort;
/* if (GetPrivateProfileString("Network","path","",NetworkDir,MAX_PATH, MAP_SERVER_INI_)<=0)
{
MyLog(0,"Error!! Check MapServerConfig.ini Path Setting!!");
return FALSE;
}
sprintf(MapServerConfigFileName,"%s/data/MapServerConfig.ini",NetworkDir);*/// 030919 HK YGI
for (int i=0;i<10;i++)
{
sprintf(tempString,"NeedMoney%02d",i);
g_AbilityRedistributionMoney[i]=(int)GetPrivateProfileInt("AbilityRedistribution",tempString,0,MapServerConfigFileName);
}
int Position;
char tempString3[MAX_PATH];
for (i=0;i<7;i++)
{
sprintf(tempString,"LocalWarfield%dBYMovePoint",i);
GetPrivateProfileString("LocalWarMovePoint",tempString,"Error",tempString2,MAX_PATH,MapServerConfigFileName);
if (strcmp(tempString2,"Error")==0)
{
JustMsg("Error!! LocalWarMovePoint Read Error!! Check MapServerConfig.ini");
return FALSE;
}
Position=Pos(tempString2,',');
CopyString(tempString2,tempString3,Position);
g_LocalWarMovePoint[i][0].x=atoi(tempString3);
DeleteString(tempString2,Position+1);
g_LocalWarMovePoint[i][0].y=atoi(tempString2);
sprintf(tempString,"LocalWarfield%dZYMovePoint",i);
GetPrivateProfileString("LocalWarMovePoint",tempString,"Error",tempString2,MAX_PATH,MapServerConfigFileName);
if (strcmp(tempString2,"Error")==0)
{
JustMsg("Error!! LocalWarMovePoint Read Error!! Check MapServerConfig.ini");
return FALSE;
}
Position=Pos(tempString2,',');
CopyString(tempString2,tempString3,Position);
g_LocalWarMovePoint[i][1].x=atoi(tempString3);
DeleteString(tempString2,Position+1);
g_LocalWarMovePoint[i][1].y=atoi(tempString2);
sprintf(tempString,"LocalWarfield%dYLMovePoint",i);
GetPrivateProfileString("LocalWarMovePoint",tempString,"Error",tempString2,MAX_PATH,MapServerConfigFileName);
if (strcmp(tempString2,"Error")==0)
{
JustMsg("Error!! LocalWarMovePoint Read Error!! Check MapServerConfig.ini");
return FALSE;
}
Position=Pos(tempString2,',');
CopyString(tempString2,tempString3,Position);
g_LocalWarMovePoint[i][2].x=atoi(tempString3);
DeleteString(tempString2,Position+1);
g_LocalWarMovePoint[i][2].y=atoi(tempString2);
}
return TRUE;
}
DWORD GetAbilityRedistributionMoney(t_connection c[], int cn) // 020115 LTS
{ //< CSD-030806
const int Index = c[cn].chrlst.GetLevel()/10;
if (Index >= 9)
{
return g_AbilityRedistributionMoney[9];
}
return g_AbilityRedistributionMoney[Index];
} //> CSD-030806
void RecvCMD_CHECK_ABILITY_CHANGE_MONEY( t_packet *p, t_connection c[], int cn ) // 020115 LTS
{
t_packet packet;
packet.h.header.type=CMD_CHECK_ABILITY_CHANGE_MONEY;
packet.h.header.size=sizeof(t_CommonDataC);
CHARLIST *ch = CheckServerId(cn);
if(!ch){return;}
if (!ch->IsDual()) // 掂倔捞 酒聪搁 角青
{
SendCMD_COMFORM_RESET_ABILITY(ch);//020820 lsw
return;
}
else
{
packet.u.NationWar.CommonDataC.Data=5; // 掂倔角菩
}
QueuePacket(c,cn,&packet,1);
}
void MakeSealStoneNumber(char* SrcString,int SealNo[4]) // LTS NEW LOCALWAR // 裹侩利牢 窃荐 酒丛
{
int Position;
char tempString[MAX_PATH];
char tempSrcString[MAX_PATH];
strcpy(tempSrcString,SrcString);
for(int i=0;i<3;i++)
{
Position=Pos(tempSrcString,',');
CopyString(tempSrcString,tempString,Position);
SealNo[i]=atoi(tempString);
DeleteString(tempSrcString,Position+1);
}
SealNo[i]=atoi(tempSrcString);
}
// Where : Call From Main.cpp InitDrmapServerDatas()
// Usage : Initializing Local War System
bool InitLocalWarSystem() // LTS NEW LCOALWAR
{
// 030919 HK YGI
// char NetworkDir[MAX_PATH];
// char MapServerConfigFileName[MAX_PATH];
char KeyName[MAX_PATH];
int LocalWarfieldSize=0;
int tempPort;
int MapServerPort;
char tempString[MAX_PATH];
SERVER_DATA *pData=g_pServerTable->GetOwnServerData();
MapServerPort=pData->wPort;
/* if (GetPrivateProfileString("Network","path","",NetworkDir,MAX_PATH, MAP_SERVER_INI_)<=0)
{
MyLog(0,"Mapserver.ini狼 Path汲沥捞 肋给登绢乐嚼聪促.");
return false;
}
sprintf(MapServerConfigFileName,"%s/data/MapServerConfig.ini",NetworkDir);*/// 030919 HK YGI
LocalWarfieldSize=(DWORD)GetPrivateProfileInt("LocalWarfield","LocalWarfieldSize",0,MapServerConfigFileName);
if (!LocalWarfieldSize)
{
MyLog(0,"%s狼 [LocalWarfield],LocalWarfieldSize狼 汲沥捞 肋给登绢乐嚼聪促.",MapServerConfigFileName);
return false;
}
for (int i=0;i<LocalWarfieldSize;i++)
{
sprintf(KeyName,"LocalWarfield%dPort",i);
tempPort=(DWORD)GetPrivateProfileInt("LocalWarfield",KeyName,0,MapServerConfigFileName);
if (tempPort)
{
if (tempPort==MapServerPort)
{
if (NULL==g_pLocalWarfield)
{
g_pLocalWarfield=new cLocalWarfield;
LocalWarfield_Info tempLF;
g_isLocalWarServer=1;
tempLF.Index=i;
sprintf(KeyName,"LocalWarfield%dName",i);
if (GetPrivateProfileString("LocalWarfield",KeyName,"",tempLF.MapName,20,MapServerConfigFileName)<=0)
{
return false;
}
sprintf(KeyName,"LocalWarfield%dPort",i);
tempLF.Port=(DWORD)GetPrivateProfileInt("LocalWarfield",KeyName,0,MapServerConfigFileName);
if (!tempLF.Port)
{
return false;
}
sprintf(KeyName,"LocalWarfield%dPhase",i);
tempLF.Phase=(DWORD)GetPrivateProfileInt("LocalWarfield",KeyName,0,MapServerConfigFileName);
if (!tempLF.Phase)
{
if (i) return false;
}
sprintf(KeyName,"LocalWarfield%dBYSealStone",i);
GetPrivateProfileString("LocalWarfield",KeyName,NULL,tempString,MAX_PATH,MapServerConfigFileName);
if (tempString==NULL)
{
return false;
}
MakeSealStoneNumber(tempString,tempLF.SealNo[0]);
sprintf(KeyName,"LocalWarfield%dZYSealStone",i);
GetPrivateProfileString("LocalWarfield",KeyName,NULL,tempString,MAX_PATH,MapServerConfigFileName);
if (tempString==NULL)
{
return false;
}
MakeSealStoneNumber(tempString,tempLF.SealNo[1]);
sprintf(KeyName,"LocalWarfield%dYLSealStone",i);
GetPrivateProfileString("LocalWarfield",KeyName,NULL,tempString,MAX_PATH,MapServerConfigFileName);
if (tempString==NULL)
{
return false;
}
MakeSealStoneNumber(tempString,tempLF.SealNo[2]);
g_pLocalWarfield->SetLocalWarfieldInfo(tempLF);
}
return true;
}
}
else
{
return false;
}
}
return true;
}
void CloseLocalWarSystem()
{
SAFE_DELETE(g_pLocalWarfield);
}
int CanLocalWarAttack(CHARLIST* pAttacker,CHARLIST* pDefencer) // 020115 LTS 弥己悼 ,烙惑快傍悼
{
if (!g_LocalWarBegin) return FALSE; // 惫瘤傈捞 矫累登瘤 臼疽促搁 傍拜凳
if (!g_isLocalWarServer) return FALSE; // 惫瘤傈 辑滚啊 酒聪搁 傍拜凳
if (pAttacker->JoinLocalWar)
{
if (pDefencer->JoinLocalWar) // 笛促 惫瘤傈俊 曼咯沁促搁
{
if (pDefencer->name_status.nation==pAttacker->name_status.nation) return true; // 鞍篮唱扼捞搁 傍拜阂啊
else return FALSE; // 傍拜啊瓷
} else return TRUE; // 规绢磊啊 惫瘤傈俊 曼咯 窍瘤 臼疽促搁 傍拜阂啊
}
else
{
if (pDefencer->JoinLocalWar) // 规绢磊啊 惫瘤傈俊 曼咯 沁促搁
{
return TRUE; // 傍拜救凳
} else return FALSE; // 笛促 曼咯窍瘤 臼疽促搁 傍拜凳
}
}
int CheckLocalWarAttacker(CHARLIST* pAttacker) // 020115 LTS 弥己悼 傍悼
{
if (!g_LocalWarBegin) return TRUE;
if (!g_isLocalWarServer) return TRUE;
if (pAttacker->JoinLocalWar) return FALSE;
else return TRUE;
}
void IncGainedFame(CHARLIST* ch,int Value)
{
if (ch->GainedFame>=9) return;
MyLog(0,"Gained Fame 函版 , 捞抚 : %s, Old : %d, New : %d",ch->Name,ch->GainedFame,ch->GainedFame+Value);
ch->GainedFame+=Value;
}
void SendPacket2LocalWarJoinClients(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* pTarget = CheckServerId(idUser);
if (pTarget != NULL && pTarget->JoinLocalWar)
{
QueuePacket(connections, idUser, p, 1);
}
}
} //> CSD-CN-031213
void CheckLocalWarDeath(CHARLIST* pCaster,CHARLIST* pTarget) // 011217 LTS
{
const PointTBL[11] = { 1,1,1,2,2,2,2,2,3,3,4 }; // 痢荐拌魂 // 011219 LTS
short tempLevel;
short tempIndex;
unsigned short NationPoint[3]= {0,0,0}; // 020130 LTS
t_packet packet;
if (!g_isLocalWarServer) return; // 惫瘤傈辑滚啊 酒囱搁
if (!g_pLocalWarfield->GetLocalWarStatus()) return; // 傈里吝捞 酒聪搁
if (pCaster==NULL||pTarget==NULL) return; // 011217 LTS
if (!pCaster->IsPlayer()) return; // 020130 LTS
if (!pTarget->IsPlayer()) return;
if (pCaster->name_status.nation==pTarget->name_status.nation) return; //鞍篮 惫啊捞搁 老馆苞 悼老贸府
if (pCaster->JoinLocalWar&&pTarget->JoinLocalWar)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -