Skip to content

-----------------------------------------------------------------------------------------------
------- Enchanter 파일입니다 --------------------------------------------------------
-----------------------------------------------------------------------------------------------
------- 문의1 : 시간설정 30분후 방나가기..
------- 문의2 : 시간 다되서 나가면서 메시지 보내기
------- 문의3 : 새로운 유저가 들어오면 메시지 보내기------------------------


const _MyEn_RANGE_ENCHANT = 18;

var _MyEn_EnchantList = new Array();

Include("NTBot/MyConfigs/Enchanter.ntl");


function MyMain()
{
 var i;
 var _countMsg = 0;
 var _countInGame = 0;

 RegisterEvent(EVENT_GAMEMSG, MyEn_EventChat);

 if (_MyEnC_MyMessageIII[0] > 0)
 me.maxgametime = 0;

 if (_MyEnC_Waypoint > 0)
 {
 MyVi_TownManager(true);

 if (_MyEnC_Waypoint != 2)
 {
 if (!NTTM_TownMove("waypoint"))
 return "NTTM_TownMove()";
 if (!MyMo_TakeWaypoint(_MyEnC_Waypoint))
 return "MyMo_TakeWaypoint()";

 NTM_MakeTP();

 if (_MyEnC_isBattleCommand)
 MyMo_MoveTo(me.areaid, me.x + 3, me.y);
 }
 else
 {
 if (MyMo_MoveToAct1Exit(30) == 0)
 return "MyMo_MoveToAct1Exit()";

 NTM_MakeTP();
 }
 }

 while (true)
 {
 if (!NTC_InTown())
 {
 if (_MyEnC_DoEnchant > 0 || _MyEnC_SendMessage[0] > 0)
 {
 for (i = 0; i < _MyEn_EnchantList.length; i++)
 {
 if (!MyUn_GetPlayer(_MyEn_EnchantList[i][0]))
 _MyEn_EnchantList.splice(i--, 1);
 }
 }

 if (!_MyEnC_isBattleCommand || me.GetState(51))
 MyEn_DoEnchant();

 if (_MyEnC_SendMessage[0] > 0)
 MyEn_SendMessage();

 MyAt_ClearPosition();
 }

 for (i = 0; i < 5; i++)
 {
 if (_MyEnC_MasterName != "" && !MyUn_GetPlayer(_MyEnC_MasterName))
 return "MyMain()";

 if (_MyEnC_MyMessageII[0] > 0 && _countMsg++ > _MyEnC_MyMessageII[0])
 {
 MyEn_SayII();

 _countMsg = 0;
 }

 if (_MyEnC_MyMessageIII[0] > 0 && _countInGame++ > _MyEnC_MyMessageIII[0])
 {
 MyEn_SayIII();

 return "MyMain()";
 }

 Delay(1000);
 }
 }
}

function MyEn_EventChat(msg, type)
{
 switch (type)
 {
 case 4:
 if (msg.indexOf(GetLocaleString(3643).split(")")[1]) != -1)
 MyEn_Say(msg.split("(")[0]);
 break;
 }
}

function MyEn_DoEnchant()
{
 var _iEnchant;
 var _unit;

 _unit = NTC_FindUnit(NTC_UNIT_PLAYER);
 if (_unit)
 {
 do
 {
 if (_unit.name != me.charname && GetDistance(me, _unit) < _MyEn_RANGE_ENCHANT && NTC_InMyParty(_unit.name))
 {
 _iEnchant = MyEn_CheckEnchant(_unit, false);

 if (_iEnchant == -1 ||
 !_unit.GetState(16) ||
 (_unit.name != _MyEnC_WarcriesName && _MyEnC_DoEnchant > 0 && ((_MyEn_EnchantList[_iEnchant][1] - Math.round(GetTickCount() / 1000)) < _MyEnC_DoEnchant)))
 {
 if (("/" + MyIL_File("NTBot/MyData/Hostile/Hostile[Name].txt", 0, "/")).indexOf("/" + _unit.name + "/") == -1)
 {
 NTC_CastSkill(52, NTC_HAND_RIGHT, _unit);

 MyEn_CheckEnchant(_unit, true);
 }
 }
 }
 } while (_unit.GetNext());
 }

 _unit = NTC_FindUnit(NTC_UNIT_MERC);
 if (_unit)
 {
 do
 {
 if (GetDistance(me, _unit) < _MyEn_RANGE_ENCHANT && !_unit.GetState(16) && MyUn_IsParty(_unit) && MyUn_IsEnchant(_unit))
 {
 if (("/" + MyIL_File("NTBot/MyData/Hostile/Hostile[Name].txt", 0, "/")).indexOf("/" + _unit.name + "/") == -1)
 NTC_CastSkill(52, NTC_HAND_RIGHT, _unit);
 }
 } while (_unit.GetNext());
 }
}

function MyEn_CheckEnchant(unit, isSet)
{
 for (var i = 0; i < _MyEn_EnchantList.length; i++)
 {
 if (_MyEn_EnchantList[i][0] == unit.name)
 {
 if (isSet)
 _MyEn_EnchantList[i][1] = Math.round(GetTickCount() / 1000) + (me.GetSkill(52, true) * 24) + 120;

 return i;
 }
 }

 return (isSet ? (_MyEn_EnchantList.push([unit.name, Math.round(GetTickCount() / 1000) + (me.GetSkill(52, true) * 24) + 120]) - 1) : -1);
}

function MyEn_SendMessage()
{
 var _iEnchant;
 var _duration;
 var _player = GetPlayerUnit();

 if (_player)
 {
 while (_player.GetNext())
 {
 if (_player.name != _MyEnC_WarcriesName)
 {
 _iEnchant = MyEn_CheckEnchant(_player, false);
 if (_iEnchant != -1)
 {
 _duration = _MyEn_EnchantList[_iEnchant][1] - Math.round(GetTickCount() / 1000);
 if (_duration < _MyEnC_SendMessage[0] && (_MyEnC_SendMessage[1] < 1 || _duration >= _MyEnC_SendMessage[1]))
 {
 Say("인첸트: " + _player.name + " (" + ((_duration > 0) ? _duration : 0) + "초)");
 NTC_PingDelay(200);
 }
 }
 }
 }
 }
}

function MyEn_Say(name)
{
 if (_MyEnC_MyMessage.length > 1)
 {
 var _msg = _MyEnC_MyMessage[Random(1, _MyEnC_MyMessage.length - 1)];

 if (_msg)
 {
 if (name)
 _msg = _msg.replace(/%N/, name);

 Say(_msg);
 NTC_PingDelay(200);
 }
 }
}

function MyEn_SayII()
{
 if (_MyEnC_MyMessageII.length > 1)
 {
 var _msg = _MyEnC_MyMessageII[MyTM_GetRandom(1, _MyEnC_MyMessageII.length - 1)];

 if (_msg)
 {
 if (_MyEn_EnchantList.length > 0)
 _msg = _msg.replace(/%P/, _MyEn_EnchantList[Random(0, _MyEn_EnchantList.length - 1)][0]);

 Say(_msg);
 NTC_PingDelay(200);
 }
 }
}

function MyEn_SayIII()
{
 if (_MyEnC_MyMessageIII.length > 1)
 {
 var _msg = _MyEnC_MyMessageIII[Random(1, _MyEnC_MyMessageIII.length - 1)];

 if (_msg)
 {
 if (_msg.indexOf("%G") != -1)
 {
 var _gameName1 = me.gamename.substring(0, me.gamename.lastIndexOf("-") + 1);
 var _gameName2 = Number(me.gamename.substring(me.gamename.lastIndexOf("-") + 1)) + 1;

 if (_gameName2 < 10)
 _gameName2 = "0" + _gameName2;
 else if (_gameName2 > 99)
 _gameName2 = "00";

 _msg = _msg.replace(/%G/, _gameName1 + _gameName2);
 }

 Say(_msg);
 NTC_PingDelay(200);
 }
 }
}