- aktueller Kolbot:
- D2BS Core rev1840 (alten überschreiben!):
- ein anständiger Texteditor (Notepad++):
- in /d2bs/kolbot/tools/ eine datei names PacketBlocking.js erstellen mit diesem Inhalt:
Code:
function main() { print("PacketBlocking loaded."); addEventListener("gamepacketsent", EventHandler); while(1) delay(100); } function EventHandler(packet) { if (packet[0] == 0x30) { print("Blocking: " + packet[0]); return true; } else return false; }
Allgemeine Tipps:
- Deaktiviert das automatische Inventar-Aufräumen (und das Picken bei Bedarf) in der default.dbj (Zeile 147), damit eure Sachen aus dem Inventar nicht gedroppt werden (der Bot behält sonst nur was in der Pickit ist)
- Alternativ einfach das ganze Inventar in der Charconfig "verschließen"
Code:
if (!Scripts.UserAddon && !Scripts.Test) { Town.getCorpse(); Town.clearBelt(); //Town.clearInventory(); Pickit.pickItems(); }
Packet 0x30 blockieren:
Code:
load("tools/PacketBlocking.js");
Jerhyn ansprechen:
Code:
getUnit(1, 201).interact();
Check ob der Dialog offen ist:
Code:
getUIFlag(0x08)
Mit Wegpunkt interagieren:
Code:
var _waypoint = getUnit(2, "waypoint"); sendPacket(1, 0x49, 4, _waypoint.gid, 4, 0);
Spieler anhandeln (beim Duper):
Code:
getUnit(0, "spielername").interact();
Handel akzeptieren (beim Trader):
Code:
tradeOk();
Allgemeine Tradeflags zum checken:
Code:
acceptTrade(2) == 0 // kein Tradescreen, kein Dialog acceptTrade(2) == 1 // ich habe Trade angefordert (Dialog "cancel") acceptTrade(2) == 2 // der andere hat Trade angefordert (Dialog "ok/cancel") acceptTrade(2) == 3 // im Tradescreen (kein Button grün)
Mit dem Duper aus dem Tradescreen gehen (0x77):
Code:
getPacket(1, 0x77, 1, 0x0C);
Act 2 Town Layout herausfinden (ob Ausgang links oder rechts):
Code:
this.Layout = function () { var _layout; if(me.area != 40) return false; if(getArea().exits[3].y == 5059) _layout = 1; // exit left else if(getArea().exits[3].x == 5094) _layout = 2; // exit right if(!_layout) return false; return _layout; };
Items aus Inventar/Stash droppen:
Code:
this.DropItems = function (container) { if(!container || (container != 3 && container != 7)) return false; if(container == 7 && !getUIFlag(0x19)) { Town.move("stash"); var _stash = getUnit(2, 267) if(!_stash || getDistance(me, _stash) > 15) return false; if(me.getSkill(43, 0)) Skill.cast(43, 0, _stash); else Misc.click(0, 0, _stash); var _tick = getTickCount(); while(getTickCount() - _tick < 1000) { if(getUIFlag(0x19)) { delay(200 + me.ping); break; } delay(100); } if(!getUIFlag(0x19)) return false; } var _dropitems = me.findItems(-1, 0, container); for(var i = 0; i < _dropitems.length; i += 1) Packet.dropItem(_dropitems[i]); _dropitems = me.findItems(-1, 0, container); // check for failed drops if(_dropitems.length > 0) { for(var i = 0; i < _dropitems.length; i += 1) Packet.dropItem(_dropitems[i]); } return true; }; Usage: this.DropItems(3); // droppt alles aus dem Inventar this.DropItems(7); // droppt alles aus dem Stash
Trade schließen (beim Trader):
Code:
me.cancel();