Ist es möglich wenn der leader das tp aufmacht das er wartet bis 1 oder alle Leecher durch gehen und dann erst anfängt zu kämpfen?
2.
Code:
Ist es möglich das der Leader zb sagt Tp is safe! und der Leecher erkennt die nachricht und geht dann durch das tp ? ( das er die nachricht vom leader erkennt nicht zb wenn jemand anderes die nachricht sendet ??)
3.
Code:
Wenn der Leader ein spiel öffnet und der Leecher joint , sagt der Leader Tristrun und der Leecher macht Tristrun , dann sagt der Leader Cowrun und der Leecher macht Cowrun , ist das möglich das der Leecher die Scripts Reihenfolge aus dem Chat auslesen kann?
wenn ja welche befehle sind das?
hoffe habt verstanden was ich meine ;D
zu 2.:
Code:
//------------------------------------------------------------------------------
// Chat Announcements
//------------------------------------------------------------------------------
// These announcements will not be made unless NTConfig_PublicMode is set to true. Set to "" not to post a message.
// NOTE: You have to set a TPSafe message when using leechers and not entering unsafe TPs.
MWConfig_Announcements.BaalThrone = "There are %d monster(s) in Throne!";
MWConfig_Announcements.BaalTpNone = "TP up, no monsters close!";
MWConfig_Announcements.BaalTpCold = "TP cold, %d monsters close!";
MWConfig_Announcements.BaalTpWarm = "TP warm, %d monsters close!";
MWConfig_Announcements.BaalTpHot = "TP hot, %d monsters close!";
MWConfig_Announcements.BaalTpSafe = "TP is safe!";
MWConfig_Announcements.BaalPreChamber = "Killing Baal!";
MWConfig_Announcements.BaalKilled = "Next game!";
MWConfig_Announcements.DiabloTpNone = "TP up, no monsters close!";
MWConfig_Announcements.DiabloTpCold = "TP cold, %d monsters close!";
MWConfig_Announcements.DiabloTpWarm = "TP warm, %d monsters close!";
MWConfig_Announcements.DiabloTpHot = "TP hot, %d monsters close!";
MWConfig_Announcements.DiabloTpSafe = "TP is safe!";
MWConfig_Announcements.DiabloPre = "Killing Diablo!";
MWConfig_Announcements.DiabloKilled = "Next game!";
//------------------------------------------------------------------------------
// Chat Announcements
//------------------------------------------------------------------------------
// These announcements will not be made unless NTConfig_PublicMode is set to true. Set to "" not to post a message.
// NOTE: You have to set a TPSafe message when using leechers and not entering unsafe TPs.
MWConfig_Announcements.BaalThrone = "There are %d monster(s) in Throne!";
MWConfig_Announcements.BaalTpNone = "TP up, no monsters close!";
MWConfig_Announcements.BaalTpCold = "TP cold, %d monsters close!";
MWConfig_Announcements.BaalTpWarm = "TP warm, %d monsters close!";
MWConfig_Announcements.BaalTpHot = "TP hot, %d monsters close!";
MWConfig_Announcements.BaalTpSafe = "TP is safe!";
MWConfig_Announcements.BaalPreChamber = "Killing Baal!";
MWConfig_Announcements.BaalKilled = "Next game!";
MWConfig_Announcements.DiabloTpNone = "TP up, no monsters close!";
MWConfig_Announcements.DiabloTpCold = "TP cold, %d monsters close!";
MWConfig_Announcements.DiabloTpWarm = "TP warm, %d monsters close!";
MWConfig_Announcements.DiabloTpHot = "TP hot, %d monsters close!";
MWConfig_Announcements.DiabloTpSafe = "TP is safe!";
MWConfig_Announcements.DiabloPre = "Killing Diablo!";
MWConfig_Announcements.DiabloKilled = "Next game!";
Er zählt erst wieviele Monster im Thron sind und gibt dies als Text aus. Dann entscheidet er ob das TP Cold, Warm, Hot ist oder ob keine Gegner in der nähe sind (in der Reihenfolge) und gibt dies als Text aus. Dann macht er ein TP auf mit "NTM_MakeTP();". Anschliessend säubert er den Thronsaal mit "NT_ClearThroneInt();". Ist alles gesäubert teleportiert er zu einem bestimmten Punkte, öffnet ein TP und sagt, dass der Thron Safe ist.
Der Leecher hingegen steht in Town und sucht erstmal nach einem TP des Leaders.
z.B. in der "NTBaalLeech.ntj" findet man:
Ist ein TP gefunden kannst du selbst festlegen, ob dein Leecher erst joinen soll wenn das TP safe ist, oder ob er direkt reingehen soll. Die Abfrage danach kommt sofort nach dem Code, den ich oben gepostet habe und den Wert dazu gibst du in der Charconfig selbst an. Beim Beispiel des BaalLeech sollte folgendes in der Charconfig stehen:
Er zählt erst wieviele Monster im Thron sind und gibt dies als Text aus. Dann entscheidet er ob das TP Cold, Warm, Hot ist oder ob keine Gegner in der nähe sind (in der Reihenfolge) und gibt dies als Text aus. Dann macht er ein TP auf mit "NTM_MakeTP();". Anschliessend säubert er den Thronsaal mit "NT_ClearThroneInt();". Ist alles gesäubert teleportiert er zu einem bestimmten Punkte, öffnet ein TP und sagt, dass der Thron Safe ist.
Der Leecher hingegen steht in Town und sucht erstmal nach einem TP des Leaders.
z.B. in der "NTBaalLeech.ntj" findet man:
Ist ein TP gefunden kannst du selbst festlegen, ob dein Leecher erst joinen soll wenn das TP safe ist, oder ob er direkt reingehen soll. Die Abfrage danach kommt sofort nach dem Code, den ich oben gepostet habe und den Wert dazu gibst du in der Charconfig selbst an. Beim Beispiel des BaalLeech sollte folgendes in der Charconfig stehen:
Sowas ist auch gar nicht implementiert. Reiner Leech ist nur bei Baalruns, Leechfight bei Diablo und Baal möglich.
ist möglich mann muss nur einige sachen einfügen / entfernen
möchte mehrere scripts auf leechfight bearbeiten,
zb bei cow bin ich grade soweit das mein leecher durch das blaue portal geht möchte aber das er wartet bis der leader sagt tp is safe erst dann soll er durch gehen!!!
mir fehlt die Erfahrung , habe mich nie mit den scripts befasst Grund wissen ist vorhanden ;D
Wie erkennt der Leecher wann das tp safe ist?
welcher befehl in der "NTBaalLeech.ntj" ist das?
Korrigiere mich falls ich falsch liege
Code:
var _AllowedToEnterTP = false; // erlaubt durchs portal zu gehen = false
}
NTC_Delay(200);
}
if(MWConfig_EnterUnsafeTP)
_AllowedToEnterTP = true; // wenn in der config erlaubt ist geht er durchs unsafetp = true
while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
{
if(_AllowedToEnterTP)
NTM_UsePortal("BluePortal", 131, NTConfig_Leader); // wenn der Leader in der party ist geht er durch blaue portal.
NTC_Delay(500);
}
Cow Leader Blue Portal
Code:
/**
* This file was modified by [email][/email]
* Check the programming section for updates and further scripts
* Last Update: 22:45 24.08.2011
*/
const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
MWC_Initialize();
var _wirtbody, _cube, _leg, _portal, _stash, _npc;
var i;
if(!NTTM_CheckAct(me.act, true))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 24, me.act, true);
return;
}
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_TownMove, 32, "waypoint");
return;
}
if(!NTM_TakeWaypoint(4))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 38, 4);
return;
}
NTP_DoPrecast(true);
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 737, 10, 10))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToPresetUnit, 46, me.areaid, NTC_UNIT_MONSTER, 737, 10, 10);
return;
}
if(!NTM_UsePortal("Portal", 38))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_UsePortal, 52, "Portal", 38);
return;
}
NTM_MoveTo(me.areaid, 25047, 5178);
if(NTA_ClearPosition(10))
NTSI_PickItems();
_wirtbody = NTC_FindUnit(NTC_UNIT_OBJECT, 268);
if(!_wirtbody)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 63, NTC_UNIT_OBJECT, 268);
return;
}
if(NTM_MoveTo(_wirtbody.areaid, _wirtbody.x + 3, _wirtbody.y))
{
if(NTC_OpenChest(_wirtbody))
{
for(i = 0; i < 40; i++)
{
NTC_Delay(NTC_DELAY_FRAME);
_leg = NTC_FindUnit(NTC_UNIT_ITEM, 88, 1);
if(_leg)
break;
}
if(!NTT_CheckSpace(_leg.xsize, _leg.ysize))
NTTMGR_VisitTown();
if(MWSI_PickupItem(_leg.classid))
Print("ÿc4Got Leg");
}
}
if(!_leg)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 79, NTC_UNIT_ITEM, 88, 1);
return;
}
NTTM_CheckAct();
NTTM_TownMove("akara");
for(var i = 0; i < 10; i++)
{
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA);
if(_npc)
break;
}
if(_npc)
{
if(NTT_DoInteract(_npc))
{
if(NTT_DoTrade(_npc))
{
NTT_FillTome(_npc, 1);
NTT_FillTome(_npc, 0);
NTT_SecondTomeTP(_npc, "tbk", 1);
_portal = NTR_GetTP();
if(!_portal)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTR_GetTP, 121);
return;
}
}
}
me.Cancel(1);
}
if(MWT_OpenStash())
{
_cube = me.GetItems(NTC_UNIT_CUBE);
if(!_cube[0])
{
NTC_SendMsgToScript("MWBotGame.ntj", me.GetItems, 136, NTC_UNIT_CUBE);
return;
}
if(NTCU_CheckCubeInventoryInt() > 0)
{
NTCU_OpenCubeInt(_cube[0]);
if(NTCU_ClearCubeInt() < 1)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTCU_ClearCubeInt, 148);
return;
}
NTCU_CloseCubeInt();
}
NTCU_MoveItemToCubeInt(_cube[0],_leg);
NTCU_MoveItemToCubeInt(_cube[0],_portal);
MWCU_Transmute(_cube[0]);
NTCU_CloseCubeInt();
me.Cancel(1);
NTC_Delay(250);
}
if(!NTR_TakeCowPortal(12))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTR_TakeCowPortal, 169, 12);
return;
}
NTM_MakeTP();
if(MWConfig_Announcements.CowTpSafe)
Say(MWConfig_Announcements.CowTpSafe);
NTP_DoPrecast();
NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
// Internal functions
function NTR_GetTP()
{
var _portals = me.GetItems("tbk");
if (_portals)
{
for (var i = 0; i < _portals.length; i++)
{
if (_portals[i].mode == 0 && (_portals[i].itemloc != 0 || NTConfig_Columns[_portals[i].y][_portals[i].x] > 0))
{
return _portals[i];
}
}
}
return false;
}
function NTR_TakeCowPortal(range)
{
var _portal;
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);
if(_portal)
return NTM_UsePortal("Portal", 39, "dummy", _portal);
return false;
}
function NTR_ClearRooms(range, type, id, distance)
{
var i;
var _unit;
var _preRoom;
var _addRooms = new Array();
var _removeRooms = new Array();
if (distance)
{
_unit = GetPresetUnits(me.areaid, type, id);
if (!_unit || _unit.length < 1)
return false;
}
_preRoom = GetRoom();
if (_preRoom)
{
do
{
if (distance)
{
if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
continue;
}
_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
} while (_preRoom.GetNext());
}
if (_addRooms.length < 1)
return false;
_preRoom = [me.x, me.y];
while (_addRooms.length > 0)
{
_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });
_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);
for (i = 1; i < _addRooms.length; i++)
{
if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
{
_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
}
else
break;
}
if (_removeRooms.length > 1)
{
_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
if (_removeRooms[0][0] <= _preRoom[0])
{
_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
if (_removeRooms[0][1] <= _preRoom[1])
{
_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
if (_removeRooms[0][0] >= _preRoom[0])
_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
}
}
}
if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
{
if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
_preRoom = _removeRooms[0];
}
for (i = 0; i < _addRooms.length; i++)
{
if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
{
_addRooms.splice(i, 1);
break;
}
}
_removeRooms.length = 0;
}
return true;
}
function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
if (x == me.x && y == me.y)
return true;
if (arguments.length < 4)
retry = 3;
if (arguments.length < 5)
isClearPath = false;
var j;
var _path;
var _preX, _preY;
_path = GetPath(areaId, me.x, me.y, x, y, true);
if (!_path)
return false;
for (var i = 0; i < _path.length; i++)
{
if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
{
for (j = 0; j < retry; j++)
{
if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
break;
}
if (j >= retry)
return false;
}
if (isClearPath && !NTR_CheckCowKing())
{
_preX = me.x;
_preY = me.y;
if(!MWR_ClearPosition(30, true))
return false;
NTP_DoPrecast();
if (me.x != _preX || me.y != _preY)
{
if (!NTM_MoveTo(me.areaid, _preX, _preY))
return false;
}
}
}
return true;
}
function NTR_CheckCowKing()
{
var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}
function NTR_CheckSafe(x, y, range)
{
var i;
var _target = NTC_FindUnit(NTC_UNIT_MONSTER);
if (_target)
{
do
{
if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
{
for (i = 0; i < 6; i++)
{
if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
return false;
}
}
} while (_target.GetNext());
}
return true;
}
function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
var _orgx, _orgy;
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
switch(arguments.length)
{
case 0:
range = 20;
case 1:
pickitem = false;
case 3:
openchests = true;
case 4:
usefinditem = true;
default:
if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
safelevel = 0;
break;
}
_orgx = me.x;
_orgy = me.y;
for(var i = 0; i < 3; i++)
{
_skiplist = new Array();
while(_attackcount < (i+1)*100)
{
if(NTR_CheckCowKing())
return false;
_mindistance = 1E6;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target)
{
do
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if(_target.IsAttackable())
{
if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
{
_distance = GetDistance(me, _target);
if(_distance < _mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push(_target.gid);
}
} while(_target.GetNext());
}
if(_mindistance < 1E6)
{
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);
if(_target)
{
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
_result = NTA_Attack(_target, (_attackcount % 30) == 0);
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
switch(_result)
{
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
NTSI_PickItems();
_attackcount++;
break;
default:
_attackcount = 1E6;
}
}
}
else
break;
}
}
if(_attackcount > 2)
{
switch(me.classid)
{
case NTC_CHAR_CLASS_PALADIN:
if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
{
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
}
break;
case NTC_CHAR_CLASS_BARBARIAN:
if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
MWL_FindItem(MWConfig_FindItemRange);
break;
case NTC_CHAR_CLASS_NECROMANCER:
if(!NTR_CheckCowKing())
MWA_RaiseMinions();
break;
}
}
if(pickitem && _attackcount > 0)
NTSI_PickItems();
if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
if(MWConfig_ActivateNearbyShrines)
MWL_ActivateNearbyShrines();
switch(safelevel)
{
case 1:
return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
case 2:
return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
}
if(MWConfig_IdentAfterPickup)
MWL_IDItemsAfterPickup();
return true;
}
function NTT_SecondTomeTP(npc, type, amount)
{
var _items;
var _counter = 0;
if(arguments.length < 1)
return false;
if(arguments.length < 2)
type = 0;
if(arguments.length < 0)
amount = 1;
if(amount == 0)
return false;
if(type)
_items = npc.GetItems("tbk");
if(_items)
{
if(_items.length > 0)
{
for(var i = 0 ; i < amount ; i++)
{
if(NTT_ShopItem(_items[0], npc, 2))
_counter++;
}
}
}
return (_counter > 0);
}
CowLeechfight Blue Portal
Code:
/**
* This file was modified by
* Check the programming section for updates and further scripts
* Last Update: 22:45 24.08.2011
*/
const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
MWC_Initialize();
var _portal;
var i;
if(!NTTM_CheckAct(1, true))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 26, 1, true);
return;
}
NTTM_TownMove("portalspot");
for(i = 0; i <= 300; i++)
{
if(NTC_InMyParty(NTConfig_Leader))
break;
Delay(200);
}
while(me.areaid == 1 && NTC_InMyParty(NTConfig_Leader))
{
NTM_UsePortal("BluePortal", 38, NTConfig_Leader);
}
NTP_DoPrecast();
NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
function NTR_TakeCowPortal(range)
{
var _portal;
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);
if(_portal)
return NTM_UsePortal("Portal", 39, "dummy", _portal);
return false;
}
function NTR_ClearRooms(range, type, id, distance)
{
var i;
var _unit;
var _preRoom;
var _addRooms = new Array();
var _removeRooms = new Array();
if (distance)
{
_unit = GetPresetUnits(me.areaid, type, id);
if (!_unit || _unit.length < 1)
return false;
}
_preRoom = GetRoom();
if (_preRoom)
{
do
{
if (distance)
{
if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
continue;
}
_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
} while (_preRoom.GetNext());
}
if (_addRooms.length < 1)
return false;
_preRoom = [me.x, me.y];
while (_addRooms.length > 0)
{
_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });
_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);
for (i = 1; i < _addRooms.length; i++)
{
if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
{
_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
}
else
break;
}
if (_removeRooms.length > 1)
{
_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
if (_removeRooms[0][0] <= _preRoom[0])
{
_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
if (_removeRooms[0][1] <= _preRoom[1])
{
_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
if (_removeRooms[0][0] >= _preRoom[0])
_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
}
}
}
if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
{
if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
_preRoom = _removeRooms[0];
}
for (i = 0; i < _addRooms.length; i++)
{
if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
{
_addRooms.splice(i, 1);
break;
}
}
_removeRooms.length = 0;
}
return true;
}
function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
if (x == me.x && y == me.y)
return true;
if (arguments.length < 4)
retry = 3;
if (arguments.length < 5)
isClearPath = false;
var j;
var _path;
var _preX, _preY;
_path = GetPath(areaId, me.x, me.y, x, y, true);
if (!_path)
return false;
for (var i = 0; i < _path.length; i++)
{
if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
{
for (j = 0; j < retry; j++)
{
if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
break;
}
if (j >= retry)
return false;
}
if (isClearPath && !NTR_CheckCowKing())
{
_preX = me.x;
_preY = me.y;
if(!MWR_ClearPosition(30, true))
return false;
NTP_DoPrecast();
if (me.x != _preX || me.y != _preY)
{
if (!NTM_MoveTo(me.areaid, _preX, _preY))
return false;
}
}
}
return true;
}
function NTR_CheckCowKing()
{
var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}
function NTR_CheckSafe(x, y, range)
{
var i;
var _target = NTC_FindUnit(NTC_UNIT_MONSTER);
if (_target)
{
do
{
if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
{
for (i = 0; i < 6; i++)
{
if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
return false;
}
}
} while (_target.GetNext());
}
return true;
}
function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
var _orgx, _orgy;
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
switch(arguments.length)
{
case 0:
range = 20;
case 1:
pickitem = false;
case 3:
openchests = true;
case 4:
usefinditem = true;
default:
if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
safelevel = 0;
break;
}
_orgx = me.x;
_orgy = me.y;
for(var i = 0; i < 3; i++)
{
_skiplist = new Array();
while(_attackcount < (i+1)*100)
{
if(NTR_CheckCowKing())
return false;
_mindistance = 1E6;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target)
{
do
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if(_target.IsAttackable())
{
if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
{
_distance = GetDistance(me, _target);
if(_distance < _mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push(_target.gid);
}
} while(_target.GetNext());
}
if(_mindistance < 1E6)
{
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);
if(_target)
{
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
_result = NTA_Attack(_target, (_attackcount % 30) == 0);
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
switch(_result)
{
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
NTSI_PickItems();
_attackcount++;
break;
default:
_attackcount = 1E6;
}
}
}
else
break;
}
}
if(_attackcount > 2)
{
switch(me.classid)
{
case NTC_CHAR_CLASS_PALADIN:
if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
{
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
}
break;
case NTC_CHAR_CLASS_BARBARIAN:
if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
MWL_FindItem(MWConfig_FindItemRange);
break;
case NTC_CHAR_CLASS_NECROMANCER:
if(!NTR_CheckCowKing())
MWA_RaiseMinions();
break;
}
}
if(pickitem && _attackcount > 0)
NTSI_PickItems();
if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
if(MWConfig_ActivateNearbyShrines)
MWL_ActivateNearbyShrines();
switch(safelevel)
{
case 1:
return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
case 2:
return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
}
if(MWConfig_IdentAfterPickup)
MWL_IDItemsAfterPickup();
return true;
}
mir fehlt die Erfahrung , habe mich nie mit den scripts befasst Grund wissen ist vorhanden ;D
Wie erkennt der Leecher wann das tp safe ist?
welcher befehl in der "NTBaalLeech.ntj" ist das?
Was genau ist denn an Grundwissen vorhanden? Wie Funktionen in JS funktionieren und was es mit Scopes auf sich hat ist bekannt?
Die Erkennung läuft in der Tat über den Chat. Dazu wird zu Beginn des Scripts ein Event Handler für Chats Ereignisse zugewiesen. Dieser Event Handler ist nichts anderes als eine Funktion, die jedes mal aufgerufen wird, wenn ein Chat Event eintritt, also z.B. dann, wenn jemand etwas im Chat schreibt, aber etwa auch bei Server Nachrichten (z.B. bei World Events).
Das sieht dann so aus:
Code:
RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
Dabei ist RegisterEvent() eine globale Funktion zum anhängen von Event Handlern, EVENT_GAMEMSG eine globale Konstante, die festlegt, dass hier ein Handler für Events vom Typ Game Message zugewiesen wird und zu guter letzt NT_GameMsgEvents als eine Funktion, die im Kontext, aus dem RegisterEvent() aufgerufen wird, definiert ist. Dem Namen nach zu urteilen ist NT_GameMsgEvents vermutlich im gleichen Script auf global Scope Ebene implementiert.
// Set to true to always check the selected Nips for errors after including them. Check "..\scripts\Logs\NipErrors.txt" for a precise error description!
MWConfig_RunNipCheck = false;
kann man den mulestatus der am anfang kommt im d2nt manager kommt auch reseten? weil zb meine ersten chars sind wieder leer wird aber immer noch mit 100% angezeigt
Optimalerweise verwendest du zum Zugriff auf die Mulis den MWTools Entry Point und verlässt das Spiel dabei immer mit Druck auf die DEL-Taste - dabei wird das jeweilige Logfile überschrieben.
Alternativ kannst du auch einfach die zugehörigen Logfiles löschen, diese sollten sich im Ordner ./scripts/Logs/MuleManager befinden.
Einfach nur etwas ändern , ihr müsst den Leader angeben
Code:
1. Im script
var _leader = "Euren Leader Name";
2.
In de Char config.
WConfig_Script.push(["XXXXXXX.ntj", 10]); NTConfig_Leader = "Leader Name"; MWConfig_EnterUnsafeTP = false;
Cow Leader ( Blaue Portal - Mit "Tp is safe!" Nachricht )
Code:
/**
* This file was modified by
* Check the programming section for updates and further scripts
* Last Update: 22:45 24.08.2011
*/
const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
MWC_Initialize();
var _wirtbody, _cube, _leg, _portal, _stash, _npc;
var i;
if(!NTTM_CheckAct(me.act, true))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 24, me.act, true);
return;
}
NTTMGR_TownManager();
if(!NTTM_TownMove("waypoint"))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_TownMove, 32, "waypoint");
return;
}
if(!NTM_TakeWaypoint(4))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_TakeWaypoint, 38, 4);
return;
}
NTP_DoPrecast(true);
if(!NTM_MoveToPresetUnit(me.areaid, NTC_UNIT_MONSTER, 737, 10, 10))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_MoveToPresetUnit, 46, me.areaid, NTC_UNIT_MONSTER, 737, 10, 10);
return;
}
if(!NTM_UsePortal("Portal", 38))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTM_UsePortal, 52, "Portal", 38);
return;
}
NTM_MoveTo(me.areaid, 25047, 5178);
if(NTA_ClearPosition(10))
NTSI_PickItems();
_wirtbody = NTC_FindUnit(NTC_UNIT_OBJECT, 268);
if(!_wirtbody)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 63, NTC_UNIT_OBJECT, 268);
return;
}
if(NTM_MoveTo(_wirtbody.areaid, _wirtbody.x + 3, _wirtbody.y))
{
if(NTC_OpenChest(_wirtbody))
{
for(i = 0; i < 40; i++)
{
NTC_Delay(NTC_DELAY_FRAME);
_leg = NTC_FindUnit(NTC_UNIT_ITEM, 88, 1);
if(_leg)
break;
}
if(!NTT_CheckSpace(_leg.xsize, _leg.ysize))
NTTMGR_VisitTown();
if(MWSI_PickupItem(_leg.classid))
Print("ÿc4Got Leg");
}
}
if(!_leg)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTC_FindUnit, 79, NTC_UNIT_ITEM, 88, 1);
return;
}
NTTM_CheckAct();
NTTM_TownMove("akara");
for(var i = 0; i < 10; i++)
{
_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA);
if(_npc)
break;
}
if(_npc)
{
if(NTT_DoInteract(_npc))
{
if(NTT_DoTrade(_npc))
{
NTT_FillTome(_npc, 1);
NTT_FillTome(_npc, 0);
NTT_SecondTomeTP(_npc, "tbk", 1);
_portal = NTR_GetTP();
if(!_portal)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTR_GetTP, 121);
return;
}
}
}
me.Cancel(1);
}
if(MWT_OpenStash())
{
_cube = me.GetItems(NTC_UNIT_CUBE);
if(!_cube[0])
{
NTC_SendMsgToScript("MWBotGame.ntj", me.GetItems, 136, NTC_UNIT_CUBE);
return;
}
if(NTCU_CheckCubeInventoryInt() > 0)
{
NTCU_OpenCubeInt(_cube[0]);
if(NTCU_ClearCubeInt() < 1)
{
NTC_SendMsgToScript("MWBotGame.ntj", NTCU_ClearCubeInt, 148);
return;
}
NTCU_CloseCubeInt();
}
NTCU_MoveItemToCubeInt(_cube[0],_leg);
NTCU_MoveItemToCubeInt(_cube[0],_portal);
MWCU_Transmute(_cube[0]);
NTCU_CloseCubeInt();
me.Cancel(1);
NTC_Delay(250);
}
if(!NTR_TakeCowPortal(12))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTR_TakeCowPortal, 169, 12);
return;
}
NTM_MakeTP();
if(MWConfig_Announcements.BaalTpSafe)
Say(MWConfig_Announcements.BaalTpSafe);
NTP_DoPrecast();
NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
// Internal functions
function NTR_GetTP()
{
var _portals = me.GetItems("tbk");
if (_portals)
{
for (var i = 0; i < _portals.length; i++)
{
if (_portals[i].mode == 0 && (_portals[i].itemloc != 0 || NTConfig_Columns[_portals[i].y][_portals[i].x] > 0))
{
return _portals[i];
}
}
}
return false;
}
function NTR_TakeCowPortal(range)
{
var _portal;
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);
if(_portal)
return NTM_UsePortal("Portal", 39, "dummy", _portal);
return false;
}
function NTR_ClearRooms(range, type, id, distance)
{
var i;
var _unit;
var _preRoom;
var _addRooms = new Array();
var _removeRooms = new Array();
if (distance)
{
_unit = GetPresetUnits(me.areaid, type, id);
if (!_unit || _unit.length < 1)
return false;
}
_preRoom = GetRoom();
if (_preRoom)
{
do
{
if (distance)
{
if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
continue;
}
_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
} while (_preRoom.GetNext());
}
if (_addRooms.length < 1)
return false;
_preRoom = [me.x, me.y];
while (_addRooms.length > 0)
{
_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });
_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);
for (i = 1; i < _addRooms.length; i++)
{
if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
{
_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
}
else
break;
}
if (_removeRooms.length > 1)
{
_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
if (_removeRooms[0][0] <= _preRoom[0])
{
_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
if (_removeRooms[0][1] <= _preRoom[1])
{
_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
if (_removeRooms[0][0] >= _preRoom[0])
_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
}
}
}
if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
{
if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
_preRoom = _removeRooms[0];
}
for (i = 0; i < _addRooms.length; i++)
{
if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
{
_addRooms.splice(i, 1);
break;
}
}
_removeRooms.length = 0;
}
return true;
}
function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
if (x == me.x && y == me.y)
return true;
if (arguments.length < 4)
retry = 3;
if (arguments.length < 5)
isClearPath = false;
var j;
var _path;
var _preX, _preY;
_path = GetPath(areaId, me.x, me.y, x, y, true);
if (!_path)
return false;
for (var i = 0; i < _path.length; i++)
{
if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
{
for (j = 0; j < retry; j++)
{
if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
break;
}
if (j >= retry)
return false;
}
if (isClearPath && !NTR_CheckCowKing())
{
_preX = me.x;
_preY = me.y;
if(!MWR_ClearPosition(30, true))
return false;
NTP_DoPrecast();
if (me.x != _preX || me.y != _preY)
{
if (!NTM_MoveTo(me.areaid, _preX, _preY))
return false;
}
}
}
return true;
}
function NTR_CheckCowKing()
{
var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}
function NTR_CheckSafe(x, y, range)
{
var i;
var _target = NTC_FindUnit(NTC_UNIT_MONSTER);
if (_target)
{
do
{
if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
{
for (i = 0; i < 6; i++)
{
if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
return false;
}
}
} while (_target.GetNext());
}
return true;
}
function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
var _orgx, _orgy;
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
switch(arguments.length)
{
case 0:
range = 20;
case 1:
pickitem = false;
case 3:
openchests = true;
case 4:
usefinditem = true;
default:
if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
safelevel = 0;
break;
}
_orgx = me.x;
_orgy = me.y;
for(var i = 0; i < 3; i++)
{
_skiplist = new Array();
while(_attackcount < (i+1)*100)
{
if(NTR_CheckCowKing())
return false;
_mindistance = 1E6;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target)
{
do
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if(_target.IsAttackable())
{
if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
{
_distance = GetDistance(me, _target);
if(_distance < _mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push(_target.gid);
}
} while(_target.GetNext());
}
if(_mindistance < 1E6)
{
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);
if(_target)
{
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
_result = NTA_Attack(_target, (_attackcount % 30) == 0);
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
switch(_result)
{
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
NTSI_PickItems();
_attackcount++;
break;
default:
_attackcount = 1E6;
}
}
}
else
break;
}
}
if(_attackcount > 2)
{
switch(me.classid)
{
case NTC_CHAR_CLASS_PALADIN:
if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
{
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
}
break;
case NTC_CHAR_CLASS_BARBARIAN:
if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
MWL_FindItem(MWConfig_FindItemRange);
break;
case NTC_CHAR_CLASS_NECROMANCER:
if(!NTR_CheckCowKing())
MWA_RaiseMinions();
break;
}
}
if(pickitem && _attackcount > 0)
NTSI_PickItems();
if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
if(MWConfig_ActivateNearbyShrines)
MWL_ActivateNearbyShrines();
switch(safelevel)
{
case 1:
return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
case 2:
return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
}
if(MWConfig_IdentAfterPickup)
MWL_IDItemsAfterPickup();
return true;
}
function NTT_SecondTomeTP(npc, type, amount)
{
var _items;
var _counter = 0;
if(arguments.length < 1)
return false;
if(arguments.length < 2)
type = 0;
if(arguments.length < 0)
amount = 1;
if(amount == 0)
return false;
if(type)
_items = npc.GetItems("tbk");
if(_items)
{
if(_items.length > 0)
{
for(var i = 0 ; i < amount ; i++)
{
if(NTT_ShopItem(_items[0], npc, 2))
_counter++;
}
}
}
return (_counter > 0);
}
Cow Leechfight ( Blaue Portal - Mit "Tp is safe!" Nachricht )
Code:
/**
* This file was modified by
* Check the programming section for updates and further scripts
* Last Update: 22:45 24.08.2011
*/
var _AllowedToEnterTP = false;
const _NTR_STRING_COW_KING = GetLocaleString(2850);
const _NTR_COW_KING_RANGE = 80;
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
MWC_Initialize();
RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
var _leader = "Leader Name"; // Name of leader's character in game (exactly)
var _portal;
var i;
if(!NTTM_CheckAct(1, true))
{
NTC_SendMsgToScript("MWBotGame.ntj", NTTM_CheckAct, 26, 1, true);
return;
}
NTTM_TownMove("portalspot");
for(i = 0; i <= 200; i++)
{
if(NTC_InMyParty(NTConfig_Leader))
break;
if(!NTConfig_Leader)
{
_portal = NTM_FindPortalAreaInt(38, 0);
if(_portal != -1)
{
_owner = _portal.GetParent();
if(_owner && !NTC_InMyParty(_owner))
NTConfig_Leader = _owner;
}
}
NTC_Delay(200);
}
if(MWConfig_EnterUnsafeTP)
_AllowedToEnterTP = true;
while(NTC_InTown() && NTC_InMyParty(NTConfig_Leader))
{
if(_AllowedToEnterTP)
NTM_UsePortal("BluePortal", 38, NTConfig_Leader);
NTC_Delay(500);
}
NTP_DoPrecast();
NTR_ClearRooms(150, NTC_UNIT_MONSTER, 773, _NTR_COW_KING_RANGE);
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
}
function NTR_TakeCowPortal(range)
{
var _portal;
_portal = NTC_FindUnit(NTC_UNIT_OBJECT, 60, 5);
if(_portal)
return NTM_UsePortal("Portal", 39, "dummy", _portal);
return false;
}
function NTR_ClearRooms(range, type, id, distance)
{
var i;
var _unit;
var _preRoom;
var _addRooms = new Array();
var _removeRooms = new Array();
if (distance)
{
_unit = GetPresetUnits(me.areaid, type, id);
if (!_unit || _unit.length < 1)
return false;
}
_preRoom = GetRoom();
if (_preRoom)
{
do
{
if (distance)
{
if (GetDistance(_preRoom.x * 5, _preRoom.y * 5, _unit[0].roomx * 5, _unit[0].roomy * 5) < distance)
continue;
}
_addRooms.push([_preRoom.x * 5, _preRoom.y * 5]);
} while (_preRoom.GetNext());
}
if (_addRooms.length < 1)
return false;
_preRoom = [me.x, me.y];
while (_addRooms.length > 0)
{
_addRooms.sort(function (a, b) { return (GetDistance(_preRoom[0], _preRoom[1], a[0], a[1]) - GetDistance(_preRoom[0], _preRoom[1], b[0], b[1])); });
_removeRooms.push([_addRooms[0][0], _addRooms[0][1]]);
for (i = 1; i < _addRooms.length; i++)
{
if (GetDistance(_preRoom[0], _preRoom[1], _addRooms[i][0], _addRooms[i][1]) <= GetDistance(_preRoom[0], _preRoom[1], _addRooms[0][0], _addRooms[0][1]))
{
_removeRooms.push([_addRooms[i][0], _addRooms[i][1]]);
}
else
break;
}
if (_removeRooms.length > 1)
{
_removeRooms.sort(function (a, b) { return (b[0] - a[0]); });
if (_removeRooms[0][0] <= _preRoom[0])
{
_removeRooms.sort(function (a, b) { return (b[1] - a[1]); });
if (_removeRooms[0][1] <= _preRoom[1])
{
_removeRooms.sort(function (a, b) { return (a[0] - b[0]); });
if (_removeRooms[0][0] >= _preRoom[0])
_removeRooms.sort(function (a, b) { return (a[1] - b[1]); });
}
}
}
if (!range || GetDistance(me.x, me.y, _removeRooms[0][0], _removeRooms[0][1]) < range)
{
if (NTR_MoveTo(me.areaid, _removeRooms[0][0], _removeRooms[0][1], 3, true))
_preRoom = _removeRooms[0];
}
for (i = 0; i < _addRooms.length; i++)
{
if (_addRooms[i][0] == _removeRooms[0][0] && _addRooms[i][1] == _removeRooms[0][1])
{
_addRooms.splice(i, 1);
break;
}
}
_removeRooms.length = 0;
}
return true;
}
function NTR_MoveTo(areaId, x, y, retry, isClearPath)
{
if (x == me.x && y == me.y)
return true;
if (arguments.length < 4)
retry = 3;
if (arguments.length < 5)
isClearPath = false;
var j;
var _path;
var _preX, _preY;
_path = GetPath(areaId, me.x, me.y, x, y, true);
if (!_path)
return false;
for (var i = 0; i < _path.length; i++)
{
if (NTR_CheckCowKing() || NTR_CheckSafe(_path[i][0], _path[i][1], 15))
{
for (j = 0; j < retry; j++)
{
if (NTM_MoveTo(me.areaid, _path[i][0], _path[i][1]))
break;
}
if (j >= retry)
return false;
}
if (isClearPath && !NTR_CheckCowKing())
{
_preX = me.x;
_preY = me.y;
if(!MWR_ClearPosition(30, true))
return false;
NTP_DoPrecast();
if (me.x != _preX || me.y != _preY)
{
if (!NTM_MoveTo(me.areaid, _preX, _preY))
return false;
}
}
}
return true;
}
function NTR_CheckCowKing()
{
var _cowKing = NTC_FindUnit(NTC_UNIT_MONSTER, _NTR_STRING_COW_KING);
return (_cowKing && GetDistance(me, _cowKing) < _NTR_COW_KING_RANGE);
}
function NTR_CheckSafe(x, y, range)
{
var i;
var _target = NTC_FindUnit(NTC_UNIT_MONSTER);
if (_target)
{
do
{
if (GetDistance(x, y, _target.x, _target.y) < range && _target.IsAttackable())
{
for (i = 0; i < 6; i++)
{
if (NTConfig_AttackSkill[i] && NTA_GetResistance(_target, _NTA_SkillDamage[i]) < 100)
return false;
}
}
} while (_target.GetNext());
}
return true;
}
function MWR_ClearPosition(range, pickitem, safelevel, openchests, usefinditem)
{
var _orgx, _orgy;
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
switch(arguments.length)
{
case 0:
range = 20;
case 1:
pickitem = false;
case 3:
openchests = true;
case 4:
usefinditem = true;
default:
if(NTConfig_CheckSelfSafe < 0x01 && NTConfig_CheckMercSafe < 0x01)
safelevel = 0;
break;
}
_orgx = me.x;
_orgy = me.y;
for(var i = 0; i < 3; i++)
{
_skiplist = new Array();
while(_attackcount < (i+1)*100)
{
if(NTR_CheckCowKing())
return false;
_mindistance = 1E6;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target)
{
do
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if(_target.IsAttackable())
{
if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= range && NTA_IsValidMonster(_target))
{
_distance = GetDistance(me, _target);
if(_distance < _mindistance)
{
_mingid = _target.gid;
_mindistance = _distance;
}
}
}
else
_skiplist.push(_target.gid);
}
} while(_target.GetNext());
}
if(_mindistance < 1E6)
{
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid, 1);
if(_target)
{
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
_result = NTA_Attack(_target, (_attackcount % 30) == 0);
if(MWConfig_ShowOverheadStatus)
Say("!Attacking " + _target.name + " (" + (_target.hp * 100 / _target.hpmax).toFixed(0) + "%)");
switch(_result)
{
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
NTSI_PickItems();
_attackcount++;
break;
default:
_attackcount = 1E6;
}
}
}
else
break;
}
}
if(_attackcount > 2)
{
switch(me.classid)
{
case NTC_CHAR_CLASS_PALADIN:
if(parseInt(me.hp * 100 / me.hpmax) < NTConfig_UseRedemptionHP || parseInt(me.mp * 100 / me.mpmax) < NTConfig_UseRedemptionMP)
{
if(NTC_PutSkill(124, NTC_HAND_RIGHT))
NTC_PingDelay(1000);
}
break;
case NTC_CHAR_CLASS_BARBARIAN:
if(usefinditem && MWConfig_UseFindItem && !NTR_CheckCowKing())
MWL_FindItem(MWConfig_FindItemRange);
break;
case NTC_CHAR_CLASS_NECROMANCER:
if(!NTR_CheckCowKing())
MWA_RaiseMinions();
break;
}
}
if(pickitem && _attackcount > 0)
NTSI_PickItems();
if(MWConfig_OpenContainerMode == 2 && openchests && !NTR_CheckCowKing())
MWL_OpenNearbyChests(MWConfig_OpenChestsRange);
if(MWConfig_ActivateNearbyShrines)
MWL_ActivateNearbyShrines();
switch(safelevel)
{
case 1:
return NTTMGR_CheckSafe(0x00, NTConfig_CheckMercSafe&0x01);
case 2:
return NTTMGR_CheckSafe(NTConfig_CheckSelfSafe, NTConfig_CheckMercSafe);
}
if(MWConfig_IdentAfterPickup)
MWL_IDItemsAfterPickup();
return true;
}
function NT_GameMsgEvents(msg, type)
{
var _msg = msg.toLowerCase();
if(type == 0 && _msg.indexOf(NTConfig_Leader.toLowerCase()) > -1 && MWConfig_Announcements.BaalTpSafe && _msg.indexOf(MWConfig_Announcements.BaalTpSafe.toLowerCase()) > -1)
_AllowedToEnterTP = true;
}
Um eine meiner drei Frage zu beantworten
Quote:
Originally Posted by NerDxx™
Hi Leute habe mal drei fragen,
1.
Code:
Ist es möglich wenn der leader das tp aufmacht das er wartet bis 1 oder alle Leecher durch gehen und dann erst anfängt zu kämpfen?
2.
Code:
Ist es möglich das der Leader zb sagt Tp is safe! und der Leecher erkennt die nachricht und geht dann durch das tp ?
3.
Code:
Wenn der Leader ein spiel öffnet und der Leecher joint , sagt der Leader Tristrun und der Leecher macht Tristrun , dann sagt der Leader Cowrun und der Leecher macht Cowrun , ist das möglich das der Leecher die Scripts Reihenfolge aus dem Chat auslesen kann?
Meine bots laufen ganz normal von cow bis baal am schluss wenn sie baal gekillt haben stürzen sie ab und müssen sich neu einlogen wie kann man das beheben
Meine bots laufen ganz normal von cow bis baal am schluss wenn sie baal gekillt haben stürzen sie ab und müssen sich neu einlogen wie kann man das beheben
Stelle mal in der Char-Config des Leechers "NTConfig_LeechExitDelay = 1000;" ein, das könnte eine Ursache dafür sein.
So ist es zumindest beim Etal, weiß nicht ob Muddy dieselbe Funktion hat.
[Release] D2NT 3.1 1.13c 07/17/2016 - Diablo 2 - 91 Replies hi,
hab eben den d2nt3.1 gefunden. ein neues baba script is dabei.
release thread eon
D2NT3.1
[Realease] Muddy's Waypoint Catcher 08/21/2013 - Diablo 2 Programming - 46 Replies Moin zusammen,
hier mal die erste Release Version eines kleinen Scripts genannt Waypoint Catcher. Das ganze ist jetzt nichtmal 24h alt, dementsprechend sind vermutlich noch einige Bugs vorhanden. Hinweise dazu nehme ich gerne entgegen. ;)
Features:
- Suchen sämtlicher Wegpunkte mit Ausnahme, wobei in Akt ein durch Probleme im Jail Bereich nach dem Wegpunkt Outer Cloister abgebrochen wird
- Wahlweise auch mit TP an jedem gefundenen Wp, sodass man damit auch anderen (nicht-Bots) die...
[D2NT] Long Dia Release 05/10/2011 - Diablo 2 Programming - 28 Replies Ein kleines Script für diablo, es startet beim eingang macht ein tp cleart den weg zum star macht am star noch ein tp dann läufts wie das normale nur cleart es schöner :)
hoffe euch gefällts ich habs noch nicht wirklich getestet (2-3 runs) bugs können gerne hier gepostet werden verbesserungs vorschläge auch :D
installation:
1.)Script in den Bot ordner kopieren
2.)Script im editor oder vergleichbaren öffnen
3.) Msg´s anpassen (ist nicht schwer)
4.) in der char config die zeile...
Muddy's D2NT Help 07/29/2010 - Diablo 2 - 3 Replies hi i just started to use the bot it work's great.
how do i set up the skill's i use on my Sorc and pick up itme's?
.....
if you reply to this post please use english