Das hier ist einmal die schnelle Lösung, sehr einfach gestrickt:
Code:
function NTA_KillMonster(classid)
{
var _target, _swapped;
if(NTConfig_AttackSkill[1] < 1)
return false;
_target = NTC_FindUnit(NTC_UNIT_MONSTER, classid, 5);
if(!_target)
return false;
_swapped = false;
if(_target.IsAttackable())
{
var _attackcount = 0;
while(_attackcount < 300 && NTA_IsValidMonster(_target))
{
if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
break;
_attackcount++;
if(!_swapped && parseInt(_target.hp * 100 / _target.hpmax) < MWConfig_SwitchSlotHP && (_target.classid == 156 || _target.classid == 211 || _target.classid == 242 || _target.classid == 243 || _target.classid == 544))
_swapped = NTC_SwapWeapons();
}
}
if(_swapped)
NTC_SwapWeapons();
return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
}
Da ich es nicht Kommentiert habe, gibt es hier mal ein paar Kommentare in Textform:
Die Schwelle habe ich in einer lokalen Konstante untergebracht, die mit dem gewünschten Wert initialisiert wird. Schicker wäre natürlich eine passende Variable in der Char Config.
Wenn du das lieber möchtest, frag nach, ist nur minimal mehr Aufwand.
Die Config Variable
MWConfig_SwitchSlotHP muss natürlich noch deklariert werden. Dazu einfach die
NTConfig.ntl im Config Ordner öffnen und irgendwo folgendes einfügen:
Code:
var MWConfig_SwitchSlotHP;
Danach muss die Variable nur irgendwo in der Charconfig initialisiert werden. Als Wert wird dabei die HP Schwelle des Monster in Prozent angegeben, bei der ein Slotwechsel erfolgen soll.
Soll kein Slotwechsel erfolgen, wird die Variable mit 0 initialisiert.
Hier einmal beispielshaft die initialisierung mit für eine Schwelle von 10%:
Code:
MWConfig_SwitchSlotHP = 10;
Natürlich ist diese Lösung auch dahingehend etwas suboptimal, dass einfach ein Slotwechsel durchgeführt wird, ohne zu überprüfen, welche Eigenschaften der aktuelle Slot hat. Allerdings wäre das Analysieren der verschiedenen Slots deutlich komplizierter und würde hier vermutlich den Rahmen sprengen, jedenfalls wenn deine D2NT Version nicht ohnehin schon entsprechende Funktionen dafür mitbringt.
Die Variable
_swapped brauchen wir übrigens, um zu verhindern, dass nach jedem Angriff ein Slotwechsel erfolgt und auch um am Ende zurückzuwecheln, falls ein Slotwechsel erfolgt ist.
Edit: Übrigens wird der Slotwechsel bei obiger Funktion nur bei den Aktbossen Andariel, Duriel, Mephisto, Diablo und Baal durchgeführt.
Soviel dazu, bei Rückfragen, einfach melden.
Lg
Muddy