Register for your free account! | Forgot your password?

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

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

Advertisement



Buhuhuhu ich programmiere so schlecht ...

Discussion on Buhuhuhu ich programmiere so schlecht ... within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: May 2011
Posts: 66
Received Thanks: 7
Buhuhuhu ich programmiere so schlecht ...

Ich komm grad mal wieder nicht weiter bei meinen Problemen ....
Momentan lasse ich 3 Bots im selben Spiel laufen. Ich möchte, dass meine Leecher vor Skriptbeginn erstmal abfragen ob der Leader noch am aktuellen Skript ist. Es passiert von Zeit zu Zeit, dass die Bots nichtmehr Synchron laufen und im schlimmsten Fall passierts, dass ein Bot in einem Spiel hängen bleibt und nichts passiert.

Grundsätzlich: ich benutze Bluebirds Version des D2NT.

Ich habe nun beispielsweise folgendes im Dialeechskript eingebaut:

Code:
NTConfig_Leader = "shoooopp";
scheffe = GetPlayerUnit(NTConfig_Leader);
if (scheffe.areaid >= 109)
{
  NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
Allerdings tut sich rein garnichts, vollkommen egal wo der Leader steht.
Was habe ich wieder übersehen / falsch gemacht ?

Danke schonmal.
whoranzone123 is offline  
Old 04/23/2012, 00:30   #2
 
Northern Light's Avatar
 
elite*gold: 0
Join Date: Oct 2011
Posts: 688
Received Thanks: 130
use muddys
Northern Light is offline  
Old 04/23/2012, 19:49   #3
 
elite*gold: 0
Join Date: May 2011
Posts: 66
Received Thanks: 7
Und wo genau muss ich das jetzt im Programmcode einfügen ?

:P

Ja das habe ich mir auch schon überlegt... Das Problem ist nur, dass ich bei meinem Bot mittlerweile so viel "entwickelt" (seis verändert oder einfach nur verschlechtert ^^) habe, dass es wohl erstmal wieder eine Weile dauern wird bis Muddys bei mir so läuft wie ich das gerne hätte ^^
whoranzone123 is offline  
Old 04/24/2012, 17:15   #4
 
elite*gold: 0
Join Date: Jun 2010
Posts: 462
Received Thanks: 125
deklarier mal die variable
Stibi is offline  
Old 04/24/2012, 19:41   #5
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
Die fehlende Deklaration ist nicht das Problem, sofern diese fehlt, wird die Variable implizit als global deklariert. Obwohl du recht hast, anständige, explizite Deklarierungen sind sauberer, weil sie klarere Verhältnisse schaffen und daher grundsätzlich vorzuziehen.

Woher weißt du, dass GetPlayerUnit Argumente akzeptiert? Das wird eigentlich in sämtlichen standard Libraries zu Fuß gelöst, darum wäre ich mir nicht so sicher, ob die Funktion Selektoren annimmt. Aber wenn sie dies tut, dann ist der Vergleich definitiv case sensitive - ein Grund mehr, das ganze besser zu Fuß über eine geignete Funktion zu machen. Lass dir am besten mal scheffe ausgeben und stell sicher, dass es sich dabei um ein valides Objekt handelt.
Muddy Waters is offline  
Thanks
1 User
Old 04/25/2012, 00:18   #6
 
elite*gold: 0
Join Date: May 2011
Posts: 66
Received Thanks: 7
Quote:
Originally Posted by Muddy Waters View Post
Die fehlende Deklaration ist nicht das Problem, sofern diese fehlt, wird die Variable implizit als global deklariert. Obwohl du recht hast, anständige, explizite Deklarierungen sind sauberer, weil sie klarere Verhältnisse schaffen und daher grundsätzlich vorzuziehen.

Woher weißt du, dass GetPlayerUnit Argumente akzeptiert? Das wird eigentlich in sämtlichen standard Libraries zu Fuß gelöst, darum wäre ich mir nicht so sicher, ob die Funktion Selektoren annimmt. Aber wenn sie dies tut, dann ist der Vergleich definitiv case sensitive - ein Grund mehr, das ganze besser zu Fuß über eine geignete Funktion zu machen. Lass dir am besten mal scheffe ausgeben und stell sicher, dass es sich dabei um ein valides Objekt handelt.
Die Variable ist deklariert.
Dass GetPlayerUnit Argumente akzeptiert wusste ich nicht, allerdings fand ichs seltsam dass es leere Klammern nach der Funktion gibt und dachte dass der Nick eines Spielers da am meisten Sinn machen würde ^^
Was bedeutet zu Fuß ?

Und vielleicht noch wichtiger: Was muss ich tun um mir die Variable ausgeben zu lassen ?

Ich dachte ich hatte mal eine Beschreibung irgendwo (vielleicht auch hier im Forum...) zu der Funktion gefunden. Inklusive aller Eigenschaften wie .areaid usw. allerdings habe ich die Erklärung nichtmehr gefunden als ich da rumgebastelt habe
whoranzone123 is offline  
Old 04/25/2012, 12:40   #7
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
Mit solchen Annahmen wäre ich vorsichtig, vor allem wenn du noch nichtmal eine Ahnung hast, wie du denn Überprüfen kannst, ob deine Vermutung stimmt.

Zum Thema Ausgabe:
Gemeint ist eine simple Ausgabe auf die Konsole, nicht mehr und nicht weniger.

Code:
Print("Leader: " + scheffe);
Sofern scheffe definiert ist, würde der Rückgabewert von scheffe.toString() ausgegeben; ist scheffe nicht definiert dann undefined oder in diesem Fall vielleicht auch null.

Und zu Fuß heißt hier schreib dir eine Funktion, in der du die mit GetPlayerUnit() angeforderte (einfach verkettete) Liste von Objekten durchläufst und gib bei einer Übereinstimmung den Pointer aufs aktuelle Objekt zurück, oder sofern dieses nicht gefunden werden kann, eben den Nullpointer.

Das ist schnell gemacht, funktioniert sicher und sieht dann in etwa so aus:
Code:
function GetLeaderUnit(name)
{
	var _unit = GetPlayerUnit();
	
	while(_unit && _unit.GetNext())
	{
		if(_unit.name.toLowerCase() == name.toLowerCase())
			return _unit;
	}

	return null;
}
Muddy Waters is offline  
Reply


Similar Threads Similar Threads
Game programmiere
01/25/2011 - S4 League - 12 Replies
Hi ich suche leute die mit mir ein änhliches psiel wie s4 entwickeln.wer macht mit?
Wie programmiere ich einen Bot
02/02/2010 - General Coding - 27 Replies
Ich würde gerne einen Bot für ein 3d mmorpg Programmieren, Programmierkenntnisse sind bedingt in Java & C vorhanden. Leider hab ich keine Ahnung wie ich am besten vorhehen soll , der Bot soll mir in dem game standartaufgaben wie jagen usw. abnehmen. Um es genau zu sagen geht es dabei um das kostenlos game pe, und mein bot soll für mich "sweaten", weil das so ziemlich die stupideste Tätigkeit ist die man sich vorstellen kann, jedoch leider die einzige um in dem game Geld zuverdienen, ohne...



All times are GMT +2. The time now is 01:46.


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