ich versuche grad die ecke oberhalb vom star zu umlaufen und ich glaub das wäre gut machbar wenn ich eine eigene ( abgeänderte) walto funktion benutz, die prüft ob der char grade in die ecke laufen will ^^
so ich hab das ganze script das ich hatte ein "wenig" umgemodelt und in den paar runs die ich bisher gemacht hab hats auchschon wunderbar geklappt
ich konnte ein paar ecken in denen man hängenbleibt schon ausbügeln und dass der leecher anhält wenn er nah genug ist hab ich auch geschafft
das einzige was soweit noch probleme macht ist der leader ( der cleart nicht ganz sauber sodass chicken hin und wieder auftreten) -> da setzt ich noch ein paar punkte die er zum clearen abtelt
so ich hab das ganze script das ich hatte ein "wenig" umgemodelt und in den paar runs die ich bisher gemacht hab hats auchschon wunderbar geklappt
ich konnte ein paar ecken in denen man hängenbleibt schon ausbügeln und dass der leecher anhält wenn er nah genug ist hab ich auch geschafft
das einzige was soweit noch probleme macht ist der leader ( der cleart nicht ganz sauber sodass chicken hin und wieder auftreten) -> da setzt ich noch ein paar punkte die er zum clearen abtelt
Hier mal die angeforderte Erklärung, ich hoffe das reicht so, ansonsten musst du fragen, was du genauer wissen willst.
Code:
function NTM_WalkTo(x, y)
{
var i;
var _prex1, _prey1;
var _prex2, _prey2;
if(me.runwalk == 0)
me.runwalk = 1; // Always run aktivieren
for(i = 0 ; i < 480 ; i++)
{
if((i % 10) == 0) // Alle 10 i bzw. immer wenn i ohne Rest durch 10 teilbar ist
{ // Alle hier eingeschlossenen if-Anweisungen werden im ersten Durchlauf ausgeführt
if((i % 60) == 0) // Alle 60 i bzw. immer wenn i ohne Rest durch 60 teilbar ist
{
_prex1 = me.x;
_prey1 = me.y;
if((i % 120) == 0) // Alle 60 i bzw. immer wenn i ohne Rest durch 120 teilbar ist
{
_prex2 = me.x;
_prey2 = me.y;
}
}
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, x, y); // Linker Klick down ohne gedrückte Shift Taste auf die Koordinaten x, y
}
NTC_Delay(NTC_DELAY_FRAME); // Delay um NTC_DELAY_FRAME == 40ms
if(Math.abs(me.x-x) < 2 && Math.abs(me.y-y) < 2) // Wenn die Differenz der aktuellen Koordinaten zu den Zielkoordinaten kleiner als 2
break;
if((i % 10) == 9) // Wenn i geteilt durch 10 einen Rest von 9 ergibt
{
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null); // Loslassen der zuvor gedrückten Maustaste
NTC_Delay(NTC_DELAY_FRAME); // Delay um NTC_DELAY_FRAME == 40ms
if((i % 60) == 59) // Wenn i geteilt durch 60 einen Rest von 59 ergibt
{
if(me.x == _prex1 && me.y == _prey1 && !NTC_InTown()) // Wenn sich der Char an der Ausgangsposition befindet, welche zuerst aktualisiert wird und sich nicht in der Stadt befindet --> eventuell belockiert durch Monster
{
NTA_ClearPosition(2); // Töten aller Monster im Umkreis von 2
NTP_DoPrecast(false); // Precast, wenn bedarf besteht
}
if((i % 120) == 119 && me.x == _prex2 && me.y == _prey2) // Wenn i geteilt durch 60 einen Rest von 59 ergibt und sich der Char immernoch an der gespeicherten Ausgangsposition befindet, welche zuletzt aktualisiert wird
return false; // Funktionsabbruch mit Rückgabewert false
}
}
}
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null); // Loslassen der zuvor gedrückten Maustaste
NTC_Delay(NTC_DELAY_FRAME); // Delay um NTC_DELAY_FRAME == 40ms
return (i < 480); // Funktionsabbruch mit Rückgabewert (i < 480) (Wahr, wenn Zielkoordinaten erreicht bzw. for Schleife per break beendet)
}
Das andere habe ich mir auch mal durchgelesen und direkt mal (in erster Linie stilistisch) optimiert.
So ganz nachvollziehen kann ich es nicht, weil ich die Koordinaten im CS nicht im Kopf habe und diese folglich nicht ganz mit deinen Bedinungen in Verbindung bringen kann.
Zwei Sachen finde ich auf den ersten Blick etwas komisch:
Zum einen der Teil bei Diablo --> Looks a bit holprig
Zum anderen Frage ich mich, inwieweit es Sinnvoll ist, auf die Position zu Klicken, auf der der Char gerade steht. Aufgrund von Rundungsfehlern würde ich vermuten, dass das zu einem Schritt in undefinierte Richtung führt, aber vielleicht hast du dir dabei ja etwas gedacht.
Zum anderen Frage ich mich, inwieweit es Sinnvoll ist, auf die Position zu Klicken, auf der der Char gerade steht. Aufgrund von Rundungsfehlern würde ich vermuten, dass das zu einem Schritt in undefinierte Richtung führt, aber vielleicht hast du dir dabei ja etwas gedacht.
nope das klappt perfekt ^^ ein klick in etwa wo du stehst und ein unterbrechen des langlaufen am weg genau wies sein soll
das zu dia naja bin ja nochnet 100% fertig aber schon gute 90
das läuft schon echt gut
mit nem lvl 1er char würd ichs zwar net empfehlen, dafür cleart der leader manchmal zu unsauber, aber ab lvl 30 / 40 bei entsprechenden chickeneinstellungen kein problem
das mit den koordinaten hab ich bei mir im script schon mit comments versehen die versuchen zu erklären welche ecken das sind ^^
btw auf diese art und weise klappt das deutlich besser als mit checkpoints
thx btw für die erläuterung hatte es dann auch irgendwann mit grübeln raus wie ich das mit dem stehenbleiben mach
und ich hab ein neues problem ^^
und zwar wollt ich meinen leecher bei baal dazu bringen durchs tp zu gehen aber der WILL NET der steht davor und es klappt einfach net
ich vergleich mal deine optimierungen mit meinem code und poste dann die aktuelle version
mir ist übrigends aufgefallen, dass mein leader alle paar spiele (unregelmäßig) einfach kein passwort verwendet und sein cta benutzt er auchnet :/ (dabei hab ich dem extra eins gebaut) dafür dauert der precast ziemlich lange
Code:
--------
so hier noch das aktuelle script teilweise mit comments
Code:
function NTMain()
{
Include("libs/common/NTCommon.ntl");
Include("common/NTMove.ntl")
NTC_IncludeLibs();
NTC_IncludeConfig("NTBot/char_configs");
NT_LoadConfig();
NTSI_LoadNIPFiles("NTBot/item_configs");
NTA_Initialize();
var _myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
if(!NTTM_CheckAct(4))
{
NTC_SendMsgToScript("NTBotGame.ntj", "NTTM_CheckAct()");
return;
}
NTTMGR_TownManager();
NTTM_TownMove("portalspot");
for(i = 0; i <= 100; i++)
{
if(NTC_InMyParty(NTConfig_Leader))
break;
Delay(200);
}
_myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
if(_myPlayerUnit==null)
{
Say("no player found");
ExitGame();
}
for(var i=0;i<=10;i++)
{
if(_myPlayerUnit.areaid>=129)
{
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
break;
}
if(_myPlayerUnit.areaid==108||_myPlayerUnit.areaid==107)
break;
Delay(750);
}
while(me.areaid == 103 && NTC_InMyParty(NTConfig_Leader))
{
NTM_UsePortal("BluePortal", 108, NTConfig_Leader); // 50
Delay(750);
}
var _distance=0;
var _path;
var _leaderx=0;
var _leadery=0;
while(NTC_InMyParty(NTConfig_Leader))
{
NTP_DoPrecast(false);
_myPlayerUnit = MW_GetPlayerUnit2(NTConfig_Leader);
if(_myPlayerUnit==null)
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
if(me.areaid == 108 && me.areaid == _myPlayerUnit.areaid)
{
_leaderx=_myPlayerUnit.x;
_leadery=_myPlayerUnit.y;
_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
if(_distance>=70)
{
_path = GetPath(me.areaid, me.x, me.y, _leaderx, _leadery, false);
if(_path)
{
for(var i = 0; i < _path.length; i++)
{
_distance=GetDistance(me.x, me.y, _leaderx, _leadery);
if(_distance>=50)
{
if(_path[i][0]<7708||_path[i][0]>7880||_path[i][1]<5223) // verhindert zu weites laufen richtung siegel!!!
{
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
NTC_Delay(NTC_DELAY_FRAME);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
break;
}
else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5436)<=2) // zweite ecke am rechter weg vom eingang aus -> ecke zum mittelteil hin
{
NTM_WalkTo(7820, 5428);
}
else if(Math.abs(_path[i][0]-7817)<=2 && Math.abs(_path[i][1]-5371)<=2) // ecke am rechten weg nach dem mittelteil vom eingang aus
{
NTM_WalkTo(7819, 5368);
}
else if(Math.abs(_path[i][0]-7763)<=3 && Math.abs(_path[i][1]-5267)<=3) // ecke links über pentagramm
{
NTM_WalkTo(_path[i][0], 5278);
}
else if(Math.abs(_path[i][0]-7792)<=3 && Math.abs(_path[i][1]-5412)<=3) // linke untere ecke im mittelteil nach dem eingang
{
NTM_WalkTo(7792, 5400);
}
else
{
NTM_WalkTo(_path[i][0], _path[i][1]);
}
}
else
{
ClickMap(NTC_CLICK_LDOWN, NTC_SHIFT_NONE, me.x, me.y)
NTC_Delay(NTC_DELAY_FRAME);
ClickMap(NTC_CLICK_LUP, NTC_SHIFT_NONE, null);
break;
}
}
}
}
_diablo = NTC_FindUnit(NTC_UNIT_MONSTER, 243);
Delay(300);
if(_diablo)
{
Delay(10000); // wenn dia da ist -> 10 sec warten
break; // dia sollte dann tot sein :D und auf zum nächsten script
}
}
if(_myPlayerUnit.areaid>=129)
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
Delay(800);
}
NTC_SendMsgToScript("NTBotGame.ntj", "SCRIPT_END");
}
function MW_GetPlayerUnit2(leaderName)
{
var _player;
if(arguments.length < 1 || !leaderName)
return null;
_player = GetPlayerUnit();
if(_player)
{
while(_player.GetNext())
{
if(_player.name.toLowerCase() == leaderName.toLowerCase())
return _player;
}
}
return null;
}
wenn du willst poste ich noch die restlichen scripts und du kannsts ausprobieren ^^
also das diascript halt und ich hab noch eine zusätzliche variable damit der leader auch auf den leecher wartet, wenn der schon im game ist
E: das problem mim in den weltstein kommen hab ich gelöst
joa damit isses eigentlich alles fertig
vllt noch die ein oder andere feinheit aber im großen und ganze klappts
E: kritik ist erwünscht
E2: so thats it ^^ das ist die finale version (ausser irgendjemand findet noch irgendwas gravierendes) und es läuft echt gut besser als ich dachte
SRO im vordergrund halten 07/11/2023 - Silkroad Online - 11 Replies wie kann man sro zb im minimierten zustand oben inner ecke stehn lassen und dabei noch im i net surfen also ich brauche einfach ne anleitung wie ich sro im vordergrund halten kann wenn man ja explorer und so aufmacht kann man ja net sehn was im hintergrund ingame passiert wäre wirklich dankbar für jede usefull antwort
D2NT 3.0 Abstand zum Boss ändern? Wie? 03/29/2010 - Diablo 2 - 10 Replies Wie ändere ich den Abstand zu den Bossmonstern?
Kann mir da vielleicht jemand helfen? D2NT 3.0 ofc ;)
Maus gedrückt halten 05/27/2009 - GW Bots - 9 Replies sry wenn ich frage aber wie ist der befhel für maustaste links gedrückt halten ??
Schonmal danke im vorraus
Mfg Masternightmare
Selbst halten! 07/09/2005 - General Gaming Discussion - 2 Replies Das ist ein Trick ... ka ob von KK gewollt ... das sich eine PA oder ein IMP selbst hält
Beispiel: Apu hat 96 Psi ... die 2er Apu Pa brauch 100 Psi ... gibt aber gleichzeitig auch +4 Psi ...
man nehme eine Droge die den Apu auf 100 Psi bringt ... zieht die Pa an und sie hällt sich selbst!
wenn ihr dann ein Genrep uset ... ist sie nicht mehr aktiv ...
nun lasst ihr einfach die Synaptic ablaufen und relogt ... und schwups habt ihr eure Pa wieder an :D
Hoffentlich hilfts jmd ... ich...