방제 저장&불러오기, 치킨 On/Off 기능 추가 ( 자료를 올릴만한데가 없네요;; )
d2nt 40차로 작성 하였습니다.
참고로 NTMap으로 로드 할때만 동작 됩니다.
1. 방제 불러오기
d2nt_40\scripts 폴더에 보시면 NTMap.ntj 이라는 파일이 있습니다.
메모장으로 열고, 기존 내용 다 지우시고, 아래 내용 붙여 넣기 하세요.
==================================================================
function NTMain()
{
Include("libs/controlInfo.ntl");
var _control = new controlInfo();
var _controlId = -1;
var lastgame = "";
var create_b, join_b, ladder_b, help_b, quit_b, jg_b;
Delay(1000);
var _ingame = false;
while(1)
{
if(me.ingame)
{
if(!_ingame)
{
RunGC();
if(Load("NTMap/NTMapGame.ntj"))
_ingame = true;
}
Delay(1000);
}
else
{
if(_ingame)
_ingame = false;
join_b = _control.get(_control.controls.lobby.button.join);
if (join_b && join_b.pressed)
{
var _fh = FileOpen("room_" + me.charname + ".txt", 0);
if (_fh)
{
lastgame = _fh.ReadLine();
_fh.Close();
}
if (lastgame != "")
{
_control.setText(_control.controls.lobby.join.editBox.gameName, lastgame);
}
Delay(500);
while(1)
{
create_b = _control.get(_control.controls.lobby.button.create);
if (create_b && create_b.pressed)
break;
ladder_b = _control.get(_control.controls.lobby.button.ladder);
if (ladder_b && ladder_b.pressed)
break;
help_b = _control.get(_control.controls.lobby.button.help);
if (help_b && help_b.pressed)
break;
quit_b = _control.get(_control.controls.lobby.button.quit);
if (quit_b && quit_b.pressed)
break;
if(me.ingame)
{
if(!_ingame)
{
RunGC();
if(Load("NTMap/NTMapGame.ntj"))
_ingame = true;
}
Delay(1000);
break;
}
Delay(500);
}
}
Delay(500);
}
}
}
======================================================================================
원리는 방에 들어가면 해당 방의 이름을 d2nt_40\scripts 폴더에 'room_케릭명.txt' 파일 안에 방 이름을 적어 놓습니다.
그 파일을 불러다가 방이름에 자동으로 입력되게 하는 겁니다.
방제는 한번에 못 불러 올수도 있으니, create, ladder, channel 버튼등 Join 버튼 외에 다른 버튼 누르시고 Join 버튼 누르시면 방제가 나타날겁니다.
2. 방이름 저장, 치킨 On/Off 키
d2nt_40\scripts\NTMap 폴더에 'NTMapGame.ntj' 파일을 메모장으로 열고 내용 다 지운 후에 아래 내용을 붙여 넣기 하세요.
==========================================================================================
var NTConfig_LifeChicken;
var NTConfig_ManaChicken;
var NTConfig_AutoParty;
function NTMain()
{
Delay(1000);
Include("libs/common/MyCommon.ntl");
MyCommon.IncludeLibs();
MyCommon.IncludeConfig("NTMap/char_configs", false, false);
var _fh = FileOpen("room_" + me.charname + ".txt", 1); //방제 로그파일 작성
if(_fh)
{
_fh.WriteLine(me.gamename);
_fh.Close();
}
var _count = 0;
var _LifeMax, _ManaMax;
var _player, _mypartyid;
NT_LoadConfig();
RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);
SetUIState(0x0A, true);
_LifeMax = me.hpmax;
_ManaMax = me.mpmax;
if(NTConfig_LifeChicken > 0)
me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);
if(NTConfig_ManaChicken > 0)
me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);
SetStatusText(" [IP:" + me.gameserverip + "][Out:" + me.chickenhp + "][P:" + NTConfig_AutoParty + "]" );
while(1)
{
if(!MyUnit.IsTown())
{
if(_LifeMax != me.hpmax)
{
_LifeMax = me.hpmax;
if(NTConfig_LifeChicken > 0)
me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);
}
if(_ManaMax != me.mpmax)
{
_ManaMax = me.mpmax;
if(NTConfig_ManaChicken > 0)
me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);
}
}
if(_count++ > 10)
{
if(NTConfig_AutoParty)
{
_player = GetPlayerUnit();
if(_player)
{
_mypartyid = _player.partyid;
while(_player.GetNext())
{
if(_player.partyid == 65535 || _player.partyid != _mypartyid)
{
if(_player.partyflag == 2)
{
me.ClickParty(_player, 2);
break;
}
if(_player.partyid == 65535)
{
if(_player.partyflag == 4)
break;
me.ClickParty(_player, 2);
Delay(MyMove_DELAY_FRAME);
if(_player.partyflag == 4 || (_player.partyid != 65535 && _player.partyid == _mypartyid))
break;
}
}
}
}
}
_count = 0;
}
Delay(200);
}
}
function NT_KeyEvents(keycode)
{
var _LifeMax = me.hpmax; // 치킨위해 변수 재설정
switch(keycode)
{
case 109: // show or hide enemy - keypad '-'
if(me.showenemyonautomap)
{
me.showenemyonautomap = false;
SetStatusText(" [IP:" + me.gameserverip + "][Out:" + me.chickenhp + "][P:" + NTConfig_AutoParty + "]" );
Print("Enemy on Automap : Off");
}
else
{
me.showenemyonautomap = true;
SetStatusText(" [IP:" + me.gameserverip + "][Out:" + me.chickenhp + "][P:" + NTConfig_AutoParty + "]" );
Print("Enemy on Automap : On");
}
break;
case 107: // show or hide missile - keypad '+'
if(me.showmissileonautomap)
{
me.showmissileonautomap = false;
Print("Missile on Automap : Off");
}
else
{
me.showmissileonautomap = true;
Print("Missile on Automap : On");
}
break;
case 106: // auto party on/off - keypad '*'
if(NTConfig_AutoParty)
{
NTConfig_AutoParty = false;
Print("Auto Party : Off");
}
else
{
NTConfig_AutoParty = true;
Print("Auto Party : On");
}
break;
case 111: // LifeChiken on/off - keypad '/'
if (me.chickenhp > 0)
{
me.chickenhp = 0;
SetStatusText(" [IP:" + me.gameserverip + "][Out:" + me.chickenhp + "][P:" + NTConfig_AutoParty + "]" );
Print("Chicken : Off // HP : " + me.chickenhp);
}
else
{
me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);
SetStatusText(" [IP:" + me.gameserverip + "][Out:" + me.chickenhp + "][P:" + NTConfig_AutoParty + "]" );
Print("Chicken : On // HP : " + me.chickenhp);
}
break;
}
}
===============================================================================================
우선 상단에 보이는 내용을 IP, 치킨 HP, 오토파티 True, False로 보이게끔 바꿨습니다.
그리고 방에 들어가면 1번항목에서 필요한 방제를 남기기 위해 'room_케릭명.txt'라는 텍스트 파일을 만들고,
그 안에 방제를 남기도록 했습니다.
알다시피 오토파티 On/Off 키는 NumLock 쪽의 * 입니다.
추가로 치킨 On/Off키를 NumLock쪽의 / 로 할당했습니다.
궁금하신거 있으시면 댓글 주세요.
