da mein letzter Thread bzg. der Schenke-Aktion nicht so gut an gekommen ist^^, wollte ich das mal versuchen mit einer kleinen Zusammenfassung an Infos und Scripten bzgl. des Ladder-Resets wieder gut zu machen.
Fangen wir an:
HA HA! Zu aller erst, sollte doch mal geklärt werden, wie man seinen ersten und weitere chars ganz am anfang am schnellsten nach hell bringt.
Das wird hier disskutiert:

Danke ek654
Wenn es denn nun ans Botten geht, gehe davon aus, ihr seid im Besitz eines funktionierenden NTBots!
Wenn nicht, empfehle ich gerne den Bluebird NTBot, da dieser Primär auf das Mfen gerichtet ist.
--->

Probleme und Fragen bitte generell in die Quell-Threads. Ich würde den Thread hier gerne für Ergänzungen behalten.
So! Jetzt aber:
Am Anfang jeder neuen Ladder ist es natürlich wichtig eine, oder mehrere Zauberinnen zu haben. Sie können sich teleportieren, ohne teurere Runenwörter.
Durch den Skill Blizzard, machen sie einen durchaus angebrachten Schaden um Bosse schnell und sicher zu killen.
Da es ein paar Scripte gibt, die bestimmte Bosse so angreifen, dass die Chars praktisch keinen Schaden abbekommen, kann man sie schon recht früh mit wenig bis garkeiner ausrüstung Botten lassen
--->
Mephisto Moat Script (inkl. Pindel):

--->
Andarile Door Bug Script:

FollowBot:
Viele wollen gleich mehrere Chars hochleveln, bzw. für eine volle party sorgen.
solltet ihr keine 8er Party finden können aber im besitz mehrer CD Keys seid, dann könnte ein FollowBot ganz praktisch sein.
Quote:
hi,
also nimm eine bot datei NTMephisto von mir aus.kopier sie aber vorher auf den desktop! ersetze den inhalt mit diesem
bennene die datei NTFollow oder wie du willst.kopiere sie wieder in den bot ordner.in der char config von dem verfolger fügst du folgendes hinzuCode:function NTMain() { //Initialization Include("libs/common/NTCommon.ntl"); NTC_IncludeLibs(); NTC_IncludeConfig("NTBot/char_configs"); NT_LoadConfig(); NTSI_LoadNIPFiles("NTBot/item_configs"); NTA_Initialize(); //RegisterEvent(EVENT_GAMEMSG, NTH_Talk); ///////////////////////////////////////////////////////////////// // // Enter your Leader's name here. // var _leader = "PallyOfDoom"; //<----hier kommt der charname des führers hin // // // ///////////////////////////////////////////////////////////////// //Variable Declaration var _attack = true; var _party = false; var _target; var _leaderpos = null; var _count = 0; //Find Leader _target = GetPlayerUnit(); if(_target) { while(_target.GetNext()) { if(_target.name.toLowerCase() == _leader.toLowerCase()) { _leader = _target; break; } } } while(!NTC_InMyParty(_leader.name)) Delay(500); //Ready Check function NTH_ReadyCheck() { NTTM_CheckAct(); if(me.areaid != _leader.areaid) { NTTM_TownMove("waypoint"); if(_leader.areaid == 1 || _leader.areaid == 40 || _leader.areaid == 75 || _leader.areaid == 103 || _leader.areaid == 109) { if(!NTM_TakeWaypoint(_leader.areaid)) { NTM_TakeWaypoint(1); } } else { if(_leader.areaid < 40 || _leader.areaid == 0) NTM_TakeWaypoint(1); else if(_leader.areaid < 75) NTM_TakeWaypoint(40); else if(_leader.areaid < 103) NTM_TakeWaypoint(75); else if(_leader.areaid < 109) NTM_TakeWaypoint(103); else NTM_TakeWaypoint(109); if(me.areaid != 40) NTTM_TownMove("portalspot"); else NTTM_TownMove("stash"); } } } //Bot while(1) { if(NTC_InMyParty(_leader.name)) { if(_leaderpos == null) _leaderpos = NTH_GetLeader(); if(_leaderpos != null) NTH_Follow(); if(me.areaid != _leader.areaid && NTH_GetLeader() == null) NTH_ChangeArea(); } else NTA_ClearPosition(15, true); if(!NTH_InGame(_leader.name)) { NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END"); Delay(10000); } Delay(100) } //Internal Functions function NTH_GetLeader() { _target = NTC_FindUnit(NTC_UNIT_PLAYER); if(_target) { do { if(_target.name == _leader.name) return _target; } while(_target.GetNext()); } return null; } function NTH_Follow() { if(_leaderpos.mode == 3 || _leaderpos.mode == 2) _count = 0; if(_leaderpos.mode == 1 || _leaderpos.mode == 4) _count++; if(_count >= 10 || _leaderpos.mode == 7 || _leaderpos.mode == 10 || _leaderpos.mode == 8) NTA_ClearPosition(15, true); if(GetDistance(me.x, me.y, _leaderpos.x, _leaderpos.y) > 7) NTM_MoveTo(_leader.areaid, _leaderpos.x, _leaderpos.y); } function NTH_ChangeArea() { if(NTH_InTown()) { NTTM_TownMove("waypoint"); NTM_TakeWaypoint(_leader.areaid); if(!NTH_InTown()) NTP_DoPrecast(true); } else if(!NTH_InTown(_leader)) { if(!NTM_TakeStair(_leader.areaid)) { if(!NTM_UsePortal("Portal", _leader.areaid, null, _portal)) { if(!NTM_TakeWaypoint(_leader.areaid)) { NTC_SendMsgToScript("NTBotGame.ntj", "NTH_ChangeArea() _leader.areaid = "+_leader.areaid); return; } } } } else { if(!NTM_TakeWaypoint(_leader.areaid)) NTH_UsePortal(_leader.name); } } } function NTH_InTown(player) { if(arguments.length < 1) player = me; if(player.areaid == 1 || player.areaid == 40 || player.areaid == 75 || player.areaid == 103 || player.areaid == 109) return true; return false; } function NTH_UsePortal(leader) { var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226)); var _preareaid = me.areaid; if(_portal) { do { if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30) { while(me.areaid == _preareaid && _portal) { NTM_MoveTo(me.areaid, _portal.x+1, _portal.y); NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal); Delay(500); if(me.areaid != _preareaid) return; } } } while(_target.GetNext()); } return; } function NTH_InGame(playerName) { _target = GetPlayerUnit(); if(_target) { do { if(_target.name == playerName) return true; } while(_target.GetNext()); } return false; }
NTConfig_Script.push("NTFollow.ntj");
beide müssen in der party sein
das wars
(
)Tristram Leech und Fighter:
(
)Code:
function NTMain()
{
Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize();
//////////////////////////////////////////////////////
//
//
//
var _leader = "Leader-Character-Name"; //Der name vom Leader
//
//
//
//////////////////////////////////////////////////////
if(NTConfig_FastPickit)
NTConfig_SnagRange = 12;
var _attackpos = [25169,5084,25169,5190,25131,5180,25119,5193,25131,5135,25086,5143,
25088,5191,25099,5190,25049,5190,25064,5158,25051,5135,25054,5094,25112,5087,25129,5065];
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
if(!NTTM_TownMove("portalspot"))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_TownMove()");
return;
}
while(!NTC_InMyParty(_leader))
{
Delay(500);
if(!NTTR_InGame(_leader))
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
while(me.areaid == 1 && NTC_InMyParty(_leader))
{
NTTR_UsePortal(_leader);
Delay(500);
}
if(!NTTR_InGame(_leader))
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
if(me.areaid == 4)
{
var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
NTTR_AttackTo(me.areaid, _portal.x, _portal.y);
if(!NTM_UsePortal("Portal", 38))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTM_UsePortal()");
return;
}
}
for(var i = 0 ; i < _attackpos.length ; i += 2)
NTTR_AttackTo(me.areaid, _attackpos[i], _attackpos[i+1]);
while(NTTR_InGame(_leader))
Delay(500);
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
function NTTR_AttackTo(areaid, x, y, attack)
{
var i, n;
var _path;
var _teleport = false;
if(x == me.x && y == me.y)
return true;
if(arguments.length < 4)
attack = true;
else if(NTC_GetSkillLevel(54) > 0)
_teleport = true;
_path = GetPath(areaid, me.x, me.y, x, y, false);
if(!_path)
return false;
for(i = 0 ; i < _path.length ; i++)
{
for(n = 0 ; n < 2 ; n++)
{
if(_teleport)
{
if(NTM_TeleportTo(_path[i][0]+Random(-n, n), _path[i][1]+Random(-n, n)))
break;
}
else
{
if(NTTR_WalkTo(_path[i][0], _path[i][1], attack))
break;
}
}
}
return true;
}
function NTTR_WalkTo(x, y, attack)
{
var i;
var _prex1, _prey1;
var _prex2, _prey2;
if(me.runwalk == 0)
me.runwalk = 1;
for(i = 0 ; i < 100 ; i++)
{
if((i % 10) == 0)
{
if((i % 60) == 0)
{
_prex1 = me.x;
_prey1 = me.y;
if((i % 120) == 0)
{
_prex2 = me.x;
_prey2 = me.y;
}
}
if(attack)
NTTR_Attack();
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y);
}
NTC_Delay(NTC_DELAY_FRAME);
if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2)
break;
if((i % 10) == 9)
{
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
if((i % 60) == 59)
{
if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown())
{
NTTR_Attack;
NTP_DoPrecast(false);
}
if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2)
return false;
}
}
}
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
NTC_Delay(NTC_DELAY_FRAME);
return (i < 100);
}
function NTTR_Attack()
{
var _orgx, _orgy;
var _spectype = [0x0A, 0x01, 0x01];
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
var _sum = 0;
if(NTConfig_AttackSkill[1] < 1 || NTConfig_AttackSkill[3] < 1)
return false;
_orgx = me.x;
_orgy = me.y;
for(var i = 0 ; i < _spectype.length ; i++)
{
_skiplist = new Array();
while(_attackcount < (i+1)*100)
{
if (_attackcount >= 50)
break;
_mindistance = 100000;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target)
{
do
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if(_target.IsAttackable() && (_target.spectype&_spectype[i]) && NTTR_IsReachable(_target))
{
if(GetDistance(_orgx, _orgy, _target.x, _target.y) <= 20 && 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 < 100000)
{
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
if(_target)
{
_result = NTA_Attack(_target, (_attackcount%30) == 0);
if(NTConfig_FastPickit)
NTSI_PickItems();
switch(_result)
{
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
_attackcount++;
break;
default:
return false;
}
}
}
else
break;
}
}
return true;
}
function NTTR_IsReachable(target)
{
if(target.x >= 25066 && target.x <= 25095 && target.y >= 5061 && target.y <= 5080)
return false;
if(target.x >= 25095 && target.x <= 25115 && target.y >= 5150 && target.y <= 5170)
return false;
return true;
}
function NTTR_InGame(playerName)
{
_target = GetPlayerUnit();
if(_target)
{
do
{
if(_target.name == playerName)
return true;
} while(_target.GetNext());
}
return false;
}
function NTTR_UsePortal(leader)
{
var _portal = NTC_FindUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
var _preareaid = me.areaid;
if(_portal)
{
do
{
if(_portal.mode == 2 && NTC_CheckOwner(_portal, leader) && GetDistance(me, _portal) <= 30)
{
while(me.areaid == _preareaid && _portal)
{
NTM_MoveTo(me.areaid, _portal.x+1, _portal.y);
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
Delay(500);
if(me.areaid != _preareaid)
return;
}
}
} while(_target.GetNext());
}
return;
}
Pickit:
Die Pickit steuert, welche Items der Bot aufheben soll, und welche nicht. (Bzw. welche items von den aufgehobenen verkauft werden um an Gold für Reperaturen und das Glücksspiel zu kommen)
Generell kann man sagen, das die "normalen" Pickit-Scripte ausreichend sind. Habt ihr dennnoch Bedenken, so könnt ihr eure Pickit recht einfach individuel bearbeiten.
das geht so:
Quote:
am besten ne standart pick it usen z.b. von bluebird oder sterni
die aber selbst editieren wie z.b. shako da sollteste die def bis auf 99 runter schrauben
selbe bei talamor ^^
musst halt nachgucken bei manchen items was die lowest def ist und es halt editieren ^^
wäre ja nicht gut wenn der bot am ladder start ne tal amor sellt nur weil die def unter 900 ist ^^ oder shako weils nur 10X def hat ^^
Quote:
Oder den Teil mit der Defense ganz rausnehmen, dann muss man auch nix nachgucken. :P
Quote:
Und da hab ich jetzt eine Frage dazu....
Reicht es, wenn ich da vor die "#" zwei "/" mache? Oder bockt der Bot dann?
Weil später will ich ja schon, dass nur das "gute" Zeug gepickt wird, aber eben am Anfang ned.
Quote:
Ja, das reicht. Also für Harle zum Beispiel:
So hebt er auch alles unid auf.Code:[Name] == Shako && [Quality] == unique //# [Defense] >= 140 // Harlequin Crest
(
)----------------------------------------------------------------------------------------------------------------------------------------------------------------------
Evtl bastel ich einen kleine Bot mit den ganzen scripten zusammen, so das man sich den fertig runterladen kann, aber jetzt gehe ich erstmal laufen ;P






