스크립트별로 완료 시간 로그에 기록하기[수정]
분류
봇관련
조회 수
1,090
추천 수
8
먼저 로그 내용을 파일로 저장할 수 있는 방법을 알려주신 디아블러네님에게 감사를 전합니다.
defaut.ntj의 내용에 몇 줄을 추가하면 스크립트를 완료하는데 걸린 시간을 저장할 수 있읍니다. 이렇게 시간을 기록하면 아템 픽업 장소도 자동으로 알 수 있고 치킨된 스크립트도 알 수 있기에 나름대로 도움이 될 것이라 생각합니다.
먼저 config/NTConfig.ntl을 열어서 파일의 맨 뒤에 디음처럼 변수 지정을 삽입합니다.
var my_starttime; // 추가
var my_endtime; // 추가
var my_scriptstarttime; // 추가
var my_scriptendtime; // 추가
....
그리고
default.ntj 파일을 열어서 함수 NTMain() 안에 다음 부분을 찾아
NT_LoadConfig();
NTSI_LoadNIPFiles();
my_starttime = GetTickCount(); // 추가
if(NTConfig_StartDelay > 0);
NTC_Delay(NTConfig_StartDelay);
게임 시작 시간을 변수에 저장합니다. 그런 다음 NTMain() 함수 끝부분에 게임 완료 시간을 변수로 저장해서 로그에 보냅니다.
my_endtime = GetTickCount(); // 추가
NTC_SendLogToOOG("Game is completed in " + ((my_endtime-my_starttime)/1000) + " seconds" ); // i added // 추가
ExitGame();
}
다음 스크립트 완료 시간을 기록하기 위해서는 스크립트 시작 시간을 변수로 저장하여야 합니다.
일단 첫 스크립트의 시작은 NTMain() 함수 안에 있으니 NTMain() 함수에서 다음 부분을 찾아 추가 합니다.
Load("bots/" + NTConfig_Script[CurScriptIndex]);
my_scriptstarttime = GetTickCount(); // 추가
스크립트의 완료는 NT_ScriptEvents(msg) 함수 안에 정의되어 있으므로 이 함수를 찾아 다음과 같이 추가합니다.
case "SCRIPT_END":
my_scriptendtime = GetTickCount(); // 추가
NTC_SendLogToOOG("Script [" + NTConfig_Script[CurScriptIndex] + "] in " + ((my_scriptendtime-
my_scriptstarttime)/1000) + " seconds" ); // 추가
if(++CurScriptIndex < NTConfig_Script.length)
{
NTTM_CheckAct();
Load("bots/" + NTConfig_Script[CurScriptIndex]);
my_scriptstarttime = GetTickCount(); // 추가
}
else
LastScript = true;
break;
즉 SCRIPT_END 메세지가 오면 스크립트가 완료된 것이므로 그 때 시간을 변수로 저장하고 스크립트 시작 시간을 빼서 로그에 기록합니다.
치킨이 있는 경우에는 스크립트가 완료된 것이 아니기 때문에 로그에 완료시간이 기록된 마지막 스크립트 다음 스크립트에서 치킨된 것이겠죠.
별 건 아니지만 두루네 식구 여러분께 도움이 되었으면 합니다.
===1/29 추가===
봇을 여러 개 돌릴 경우 스크립트 완료 시간이 한 로그 파일에 기록되면 다소 보는데 불편할 수 있어서 봇마다 다른 로그 파일을 사용하는게 좋습니다.
이 밑은 디아블러네님의 로그파일 기록 수정 내용 중 약간의 수정을 가한 것입니다.
원 수정 내용에서
function NTC_SendLogToOOG(logString)
{
var _file
var _logs;
_file=FileOpen("logs["+GetDate('-')+"].txt",2); ----> 바꿀 줄
_logs="["+ me.charname +" "+GetDate('/')+" "+GetTime()+"]"+logString; ---> 바꿀 줄
_file.WriteLine(_logs);
_file.Close();
return SendCopyData("D2NT Manager", null, 10<<16, logString);
}
표시한 두 줄을 다음처럼 바꿉니다.
_file=FileOpen(me.charname + "_"+GetDate('_')+".txt",2);
_logs="["+ GetTime()+"] "+logString;
그러면 봇마다 다른 이름의 로그 파일이 만들어져서 로그 기록을 살펴보는데 편리합니다.