The Bluebird bot / Bot soll stoppen wenn Kiste voll

09/01/2010 21:29 WinfieldX#1
Also hier muss es doch ein paar schlaue köpfe geben die mir sagen können wie mans hinbekommt das der Bot automatisch stoppt wenn die Truhe voll ist.

bitte net so antworten wie wenn er am morgen voll is dann nehm net soviel mist mit^^

Also es muss doch möglich sein dem zu sagen wenn kiste voll dann stopp.
09/01/2010 21:42 Muddy Waters#2
Was genau verstehst du unter stoppen? Warten im Spiel, ohne was zu machen?

Die Problemstellung an sich ist extrem einfach, ich setz mich gleich mal 5 Minuten hin und bastel eine Funktion die das leistet. :)

Lg
Muddy

Edit:
Hier, damit sollte das klappen:
Code:
function MWC_CheckStashCapacity()
{
    var _items, _room;
    
    _items = me.GetItems();
    _room = 48;
    
    if(_items)
    {
        for(var i = 0; i < _items.length; i++)
        {
            if(_items[i].itemloc == 4 && _items[i].mode == 0)
                _room -= _items[i].xsize * _items[i].ysize;
        }
    }
    
    return _room > 0;
}
Ungetestet, sollte aber laufen, ist schließlich nicht viel dran. :)
09/01/2010 23:18 xXSpeedboyXx#3
bei mir funzt es :) Hab truhe voll gemacht und invetar auch.. :) der steht nur doof rum :)
09/01/2010 23:23 Muddy Waters#4
Quote:
Originally Posted by PoD-Devilboy View Post
bei mir funzt es :) Hab truhe voll gemacht und invetar auch.. :) der steht nur doof rum :)
Die Funktion prüft aber nur, ob in der Truhe noch freie Felder vorhanden sind und gibt true zurück, falls noch Platz vorhanden ist und false, wenn die Truhe voll ist.

Die eigentliche Einbindung der Funktion steht noch in den Sternen, obwohl man dazu mit den gegebenen Informationen auch wenig sagen kann.

Da stellt sich mir doch die Frage, in welchem Zusammenhang du das eingebunden hast. ;)

Lg
Muddy
09/01/2010 23:32 xXSpeedboyXx#5
hab es so eingeben in der Config (nicht vom char)

oder kann auch sein das er ne fehlermeldung hatte.. hab es nur kurz getestet.. ^^

hab net drauf geachtet.

der stand im game. einfach nur rum. tat nix. ^^
09/02/2010 17:19 Muddy Waters#6
Quote:
Originally Posted by PoD-Devilboy View Post
hab es so eingeben in der Config (nicht vom char)

oder kann auch sein das er ne fehlermeldung hatte.. hab es nur kurz getestet.. ^^

hab net drauf geachtet.

der stand im game. einfach nur rum. tat nix. ^^
Was ist denn die Config, wenn nicht die vom Char? :p

Die Funktion müsste eigentlich in einer der common libraries hinterlegt werden (am besten in der NTCommon.ntl, dann passt der Name) und dann in der NTBotGame.ntj aufgerufen werden, nach möglichkeit zwischen den Scripten.

Wäre natürlich elegant, wenn man dem Bot dann noch sagt, er solle bitte einfach im Spiel bleiben, ohne wirklich was zu machen, wobei er schon soviel machen sollte, dass er nicht gekickt wird.
Im zweifelsfall mal in meiner Version nachschauen und meine AntIdle Funktion verwenden.
Sterni müsste die auch bei sich eingebunden haben, obwohl ich da nicht weiss auf welchem Stand sie dort ist. Wobei ich soweit ich es in Erinnerung habe, lange nichts mehr daran verändert habe, aber ich weiss das nicht so genau, da ich mir minimale Änderungen immer furchtbar schlecht merken kann. :rolleyes:

Lg
Muddy
09/02/2010 19:15 WinfieldX#7
und das heisst nun genau ? :D

das es wohl doch net so einfach gehen wird :confused:


weil
Quote:
Die Funktion prüft aber nur, ob in der Truhe noch freie Felder vorhanden sind und gibt true zurück, falls noch Platz vorhanden ist und false, wenn die Truhe voll ist.
wenn das so wäre wäre das auch nicht das beste da der bot leider nicht so schlau ist wie es damals mein djsp bot war.
Der hats irgendwie geschafft die items in der truhe immer so intelligentm abzulegen das wirklich wenn die truhe voll war auch wirklich kein kästchen mehr platz war.

Der bot aber haut das völlig wahrlos da rein (kiste is oft voll obowhl da noch massig kästchen frei sind nur halt nimmer um ein item von 3x2 kästchen zb aufzunehmen)

also wenn er mit dem script prüft ob da noch was frei is bekommt er wohl zu 95 % zurück ne is noch was frei ^^


Was er dann macht is mir eigentlich latte solange er halt net weiter rennt und fleissig bosse killt und dann die items liegen lässt weil er nix mehr aufnehmen kann^^

Am schönsten wäre ja, das der manager von allein anhält und sich schliest oder so, wenn die truhe voll is.
09/02/2010 20:47 Muddy Waters#8
Ich bin mir recht unsicher, ob das mit dem Manager anhalten geht, ich denke eher nicht, lasse mich aber wie immer gerne eines besseren belehren.

Übrigens war deine Problemstellung festzustellen ob die Truhe voll ist, du hast nicht weiter gesagt das "fast voll" mit voll gleichzusetzen ist. :P

Da gibt es eigentlich zwei Möglichkeiten:
Du gibst in der Funktion die ich oben gepostet habe nicht 0 als Vergleichswert an, sondern die Mindestanzahl an Feldern, bei der die Truhe auch schon als voll gewertet wird.

Alternativ schreibst du dir einen Algorithmus, der ein klein wenig aufwändiger ist, wenn auch von der Funktion her ganz überschaubar.

Dazu müsstest du die Belegung der Felder in deiner Truhe auf ein zweidimensionales Array abbilden. Dieses durchläufst du dann mit einem Objekt festgelegter Größe, sagen wir 2x2 für einen Helm und schaust, ob das Objekt irgendwo unterzubringen ist.
Machbar ist das auch, aber doch ein bisschen umfangreicher, darum überlasse ich es dir, die Funktion selber zu schreiben, falls dir die erstgenannte Lösung nicht reicht. :p

Lg
Muddy
09/03/2010 05:40 WinfieldX#9
Oh Gott selber schreiben HIIILFFFEEE :D


na ich werd mir das oben ma nehmen und ma den wert auf sagen wir ma 10 erhöhen den bot dann ma paar tage überwachen und ma schauen was er so treibt und dann den wert schrittweise rutersetzen so bekomm ich zwar nicht ein 100 % iges ergebnis aber zumindest so annähernd auf 90 % voll
Ist besser als das er dann immer weiterrennt^^


Hm mir fällt da grad was ein.
Könnte man nicht das script für das Inventar also (die stelle in der charkonfig. an der man einstellen kann welche felder er nicht anrühren soll) (muss ja dafür ein script geben irgendwo)

Code:
NTConfig_Columns[0] = [1,1,1,1,1,0,0,0,0,0];
NTConfig_Columns[1] = [1,1,1,1,0,0,0,0,0,0];
NTConfig_Columns[2] = [1,1,1,1,0,0,0,0,0,0];
NTConfig_Columns[3] = [1,1,1,1,0,0,0,0,0,0];
auf die Truhe anwenden und so umschreiben das ich dem zb angeb das wenn die unteren 2 Reihen noch frei sind das er anhalten soll also in etwa so

0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
0,0,0,0,0,0
1,1,1,1,1,1
1,1,1,1,1,1


Ich frag mich nur wie das damals gelöst wurde bei meinen ganz alten Bot den djsp.bot (den ich leider nimmer habe) der hat wie gesagt das zeuch immer so sortiert das die truhe immer wirklich voll war und wenn se voll war dann hat der einfach sein script beendet und hat aufgehört.