Vorschläge für Edelstein-Algorithmen

In dieses Unterforum kommen alle Beiträge zu Feature-Requests, die bereits umgesetzt wurden.
Gesperrt
Wsxobylydob
Beiträge: 311
Registriert: So 27. Jul 2014, 15:00
Hat sich bedankt: 27 Mal
Danksagung erhalten: 51 Mal

Vorschläge für Edelstein-Algorithmen

Beitrag von Wsxobylydob »

Hier mal einige Vorschläge für Algorithmen rund um die Edelsteine und Edelsteinslots:

"Besseres Item"-Berechnung und Items mit Edelsteinslot (z.B. beim Kaufen von Items oder Einsetzen von Items)

Ich zitiere mich einfach mal selbst: viewtopic.php?f=7&t=1292#p6829
Der Bot müsste den durchschnittlichen Edelsteinwert für jedes (Haupt-)Attribut ausrechnen (glaube, dass ich da mal eine Formel gesehen hatte) und dann, wenn der Einsatz eines Edelsteines mit dem Attribut in das Item plus die "normalen" Attribute eine Verbesserung hat, die höher als der minimale Wert ist, dann wird das Item gekauft.
Liegt die Summe der Attribute auf dem Item und dem durchschnittlichen Edelsteinwert unter der minimalen Verbesserung, dann wird es nicht gekauft.
-Berechnen der theoretischen Verbesserung bei Edelsteinslots:

Ich konnte leider nicht herausfinden, wie wahrscheinlich die Elemente und Steingrößen jeweils sind.
Bei den Steingrößen gehe ich aber davon aus, dass wie bei den Questzeiten und Früchte (http://forum.sfgame.de/showthread.php?t=74552) diese so verlaufen, dass kleine Steine zwar häufiger vorkommen, aber eben kleiner und daher schlechter sind und große Steine kommen weniger vor aber dafür sind die größer und besser, damit ein Gleichgewicht existiert.
Wenn jmd etwas dazu weiß wäre es toll, wenn er es ergänzen könnte.

Daher hier die vorläufige Berechnung:
Steinfaktor:
klein: 0,18
mittel: 0,26
groß: 0,36

Steinfaktor-Durchschnitt = unbekannt (ca. 0,24-0,26)
Durch-Steinwert = CharLevel * Steinfaktor-Durchschnitt * (1+0,15*(Minenlevel-1)) + Ritterhalle/3
(Die +-15% Schwankung wird logischerweise für den Durchschnitt ignoriert.)

Hauptsächlich wird in Items nur das Hauptattribut oder Ausdauer eingesetzt.
Um weitere Komplexität zu vermeiden (und Edelsteine mit höheren Steinwerten als der durchschnittlichen Stein auszugleichen), wird ein Item mit Edelsteinslot so behandelt bei der Berechnung als wäre ein Hauptattribut-Edelstein mit dem durchschnittlichen Steinwert eingesetzt.

Vielleicht fällt mir irgendwann noch einen bessere Berücksichtigung von Edelsteinen, die besser als der Durchschnitt sind, ein, dann würde ich dies hier editieren.

Einsetzen von Edelsteinen bzw. Verkaufen von schlechteren Edelsteinen:

Für alle existierenden Edelsteine im Inventar:
Für alle ausgerüsteten Items mit Edelsteinslot:
Elemente von eingesetztem Edelstein und Edelstein im Inventar gleich? (kein Edelstein eingesetzt zählt als ungleich)
Ja: Differenz zw. Wert vom eingesetztem Edelstein und Edelstein im Inventar
->Eingetzter Edelstein höher: Edelstein im Inventar schlechter, keine Berechnung der Verbesserung nötig
->Edelstein im Inventar höher: Berechnung nötig um Höhe der Verbesserung zu bestimmen [Item-Verbesserung: Item mit eingesetzten Edelstein oder Item so wie es jetzt ist (egal ob Edelstein drin ist oder nicht)]
Nein:
Item-Verbesserung: Item mit eingesetzten Edelstein oder Item so wie es jetzt ist (egal ob Edelstein drin ist oder nicht)

Wird schon bei dem ersten Durchlaufen der Routine festgestellt, dass ein Edelstein nur verschlechtert, wird dieser direkt verkauft, um weiteren unnötigen Berechnungen auszuweichen.

Die Item-Edelstein-Kombination, die die höchste Verbesserung hat, wird ausgeführt. (solange sie eine Verbesserung ist und keine Verschlechterung)
Danach wird dies so lange wiederholt bis es nur noch Verschlechterungen gibt. (Oder keine Edelsteine) (Bestenfalls nur 1 mal, wenn es nur einen Edelstein gibt)

(Das ganze wird so umständlich gemacht statt einfach bei einer Verbesserung den Edelstein einsetzen, da sonst viele Edelsteine eingesetzt werden und man das Gold für diese verliert)
(Arenasimulation muss genutzt werden, da Differenzberechnung bei verschiedenen Elementen nicht funktionieren würde)

Um sinnloses Einsetzen der Edelsteine (Verlieren von Gold) und sinnlose Berechnungen auszuschließen, können auch Edelsteinsorten direkt für den Verkauf in den Einstellungen festgelegt werden (z.B. Nebenattribute oder Glück).

Das ganze wird nur bei Login/Botstart und beim Erhalten von Edelsteinen durchgeführt.
Folgende Benutzer bedankten sich beim Autor Wsxobylydob für den Beitrag:
scripter (Sa 5. Nov 2016, 14:40)
Wsxobylydob
Beiträge: 311
Registriert: So 27. Jul 2014, 15:00
Hat sich bedankt: 27 Mal
Danksagung erhalten: 51 Mal

Re: Vorschläge für Edelstein-Algorithmen

Beitrag von Wsxobylydob »

Alternative für das Einsetzen von Edelsteinen bzw. Verkaufen von schlechteren Edelsteinen:
Folgender Algorithmus bezieht die Turmbegleiter und schwarze Edelsteine bisher noch nicht ein.
Der Algorithmus kann erst richtig eingesetzt werden, wenn sichergestellt ist, dass der Bot nicht die selben Items immer wieder vertauscht (->Arenasimulation), da sonst teils Items mit Edelsteinslot gegen ein Item ohne Itemslot getauscht werden.


Kurz gesagt: Der Algorithmus macht grundsätzlich auch das was ich mache, wenn ich Edelsteine einsetze. Dieser schaut sich an, ob die Elementverteilung (s. Einstellungen) in den Edelsteinslots korrekt ist. Falls nicht setzt in die "belegbaren" (negative Veränderung: s. Anhang 2) Edelsteinslots die Edelsteine ein, dessen Element "hinzugefügt" werden muss (positive Veränderung: s. Anhang 1), und dessen Wert von allen im Inventar befindlichen Edelsteinen dieses Elementes am höchsten ist.
Danach "upgraded" er die verfügbaren "Edelsteinslots", indem immer der niedrigste Edelsteinslot eines Elementes mit dem größten Edelstein im Inventar dieses Elementes "geupgraded" wird. Edelsteinslots, die "belegt" werden sollen, werden hier ignoriert.
Dieser Algorithmus sollte weniger ressourcenfressend sein, da er die Arenasimulation nicht Anzahl_der_Edelsteinslots-mal ausführt pro Edelstein ausführt. Und außerdem er durch das Nicht-Verwenden der Arenasimulation weniger Fehler mit sich bringen sollte. Die Routine scheint zwar ressourcenintensiver, jedoch werden große Teile bei nur einem Edelstein im Inventar und korrekter Elementverteilung übersprungen. Die meisten Teile bestehen nur aus Sortierung von Listen und Vergleichen von Zahlen.

Ausführung dieser Routine:
-Login
-Neuer Edelstein im Inventar
SPOILER
EDIT:
"Item mit Edelsteinslot ausgetauscht und/oder Item mit Edelsteinslot eingesetzt (->Veränderung der Anzahl der Edelsteinslot)" nicht nötig
Einstellungen:
Ähnlich wie beim Skillen: Prozentsatz wie viele Edelsteinslots mit welchem Element des Edelsteines belegt werden sollen ( z.B. 60 % Hauptattribut, 40% Ausdauer)

EDIT: Man könnte auch die Edelsteine, dessen Element in den Einstellungen auf 0 % steht, direkt verkaufen, um weitere Berechnungen auszuschließen

ELEMENTSORTIERUNG:
Kein Edelstein im Slot wird auch wie ein Element behandelt (wird in Einstellungen nicht festgelegt, da die Anzahl davon immer 0 sein soll)
Ermittlung von Korrekturen der Elemente der Edelsteinslots:
-Berechnung der absoluten Edelsteinslots pro Element: Prozentsatz_des_Elements * Anzahl_insgesamt_verfügbarer_Edelsteinslots
-Entsprechende Rundung der Elemente zu ganzen Zahlen (Heißt, wenn z.B. 1.15 Glück, 1.4 Ausdauer, 1.45 Hauptattribut => 1 Glück, 1 Ausdauer, 2 Hauptattribut)
-Unterschiede zw. jetziger Verteilung der Elemente und berechneter Idealverteilung (s. Anhang 1) Merken!!

Wenn Veränderungen nötig sind:

Sortierung/Ermittlung der belegbaren Edelsteinslots:
Für jedes Element, von dem Slots überschrieben werden müssen (negative Werte [s. Anhang 1]):
-Alle Edelsteinslots mit diesem Element nach Wert sortieren (kleinster Wert zuerst)
-Nun ausgehend dieser Sortierung die Edelsteinslots auswählen (z.B. bei 2 Überschreibungen den 1. und 2. Edelsteinslot auswählen) und merken
Nun alle Slots aller Elemente zusammenfügen und nach Werten sortieren (s. Anhang 2)

Für alle Elemente:
-Ist Zahl_der_Veränderung für dieses Element über 0? (Soll dieses Element "hinzugefügt" werden) Ja:
--Sind Edelsteine dieses Elementes überhaupt im Inventar? Ja:
---Sortierung aller Edelsteine im Inventar nach Wert [höchster Wert zuerst]
---Für Zahl_der_Veränderung für dieses Element:
----Ist die Edelstein-Listen-Länge dieses Elementes über 0? Ja:
-----Setze ersten Edelstein dieses Elementes (ausgehend von der Sortierung->höchster Wert) in ersten "belegbaren" Itemslot (ausgehend von der Sortierung->niedrigster Wert)
-----Entferne Edelstein aus Liste sowie Itemslot

Hiernach sollte die Ideal-Verteilung soweit erreicht sein, wie sie durch die aktuellen Edelsteine im Inventar erreicht werden kann.

UPGRADES:

Sortierung aller Edelsteinslots nach Wert [niedrigster Wert zuerst] (pro Element eine eigene Liste)
Ausgehend dieser Sortierung:
Für jedes Element (solange das Element überhaupt in einen Edelsteinslot vertreten ist [bzw. die Länge der Liste nicht 0 ist]):
-Sortierung aller Edelsteine im Inventar dieses Elementes nach Wert [höchster Wert zuerst]
-Für jeden Edelsteinslots dieses Elementes (s. Sortierung Slot mit niedrigsten Wert zuerst):
--Soll dieser Edelsteinslot belegt werden? Nein:
---Ist Wert des größten Edelstein (s. Sortierung) größer als dieser Edelsteinslot:
----Ja: Setzte diesen Edelstein in diesen Edelsteinslot ein (->Edelstein wird aus Liste dieses Elementes entfernt)
----Nein: Nächstes Element, da alle Edelsteine nun für ein weiteres Upgrade zu niedrig sind.

Jetzt können alle anderen nicht eingesetzten Edelsteine verkauft werden. (Oder Routine wird nun an Turmbegleitern durchgeführt...)
Dateianhänge
EdelsteinRoutine.xlsx
(11.14 KiB) 346-mal heruntergeladen
Folgende Benutzer bedankten sich beim Autor Wsxobylydob für den Beitrag:
scripter (Sa 5. Nov 2016, 14:40)
Wsxobylydob
Beiträge: 311
Registriert: So 27. Jul 2014, 15:00
Hat sich bedankt: 27 Mal
Danksagung erhalten: 51 Mal

Re: Vorschläge für Edelstein-Algorithmen

Beitrag von Wsxobylydob »

Schreibe Folgendes mal hier rein, statt einem neuem Thread:

Einerseits eine Frage: Was heißt "Automatisch besten Edelstein ermitteln"? Wie berechnet er die beste Kombination aus Item mit schlechterem Edelstein und besseren Edelstein?

Ich würde mir wünschen, dass man bei "Edelstein-Wert für bessere Itemberechnung" eine Option einfügen würde, dass man nicht manuell den Wert immer umstellen müsste, sondern er den Durchschnitt aller Edelsteinewerte des Charakters (oder vielleicht auch der Begleiter) nimmt.
boeserwolf
Core Developer
Beiträge: 721
Registriert: Di 3. Jun 2014, 14:33
Wohnort: Amberg
Hat sich bedankt: 16 Mal
Danksagung erhalten: 71 Mal

Re: Vorschläge für Edelstein-Algorithmen

Beitrag von boeserwolf »

Die Ermittlung des besten Edelsteins erfolgt über das simulieren jedes Edelsteins anhand der Arenasimulation gegen jeweils einen Krieger/Magier/Kundschafter.

Wenn du den Edelsteinwert auf 0 setzt nimmt er nun seit der 4.6.3 den Durchschnitt der gefundenen Edelsteine aus der Mine.
MFBot 5.x: 63626 CodeZeilen in 338 Dateien

Kein Support über PNs(ausgenommen sind explizit im Forum angeforderte Infos die nicht für den öffentlichen Bereich geeignet sind)
Kein Support für die Shakes & Fidget App
Kein Support für den S&F Browser Client
Gesperrt

Wer ist online?

Mitglieder in diesem Forum: Ahrefs [Bot], Bing [Bot] und 1 Gast