You last visited: Today at 08:04
Advertisement
d2nt poison necro
Discussion on d2nt poison necro within the Diablo 2 Programming forum part of the Diablo 2 category.
08/04/2010, 15:06
#1
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
d2nt poison necro
Zealer funzt und ich nehme mich jetzt dem Poison-Necro an.
Es gibt im Inet zwei halbwegs funktionierende Versionen von D2nt-Scripten.
Link2 fehlt mir jetzt gerade.
Der erstere Link liefert ein relativ gutes Script mit der Möglichkeit auch Summons zu benutzen, um den Necro Mf-Bot-tauglich zu machen.
Im Grunde funktioniert es default ganz gut, doch ich habe einige kleinere Änderungen vorgenommen und einige Fehler ausgebessert.
Hier die Scripte:
1. Am Anfang der
NTAttack.ntl folgendes einfügen
Code:
var _CurseState;
var _SpearCount = 0;
var _SumCount = 0;
var _SkeleCount = 0;
var _MageCount = 0;
var _SumBreak = 0;
var _Start = 0;
var _Count = 0;
direkt nach
Code:
var _NTA_SkillRange = new Array(8);
2.In der
folgendes:
Code:
case 91: //Lower Resist
_NTA_SkillRange[i] = 30;
break;
case 92: //Poison Nova
_NTA_SkillRange[i] = 10;
break;
3.Die folgenden zwei Funktionen einfach irgendwo außerhalb der anderen Funktionen einfügen:
Code:
function SkeleDead()
{
var _breaker=0;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
do
{
_skiplist = new Array();
if(_target.mode == 12 /* dead */ && !_target.GetState(107) /* shattered */ && !_target.GetState(96) /* revived */ && !_target.GetState(56) /* terror curse */ && (_target.spectype == 1 || _target.spectype == 17) && _target.classid != 363 && _target.classid != 364 /* necro mage */ && _target.classid != 351 /* hydra */ && _target.classid != 352 /* hydra */ && _target.classid != 353 /* hydra */)
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if((GetDistance(me, _target) < 15))
{
var _pos = me.GetOptimalAttackPos(_target.areaid, _target.x, _target.y, 3, 4);
if(_pos)
{
NTM_MoveTo(_target.areaid, _pos[0], _pos[1], 0);
if(!NTC_CastSkill(70, NTC_HAND_RIGHT,_target.x+2,_target.y+1))
{
_breaker++;
_skiplist.push(_target.gid);
}
else
{
_breaker++;
_SkeleCount++;
_SumCount++;
}
}
}
else
_skiplist.push(_target.gid);
}
}
if (_breaker >= 1 || _target == null)
{
break;
_breaker = 0;
}
}
while(_target.GetNext());
}
function MageDead()
{
var _breaker=0;
_target = NTC_FindUnit(NTC_UNIT_MONSTER);
do
{
_skiplist = new Array();
//spectype 1 = regular
//spectype 9 = boss
//spectype 11 = unique
//spectype 13 = champion
//spectype 17 = minions
if(_target.mode == 12 /* dead */ && !_target.GetState(107) /* shattered */ && !_target.GetState(96) /* revived */ && !_target.GetState(56) /* terror curse */ && (_target.spectype == 1 /* regular monster */ || _target.spectype == 17 /* minion monster */) && _target.classid != 363 /* necro skeleton */ && _target.classid != 364 /* necro mage */ && _target.classid != 351 /* hydra */ && _target.classid != 352 /* hydra */ && _target.classid != 353 /* hydra */)
{
if(_skiplist.indexOf(_target.gid) < 0)
{
if((GetDistance(me, _target) < 15))
{
var _pos = me.GetOptimalAttackPos(_target.areaid, _target.x, _target.y, 3, 4);
if(_pos)
{
NTM_MoveTo(_target.areaid, _pos[0], _pos[1], 0);
if(!NTC_CastSkill(80, NTC_HAND_RIGHT,_target.x+2,_target.y+1))
{
_breaker++;
_skiplist.push(_target.gid);
}
else
{
_breaker++;
_MageCount++;
_SumCount++;
}
}
}
else
_skiplist.push(_target.gid);
}
}
if (_breaker >= 1 || _target == null)
{
break;
_breaker = 0;
}
}
while(_target.GetNext());
}
4.Diesen Teil
Code:
if(me.classid == NTC_CHAR_CLASS_NECROMANCER)
{
_SumBreak = 0;
//NTC_CastSkill(68, NTC_HAND_RIGHT);
if(_attackcount > 2)
{
NTC_CastSkill(68, NTC_HAND_RIGHT); // Bone Armor
//==============This is where summon script begins==============
if(_SkeleCount < NTConfig_Skele + 1 || _MageCount < NTConfig_Mage + 1)
{
if (_Count == _Count)
{
for(var i = 0 ; i < 2 ; i++)
{
_Start += 1
}
}
if (_Start < 3)
{
if(_SkeleCount == _MageCount)
{
for(var i = 0 ; i < 10 ; i++)
{
SkeleDead();
}
}
else if(_SkeleCount > _MageCount || _SkeleCount > NTConfig_Skele + 1)
{
for(var i = 0 ; i < 10 ; i++)
{
MageDead();
}
}
else if(_MageCount > _SkeleCount || _SkeleMage > NTConfig_Mage + 1)
{
for(var i = 0 ; i < 10 ; i++)
{
SkeleDead();
}
}
}
else if (_Start > 2)
{
if(_SkeleCount == _MageCount)
{
for(var i = 0 ; i < 5 ; i++)
{
SkeleDead();
}
}
else if(_SkeleCount > _MageCount || _SkeleCount > NTConfig_Skele + 1)
{
for(var i = 0 ; i < 5 ; i++)
{
MageDead();
}
}
else if(_MageCount > _SkeleCount || _SkeleMage > NTConfig_Mage + 1)
{
for(var i = 0 ; i < 5 ; i++)
{
SkeleDead();
}
}
}
}
}
}
in der Funktion
Code:
NTA_ClearPosition()
einfügen, direkt unter den Paladinteil mit
Code:
if(me.classid == NTC_CHAR_CLASS_PALADIN) ...
5.Die drei Necrofunktionen sehen so aus:
Code:
function NTA_NecromancerAttackPatternInt()
{
/**
*Amplify Damage 66
*Teeth 67
*Bone Armor 68
*Skeleton Mastery 69
*Raise Skeleton 70
*Dim Vision 71
*Weaken 72
*Poison Dagger 73
*Corpse Explosion 74
*Clay Golem 75
*Iron Maiden 76
*Terror 77
*Bone Wall 78
*Golem Mastery 79
*Raise Skeletal Mage 80
*Confuse 81
*Life Tap 82
*Poison Explosion 83
*Bone Spear 84
*BloodGolem 85
*Attract 86
*Decrepify 87
*Bone Prison 88
*Summon Resist 89
*IronGolem 90
*Lower Resist 91
*Poison Nova 92
*Bone Spirit 93
*FireGolem 94
*Revive 95
*/
var _maxindex, _maxskill;
var _avgskilllevel = new Array();
_avgskilllevel[0] = me.GetSkill(92, false) + me.GetSkill(83, false) + me.GetSkill(73, false); //poison nec
_maxindex = -1;
_maxskill = 0;
for(var i = 0 ; i < _avgskilllevel.length ; i++)
{
if(_avgskilllevel[i] > _maxskill)
{
_maxindex = i;
_maxskill = _avgskilllevel[i];
}
}
switch(_maxindex)
{
case 0: // Poison Nec
NTConfig_AttackSkill[1] = 92;
NTConfig_AttackSkill[2] = 0;
NTConfig_AttackSkill[3] = 92;
NTConfig_AttackSkill[4] = 0;
}
return (NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}
function NTA_NecromancerAttackInt(target, firstorder)
{
var _primaryindex;
if(NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10, NTConfig_CheckMercSafe&0x10))
{
if(!NTTMGR_VisitTown())
return 0;
}
function NTA_LevelBoss(monster)
{
var _isLevelBoss = false;
switch(monster.classid)
{
case 156: //Andariel
_isLevelBoss = true;
break;
case 211: //Duriel
_isLevelBoss = true;
break;
case 242: //Mephisto
_isLevelBoss= true;
break;
case 243: //Diablo
_isLevelBoss = true;
break;
case 544: //Baal
_isLevelBoss = true;
break;
}
return _isLevelBoss;
}
if(NTA_LevelBoss(target) && NTConfig_AmplifyBoss == true)
{
if(target.GetState(9))
{
}
else
{
if(!NTC_CastSkill(66, NTC_HAND_RIGHT, target.x, target.y))
return 2;
return 3;
}
}
if((!NTA_LevelBoss(target)) && NTA_GetResistance(target, NTA_DAMAGE_POISON) >= NTConfig_LowerResist)
{
if(target.GetState(61))
{
}
else
{
if(!NTC_CastSkill(91, NTC_HAND_RIGHT, target.x, target.y))
return 2;
return 3;
}
}
if(firstorder && NTConfig_AttackSkill[0] > 0 && NTA_GetResistance(target, _NTA_SkillDamage[0]) < 100 && me.GetSkillStatus(NTConfig_AttackSkill[0]) != 8)
{
if(GetDistance(me, target) > _NTA_SkillRange[0] || !CheckCollision(me, target, 4))
{
var _pos = me.GetOptimalAttackPos(target.areaid, target.x, target.y, _NTA_SkillRange[0], 4);
if(_pos)
NTM_MoveTo(target.areaid, _pos[0], _pos[1], 0);
}
if(!NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
return 2;
return 3;
}
_primaryindex = (target.spectype&0x0A) ? 1 : 3;
if(!NTA_NecromancerCastSkillInt(_primaryindex, target))
return 2;
NTC_PingDelay(NTConfig_PsnNovaWait);
return 3;
}
function NTA_NecromancerCastSkillInt(index, target)
{
if(me.GetSkillStatus(NTConfig_AttackSkill[index]) != 8)
{
if(GetDistance(me, target) > _NTA_SkillRange[index] || !CheckCollision(me, target, 4))
{
var _pos = me.GetOptimalAttackPos(target.areaid, target.x, target.y, _NTA_SkillRange[index], 4);
if(_pos)
NTM_MoveTo(target.areaid, _pos[0], _pos[1], 0);
}
return NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
}
if(NTConfig_AttackSkill[index+1] > 0)
{
if(GetDistance(me, target) > _NTA_SkillRange[index+1] || !CheckCollision(me, target, 4))
{
var _pos = me.GetOptimalAttackPos(target.areaid, target.x, target.y, _NTA_SkillRange[index+1], 4);
if(_pos)
NTM_MoveTo(target.areaid, _pos[0], _pos[1], 0);
}
return NTC_CastSkill(NTConfig_AttackSkill[index+1], _NTA_SkillHand[index+1], target);
}
if((NTA_GetResistance(target, NTA_DAMAGE_POISON) >= NTConfig_LowerResist) && (!target.GetState(61)))
{
do{
return NTC_CastSkill(91, NTC_HAND_RIGHT, target);
}
while(target.GetState(61));
}
return false;
}
6.Im Folgenden müsst ihr schauen, ob es bei euch nicht schon enthalten ist, wenn ja dann überspringt den Teil 6.:
öffnen, dort dann in der
Code:
function NTP_DoPrecast(refresh)
direkt nach
Code:
NTP_DoPrecastCTA(refresh);
folgendes einfügen
Code:
var _castBoTwice = false;
und am Ende der Funktion folgendes:
Code:
if(_castBoTwice)
NTP_DoPrecastCTA(refresh);
7.In der Funktion aus Teil 6. folgenden Fall einfügen:
Code:
case NTC_CHAR_CLASS_NECROMANCER:
if(refresh || !me.GetState(14))
NTC_CastSkill(68, NTC_HAND_RIGHT); // Bone Armor
if(refresh)
{
_castBoTwice = true;
if(NTConfig_Golem == 2)
NTC_CastSkill(85, NTC_HAND_RIGHT); // Blood Golem
else if(NTConfig_Golem == 3)
NTC_CastSkill(94, NTC_HAND_RIGHT); // Fire Golem
else
NTC_CastSkill(75, NTC_HAND_RIGHT); // Clay Golem
}
break;
Das Ganze speichern und schließen.
Ende des Scriptteils
Skillung ist:
"PnB Tree": alle Talente im Poisonteil komplett 20, je 1 Punkt in Knochenschild und seine Synnergien
"Cursetree": ihr braucht 1 Punkt im Lower Resist Fluch ganz unten, also runterskillen.
"Summontree": je 1 Punkt bis Feuergolem runter, 1 Punkt in Golembeherrschung und Summonresis, Skele Mastery 1 Punkt (falls ihr keine Necroboots tragt) und die beiden Skeletypen kriegen den rest eurer Punkte (dürft selber entscheiden, ob ihr eher Phys- oder Magieschaden austeilen wollt) wichtig: Keine Revives, die buggen nur.
Stats sind:
Str für Enigma und Spirit(falls ihr nen Spirit wollt) - Rest komplett in Vita
Equip ist:
Harle, Mara, Hoto (Deathweb fand ich nicht so gut auf dem Bot), Spirit, Eni, Arach, 2 Sojs, Trang Gloves, Marrowwalks (oder halt was anderes, aber Marrowwalks geben 20 Str(!) und 2 Punkte in Skellimastery) / Cta+Spirit im Switch
Merc: Optimal ist ein Auramerc, davon profitieren eure Skellis. Also möglich sind halt Pride,Faith,Lw,Bramble, Beast etc. oder halt etwas billigeres. Schaut nur das euer Merc Lifeleech un CnbF bekommt über den Helm oder die Rüstung.
Was meine Änderungen bringen:
Necro castet Amplify Damage auf Aktbosse.
Von Frost zerschmetterte Mobs werden ausgelassen.
Golem kriegt nun auch den Bo ab.
Ansonsten habe ich einige Syntaxänderungen vorgenommen und kleinere Fehler herausgenommen.
TODO-Liste
Range zu DeSeis und Corruptor of Souls im Chaos Sanktuarium stimmt noch nicht ganz.
Summons werden manchmal unnötigerweise vorgenommen, obwohl genug Summons vorhanden sind.
Eventuell noch Poison Explosion einbauen für schnelleren Killspeed.
Bei Vorschlägen, Verbesserungen und Kritik, einfach hier reinschreiben.
Mfg und hf
08/04/2010, 22:53
#2
elite*gold: 0
Join Date: Jun 2010
Posts: 3
Received Thanks: 0
hallo, kannst du das eventuell oben noch ein bissel kommentieren. weil ich nen reinen gifter ohne beschwörung hab und da nicht so ganz durchsteige. ich will auch dass der necro mehr abstand hält und der golem vom cta profitiert.
08/05/2010, 01:33
#3
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
dafür lässt du folgendes einfach weg:
Punkt 1.
Punkt 3.
in Punkt 4. nimmst du folgendes:
Code:
if(me.classid == NTC_CHAR_CLASS_NECROMANCER)
{
if(_attackcount > 2)
{
NTC_CastSkill(68, NTC_HAND_RIGHT); // Bone Armor
}
}
in Punkt 5. nimmst du folgendes:
Code:
function NTA_NecromancerAttackPatternInt()
{
/**
*Amplify Damage 66
*Teeth 67
*Bone Armor 68
*Skeleton Mastery 69
*Raise Skeleton 70
*Dim Vision 71
*Weaken 72
*Poison Dagger 73
*Corpse Explosion 74
*Clay Golem 75
*Iron Maiden 76
*Terror 77
*Bone Wall 78
*Golem Mastery 79
*Raise Skeletal Mage 80
*Confuse 81
*Life Tap 82
*Poison Explosion 83
*Bone Spear 84
*BloodGolem 85
*Attract 86
*Decrepify 87
*Bone Prison 88
*Summon Resist 89
*IronGolem 90
*Lower Resist 91
*Poison Nova 92
*Bone Spirit 93
*FireGolem 94
*Revive 95
*/
var _maxindex, _maxskill;
var _avgskilllevel = new Array();
_avgskilllevel[0] = me.GetSkill(92, false) + me.GetSkill(83, false) + me.GetSkill(73, false); //poison nec
_maxindex = -1;
_maxskill = 0;
for(var i = 0 ; i < _avgskilllevel.length ; i++)
{
if(_avgskilllevel[i] > _maxskill)
{
_maxindex = i;
_maxskill = _avgskilllevel[i];
}
}
switch(_maxindex)
{
case 0: // Poison Nec
NTConfig_AttackSkill[1] = 92;
NTConfig_AttackSkill[2] = 0;
NTConfig_AttackSkill[3] = 92;
NTConfig_AttackSkill[4] = 0;
}
return (NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}
function NTA_NecromancerAttackInt(target, firstorder)
{
var _primaryindex;
if(NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10, NTConfig_CheckMercSafe&0x10))
{
if(!NTTMGR_VisitTown())
return 0;
}
if((NTA_GetResistance(target, NTA_DAMAGE_POISON) >= NTConfig_LowerResist)
{
if(target.GetState(61))
{
}
else
{
if(!NTC_CastSkill(91, NTC_HAND_RIGHT, target.x, target.y))
return 2;
return 3;
}
}
if(firstorder && NTConfig_AttackSkill[0] > 0 && NTA_GetResistance(target, _NTA_SkillDamage[0]) < 100 && me.GetSkillStatus(NTConfig_AttackSkill[0]) != 8)
{
if(GetDistance(me, target) > _NTA_SkillRange[0] || !CheckCollision(me, target, 4))
{
var _pos = me.GetOptimalAttackPos(target.areaid, target.x, target.y, _NTA_SkillRange[0], 4);
if(_pos)
NTM_MoveTo(target.areaid, _pos[0], _pos[1], 0);
}
if(!NTC_CastSkill(NTConfig_AttackSkill[0], _NTA_SkillHand[0], target))
return 2;
return 3;
}
_primaryindex = (target.spectype&0x0A) ? 1 : 3;
if(!NTA_NecromancerCastSkillInt(_primaryindex, target))
return 2;
NTC_PingDelay(NTConfig_PsnNovaWait);
return 3;
}
function NTA_NecromancerCastSkillInt(index, target)
{
if(me.GetSkillStatus(NTConfig_AttackSkill[index]) != 8)
{
if(GetDistance(me, target) > _NTA_SkillRange[index] || !CheckCollision(me, target, 4))
{
var _pos = me.GetOptimalAttackPos(target.areaid, target.x, target.y, _NTA_SkillRange[index], 4);
if(_pos)
NTM_MoveTo(target.areaid, _pos[0], _pos[1], 0);
}
return NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
}
if(NTConfig_AttackSkill[index+1] > 0)
{
if(GetDistance(me, target) > _NTA_SkillRange[index+1] || !CheckCollision(me, target, 4))
{
var _pos = me.GetOptimalAttackPos(target.areaid, target.x, target.y, _NTA_SkillRange[index+1], 4);
if(_pos)
NTM_MoveTo(target.areaid, _pos[0], _pos[1], 0);
}
return NTC_CastSkill(NTConfig_AttackSkill[index+1], _NTA_SkillHand[index+1], target);
}
if((NTA_GetResistance(target, NTA_DAMAGE_POISON) >= NTConfig_LowerResist) && (!target.GetState(61)))
{
do{
return NTC_CastSkill(91, NTC_HAND_RIGHT, target);
}
while(target.GetState(61));
}
return false;
}
Die restlichen Punkte übernimmst du so, wie oben.
Für mehr Abstand kannst du in Punkt 2 folgendes benutzen:
Code:
case 91: //Lower Resist
_NTA_SkillRange[i] = 50;
break;
case 92: //Poison Nova
_NTA_SkillRange[i] = 15;
break;
08/05/2010, 22:03
#4
elite*gold: 0
Join Date: Jun 2010
Posts: 3
Received Thanks: 0
hm, klappt das bei dir mit dem golem und den kriegsschreien? ich glaub ich stell mich hier echt wie der erste mensch an. hab alles befolgt und es geht noch nicht...
08/05/2010, 22:16
#5
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
meine precast.ntl
Code:
var _NTP_HaveCTA = -1;
function NTP_DoPrecastCTA(refresh)
{
if(me.classid == NTC_CHAR_CLASS_BARBARIAN || NTC_InTown())
return false;
if(refresh || !me.GetState(32) || !me.GetState(51))
{
if(NTP_BOSwitch())
{
NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
if(refresh || !me.GetState(38))
NTC_CastSkill(57, NTC_HAND_RIGHT); // Thunder Storm
if(refresh || !me.GetState(30))
NTC_CastSkill(58, NTC_HAND_RIGHT); // Energy Shield
if(refresh || (!me.GetState(10) && !me.GetState(88) && !me.GetState(20)))
{
if(!NTC_CastSkill(50, NTC_HAND_RIGHT)) // Shiver Armor
if(!NTC_CastSkill(60, NTC_HAND_RIGHT)) // Chilling Armor
NTC_CastSkill(40, NTC_HAND_RIGHT); // Frozen Armor
}
NTC_SwapWeapons();
return true;
}
}
return false;
}
function NTP_DoPrecast(refresh)
{
NTP_DoPrecastCTA(refresh);
var _castBoTwice = false;
switch(me.classid)
{
case NTC_CHAR_CLASS_AMAZON:
if(refresh)
{
_castBoTwice = true;
NTC_CastSkill(32, NTC_HAND_RIGHT); // Valkyrie
}
break;
case NTC_CHAR_CLASS_SORCERESS:
if(refresh || !me.GetState(38))
NTC_CastSkill(57, NTC_HAND_RIGHT); // Thunder Storm
if(refresh || !me.GetState(30))
NTC_CastSkill(58, NTC_HAND_RIGHT); // Energy Shield
if(refresh || (!me.GetState(10) && !me.GetState(88) && !me.GetState(20)))
{
if(!NTC_CastSkill(50, NTC_HAND_RIGHT)) // Shiver Armor
if(!NTC_CastSkill(60, NTC_HAND_RIGHT)) // Chilling Armor
NTC_CastSkill(40, NTC_HAND_RIGHT); // Frozen Armor
}
break;
case NTC_CHAR_CLASS_NECROMANCER:
if(refresh || !me.GetState(14))
NTC_CastSkill(68, NTC_HAND_RIGHT); // Bone Armor
if(refresh)
{
_castBoTwice = true;
if(NTConfig_Golem == 2)
NTC_CastSkill(85, NTC_HAND_RIGHT); // Blood Golem
else if(NTConfig_Golem == 3)
NTC_CastSkill(94, NTC_HAND_RIGHT); // Fire Golem
else
NTC_CastSkill(75, NTC_HAND_RIGHT); // Clay Golem
}
break;
case NTC_CHAR_CLASS_PALADIN:
if(refresh || !me.GetState(101))
NTC_CastSkill(117, NTC_HAND_RIGHT); // Holy Shield
break;
case NTC_CHAR_CLASS_BARBARIAN:
if(refresh || !me.GetState(51))
NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
if(refresh || !me.GetState(32))
NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
if(refresh || !me.GetState(26))
NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
break;
case NTC_CHAR_CLASS_DRUID:
if(refresh || !me.GetState(151))
NTC_CastSkill(235, NTC_HAND_RIGHT); // Cyclone Armor
if(refresh || !me.GetState(149))
{
_castBoTwice = true;
NTC_CastSkill(226, NTC_HAND_RIGHT); // Oak Sage
}
if(refresh)
{
_castBoTwice = true;
NTC_CastSkill(247, NTC_HAND_RIGHT); // Summon Grizzly
}
if(refresh || !me.GetState(144))
NTC_CastSkill(250, NTC_HAND_RIGHT); // Hurricane
break;
case NTC_CHAR_CLASS_ASSASSIN:
// Can't use both Fade and BoS
//if(refresh || !me.GetState(157))
// NTC_CastSkill(258, NTC_HAND_RIGHT); // Burst of Speed
if(refresh || !me.GetState(159))
NTC_CastSkill(267, NTC_HAND_RIGHT); // Fade
if(refresh || !me.GetState(158))
NTC_CastSkill(277, NTC_HAND_RIGHT); // Blade Shield
if(refresh || !me.GetState(153))
NTC_CastSkill(264, NTC_HAND_RIGHT); // Cloak of Shadows
if(refresh)
{
_castBoTwice = true;
if(!NTC_CastSkill(279, NTC_HAND_RIGHT)) // Shadow Master
NTC_CastSkill(268, NTC_HAND_RIGHT); // Shadow Warrior
}
break;
}
if(_castBoTwice)
NTP_DoPrecastCTA(refresh);
}
function NTP_BOSwitch()
{
if(_NTP_HaveCTA < 0)
{
var _weapon;
_NTP_HaveCTA = 0;
_weapon = me.GetItems();
if(_weapon)
{
for(var i = 0 ; i < _weapon.length ; i++)
{
if(_weapon[i].mode == 1 && (_weapon[i].itemflag&0x4000000) && _weapon[i].itemprefix == 0x5027)
{
if(_weapon[i].itemloc == 4 || _weapon[i].itemloc == 5)
_NTP_HaveCTA = 1;
else
_NTP_HaveCTA = 2;
break;
}
}
}
}
if(_NTP_HaveCTA > 0)
return NTC_SwapWeapons(_NTP_HaveCTA-1);
return false;
}
08/05/2010, 22:20
#6
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
der necro hat noch einige probleme mit dem beschwören von mobs, da er einige mobs ins ziel nimmt, aus denen keine beschwörungen kommen können.
folgende fälle wurden berücksichtigt:
Code:
if(_target.mode == 12 /* dead */ &&
!_target.GetState(107) /* shattered */ &&
!_target.GetState(96) /* revived */ &&
!_target.GetState(56) /* terror curse */ &&
(_target.spectype == 1 || _target.spectype == 17) &&
_target.classid != 363 && _target.classid != 364 /* necro mage */ &&
_target.classid != 351 /* hydra */ &&
_target.classid != 352 /* hydra */ &&
_target.classid != 353 /* hydra */)
"_target" steht für das revivetarget für skellis und so weiter.
was fehlt noch?
08/11/2010, 10:59
#7
elite*gold: 0
Join Date: Jun 2010
Posts: 3
Received Thanks: 0
okay, das funtioniert ganz gut, nur macht der necro jetzt kriegsschreie, dann beschwört er den golem und dann macht er nochmal die schreie ...
08/11/2010, 13:26
#8
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
dann kopiere dir einfach die
Quote:
function NTP_DoPrecastCTA
benenne sie um, mach das jeweils benötigte aus dem hier raus
Quote:
NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
benenne de boolvariable
Quote:
um und mach in
Quote:
if(_castBoTwice)
NTP_DoPrecastCTA(refresh);
dasselbe nochmal
Similar Threads
D2NT necro einstellungen Bitte Helfen
08/24/2010 - Diablo 2 - 1 Replies
hab jetzt schon alles getestet was ich so gefunden habe aber es funzt nicht
will mit Knochenspeer , Zauber Altern und Widerstandsschwund angreifen
dann soll er die Knochen-Rüstung aktivieren
Jetzt meine Bitte an euch wer das schon mal geschaft und so nett ist bitte per PM schicken was ich genau wie wo machen kann
PS: Mein necro hat enigma etc.. spiele ihn selber hab aber gehört das das schon ein paar leute geschaft haben das er auch mit dem bot läuft aber das was ich bist jetzt...
boner/revive necro d2nt problem
06/28/2010 - Diablo 2 Programming - 6 Replies
mein bonernecro hat ein problem mit seinen revives.
jedesmal wenn ich durch die gegend porte, knubbeln sich die summons alle auf dem necro und greifen nicht an.
wie kann ich das fixen?
D2Nt mit posion necro
04/16/2010 - Diablo 2 - 10 Replies
wieso castet mein necro keine attack skills? cta, golem , boneshield etc ... funktioniert einwandfrei...
Lower Resis und Posionnova castet er aber nicht ... wieso? Der telet einfach nur ganz mausoleum ab und öffnet die truhe und geht wieder in die stadt .. -.-*!
Thx for help
d2nt necro
04/15/2010 - Diablo 2 - 1 Replies
hallo leute..
Leider ist beim D2NT keine config für nen necro (p&b) dabei.
Google sagt leider auch nix.
Hat vllt jemand von euch eine Config dafür gebastelt und könnte die hochladen?
vielen dank!
How To Skill Poison Necro
07/10/2009 - Diablo 2 - 3 Replies
Guten Morgen Leute,
weiß einer von euch wie man nen Poison Necro skillt und der für UTs wallen kann?
und mit welche attacke muss ich gegen monster kämpfen und so necro noch nie gespielt...
All times are GMT +2. The time now is 08:05 .