Register for your free account! | Forgot your password?

You last visited: Today at 03:47

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



d2nt javazon

Discussion on d2nt javazon within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Jul 2008
Posts: 169
Received Thanks: 14
d2nt javazon

Kleines Video von meiner Java beim Botten. (irgendwann ge-alt-tabbed, aber keine Lust gehabt das neu zu machen)

Ich hatte relativ früh, zu Anfang der Ladder - nachdem mein Hammer 99 wurde und meine Trapse konfiguriert war - eine Javazone zum Laufen gebracht, die jedoch aufgrund von einigen Macken erstmal eingestaubt wurde.

Gestern habe ich den Code nochmal rausgeholt und einige kleinere Änderungen vorgenommen, am Equip rumgeschraubt und auch an der Skillung.

Das Ganze läuft nach einem Feldversuch über Nacht ziemlich stabil und ich wollte es hier mal reinpasten.

Inhalt
  1. Änderungen an der NTAttack.ntl
  2. Änderungen an der NTPrecast.ntl

Die folgenden Änderungen beziehen sich ausschließlich nur auf die Javazone

Punkt 1.
In der NTAttack.ntl

In der folgenden Funktion: function NTA_Initialize()
Folgende Skillranges einfügen:
Code:
			case 10: //Jab 
				_NTA_SkillRange[i] = 3; 
				break; 
			case 24: //Charged Strike 
				_NTA_SkillRange[i] = 3; 
				break; 
			case 35: //Lightning Fury 
				_NTA_SkillRange[i] = 12; 
				break;
Folgende globale Funktion einfügen (außerhalb anderer Funktionen einfügen):
Code:
function NTA_IsWeaponBroken()
{
	var _weapon;
	_weapon = me.GetItems();

		if(_weapon)
		{
			for(var i = 0 ; i < _weapon.length ; i++)
			{
				if(_weapon[i].itemflag&0x100)
				{	
					if(_weapon[i].mode == 1 && _weapon[i].itemloc == 4 || _weapon[i].itemloc == 5)
					{
						Print("ÿc8My weapon broke, I am going to town to repair it.")
						NTTMGR_VisitTown();
						NTTMGR_TownManager();	
						break;

					}	
				}
			}
		}
}
Jetzt kommen die Attackpatterns der Javazone, einfach über die vorhandenen Funktionen(function NTA_AmazonAttackPatternInt(), NTA_AmazonAttackInt(target, firstorder), NTA_AmazonCastSkillInt(index, target)) kopieren:

Code:
function NTA_AmazonAttackPatternInt()
{
	/*
	*10   Jab 
	*11   Cold Arrow 
	*12   Multiple Shot 
	*13   Dodge 
	*14   Power Strike 
	*15   Poison Javelin 
	*16   Exploding Arrow 
	*17   Slow Missiles 
	*18   Avoid 
	*19   Impale 
	*20   Lightning Bolt 
	*21   Ice Arrow 
	*22   Guided Arrow 
	*23   Penetrate 
	*24   Charged Strike 
	*25   Plague Javelin 
	*26   Strafe 
	*27   Immolation Arrow 
	*28   Dopplezon 
	*29   Evade 
	*30   Fend 
	*31   Freezing Arrow 
	*32   Valkyrie 
	*33   Pierce 
	*34   Lightning Strike 
	*35   Lightning Fury 
	*36   Fire Bolt 
	*37   Warmth 
	*38   Charged Bolt 
	*39   Ice Bolt 
	*/
	
	var _maxindex, _maxskill;
	var _avgskilllevel = new Array();

	_avgskilllevel[0]  = me.GetSkill(35, false);

	_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: // Lightning Fury for Lightning Javazon
		
		NTConfig_AttackSkill[1] = 35;
		NTConfig_AttackSkill[3] = 35;

		break;
	}
	
	
	return (NTConfig_AttackSkill[1] && NTConfig_AttackSkill[3]);
}


function NTA_AmazonAttackInt(target, firstorder)
{
	var _primaryindex;
	
	if(NTTMGR_CheckCurse(NTConfig_CheckSelfSafe&0x10, NTConfig_CheckMercSafe&0x10))
	{
		if(!NTTMGR_VisitTown())
			return 0;
	}
	
	NTA_IsWeaponBroken();

	if(firstorder && NTConfig_AttackSkill[0] > 0 && NTA_GetResistance(target, _NTA_SkillDamage[0]) < 100)
	{
		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_GetResistance(target, _NTA_SkillDamage[_primaryindex]) <= 90)
	{
		if(!NTA_AmazonCastSkillInt(_primaryindex, target))
			return 2;

		return 3;
	}
	
	
	if(NTConfig_AttackSkill[5] > 0  && NTA_GetResistance(target, _NTA_SkillDamage[5]) > 80)
	{
		if(!NTA_AmazonCastSkillInt(5, target))
			return 2;

		return 3;
	}
	
	if(NTA_GetResistance(target, _NTA_SkillDamage[_primaryindex]) < 100 || (_primaryindex == 1 && NTC_GetMerc()))
	{
		if(!NTA_AmazonCastSkillInt(_primaryindex, target))
			return 2;

		return 3;
	}

	return 1;
}

function NTA_AmazonCastSkillInt(index, target)
{

	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);
	}
	
	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);
        }  
	
	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))
	{
		return NTC_CastSkill(24, NTC_HAND_LEFT, target);
		
	}
   
	return NTC_CastSkill(NTConfig_AttackSkill[index], _NTA_SkillHand[index], target);
}
Punkt 2.
In der NTPrecast.ntl

Ich verwende eine modifizierte NTPrecast.ntl von Muddy.
Hier der Code:

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;
}
Ende der Codesection

Ich hoffe ich habe nichts vergessen (eventuell habe ich etwas in der NTTownManager.ntl vergessen, falls das so ist lasst es mich wissen).

Stats:

Str: Nur soviel wie ihr benötigt, um euer Zeug anzuziehen, nachdem ihr gestorben seid.
Dex: Nur soviel wie ihr benötigt, um die Non-Eth Titans (109 Dex) anzuziehen.
Vita: Der ganze Rest
Energie: 0

Talente:

Alle Synnergien für Lightning Fury auf 20, bis auf Lightning Bolt (dort nur 1 Punkt).
Alle passiven Skills bekommen 1 Punkt, Pierce kriegt soviele Punkte wie es braucht, um auf 80% Pierce zu kommen (bei meinem Equip waren es 5), Walkyre kriegt den ganzen Rest.

Equip:

Beim Equip müsst ihr darauf achten den 68% FC-Breakpoint (13 Frames) zu schaffen (der nächste liegt bei 99% (12 Frames)), darunter ist es unannehmbar langsam.
Ich trage deshalb eine Griffons, Spirit und einen 10 FC Ring oder ein 10 FC Amu.
CnbF ist auch wichtig, am besten einen Raven anziehen.
Störend ist die mangenlde Resi auf Hell, dafür habe ich ungefähr 10x 5 Prisma-scs im Inventory und gute Resiboots (35+ Resis reichen im Grunde für Sologames).
Ob ihr FHR braucht, entscheidet selbst, ich benutze es nicht.

Merc trägt Eth Andy(Cham), Eth Forti Sacred Bugged und Eth Infy Cv.

Was meine Änderungen so bringen:
  • Diablo und Baal togglen jetzt keinen Error mehr (Failed to Find Unit bla)
  • Diablo und Baal werden mit Charged Strike gekillt, statt mit Lightning Fury

Credits gehen an die EPVP und EON Community.
fuuch is offline  
Thanks
1 User
Old 10/09/2010, 20:30   #2
 
elite*gold: 0
Join Date: Mar 2009
Posts: 66
Received Thanks: 0
wo soll denn die funktion sein ?ich finde die im ganzenm ntattack script nicht, steht das bei den ama einstellungen ?
(function NTA_AmazonAttackPatternInt(), NTA_AmazonAttackInt(target, firstorder), NTA_AmazonCastSkillInt(index, target)
bei mir steht nur das:

function NTA_AmazonAttackInt(target, boss, maxattacks)
{

pls help,
Hekipateng is offline  
Old 10/30/2010, 14:54   #3
 
elite*gold: 0
Join Date: Aug 2010
Posts: 46
Received Thanks: 4
Quote:
Originally Posted by fuuch View Post
Ob ihr FHR braucht, entscheidet selbst, ich benutze es nicht.
Ohne FHR macht ne Java wenig Sinn mit Eni- aber das problem hast du ja mit deinem Spirit (unwissend?!?) schon selbst gelöst. Spirit bringt +55% schnellere Erholung nach Treffer womit du schon den 2t höchsten erreichbaren Breakpoint erreicht hast.
Xtcscrub is offline  
Old 12/01/2010, 16:12   #4
 
elite*gold: 0
Join Date: Mar 2010
Posts: 59
Received Thanks: 0
help

ich will eine java auf baal laufen lassen hab alles wie in der anleitung von hier gemacht

es funktioniert aber nicht da jedesmal ein error kommt gleich am angfang vom run
intinitiali...........is not defined
jetz würd ich gern wissen ob irgendeiner eine fertige attack.ntl hat mit der das geht oder vieleicht geibt es eine von den d2nt versionen(bluebird,muddys etc) die die java attack von haus aus drin hat

und nein mit einfach die attack nummern im charconfig eingeben ist es nicht getan

Danke schön
ich poste nur weil ich in 3 tagen nichts gefunden habe wies geht
jason_ger is offline  
Reply


Similar Threads Similar Threads
o javazon sc europe ladder
09/08/2010 - Diablo 2 - 10 Replies
Yeap ich offer hier eine Javazon für sc el! lvl 83 - griffon 24 20 - 4 40 javelins / eth titans upped - jwod 10|-10 30 ias 30 resi (socked) - ww 65 - 3 40 gloves - maras 22
SUCHE ne Javazon für fg
08/30/2010 - Diablo 2 - 10 Replies
:D naja wie der Titel schon sacht such ich eine Javazon (Amazone) :bandit: ich biete Forumgold (Jsp)... Lasst mal eure Stats und Preise hier :) melde mich dann!! :handsdown::handsdown::handsdown: zwei Offers stehn ja schon :D brauch nochn paar!! und nicht nur halbe stats...
d2nt leech bot einstellen... d2nt config error..
07/09/2010 - Diablo 2 Programming - 2 Replies
hey mein bot zeigt mir die ganze zeit ein error und habe die einstellungen in der anleitung genauso... was tun? habe leader acc/ char name eingetragen. beide flistet. die eine datei aus baalleech rausgeholt und umbenannt und die // weg genommen habe beim manager auch auf d2nt leech eingestelln
Hilfe mit Javazon bitte ;)
06/21/2010 - Diablo 2 - 5 Replies
Wollte euch mal fragen wieviel ias eine Javezon haben sollte. Und sagt mir einfach alles was ihr willst über eine Jave was sie so alles an hat. 6/40 javelins und jmod ist klar genau wie 30 frw 3 sox 120/45 Diadem.... Aber was noch alles? vielen dank!
Javazon
09/21/2009 - Diablo 2 - 15 Replies
Huhu :] Hab meine Javazon soweit fertig und sie hat (mit Equip) 400+ Punkte in Vita *stolz* :D Is Level 80 und ich weiss net wohin mit den Punkten :rolleyes: Alles in Geschick und versuchen, mit meinem Phönix auf Maxblock zu kommen? ^^ Oder weiter in Vita? Hat jetzt ~1500 Base Life... Sagt was ihr davon haltet! Ahja, sie macht jetzt ~3000 max Schaden mit Blitzendem Unheil; Ein Platz is noch frei für nen Skiller... Den lieber mit scs zupflastern oder den Skiller nehmen?



All times are GMT +1. The time now is 03:48.


Powered by vBulletin®
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2026 elitepvpers All Rights Reserved.