|
You last visited: Today at 13:01
Advertisement
[Brauche bitte Hilfe] Spezielles Boscript
Discussion on [Brauche bitte Hilfe] Spezielles Boscript within the Diablo 2 Programming forum part of the Diablo 2 category.
05/16/2011, 02:01
|
#1
|
elite*gold: 0
Join Date: Dec 2009
Posts: 931
Received Thanks: 47
|
[Brauche bitte Hilfe] Spezielles Boscript
Hoi, ich hab mich selber damit versucht, da kam aber nix bei raus
Das es sonst bestimmt zu schwer zu verstehen ist, schreibe ich mal alles geordnet auf.^^
Ich möchte das mein Barbar einen bestimmten Wegepunkt nimmt ( z.B. Flammenfluss ) und dort alle anderen sich in diesem Spiel befindlichen Chars ( in diesem Fall 7 weitere ) anschreit. Dann soll jeder seinen Weg gehen.
Der Plan:
Der Leader erstellt das Spiel, alle anderen inklusive Barbar betreten das Spiel.
Jetzt gehts auch schon los, alle treffen sich am Flammenfluß und der Barbar fängt z.B. 30 Sekunden an zu schreien ( also skill, leben/ mana, def ).
Hier stellt sich mir auch die erste Frage: Erkennt der Bot das er angeschrien wurde oder sollte man einen Countdown von z.B. 5 Sekunden einbauen, nachdem jeder seinen run startet? Nach diesen 30 Sekunden sollte dann auch der Barbar ganz normal anfangen.
Wäre cool wenn ihr mal bitte eure Meinung dazu abegeben könntet, ob das überhaupt so machbar ist, bzw. wie schwer die Umsetztung sein wird!
Könnt mir auch gerne helfen, hab mir zwar Muddy's Guide durchgelesen und meiner Meinung auch alles verstanden, aber das gleich selbst so umzusetzten wie ich das möchte ist schon heavy...
|
|
|
05/16/2011, 11:46
|
#2
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
|
Da ich wenig Zeit habe und gleich weg muss, erstmal die Kurzform:
Das ist aus meiner Sicht relativ problemlos umsetzbar.
Ob ein Char über BO verfügt oder nicht, kannst du mit der Methode GetState(stateid) überprüfen. Diese ist sowohl für das globale Objekt me, als auch für Units definiert.
Code:
me.GetState(32) // Größer Null, wenn BO aktiv, sonst identisch Null.
me.GetState(51) // Größer Null, wenn Battle Command aktiv, sonst identisch Null.
me.GetState(26) // Größer Null, wenn Shout aktiv, sonst identisch Null.
Das ganze wird nun analog auf die Units der Mitspieler angewandt, zusätzlich wird eine Zeitbegrenzung von 30 Sekunden durch Überwachen der Ticks verwendet.
Das sieht dann so aus:
Code:
var _player, _endTicks;
_endTicks = GetTickCount() + 3E4;
while(GetTickCount() < _endTicks)
{
_player = NTC_FindUnit(NTC_UNIT_PLAYER);
if(_player)
{
do
{
if(GetDistance(me, _player) < 10)
{
if(!_player.GetState(26)) // Check Shout state
NTC_CastSkill(138, NTC_HAND_RIGHT); // Battle Command
if(!_player.GetState(32)) // Check Battle Orders state
NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Command
if(!_player.GetState(51)) // Check Battle Command state
NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
}
} while(_player.GetNext());
}
}
Vielleicht kommst du ja damit schon alleine weiter.
LG
Muddy
|
|
|
05/16/2011, 19:06
|
#3
|
elite*gold: 0
Join Date: Dec 2009
Posts: 931
Received Thanks: 47
|
Wow danke dir
Das würde dann heißen das der Barbar 30 Sekunden im Wechsel die Schreie spammt oder?
Fehlt noch das alle sich bei einem Wp treffen, dann erkennen das sie angeschrien wurde und dann loslegen.
Dazu muss ich das dann mit me. einfügen, so wie dus gepostet hast oder?
|
|
|
05/17/2011, 11:35
|
#4
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
|
Quote:
Originally Posted by Deutsche-Mafia
Wow danke dir
Das würde dann heißen das der Barbar 30 Sekunden im Wechsel die Schreie spammt oder?
Fehlt noch das alle sich bei einem Wp treffen, dann erkennen das sie angeschrien wurde und dann loslegen.
Dazu muss ich das dann mit me. einfügen, so wie dus gepostet hast oder?
|
Jein, der Barb würde jeden mit Bo versorgen, der noch kein BO hat und sich dem Barb auf 10 yards nähert.
Das kannst du prinzipiell auch alles in einem Script ausführen, denn bis zum WP machen schließlich alle Chars das Gleiche.
Sofern der Char ein Barb ist, lässt du den 30s Part ausführen, ansonsten wartest du ~10s auf BO. Macht genau eine if-Anweisung.
Das Warten auf BO legst du am besten als for-Schleife aus, die du dann abbrichst, sobald BO vorhanden ist.
Ich mag dir trotzdem nicht alles vorsagen, wäre schließlich langweilig und du lernst dabei nichts.
Versuch es erstmal selbst, wenn alle Stricke reissen kann ich gerne weiterhelfen.
Achja, füge oben in der Schleife für den Barb noch ein Delay ein, das hatte ich irgendwie übersehen:
Code:
var _player, _endTicks;
_endTicks = GetTickCount() + 3E4;
while(GetTickCount() < _endTicks)
{
_player = NTC_FindUnit(NTC_UNIT_PLAYER);
if(_player)
{
do
{
if(GetDistance(me, _player) < 10)
{
if(!_player.GetState(51)) // Check Battle Command state
NTC_CastSkill(155, NTC_HAND_RIGHT); // Battle Command
if(!_player.GetState(26)) // Check Shout state
NTC_CastSkill(138, NTC_HAND_RIGHT); // Battle Command
if(!_player.GetState(32)) // Check Battle Orders state
NTC_CastSkill(149, NTC_HAND_RIGHT); // Battle Command
}
} while(_player.GetNext());
}
NTC_Delay(200);
}
LG
Muddy
|
|
|
06/06/2011, 17:30
|
#5
|
elite*gold: 0
Join Date: Dec 2009
Posts: 931
Received Thanks: 47
|
Also nochmal vielen Dank an Muddy!
Dank deinem Guide hab ich jetzt meiner Meinung nach wenigstens die theoretische Basis.
Leider schaff ich es nicht das so, wie ich es mir wünsche umzusetzen.
Deshalb würde ich FG bieten, falls du Interesse hast es zu Ende zu schreiben...
Noch was zum Script:
Kann es sein das wenn ein Char genau auf dem WP steht er kein Bo bekommt?
Mfg
|
|
|
06/06/2011, 17:57
|
#6
|
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
|
Quote:
Originally Posted by Deutsche-Mafia
Also nochmal vielen Dank an Muddy!
Dank deinem Guide hab ich jetzt meiner Meinung nach wenigstens die theoretische Basis.
Leider schaff ich es nicht das so, wie ich es mir wünsche umzusetzen.
Deshalb würde ich FG bieten, falls du Interesse hast es zu Ende zu schreiben...
Noch was zum Script:
Kann es sein das wenn ein Char genau auf dem WP steht er kein Bo bekommt?
Mfg
|
Woran scheitert es?
Wenn der Char genau auf dem WP steht, kann es teilweise dazu kommen, das er kein BO bekommt, ist jedoch D2-bezogen, also passiert auch ohne Bot.
Lass den Bot einfach etwas zur Seite gehen/telen, schon geht es.
|
|
|
06/07/2011, 03:35
|
#7
|
elite*gold: 0
Join Date: Dec 2009
Posts: 931
Received Thanks: 47
|
Quote:
Originally Posted by TheCrazy11
Woran scheitert es?
|
Die bots die durchs wp sind, sollen neben das wp laufen und dann warten bis sie bo haben. Danach ganz normal mit dem run beginnen.
Das bekomm ich einfach nicht hin...
|
|
|
06/07/2011, 12:16
|
#8
|
Administrator
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
|
Ich verstehe das Problem nicht; nimm dir die Unit des Wegpunktes, rechne auf die Koordinaten einen Offset drauf und beweg dich zu den resultierenden Koordinaten. Mehr ist das nicht.
Code:
var _waypoint = NTM_GetWaypointInt();
if(_waypoint)
NTM_MoveTo(me.areaid, _waypoint.x + 2, _waypoint.y + 2);
Wenn es ein spezifischer WP ist und du die classid kennst, könntest du es alternativ auch mit NTM_MoveToPresetUnit() lösen.
LG
Muddy
|
|
|
06/07/2011, 14:34
|
#9
|
elite*gold: 0
Join Date: Mar 2010
Posts: 539
Received Thanks: 418
|
So umständlich muss es nicht mal sein, es reicht auch folgendes:
Code:
NTM_TakeWaypoint(35); // Nimmt den WP zu Cata lvl 2
NTM_MoveTo(me.areaid, me.x+5, me.y); // Bewegt sich ein bisschen weg
Dann fehlt nur noch die Überprüfung, ob er die Schreie hat, kann über 2 (sinnvolle) Arten realisiert werden:
Code:
while ([COLOR="Green"]<Überprüfung ob die Schreie [COLOR="Red"]nicht[/COLOR] aktiv sind>[/COLOR])
Delay(1000); // 1000 ms warten
2. Variante, wartet maximal 30 sec und fährt dann mit dem Script fort:
Code:
for (int i = 0; i < 30; i++)
{
if ([COLOR="Green"]<Überprüfung ob die Schreie aktiv sind>[/COLOR])
break; // for-Schleife abbrechen
else
Delay(1000); // 1000 ms warten
}
PS: Muddy, ich hoffe du hast nichts dagegen, wenn ich hier auch meinen Senf dazu gebe, sollte dich was nerven/stören/etc., bitte eine kurze Meldung, ich kann Kritik vertragen!
|
|
|
|
Similar Threads
|
[HILFE!!] Ich brauche beim quest einfügen bitte um hilfe
04/27/2012 - Metin2 Private Server - 6 Replies
Hey ist vllt ein hilfsbereiter Member on ? :D
bräuchte hilfe beim quest einfügen vllt kann derjenige mich dann in skype oder icq adden
DANKE !!!:D:D
*edit* die überschrift ist verkackt :D
ich brauche beim quest einfügen hilfe bitte um schnelle hilfe*
|
Server Problem bitte helft Leute bitte brauche eure hilfe sauu dringen
07/18/2011 - Metin2 Private Server - 20 Replies
Hi leute wenn man seinen server ya on bringt (ned das erste mal das ich ihn on bring) dann kommt am ende ya immer das operation timed out 7 mal aber jez steht da Operation reciefet 1000 mal der server startet so einfach ned was kann ich da maachen
|
Brauche Hilfe bitte
10/26/2010 - Metin2 - 0 Replies
hallo ich wollte den mal runterlden aber i.wie scheine ich zu dumm zu sein ... wenn ich auf den link klicke komme ich zu einer seite aber bekomme ich nicht zum downloaden ..
http://www.elitepvpers.com/forum/metin2-hacks-bots -cheats-exploits-macros/265237-free-metin2-de-bot. html
Könnte mir jemand helfen ?
also mir den link geben oder so per Pn
Danke
|
Brauche Bitte Hilfe !!!
11/06/2009 - Metin2 Private Server - 0 Replies
Hallo Liebe com !
also ich hock ja jetzt schon monate lang an meinem blöden Mt2 server
habe SuFu genutzt
alle VTut
"TUT" durchgelesen
habe alles gemacht was ich konnte nunja
der server läuft immer noch nicht !!
|
Hilfe Bitte Brauche hilfe bei Warrock !!!!!!!
07/10/2009 - WarRock - 0 Replies
Hilfe bitte,
ich bin heute morgen aufgestanden wollte Warrock zocken aber da war neues Update:mad: ja als das fertig war ging Warrock nicht mehr an :confused:also es kamm nur Warrock updater danachk wenn ich auf ok gedrückt habe kamm Hackshield aber danch starte warrock nich da kommt einfach nichts. Es is egal wie viel mall ich auf Warrock drücke es geht nicht mehr an also startet nicht mehr.
ich hab schon 3 mal neu Installiert und mein Leptop 1 mal Formartiert aber nichts gebracht
Mein...
|
All times are GMT +2. The time now is 13:01.
|
|