Register for your free account! | Forgot your password?

You last visited: Today at 15:52

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

Advertisement



[Release] Muddy's D2NT

Discussion on [Release] Muddy's D2NT within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old 01/19/2011, 11:38   #571
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by loki-d2 View Post
hi muddy ich hab da eine dringende frage.ich hab jetzt meinen gf-barb mit einer neuen
waffe equiped,einer eth botd warpike,zuvor hatte er 2 botd ba´s.das problem ist er killt
jetzt alles mit den ali baba schwertern,was nicht umbegingt gut ist .

zu meiner frage.wo stelle ich das ein das er mit der pike angreift?
mit sterni klappt es normal,ich will aber deinen bot nutzen.

danke und lg loki.
Man kann es von Haus aus gar nicht einstellen.

Vielleicht doch ein Knackpunkt, aber ich fand es besser Funktionen einzuführen, die die Slots nach dem verwendeten Equipment auswählen und nicht wie im standard D2NT einfach mal zum Precast einen Slowechsel durchführen, unabhängig davon ob sinnvoll oder nicht.

Dummerweise ist die Slotwechselfunktion wohl dahingehend unausgereift, dass der Zweihandschaden schlicht ignoriert wird.
Ich denke ich werde die Funktion bei Zeiten nochmal ganz neu schreiben, ist ohnehin etwas schlecht sortiert.

Ich habe die Funktion mal eben angepasst, damit sollte zumindest dein Problem gelöst sein:
Code:
function MWC_GetSlotID(type)
{
    var _items, _slotVal, _slotIndex;
    
    // Array format: index 0: Value; index 1: Non-Class BO; index 2: CTA Slot
    _slotVal = new Array([0, 0, false], [0, 0, false]);

    _items = me.GetItems();
    
    if(_items)
    {
        for(var i = 0; i < _items.length; i++)
        {
            if(_items[i].mode == 1)
            {
                if(_items[i].itemloc == 4 || _items[i].itemloc == 5)
                    _slotIndex = 0;
                else if(_items[i].itemloc == 11 || _items[i].itemloc == 12)
                    _slotIndex = 1;
                else
                    continue;
                
                switch(type)
                {
                    case "precast":
                        if((_items[i].itemflag & 0x4000000) && _items[i].itemprefix == 0x5027) // Check if the item is a CTA
                            _slotVal[_slotIndex][2] = true;
                            
                        _slotVal[_slotIndex][1] += _items[i].GetStat(97,149);        // Non Class Battle Orders
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127);                            // All Skills
                        if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
                            _slotVal[_slotIndex][0] += _items[i].GetStat(107,149)     // Class Specific Battle Order
                                                    + _items[i].GetStat(83,4)        // Barbarian Skills
                                                    + _items[i].GetStat(188,34);    // Warcries Skilltab
                        break;
                    case "teleport":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(105);             // Faster Cast Rate
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127) * 5;         // All Skills
                        break;
                    case "finditem":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(79) * 0.75;     // Extra Gold
                        _slotVal[_slotIndex][0] += _items[i].GetStat(80);             // Magic Find
                        _slotVal[_slotIndex][0] += _items[i].GetStat(240);             // Magic Find per Level
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(105);             // Faster Cast Rate
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127) * 10;     // All Skills
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(83,4) * 10;     // Barbarian Skills
                        _slotVal[_slotIndex][0] += _items[i].GetStat(188,34) * 10;    // Warcries Skills
                        break;
                    case "attack":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(21) + (_items[i].GetStat(22) - _items[i].GetStat(21)) / 2;            // Base Damage 1H
                        if(_items[i].GetStat(21) <= 0)
                            _slotVal[_slotIndex][0] += _items[i].GetStat(23) + (_items[i].GetStat(24) - _items[i].GetStat(23)) / 2;        // Base Damage 2H
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(48) + (_items[i].GetStat(49) - _items[i].GetStat(48)) / 2) / 2;    // Fire Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(50) + (_items[i].GetStat(51) - _items[i].GetStat(50)) / 2) / 2;    // Light Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(52) + (_items[i].GetStat(53) - _items[i].GetStat(52)) / 2) / 2;    // Magic Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(54) + (_items[i].GetStat(55) - _items[i].GetStat(54)) / 2) / 5;    // Cold Damage
                        _slotVal[_slotIndex][0] += _items[i].GetStat(58) * _items[i].GetStat(59) / 256;                                    // Poison Damage
                        _slotVal[_slotIndex][0] += _items[i].GetStat(111);                                                                // + Damage
                        break;
                }
            }
        }
    }
    
    for(var i = 0; i < _slotVal.length; i++)
    {
        if(me.classid == NTC_CHAR_CLASS_BARBARIAN && _slotVal[i][1] > 3)
            _slotVal[i][0] += 3;
        else
            _slotVal[i][0] += _slotVal[i][1];
    }

    if(_slotVal[0][0] > _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || _slotVal[0][2] && !_slotVal[1][2])
        return 0;
    else if(_slotVal[0][0] < _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || !_slotVal[0][2] && _slotVal[1][2])
        return 1;

    return -1;
}
Einfach die vorhandene Funktion komplett durch diese ersetzen.

Lg
Muddy
Muddy Waters is offline  
Thanks
1 User
Old 01/19/2011, 18:26   #572
 
elite*gold: 0
Join Date: Nov 2010
Posts: 605
Received Thanks: 109
Talking

hi muddy,danke für deine rasche antwort.ich hab die funktion ausgetauscht, dadurch tritt
aber ein fehler auf "type is not defined",in zeile 166 also switch(type)

vl kannst du mir dabei noch helfen. bin heute offline und schau morgen wieder rein.

lg loki

e : ok,ich hab jetzt type durch NTC_CHAR_CLASS_BARBARIAN ausgetauscht und der fehler ist weg
aber er greift noch immer mit ali baba an.ich hab auch versucht den waffen slot zu wechseln.

am besten ich poste mal den ganzen code.

Code:
/**
*	This file was modified by 
*	Check the programming section for updates and further scripts
*	Last Update: 11/23/2010
*/

var _MWP_BoSlot = -1;
var _MWP_AttackSlot = -1;

function NTP_DoPrecast(refresh)
{
	var _castBoTwice = false;
	
	if(_MWP_AttackSlot < 0)
		MWP_SetBoSlot();
	
	if(NTC_InTown())
		return false;

	if(refresh || !me.GetState(32) || !me.GetState(51) || (me.classid == NTC_CHAR_CLASS_BARBARIAN && !me.GetState(26)))
	{
		if(me.classid == NTC_CHAR_CLASS_BARBARIAN || _MWP_BoSlot > -1)
		{
			NTC_SwapWeapons(_MWP_BoSlot);
			
			NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
			NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
			
			if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
				NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
				
			NTC_SwapWeapons(_MWP_AttackSlot);
		}
	}
		
	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(MWP_SummonGolem())
		{
			if(NTConfig_AttackSkill[7] == 0 || !NTC_CastSkill(NTConfig_AttackSkill[7], NTC_HAND_RIGHT))
			{
				if(!NTC_CastSkill(75, NTC_HAND_RIGHT)) // Clay Golem
				{
					if(!NTC_CastSkill(85, NTC_HAND_RIGHT)) // Blood Golem
					{
						NTC_CastSkill(94, NTC_HAND_RIGHT); // Fire Golem
					}
				}
			}
			
			_castBoTwice = true;
		}
		break;

	case NTC_CHAR_CLASS_PALADIN:
		if(refresh || !me.GetState(101))
			NTC_CastSkill(117, NTC_HAND_RIGHT); // Holy Shield
		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)
	{
		if(me.classid == NTC_CHAR_CLASS_BARBARIAN || _MWP_BoSlot > -1)
		{
			NTC_SwapWeapons(_MWP_BoSlot);
			
			NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
			NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
			
			if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
				NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
				
			NTC_SwapWeapons(_MWP_AttackSlot);
		}
	}
}

function MWP_SetBoSlot()
{
    var _items, _slotVal, _slotIndex;
    
    // Array format: index 0: Value; index 1: Non-Class BO; index 2: CTA Slot
    _slotVal = new Array([0, 0, false], [0, 0, false]);

    _items = me.GetItems();
    
    if(_items)
    {
        for(var i = 0; i < _items.length; i++)
        {
            if(_items[i].mode == 1)
            {
                if(_items[i].itemloc == 4 || _items[i].itemloc == 5)
                    _slotIndex = 0;
                else if(_items[i].itemloc == 11 || _items[i].itemloc == 12)
                    _slotIndex = 1;
                else
                    continue;
                
                switch(NTC_CHAR_CLASS_BARBARIAN)
                {
                    case "precast":
                        if((_items[i].itemflag & 0x4000000) && _items[i].itemprefix == 0x5027) // Check if the item is a CTA
                            _slotVal[_slotIndex][2] = true;
                            
                        _slotVal[_slotIndex][1] += _items[i].GetStat(97,149);        // Non Class Battle Orders
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127);                            // All Skills
                        if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
                            _slotVal[_slotIndex][0] += _items[i].GetStat(107,149)     // Class Specific Battle Order
                                                    + _items[i].GetStat(83,4)        // Barbarian Skills
                                                    + _items[i].GetStat(188,34);    // Warcries Skilltab
                        break;
                    case "teleport":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(105);             // Faster Cast Rate
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127) * 5;         // All Skills
                        break;
                    case "finditem":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(79) * 0.75;     // Extra Gold
                        _slotVal[_slotIndex][0] += _items[i].GetStat(80);             // Magic Find
                        _slotVal[_slotIndex][0] += _items[i].GetStat(240);             // Magic Find per Level
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(105);             // Faster Cast Rate
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127) * 10;     // All Skills
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(83,4) * 10;     // Barbarian Skills
                        _slotVal[_slotIndex][0] += _items[i].GetStat(188,34) * 10;    // Warcries Skills
                        break;
                    case "attack":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(21) + (_items[i].GetStat(22) - _items[i].GetStat(21)) / 2;            // Base Damage 1H
                        if(_items[i].GetStat(21) <= 0)
                            _slotVal[_slotIndex][0] += _items[i].GetStat(23) + (_items[i].GetStat(24) - _items[i].GetStat(23)) / 2;        // Base Damage 2H
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(48) + (_items[i].GetStat(49) - _items[i].GetStat(48)) / 2) / 2;    // Fire Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(50) + (_items[i].GetStat(51) - _items[i].GetStat(50)) / 2) / 2;    // Light Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(52) + (_items[i].GetStat(53) - _items[i].GetStat(52)) / 2) / 2;    // Magic Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(54) + (_items[i].GetStat(55) - _items[i].GetStat(54)) / 2) / 5;    // Cold Damage
                        _slotVal[_slotIndex][0] += _items[i].GetStat(58) * _items[i].GetStat(59) / 256;                                    // Poison Damage
                        _slotVal[_slotIndex][0] += _items[i].GetStat(111);                                                                // + Damage
                        break;
                }
            }
        }
    }
    
    for(var i = 0; i < _slotVal.length; i++)
    {
        if(me.classid == NTC_CHAR_CLASS_BARBARIAN && _slotVal[i][1] > 3)
            _slotVal[i][0] += 3;
        else
            _slotVal[i][0] += _slotVal[i][1];
    }

    if(_slotVal[0][0] > _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || _slotVal[0][2] && !_slotVal[1][2])
        return 0;
    else if(_slotVal[0][0] < _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || !_slotVal[0][2] && _slotVal[1][2])
        return 1;

    return -1;
}

function MWP_SummonGolem()
{
	var _golem, _parent;
	
	// Check if we already got any kind of golem
	_golem = NTC_FindUnit(NTC_UNIT_MONSTER);
	if(!_golem)
		return false;
	
	do
	{
		if(_golem.classid >= 289 && _golem.classid <= 292)
		{
			_parent = _golem.GetParent();
			
			if(_parent && _parent.name == me.name) // Check if the monster object that appears to be a golem is actually ours
				return false;
		}
	} while(_golem.GetNext());
			
	return true;
}
hoffe das stimmt so

lg loki
loki-d2 is offline  
Old 01/19/2011, 19:47   #573
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by loki-d2 View Post
hi muddy,danke für deine rasche antwort.ich hab die funktion ausgetauscht, dadurch tritt
aber ein fehler auf "type is not defined",in zeile 166 also switch(type)

vl kannst du mir dabei noch helfen. bin heute offline und schau morgen wieder rein.

lg loki

e : ok,ich hab jetzt type durch NTC_CHAR_CLASS_BARBARIAN ausgetauscht und der fehler ist weg
aber er greift noch immer mit ali baba an.ich hab auch versucht den waffen slot zu wechseln.

am besten ich poste mal den ganzen code.

Code:
/**
*    This file was modified by 
*    Check the programming section for updates and further scripts
*    Last Update: 11/23/2010
*/

var _MWP_BoSlot = -1;
var _MWP_AttackSlot = -1;

function NTP_DoPrecast(refresh)
{
    var _castBoTwice = false;
    
    if(_MWP_AttackSlot < 0)
        MWP_SetBoSlot();
    
    if(NTC_InTown())
        return false;

    if(refresh || !me.GetState(32) || !me.GetState(51) || (me.classid == NTC_CHAR_CLASS_BARBARIAN && !me.GetState(26)))
    {
        if(me.classid == NTC_CHAR_CLASS_BARBARIAN || _MWP_BoSlot > -1)
        {
            NTC_SwapWeapons(_MWP_BoSlot);
            
            NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
            NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
            
            if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
                NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
                
            NTC_SwapWeapons(_MWP_AttackSlot);
        }
    }
        
    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(MWP_SummonGolem())
        {
            if(NTConfig_AttackSkill[7] == 0 || !NTC_CastSkill(NTConfig_AttackSkill[7], NTC_HAND_RIGHT))
            {
                if(!NTC_CastSkill(75, NTC_HAND_RIGHT)) // Clay Golem
                {
                    if(!NTC_CastSkill(85, NTC_HAND_RIGHT)) // Blood Golem
                    {
                        NTC_CastSkill(94, NTC_HAND_RIGHT); // Fire Golem
                    }
                }
            }
            
            _castBoTwice = true;
        }
        break;

    case NTC_CHAR_CLASS_PALADIN:
        if(refresh || !me.GetState(101))
            NTC_CastSkill(117, NTC_HAND_RIGHT); // Holy Shield
        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)
    {
        if(me.classid == NTC_CHAR_CLASS_BARBARIAN || _MWP_BoSlot > -1)
        {
            NTC_SwapWeapons(_MWP_BoSlot);
            
            NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
            NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Orders
            
            if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
                NTC_CastSkill(138, NTC_HAND_RIGHT); // Shout
                
            NTC_SwapWeapons(_MWP_AttackSlot);
        }
    }
}

function MWP_SetBoSlot()
{
    var _items, _slotVal, _slotIndex;
    
    // Array format: index 0: Value; index 1: Non-Class BO; index 2: CTA Slot
    _slotVal = new Array([0, 0, false], [0, 0, false]);

    _items = me.GetItems();
    
    if(_items)
    {
        for(var i = 0; i < _items.length; i++)
        {
            if(_items[i].mode == 1)
            {
                if(_items[i].itemloc == 4 || _items[i].itemloc == 5)
                    _slotIndex = 0;
                else if(_items[i].itemloc == 11 || _items[i].itemloc == 12)
                    _slotIndex = 1;
                else
                    continue;
                
                switch(NTC_CHAR_CLASS_BARBARIAN)
                {
                    case "precast":
                        if((_items[i].itemflag & 0x4000000) && _items[i].itemprefix == 0x5027) // Check if the item is a CTA
                            _slotVal[_slotIndex][2] = true;
                            
                        _slotVal[_slotIndex][1] += _items[i].GetStat(97,149);        // Non Class Battle Orders
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127);                            // All Skills
                        if(me.classid == NTC_CHAR_CLASS_BARBARIAN)
                            _slotVal[_slotIndex][0] += _items[i].GetStat(107,149)     // Class Specific Battle Order
                                                    + _items[i].GetStat(83,4)        // Barbarian Skills
                                                    + _items[i].GetStat(188,34);    // Warcries Skilltab
                        break;
                    case "teleport":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(105);             // Faster Cast Rate
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127) * 5;         // All Skills
                        break;
                    case "finditem":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(79) * 0.75;     // Extra Gold
                        _slotVal[_slotIndex][0] += _items[i].GetStat(80);             // Magic Find
                        _slotVal[_slotIndex][0] += _items[i].GetStat(240);             // Magic Find per Level
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(105);             // Faster Cast Rate
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(127) * 10;     // All Skills
                        
                        _slotVal[_slotIndex][0] += _items[i].GetStat(83,4) * 10;     // Barbarian Skills
                        _slotVal[_slotIndex][0] += _items[i].GetStat(188,34) * 10;    // Warcries Skills
                        break;
                    case "attack":
                        _slotVal[_slotIndex][0] += _items[i].GetStat(21) + (_items[i].GetStat(22) - _items[i].GetStat(21)) / 2;            // Base Damage 1H
                        if(_items[i].GetStat(21) <= 0)
                            _slotVal[_slotIndex][0] += _items[i].GetStat(23) + (_items[i].GetStat(24) - _items[i].GetStat(23)) / 2;        // Base Damage 2H
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(48) + (_items[i].GetStat(49) - _items[i].GetStat(48)) / 2) / 2;    // Fire Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(50) + (_items[i].GetStat(51) - _items[i].GetStat(50)) / 2) / 2;    // Light Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(52) + (_items[i].GetStat(53) - _items[i].GetStat(52)) / 2) / 2;    // Magic Damage
                        _slotVal[_slotIndex][0] += (_items[i].GetStat(54) + (_items[i].GetStat(55) - _items[i].GetStat(54)) / 2) / 5;    // Cold Damage
                        _slotVal[_slotIndex][0] += _items[i].GetStat(58) * _items[i].GetStat(59) / 256;                                    // Poison Damage
                        _slotVal[_slotIndex][0] += _items[i].GetStat(111);                                                                // + Damage
                        break;
                }
            }
        }
    }
    
    for(var i = 0; i < _slotVal.length; i++)
    {
        if(me.classid == NTC_CHAR_CLASS_BARBARIAN && _slotVal[i][1] > 3)
            _slotVal[i][0] += 3;
        else
            _slotVal[i][0] += _slotVal[i][1];
    }

    if(_slotVal[0][0] > _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || _slotVal[0][2] && !_slotVal[1][2])
        return 0;
    else if(_slotVal[0][0] < _slotVal[1][0] && me.classid == NTC_CHAR_CLASS_BARBARIAN || !_slotVal[0][2] && _slotVal[1][2])
        return 1;

    return -1;
}

function MWP_SummonGolem()
{
    var _golem, _parent;
    
    // Check if we already got any kind of golem
    _golem = NTC_FindUnit(NTC_UNIT_MONSTER);
    if(!_golem)
        return false;
    
    do
    {
        if(_golem.classid >= 289 && _golem.classid <= 292)
        {
            _parent = _golem.GetParent();
            
            if(_parent && _parent.name == me.name) // Check if the monster object that appears to be a golem is actually ours
                return false;
        }
    } while(_golem.GetNext());
            
    return true;
}
hoffe das stimmt so

lg loki
Nein, da hast du dich versehen.

Die zu ersetzende Funktion findest du in der NTCommon und nicht in der NTPrecast library.

Das Präfix im Namen einer Funktion - mal angenommen ihr Autor hat Wert auf einen halbwegs guten Programmierstil gelegt - verweist immer auf die library, in der die Funktion implementiert ist.
Beginnt die Funktion mit MWC bzw. NTC, heisst das, sie ist in der NTCommon library implementiert, MWL verweist auf eine Implementierung innerhalb der MWLoot library und so weiter.
Solche Präfixe nutzt man übrigens auch gerne für globale Variablen, weil dadurch der Definitionskontext direkt ersichtlich ist.

Hier einmal die alte MWP_SetBoSlot() Funktion zur Wiederherstellung, solltest du sie vor der Verunstaltung nicht zwischengespeichert haben:
Code:
function MWP_SetBoSlot()
{    
    _MWP_BoSlot = MWC_GetSlotID("precast");
    
    if(_MWP_BoSlot == -1)
    {
        _MWP_BoSlot = me.weaponstab;
        _MWP_AttackSlot = me.weaponstab;
    }    
    else if(_MWP_BoSlot == 0)
        _MWP_AttackSlot = 1;
    else
        _MWP_AttackSlot = 0;
}
Achte darauf, dass du diesmal die richtige Funktion ersetzt, die Funktionsnamen sollten dabei übereinstimmen.

Lg
Muddy
Muddy Waters is offline  
Thanks
1 User
Old 01/19/2011, 19:47   #574
 
elite*gold: 0
Join Date: Jan 2011
Posts: 17
Received Thanks: 0
hab deinen bot mal runtergeladen um mal zu schaun wie er so is ^^

aber nach dem einstellen kam dann die meldung /MWBotGame.ntj(56) : reference err. NTLoadConfig not defined

kannste mir nen rat geben was es ein könnte?ich schau derweil ob ich irgendwo zeichen fehler gemacht hab,oder sowas in der art

danke im vorraus

€ : hab ich ich kontrollier grad alles nochmal durch
black/heart is offline  
Old 01/19/2011, 19:51   #575
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by black/heart View Post
hab deinen bot mal runtergeladen um mal zu schaun wie er so is ^^

aber nach dem einstellen kam dann die meldung /MWBotGame.ntj(56) : reference err. NTLoadConfig not defined

kannste mir nen rat geben was es ein könnte?ich schau derweil ob ich irgendwo zeichen fehler gemacht hab,oder sowas in der art

danke im vorraus
Deine Char Config ist entweder falsch benannt, oder enthält Syntaxfehler.

Nimm dir Zeit beim Einstellen und achte darauf, dass etwaige von dir durchgeführte Änderungen mit der JavaScript Syntax konform sind.

Lg
Muddy

P.S.: Wenns gar nicht klappt poste die Charconfig in einer [Code]-Box, dann schaue ich mal drüber.
Muddy Waters is offline  
Old 01/19/2011, 21:07   #576
 
elite*gold: 0
Join Date: Apr 2010
Posts: 344
Received Thanks: 173
Ahoi!
Ich wollt mich eben davor drücken den Konjunktiv im Perfektstamm der a,e und konsonantischer Konjugation in Latein zu lernen und dacht mir ich teil mal meine lustige Idee

Freunde whispen, wenn Item gefunden wurde. Es sei vielleicht angemerkt, dass ich nich diese Botversion benutze (sonder die Muddies-Extended) und deswegen die Functions bisschen anders heißen, es soll ja auch nur ne Idee sein :

NTSnagit.ntl (Aus Muddies-Extended) modifiziert.:

Code:
var _NTSI_IgnoredList = new Array(
526, // Arrows quiver
528, // Bolts quiver
543, // Keys
518, // Tome of Town Portal
519, // Tome of Identify
529, // Scroll of Town Portal
530, // Scroll of Identify
514, // Antidote potion
513, // Stamina potion
517, // Thawing potion
80, // Rancid Gas Pot
81, // Oil Potion
82, // Choking Gas Pot
83, // Exploding Pot
84, // Strangling Gas
85); // Fulminating Pot

var _NTSI_BeltSize;

var lastItemQuality;
var lastItemName;
var lastItemItemLevel;
var lastItemDesc;

function NTSI_LoadNIPFiles(filepath)
{
	for(var i = 0 ; i < NTConfig_NIPFilePath.length ; i++)
		NTIPOpenFile(filepath + "/" + NTConfig_NIPFilePath[i]);

	_NTSI_BeltSize = NTC_GetBeltSize();
}

function NTSI_PickItems()
{
	var i, _mode;

	for(i = 0 ; i < 25 ; i++)
	{
		_mode = me.mode;

		if((_mode >= 1 && _mode <= 3) || _mode == 5 || _mode == 6)
			break;

		NTC_Delay(NTC_DELAY_FRAME);
	}

	if(i < parseInt(NTConfig_SnagDelay/NTC_DELAY_FRAME))
		NTC_PingDelay(NTConfig_SnagDelay-(i*NTC_DELAY_FRAME));
	
	Include("libs/common/NTItemlogger.ntl");
	NTI_WriteLoc();
	NTSI_SnagIt();
}

function NTSI_SnagIt()
{
	var i;
	var _item;
	var _checkeditem, _checkeditems;
	var _value;
	var _minindex, _mindistance;

	_item = NTC_FindUnit(NTC_UNIT_ITEM);

	if(!_item)
		return;

	_checkeditems = new Array();

	do
	{
		if(_item.mode == 3 || _item.mode == 5)
		{
			if(NTSI_IsIgnoredItemInt(_item.classid))
				continue;

			if(GetDistance(me, _item) <= NTConfig_SnagRange)
			{
				_value = NTSI_CheckItem(_item);

				if(_value)
					_checkeditems.push(new NTSI_ItemInt(_item, _value));
			}
		}
	} while(_item.GetNext());

	while(_checkeditems.length > 0)
	{
		_mindistance = 100000;

		for(i = 0 ; i < _checkeditems.length ; i++)
		{
			_value = GetDistance(me.x, me.y, _checkeditems[i].x, _checkeditems[i].y);

			if(_value < _mindistance)
			{
				_minindex = i;
				_mindistance = _value;
			}
		}

		_checkeditem = _checkeditems.splice(_minindex, 1)[0];

		_item = NTC_FindUnit(NTC_UNIT_ITEM, _checkeditem.GID);

		if(_item)
		{
			if(!NTSI_IsLimitedItemInt(_item))
			{
				if(NTT_CheckSpace(_item.xsize, _item.ysize))
				{
					if(NTSI_PickUpItemInt(_item) && _item)
					{
						var _outputColor = "";
						var _outputColorMGR = "";
						if((_item.classid >= 644 && _item.classid <= 658) || (_item.classid >= 531 && _item.classid <= 555) || (_item.classid >= 610 && _item.classid <= 642))
						{
							_outputColor = NTC_ItemQualityToD2Color[8];
							_outputColorMGR = NTC_ItemQualityToMGRColor[8];
						}
						else
						{
							_outputColor = NTC_ItemQualityToD2Color[_item.quality];
							_outputColorMGR = NTC_ItemQualityToMGRColor[_item.quality];
						}
						if(_item && (_item.itemtype < 76 || _item.itemtype > 81) && _checkeditem.ClassID != 523 )
							Print("Picked up " + _outputColor + _item.name.split("\n")[0]);
						if(NTConfig_ShowGoldPickups && _checkeditem.ClassID == 523)
							Print("Picked up Gold");
						if(_item && NTConfig_ShowPotionPickups && _item.itemtype >= 76 && _item.itemtype <= 78)
							Print("Picked " + _item.name.split("\n")[0]);
						if(_item.quality < 4 && _checkeditem.Status < 2 && _item.itemtype != 4 && (_item.itemtype < 76 || _item.itemtype > 81))
						{
							var _isEthereal = ((_item.itemflag & 0x400000) == 0x400000) ? 1 : 0;
							if(NTConfig_UseXMLItemlog)
							{
								if(NTI_WriteLog(_item, me, _isEthereal, 0))
								{
									NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + _outputColorMGR + _item.name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _item.itemdesc + "\nÿc5Item Level: " + _item.itemlevel);
									Say("/f m Just found " + _item.name + " at " + NTI_ReadLoc() + "!");
								}	
							}
							else
							{
								NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + _outputColorMGR + _item.name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _item.itemdesc + "\nÿc5Item Level: " + _item.itemlevel);
[COLOR="Red"]									Say("/f m Just found " + _item.name + " at " + NTI_ReadLoc() + "!");[/COLOR]
							}	
						}
					}
				}
				else
				{
					if(!_checkeditem.Retry)
					{
						_checkeditem.Retry = true;

						if(!NTTMGR_VisitTown())
							return;

						_checkeditems.push(_checkeditem);
					}
				}
			}
		}
	}
}

function NTSI_CheckItem(item)
{
	var _result;

	switch(item.quality)
	{
	case 5:
	case 8:
		_result = NTIPCheckItem(item);
		break;
	default:
		_result = NTIPCheckItem(item);

		if(NTCU_CheckItem(item, _result))
			_result = 2;

		break;
	}

	return _result;
}

// Internal function
function NTSI_ItemInt(item, checkedstatus)
{
	this.ClassID = item.classid;
	this.GID = item.gid;
	this.x = item.x;
	this.y = item.y;
	this.Status = checkedstatus;
	this.Retry = false;
}

function NTSI_PickUpItemInt(snagitem)
{
	var i;
	var _classid;

	_classid = snagitem.classid;

	for(i = 0 ; i < 40 ; i++)
	{
		if((i % 10) == 0 && (snagitem.mode == 3 || snagitem.mode == 5))
		{
			if(GetDistance(me, snagitem) > 3)
				NTM_MoveTo(snagitem.areaid, snagitem.x, snagitem.y);

			if(NTC_ClearCursor())
				NTC_DoClick(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, snagitem);
		}

		NTC_Delay(NTC_DELAY_FRAME);

		if(_classid == 523 || (snagitem.mode != 3 && snagitem.mode != 5))
		{
			NTC_PingDelay(100);
			return true;
		}
	}

	return false;
}

function NTSI_IsIgnoredItemInt(classid)
{
	for(var i = 0 ; i < _NTSI_IgnoredList.length ; i++)
	{
		if(classid == _NTSI_IgnoredList[i])
			return true;
	}

	return false;
}

function NTSI_IsLimitedItemInt(item)
{
	var i;
	var _items;

	if(item.itemtype >= 76 && item.itemtype <= 78)
	{
		var _code, _type;
		var _potnum = 0;

		_code = item.code;
		_type = item.itemtype;

		for(i = 0 ; i < 4 ; i++)
		{
			if(_code.indexOf(NTConfig_BeltColType[i]) != -1)
				_potnum += _NTSI_BeltSize;
		}

		_items = me.GetItems();

		if(_items)
		{
			for(i = 0 ; i < _items.length ; i++)
			{
				if(_items[i].mode == 2 && _items[i].itemtype == _type)
					_potnum--;
			}

			if(_potnum < 1)
				return true;
		}
	}
	else if(item.quality == 7 && item.classid >= 603 && item.classid <= 605)
	{
		_items = me.GetItems(item.classid);

		if(_items)
		{
			for(i = 0 ; i < _items.length ; i++)
			{
				if(_items[i].quality == 7)
					return true;
			}
		}
	}

	return false;
}

NTTownManager.ntl (ebenfalls aus Muddies-Extended), modifiziert.:

Code:
var _NTTMGR_BuyPots;
var _NTTMGR_BuyTP;
var _NTTMGR_BuyKey;
var _NTTMGR_DoHeal;
var _NTTMGR_DoID;
var _NTTMGR_DoRepair;
var _NTTMGR_DoRevive;
var _NTTMGR_RemoveCurse;

function NTTMGR_TownManager(simple)
{
	var _cubing;

	if(arguments.length < 1)
		simple = false;

	NTC_ClearCursor();
	NTT_CleanPotions();

	_NTTMGR_BuyPots = NTT_CheckBelt();
	_NTTMGR_BuyTP = (NTTMGR_CheckScrolls(1) < 4);
	_NTTMGR_BuyKey = (NTConfig_OpenChest && NTTMGR_CheckKeys() < 4);
	_NTTMGR_DoHeal = NTT_CheckHeal();
	_NTTMGR_DoID = NTT_CheckUnids();
	_NTTMGR_DoRepair = NTT_CheckRepair(40);
	_NTTMGR_DoRevive = NTT_CheckMerc();
	_NTTMGR_RemoveCurse = NTTMGR_CheckCurse(NTConfig_CheckSelfSafe > 0x01 ? 0x7E : 0, NTConfig_CheckMercSafe > 0x01 ? 0x7E : 0);

	NTCU_InitCubing();

	NTC_PutSkill(115, NTC_HAND_RIGHT);

	switch(me.act)
	{
	case 1:
		if(_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_BuyKey || _NTTMGR_DoID)
			NTTMGR_VisitAkara();

		_cubing = (!simple && NTCU_CheckCubing());

		if(_cubing || NTT_CheckInventory())
			NTTMGR_VisitStash(_cubing);
		if(_NTTMGR_DoRevive)
			NTTMGR_VisitKashya();
		if(_NTTMGR_DoRepair)
			NTTMGR_VisitCharsi();
		if(!simple && NTConfig_Gamble && NTC_MyGold() > NTConfig_GambleStartGold)
		{
			NTTMGR_VisitGheed();

			_cubing = (!simple && NTCU_CheckCubing());

			if(_cubing || NTT_CheckInventory())
				NTTMGR_VisitStash(_cubing);
		}
		break;

	case 2:
		if(_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_DoRepair)
			NTTMGR_VisitFara();
		if(_NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_DoID)
			NTTMGR_VisitDrognan();
		if(_NTTMGR_BuyKey)
			NTTMGR_VisitLysander();

		_cubing = (!simple && NTCU_CheckCubing());

		if(_cubing || NTT_CheckInventory())
			NTTMGR_VisitStash(_cubing);
		if(_NTTMGR_DoRevive)
			NTTMGR_VisitGreiz();
		if(!simple && NTConfig_Gamble && NTC_MyGold() > NTConfig_GambleStartGold)
		{
			NTTMGR_VisitElzix();

			_cubing = (!simple && NTCU_CheckCubing());

			if(_cubing || NTT_CheckInventory())
				NTTMGR_VisitStash(_cubing);
		}
		break;

	case 3:
		if(_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_DoID)
			NTTMGR_VisitOrmus();

		_cubing = (!simple && NTCU_CheckCubing());

		if(_cubing || NTT_CheckInventory())
			NTTMGR_VisitStash(_cubing);
		if(_NTTMGR_DoRevive)
			NTTMGR_VisitAsheara();
		if(_NTTMGR_DoRepair || _NTTMGR_BuyKey)
			NTTMGR_VisitHratli();
		if(!simple && NTConfig_Gamble && NTC_MyGold() > NTConfig_GambleStartGold)
		{
			NTTMGR_VisitAlkor();

			_cubing = (!simple && NTCU_CheckCubing());

			if(_cubing || NTT_CheckInventory())
				NTTMGR_VisitStash(_cubing);
		}
		break;

	case 4:
		if(_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_BuyKey || _NTTMGR_DoID)
			NTTMGR_VisitJamella(false);
		if(_NTTMGR_DoRepair)
			NTTMGR_VisitHalbu();

		_cubing = (!simple && NTCU_CheckCubing());

		if(_cubing || NTT_CheckInventory())
			NTTMGR_VisitStash(_cubing);
		if(_NTTMGR_DoRevive)
			NTTMGR_VisitTyrael();
		if(!simple && NTConfig_Gamble && NTC_MyGold() > NTConfig_GambleStartGold)
		{
			NTTMGR_VisitJamella(true);

			_cubing = (!simple && NTCU_CheckCubing());

			if(_cubing || NTT_CheckInventory())
				NTTMGR_VisitStash(_cubing);
		}
		break;

	case 5:
		if(_NTTMGR_DoHeal || _NTTMGR_RemoveCurse || _NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_BuyKey || _NTTMGR_DoID)
			NTTMGR_VisitMalah();

		_cubing = (!simple && NTCU_CheckCubing());

		if(_cubing || NTT_CheckInventory())
			NTTMGR_VisitStash(_cubing);
		if(_NTTMGR_DoRepair)
			NTTMGR_VisitLarzuk();
		if(_NTTMGR_DoRevive)
			NTTMGR_VisitQualKehk();
		if(!simple && NTConfig_Gamble && NTC_MyGold() > NTConfig_GambleStartGold)
		{
			NTTMGR_VisitAnya();

			_cubing = (!simple && NTCU_CheckCubing());

			if(_cubing || NTT_CheckInventory())
				NTTMGR_VisitStash(_cubing);
		}
		break;
	}
}

function NTTMGR_VisitTown()
{
	var _prearea = me.areaid;

	if(!NTTM_CheckAct())
		return false;

	NTTMGR_TownManager(true);

	if(!NTTM_TownMove("portalspot"))
		return false;

	if(!NTM_UsePortal("BluePortal", _prearea))
		return false;

	if(NTConfig_PublicMode)
		NTM_MakeTP();

	return true;
}

function NTTMGR_VisitStash(cubing)
{
	var _stash;

	NTTM_TownMove("stash");

	_stash = NTC_FindUnit(NTC_UNIT_OBJECT, NTC_UNIT_STASH, 5);

	if(_stash)
	{
		if(NTT_DoInteract(_stash))
		{
			NTT_ManageStash();

			if(cubing)
			{
				NTCU_DoCubing();

				if(NTT_DoInteract(_stash))
					NTT_ManageStash();

				me.Cancel(1);
				NTT_ClearInventory();
			}
			else
				me.Cancel(1);
		}
	}
}

function NTTMGR_VisitAkara()
{
	var _npc;

	NTTM_TownMove("akara");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_AKARA, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(_NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_BuyKey || _NTTMGR_DoID)
			{
				if(NTT_DoTrade(_npc))
				{
					if(_NTTMGR_BuyPots)
						NTT_FillBelt(_npc);
					if(_NTTMGR_BuyTP)
						NTT_FillTome(_npc, 1);
					if(_NTTMGR_BuyKey)
						NTT_FillKey(_npc);
					if(_NTTMGR_DoID)
						NTTMGR_IDItems(_npc);
				}
			}

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitKashya()
{
	var _npc;

	NTTM_TownMove("kashya");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_KASHYA, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			NTT_ReviveMerc();
			me.Cancel(1);

			if(NTConfig_ResetWeapon)
				NTT_ResetWeaponMerc();
		}
	}
}

function NTTMGR_VisitCharsi()
{
	var _npc;

	NTTM_TownMove("charsi");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_CHARSI, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
				NTT_RepairItems(_npc);

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitGheed()
{
	var _npc;

	NTTM_TownMove("gheed");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_GHEED, 5);

	if(_npc)
	{
		while(NTC_MyGold() > NTConfig_GambleStopGold)
		{
			if(NTT_DoInteract(_npc))
			{
				if(NTT_DoTrade(_npc, 1))
					NTT_GambleIt(_npc);

				me.Cancel(1);
			}
			else
				break;
		}
	}
}

function NTTMGR_VisitFara()
{
	var _npc;

	NTTM_TownMove("fara");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_FARA, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(_NTTMGR_DoRepair)
			{
				if(NTT_DoTrade(_npc))
					NTT_RepairItems(_npc);
			}

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitDrognan()
{
	var _npc;

	NTTM_TownMove("drognan");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_DROGNAN, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
			{
				if(_NTTMGR_BuyPots)
					NTT_FillBelt(_npc);
				if(_NTTMGR_BuyTP)
					NTT_FillTome(_npc, 1);
				if(_NTTMGR_DoID)
					NTTMGR_IDItems(_npc);
			}

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitLysander()
{
	var _npc;

	NTTM_TownMove("lysander");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_LYSANDER, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
				NTT_FillKey(_npc);

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitGreiz()
{
	var _npc;

	NTTM_TownMove("greiz");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_GREIZ, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			NTT_ReviveMerc();
			me.Cancel(1);

			if(NTConfig_ResetWeapon)
				NTT_ResetWeaponMerc();
		}
	}
}

function NTTMGR_VisitElzix()
{
	var _npc;

	NTTM_TownMove("elzix");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ELZIX, 5);

	if(_npc)
	{
		while(NTC_MyGold() > NTConfig_GambleStopGold)
		{
			if(NTT_DoInteract(_npc))
			{
				if(NTT_DoTrade(_npc, 1))
					NTT_GambleIt(_npc);

				me.Cancel(1);
			}
			else
				break;
		}
	}
}

function NTTMGR_VisitOrmus()
{
	var _npc;

	NTTM_TownMove("ormus");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ORMUS, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(_NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_DoID)
			{
				if(NTT_DoTrade(_npc))
				{
					if(_NTTMGR_BuyPots)
						NTT_FillBelt(_npc);
					if(_NTTMGR_BuyTP)
						NTT_FillTome(_npc, 1);
					if(_NTTMGR_DoID)
						NTTMGR_IDItems(_npc);
				}
			}

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitAsheara()
{
	var _npc;

	NTTM_TownMove("asheara");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ASHEARA, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			NTT_ReviveMerc();
			me.Cancel(1);

			if(NTConfig_ResetWeapon)
				NTT_ResetWeaponMerc();
		}
	}
}

function NTTMGR_VisitHratli()
{
	var _npc;

	NTTM_TownMove("hratli");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_HRATLI, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
			{
				if(_NTTMGR_DoRepair)
					NTT_RepairItems(_npc);
				if(_NTTMGR_BuyKey)
					NTT_FillKey(_npc);
			}

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitAlkor()
{
	var _npc;

	NTTM_TownMove("alkor");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ALKOR, 5);

	if(_npc)
	{
		while(NTC_MyGold() > NTConfig_GambleStopGold)
		{
			if(NTT_DoInteract(_npc))
			{
				if(NTT_DoTrade(_npc, 1))
					NTT_GambleIt(_npc);

				me.Cancel(1);
			}
			else
				break;
		}
	}
}

function NTTMGR_VisitJamella(gamble)
{
	var _npc;

	NTTM_TownMove("jamella");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_JAMELLA, 5);

	if(_npc)
	{
		if(gamble)
		{
			while(NTC_MyGold() > NTConfig_GambleStopGold)
			{
				if(NTT_DoInteract(_npc))
				{
					if(NTT_DoTrade(_npc, 1))
						NTT_GambleIt(_npc);

					me.Cancel(1);
				}
				else
					break;
			}
		}
		else
		{
			if(NTT_DoInteract(_npc))
			{
				if(_NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_BuyKey || _NTTMGR_DoID)
				{
					if(NTT_DoTrade(_npc))
					{
						if(_NTTMGR_BuyPots)
							NTT_FillBelt(_npc);
						if(_NTTMGR_BuyTP)
							NTT_FillTome(_npc, 1);
						if(_NTTMGR_BuyKey)
							NTT_FillKey(_npc);
						if(_NTTMGR_DoID)
							NTTMGR_IDItems(_npc);
					}
				}

				me.Cancel(1);
			}
		}
	}
}

function NTTMGR_VisitHalbu()
{
	var _npc;

	NTTM_TownMove("halbu");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_HALBU, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
				NTT_RepairItems(_npc);

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitTyrael()
{
	var _npc;

	NTTM_TownMove("tyrael");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_TYRAEL_ACT_4, 5);

	if(_npc)
	{	
		if(NTT_DoInteract(_npc))
		{
			NTT_ReviveMerc();
			me.Cancel(1);

			if(NTConfig_ResetWeapon)
				NTT_ResetWeaponMerc();
		}
	}
}

function NTTMGR_VisitMalah()
{
	var _npc;

	NTTM_TownMove("malah");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_MALAH, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(_NTTMGR_BuyPots || _NTTMGR_BuyTP || _NTTMGR_BuyKey || _NTTMGR_DoID)
			{
				if(NTT_DoTrade(_npc))
				{
					if(_NTTMGR_BuyPots)
						NTT_FillBelt(_npc);
					if(_NTTMGR_BuyTP)
						NTT_FillTome(_npc, 1);
					if(_NTTMGR_BuyKey)
						NTT_FillKey(_npc);
					if(_NTTMGR_DoID)
						NTTMGR_IDItems(_npc);
				}
			}

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitLarzuk()
{
	var _npc;

	NTTM_TownMove("larzuk");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_LARZUK, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			if(NTT_DoTrade(_npc))
				NTT_RepairItems(_npc);

			me.Cancel(1);
		}
	}
}

function NTTMGR_VisitQualKehk()
{
	var _npc;

	NTTM_TownMove("qual-kehk");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_QUALKEHK, 5);

	if(_npc)
	{
		if(NTT_DoInteract(_npc))
		{
			NTT_ReviveMerc();
			me.Cancel(1);

			if(NTConfig_ResetWeapon)
				NTT_ResetWeaponMerc();
		}
	}
}

function NTTMGR_VisitAnya()
{
	var _npc;

	NTTM_TownMove("anya");

	_npc = NTC_FindUnit(NTC_UNIT_NPC, NTC_NPC_ID_ANYA_TOWN, 5);

	if(_npc)
	{
		while(NTC_MyGold() > NTConfig_GambleStopGold)
		{
			if(NTT_DoInteract(_npc))
			{
				if(NTT_DoTrade(_npc, 1))
					NTT_GambleIt(_npc);

				me.Cancel(1);
			}
			else
				break;
		}
	}
}

function NTTMGR_CheckScrolls(scrolltype)
{
	var _tome = NTT_GetTome(scrolltype);

	if(_tome)
		return _tome.GetStat(70);

	return 0;
}

function NTTMGR_CheckKeys()
{
	var _key;

	if(me.classid == NTC_CHAR_CLASS_ASSASSIN)
		return 12;

	_key = NTT_GetKey();

	if(_key)
		return _key.GetStat(70);

	return 0;
}

function NTTMGR_IDItems(npc)
{
	Include("libs/common/NTItemlogger.ntl");
	
	var _tome, _scroll;
	var _result;
	var _items = NTT_GetUnidItems();

	if(!_items || _items.length < 1)
		return;

	_tome = NTT_GetTome();

	if(_tome && _tome.GetStat(70) < _items.length)
		NTT_FillTome(npc);

	for(var i = 0 ; i < _items.length ; i++)
	{
		var _isEthereal = ((_items[i].itemflag & 0x400000) == 0x400000) ? 1 : 0;
		switch(NTSI_CheckItem(_items[i]))
		{
		case 1:
			if(NTConfig_UseXMLItemlog)
			{	
				if(NTI_WriteLog(_items[i], me, _isEthereal, 0))
				{
					NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + NTC_ItemQualityToMGRColor[_items[i].quality] + _items[i].name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _items[i].itemdesc + "\nÿc5Item Level: " + _items[i].itemlevel);
					[COLOR="Red"]Say("/f m Just found " + _items[i].name + " at " + NTI_ReadLoc() + "!");[/COLOR]
				}	
			}
			else
			{
				NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + NTC_ItemQualityToMGRColor[_items[i].quality] + _items[i].name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _items[i].itemdesc + "\nÿc5Item Level: " + _items[i].itemlevel);
				[COLOR="Red"]Say("/f m Just found " + _items[i].name + " at " + NTI_ReadLoc() + "!");[/COLOR]
			}	
		case 2:
			break;
		case -1:
			if(_tome)
				_result = NTT_IdItem(_tome, _items[i]);
			else
			{
				_scroll = NTT_GetScroll();

				if(!_scroll)
				{
					NTT_BuyScrolls(npc);
					_scroll = NTT_GetScroll();
				}

				_result = NTT_IdItem(_scroll, _items[i]);
			}

			if(_result)
			{
				switch(NTSI_CheckItem(_items[i]))
				{
				case 1:
					if(NTConfig_UseXMLItemlog)
					{
						if(NTI_WriteLog(_items[i], me, _isEthereal, 0))
						{
							NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + NTC_ItemQualityToMGRColor[_items[i].quality] + _items[i].name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _items[i].itemdesc + "\nÿc5Item Level: " + _items[i].itemlevel);
							[COLOR="Red"]Say("/f m Just found " + _items[i].name + " at " + NTI_ReadLoc() + "!");[/COLOR]
						}
					}
					else
					{
						NTC_SendLogToOOG(NTC_LOG_ITEM, "Kept " + NTC_ItemQualityToMGRColor[_items[i].quality] + _items[i].name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _items[i].itemdesc + "\nÿc5Item Level: " + _items[i].itemlevel);
[COLOR="Red"]						Say("/f m Just found " + _items[i].name + " at " + NTI_ReadLoc() + "!");[/COLOR]
					}
				case 2:
					break;
				default:
					if(NTConfig_UseXMLItemlog)
						NTI_WriteLog(_items[i], me, _isEthereal, 1);
					if(NTConfig_LogSoldItems)
						NTC_SendLogToOOG(NTC_LOG_ITEM, "Sold " + NTC_ItemQualityToMGRColor[_items[i].quality] + _items[i].name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _items[i].itemdesc + "\nÿc5Item Level: " + _items[i].itemlevel);
					NTT_ShopItem(_items[i], npc, 1);
					break;
				}
			}
			else
			{	
				if(NTConfig_UseXMLItemlog)
					NTI_WriteLog(_items[i], me, _isEthereal, 1);
				if(NTConfig_LogSoldItems)	
					NTC_SendLogToOOG(NTC_LOG_ITEM, "Sold " + NTC_ItemQualityToMGRColor[_items[i].quality] + _items[i].name.split("\n")[0] + " ÿc6(" + NTI_ReadLoc() + ")" + ";" + _items[i].itemdesc + "\nÿc5Item Level: " + _items[i].itemlevel);
				NTT_ShopItem(_items[i], npc, 1);
			}
			break;
		}
	}
}

// mask - 0x02 : Poison, 0x04 : Amplify Damage, 0x08 : Weaken, 0x10 : Iron Maiden, 0x20 : Decrepify, 0x40 : Lower Resist
function NTTMGR_CheckCurse(selfmask, mercmask)
{
	if(selfmask > 0x01)
	{
		if((selfmask&0x02) && me.GetState(2))
			return true;

		if((selfmask&0x04) && me.GetState(9))
			return true;

		if((selfmask&0x08) && me.GetState(19))
			return true;

		if((selfmask&0x10) && me.GetState(55))
			return true;

		if((selfmask&0x20) && me.GetState(60))
			return true;

		if((selfmask&0x40) && me.GetState(61))
			return true;
	}

	if(mercmask > 0x01)
	{
		var _merc = NTC_GetMerc();

		if(_merc)
		{
			if((mercmask&0x02) && _merc.GetState(2))
				return true;

			if((mercmask&0x04) && _merc.GetState(9))
				return true;

			if((mercmask&0x08) && _merc.GetState(19))
				return true;

			if((mercmask&0x10) && _merc.GetState(55))
				return true;

			if((mercmask&0x20) && _merc.GetState(60))
				return true;

			if((mercmask&0x40) && _merc.GetState(61))
				return true;
		}
	}

	return false;
}

// self - 0x01 : Potion
// merc - 0x01 : Death
// common - 0x02 : Poison, 0x04 : Amplify Damage, 0x08 : Weaken, 0x10 : Iron Maiden, 0x20 : Decrepify, 0x40 : Lower Resist
function NTTMGR_CheckSafe(selfmask, mercmask)
{
	if(((selfmask&0x01) && NTT_CheckBelt()) || ((mercmask&0x01) && NTT_CheckMerc()) || NTTMGR_CheckCurse(selfmask, mercmask))
		return NTTMGR_VisitTown();

	return true;
}
Zeilen wurden rot hervorgehoben.

Ich find´s immerwieder lustig, wenn meine f-list sowas wie : "Just found Ist Rune at Tower Cellar Level 5" und 9 mins später "Just found Lo Rune at Durance of Hate Level 3" liest


Ich würd mir sowas mit ner Variablen in der Charconfig vorstellen können.

Nojo, nur so ´ne Idee, falls du zu wenig Prüfungen schreiben solltest

Btw., go Muddy, go Muddy!


Don Greetings,
Zerker.jar

Edit: Das ist der "Juhu, hab´ auch ´ne Idee, wenn auch nicht so Burner" - Blues.... :P
Zerker.jar is offline  
Old 01/19/2011, 21:54   #577
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Latein...Das musste ich mir auch mal antun, auch wenn wir uns früher mehr mit geschicktem Bescheissen durchgemogelt haben.

Das ist eine Version von mir?

Wenn ja, von wann ist die?
Das ist irgendwie alles so suboptimal...

Was sich übrigens nicht auf deine Änderungen bezieht, mehr auf die Algorithmen im allgemeinen, weil ich dort irgendwie furchtbar viele Dinge sehe, die ich schon vor Monaten sehr viel besser umgesetzt habe.

Um nochmal auf die Änderungen zurückzukommen:
Also mich würde das extrem nerven.
Aber ich denke das ist Geschmackssache, wer es haben mag, kann ja deiner Anleitung folgen.
Aber auf jeden Fall nur die Ausgaben hinzufügen und nicht diese doofen alten Funktionen kopieren.

Lg
Muddy

P.S.: Remember: most blues start with "I woke up this morning".
You might wanna check out which becomes considerably more funny the more you are into blues.
Muddy Waters is offline  
Old 01/20/2011, 05:37   #578
 
elite*gold: 0
Join Date: Nov 2010
Posts: 605
Received Thanks: 109
danke muddy,zwischenespeichert hab ichs nicht aber die orginale rar datei hab ich immer in in einem ordner.es klappt alles wunderbar und er nimmt jetzt die pike zum killen(412ed 12ll botd eth warpike geht um das doppelte schneller). lg loki
loki-d2 is offline  
Old 01/20/2011, 17:15   #579

 
Necro19's Avatar
 
elite*gold: 81
Join Date: Apr 2009
Posts: 832
Received Thanks: 53
Wie genau funktioniert das mit dem games ansagen , wenn ich z.b. op pornobaal joine und er nach dem ersten game immer das weitere ansagen soll was genau muss ich dort eintragen in der Config??
Necro19 is offline  
Old 01/20/2011, 18:32   #580
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by Necro19 View Post
Wie genau funktioniert das mit dem games ansagen , wenn ich z.b. op pornobaal joine und er nach dem ersten game immer das weitere ansagen soll was genau muss ich dort eintragen in der Config??
Config? Das stellst du im Entry Point ein, sprich NTBot.ntj, nicht in der Charconfig.

Was wo hingehört geht eigentlich gut aus Variablenbezeichnern und Kommentaren hervor.
Wichtig ist, dass du deinen Char- oder Accountnamen in das dafür vorgesehene Array namens ChannelUsers einfügst. Nur Chars die auf diese Weise "registiert" sind, machen auch Ausgaben im Chat.
Dass das funktioniert hat siehst du am Statustextbalken, wenn du gerade den Chat betreten hast. Dort sollte "Chat actions enabled" in grün stehen, dann wird dein Char Ausgaben im Chat machen.
Was ausgegeben werden soll kannst du dabei frei wählen, wobei einige Platzhalter zur Verfügung stehen, die automatisch durch die passenden Werte (also Spielname, Zeit bis zur Erstellung, etc.) ersetzt werden.
Auch das steht aber nochmal in den Kommentaren.

Lies dir diese erstmal in Ruhe durch und frag dann gegebenenfalls etwas konkreter, sollten dabei wider erwarten Fragen offen bleiben.

Lg
Muddy
Muddy Waters is offline  
Old 01/20/2011, 22:22   #581

 
Necro19's Avatar
 
elite*gold: 81
Join Date: Apr 2009
Posts: 832
Received Thanks: 53
Tja... trotzdem weiß ich immer noch nicht wie ich es abändern muss , damit er immer fortlaufend das game ankündigt im channel... ich benutze übringens nicht deine d2nt version sondern die normale d2nt 3.1
Necro19 is offline  
Old 01/20/2011, 22:45   #582
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by Necro19 View Post
Tja... trotzdem weiß ich immer noch nicht wie ich es abändern muss , damit er immer fortlaufend das game ankündigt im channel... ich benutze übringens nicht deine d2nt version sondern die normale d2nt 3.1
Och mensch...

Ich bin eigentlich sehr für eigenständiges Mitdenken und daher weder für Bildchenguides, noch für das Vorkauen von Anweisungen, die an anderer Stelle bereits erklärt werden.

Insofern läuft diese Hilfestellung jetzt als Ausnahme, zumal es noch nichtmal meine Version ist.
Ich poste mal den Beginn der NTBot.ntj und hebe dir die nötigen Änderungen entsprechend hervor:
Code:
/**
*    This file was modified by 
*    Check the programming section for updates and further scripts
*    Last Update: 01/19/2011
*/

var GameMinLength                = 120000;        // time in milliseconds, minimum game length, 180 seconds default (1 game/3 minutes)
var UnableToConnectRetry        = 5;            // time in minutes to retry connecting on connection fail (real value is +/- 1 min)
var RealmDownRetry                = 15;            // time in minutes to retry connecting on a realm down (default is 300 minutes)
var DisconnectedRetry            = 5;            // time in minutes to retry on a disconnection (usually ip ban related)
var CdKeyInUseRetry                = 5;            // time in minutes to retry on a cdkey in use error message (set to 0 to stop)
var ConnectingToBnetTimeout        = 20000;        // time in milliseconds to wait for a login to time out and click cancel and retry
var CharacterScreenTimeout        = 10000;        // time in milliseconds to wait for character screen to appear
var PleaseWaitTimeout            = 10000;        // time in milliseconds to wait for a please wait popup
var CreateGameThreshold            = 20000;        // time in milliseconds to wait between making games
var CreateGameThresholdRandom    = 5000;            // time in milliseconds to randomly add +/- to the game create time
var CreateGameTimeout            = 15000;        // time in milliseconds to register a failed to create game
var WaitInLineTimeout            = 60000;        // time in milliseconds to wait in lines for a create game (60 second default)
var CharacterSelectDelay        = 1000;            // time in milliseconds to wait before selecting a character on the char screen
var LoginDelay                    = 1000;            // time in milliseconds to wait before submitting login information
var ClickDelay                    = 1000;            // wait X milliseconds before next action after a click event
var TextDelay                    = 1000;            // wait X milliseconds before next action after inserting text into a textbox
var ClickDelayRandom            = 500;            // random amount of time to add to a click
var TextDelayRandom                = 500;            // random amount of time to add to a text set
var GameDoesNotExistDelayMin    = 600000;        // how long to wait when a Game Does Not Exist occurs - minimum - default 10 minutes
var GameDoesNotExistDelayMax    = 900000;        // how long to wait when a Game Does Not Exist occurs - maximum - default 15 minutes
var GameDoesNotExistTimeout        = 30000;        // how long to wait for the dialog to disappear (default 30 seconds, don't change this)
var JoinChatAfterLogin            = true;            // join chat after login
var JoinRandomChannel            = false;        // if this is true, will join a random channel, otherwise it will use the channel below..
var JoinChannelInChat            = "[COLOR=Red]OP Necro19[/COLOR]";            // leave blank not to join a private channel
var PerformChannelLogin            = false;        // type ".login" once after joining the channel
var ChannelUsers                 = new Array();    // dynamic array that holds channel users
var MaximumLocationLoops        = 10;            // the maximum number of loops for a single location; if this number is exceeds, the window is restarted
//---------------------------------------------------------------------------------------------------------------------------------------------------------
// Add any char/account here that is supposed to perform chat actions/game announcements or join a private channel
ChannelUsers.push("[COLOR=Red]IAmNecro19'sAwesomeCharName[/COLOR]");
// Or
ChannelUsers.push("[COLOR=Red]IAmNecro19'sAwesomeAccountName[/COLOR]");

// The following key expressions will be replaced by their actual values:  %game --> "gamename-"  <>  %counter --> number of the next game  <>  %time --> time in seconds till game creation  <>  %password --> game password
// Note that the announcement will start after the first run, so there usually won't be any anncouncement right after login - If the gamename is undefined, the bot will try to load the backup file to announce the upcoming game properly
var GameAnnouncement            = "[COLOR=Red]I am a magnificent announcement! Creating %game%counter//%password in %time seconds...[/COLOR]";            // Leave blank not to post a channel announcement
var GameAnnouncementDelay        = 5000;            // Wait X milliseconds before posting the announcement message (don't set this too low!)
var GameAnnouncementDelayRandom    = 500;            // Random amount of time to add to a to the announcement delay
var UseFileBackupTimeMax        = 15;            // Time in minutes that may pass since last file update - The backup File is updated at the beginning of every single game and is read everytime the name of your previous game is undefined (e.g. at restarts); Set to 0 to deactivate file backup
//----------------------------------------------------------------------------------------------------------------------------------------------------------
var WaitBeforeEnterChatMin        = 1000;            // min how long to wait before entering chat
var WaitBeforeEnterChatMax        = 2000;            // max how long to wait before entering chat
var WaitInChatBeforeActionsMin    = 2000;            // min how long to wait before joining channel
var WaitInChatBeforeActionsMax    = 3000;            // max how long to wait before joining channel

// DONT EDIT ANYTHING BELOW THIS

// D2NT Manager Command
const D2NT_MGR_LOADING = 1;
const D2NT_MGR_READY = 2;
const D2NT_MGR_LOGIN = 3;
const D2NT_MGR_CREATE_GAME = 4;
const D2NT_MGR_INGAME = 5;
const D2NT_MGR_RESTART = 6;
const D2NT_MGR_CHICKEN = 7;
const D2NT_MGR_PRINT_STATUS = 8;
const D2NT_MGR_PRINT_LOG = 9;

var LastGameMade = GetTickCount();
var LastGameStatus = 0;
var NextGameMake = 0;
var InGameAt = 0;
var LocationLoops = new Array(2);
var ChatActionsDone = false;
var LastGameFailed = false;
var JoinedChannel = false;
var JustJoined = true;

Include("libs/controlInfo.ntl");

var ControlData = new controlInfo();

function NTMain()
{
    Delay(1000);

    var _ingame = false;

    ControlData.ClickDelay = ClickDelay;
    ControlData.TextDelay = TextDelay;
    ControlData.ClickDelayRandom = ClickDelayRandom;
    ControlData.TextDelayRandom = TextDelayRandom;

    while(1)
    {
        if(me.ingame)
        {
            if(!InGameAt)
                InGameAt = GetTickCount();
            
            if(!_ingame)
            {
                RunGC(); // run garbage collector between each game

                if(me.gamename)
                    MW_WriteBackupFile(me.gamename);
                
                if(Load("[COLOR=Red]NTBot/NTBotGame.ntj[/COLOR]"))
                {
                    _ingame = true;
                    
                    LocationLoops[1] = 0;
                    
                    if(me.playtype > 0)
                        NT_SendEventToOOG(D2NT_MGR_INGAME, "In Game [IP:" + me.gameserverip.split(".")[3] + "]", 0);
                    else
                        NT_SendEventToOOG(D2NT_MGR_INGAME, "In Game", 0);

                    LastGameStatus = 2; // in game successful
                }
            }

            Delay(1000);
        }
        else
        {
            if(_ingame)
            {
                _ingame = false;

                NT_SendEventToOOG(D2NT_MGR_READY, "", 0);
            }

            NT_LocationAction(ControlData.getLocation());

            Delay(500);
        }
    }
}
War das jetzt so schwer?

Lg
Muddy
Muddy Waters is offline  
Old 01/20/2011, 23:23   #583

 
Necro19's Avatar
 
elite*gold: 81
Join Date: Apr 2009
Posts: 832
Received Thanks: 53
Ok jetzt gehts , aber er postet es jetzt 2 mal im chat, wie stell ich um das er nur einmal sagt z.b. diabaalsx-01 in 10 seconds?
Necro19 is offline  
Old 01/21/2011, 14:55   #584
 
elite*gold: 0
Join Date: Nov 2010
Posts: 6
Received Thanks: 0
Quote:
Originally Posted by Muddy_Waters View Post
Das siehst du falsch, ein Restart kann immer auftreten, wenn es zu einem unbehandelten Ausnahmefehler kommt.

Völlig entgegen dem Sinn und Zweck von Ausnahmefehlern, ist es in diesen Fällen leider meist absolut unsicher, was genau das Problem ist, es sei denn man kennt die Rahmenbedingungen und schafft es den Fehler zu reproduzieren. In dem Fall weiss man, wo man zu suchen hat.

Ich habe das Problem beispielsweise mit meinem MF Barb, die Restartquote liegt hier etwa um den Faktor 4 höher als bei meinen anderen Chars.
Leider weiss ich bislang noch nicht genau, was Auslöser dieser Restarts ist.

Darum erstmal die Frage: Welchen Char verwendest du und wo treibt dieser sich in erster Linie rum?

Lg
Muddy
Blitz/Kettenblitzzauberin,

Code:
	MWConfig_Script.push(["NTCountess.ntj", 10]); MWConfig_ClearCountessRooms = false;
	MWConfig_Script.push(["NTNihlathak.ntj", 10]); NTConfig_PindleskinExtension = true; MWConfig_SkipOnTombVipers = true;
	MWConfig_Script.push(["NTSummoner.ntj", 10]); NTConfig_KillFireEye = true;
	MWConfig_Script.push(["NTAndariel.ntj", 10]);
	MWConfig_Script.push(["NTMephisto.ntj", 10]); MWConfig_OpenMephistoChest = true; MWConfig_MephistoClearArea = false;
	MWConfig_Script.push(["MWSewers.ntj", 10]);	
	MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathToPit = false; NTConfig_ClearPitLevel1 = 2; // 0 : don't clear, 1 : clear path only, 2 : clear all
	MWConfig_Script.push(["NTDuriel.ntj", 10]); MWConfig_ClearPathToDuriel = true;
	MWConfig_Script.push(["NTGlacialTrail.ntj", 10]); NTConfig_ClearGlacialTrail = true;
	//MWConfig_Script.push(["NTCows.ntj", 20]);
	//MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_StartAtStar = true; // false: start at entrance, true: start at star
	MWConfig_Script.push(["NTBaal.ntj", 10]); NTConfig_KillBaal = true; MWConfig_SkipBaalOnDolls = true; MWConfig_SkipBaalOnSouls = false;
	//MWConfig_Script.push(["MWWorldstoneKeep.ntj", 10]); MWConfig_SkipLevelOnWitches = true; MWConfig_SkipLevelOnSouls = true; MWConfig_SkipLevelOnDeathLords = true;
Cows, Dia und WSK auskommentiert weil ich das Gefühl hatte dass es tendenziell bei den Runs öfter passiert. War aber ne Fehleinschätzung scheinbar
Greekgod is offline  
Old 01/21/2011, 16:47   #585
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Quote:
Originally Posted by Necro19 View Post
Ok jetzt gehts , aber er postet es jetzt 2 mal im chat, wie stell ich um das er nur einmal sagt z.b. diabaalsx-01 in 10 seconds?
Das sollte er eigentlich auch so tun, auch wenn ich zugeben muss, das lange nicht mehr getestet zu haben.

Stell mal sicher, dass die Delays sinnvoll gewählt sind, dann sollte das eigentlich funktionieren. Ansonsten schreib ich schnell einen workaround, allerdings nur, wenn meine Tests zu ähnlichen Problemen führen.
Quote:
Originally Posted by Greekgod View Post
Blitz/Kettenblitzzauberin,

Code:
    MWConfig_Script.push(["NTCountess.ntj", 10]); MWConfig_ClearCountessRooms = false;
    MWConfig_Script.push(["NTNihlathak.ntj", 10]); NTConfig_PindleskinExtension = true; MWConfig_SkipOnTombVipers = true;
    MWConfig_Script.push(["NTSummoner.ntj", 10]); NTConfig_KillFireEye = true;
    MWConfig_Script.push(["NTAndariel.ntj", 10]);
    MWConfig_Script.push(["NTMephisto.ntj", 10]); MWConfig_OpenMephistoChest = true; MWConfig_MephistoClearArea = false;
    MWConfig_Script.push(["MWSewers.ntj", 10]);    
    MWConfig_Script.push(["NTPit.ntj", 10]); MWConfig_ClearPathToPit =  false; NTConfig_ClearPitLevel1 = 2; // 0 : don't clear, 1 : clear path  only, 2 : clear all
    MWConfig_Script.push(["NTDuriel.ntj", 10]); MWConfig_ClearPathToDuriel = true;
    MWConfig_Script.push(["NTGlacialTrail.ntj", 10]); NTConfig_ClearGlacialTrail = true;
    //MWConfig_Script.push(["NTCows.ntj", 20]);
    //MWConfig_Script.push(["NTDiablo.ntj", 10]); MWConfig_StartAtStar = true; // false: start at entrance, true: start at star
    MWConfig_Script.push(["NTBaal.ntj", 10]); NTConfig_KillBaal = true;  MWConfig_SkipBaalOnDolls = true; MWConfig_SkipBaalOnSouls = false;
    //MWConfig_Script.push(["MWWorldstoneKeep.ntj", 10]);  MWConfig_SkipLevelOnWitches = true; MWConfig_SkipLevelOnSouls = true;  MWConfig_SkipLevelOnDeathLords = true;
Cows, Dia und WSK auskommentiert weil ich das Gefühl hatte dass es tendenziell bei den Runs öfter passiert. War aber ne Fehleinschätzung scheinbar
Also mit meiner laufenden Version lag ich gestern bei Orb/FB Sorc, 2xHammerdin und Summoner bei ~2 Restarts auf 30 Runs, wobei ein Spiel ~40Minuten dauert.
Insofern würde ich ausschließen, dass hier irgendwelche systematischen Fehler vorliegen, die eine erhöhte Restart Quote zur Folge haben - jedenfalls was meine laufende Version angeht, die natürlich schon wieder etwas weiter ist, als die veröffentlichte.

Nur bei meinem MF Barb habe ich noch massive Probleme mit Restarts.
Das waren gestern ~18 Restarts auf gut 30 Spiele, wobei auch hier ein Spiel 40-45Minuten dauert.
Das ist definitiv viel zu viel. Dummerweise konnte ich aber die Ursache noch nicht ermitteln, auch wenn ich die betroffenen Funktionen schon weiter optimiert habe, um beispielsweise den Zugriff auf undefinierte Objekte zu verhindern (letzteres hat immer einen Ausnahmefehler zur Folge).
Hättest du also einen Barb, wäre das Problem aus meiner Sicht nachvollziehbar gewesen. So ist es eher schwierig...

Kontrollier mal sicherheitshalber deine Char Config auf kleinere Syntaxfehler.
So Dinge wie vergessene Semikola haben gerne zur Folge, dass die Restartquote stark ansteigt.
Ansonsten bin auch leider auch etwas überfragt, würde allerdings eher nicht vermuten, dass einzelne Botskripte dies auslösen, es sei denn sie sind schlampig geschrieben und enthalten ebenfalls kleinere Syntaxfehler.

Lg
Muddy
Muddy Waters is offline  
Reply


Similar Threads Similar Threads
[Release] D2NT 3.1 1.13c
07/17/2016 - Diablo 2 - 91 Replies
hi, hab eben den d2nt3.1 gefunden. ein neues baba script is dabei. release thread eon D2NT3.1
[Realease] Muddy's Waypoint Catcher
08/21/2013 - Diablo 2 Programming - 46 Replies
Moin zusammen, hier mal die erste Release Version eines kleinen Scripts genannt Waypoint Catcher. Das ganze ist jetzt nichtmal 24h alt, dementsprechend sind vermutlich noch einige Bugs vorhanden. Hinweise dazu nehme ich gerne entgegen. ;) Features: - Suchen sämtlicher Wegpunkte mit Ausnahme, wobei in Akt ein durch Probleme im Jail Bereich nach dem Wegpunkt Outer Cloister abgebrochen wird - Wahlweise auch mit TP an jedem gefundenen Wp, sodass man damit auch anderen (nicht-Bots) die...
[D2NT] Long Dia Release
05/10/2011 - Diablo 2 Programming - 28 Replies
Ein kleines Script für diablo, es startet beim eingang macht ein tp cleart den weg zum star macht am star noch ein tp dann läufts wie das normale nur cleart es schöner :) hoffe euch gefällts ich habs noch nicht wirklich getestet (2-3 runs) bugs können gerne hier gepostet werden verbesserungs vorschläge auch :D installation: 1.)Script in den Bot ordner kopieren 2.)Script im editor oder vergleichbaren öffnen 3.) Msg´s anpassen (ist nicht schwer) 4.) in der char config die zeile...
D2NT 3.0 Pickit release
10/22/2010 - Diablo 2 - 77 Replies
edit
Muddy's D2NT Help
07/29/2010 - Diablo 2 - 3 Replies
hi i just started to use the bot it work's great. how do i set up the skill's i use on my Sorc and pick up itme's? ..... if you reply to this post please use english



All times are GMT +1. The time now is 15:53.


Powered by vBulletin®
Copyright ©2000 - 2025, 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 ©2025 elitepvpers All Rights Reserved.