D2Bot# mit Kolbot RELEASE - Ein neuer Bot für D2BS

07/18/2016 21:10 Finallyb#4996
Quote:
Originally Posted by senfbert View Post
Da ich auf Grund der "Wortlänge" die SuFu nicht benutzen kann:

Kann mir jemand die Pickit Logik erklären?
Wann und warum benutzt er && # oder ##
?
Kurz gesagt:
&& ist ein UND, also Eigenschaft1 und Eigenschaft2 usw
# ist ein Trennzeichen. Es gibt 3 Sektionen, welche mit # voneinander getrennt werden.
also 1.#2.#3.
(ab hier alles aus dem Kopf und ich hatte D2 vor über einem Jahr das letzte mal laufen)
1. alles was der Bot auslesen kann solange das Item noch auf dem Boden liegt
2. alles was er auslesen kann wenn er das Item (möglicherweise identifiziert) im Inventory hat
3. Metainformationen für den Bot (MaxQuantity usw.)
2. und 3. sind Optional, möglich ist also
1.
1.#2.
1.#2.#3.
1.##3.

Für mehr Infos ist hier der empfohlene Guide: [Only registered and activated users can see links. Click Here To Register...]

Beachte auch die Hinweise beim Kolbot-Repository (daher hab ich auch den Link oben): [Only registered and activated users can see links. Click Here To Register...]
07/18/2016 23:35 klik44#4997
gibt es eine "CowHelper.js"? :D

da wir uns ja nun einig sind, dass man die MFhelper config nicht nutzen sollte ( es sei denn, man kriegt alle sprachcommands weg), brauchen wir eindeutig configs für jeden einzelnen abschnitt, sowas wie die diablohelper.js und baalhelper.js für z.b. cows,andy,meph,nila, shenk, eldritch

hat da jemand genug energie für? :D <3
07/18/2016 23:40 FerroKarr#4998
ich hab mein "SilentBaal" zum leechen für baalruns basierend auf "AutoBaal" fertig :)
07/19/2016 19:04 senfbert#4999
Kann es sein, dass bei

Config.SkipImmune = [];

ein bug vorliegt oder bin ich zu doof?

habs mit: Config.SkipImmune = [lightning];
und mit: Config.SkipImmune = lightning;

probiert aber der bot stuckt sofort weil er damit nix anfangen kann o_O
07/19/2016 19:51 klik44#5000
Quote:
Originally Posted by senfbert View Post
Kann es sein, dass bei

Config.SkipImmune = [];

ein bug vorliegt oder bin ich zu doof?

habs mit: Config.SkipImmune = [lightning];
und mit: Config.SkipImmune = lightning;

probiert aber der bot stuckt sofort weil er damit nix anfangen kann o_O
Config.SkipImmune = ["lightning"]; !?

Quote:
Originally Posted by klik44 View Post
gibt es eine "CowHelper.js"? :D

da wir uns ja nun einig sind, dass man die MFhelper config nicht nutzen sollte ( es sei denn, man kriegt alle sprachcommands weg), brauchen wir eindeutig configs für jeden einzelnen abschnitt, sowas wie die diablohelper.js und baalhelper.js für z.b. cows,andy,meph,nila, shenk, eldritch

hat da jemand genug energie für? :D <3
niemand?

:(
07/20/2016 10:09 Borega#5001
nutzt hier jemand das getkeys script und muled die gefundenen Keys zum smitergame?
Bei mir sucht der Farmer zwar die Keys aber wenn er das 3x3 gefunden hat joined er nicht das game des smiters um die keys rüber zu mulen.
Im Torchsystem habe ich das Setup versucht richtig einzustellen, jedoch ist mir einiges unklar:
Das Farmer profile name sollte das der name des Smiterprofils sein?
Keyfinderprofiles is klar: das sind die Keyfarmer
Beim Gamename: Wie adde ich das pw des games?
"Farmer 1": {
KeyFinderProfiles: ["mf 1", "mf 2"],


FarmGame: "torch1-"
},
07/20/2016 11:37 Gizmoz81#5002
Quote:
Originally Posted by Borega View Post
nutzt hier jemand das getkeys script und muled die gefundenen Keys zum smitergame?
Bei mir sucht der Farmer zwar die Keys aber wenn er das 3x3 gefunden hat joined er nicht das game des smiters um die keys rüber zu mulen.
Im Torchsystem habe ich das Setup versucht richtig einzustellen, jedoch ist mir einiges unklar:
Das Farmer profile name sollte das der name des Smiterprofils sein?
Keyfinderprofiles is klar: das sind die Keyfarmer
Beim Gamename: Wie adde ich das pw des games?
"Farmer 1": {
KeyFinderProfiles: ["mf 1", "mf 2"],


FarmGame: "torch1-"
},
Du musst das Game deines Smiters, in der Tochsystem.js, ohne Passwort und Zahlen (Smitegame123= Smitegame) eingeben.
PHP Code:
"DeinSmiterProfil": { // Farmer profile name
            // Put key finder profiles here. Example - KeyFinderProfiles: ["MF 1", "MF 2"],
            
KeyFinderProfiles: ["Keyrunner1","Keyrunner2","Keyrunner3"],

            
// Put the game name of uber killer here (without numbers). Key finders will join this game to drop keys. Example - FarmGame: "Ubers-",
            
FarmGame"Smitergame"
        
}, 
Dann sollte der Smiter nach seinem run auf keys warten, bzw er "befiehlt" seinen Key runnern Ihm die Keys zu bringen.
07/20/2016 11:54 Borega#5003
Quote:
Originally Posted by Gizmoz81 View Post
Du musst das Game deines Smiters, in der Tochsystem.js, ohne Passwort und Zahlen (Smitegame123= Smitegame) eingeben.
PHP Code:
"DeinSmiterProfil": { // Farmer profile name
            // Put key finder profiles here. Example - KeyFinderProfiles: ["MF 1", "MF 2"],
            
KeyFinderProfiles: ["Keyrunner1","Keyrunner2","Keyrunner3"],

            
// Put the game name of uber killer here (without numbers). Key finders will join this game to drop keys. Example - FarmGame: "Ubers-",
            
FarmGame"Smitergame"
        
}, 
Dann sollte der Smiter nach seinem run auf keys warten, bzw er "befiehlt" seinen Key runnern Ihm die Keys zu bringen.
OK der Smiter geht jetzt in A1 und wartet auf Keys aber der Keyfarmer macht immernoch eigene Games auf und macht dann garnichts mehr. Er wartet 100 sec. und macht dann wieder ein eigenes Game auf...
was muss ich bei der Charconfig der Farmer angestellt haben? Bisher ist nur an Scripts.GetKeys
07/20/2016 12:22 Gizmoz81#5004
Quote:
Originally Posted by Borega View Post
OK der Smiter geht jetzt in A1 und wartet auf Keys aber der Keyfarmer macht immernoch eigene Games auf und macht dann garnichts mehr. Er wartet 100 sec. und macht dann wieder ein eigenes Game auf...
was muss ich bei der Charconfig der Farmer angestellt haben? Bisher ist nur an Scripts.GetKeys
Wenn Du die Profilnamen der Keyrunner eingetragen hast, sollte der Smiter sowas wie: "ask Keyrunner for Keys" oder sowas sagen........

Ich probiers mal eben aus, kann ein bisschen dauern ;)
07/20/2016 12:27 Borega#5005
Quote:
Originally Posted by Gizmoz81 View Post
Wenn Du die Profilnamen der Keyrunner eingetragen hast, sollte der Smiter sowas wie: "ask Keyrunner for Keys" oder sowas sagen........

Ich probiers mal eben aus, kann ein bisschen dauern ;)
ok, aus welchen Gründen auch immer: es hat jetzt funktioniert...
07/20/2016 15:56 FerroKarr#5006
Quote:
Originally Posted by klik44 View Post
niemand?

:(


Ähm schon.... nur das Problem ist tatsächlich, das gewisse Dinge nicht ohne Commandos gehen...

Cows - Irgendwie muss der ja gesagt bekommen das er nun das Redportal nutzen soll. Ich hab noch keine Idee wie das gehen soll. Ich spiel so mit Gedanken wie nutze das Redportal wenn der Leader ein TP ins Cowgame aufmacht oder sowas :)

Andy, Meph, Nila - Weniger ein Problem. Steht ein TP soll er das nehmen und "go".

Shenk, Eldritch - Müsste man erst den Leader in die Passende Area schicken und dann dort n TP machen lassen... dürfte auch gehen.

Alles in allem denk ich ist es nur Fleißarbeit :)

Maaaal schauen wie ich Zeit finde. Bisher hab ich nur die Scripts angepasst die ich auch selber nutze. Darum muss ich mir dafür erst einmal die Motivation suchen ;)
07/20/2016 22:50 klik44#5007
Quote:
Originally Posted by FerroKarr View Post
Ähm schon.... nur das Problem ist tatsächlich, das gewisse Dinge nicht ohne Commandos gehen...

Cows - Irgendwie muss der ja gesagt bekommen das er nun das Redportal nutzen soll. Ich hab noch keine Idee wie das gehen soll. Ich spiel so mit Gedanken wie nutze das Redportal wenn der Leader ein TP ins Cowgame aufmacht oder sowas :)

Andy, Meph, Nila - Weniger ein Problem. Steht ein TP soll er das nehmen und "go".

Shenk, Eldritch - Müsste man erst den Leader in die Passende Area schicken und dann dort n TP machen lassen... dürfte auch gehen.

Alles in allem denk ich ist es nur Fleißarbeit :)

Maaaal schauen wie ich Zeit finde. Bisher hab ich nur die Scripts angepasst die ich auch selber nutze. Darum muss ich mir dafür erst einmal die Motivation suchen ;)
:D ja genau das meine ich, so wie er's bei dia/baalhelper auch macht, er wartet im entsprechenden akt auf ein tp und legt los ohne irgendwelche commands.
der follower muss ja nicht durchs redportal, der leader kann doch einfach sofort wenn er drin is, ein normales tp machen.

wenn ich wüsste, wonach ich genau suchen muss in der diablohelper/baalhelper.js(also die zeilen, die sagen "warte in akt x auf tp und sobald eins kommt, leg los), dann würde ich einfach mal rumprobieren und einen mix aus der cows.js und der diablohelper.js züchten ^^
07/21/2016 05:10 Mr_Nagelklopfer#5008
Vielleicht kann jemand das hier von d2nt zu d2bs umdichten? :)

Hier sind die kompletten scripts : [Only registered and activated users can see links. Click Here To Register...]

Quote:
// D2NT Cow script
// Version 1.4.1
//--- CONFIG ---
const _NTR_FAIL_CHECKS = 25; // Number of failed teleports before script ends. Ex. Edge of map causes a fail teleport. DEFAULT: 25
const _NTR_PRE_EVERY = 40; // Number of seconds before precasting again. -1 for never. DEFAULT: 40
const _NTR_CHEST_AND_ROCKS = true; // Open chest and rocks. DEFAULT: true
//--- END ---

const _NTR_STRING_PORTAL = GetLocaleString(3226);

function NTMain(){

Include("libs/common/NTCommon.ntl");
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");

NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");

NTA_Initialize();

if(!NTTM_CheckAct(1)){
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
NTTM_TownMove("stash");

for(var i = 0 ; i < NTConfig_WaitForCowPortal*2 ; i++) {
if(i % 20 == 0) {
if(NT_TakeCowPortal()) {
break;
}
}
Delay(500);
}

Delay(500);
if (me.areaid != 39) {
NTC_SendMsgToScript("NTBotGame.ntj", "Failed to take Cow Portal.");
return;
}
NTP_DoPrecast(true);
NTR_ClearRooms();
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}

// Internal functions

function NTR_ClearPosition(range, pickitem, safelevel, failed){
var _orgx, _orgy;
var _spectype = [0x0A, 0x01, 0x01];
//var _spectype = [0x0A, 0x01];
var _skiplist;
var _attackcount = 0;
var _target;
var _distance, _mingid, _mindistance;
var _result;
var _cowKing;
var _test;
if(NTConfig_AttackSkill[1] < 1 || NTConfig_AttackSkill[3] < 1)
return false;
switch(arguments.length){
case 0:
range = 20;
case 1:
pickitem = false;
case 2:
safelevel = 0;
default:
if((NTConfig_CheckSelfSafe.length < 1) && (NTConfig_CheckMercSafe.length < 1))
safelevel = 0;
break;
}
_orgx = me.x;
_orgy = me.y;
for(var i = 0 ; i < _spectype.length ; i++){
_skiplist = new Array();
while(_attackcount < (i+1)*100){
_mindistance = 100000;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
if(_target){
do{
if(_skiplist.indexOf(_target.gid) < 0){
if(_target.IsAttackable() && (_target.spectype&_spectype[i])){
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 < 100000){
_target = NTC_FindUnit(NTC_UNIT_MONSTER, _mingid);
if(_target){
_cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
if(_cowKing){
return true;
}
_result = NTA_Attack(_target, (_attackcount%30) == 0);
switch(_result){
case 1:
_skiplist.push(_mingid);
break;
case 2:
case 3:
_attackcount++;
_sorcattack++;
break;
default:
return false;
}
}
}
else
break;
}
}
if(me.classid == NTC_CHAR_CLASS_PALADIN){
if(_attackcount > 2 && (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);
}
}
_cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
if(_cowKing){
return true;
}
if(me.classid == NTC_CHAR_CLASS_NECROMANCER){
NTA_SkeletonArmy(NTConfig_SkeletonArmy);
NTA_MageArmy(NTConfig_MageArmy);
NTA_ReviveArmy(NTConfig_ReviveArmy);
}
if(_NTR_CHEST_AND_ROCKS && failed == false){
_target = NTR_GetChest();
if(_target){
do{
if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
if(NTC_OpenChest(_target)){
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
NTSI_PickItems();
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
}
}
}while(_target.GetNext());
}
_target = NTR_GetObj(174);
if(_target){
do{
if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
Delay(200);
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
NTSI_PickItems();
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
}
}
}
}while(_target.GetNext());
}
_target = NTR_GetObj(175);
if(_target){
do{
if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
Delay(200);
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
NTSI_PickItems();
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
}
}
}
}while(_target.GetNext());
}
_target = NTR_GetObj(159);
if(_target){
do{
if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
Delay(200);
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
NTSI_PickItems();
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
}
}
}
}while(_target.GetNext());
}
_target = NTR_GetObj(155);
if(_target){
do{
if(_target && GetDistance(_orgx, _orgy, _target.x, _target.y) <= range){
if(NTM_MoveTo(me.areaid, _target.x, _target.y)){
if(NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _target)){
Delay(200);
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
NTSI_PickItems();
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
}
}
}
}while(_target.GetNext());
}
}
if(pickitem && _attackcount > 0){
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
NTSI_PickItems();
if(NTConfig_IdInField){
if (!NTT_CheckSpace(NTConfig_FreeSpaceXY[0], NTConfig_FreeSpaceXY[1])) {
NT_FieldID();
} // id in field add
}
}
return true;
}

function NTR_ClearRooms(){
var failcount = 0, precount = 0, x, y, offx = 0, offy = 0, goalx = 0, goaly = 0, cowoffx = 0, cowoffy = 0;
var toggle = true;
var _cowKing;
var _faillast;
x = me.x;
y = me.y;
//NTC_PingDelay(5000);
while (failcount <= _NTR_FAIL_CHECKS){
if(toggle == true && offx == goalx){
if(goaly < 0){
goaly=(0-(goaly-20));
}else{
goaly=(0-(goaly+20));
}
toggle = false;
}
if(toggle == false && offy == goaly){
if(goaly < 0){
goalx=(0-(goalx-20));
}else{
goalx=(0-(goalx+20));
}
toggle = true;
}
if(offy > goaly){
offy-=20;
y-=20;
}
if(offy < goaly){
offy+=20;
y+=20;
}
if(offx < goalx){
offx+=20;
x+=20;
}
if(offx > goalx){
offx-=20;
x-=20;
}
_cowKing = GetUnit(NTC_UNIT_MONSTER, GetLocaleString(2850));
if(!_cowKing){
NTR_ClearPosition(20, true, 0, _faillast);
if(((GetTickCount()-precount)/1000) >= _NTR_PRE_EVERY && _NTR_PRE_EVERY >= 0){
NTP_DoPrecast();
precount = GetTickCount();
}
}
if(!NTM_MoveTo(me.areaid, x, y)){
failcount++;
_faillast = true;
}else{
_faillast = false;
}
}
return true;
}

function NTR_GetChest(){
var _chest;
_chest = NTC_FindUnit(NTC_UNIT_OBJECT, "chest");
if(_chest){
return _chest;
}
return null;
}

function NTR_GetObj(num){
var _chest;
_chest = NTC_FindUnit(NTC_UNIT_OBJECT, num);
if(_chest){
return _chest;
}
return null;
}

function NTCW_AlreadyTombs(){
var portalbook = me.GetItems("tbk");
if(portalbook && portalbook.length <= 1)
return true;
else
return false;
}

function NT_TakeCowPortal(){
var readyNow = false;
var _prearea = me.areaid
var _portal = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
if(!_portal) {
return false;
}
if(_portal){
do{
if(_portal.subareaid == 295 || _portal.subareaid == 39){
while(_portal.mode != 2){
Delay(500)
}
readyNow = true;
break;
}
} while(_portal.GetNext());
if(readyNow) {
for(var i = 0 ; i < 40 ; i++){
if(NTM_GetCloserIntS(_portal)){
NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, _portal);
}
if(me.areaid != _prearea){
break;
}
}
}
}
return (me.areaid == 39);
}
07/21/2016 08:58 FerroKarr#5009
Die Idee ist zwar nicht schlecht, aber D2NT hat gaaaanz anderen Lib's und Function ... Das "Umstricken" wäre möglich, kommt aber einem komplett neu scripten gleich.
Von da her...Idee gut aber leider nutzt es nix.
07/21/2016 12:53 ich2506#5010
Quote:
Originally Posted by FerroKarr View Post
ich hab mein "SilentBaal" zum leechen für baalruns basierend auf "AutoBaal" fertig :)
hi und wie bekommt man das nun weg das der bei d2bs das alles sagt und nur tp s macht im cs/trhon ?

mfg jens