Hostile-Killer

05/25/2011 12:26 -Nemesis1337-#1
Hi Leute, ich würde gerne einen kleinen Beitrag zum Anti-Hostile beitragen.

Und zwar hab ich wieder ne verrückte Idee :D
Würde gerne ein kleines Addon schreiben welches bei Hostile andere monster ignoriert und nur auf den Hostiler Jagd macht.

Nur weiß ich nicht recht wie man hiermit:

Code:
function NTA_KillMonster(classid)
{
	var _target;

	if(NTConfig_AttackSkill[1] < 1)
		return false;

	_target = NTC_FindUnit(NTC_UNIT_PLAYER = 0);

	if(!_target)
		return false;

	if(_target.IsAttackable())
	{
		var _attackcount = 0;

		while(_attackcount < 300 && NTA_IsValidMonster(_target))
		{
			if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
				break;

			_attackcount++;
		}
	}

	return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 12);
}
arbeiten kann und vor allem: Wo steht eig. die Funktion für "if Hostile then leave game?"
Das könnt ich ja theoretisch dran knüpfen.

Ich brauch auch noch eure Meinung, ob es Sinn macht den Bot nur z.b. nach Playern suchen zu lassen wo er gerade ist (CS Stern, Thronsaal) oder z.b. beim CS dem Hostiler zum WP entgegen zu telen bzw. im Thronsaal zum Eingang.
Und die meisten Hostiler machen das ja in der Town wenn man im Shop is und stellen sich ans WP. Wär eig. clever den Hostiler dann per "take ancients wp and goto WST lv 2 Wp to kill Hostiler" anzugreifen?


Dieses Script soll eig. mal ne Gegenoffensive sein und auch eher zum ärgern jener^^
Weil mir sonst nix gescheites einfällt.
05/26/2011 22:58 tonk1#2
Ich glaub der Kukbot hat diese Funktion.
Der betrachtet dann hostile Spieler als Monster.
Ich würde aber trotzdem eher 2 Keys verwenden und den Bot schnell ng öffnen lassen.
Irgendwann wird ihnen das langweilig.
Gegen gute Spieler kann ein Bot eh nichts machen. :D

Lieber den Bot leistungsfähiger machen -> mehr Runs -> mehr Items -> schneller bereit für PvP -> :D

An sich aber ne lustige Idee für den NT-Bot. :)

Edit: "Bekämpfe nicht das Böse, sondern kämpfe für das Gute". :D
05/27/2011 11:40 -Nemesis1337-#3
Nja deswegen die Idee mit dem "Entgegentelen" das erwartet kein Hostiler, die versuchen dann immer vor Baal am Thron zu killen, aber erwarten net das der Bot z.b. im Thron der Zerstörung am Eingang steht und darauf wartet das der Hostiler von lv 3 den Zugang nimmt-> Schwupp landet er direkt in den Hämmern^^

Dagegen kann auch nen Elitespieler nix machen.
05/27/2011 16:36 tonk1#4
Scheint dir ja ernst zu sein. Ich guck mal'n bisschen rum. :D

Edit: Ich bin mal ein paar Dateien durchgegangen. Hab aber nix gefunden. Kann auch sein, dass ich's übersehen hab. Wenn nicht, würde ich sagen, dass die Funktion für me.quitonhostile im "Kern" von D2NT liegt und auf den kann man nicht so einfach zugreifen. :(
Wenn ich mich da irre, dann, liebe Leser dieses Beitrags, korrigieret mich. :D
05/27/2011 21:09 -Nemesis1337-#5
In Lanaras D2NT gibts nen AntiHostile Script wie ich gesehen hab, jedoch versuch ich das mal zu verbessern und es vllt. sogar als PVP Script einsetzen zu können.
Wär bestimmt recht interessant^^
05/28/2011 15:58 tonk1#6
Zeig mal das Script.
Würd mich ehrlich gesagt interessieren, wie das läuft. :D
05/28/2011 18:36 DonPalme#7
gibts im blizzhackers schon von kloton. jedoch is der bot recht doof/kann leicht ausgetrickst werden. wenn mans mit hammer nutzt telt er einfach stur drauf. nen guter human player kann ich also einfach trappen ;)
05/29/2011 19:09 -Nemesis1337-#8
Also ich komm echt net mehr weiter :(
Hab jetzt 4h rumprobiert und nix hilft.

Hab das Hostilescript in den Maphack von D2NT eingebunden.

Das sieht dann so aus:
[Spoiler]
Code:
RegisterEvent(EVENT_GAMEMSG, NT_GameMsgEvents);
var dumbass;

function NTMain()
{
	Delay(1000);
	
   Include("libs/common/NTCommon.ntl");
   NTC_IncludeLibs();
   NTC_IncludeConfig("NTBot/char_configs");

   NT_LoadConfig();
   
	var _count = 0;
	var _LifeMax, _ManaMax;
	var _player, _mypartyid;

	SetStatusText("NTMap 1.2.1 - " + me.gameserverip);

	RegisterEvent(EVENT_KEYDOWN, NT_KeyEvents);

	SetUIState(0x0A, true);

	_LifeMax = me.hpmax;
	_ManaMax = me.mpmax;

	if(NTConfig_LifeChicken > 0)
		me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);

	if(NTConfig_ManaChicken > 0)
		me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);

		Print("ÿc9Anti-hostile v1");
		
	while(1)
	{
		if(!NTC_InTown())
		{
			if(_LifeMax != me.hpmax)
			{
				_LifeMax = me.hpmax;

				if(NTConfig_LifeChicken > 0)
					me.chickenhp = parseInt((_LifeMax*NTConfig_LifeChicken)/100);
			}

			if(_ManaMax != me.mpmax)
			{
				_ManaMax = me.mpmax;

				if(NTConfig_ManaChicken > 0)
					me.chickenmp = parseInt((_ManaMax*NTConfig_ManaChicken)/100);
			}
		}

		NTC_Delay(100);
		if(dumbass)
		{
			var unit = NTC_FindUnit(NTC_UNIT_PLAYER, dumbass);
			if(unit)
			{
				if(GetDistance(me.x, me.y, unit.x, unit.y) < 40 && me.areaid != 1  && me.areaid != 40 && me.areaid != 75 && me.areaid != 103 && me.areaid != 109)
					if(!NTA_KillDumbass(dumbass))
						NTC_Delay(100);
			}
		}
		NTC_Delay(200);
	}
}

function NT_GameMsgEvents(msg, type)
{
	if(!me.quitonhostile)
	{
      var _line = "hostility";

      if(msg.indexOf(_line) > -1)
      {
         var part = msg.split(" ");
         var player = part[0];
         Delay(250);
         Say(player + " is about to die.");
         dumbass = player;
      }
	}
	else
	{
		var _line = "hostility";

      if(msg.indexOf(_line) > -1)
      {
         var part = msg.split(" ");
         var player = part[0];
         Delay(250);
         Say("Go kill yourself " + player + ".");
         ExitGame();
      }
	}
}

function NTA_KillDumbass(name)
{
   var _target;

   if(NTConfig_AttackSkill[1] < 1)
      return false;

   _target = NTC_FindUnit(NTC_UNIT_PLAYER, name);

   if(!_target)
      return false;

   if(_target.IsAttackable())
   {
      var _attackcount = 0;

      while(_attackcount < 600 && NTA_IsValidTarget(_target))
      {
         if(NTA_Attack(_target, (_attackcount%30) == 0) < 2)
            break;

         if(me.classid == 1 && GetDistance(me.x, me.y, _target.x, _target.y) < 5)
         {
            var offx = [-15, -10, 10, 15];
            var offy = [-15, -10, 10, 15];
            var i = Random(1, 4);
            NTM_MoveTo(me.areaid, me.x+offx[i], me.y+offy[i]);
         }
         
         _attackcount++;
      }
   }
      
   return (_target.hp <= 0 || _target.mode == 0 || _target.mode == 17);
}

function NTA_IsValidTarget(target)
{
   if(target.mode == 17 || target.mode == 0 || target.areaid == 1 || target.areaid == 40 || target.areaid == 75 || target.areaid == 103 || target.areaid == 109)
      return false;

   return true;
}

function NT_KeyEvents(keycode)
{
	switch(keycode)
	{
	case 109: // show or hide enemy - keypad '-'
		if(me.showenemyonautomap)
		{
			me.showenemyonautomap = false;
			Print("Enemy on Automap : Off");
		}
		else
		{
			me.showenemyonautomap = true;
			Print("Enemy on Automap : On");
		}
		break;
	case 107: // show or hide missile - keypad '+'
		if(me.showmissileonautomap)
		{
			me.showmissileonautomap = false;
			Print("Missile on Automap : Off");
		}
		else
		{
			me.showmissileonautomap = true;
			Print("Missile on Automap : On");
		}
		break;
	}
}
[Spoiler]

Problem[1]: Der Hammerdin telt zwar wunderbar und nutzt auch die Konzentrations Aura, aber ich möchte das er zum (_target.x, _target.y)
noch etwas hinzufügt, damit er sich vor die Position des Gegners teleportiert.

Problem[2]: Auto Reveal Map geht plötzlich net mehr O.o
Problem[3]: Die Sorc bleibt einfach nur stehen und schießt mitn LeftSkill auf den Gegner aber telt net hin... gleiche Einstellungen wie Pala nur mit IceBlast als AttackSkill[1]

Help pls :(

Credit to Lanara 4 Hostile Script.
05/30/2011 22:30 Muddy Waters#9
Zu [1]:
Da hier lediglich die Unit des Ziels übergeben wird, müsstest du das direkt im Angriffsalgorithmus des Paladins ändern - hier hast du darauf keinen Zugriff.

Zu [2]:
Wie auch, wenn me.revealautomap nirgendwo auf true gesetzt wird. :rolleyes:

Zu [3]:
Was heisst "telt nicht hin?

LG
Muddy

P.S.: Ich glaube kaum, dass lanara das geschrieben hat, dazu ist der Programmierstil viel zu unsauber.
05/30/2011 23:54 -Nemesis1337-#10
Quote:
Originally Posted by Muddy_Waters View Post
Zu [1]:
Da hier lediglich die Unit des Ziels übergeben wird, müsstest du das direkt im Angriffsalgorithmus des Paladins ändern - hier hast du darauf keinen Zugriff.
Schaaaaade

Quote:
Originally Posted by Muddy_Waters View Post
Zu [2]:
Wie auch, wenn me.revealautomap nirgendwo auf true gesetzt wird. :rolleyes:
War vorher au net in der Datei drin, nur im config auf true, was immernoch is^^ hab nurs autoparty rausgelöscht weils probleme gemacht hat.


Quote:
Originally Posted by Muddy_Waters View Post
Zu [3]:
Was heisst "telt nicht hin?
Naja sie bleibt nur auf der Stelle stehen und beschießt den Feind sobald er im Bild ist mit leftSkill, aber sie soll sich halt wie der Hdin an den Fein telen und dann leftskill casten^^


Quote:
Originally Posted by Muddy_Waters View Post
P.S.: Ich glaube kaum, dass lanara das geschrieben hat, dazu ist der Programmierstil viel zu unsauber.
Nja auf jeden Fall is die Datei Hostile.ntl im LanaraBot zu finden^^