Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2 > Diablo 2 Programming
You last visited: Today at 07:34

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

Advertisement



[Project] Baal Wave 2 Party Leaver

Discussion on [Project] Baal Wave 2 Party Leaver within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
eXoo~'s Avatar
 
elite*gold: 0
Join Date: Dec 2010
Posts: 73
Received Thanks: 12
Lightbulb [Project] Baal Wave 2 Party Leaver

Da keiner der Leecher, die meinen Public Baal Runs folgen, auf die Idee kommt bei der zweiten Baalwelle die Party zuverlassen um den Expbug zu vermeiden, muss ich dieses Problem wohl nun selber in die Hand nehmen.
Umsetzbar ist das Ganze meiner Meinung nach schon, nur habe ich noch nicht mit dem Schreiben begonnen :P

Folgenden Funktionen sollen erfüllt werden:
Following Leecher, aktiv sowie passiv, soll bei einer Partygrösse von 8 Spielern bei der zweiten Baalwelle die Party verlassen und erst zum Spawn der dritten Welle wieder der Party beitreten.
Der Effekt von einem Autopartyplugin aus Redvex soll negiert werden während der zweiten Welle.

Ideen etc sind willkommen

Ich halte euch auf dem Laufenden
eXoo~ is offline  
Old 12/21/2011, 03:16   #2
 
elite*gold: 0
Join Date: Oct 2009
Posts: 798
Received Thanks: 165
Den EXP-Bug gibt es schon seid Jahren nichtmehr!
Talltree is offline  
Old 12/21/2011, 07:16   #3
 
eXoo~'s Avatar
 
elite*gold: 0
Join Date: Dec 2010
Posts: 73
Received Thanks: 12
Quote:
Originally Posted by Talltree View Post
Den EXP-Bug gibt es schon seid Jahren nichtmehr!
Deshalb bekommen meine Chars 10 Exp bei der zweiten Wave
eXoo~ is offline  
Old 12/21/2011, 08:37   #4
 
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
Muss er die Party unbedingt verlassen oder reicht es, wenn er Town geht? Wäre um einiges einfacher zu realisieren...

Den Leecher, der in die Town geht, muss man vorher in der Config festlegen, wenn man das dynamisch macht, kann es sein, dass dann eben einer der Leecher ausgewählt wird, die nicht darauf reagieren!

Hier mal meine schnelle Lösung, ich habe es mal so gelöst, dass der Leecher das Leaderportal verwendet, man kann es aber einfach umschreiben, dass ein eigenes gemacht wird):

In der NTConfig.ntl eine neue Variable definieren:
Code:
var MWConfig_BaalLeavePartyWave2;
In der Config des Leechers, der in die Stadt soll:
Code:
	MWConfig_Script.push(["NTBaalLeechFight.ntj", 10]); NTConfig_KillBaal = true; MWConfig_DoBaalPreAttack = true; MWConfig_EnterUnsafeTP = true; NTConfig_Leader = "LeaderNameGoesHere"; [B]MWConfig_BaalLeavePartyWave2 = true;[/B]
In der NTBaalLeechFight.ntj:
Code:
		switch(_wave)
		{
			case 1:
				NTA_ClearPosition(40, true, 1);
				break;
			[B]case 2:
				if(MWConfig_BaalLeavePartyWave2 && CountPartyMembers() == 8)
				{
					NTM_UsePortal("BluePortal", 109, NTConfig_Leader);
					Delay(10000);	// Wait in town
					NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
				}
				else
					NTA_ClearPosition(40, true, 1);
				break;[/B]
			case 3:
				NTA_ClearPosition(40, true, 2);
				NT_CheckHydraInt();
				break;
			case 4:
				NTA_ClearPosition(40, true, 2);
				break;
			case 5:
				NTA_ClearPosition(40, true);
				break;
			default:
				NTA_ClearPosition(40, true, 1);
				break;
		}
und die neue Funktion CountPartyMembers() am Ende der NTBaalLeechFight.ntj einfügen (schöner wäre es natürlich die Funktion mit entsprechender Namensanpassung in die NTCommon.ntl einzufügen...):
Code:
function CountPartyMembers()
{
	var _player, _count;
	
	_player = GetPlayerUnit();
	
	_count = 0;
	
	if(_player)
	{
		do
		{
			if(NTC_InMyParty(_player.name))
				_count++;
		} while(_player.GetNext());
		
		print("ÿc3Current party members: ÿc2" + _count); // Testausgabe
		
		return _count;
	}
	
	return false;
}
PS: Da ich heute keine Möglichkeit zum Testen habe und die Funktion GetPlayerUnit() nicht kenne, bitte die Testausgabe hier posten, damit ich weiß, ob bei einer vollen Party 7, 8 oder gar mehr Werte ausgelesen werden.
TheCrazy11 is offline  
Thanks
2 Users
Old 12/21/2011, 12:25   #5
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,727
Received Thanks: 12,652
Die Funktion passt fast, du solltest nur zwei Punkte beachten:
  1. GetPlayerUnit() gibt eine einfach verkettete Liste von Party Objekten zurück, wobei der Pointer zunächst immer auf ein Objekt zeigt, welches sich auf den gesteuerten Charakter bezieht. Darum sollte statt einer do...while- eine while-Schleife eingesetzt werden, damit dieses Objekt gar nicht erst in die Betrachtung mit einfließt.
  2. Deine Funktion gibt keine konsistenten Typen zurück. Nicht dass das in JS grundsätzlich ein Problem wäre, irgendwo sind schließlich alle Typen dynamische Objekte, aber es macht für diese Funktion eigentlich keinen Sinn, der Rückgabewert sollte immer vom Typ Number sein.

Sähe dann also so aus:
Code:
function CountPartyMembers()
{
	var _player, _count;
	
	_player = GetPlayerUnit();
	
	_count = 0;
	
	if(_player)
	{
		while(_player.GetNext())
		{
			if(NTC_InMyParty(_player.name))
				_count++;
		}
	}
	
	print("ÿc3Current party members: ÿc2" + _count); // Testausgabe
		
	return _count;
}
Achja, die Sache mit dem Party verlassen klappt meines Wissens nach mit D2NT nicht, die Core Funktionen werfen bei entsprechenden Parametern reproduzierbar Exceptions und D2 schmiert ab. Somit ist dieser Workaround zumindest auf D2NT bezogen die einzige Alternative.
Muddy Waters is offline  
Thanks
2 Users
Old 12/21/2011, 13:44   #6
 
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
Danke für dein Feedback, ich bin halt doch kein Programmierer!
  1. Achso, ich bin davon ausgegangen, dass mit dem Aufruf GetPlayerUnit() gleich das 1. Party Objekt ausgewählt wird und nicht erst die "Übersicht" der Party Objekte.
    Diese Vermutung habe ich durch das Durchlesen der Funktion NTC_InMyParty(playerName) aufgestellt.
    Deswegen habe ich extra die do..while-Schleife gewählt, dass dieses 1. Objekt nicht übersprungen wird.
  2. Stimmt, da war ich schlampig, was auf meinen Zeitdruck zurückzuführen ist, hatte eine Besprechung und musste dafür noch was fertig machen...
    (Sieht man auch an der jetzt richtigen Position der Testausgabe in deiner Variante! )

An das Verlassen der Party habe ich jetzt gar nicht gedacht, da er ja Redvex Autoparty erwähnt hat und ich damit gar keine Erfahrung habe.
TheCrazy11 is offline  
Old 12/21/2011, 13:57   #7
 
eXoo~'s Avatar
 
elite*gold: 0
Join Date: Dec 2010
Posts: 73
Received Thanks: 12
Jezz muss ich ja noch nichmal mehr damit anfangen

Habs mal reingeschmissen und mir ist aufgefallen, dass der Bot sich selber nicht als Partymember mitzählt...
also entweder:

Code:
case 2:
				if(MWConfig_BaalLeavePartyWave2 && CountPartyMembers() == [COLOR="Red"]7[/COLOR])
				{
					NTM_UsePortal("BluePortal", 109, NTConfig_Leader);
					Delay(10000);	// Wait in town
					NTM_UsePortal("BluePortal", 131, NTConfig_Leader);
				}
oder noch ein +1 in die Function einbauen
eXoo~ is offline  
Old 12/21/2011, 14:42   #8
 
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
Genau deswegen habe ich in meinem Beitrag ganz unten das dazugeschrieben:
Quote:
Originally Posted by TheCrazy11 View Post
PS: Da ich heute keine Möglichkeit zum Testen habe und die Funktion GetPlayerUnit() nicht kenne, bitte die Testausgabe hier posten, damit ich weiß, ob bei einer vollen Party 7, 8 oder gar mehr Werte ausgelesen werden.
Funktioniert es sonst?
TheCrazy11 is offline  
Old 12/21/2011, 15:13   #9
 
eXoo~'s Avatar
 
elite*gold: 0
Join Date: Dec 2010
Posts: 73
Received Thanks: 12
Quote:
Originally Posted by TheCrazy11 View Post
Genau deswegen habe ich in meinem Beitrag ganz unten das dazugeschrieben:


Funktioniert es sonst?
Jop, tut es
Nur das mit dem Towndelay werd ich noch ändern, jenachdem wielang die zweite Welle dauert ist der Leecher manchmal zuschnell/zulangsam.
Werds wohl auf ein extra Leaderaccouncement umstellen sobald ich Zeit finde
eXoo~ is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
Suche Script line für Baal Party @ D2NT
04/25/2011 - Diablo 2 - 4 Replies
Hat jemand ne Script line bei der der bot wenn baal an der reihe ist die "party leavt" und einen bestimmten spieler einlädt?
Autoshare Party Project
12/13/2010 - Silkroad Online - 3 Replies
What you need: -Silkroad experience -Bot (Sbot/mBot) -hold your character only 24/7 -you should be aktiv -well english skills or german =) Server: Aral
Autoshare Party Project##
12/13/2010 - Silkroad Online - 26 Replies
Hello Community most of you know the videos from Mx which done 60+ in some days. Yea Party lvling is very funny and fast. But hard to find people for partys. Here i wanna search guys which are interested in Party Lvling (1-110). I already tried to do so a party with 2 friends. I had 4 chars, my friends each 2. But it didint worked caus we were not enough players to do it. We often died and Its hard for my pc to hold 4 clients 24/7 online. Becaus of this i wanna search here some nice people...
Baal Leeech bot bleibt nach baal kill im game
06/17/2010 - Diablo 2 - 3 Replies
hey leute hab en problem mit meinem leechbot, also ich leeche dia&baal und kämpfe auch mit aber nachdem baal gelegt wurde bleibt der bot einfach im game und tut nichts kann mir vll jemand weiter helfen?
baal runs (assa)ntbot ohne baal
01/22/2010 - Diablo 2 - 2 Replies
also ich mach 20 games gestern hatte bei 57 aufgehört nur baal diener 1game login 11 27 33 sec game offen 11 27 53 sec 20 games! 12 :33:47



All times are GMT +1. The time now is 07:37.


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.