📄 n_eventnpc.cpp
字号:
// N_EventNpc.cpp: implementation of the CN_EventNpc class.
//
//////////////////////////////////////////////////////////////////////
#include "stdafx.h"
#include "..\..\..\goods\Goods\Goods.h"
#include "..\..\Npc.h"
#include "..\..\..\Common.h"
#include "N_EventNpc.h"
#include "..\..\..\config.h"
#include "..\..\..\commandcheck.h"
extern char g_tszPathName[256];
extern rmfullglobals myglobs;
extern void GetXFileName(CPlayerInfo * lpPlayerInfo);
//////////////////////////////////////////////////////////////////////
// Construction/Destruction
//////////////////////////////////////////////////////////////////////
CN_EventNpc::CN_EventNpc(char *szPath, char *szNpcFile):CN_Disciple(szPath, szNpcFile)
{
FILE *pFile = NULL;
char szFileName[512], szBuf1[512], szBuf2[512];
int nAskType = 0;
g_HasEvent = 0;
g_pNpcEvent = NULL;
list<CEventAsk>::iterator iterEventAsk;
char szKeyWord[128] = "NULL";
nLimitCount = 0;
strcpy(szFileName, szPath);
strcat(szFileName, "\\");
strcat(szFileName, szNpcFile);
pFile = fopen(szFileName,"r");
if(pFile != NULL)
{
while(fscanf(pFile,"%s",szBuf1)!=EOF)
{
if(strcmp(szBuf1,"ㄆン") == 0)
{
fscanf(pFile,"%s",szBuf1);
if(strcmp(szBuf1,"礚") != 0)
{
strcpy(szBuf2, g_tszPathName);
strcat(szBuf2, "\\Event\\");
strcat(szBuf2, szBuf1);
LoadNpcEventFile(szBuf2);
for(iterEventAsk = (g_pNpcEvent->EventAskList).begin(); iterEventAsk != (g_pNpcEvent->EventAskList).end(); iterEventAsk++)
{
switch(iterEventAsk->AskType)
{
case EV_KEYWORD_Visible :
nAskType = NPCASK_visible;
break;
case EV_KEYWORD_Invisible :
nAskType = 0;
break;
default :
nAskType = 0;
break;
}
strcpy(szKeyWord,(iterEventAsk->KeyWord).c_str());
AddAsk(szKeyWord, nAskType, "");
}
}
}else if(!strcmp(szBuf1,"禦芥")) {
FILE *sfp=NULL;
int kp=0;
fscanf(pFile,"%s",szBuf1);
if(strcmp(szBuf1,"礚") != 0) {
strcpy(szBuf2, g_tszPathName);
strcat(szBuf2, "\\Event\\");
strcat(szBuf2, szBuf1);
sfp = fopen(szBuf2,"r");
nAsk = 0;
while(fscanf(sfp,"%s",szBuf1)!=EOF) {
//AssSale(szBuf1, 0,"");
}
}
}
} // while
fclose(pFile);
}else{
}
}
CN_EventNpc::~CN_EventNpc()
{
}
void CN_EventNpc::LoadNpcEventFile(char *szNpcEventFile)
{
// Load NPC Event File
FILE *pFile;
CString szStr;
//char szBuf1[64], szBuf2[64], szBuf3[64], szBuf4[64];
char szBuf1[512], szBuf2[512], szBuf3[512], szBuf4[512];
int nBuf1 = 0, nBuf2 = 0, nBuf3 = 0, nBuf4 = 0;
CEventAsk* pEventAsk = NULL;
CEventLimit* pEventLimit = NULL;
CEventRun* pEventRun = NULL;
// initialize g_pNpcEvent start
pFile = fopen(szNpcEventFile,"r");
if(pFile != NULL)
{
g_pNpcEvent = new CNpcEvent;
g_HasEvent = 1;
(g_pNpcEvent->EventAskList).clear();
while(fscanf(pFile,"%s",szBuf1)!=EOF) //while [AskItem]
{
szStr = szBuf1;
if(szStr == "[AskEnd]")
{
continue;
}
else if(szStr == "[AskItem]")
{
if(fscanf(pFile, "%s %s %s", szBuf1, szBuf2, szBuf3) == 3)
{
nBuf1 = atoi(szBuf2);
nBuf2 = atoi(szBuf3);
pEventAsk = new CEventAsk(szBuf1, nBuf1, nBuf2);
while(fscanf(pFile,"%s",szBuf1)!=EOF) //while [Default]
{
szStr = szBuf1;
if(szStr == "[AskEnd]")
{
break;
}
else if(szStr == "[DefaultEnd]")
{
break;
}
else if(szStr == "[Default]")
{
// Read Default EventRun data
fscanf(pFile,"%s",szBuf1);
szStr = szBuf1;
if(szStr == "[No]")
{
fscanf(pFile,"%s",szBuf1);
if(strcmp(szBuf1, "NULLMSG") == 0)
{
strcpy(szBuf1, "");
}
pEventAsk->MsgDefaultWhenNo = szBuf1;
while(fscanf(pFile,"%s",szBuf1)!=EOF) //while [Event] when [No]
{
szStr = szBuf1;
if(szStr == "[NoEnd]")
{
break;
}
if(szStr == "[EventRun]")
{
if(fscanf(pFile, "%s %s %s %s", szBuf1, szBuf2, szBuf3, szBuf4) == 4)
{
pEventRun = new CEventRun;
nBuf1 = atoi(szBuf1);
pEventRun->EventRunType = nBuf1;
pEventRun->EventRunItemName = szBuf2;
nBuf3 = atoi(szBuf3);
pEventRun->EventRunValue = nBuf3;
nBuf4 = atoi(szBuf4);
pEventRun->EventRunGoodKind = nBuf4;
}
(pEventAsk->DefaultEventRunListWhenNo).push_back(*pEventRun);
delete pEventRun;
}
} //while [Default Event] when [No]
} //if [Default No]
fscanf(pFile,"%s",szBuf1);
szStr = szBuf1;
if(szStr == "[Yes]")
{
fscanf(pFile,"%s",szBuf1);
if(strcmp(szBuf1, "NULLMSG") == 0)
{
strcpy(szBuf1, "");
}
pEventAsk->MsgDefaultWhenYes = szBuf1;
while(fscanf(pFile,"%s",szBuf1)!=EOF) //while [Event] when [Yes]
{
szStr = szBuf1;
if(szStr == "[YesEnd]")
{
break;
}
else if(szStr == "[EventRun]")
{
if(fscanf(pFile, "%s %s %s %s", szBuf1, szBuf2, szBuf3, szBuf4) == 4)
{
pEventRun = new CEventRun;
nBuf1 = atoi(szBuf1);
pEventRun->EventRunType = nBuf1;
pEventRun->EventRunItemName = szBuf2;
nBuf3 = atoi(szBuf3);
pEventRun->EventRunValue = nBuf3;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -