Skip to content
봇관련다크 모드

[NTBot 2.5.3] 로그파일에 장소를 표시하자.

조회 수
1,694
추천 수
5
등록일

http://image.durune.com/_data/2008102500253380.jpg

<조건>
1. NTBot 2.5.3 Final (10/11) 을 기준으로 합니다.
2. Log file에서 Kept한 아이템만 표시가 됩니다.
3. 각자 원본 파일을 잘 보관하시고 시도하세요. 하루 정도 테스트 해보았는데..
문제 없어 올리는 것이지만. 각자 조금씩 사정이 틀리니까 꼭 원본 파일을 세이브 하시고 하세요.

----------------------------------------------------------------------------------------------------------------------------------
수정이 직접 쉽지 않으시다고 하셔서 수정한 파일을 자료실에 올렸습니다.
각자 조금씩 스크립트가 틀릴 수 있으므로 꼭 원본 파일을 저장하시고 테스트 해보시기 바랍니다.
압축을 풀어서 그대로 덮어 씌어 주시면 될 것 같습니다.
아래 링크에서 다운 받으세요.

http://tradia.me/diablo2/download/46841

----------------------------------------------------------------------------------------------------------------------------------

<수정 방법>

1단계 : 메니저에 장소 추가 하기

아토믹스 님의 자료를 보시고 그대로 수정을 합니다.

디아블로2 - 정강 게시판에서
아토믹스 님의 [NT] 로그파일에 어디서 주웠는지 표기해보자. 를 검색해 보시면 됩니다.
여기 설명대로 수정하면 매니져에서는 표시가 되나 로그.xml 에서는 표시 되지 않습니다.

http://tradia.me/diablo2/diablo2_tips/184936


2단계 : 로그파일에 장소 추가 하기

첫번째 : scripts\libs\itemlogger.dbl 에서 다음 문장을 찾아 아래 문장으로 수정합니다.

function writeLog(item, me, isEthereal, _mode) { 
//==> 아래 문장으로 수정.
function writeLog(item, me, isEthereal, _mode, Pre_Boss ) {

itemlog.item += <item id={itemid} char={me.charname} time={timestring} quality={item.quality} ethereal={isEthereal} mode={_mode} name={itemname}>{itemdesc}</item>;
//==> 아래 문장으로 수정. 마을에서 확인한 후 기록하는 함수이므로 직전 장소나 몹을 기록함. 
itemlog.item += <item id={itemid} char={me.charname} time={timestring} quality={item.quality} ethereal={isEthereal} mode={_mode} name={itemname} Pre_Boss={_Pre_Boss}>{itemdesc}</item>;


두번째 : scripts\libs\itemlogger.dbl 에서 조금전에 수정한 아래 함수를 복사합니다. 
============================================================
function writeLog(item, me, isEthereal, _mode, Pre_Boss ) {
 CheckLog()
 var time_now = new Date ();
 
~~~~~~~~~~~~~~~~~~~~~~~~~~ 아래 문장까지 총 56줄 정도 됨.
 
 // Overwrites the whole file
 fhandle.writeLine(content);
 fhandle.close();
}
===============================================================

복사 후에 이 파일의 (itemlogger.dbl ) 가장 밑에 줄을 보시면 

CheckLog(); <---- 라는 문장이 있습니다. 이 문장 바로 위에 복사한 것을 붙힙니다.


세번째 : 복사한 이후 복사한 함수만 아래와 같이 수정한다. !!! 위에 처음 수정한 함수는 그래로 두시고.....

function writeLog(item, me, isEthereal, _mode, Pre_Boss ) {
//==> 함수 이름을 바꾸어 줌.
function writeLog1(item, me, isEthereal, _mode, Pre_Boss ) {

itemlog.item += <item id={itemid} char={me.charname} time={timestring} quality={item.quality} ethereal={isEthereal} mode={_mode} name={itemname} Pre_Boss={_Pre_Boss}>{itemdesc}</item>;
//==>이 함수는 룬, 주얼, 재료 등과 같이 줍는 즉시 확인 되는 아템을 로그에 기록하는 함수임.
itemlog.item += <item id={itemid} char={me.charname} time={timestring} quality={item.quality} ethereal={isEthereal} mode={_mode} name={itemname} Pre_Boss={_Currunt_Boss}>{itemdesc}</item>;

=============================================================================

네번째 : scripts\libs\common\NTTownManager.dbl 에서 다음 문장을 찾아 아래 문장으로 수정합니다

writeLog(_items[i], me, _isEthereal, 0);
==> 아래 문장으로 수정. 두개 수정함.
writeLog(_items[i], me, _isEthereal, 0, _Pre_Boss);

writeLog(_items[i], me, _isEthereal, 1);
==> 아래 문장으로 수정. 한개 수정함. 이부분의 경우 대부분 앞에 //를 해서 주석 처리를 하는 것이 좋습니다. 멀티로 돌리때
==> 여러 봇이 동시에 로그를 만드는 경우 에러가 발생하는 경우가 있더군요.. 
writeLog(_items[i], me, _isEthereal, 1, _Pre_Boss);


다섯번째 : scripts\libs\common\NTSnagit.dbl 에서 다음 문장을 찾아 아래 문장으로 수정합니다

writeLog(_itemunit, me, _isEthereal, 0 );
==> 아래 문장으로 수정. 1군데 있음. 
writeLog1(_itemunit, me, _isEthereal, 0, _Currunt_Boss);



여섯번째 : scripts\logs\itemlog.xsl 에서 다음 문장을 찾아 아래 문장으로 수정합니다.

===============================================================================================
<div style="display: block; float: left; width: 50px; margin-right: 10px; margin-left: 10px;">
 <xsl:choose>
 <xsl:when test="@mode = '0'">
 Kept
 </xsl:when>
 <xsl:when test="@mode = '1'">
 Sold
 </xsl:when>
 </xsl:choose>
===============================================================================================
==> 아래 문장으로 수정. 5군데 있음.
기존에 Kept라고 표시되는 부분을 아이템을 찾는 보스몹이나 장소로 대체해서 나타내 줍니다.

==================================================================================================
<div style="display: block; float: left; width: 150px; margin-right: 10px; margin-left: 10px;">
 <xsl:choose>
 <xsl:when test="@mode = '0'">
 <xsl:value-of select="@Pre_Boss"/>
 </xsl:when>
 <xsl:when test="@mode = '1'">
 Sold
 </xsl:when>
 </xsl:choose>
 </div>
==================================================================================================

또한 Sold 아이템도 로그에 표시되기를 원하시면..
역시 같은 방법으로

scripts\logs\itemlog.xsl 에서

===============================================
<xsl:when test="@mode = '1'">
Sold
</xsl:when>
</xsl:choose>
=================================================
를 아래와 같이 수정해 주면 될 것 같습니다. 5군데 수정 필요.
=================================================
<xsl:when test="@mode = '1'">
<xsl:value-of select="@Pre_Boss"/>
</xsl:when>
</xsl:choose>
==================================================

그러면. 위와 같이 로그파일을 보실 수 있을 겁니다.

휴.. 조금 복잡한 과정을 끝내셨네요..

잘 사용해 보시기 바랍니다.
댓글 13
  • 댓글 #197175

    원하던 자료가 드디어 나왔군요. 정말 감사합니다..^^; 근데 위에 scripts\libs\common\NTTownManager.dbl 여기에서 writeLog(_items[i], me, _isEthereal, 0); 두개 kept writeLog(_items[i], me, _isEthereal, 1); sold 하는 걸로 알고 있는데 모두 인자를 0으로 해서 붙여넣기 해야하나요? 두개는 writeLog(_items[i], me, _isEthereal, 0, _Pre_Boss); 하나는 writeLog(_items[i], me, _isEthereal, 1, _Pre_Boss); 로 해야되는 지요?
  • 댓글 #197178

    Baal_Killer// 맞습니다.. 글을 올리다 보니 실수했네요.. 설명대로 수정했습니다. 그러나 writeLog(_items[i], me, _isEthereal, 1, _Pre_Boss); 의 경우 상점에 버리는 아템을 기록하는 펑션이므로 왠만하면 주석처리를 해서 사용하지 않는 것이 좋더군요. 멀티로 돌릴때 에러가 여기서 발생하는 것 같았습니다.
  • 댓글 #197181

    아~ 그렇군요... 생각해보니 굳이 파는 것 까지 몹 이름을 나타낼 필요까지는 없겠네요.^^; 기존에 있던 함수 그대로 쓰면 되겠네요..
  • 댓글 #197184

    Sold 아이템도 로그에 표시되기를 원하시면.. 역시 같은 방법으로 scripts\logs\itemlog.xsl 에서 =============================================== Sold ================================================= 를 아래와 같이 수정해 주면 될 것 같습니다. 5군데 수정 필요. ================================================= ==================================================
  • 댓글 #197187

    고생하셨습니다....(_ _) 자료실에 파일을 좀 올려주시면 안되나요? ^^; 무식해서 잘 안되네요 ..어질어질 합니다..
  • 댓글 #197190

    저도 득템사랑님 생각과 같습니다. 수고 스럽더라도 수정한 파일을 올려주시면 훨씬 수월할거 같습니니다.
  • 댓글 #197193

    상점에 판 아이템도 로그에 표시하도록 설정이 되어 있는거 같은데 저는 오늘 돌려보니 저장한 아이템 목록만 나오고 상점에 판 아이템 목록은 표시가 안됩니다. 파일을 제대로 복사하였고 sold 아이템 부분도 확인을 하였는데 표시가 안돼네요.
  • 댓글 #197196

    로더가 활동하는상태에서 덮어씌우면 안되는군요... 그리고 로더돌리면서 수정해도 안되는것 같습니다. 자료쓰시는분들은 로더정지하고 덮어씌워야 제대로 작동하네요..
  • 댓글 #197199

    GombadA님 // 상점에 팔은 아템을 보시려면.. scripts\libs\common\NTTownManager.dbl 를 살펴보시면.. 아래와 같은 스크립트가 있을 겁니다. //writeLog(_items[i], me, _isEthereal, 1, _Pre_Boss); --> //를 빼주시면 상점에 팔은 아템도 기록이 됩니다.. writeLog(_items[i], me, _isEthereal, 1, _Pre_Boss); 여기를 주석 처리 안하는 경우 멀티로 돌리는 경우에는 가끔 에러가 생기는 경우가 있는것 같으니 감안하세요.
  • 댓글 #197208

    정말 잘되네요 제가 이거 찾느라 고생햇엇는뎀 ㅠㅠ 로그파일 수정 잘못해서 상점에 파는아템은 뜨는데 보관하는 템은 안떳엇어요 ㅠㅠ
권한이 없습니다.
다크 모드