Wäre es manchmal nicht Klasse, einfach ein TP zu machen und ein Hammerdin erscheint der einen beschützt?
Besonders als Zauberin z.B. eigentlich ganz nett.
BASISWISSEN "||" = oder / "==" = gleich / "!=" = nichtgleich / "&&" = und
Wir gehen also in den Ordner D2NT\scripts\bots und schnappen uns ein Script.
Der Anfang braucht uns zunächst nicht zu interessieren. Wir lassen ihn einfach wie er ist.
Nun haben wir ein leeres script welches wir nach belieben gestalten können.
Als erstes kommt nun der wichtigste Schritt, wir schalten wir unser Gehrin ein und überlegen, was wir denn genau habenmöchten:
1. Wenn er in der Stadt ist soll er sich ein TP suchen
2. Wenn er bei uns ist soll er uns folgen.
3. Er soll uns mit seinen Hämmern beschützen.
4. Er soll das nicht nur einmal machen sondern immerwieder.
Wir müssen also eine Endlosschleife setzen.
while(1) //Endlosschleife
{
}
Alles was unser Bodyguard tun soll muss zwischen diese 2 Klammern damit er es immer wieder ud nicht nur einmal macht. (OK 4. gelöst)
Unterschied zwischen Town und Ebene:
me.areaid ist die AreaID auf der sich der Bot befindet.
Wir schauen uns die AreaID Listen an und sehen, dass 1, 40, 75, 103 und 109 die Diablo 2 Towns sind.
([Only registered and activated users can see links. Click Here To Register...])
WENN me.areaid das selbe ist wie 1, 40, 75,103 oder 109 DANN ist der bot logischerweise in der Town.
Wir geben unserem Bot also die ersten 2 Regeln die er zu befolgen hat:
Er soll ein TP suchen:
Wir geben ihm also eine Variabel mit der er Arbeiten kann.
Er soll sich eine Unit schnappen die ein OBJEKT ist. Wir definieren sie noch genauer durch den String vom TP.
(wie finde ich den richtigen String? ([Only registered and activated users can see links. Click Here To Register...]))
WENN dieses "_Portal" NICHT da ist DANN soll er ein päuschen machen.
Zwischenstopp:
Wie sollte es bis jetzt aussehen?
Weiter im Text. Er soll uns folgen:
Wir gehen gleich vor wie mit den Portalen. Also geben wir ihm zunächst eine Variabel und definieren sie. (Wir sind kein OBJEKT wir sind ein PLAYER. Wir sind eine Zauberin.)
WENN dieser "_Führer" (wir) nich daist, DANN soll er ein päuschen machen.
Wir schauen uns in den Scripts um und finden den wunderbahren befehl "GetDistance(me, object)" (das object sind wir also "_Führer")
Wow, er teleportiert uns hinterher! wir werden ihn nichtmehr los es sei denn wir wechseln die Ebene.
Hämmer:
Alles schön und gut, aber eins fehlt noch.
Wenn er neben uns steht macht er bisher noch garnichts.
Wir schauen uns die NTAttack an und suchen nach einem passeneden Befehl.
So, nun nurnoch alles zusammenbasteln:
Danke für den Hinweis dass es ruckelt ^^ da fehlen ein paar Päuschen, damit die Befehle nicht zu schnell durchgerattert werden.
Wir basteln also Pausen rein:
Wir sind am ende dieses Guides angekommen. Ich hoffe ihr konntet mir folgen. Fals Ihr es immernochnicht zum funktionieren gebracht habt, gebe ich euch einen geheimtipp: Die erste { die wir geöffnet haben wurde noch nicht geschlossen. Denkt nach ^^
Bitte kein sinnlosen Spam hier im Topic, es ist für die hoffentlich bald entstehende diablo2scripts section hier auf epvp.
Besonders als Zauberin z.B. eigentlich ganz nett.
BASISWISSEN "||" = oder / "==" = gleich / "!=" = nichtgleich / "&&" = und
Wir gehen also in den Ordner D2NT\scripts\bots und schnappen uns ein Script.
Der Anfang braucht uns zunächst nicht zu interessieren. Wir lassen ihn einfach wie er ist.
Alles untendran löschen wir.Quote:
function NTMain()
{
Include("common/NTCommon.ntl");
Include("common/NTMove.ntl")
NTC_IncludeConfig();
NTC_IncludeLibs();
NT_LoadConfig();
NTSI_LoadNIPFiles();
NTA_Initialize();
if(!NTTM_CheckAct())
{
NTC_SendMsgToScript("default.ntj", "NTTM_CheckAct()");
return;
}
Nun haben wir ein leeres script welches wir nach belieben gestalten können.
Als erstes kommt nun der wichtigste Schritt, wir schalten wir unser Gehrin ein und überlegen, was wir denn genau habenmöchten:
1. Wenn er in der Stadt ist soll er sich ein TP suchen
2. Wenn er bei uns ist soll er uns folgen.
3. Er soll uns mit seinen Hämmern beschützen.
4. Er soll das nicht nur einmal machen sondern immerwieder.
Wir müssen also eine Endlosschleife setzen.
while(1) //Endlosschleife
{
}
Alles was unser Bodyguard tun soll muss zwischen diese 2 Klammern damit er es immer wieder ud nicht nur einmal macht. (OK 4. gelöst)
Unterschied zwischen Town und Ebene:
me.areaid ist die AreaID auf der sich der Bot befindet.
Wir schauen uns die AreaID Listen an und sehen, dass 1, 40, 75, 103 und 109 die Diablo 2 Towns sind.
([Only registered and activated users can see links. Click Here To Register...])
WENN me.areaid das selbe ist wie 1, 40, 75,103 oder 109 DANN ist der bot logischerweise in der Town.
Wir geben unserem Bot also die ersten 2 Regeln die er zu befolgen hat:
Quote:
if(me.areaid == 1 || me.areaid == 40 || me.areaid == 75 || me.areaid == 103 || me.areaid == 109)
{
//Wenn me.areaid 1 ist ODER 40 ODER 75 ODER 103 ODER 109, dann macht er das was hier steht
}
if(me.areaid != 1 && me.areaid != 40 && me.areaid != 75 && me.areaid != 103 && me.areaid != 109)
{
//Wenn me.areaid NICHT 1 UND nicht 40 UND nicht 75 UND nicht 103 UND nicht 109 ist, dann macht er das was hier steht.
}
Er soll ein TP suchen:
Wir geben ihm also eine Variabel mit der er Arbeiten kann.
Nun sagen wir ihm was ein "_portal" istQuote:
var _Portal;
Er soll sich eine Unit schnappen die ein OBJEKT ist. Wir definieren sie noch genauer durch den String vom TP.
(wie finde ich den richtigen String? ([Only registered and activated users can see links. Click Here To Register...]))
WENN dieses "_Portal" da ist DANN soll er hingehen und es benutzen.Quote:
_Portal = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
WENN dieses "_Portal" NICHT da ist DANN soll er ein päuschen machen.
Quote:
if(_Portal)
{
NTM_WalkTo(_Portal.x, _Portal.y) //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
NTM_UsePortal("BluePortal"); //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
}
if(!_Portal)
{
NTC_Delay(1000) //Päuschen in milisekunden
}
Zwischenstopp:
Wie sollte es bis jetzt aussehen?
Quote:
while(1)
{
if(me.areaid == 1 || me.areaid == 40 || me.areaid == 75 || me.areaid == 103 || me.areaid == 109)
{
var _Portal;
_Portal = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
if(_Portal)
{
NTM_WalkTo(_Portal.x, _Portal.y) //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
NTM_UsePortal("BluePortal"); //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
}
if(!_Portal)
{
NTC_Delay(1000) //Päuschen in milisekunden
}
}
if(me.areaid != 1 && me.areaid != 40 && me.areaid != 75 && me.areaid != 103 && me.areaid != 109)
{
//Wenn me.areaid NICHT 1 UND nicht 40 UND nicht 75 UND nicht 103 UND nicht 109 ist, dann macht er das was hier steht.
}
}
Weiter im Text. Er soll uns folgen:
Wir gehen gleich vor wie mit den Portalen. Also geben wir ihm zunächst eine Variabel und definieren sie. (Wir sind kein OBJEKT wir sind ein PLAYER. Wir sind eine Zauberin.)
WENN dieser "_Führer" (wir) daist, DANN soll er zu uns kommen.Quote:
var _Führer;
_Führer = NTC_GetUnit(NTC_UNIT_PLAYER, NTC_CHAR_CLASS_SORCERESS)
WENN dieser "_Führer" (wir) nich daist, DANN soll er ein päuschen machen.
Wir schauen uns in den Scripts um und finden den wunderbahren befehl "GetDistance(me, object)" (das object sind wir also "_Führer")
Quote:
if(_Führer)
{
if(GetDistance(me, _Führer) > 3) //WENN die Distanz zwischen dem Bot und uns größer ist als 3, DANN...
{
NTM_TeleportTo(_Führer.x+1, _Führer.y+1) //schaut in die NTmove um herausufinden woher dieser Befehl stammt.
NTC_WaitCastDone() //Das selbe wie ein Päuschen, setzt es jedesmal wenn ihr ihn einen Skill casten lasst.
}
if(GetDistance(me, _Führer) < 3)
{
//Was soll er tun wenn er neben uns steht?
}
}
if(!_Führer)
{
NTC_Delay(1000); //Päuschen wenn wir nicht da sind.
}
Wow, er teleportiert uns hinterher! wir werden ihn nichtmehr los es sei denn wir wechseln die Ebene.
Hämmer:
Alles schön und gut, aber eins fehlt noch.
Wenn er neben uns steht macht er bisher noch garnichts.
Wir schauen uns die NTAttack an und suchen nach einem passeneden Befehl.
Quote:
NTC_PutSkill(NTConfig_PutAura, NTC_HAND_RIGHT); //Aura anmachen
NTC_Delay(10);
NTC_DoCast(NTConfig_AttackSkill[2], 2); //Hämmern
NTC_WaitCastDone()
So, nun nurnoch alles zusammenbasteln:
[Edit:]Quote:
while(1)
{
if(me.areaid == 1 || me.areaid == 40 || me.areaid == 75 || me.areaid == 103 || me.areaid == 109)
{
var _Portal;
_Portal = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
if(_Portal)
{
NTM_WalkTo(_Portal.x, _Portal.y) //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
NTM_UsePortal("BluePortal"); //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
}
if(!_Portal)
{
NTC_Delay(1000) //Päuschen in milisekunden
}
}
if(me.areaid != 1 && me.areaid != 40 && me.areaid != 75 && me.areaid != 103 && me.areaid != 109)
{
var _Führer;
_Führer = NTC_GetUnit(NTC_UNIT_PLAYER, NTC_CHAR_CLASS_SORCERESS)
if(_Führer)
{
if(GetDistance(me, _Führer) > 3) //WENN die Distanz zwischen dem Bot und uns größer ist als 3, DANN...
{
NTM_TeleportTo(_Führer.x+1, _Führer.y+1) //schaut in die NTmove um herausufinden woher dieser Befehl stammt.
NTC_WaitCastDone() //Das selbe wie ein Päuschen, setzt es jedesmal wenn ihr ihn einen Skill casten lasst.
}
if(GetDistance(me, _Führer) < 3)
{
NTC_PutSkill(NTConfig_PutAura, NTC_HAND_RIGHT); //Aura anmachen
NTC_Delay(10);
NTC_DoCast(NTConfig_AttackSkill[2], 2); //Hämmern
NTC_WaitCastDone()
}
}
if(!_Führer)
{
NTC_Delay(1000); //Päuschen wenn wir nicht da sind.
}
}
}
Danke für den Hinweis dass es ruckelt ^^ da fehlen ein paar Päuschen, damit die Befehle nicht zu schnell durchgerattert werden.
Wir basteln also Pausen rein:
Quote:
while(1)
{
if(me.areaid == 1 || me.areaid == 40 || me.areaid == 75 || me.areaid == 103 || me.areaid == 109)
{
var _Portal;
_Portal = NTC_GetUnit(NTC_UNIT_OBJECT, GetLocaleString(3226));
if(_Portal)
{
NTC_Delay(500)
NTM_WalkTo(_Portal.x, _Portal.y) //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
NTC_Delay(500)
NTM_UsePortal("BluePortal"); //schaut in der NTmove um herauszufinden woher dieser Befehl stammt
NTC_Delay(500)
}
if(!_Portal)
{
NTC_Delay(1000) //Päuschen in milisekunden
}
}
if(me.areaid != 1 && me.areaid != 40 && me.areaid != 75 && me.areaid != 103 && me.areaid != 109)
{
var _Führer;
_Führer = NTC_GetUnit(NTC_UNIT_PLAYER, NTC_CHAR_CLASS_SORCERESS)
NTC_Delay(10)
if(_Führer)
{
if(GetDistance(me, _Führer) > 3) //WENN die Distanz zwischen dem Bot und uns größer ist als 3, DANN...
{
NTM_TeleportTo(_Führer.x+1, _Führer.y+1) //schaut in die NTmove um herausufinden woher dieser Befehl stammt.
NTC_WaitCastDone() //Das selbe wie ein Päuschen, setzt es jedesmal wenn ihr ihn einen Skill casten lasst.
}
if(GetDistance(me, _Führer) < 3)
{
NTC_PutSkill(NTConfig_PutAura, NTC_HAND_RIGHT); //Aura anmachen
NTC_Delay(10);
NTC_DoCast(NTConfig_AttackSkill[2], 2); //Hämmern
NTC_WaitCastDone()
}
}
if(!_Führer)
{
NTC_Delay(1000); //Päuschen wenn wir nicht da sind.
}
}
}
Wir sind am ende dieses Guides angekommen. Ich hoffe ihr konntet mir folgen. Fals Ihr es immernochnicht zum funktionieren gebracht habt, gebe ich euch einen geheimtipp: Die erste { die wir geöffnet haben wurde noch nicht geschlossen. Denkt nach ^^
Bitte kein sinnlosen Spam hier im Topic, es ist für die hoffentlich bald entstehende diablo2scripts section hier auf epvp.