Jetzt, da man erwachsen ist, lässt man die kleinen in Ruhe (gibt ja auch nicht mehr so viele in FW) und legt sich eher mit Leuten seines Kalibers an. Nur tragen die blöderweise ein haufen Müll mit sich herum, bis man da mit sicht der Dinge alles durchgeschaut hat ist das Opfer über alle Berge. Und selbst wenn nicht, kann man leicht übersehen dass eins dieser Items 200 kleine energiesplitter sind.
Wäre doch toll wenn man eben schnell den Erwartungswert des Diebesgutes ausrechnen könnte, ist dieser grösser als der Preis eines Diebi - so greift man zu, wenn nicht - läuft man weiter.
Now there is an App for it!
Download me
Es funktioniert zwar bereits, ist aber nicht sehr komfortabel zu bedienen, deswegen erkläre ich mal kurz wie das funktioniert
> Es ist KEIN bot sondern nur ein textanalyse-tool, welches mit sehr vielen String operationen aus einem Text, wie ihn Sicht der dinge erzeugt, die Namen und Anzahl der Items extrahiert
> Zu jedem Itemnamen gibt es einen Shoppreis (FWWiki entnommen) und eventuell einen Marktpreis (den man selbst definieren kann)
> und das wars eigentlich schon, aus den anzahl-preis paaren kann man alles berechnen was man will, zum beispiel den mittleren marktwert des (noch nicht) gestohlenen items
Wie benutzt man es?
Dann entpackt man das Archiv irgendwo
Hat man ein potenzielles Opfer gefunden, wendet man sicht der dinge an, kopiert die gesamte ausgabe in die Datei inventory.txt (Strg+A, Strg+C, Strg+V)
Dann öffnet man ein Terminal und navigiert in den Ordner mit den gerade entpackten dateien. Windows 8 hat dafür die Option Datei - Eigabeaufforderung öffnen oder mit Rechtsklick - Open Enhanced console here (von Pythonxy ins menü eingefügt, nicht nur bei Win8)
Nun gibt man einfach ein: python test.py (Das alles kann man natürlich machen bevor man sich auf opfersuche begibt, nur wenn man enter drückt, sollte das richtige inventar kopiert sein)
inventory.txt braucht man, ausser man arbeitet unter windows mit der zwischenablage. da kopiert man das inventar rein
itemnames.txt bracuht man nicht. enthält nur die itemnamen, aus der wikiliste (die nur 200 pro seite anzeigt) kopiert
price_scraper.py bracuht man. enthält die ganzen funktionen zum filtern des inventars und auch zum herunterladen der preise aus dem wiki. Die funktion download_prices() sollte man nicht aufrufen, da es immerhin alle 1200 itemseiten des wiki aufruft, das verursacht wahrscheinlich einen hohen traffic, dauert so 5-10 minuten und stürzt zwischendurch 2-3 mal ab, da nach etwa 400 items entweder die IP kurzzeitig blockiert wird oder der puffer voll ist (obwohl die CPU/RAM/Netzwerkauslastung währenddessen nicht nennenswert zunimmt)
shopprices.py braucht man, enthält die shoppreise aller items
marketprices.py braucht man nicht, aber wenn man hier für items einen preis definiert, überschreibt dieser den shoppreis bei der mittelwertberechnung (und sonst auch)
shopprices_original.pybraucht man nicht, enthält die gleichen shoppreise, nur in der "richtigen" grossschreibung wie sie aber im spiel selbst nicht verwendet wird
test.py bracuht man. ruft die funktionen aus pricescraper auf und produziert die eigentliche ausgabe
Bekannte Bugs / geplante Verbesserungen:
Linux/Windows/Mac benutzen unterschiedliche EOL-characters, soweit ich weiss '\n', '\r\n' und '\r' entsprechend, ich habs aber nicht getestet, da ich annehme die meisten hier benutzen windows, und nur deswegen hab ich keine lust linux zu installieren, selbst in einer VM. auch komisch ist, dass man '\r\n' nur in der zwischenablage sieht, fügt man den text in eine datei ein, so sieht man nur noch '\n'
Angelegte Waffen können nicht geklaut werden, auch wenn sie nicht geschützt sind, da man nicht weiss welche es sind, werden die trotzdem mit eingerechnet. Zum glück scheinen das die meisten nicht zu wissen und schützen ihre waffen trotzdem vor diebstahl sodass es keine auswirkungen haben sollte
Die marktpreise sind ganz grob geschätzt, aber die größenordnung müsste stimmen, hauptsache die fixpreisdrops wie ölfässer/mäuse/knochen/kuhköpfe/pilze sind richtig
Items mit variablem Namen (Zeichnung von NPC, Gewebeprobe von SPIELER, Geschenk von SPIELER, ...) werden nicht erkannt. Könnte man zwar beheben, aber meistens sind die nichts wert, sodass der default-wert von 5gm es meist ganz gut trifft
Ladungen der Items werden ignoriert (Pfeilbeutel, ZKs, ausgebrannter geisterschild..) kann man auch beheben und ich sollte es auch machen, der preis pro ladung würde sich dann nach dem preis für einen pfeil/kleine zk/geisterfunke richten
einzelne items mit sehr hohem marktwert (gelber prismakristall/schattenglas etc.) verzerren den mittelwert stark, leute die sowas bei sich haben, warten nicht seelenruhig bis man ihnen 100 items geklaut hat. Da sollte man den quantil im auge behalten oder die n-ten momente ausrechnen...
... und da die nächte version eine GUI haben wird (sobald ich mich da eingelesen habe) warum nicht gleich ein histogramm plotten
und wenn von den linuxleuten genügend feedback kommt, kann ich auch die cross-plattform compatibilität hinbiegen