📄 magicdata.org
字号:
// MagicData.cpp: implementation of the CMagicData class.
//
//////////////////////////////////////////////////////////////////////
#include "MagicData.h"
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CMagicData::CMagicData()
{
this->Create();
//this->CreateAction();
}
CMagicData::~CMagicData()
{
this->Destroy();
}
//------------------------------------------------------------------
void CMagicData::CreateAction()
{
const char szIniFile[] = "ini/MagicTypeAction.ini";
FILE* fp = fopen(szIniFile, "r");
if(!fp)
return;
char szLine[1024];
while(true)
{
if(NULL == fgets(szLine, 1023, fp))
{
fclose(fp);
return;
}
if(szLine[0] == '[')
{
DWORD dwType, dwLevel;
DWORD dwAmount;
sscanf(szLine, "[%u_%d]", &dwType, &dwLevel);
if(1==fscanf(fp, "Amount=%d/n", &dwAmount))
{
for(int j = 0; j < m_setMagicType.size(); j ++)
{
if(m_setMagicType[j]->idMagicType == dwType &&
m_setMagicType[j]->dwLevel == dwLevel)
{
for(int i = 0; i < dwAmount; i ++)
{
int nAction;
if(1==fscanf(fp, "%d/n", &nAction))
{
m_setMagicType[j]->setAction.push_back(nAction);
}
}
}
}
}
}
}
}
//------------------------------------------------------------------
void CMagicData::Create()
{
// 需求不定 只能先从INI传创建,待需求稳定,改向Data。
const char szIniFile[] = "ini/MagicType.ini";
DWORD dwData[64];
char szFileName[_MAX_NAMESIZE];
char szDisc[64];
char szLine[1024];
FILE* fp = fopen(szIniFile, "r");
if(!fp)
return;
while(true)
{
// 扩展
char szIntoneEffect[64]; // 吟唱特效
char szIntoneSound[_MAX_PATH]; // 吟唱声效
char szSenderEffect[64]; // 攻击特效
char szSenderSound[_MAX_PATH]; // 攻击音效
DWORD dwTargetDelay; // 受击延时
char szTargetEffect[64]; // 受击特效
char szTargetSound[_MAX_PATH]; // 受击音效
char szGroundEffect[64]; // 地效索引
char szTraceEffect[64]; // 轨迹特效
int nResult = fscanf(fp, "%u %u %s %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %u %s %s %s %s %s %u %s %s %s %s %u %u %u/n",
&dwData[0], &dwData[1], szFileName,
&dwData[2], &dwData[3], &dwData[4], &dwData[5], &dwData[6],
&dwData[7], &dwData[8], &dwData[9], &dwData[10], &dwData[11],
&dwData[12], &dwData[13], &dwData[14], &dwData[15], &dwData[16],
&dwData[17], &dwData[18], &dwData[19],
&dwData[20], &dwData[21], &dwData[22], &dwData[23], &dwData[24], &dwData[25], &dwData[26],
&dwData[27], &dwData[28], &dwData[29], &dwData[30],
&dwData[31], &dwData[32], &dwData[33],
&dwData[34], szDisc, szIntoneEffect, szIntoneSound, szSenderEffect,
szSenderSound, &dwTargetDelay, szTargetEffect, szTargetSound,
szGroundEffect, szTraceEffect, &dwData[35], &dwData[36], &dwData[37] , &dwData[38],
&dwData[40]);
if(nResult == EOF)
{
fclose(fp);
return;
}
if(nResult != 50)
{
fscanf(fp, "%s/n", szLine);
continue;
}
MagicTypeInfo* pInfo = new MagicTypeInfo;
MYASSERT(pInfo);
pInfo->idMagicType = dwData[0];
pInfo->dwActionSort = dwData[1];
strcpy(pInfo->szName, szFileName);
pInfo->dwCrime = dwData[2];
pInfo->dwGround = dwData[3];
pInfo->dwMulti = dwData[4];
pInfo->dwTarget = dwData[5];
pInfo->dwLevel = dwData[6];
pInfo->dwMpCost = dwData[7];
pInfo->dwPotential = dwData[8];
pInfo->dwPower = dwData[9];
pInfo->dwIntoneDuration = dwData[10];
pInfo->dwHitPoint = dwData[11];
pInfo->dwDuration = dwData[12];
pInfo->dwRange = dwData[13];
pInfo->dwDistance = dwData[14];
pInfo->dwStatus = dwData[15];
pInfo->dwProfessionalRequired = dwData[16];
pInfo->dwExpRequired = dwData[17];
pInfo->dwMonsterLevelRequired = dwData[18];
pInfo->dwXp = dwData[19];
pInfo->dwWeaponSubType = dwData[20];
pInfo->dwActiveTime = dwData[21];
pInfo->dwAutoActive = dwData[22];
pInfo->dwFloorAttribute = dwData[23];
pInfo->dwAutoLearn = dwData[24];
pInfo->dwLearnLevel = dwData[25];
pInfo->dwDropWeapon = dwData[26];
pInfo->dwUsePP = dwData[27];
pInfo->dwWeaponHit = dwData[28];
pInfo->idUseItem = dwData[29];
pInfo->idNextMagic = dwData[30];
pInfo->dwMagicBreak = dwData[31];
pInfo->dwClientRepresent = dwData[32];
pInfo->dwSenderAction = dwData[33];
pInfo->dwNeedLevel = dwData[34];
pInfo->dwScreenRepresent = dwData[35];
pInfo->dwCanBeusedInMarket = dwData[36];
pInfo->dwTargetWoundDelay = dwData[37];
pInfo->dwDelay = dwData[40];
strcpy(pInfo->szIntoneEffect, szIntoneEffect);
strcpy(pInfo->szIntoneSound, szIntoneSound);
strcpy(pInfo->szSenderEffect, szSenderEffect);
strcpy(pInfo->szSenderSound, szSenderSound);
pInfo->dwTargetDelay = dwTargetDelay;
strcpy(pInfo->szTargetEffect, szTargetEffect);
strcpy(pInfo->szTargetSound, szTargetSound);
strcpy(pInfo->szGroundEffect, szGroundEffect);
strcpy(pInfo->szTraceEffect, szTraceEffect);
strcpy(pInfo->szDisc, szDisc);
m_setMagicType.push_back(pInfo);
}
}
//------------------------------------------------------------------
void CMagicData::Destroy()
{
int nAmount = m_setMagicType.size();
for(int i = 0; i < nAmount; i ++)
{
MagicTypeInfo* pInfo = m_setMagicType[i];
SAFE_DELETE(pInfo);
}
m_setMagicType.clear();
}
//------------------------------------------------------------------
BOOL CMagicData::GetMagicTypeInfo(OBJID dwIDType, DWORD dwLevel, MagicTypeInfo& infoMagic)
{
int nAmount = m_setMagicType.size();
for(int i = 0; i < nAmount; i ++)
{
MagicTypeInfo* pInfo = m_setMagicType[i];
if (pInfo &&
(pInfo->idMagicType == dwIDType) &&
(pInfo->dwLevel == dwLevel))
{
memcpy(&infoMagic, pInfo, sizeof(MagicTypeInfo));
return true;
}
}
return false;
}
//------------------------------------------------------------------
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -