📄 gameresourcemanager.cpp
字号:
pList->AttackRate = new DWORD[2];
pList->SkillInfo = new CSkillInfo*[2];
pList->AttackIndex[0] = file.GetWord();
pList->AttackIndex[1] = file.GetWord();
pList->SkillInfo[0] = SKILLMGR->GetSkillInfo((WORD)pList->AttackIndex[0]);
pList->SkillInfo[1] = SKILLMGR->GetSkillInfo((WORD)pList->AttackIndex[1]);
pList->AttackRate[0] = file.GetWord();
pList->AttackRate[1] = file.GetWord();
pList->MinDropMoney = file.GetDword();// 弥家捣 咀荐
pList->MaxDropMoney = file.GetDword();// 弥措 捣 咀荐
ASSERT(pList->MaxDropMoney >= pList->MinDropMoney);
pList->DropRate[eMONEY] = file.GetWord();// 捣 犬伏(%)
pList->DropRate[eITEM1] = file.GetWord();// 酒捞袍 犬伏(%)
pList->DropRate[eITEM2] = file.GetWord();// 酒捞袍 犬伏(%)
pList->DropRate[eITEM3] = file.GetWord();// 酒捞袍 犬伏(%)
pList->DropRate[eNOITEM] = file.GetWord();// 畴袍 犬伏(%)
for(int n=0;n<eDROPITEMKIND_MAX;++n)
pList->CurDropRate[n] = pList->DropRate[n];
pList->ItemListNum1 = file.GetWord();// 秦寸酒捞袍府胶飘钎锅龋
pList->ItemListNum2 = file.GetWord();// 秦寸酒捞袍府胶飘钎锅龋
pList->ItemListNum3 = file.GetWord();// 秦寸酒捞袍府胶飘钎锅龋
pList->MaxDropItemNum = file.GetByte();// 弥措酒捞袍 肮荐
pList->fRunawayLifeRate = file.GetFloat();
pList->RunawayRate = file.GetWord();
pList->RunawayHelpRate = file.GetWord();
pList->RunawayDistance = file.GetWord(); //????
pList->Talk1 = file.GetWord(); // 措荤 1
pList->Talk2 = file.GetWord();
pList->Talk3 = file.GetWord();
pList->HelpRequestCondition = file.GetWord();
pList->HelpRequestDistance = file.GetWord();
pList->HelpRequestTargetNum = file.GetWord();
pList->RecallCondition = file.GetWord();
pList->RecallObjectID = file.GetWord();
pList->RecallObjectNum = file.GetWord();
pList->InitHelpType = file.GetWord();
pList->bHearing = file.GetBool();
pList->HearingDistance = file.GetDword();
ASSERT(!m_SMonsterListTable.GetData(pList->MonsterKind));
m_SMonsterListTable.Add(pList, pList->MonsterKind);
++n;
}
return TRUE;
}
BOOL CGameResourceManager::LoadNpcList(NPC_LIST* pNpcList)
{
CMHFile fp;
#ifdef _FILE_BIN_
fp.Init("./Resource/NpcList.bin", "rb");
#else
fp.Init("./Resource/NpcList.txt", "rt");
#endif
int idx = 0;
if(!fp.IsInited()) return FALSE;
while(1)
{
if(fp.IsEOF())
break;
pNpcList[idx].NpcKind = fp.GetWord();
fp.GetString(pNpcList[idx].Name);
pNpcList[idx].ModelNum = fp.GetWord();
pNpcList[idx].JobKind = fp.GetWord();
idx++;
}
fp.Release();
#ifdef _SERVER_RESOURCE_FIELD_
SetNpcListLoadFlag(TRUE);
#endif
return TRUE;
}
BOOL CGameResourceManager::LoadMapChangeArea(MAPCHANGE_INFO* pMapChangeArea)
{
char filename[64];
CMHFile file;
#ifdef _FILE_BIN_
sprintf(filename,"./Resource/MapChange.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"./Resource/MapChange.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int n =0;
while(1)
{
if(file.IsEOF())
break;
pMapChangeArea[n].Kind = file.GetWord();
file.GetString(pMapChangeArea[n].CurMapName);
file.GetString(pMapChangeArea[n].ObjectName);
pMapChangeArea[n].CurMapNum = file.GetWord();
pMapChangeArea[n].MoveMapNum = file.GetWord();
pMapChangeArea[n].CurPoint.x = file.GetFloat();
pMapChangeArea[n].CurPoint.y = 0;
pMapChangeArea[n].CurPoint.z = file.GetFloat();
pMapChangeArea[n].MovePoint.x = file.GetFloat();
pMapChangeArea[n].MovePoint.y = 0;
pMapChangeArea[n].MovePoint.z = file.GetFloat();
pMapChangeArea[n].chx_num = file.GetWord();
++n;
}
return TRUE;
}
BOOL CGameResourceManager::LoadLoginPoint(LOGINPOINT_INFO* pLogin)
{
char filename[64];
CMHFile file;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/LoginPoint.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"Resource/LoginPoint.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int n =0;
while(1)
{
if(file.IsEOF())
break;
pLogin[n].Kind = file.GetWord();
file.GetString(pLogin[n].MapName);
pLogin[n].MapNum = file.GetWord();
pLogin[n].MapLoginPointNum = file.GetByte();
if(pLogin[n].MapLoginPointNum == 0)
{
MessageBox(NULL,"LoginPointNum is Zero!!!",0,0);
}
if(pLogin[n].MapLoginPointNum > 10)
{
MessageBox(NULL,"LoginPointNum is too big!!!",0,0);
}
for(int i=0;i<pLogin[n].MapLoginPointNum;++i)
{
pLogin[n].CurPoint[i].x = file.GetFloat();
pLogin[n].CurPoint[i].y = 0;
pLogin[n].CurPoint[i].z = file.GetFloat();
}
pLogin[n].chx_num = file.GetWord();
++n;
}
return TRUE;
}
#ifdef _MAPSERVER_
BOOL CGameResourceManager::CheckCorrectLoginPoint(VECTOR3* pos)
{
static float maxdist = 1000;
for( int i = 0; i < MAX_POINT_NUM; i++)
{
if(m_LoginPoint[i].MapNum == GetLoadMapNum())
{
for(int n=0;n<m_LoginPoint[i].MapLoginPointNum;++n)
{
float dist = CalcDistanceXZ(pos,&m_LoginPoint[i].CurPoint[n]);
if(dist < maxdist) //烙狼
return TRUE;
}
}
}
for( i = 0; i < MAX_POINT_NUM; i++)
{
if(m_MapChangeArea[i].MoveMapNum == GetLoadMapNum())
{
float dist = CalcDistanceXZ(pos,&m_MapChangeArea[i].MovePoint);
if(dist < maxdist) //烙狼
return TRUE;
}
}
return FALSE;
}
void CGameResourceManager::GetRegenPoint(VECTOR3& pos,VECTOR3& RandPos,WORD LoginIndex,WORD MapchangeIndex)
{
if(MapchangeIndex)
{
MAPCHANGE_INFO* changeinfo = GetMapChangeInfo(MapchangeIndex);
if(!changeinfo)
{
char temp[128];
sprintf(temp,"MapChangePoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
ASSERTMSG(0,temp);
pos.x = 25000;
pos.y = 0;
pos.z = 25000;
}
else
{
if(changeinfo->MoveMapNum != GAMERESRCMNGR->GetLoadMapNum())
MapchangeIndex = 0;
else
{
pos.x = changeinfo->MovePoint.x;
pos.y = 0;
pos.z = changeinfo->MovePoint.z;
}
}
}
if(MapchangeIndex == 0)
{
LOGINPOINT_INFO* LoginPoint = GetLoginPointInfoFromMapNum(GAMERESRCMNGR->GetLoadMapNum());//LoginIndex);
if(!LoginPoint)
{
char temp[128];
sprintf(temp,"LoginPoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
ASSERTMSG(0,temp);
pos.x = 25000;
pos.y = 0;
pos.z = 25000;
}
else
{
int rl = rand() % LoginPoint->MapLoginPointNum;
pos.x = LoginPoint->CurPoint[rl].x;
pos.y = 0;
pos.z = LoginPoint->CurPoint[rl].z;
}
}
int temp;
temp = rand() % 500 - 250;
RandPos.x = pos.x + temp;
temp = rand() % 500 - 250;
RandPos.z = pos.z + temp;
RandPos.y = 0;
ASSERT(!(pos.x == 0 && pos.z == 0));
}
void CGameResourceManager::GetRegenPointFromEventMap( VECTOR3& pos,VECTOR3& RandPos,WORD LoginIndex,WORD MapchangeIndex,DWORD dwTeam)
{
if(MapchangeIndex)
{
MAPCHANGE_INFO* changeinfo = GetMapChangeInfo(MapchangeIndex);
if(!changeinfo)
{
char temp[128];
sprintf(temp,"MapChangePoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
ASSERTMSG(0,temp);
pos.x = 25000;
pos.y = 0;
pos.z = 25000;
}
else
{
if(changeinfo->MoveMapNum != GAMERESRCMNGR->GetLoadMapNum())
MapchangeIndex = 0;
else
{
pos.x = changeinfo->MovePoint.x;
pos.y = 0;
pos.z = changeinfo->MovePoint.z;
}
}
}
if(MapchangeIndex == 0)
{
LOGINPOINT_INFO* LoginPoint = GetLoginPointInfoFromMapNum(GAMERESRCMNGR->GetLoadMapNum());//LoginIndex);
if(!LoginPoint)
{
char temp[128];
sprintf(temp,"LoginPoint is abnormal mappoint:%d,loginpoin:%d",MapchangeIndex,LoginIndex);
ASSERTMSG(0,temp);
pos.x = 25000;
pos.y = 0;
pos.z = 25000;
}
else
{
int rl = dwTeam - 1;
pos.x = LoginPoint->CurPoint[rl].x;
pos.y = 0;
pos.z = LoginPoint->CurPoint[rl].z;
}
}
int temp;
temp = rand() % 500 - 250;
RandPos.x = pos.x + temp;
temp = rand() % 500 - 250;
RandPos.z = pos.z + temp;
RandPos.y = 0;
ASSERT(!(pos.x == 0 && pos.z == 0));
}
#endif
//-----------------------------------------------------------------------------------------------------------//
// 辑滚父 荤侩窍绰 何盒
#ifdef _SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
void CGameResourceManager::GetMonsterStats(WORD wMonsterKind, monster_stats * stats)
{
/* stats->AttributeAttackMin1 = GetMonsterInfo(wMonsterKind)->Attack1Property;
stats->AttributeAttackMax1 = GetMonsterInfo(wMonsterKind)->Attack2Property;
stats->AttributeAttackMin2 = GetMonsterInfo(wMonsterKind)->Attack1Property;
stats->AttributeAttackMax2 = GetMonsterInfo(wMonsterKind)->Attack2Property;*/
stats->Attack1OccurProportion = (WORD)GetMonsterListInfo(wMonsterKind)->AttackRate[0]; // 傍拜1 惯积 犬伏
stats->PhysicalAttackMin1 = GetMonsterListInfo(wMonsterKind)->AttackPhysicalMin; // 傍拜1 弥家 傍拜仿
stats->PhysicalAttackMax1 = GetMonsterListInfo(wMonsterKind)->AttackPhysicalMax;
// stats->PhysicalAttackMin2 = GetMonsterInfo(wMonsterKind)->Attack2PhysicalMin; // 傍拜1 弥家 傍拜仿
// stats->PhysicalAttackMax2 = GetMonsterInfo(wMonsterKind)->Attack2PhysicalMax;
// 规绢
stats->PhysicalDefense = GetMonsterListInfo(wMonsterKind)->PhysicalDefense;
stats->AttributeResist = GetMonsterListInfo(wMonsterKind)->AttribResist;
}
BOOL CGameResourceManager::LoadNpcRegen(NPC_REGEN pNpcRegen[MAX_NPC_GROUPNUM][MAX_NPC_REGEN_NUM])
{
char filename[64];
char value[64] = {0,};
CMHFile file;
#ifdef _FILE_BIN_
sprintf(filename,"./Resource/NpcRegen.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"./Resource/NpcRegen.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int n =0;
WORD Group = 1;
WORD count = 1;
while(1)
{
if(file.IsEOF())
break;
if(Group > MAX_NPC_GROUPNUM || n > MAX_NPC_REGEN_NUM) break;
if(count > MONSTERGROUPUNIT)
{
count = 1;
n = 1;
Group++;
m_TotalNpcGroupCount++;
}
pNpcRegen[Group][n].MapNum = file.GetWord();
if(pNpcRegen[Group][n].MapNum == 0)
break;
pNpcRegen[Group][n].NpcKind = file.GetWord();
file.GetString(pNpcRegen[Group][n].Name);
pNpcRegen[Group][n].NpcIndex = (WORD)file.GetDword();
pNpcRegen[Group][n].Pos.x = file.GetFloat();
pNpcRegen[Group][n].Pos.y = 0;
pNpcRegen[Group][n].Pos.z = file.GetFloat();
pNpcRegen[Group][n].Angle = file.GetFloat();
count++;
n++;
if(n > m_MaxNpcRegenCount)
m_MaxNpcRegenCount = n;
}
SetNpcRegenLoadFlag(TRUE);
return TRUE;
}
void CGameResourceManager::SetLoadMapNum(WORD Mapnum)
{
m_LoadingMapNum = Mapnum;
}
//-----------------------------------------------------------------------------------------------------------//
#endif //_SERVER_RESOURCE_FIELD_
//-----------------------------------------------------------------------------------------------------------//
BOOL CGameResourceManager::LoadExpPoint()
{
char filename[64];
CMHFile file;
#ifdef _FILE_BIN_
sprintf(filename,"Resource/characterExpPoint.bin");
if(!file.Init(filename, "rb"))
return FALSE;
#else
sprintf(filename,"Resource/characterExpPoint.txt");
if(!file.Init(filename, "rt"))
return FALSE;
#endif
int idx =0;
while(1)
{
if(idx > MAX_CHARACTER_LEVEL_NUM-1) break;
if(file.IsEOF())
break;
file.GetWord(); // 饭骇
m_CharacterExpPoint[idx] = file.GetExpPoint(); // 版氰摹
idx++;
}
file.Release();
return TRUE;
}
BOOL CGameResourceManager::LoadPlayerxMonsterPoint()
{
#ifdef _FILE_BIN_
CMHFile file;
int idx = 0;
if( !file.Init( "Resource/PlayerxMonsterPoint.bin", "rb") )
return FALSE;
while(1)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -