• Herzlich Willkommen!

    Nach der Schließung von inDiablo.de wurden die Inhalte und eure Accounts in dieses Forum konvertiert. Ihr könnt euch hier mit eurem alten Account weiterhin einloggen, müsst euch dafür allerdings über die "Passwort vergessen" Funktion ein neues Passwort setzen lassen.

    Solltet ihr keinen Zugriff mehr auf die mit eurem Account verknüpfte Emailadresse haben, so könnt ihr euch unter Angabe eures Accountnamens, eurer alten Emailadresse sowie eurer gewünschten neuen Emailadresse an einen Administrator wenden.

[1.09] Fragen an die Experten zu TreasureClasses und mf

Status
Für weitere Antworten geschlossen.
Tub schrieb:
Edit um 19:21
http://diablo2.ingame.de/tips/calcs/dropcalc.php

kann derzeit nur die chancen für "basisitems" berechnen, aber zumindest das tschako bei meppl hell stimmt schon mal :)

die TCs von champs / uniques werden nicht berücksichtigt, er kennt noch keine "Farben", keine uniques/sets, keinen modifizierten nodrop, nur 1 pick, etc...

aber ich hab erstmal die schnauze voll vom Programmieren und werde mich anderen Tätigkeiten widmen (ich hab da nochn Giftpfeil auf dem der Name von baal norm steht ;))
:no:

Sowas ist doch reif für einen Doppelpost ;)

Ich bin gerade per Zufall auf deinen Edit gestossen, weil ich dich bitten wollte mir mal den Link dazu zu schicken.

Jetzt werde ich das Teil mal testen (soweit es geht).


/edit: :D

Drops von: Aasvogel (hell) Level: 90
TreasureClass: "Swarm 1 (H)"

Chance auf Adlerkugel: 0%
Öhm, die sind nur 80 - aber der Calc scheint generell immer 90 anzuzeigen :confused:

Es fehlen Gefallene in der Auswahl der normalen Monster.


/edit2:
Ich speicher mir mal den Source davon ab, wenn ich darf ;)
 
>> Öhm, die sind nur 80 - aber der Calc scheint generell immer 90 anzuzeigen :confused:

Drops von: Aasvogel (hell) Level: 80
TreasureClass: "Swarm 1 (H)"

Chance auf Adlerkugel: 0%
:auchconfused:

bei mir stimmt's, werde mir den code morgen nochmal genauer angucken.

>> Es fehlen Gefallene in der Auswahl der normalen Monster.

if (atoi(array[158]) == 1) return; // minHP

dummes copy/paste-programmieren :D
wenn minHP 0 ist soll das Monster gelöscht werden, nicht bei 1 ;) fixed.


>> Ich speicher mir mal den Source davon ab, wenn ich darf ;)

habe nix gegen dezentrale Backups einzuwenden, solange du den source nicht an Microsoft verkaufst :D

(note to self: copyright-hinweis in den source einfügen ;) :D)


Mfg
Tub
 
Tub schrieb:
>> Öhm, die sind nur 80 - aber der Calc scheint generell immer 90 anzuzeigen :confused:


:auchconfused:

bei mir stimmt's, werde mir den code morgen nochmal genauer angucken.
Ehe du stundenlang suchst: Es hängt irgendwie mit der Anzahl der Spieler zusammen - ich hab mal testweise 8 Spieler eingetragen und nur dann trat dieses Phänomen auf; du musst also die Checks auf ungültige Werte irgendwie ändern.
Tub schrieb:
>> Es fehlen Gefallene in der Auswahl der normalen Monster.

if (atoi(array[158]) == 1) return; // minHP

dummes copy/paste-programmieren :D
wenn minHP 0 ist soll das Monster gelöscht werden, nicht bei 1 ;) fixed.
^^
Tub schrieb:
>> Ich speicher mir mal den Source davon ab, wenn ich darf ;)

habe nix gegen dezentrale Backups einzuwenden, solange du den source nicht an Microsoft verkaufst :D

(note to self: copyright-hinweis in den source einfügen ;) :D)
OpenSource ownz :D
 
Jungs, anerkennung... alle mathe LK gehabt oder noch am haben,wa?! *g*
Das scheint ein richtig schwieriges Thema zu sein... naja dann mal viel spass und glück weiterhin... leider kann ich mit meinem Stochastik GK und der kram der da vor kam nichts anfangen und verstehe max die hälfte, wenn net weniger :D

Viel Erfolg bei der Lösung des Problems... (soll ja nen Dropcalc werden, wenn ich das zumindest verstanden hab,oder?)

*schwups*
 
>> black_spy
>> Ehe du stundenlang suchst:

ist der bug immer noch da?

>> OpenSource ownz :D

ingame GamerShirts ownzen auch :p


>> [GDS]Belshirash
>> Jungs, anerkennung... alle mathe LK gehabt oder noch am haben,wa?! *g*

ehm, ja, Stufenbester im Mathe-LK gewesen ;) Das hat mit dem Calc allerdings wenig zu tun.

>> Viel Erfolg bei der Lösung des Problems... (soll ja nen Dropcalc werden, wenn ich das zumindest verstanden hab,oder?)

jupp, und die aktuelle beta sieht so aus:
http://diablo2.ingame.de/tips/calcs/dropcalc.php

hab jetzt auch die uniques eingebaut, sets fehlen noch, sowie einige andere (wichtige) Dinge.. Superunique-Monster fehlen, die "picks" der TCs werden nicht ausgewertet, und es droppen immer noch die schönen rare Zod-Runen ;)
Aber das wird schon noch ..

Mfg
Tub
 
so.. Sets sind eingebaut, aktuelle beta uploaded.

gehe ich recht in der Annahme dass das mindest-mlvl für drops von set-items aus der level-Spalte geholt wird und für alle items des sets gilt ? (warum steht sowas eigentlich nicht in jarulfs guide und warum ist die file-beschreibung im phrozenkeep falsch ? :motz: )

btw: wo steht eigentlich dass das CowSet nur im Cowlvl droppen kann ? :confused:
ist das hard-coded oder habe ich irgendwelche Checks übersehen ?


weiter im Text.. ItemTypes.txt, die Magic/Rare/Normal-Spalten

Magic=1 -> Item ist immer magic oder Rare
Rare=1 -> Item kann rare werden
Normal=1 -> Item ist immer weiss

wenn Normal=1, dann ist immer Rare=0 und Magic=0

richtig soweit ?

Ach ja, welche Werte gelten ? Immer die aus dem direkten parent-Typ oder muss ich da den kompletten Typenbaum zurückverfolgen ? Logisch wäre nur ersteres, aber ich frag mal nach - im phrozenkeep hab ich dazu nix gefunden.


Mfg
Tub
 
Tub schrieb:
so.. Sets sind eingebaut, aktuelle beta uploaded.
:top:
Tub schrieb:
gehe ich recht in der Annahme dass das mindest-mlvl für drops von set-items aus der level-Spalte geholt wird und für alle items des sets gilt ? (warum steht sowas eigentlich nicht in jarulfs guide und warum ist die file-beschreibung im phrozenkeep falsch ? :motz: )
Ja, das ist korrekt. Jarulfs Guide ist schon etwas älter und damals hat sich keiner damit befasst. Und im PK sind die meisten Guides nur halbwegs korrekt; die besseren Infos gibts meist in deren Forum ;)
Tub schrieb:
btw: wo steht eigentlich dass das CowSet nur im Cowlvl droppen kann ? :confused:
ist das hard-coded oder habe ich irgendwelche Checks übersehen ?
Das ist in den DLLs codiert: Da steht in etwa, dass die 30ste gelesene Set-Zeile (32 in Excel) nur von den Monstern gedropt werden kann, die mit populatedID 391 (müsste Hell Bovine sein, IIRC) identifiziert werden.
Tub schrieb:
weiter im Text.. ItemTypes.txt, die Magic/Rare/Normal-Spalten

Magic=1 -> Item ist immer magic oder Rare
Rare=1 -> Item kann rare werden
Normal=1 -> Item ist immer weiss

wenn Normal=1, dann ist immer Rare=0 und Magic=0

richtig soweit ?
Nicht ganz.
Magic = 1 -> immer nur magisch (oder besser, wenn Rare = 1)
Rare = 1 -> alles
Normal = 1 -> immer nur normale Qualität (egal, ob die anderen auch gesetzt sind)

Juwele haben z.B. die besagte Magic = Rare = 1 Kombination, Charms haben nur Magic = 1.
Tub schrieb:
Ach ja, welche Werte gelten ? Immer die aus dem direkten parent-Typ oder muss ich da den kompletten Typenbaum zurückverfolgen ? Logisch wäre nur ersteres, aber ich frag mal nach - im phrozenkeep hab ich dazu nix gefunden.
Immer die parents.
Tub schrieb:
>> black_spy
>> Ehe du stundenlang suchst:

ist der bug immer noch da?
Jup. Sobald die Summe der eingebenen Spieler > 7 wird, aktuallisiert sich die Level-Anzeige nicht mehr bei den Berechnungen.


@LK-Topic: Jo, Mathe-LK hatte ich auch (man tut ja alles für einen guten Schnitt im Abi :D). Aber Stochastik stand bei uns nicht im Lehrplan :(
 
aaarrgghh

da wollte ich mich grad zu ner gemütlichen nacht mit finalfantasy8 verabschieden da blinkt's rechts oben und mein mailer teilt mir mit dass hier im thread neue Arbeit auf mich wartet :D

hm, später.. jetzt gibts erstmal ff8 ;)


>> Das ist in den DLLs codiert: Da steht in etwa, dass die 30ste gelesene Set-Zeile (32 in Excel) nur von den Monstern gedropt werden kann, die mit populatedID 391 (müsste Hell Bovine sein, IIRC) identifiziert werden.

grml.. blizzard :motz:
warum haben die nicht einfach das level des sets auf 99 gesetzt und die set-items von der cow-TC direkt droppen lassen ?! wär zu einfach gewesen, oder ? :motz:


>> Jup. Sobald die Summe der eingebenen Spieler > 7 wird, aktuallisiert sich die Level-Anzeige nicht mehr bei den Berechnungen.

Ach, alles klar, ist so gut wie gefixed. Sollte in der nächsten beta nicht mehr drin sein.


Mfg
Tub
 
tz ... du hast Zeit für Freizeit? Ich bin ATM froh, wenn ich auf 4 bis 5 h Schalf pro Nacht komme.


>>> Jup. Sobald die Summe der eingebenen Spieler > 7 wird, aktuallisiert sich die Level-Anzeige nicht mehr bei den Berechnungen.
>
>Ach, alles klar, ist so gut wie gefixed. Sollte in der nächsten beta nicht mehr drin sein.

K.a., ob du zwischendurch mal wieder ne neue Version hochgeladen hast, aber ATM ist der Fehler immer noch drin.


Sonst fielen mir z.B. diese Sachen auf:
"Gute" Farben sind in dieser Reihenfolge: gold (Unique), grün (Set), gelb (rare), blau (magic), weiss (normal)
Da fehlt Superior, welches nach magic und vor normal gecheckt wird.

Dann diese Ausgabe bei einem Balrog:
Drops von: Balrog (hell) Level: 90
TreasureClass: "Act 4 (H) H2H A"

Chance auf Adlerkugel: 0.0013403%
Farbe relative Chance absolute Chance absolutes Verhältnis
Unique 0% 0% 0:1
Set 0% 0% 0:1
Rare 1.190984% 0.0000159% 1:6264318
Magic 46.0499808% 0.0006172% 1:162013
Normal 52.759035% 0.0007071% 1:141410
Gut -24.8277811% -0.0003327% 1:-300499
Schlecht 79.4123883% 0.0010644%
1. musst du auf die Reihenfolge achten (s.o.)
2. wenn einer der Checks bereits einen Wert <= 128 liefert, dann brauchst du die Qualitäten drunter nicht mehr prüfen, da sie nicht mehr fallen können. Hier müsste bei Superior Schluss sein, wenn ich mich gerade nicht verrechnet habe.
 
>> tz ... du hast Zeit für Freizeit? Ich bin ATM froh, wenn ich auf 4 bis 5 h Schalf pro Nacht komme.

gelegentlich hab ich das, jo. Dann stellt sich immer die Frage: für d2.de arbeiten oder nicht ? ;)

>> K.a., ob du zwischendurch mal wieder ne neue Version hochgeladen hast, aber ATM ist der Fehler immer noch drin.

hab keine uploaded. Hab ja noch nichts geändert.

>> Da fehlt Superior, welches nach magic und vor normal gecheckt wird.

Ist keine Farbe, das ist alles weiss ;)

>> 1. musst du auf die Reihenfolge achten (s.o.)

die checks müssten in der richtigen Reihenfolge sein, nur die Ausgabe ist so rum..

>> 2. wenn einer der Checks bereits einen Wert <= 128 liefert, dann brauchst du die Qualitäten drunter nicht mehr prüfen, da sie nicht mehr fallen können. Hier müsste bei Superior Schluss sein, wenn ich mich gerade nicht verrechnet habe.

jo, negative wahrscheinlichkeiten sind mir auch schon aufgefallen, habe aber bislang keinen bug finden können. Ich mache mich demnächt dran.


Mfg
Tub
 
Noch was zu den obigen Zahlen: Wie kommt der Calc auf den Wert bei Magic?

Ich bekomme folgendes per Papier/ Stift:
Chancen nach ItemRatio.txt: (mlvl = 90, qlvl = 1, MF = 0)
uni - 1/271
set - 1/121
rare - 1/121
magic - 1/3

Damit ergibt sich bei mir als Chance auf Magic: 270/271 * 120/121 * 120/121 * 1/3 + 270/271 * 1/121 ~= 32,66% + 0,82% = 33,48%
 
:hy:

nummer 1:
habe heute die meiste zeit damit verbracht den code aufzuräumen, und so den quellcode von knapp über 2k auf 1.5k zeilen runtergebracht ;) Jetzt sieht's besser aus, und ich kann endlich den kleinen dummen bug an einer Stelle fixen anstatt an 8356439 ;)

nummer 2:
habe die Levels.txt eingelesen und wollte unbenutzte Monster über diese aussortieren.
Tjo.. Diablo, Mephisto und Baal stehen nich in der Levels.txt und sind jetzt ausm Calc raus :D
Macht nix, dafür ist Pindle drin :rolleyes:

TigerSeele konnte mir auch nicht weiterhelfen.. hast du ne Idee wie ich unbenutzte Monster zuverlässig löschen kann?

Einfach alle drinlassen ist nicht drin, dann erscheint z.B. Nihlatak auch bei den normalen Monstern (mit mlvl = 95 statt 98) - also filtern muss sein. Die eBoss oder spawned-Spalten nutzen bringt auch nicht weiter.
Wo kommt Diablo ins Spiel rein? Irgendwie muss ich dem Calc beibringen dass er den nicht löschen soll, nur wie? :(

nummer 3:
wenn ich die Level schon drin hab kann ich mich auch gleich an die Truhen-drops machen ;) Wie funktionieren die eigentlich ? In der Levels.txt oder so habe ich keine TreasureClass gefunden. TreasureClasses mit Ebenen-namen gibt's auch keine. Benutzen die ein komplett anderes System oder habe ich da was übersehen ?

nummer 4:
Dein durchgerechneter drop:
Code:
base_chance = myratio[6] - (mlvl - qlvl)/myratio[7];
chance_before_playermf = 128 * base_chance - (128 * base_chance * cm_magic / 1024);
dmf_playermf = MF;
chance_after_playermf = chance_before_playermf * 100 / (100 + dmf_playermf);
if (chance_after_playermf <= 128) { chance_magic = chance_left; return; }
chance_magic = 128 / chance_after_playermf * chance_left;
chance_left -= chance_magic;

per hand durchgerechnet:

Adlerkugel: class = 1, uber = 0
magic = 17
magicdiv = 6

base_chance = 17 - (90-2)/6 = 7/3
chance_before_playermf = 128 * 7/3 - (128 * 7/3 * 0/1024) = 128*7/3
chance_after_playermf = (128*7/3) * 100 / (100 + 0) = 128*7/3
chance_magic = 128 / (128*7/3) = 3/7 :eek:


ehm, formelfehler, hab ich ne falsche ratio, oder was ist jetzt schiefgelaufen ?! :confused:

nummer 5:
magic/rare/normal-Spalten sind noch nicht eingebaut. Sowas zu debuggen ist etwas umständlich wenn man jedesmal 180 KB zu einem lahmen webserver uppen muss. Sobald ich wieder in LAN-reichweite meines Linux-rechners bin mach ich damit weiter.

nummer 6:
Aktuelle Beta ist trotzdem up ;)
DropCalc-Beta und mein Debug-log (da stehen u.A. die gelöschten Monster drin)


Mfg
Tub
 
Tub schrieb:
re :hy:
Tub schrieb:
nummer 2:
habe die Levels.txt eingelesen und wollte unbenutzte Monster über diese aussortieren.
Tjo.. Diablo, Mephisto und Baal stehen nich in der Levels.txt und sind jetzt ausm Calc raus :D
Macht nix, dafür ist Pindle drin :rolleyes:

TigerSeele konnte mir auch nicht weiterhelfen.. hast du ne Idee wie ich unbenutzte Monster zuverlässig löschen kann?

Einfach alle drinlassen ist nicht drin, dann erscheint z.B. Nihlatak auch bei den normalen Monstern (mit mlvl = 95 statt 98) - also filtern muss sein. Die eBoss oder spawned-Spalten nutzen bringt auch nicht weiter.
Wo kommt Diablo ins Spiel rein? Irgendwie muss ich dem Calc beibringen dass er den nicht löschen soll, nur wie? :(
Lilly konnte mir damals auch nicht helfen; im PK und LL fand ich auch nichts.
Monstererkennung ist halt nicht so einfach, da der Mechanismus aus 3 Teilen besteht:
1. Levels.txt M1-25 Spalten
2. Levels.txt S1-25 Spalten
3. Maps (DS1-Dateien)
Vorallem Punkt 3 ist der Knackpunkt hierbei, weil Superuniques, Aktbosse und einge andere Monster direkt über die Maps erstellt werden. Der Aufbau dieser Dateien ist nicht gerade trivial und die Zuordnungsvorschrift Monster -> IDs in Mapfiles ist auch nicht bekannt, so dass vieles dort eher empirisch ist und auf wackligen Füssen steht.
Die einfachste Vorgehensweise ist, dass man versucht möglichst viel über die monstats.txt zu filtern und für den Rest manuelle Filter (Superuniques.txt) erstellt.
Tub schrieb:
nummer 3:
wenn ich die Level schon drin hab kann ich mich auch gleich an die Truhen-drops machen ;) Wie funktionieren die eigentlich ? In der Levels.txt oder so habe ich keine TreasureClass gefunden. TreasureClasses mit Ebenen-namen gibt's auch keine. Benutzen die ein komplett anderes System oder habe ich da was übersehen ?
Zuordnung der TCs zu den Truhen ist recht einfach:
Du nimmst die Level-IDs eines Aktes, teilst ihre Spanne x durch 3 und ordnest den ersten x/3 Maps die entsprechende A TC zu, den folgeden x/3 die B und dem Rest C.

Die Droproutine - tja, die ist nicht wirklich einfach:
1. Normale (zufällige) Kisten - gehen analog zu Monstern
2. goldene (bzw. feste generierte) Kisten:
Zunächst wird die Qualtität bestimmt:
2% Unique
4% Set
6% Rare
20% Magic (Variante 1)
30% Magic (Variante 2)
38% Magic (Variante 3)

Dann wird die zugehörige Chest-TC betrachtet und ihre 4 Drops bestimmt, wobei immer die oben gewählte Qualität gedropt wird, wenn möglich. Dabei können 0 bis 4 Gegenstände fallen.

Unique, Set und Rare:

Danach untersucht das Spiel den letzten generierten Gegenstand, wenn dieser nicht mind. magisch ist, wird erneut ein Drop mit der oben gewählten Qulität ausgeführt.

Ist der vorherige Check ohne Erfolg gewesen -sprich kein Gegenstand generiert worden- oder der zusätzliche Drop nicht mind. magisch, dann geht's wie folgt weiter:
1. Es werden 10 Drops aus der entsprechenden TC versucht - die Qualität ist diesmal magisch. [0 bis 4 Gegenstände pro Drop möglich]. Dabei wird bei jeden Drop wieder der letzte generierte Gegenstand untersucht. Wenn er magisch ist, ist dieser Schritt zu ende. Die Anzahl der Drops, also der Iterationen von diesem Schritt wird mitgezählt.
2. Ist die Zahl der Drops im vorherigen Schritt < 4, so werden wieder 4 Drops mit zufälliger Qualität ausgeführt.
3. 5 Gold Haufen, 2 Mana Pötte + 2 Heiltränke

Magic (Variante 1):
10 Drops (0-4 Gegenstände), jeweils der letzte generierte Gegenstand wird betrachtet. Wenn 3 magische Gegenstände dabei sind ist Ende. War keiner der untersuchten ein Gegenstand, geht's mit dem obigen Verfahren weiter.

Magic (Variante 2):
10 Drops, jeweils der ... . Ende bei 2 magischen Gegenständen. War wie bei Variante 1 kein Gegenstand bei den untersuchten dabei, erfolgt ein zusätzlicher Drop + Goldhaufen.

Magic (Variante 3):
Ein Drop -> kein Gegenstand -> Gold.


Viel Spass beim Berechnen ;)

Tub schrieb:
nummer 4:
Dein durchgerechneter drop:
Code:
base_chance = myratio[6] - (mlvl - qlvl)/myratio[7];
chance_before_playermf = 128 * base_chance - (128 * base_chance * cm_magic / 1024);
dmf_playermf = MF;
chance_after_playermf = chance_before_playermf * 100 / (100 + dmf_playermf);
if (chance_after_playermf <= 128) { chance_magic = chance_left; return; }
chance_magic = 128 / chance_after_playermf * chance_left;
chance_left -= chance_magic;

per hand durchgerechnet:

Adlerkugel: class = 1, uber = 0
magic = 17
magicdiv = 6

base_chance = 17 - (90-2)/6 = 7/3
chance_before_playermf = 128 * 7/3 - (128 * 7/3 * 0/1024) = 128*7/3
chance_after_playermf = (128*7/3) * 100 / (100 + 0) = 128*7/3
chance_magic = 128 / (128*7/3) = 3/7 :eek:


ehm, formelfehler, hab ich ne falsche ratio, oder was ist jetzt schiefgelaufen ?! :confused:
In Jarulfs Guide fehlen die Gaussklammern zum Abrunden (und ich hab sie damals auch nicht angeben, wie mir gerade auffiel):
17 - [(90 - 1)/6] = 17 - [14 + 5/6] = 17 - 14 = 3
Ergo: chance_magic = 1/3

Hier die Korrekturen:
base_chance = base - [(mlvl - qlvl)/divisor]

chance_before_playermf = 128*base_chance - [128*base_chance(cq/1024)]

chance_after_playermf = [chance_before_playermf * 100/(100+mf)]
 
wow, schneller post :hy:

Als Belohnung ^^ fürs schnelle posten kriegst du auch ganz viele neue Fragen :D

>> 1. Levels.txt M1-25 Spalten
>> 2. Levels.txt S1-25 Spalten

die hab ich (und sicherheitshalber auch U1-25, auch wenn ich nicht weiss ob das effektiv zusätzliche Monster erkennt - egal, stört ja nicht)

>> 3. Maps (DS1-Dateien)
>> Vorallem Punkt 3 ist der Knackpunkt hierbei, weil Superuniques, Aktbosse und einge andere Monster direkt über die Maps erstellt werden. [snip]

sowas in der Richtung hab ich befürchtet :(

also doch ne positiv-liste per hand anlegen .. ich geh mal davon aus dass blizz die populate-id's nicht mehr ändern wird. Wenn doch werd ich sauer ;)

>> Zuordnung der TCs zu den Truhen ist recht einfach:
>> Du nimmst die Level-IDs eines Aktes, teilst ihre Spanne x durch 3 und ordnest den ersten x/3 Maps die entsprechende A TC zu, den folgeden x/3 die B und dem Rest C.

act 1 hat die Level mit id 1-39, d.h. 1-13 = A, 14-26 = B, 27-39 = C ?

act 2 = 40-74, 35 stück.. wie teilt man da ? 35/3 = 11.6, abrunden ? also 40-50 = A, 51-61 = B, 62-74 = C ?

(ich hab die Null-Zeile nicht mitgezählt, die Town-Eben schon, falls das falsch ist so sag mir das bitte.)

Blutmoor wäre also "Act 1 Chest A", "Act 1 (N) Chest A" und "Act 1 (H) Chest A" - richtig ? (wieso hab ich die "Chest"-TC's eben übersehen ?! :confused: )


>> Die Droproutine - tja, die ist nicht wirklich einfach:
>> 1. Normale (zufällige) Kisten - gehen analog zu Monstern

passt. Die kauf ich :D

>> 2. goldene (bzw. feste generierte) Kisten:

:eek: Als du mir in einem der ersten posts gesagt hast "das hättest du sicher auch ohne meine Hilfe rausgefunden" hab ich dir schon nicht geglaubt, aber das ? :eek:

Ich verschiebe diese Art der Truhen mal ein ganzes Stück nach hinten :(


>> In Jarulfs Guide fehlen die Gaussklammern zum Abrunden

Sachen gibt's.. seit wann rundet Blizzard denn ?! :confused: :D

bau ich gleich mal ein :)


eine weitere Frage habe ich noch, nur wenn du die Antwort aus dem Kopf weisst (sonst code ich mir dafür ein paar Zeilen)

gibt es TC's mit einem pick-Wert > 1 oder einem nodrop-Wert die in einer anderen TC enthalten sind ?

Ich möchte nur wissen ob ich die nodrop-modifikation und mehrere picks nur in der ersten TC beachten muss oder ob ich dafür den kompletten Baum durchlaufen müsste..


Mfg
Tub
 
Edit will er nich wegen zu vielen Smileys :motz:

black_spy schrieb:
Magic = 1 -> immer nur magisch (oder besser, wenn Rare = 1)
Rare = 1 -> alles
Normal = 1 -> immer nur normale Qualität (egal, ob die anderen auch gesetzt sind)

habe folgende logik eingebaut (der lesbarkeit halber mal in pseudo-code):

  • wenn normal == 1 -> chance_norm = 1, fertig
  • wenn magic == 1 und rare == 0 -> chance_magic = 1, fertig
  • berechne chancen per ratio / mlvl / qlvl / mf
  • wenn magic == 1 (logischerweise muss hier auch rare == 1) -> die 3 "weissen" chancen zu chance_magic addieren

klingt das richtig ?


dann sagt er bei basis-items jetzt was zum ilvl und zur maximalen Sockelzahl..

und durch entfernen der leerzeichen in den listen ist die datei jetzt "nur" noch 160 kb gross :rolleyes:


aktuelle beta gibt's aber nicht, irgendwo hab ich wieder einen String nicht terminiert oder ein Semikolon vergessen so dass der IE gar nix mehr tut, und mir auch nicht sagt wo der Fehler ist :motz:
Opera sagt der Fehler ist in Zeile 910 (die Zeile ist leer.. :rolleyes:)
Mozilla hab ich nicht aufm notebook.

ich hasse es wenn das passiert :(


Edit (hurra, geht ^^)
http://diablo2.ingame.de/tips/calcs/dropcalc.php
hab den Fehler doch noch gefunden...

Code:
Coder *Tub = this->findUser();
if ((Tub->currentAction == CODING) && (Tub->currentAction->duration >= 13h))
{
  Tub->sendTo("bed");
  this->shutdown();
}

Mfg
Tub
 
Tub schrieb:
[...]
also doch ne positiv-liste per hand anlegen .. ich geh mal davon aus dass blizz die populate-id's nicht mehr ändern wird. Wenn doch werd ich sauer ;)
Vielleicht machen sie die IDs einheitlicher, so dass man bei LoD Monstern nicht immer addieren muss.
Tub schrieb:
>> Zuordnung der TCs zu den Truhen ist recht einfach:
>> Du nimmst die Level-IDs eines Aktes, teilst ihre Spanne x durch 3 und ordnest den ersten x/3 Maps die entsprechende A TC zu, den folgeden x/3 die B und dem Rest C.
[...]
(ich hab die Null-Zeile nicht mitgezählt, die Town-Eben schon, falls das falsch ist so sag mir das bitte.)
[...]
Blutmoor wäre also "Act 1 Chest A", "Act 1 (N) Chest A" und "Act 1 (H) Chest A" - richtig ? (wieso hab ich die "Chest"-TC's eben übersehen ?! :confused: )
[...]
>> In Jarulfs Guide fehlen die Gaussklammern zum Abrunden

Sachen gibt's.. seit wann rundet Blizzard denn ?! :confused: :D
Die Zuordnungen sind ok.
D2 rundet ja nur selten "richtig", sondern schneidet häufig den Rest einfach ab; so auch bei den MF Berechnungen.
Tub schrieb:
gibt es TC's mit einem pick-Wert > 1 oder einem nodrop-Wert die in einer anderen TC enthalten sind ?

Ich möchte nur wissen ob ich die nodrop-modifikation und mehrere picks nur in der ersten TC beachten muss oder ob ich dafür den kompletten Baum durchlaufen müsste..
IIRC trifft das nur auf die Tränke TCs zu - aber du bist auf der sicheren Seite wenn du den ganzen Baum durchläufst, denn Blizzard kann das ja auch ohne weiteres ändern. Du erinnerst dich sicherlich noch an den Algorithmus:
1. Wähle BaseTC tc vom Monster
2. Währe eine zufällige tc1 aus tc
3. Ist tc1 NoDrop, dann Ende
4. Ist tc1 ein Gegenstand, dann Ende
5. tc = tc1
6. gehe zu 2.
Tub schrieb:
Edit will er nich wegen zu vielen Smileys :motz:
Das Problem hatte ich auch ;)
Tub schrieb:
habe folgende logik eingebaut (der lesbarkeit halber mal in pseudo-code):

  • wenn normal == 1 -> chance_norm = 1, fertig
  • wenn magic == 1 und rare == 0 -> chance_magic = 1, fertig
  • berechne chancen per ratio / mlvl / qlvl / mf
  • wenn magic == 1 (logischerweise muss hier auch rare == 1) -> die 3 "weissen" chancen zu chance_magic addieren

klingt das richtig ?
Ja.
 
oki.. nächster Punkt auf der ToDo-List: nodrop-modifikationen und picks ;)

>> IIRC trifft das nur auf die Tränke TCs zu - aber du bist auf der sicheren Seite wenn du den ganzen Baum durchläufst, denn Blizzard kann das ja auch ohne weiteres ändern.

Es geht mir um den "Chance zu droppen"-Eintrag im Formular. Der wird ja bei jeder Gelegenheit updated.. ich weiss nicht wie geschwindigkeitskritisch das ist wenn ich dafür den kompletten baum durchlaufe :(
Mal schauen ob ich das Feld drinlasse oder ob ich die Info nur bei den Ergebnissen anzeige oder was auch immer..
Ich fürcht ich werd demnächst nen grösseren public betatest im comm anleiern müssen ;)

>> Du erinnerst dich sicherlich noch an den Algorithmus:

türlich.. ganz so weit bin ich noch nicht aus der Materie raus ;)


thx ma wieder, ich mach mich dann an die Arbeit..


Edit: nodrop ist drin, ich hoffe die Formeln sind richtig (hab se direkt so von jarulf abgeschrieben)

Code:
if (playerbonus > 1)
{
  var fraction = nodrop / sumprob;
  fraction = Math.pow(fraction, playerbonus);
  var new_nodrop = (sumprob-nodrop) * fraction / (1-fraction);
  var new_sumprob = sumprob - nodrop + new_nodrop;
}
wird da eigentlich noch gerundet irgendwo ?


aktuelle beta ist up. Klick bitte mal auf den "speed-test" unten und teil mir die Ergebnisse mit, danke! :)


Ich werd noch ein wenig an der Ausgabe arbeiten, mir dann ein paar Gedanken zu den picks machen und danach wohl den angekündigten public betatest durchziehen (browser-kompatibilität / geschwindigkeit etc)


Mfg
Tub
 
OK - leider etwas spät, aber das kommt davon, wenn man seine Postings einfach editiert ;)

Speed Test:
Mozilla 1.3a: 10.9s und 2.4s
IE6: etwa gleich
Phoenix: 8.9s und 1.9s

Allerdings dauert das Laden des Calcs ungleich länger ;)


>wird da eigentlich noch gerundet irgendwo ?

Bei der Rechnung werden die Nachkommastellen von new_nodrop abgeschnitten.


Hab ich noch irgendwelche Sachen übersehen? :angel:
 
nein, nichts übersehen :)

dankeschön!

das nächste mal hol ich mir halt den extra-post ab :D
 
*extraposthol* :D

wie angekündigt picks..

mein algorithmus durchläuft alle treasureclasses des drops rekursiv.
Einer der Parameter ist die aktuelle Chance dass ein Drop in der TC landet - beim ersten Aufruf halt 1, und ab dann immer niedriger.
Ich schreib's mal in code - ich selber kann code besser lesen als komische erklärungen, ich hoffe dir geht's genauso ;)


Code:
function SimulateDropsRec(TC, chance)
{
  (chance modifier)
  (nodrop-krams)

  for (i=0;i<drops.length-1;i++)
  {
    var newchance = (drops[i].prob / sumprob) * chance;
    if (drops[i].type == item)
      items[drops[i].item].chance += newchance;
    if (drops[i].type == treasureclass)
      SimulateDropsRec(drops[i].tc, newchance);
  }
}

falls dein calc das gleiche system benutzt sollte das kein Problem gewesen sein :)

jetzt die pick-modifikation. Ich habe NICHT vor den Erwartungswert zu berechnen (keine lust auf emails warum irgendwo eine chance für tränke > 1 ist oder so ;)) sondern die chance, dass in dem drop mindestens einmal das gewünschte item ist. Die Formeln dafür sind etwas komplexer, wäre nett wenn du die gegenliest :)

Eigentlich müsste ich dann auch den Erwartungswert berechnen, sonst stimmen die Chancen für "mindestens 1 set-item" nicht - wenn z.B. immer 2 Brustpanzer droppen mit 50% chance auf set, dann wäre "100% chance auf mindestens 1 brustpanzer" * "50% chance auf set" nicht das richtige ergebnis. Da muss ich noch ein wenig drüber nachdenken, ob ich kleinere Ungenauigkeiten in der Hinsicht hinnehme oder ob ich's einbaue, und wie ich in dem Fall den Usern die kleine Differenz erkläre.


Schritt 1: für picks > 1

Code:
function SimulateDropsRec(TC, chance)
{
  (chance modifier)
  (nodrop-krams)

  for (i=0;i<drops.length-1;i++)
  {[color=red]
    var newchance = (drops[i].prob / sumprob);
    if (picks > 1) newchance = 1 - (1-newchance) ^ picks;
    newchance *= chance;[/color]

    if (drops[i].type == item)
      items[drops[i].item].chance += newchance;
    if (drops[i].type == treasureclass)
      SimulateDropsRec(drops[i].tc, newchance);
  }
}

wenn ich nicht total übermüdet bin müsste das zumindest stimmen wenn es die erste TC im drop ist. Ich bin mir aber nicht 100% sicher ob ich wirklich erst hinterher newchance *= chance rechnen soll oder nicht schon vorher.


Schritt 2: negative picks.
Wenn dort mehrere Drops aus einer TC ausgewählt werden, müssten die in der nächsten TC erst ausgewertet werden. Dafür ein zusätzlicher parameter.
Bei einem Item wird die Anzahl der drops gar nicht bewertet - es geht ja darum dass mindestens 1 fällt, und die chance ändert sich auch nicht wenn 100 fallen.

Code:
function SimulateDropsRec(TC, chance, [color=red]parentpicks[/color])
{
  (chance modifier)
  (nodrop-krams)

  if (picks > 0)
    for (i=0;i<drops.length-1;i++)
    {
      var newchance = (drops[i].prob / sumprob);
      if (picks > 1) newchance = 1 - (1-newchance) ^ (picks [color=red]* parentpicks[/color]);
      newchance *= chance;

      if (drops[i].type == item)
        items[drops[i].item].chance += newchance;
      if (drops[i].type == treasureclass)
        SimulateDropsRec(drops[i].tc, newchance, [color=red]1[/color]);
    }
  else
    for (i=0; (i<drops.length-1) && [color=red](picks > 0)[/color];i++)
    {[color=red]
      var picked = prob;
      if (picked > picks) picked = picks;
      picks -= picked;[/color]

      if (drops[i].type == item)
        items[drops[i].item].chance += [color=red]chance[/color];
      if (drops[i].type == treasureclass)
        SimulateDropsRec(drops[i].tc, [color=red]chance[/color], [color=red]picked * parentpicks[/color]);
    }
}

klingt das für dich genauso logisch wie es für mich nach einer durchgemachten nacht klingt? ;)


Wenn ja, dann müsste formel-mässig endlich alles drin sein :)
Dann müsst ich mich nur noch um die anderen buttons kümmern ("Alle Drops anzeigen", "Zufälligen Drop", "Beste dropchance des Items zeigen" etc) - aber das sind ja die selben Formeln.


Vergleich: IST-Rune bei Meppl Hell, alleine im Spiel:

alter Calc (ohne picks)
Chance: 0.0001399% (1:714342)

neuer Calc (mit picks)
Chance: 0.0008763% (1:114113)


ach ja, ich gehe nach wie vor von 8 picks bei meppl hell aus. Wie ich den komischen "6 von 8" bug einbauen soll muss ich mir noch überlegen.


ach ja, neuer calc ist up :)


Mfg
Tub
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben