Register for your free account! | Forgot your password?

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

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

Advertisement



script.push innerhalb eines botscripts?

Discussion on script.push innerhalb eines botscripts? within the Diablo 2 Programming forum part of the Diablo 2 category.

Reply
 
Old   #1
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
script.push innerhalb eines botscripts?

Moin,

wollte mal fragen ob man irgendwie in einer funktion innerhalb eines botscripts ein script.push reinbekommt? dann könnte man nämlich wenn z.B. baal geskippt wird dafür ein anderes script ausführen, damit die gametime wieder passt.
geht sowas? immoment hab ichs so das das aktuelle script einfach beendet wird, das klappt auch wunderbar.

lg,
jules
JulesWinnfiled is offline  
Old 10/31/2010, 02:34   #2
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Du kannst doch einfach die maxgametime so setzen, dass er halt nach x minuten aufhört? Oder geht's darum, dass du verhindern willst, dass er mitten in nem script aufhört?
ldevil is offline  
Thanks
1 User
Old 10/31/2010, 07:53   #3
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
nein, es geht darum das wenn z.B. baal geskippt wird dafür diablo gemacht wird, also anstatt "SCRIPT_END" gleich ein anderes script ausgeführt wird, auch wenn es kein nächstes script in der config file mehr gibt und das game somit beendet werden würde.

hoffe du verstehst was ich meine... ein botscript direkt aus einem anderen ausführen, ohne das es in dem config file steht.

noch ein beispiel damit es wirklich klar ist:
baal wird ausgelasse weil monster 690 oder 691 gefunden wurden -> normalerweise wäre hier jetzt exit wenn baal das einzige script ist das in der config steht -> es soll aber falls baal geskippt wird, und nur dann, das diablo script ausgeführt werden damit die zeit pro game nicht so niedrig ist.

lg,
jules
JulesWinnfiled is offline  
Old 10/31/2010, 13:44   #4
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Du kannst ganz einfach statt "SCRIPT_END" ein "NEXT_SCRIPT" übergeben und dafür ne neue Routine definieren
ldevil is offline  
Thanks
1 User
Old 10/31/2010, 13:59   #5
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
und wie sähe das dann aus?
statt
NTC_SendMsgToScript("MWBotGame.ntj", "SCRIPT_END");
dann
NTC_SendMsgToScript("MWBotGame.ntj", "NEXT_SCRIPT");
MWConfig_Script.push(["NTDiablo.ntj", 5]);

so irgendwie?
JulesWinnfiled is offline  
Old 10/31/2010, 17:10   #6
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Also im Script selber, da wo er abbricht / skipped:

Code:
NTC_SendMsgToScript("MWBotGame.ntj", "NEXT_SCRIPT");
und im MWBotGame.ntj

Code:
case "NextScript":
	MWConfig_Script.push(["NTDiablo.ntj", 5]);
	if(++CurScriptIndex < NTConfig_Script.length)
	{
		if(NTConfig_ShowGoldPickupsPerScript)
		{
			if(GoldPerScript > 0)
				Print("ÿc8Picked " + (GoldPerScript/1E3).toFixed(1) + "k gold running ÿc;" + NTConfig_Script[CurScriptIndex-1]);
			
			GoldPerScript = 0;
		}
		NTTM_CheckAct();
		Load("NTBot/bots/" + NTConfig_Script[CurScriptIndex]);
		SetStatusText("ÿc2Running ÿc4" + NTConfig_Script[CurScriptIndex]);
	}
	else
		LastScript = true;
	break;
Denke, das sollte so klappten. Aber ist ungetestet.
ldevil is offline  
Thanks
1 User
Old 10/31/2010, 23:02   #7
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
danke!
leider bekomm ich immer einen syntax error in zeile 215 (rot markiert) wenn das script geladen wird.
Code:
	else if(NTC_FindUnit(NTC_UNIT_MONSTER, 690, 3))
		Print("ÿc1Dollhouse! Lassen wir mal lieber...");
		NTC_SendMsgToScript("MWBotGame.ntj", "NEXT_SCRIPT");
	[COLOR="Red"]else if(NTC_FindUnit(NTC_UNIT_MONSTER, 691, 3))[/COLOR]
		Print("ÿc1Dollhouse! Lassen wir mal lieber...");
		NTC_SendMsgToScript("MWBotGame.ntj", "NEXT_SCRIPT");
so hab ichs eingetragen, ausserdem hab ich NEXT_SCRIPT als case in die MWBotgame eingetragen und zwar direkt unter dem SCRIPT_END case, als neuen case, das macht auch keine probleme, andere scripts laufen normal durch.

was mich auch wundert das erst beim 2. else if der syntax error kommt

ideen?

lg,
jules
JulesWinnfiled is offline  
Old 11/01/2010, 18:03   #8
 
elite*gold: 0
Join Date: Jul 2006
Posts: 469
Received Thanks: 235
Du hast die {} vergessen

Code:
	else if(NTC_FindUnit(NTC_UNIT_MONSTER, 690, 3))
	{	Print("ÿc1Dollhouse! Lassen wir mal lieber...");
		NTC_SendMsgToScript("MWBotGame.ntj", "NEXT_SCRIPT");
	}else if(NTC_FindUnit(NTC_UNIT_MONSTER, 691, 3))
		{Print("ÿc1Dollhouse! Lassen wir mal lieber...");
		NTC_SendMsgToScript("MWBotGame.ntj", "NEXT_SCRIPT");}
ldevil is offline  
Thanks
1 User
Old 11/01/2010, 23:39   #9
 
elite*gold: 0
Join Date: Aug 2010
Posts: 91
Received Thanks: 4
haha, da sieht man mal wieder wie es um meine java script skills steht.

danke, werds testen ASAP!
wär schon verdammt genial wenn das funzen würde, dann dauerts vielleicht nur noch 1 1/2 monate bei 24/7 ohne rip, ohne gambeln bis 99 :ugly: :P

EDIT: also es gibt jetzt keinerlei fehler mehr mit der fertig eingebauten funktion, allerdings wird das game einfach beendet anstatt das diablo script auszuführen...
ich glaub aber eh das baal alleine zu kurz ist, 2:30 sinds in etwa, da müsste ich eh noch was dazu schieben, da kann ich auch gleich immer mit diablo machen, wenn baal geskippt wird ist der run ca. 3:50 lang, das passt dann wieder gut.

trotzdem ein riesen dankeschön für deine mühen!!

lg,
jules
JulesWinnfiled is offline  
Reply




All times are GMT +2. The time now is 15:25.


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.