Quote:
Originally Posted by fred9x9
Fabdevil hat dir ja schon die nötige Ausführung mitgeteilt. Du solltest noch wissen, dass die 1. Zahl in der Klammer dir sagt, wieviele Spalten dein Bot mit welchen Drinks im Gürtel damit belegen soll. Die zweite Zahl bestimmt, wieviele Drinks in einer Spalte sein sollen, bevor er neue kauft.
Also darf die zweite Zahl nicht grösser sein, als du Reihen im Gürtel hast. Es gibt halt Gürtel mit 2, 3, oder 4 Reihen. Sinnvoll wärebei 4 vorhande Reihen -1 oder -2 oder -3.
Wenn du nur 2 Reihen hast, kannst du natürlich keine 3 abziehen.
Und die Summe der ersten Zahl darf nicht grösser als 4 sein. Muss 4 sein.
Lustig finde ich, dass dein Bot einen Manapot(mp) aus dem Inventar trinkt, wenn er in die Stadt kommt.
Meiner kauft nämlich ähnlich wie bei dir, immer einen healingpotion(hp) zu viel und legt ihn in sein Inventar, um diesen beim nächsten Stadtbesuch auszutrinken.
|
Ich würde vermuten, dass er das Update für Tränke noch nicht übernommen hat und deshalb die Manatränke nicht korrekt getrunken werden.
Dass der Trank getrunken wird ist zu erwarten, wenn sein Gürtel bereits mit Mana Tränken vollgestopft ist. ;)
Quote:
Originally Posted by -Nemesis1337-
Okay hier der Nachtrag:
Dieses "NTC_SwapWeapons" fügst du einfach z.b. bei Diablo so ein:
Code:
var _target
NTC_FindUnit(NTC_UNIT_MONSTER, 243, 150);
_target = NTC_FindUnit(NTC_UNIT_MONSTER, 243, 5);
if(!NTA_KillMonster(243))
{
if(_target.hp <= 20)
NTC_SwapWeapons
NTC_SendMsgToScript("MWBotGame.ntj", NTA_KillMonster, 158, 243);
return;
}
NTSI_PickItems();
NTC_SwapWeapons
Muddy korrigier mich bitte wenn ich falsch liege^^
in der NTAttack stehts schon drin, für Instapick. Aber dort den Weaponswap mit reinzubauen würde heißen das er das dann bei jedem Gegner so macht.
Glaub net das er das so möchte^^
War mir auch net ganz sicher ob das NTC_FindUnit über dem _target gebraucht wird :confused:
|
Ähm, ja...so wird das nichts. ;)
Der entscheidende Teil deines Codes wird im Normalfall nie erreicht, de facto wird er nämlich nur dann erreicht, wenn
NTA_KillMonster() false zurückliefert, also fehlschlägt.
Letztere Funktion wäre im übrigen der richtige Punkt, um anzusetzen, denn sämtliche Super Unique Monster werden darüber "abfgefertigt".
Achja, wichtig:
NTC_SwapWeapons() ist eine Funktion und ein Funktionsaufruf setzt sich üblicherweise aus dem Bezeichner der Funktion, sowie der Liste der beim Aufruf zu übergebenen Aktualparameter in runden Klammern zusammen.
Auch wenn keine Parameter übergeben werden (a.k.a. void), haben die runden Klammern dort dennoch zu stehen! ;)
So, zurück zum Thema:
Viel muss man in tatsächlich nicht anpassen, ich fände es jedoch zweckmäßig und auch notwendig, den Rückgabewert von
NTC_SwapWeapons() auszuwerten, wozu eine Variable deklariert werden muss.
Setzt man das in einfachster Form um, landet man bei einer modizierten Version, die wie folgt aussieht:
Code:
function NTA_KillMonster(search)
{
var _target, _attackcount, _attacksFailed, _swapped;
if(NTConfig_AttackSkill[1] < 1)
return false;
_target = NTC_FindUnit(NTC_UNIT_MONSTER, search, 5);
_swapped = false;
if(!_target)
return false;
if(_target.IsAttackable())
{
_attackcount = 0;
_attacksFailed = 0;
if(MWConfig_ClearBossPosition && me.diff > 0 && MWA_FindNearbyMonsters(10, _target))
NTA_ClearPosition(15, false, 0, false, false);
while(_attackcount < 350 && NTA_IsValidMonster(_target))
{
if(!_swapped && _target.hp / _target.hpmax < 0.2)
_swapped = NTC_SwapWeapons();
if(MWConfig_ShowOverheadStatus)
MWA_PrintAttackStatus(1, _target);
if(NTA_Attack(_target, (_attackcount % 30) == 0) < 2)
_attacksFailed++;
_attackcount++;
if(_attacksFailed > 2)
break;
}
}
if(_swapped)
NTC_SwapWeapons();
if(MWConfig_PickItemsInstantly && (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12))
NTSI_PickItems();
return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
}
Das wäre das Grundgerüst, natürlich könnte man hier noch Config Variablen einfügen und das Ganze so nur für bestimmte Chars aktivieren, aber der Teil fällt dann nurnoch in die Kategorie triviale Fleissarbeit, weshalb ich darauf hier nicht näher eingehen werde.
Quote:
Originally Posted by fred9x9
@Muddy_Waters
Schade,
tritt doch noch nach dem Update auf,
Char macht 2 Spalten unterschiedlicher Drinks leer. Nimmt im Feld neue Drinks auf,
sortiert die aber anders ein wie vorher und macht die Spalte(n) nicht voll.
Macht TP um Tränke zu kaufen, in Town geht er zum Händler, kauft aber keine.
Geht wieder ins Feld, merkt Getränke entsprechen nicht der Mindestmange, neues TP um Tränke zu kaufen.
Das macht er endlos.
Mir scheint es sind immer die beiden letzten Spalten, wenigstens war es die beiden letzten male so.
Wenn er aus hp, hp, MP, RV , hp, hp, RV, MP macht.
|
Da die Belt Klasse verhältnismäßig komplex ist, möchte ich nicht ausschließen, dass dort noch Fehler enthalten sind oder aber einfach Fälle nicht abgedeckt werden, die ich zuvor nicht bedacht habe.
Ich bin allerdings derzeit mit anderen Dingen ausgelastet, darum werde ich mich frühestens in einem Monat damit auseinandersetzen können, wenn ich Semesterferien habe. ;)
LG
Muddy