• 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.
>Wenn du noch ein paar mal die Höhle leerst und zu genaueren Ergebnissen kommst, lass es mich bitte wissen.

Sind zwar noch nicht ganz genau (bzw. nicht genügend viele), aber ein Trend ist erkennbar.

drops001.jpg


Zur Erklärung:
Die Spaltennamen, P(X = k) geben die theoretische Wahrscheinlichkeit an, dass ein Monster unter den genannten Bedingungen genau k Gegenstände dropt.
Die Zeilen dadrunter geben die von mir notierten Häufigkeiten wieder und die daraus resultierenden relativen Häufigkeiten.


@nookie: THX ;-)
 
black_spy schrieb:
Sind zwar noch nicht ganz genau (bzw. nicht genügend viele), aber ein Trend ist erkennbar.
Also für mich ist das SEHR eindeutig ;)

Die Wahrscheinlichkeit dass die letzte Messreihe mit picks=24 so ausfällt wenn nur 6 drops berechnet werden ist sehr gering.
Genaugenommen: bei 85 drops ist die chance dass nie weniger als 5 items fallen:
2 * 10 ^ -82

die Wahrscheinlichkeit dass pindle in einem run grisi krone, szepter und schild droppt ist glaube ich grösser ;)


thx

Mfg
Tub
 
Laut meinem Taschenrechner ist die Wahrscheinlichkeit für den Ausfall von Run 11 unter der Bedingung Picks = 6 genau 0 ^^; MuPAD hingegen ist etwas optimistischer 1.521501509 * 10^-151 oder anders ausgedrückt 1 zu 6.572454868 * 10^150 ;-)
Also nicht ganz unmöglich, und vielleicht hatte ich ja Glück. Falls dem so ist, sollte ich jede Woche einen Lottoschein ausfüllen :->


>Genaugenommen: bei 85 drops ist die chance dass nie weniger als 5 items fallen:
>2 * 10 ^ -82

Genaugenommen ist diese Chance = 2.032523673 * 10^-82 ;-)
 
hmm, ich meld mich nochmal.

hab jetzt ne weile nicht mehr weiter gecodet und wollt mich heute an die chancen für unique / set etc machen.

nur welche chance wird da genommen ?

zum einen haben bestimmte TCs höhere chance auf magic/unique/etc
nimmt man da jeweils den höchsten wert der auf dem weg von monster-TC zur TC des items gefunden wurde oder wie?

und was ist mit den werten aus der ItemRatio.txt vs TC-Werte? auch der jeweils höchste wert ?


Verzeih mir wenn ich dir jede Formel aus der Nase sauge (eigentlich könnt ich auch gleich nach deinem source fragen ;)) aber studienmässig fehlt mir im Moment die Zeit für umfangreiche tests :(


Mfg
Tub
 
>nur welche chance wird da genommen ?

Die höchste auf dem Weg auftretende Chance (bzw. Modifikator) wird genommen.


>und was ist mit den werten aus der ItemRatio.txt vs TC-Werte?
>auch der jeweils höchste wert ?

Die musst du -grob gesagt- miteinander mulitplizieren. Das steht aber auch in Jarulfs Guide. Also zunächst wird die base_chance ausgerechnet (anhand der passenden Zeile aus der itemratio.txt)

base_chance = ratio - (mlv - qlvl) / divisor

Diese wird dann mit dem entsprechenden Wert aus der TC verrechnet:

chance_before_playermf = 128 * base_chance - (128 * base_chance * cx / 1024) - wobei cx der entsprechende Wert aus der TC ist.

Dieses wird dann noch mit dem Spieler MF verrechnet:

chance_with_playermf = chance_before_playermf * 100 / (100 + dmf_playermf)

wobei dmf_playermf wie folgt berechnet wird:
Code:
uf = 100 + [250*(MF-100)/(MF+150)]
sf = 100 + [500*(MF-100)/(MF+400)]
rf = 100 + [600*(MF-100)/(MF+500)]
mf = MF
falls MF > 110, sonst gilt uf = sf = rf = mf = MF.

Die Chance auf die entsprechende Qualität ist dann 128 / chance_with_playermf. Die Berechnung der Wahrscheinlichkeiten für die einzelnen Qualitäten überlasse ich dann dir.
 
tjo, der mf-calc ist im plattencrash ebenfalls verschwunden, aber ich hab mich durchgerungen ihn neu zu schreiben *ächtz*

kurze Frage an black_spy:

wenn Mephisto ein Shako droppt dann ist die Chance dass es unique wird bei 100 mf = 10.67%

richtig ?


Mfg
Tub
 
Etwas spät, aber das Forum scheint zu den Zeiten zu denen ich im Moment ins Netz kann immer down zu sein.

Tub schrieb:
tjo, der mf-calc ist im plattencrash ebenfalls verschwunden, aber ich hab mich durchgerungen ihn neu zu schreiben *ächtz*
Ich kann ATM auch nicht das programmieren was ich will, so dass mein Calc vorerst auch ruhen muss :(

Tub schrieb:
wenn Mephisto ein Shako droppt dann ist die Chance dass es unique wird bei 100 mf = 10.67%

richtig ?
Ja. Und entsprechend die theoretische Chance auf Set bei 24.25%.
 
hallo :D


hey jungs wenn das teil net so irre lang wäre , wär das reif für jede signatur :lol:

habe mitlerweile den punkt erreicht das ich net mal weiß um was es eigentlich geht :lol:

könnte mir da einer ma ne auskunft geben..
am anfang bin ich noch relativ mitgekommen aber nach nookies erstem post nur noch... ^^

naja wie geil sag ich nur ^^

bitte lasst den thread erhalten :D


nochwas was ich vielleicht kapiert habe :D ca jedes 10te shako von mepp is ne harle ? richtig ^^
 
Code:
Chance:  0.0400 code: "uap" name: "Shako"
Color: u=10.6733 s=27.1474 r=27.1474 m= 1.#INF n=-1.#INF
huch ? wo ist denn der Fehler ?

hab nach einigem suchen rausgefunden: bei meppl ist chancemodifier.magic = 1024, also wird

chance_before_playermf = 128 * base_chance - (128 * base_chance * cx / 1024)

mit cx=1024 zu 0

das hiesse ja meppl kann keine magischen items droppen. Nach intensiven testreihen habe ich aber hin und wieder mal ein magisches Item bei ihm gefunden :D

Woran liegt's ? Fehlt noch was mit der magicmin aus der itemratio.txt ? die "*min"-spalten habe ich noch gar nicht berücksichtigt (und finde auch weder bei jarulf noch hier im thread was dazu) - gilt da einfach
Code:
if (chance_before_playermf < itemratio.magicmin)
  chance_before_playermf = itemratio.magicmin
? Oder ne andere Formel ?


was mich noch wundert: wieso hab ich 27% chance auf set und du 24 ? :confused: ist dein Wert mit 100% mf berechnet ? ich finde bei mir einfach keinen fehler, also verzeih mir bitte wenn ich die möglichkeit eines fehlers deinerseits in betracht ziehe ;)

noch ein weiterer wert, wäre nett wenn du den kurz mit deinem calc vergleichen würdest
Code:
Chance:  0.0015 code: "upl" name: "Balrog Skin"
Chances: u=10.2780 s=25.8815 r=25.8815 m= 1.#INF n=-1.#INF


thx :)

Mfg
Tub

edit: @morpheus: tja, deshalb hab ich dich im thread-topic auch nicht angesprochen :D Hast es soweit aber richtig mitgekriegt: in der theorie ist bei 100% mf etwa jedes zehnte tschako von meppl ne harle, die praxis mag anders aussehen ;)
 
Tub schrieb:
Code:
Chance:  0.0400 code: "uap" name: "Shako"
Color: u=10.6733 s=27.1474 r=27.1474 m= 1.#INF n=-1.#INF
huch ? wo ist denn der Fehler ?
Das ist die absolute Wahrscheinlichkeit. Allerdings ist, aufgrund der Reihenfolge der Checks und der Nebenbedingungen, die echte Chance auf Sets nicht unabhängig von der auf Uniques. Es wird ja, falls ein Unique gewählt, aber nicht generiert wird, direkt zum rare Gegenstand. Also kann ein Gegenstand nur Set werden, falls der Check auf Unique vorher negativ war. Im obigen Beispiel also (1 - 0.9) * 27.1 = 24.3.
Ähnliches gilt für Rares: Hier wäre die Wahrscheinlichkeit ja aus zwei unabhängigen Ereignissen zusammengesetzt: (1) Es wird unique gewählt, aber nicht generiert und (2) unique und set werden nicht gewählt, aber Rare. Das liefert also als Gesamtwahrscheinlichkeit u * x + (1-u) * (1-s) * r, wobei x eine unbekannte zu schätzende Wahrscheinlichkeit darstellt.

Tub schrieb:
hab nach einigem suchen rausgefunden: bei meppl ist chancemodifier.magic = 1024, also wird

chance_before_playermf = 128 * base_chance - (128 * base_chance * cx / 1024)

mit cx=1024 zu 0

das hiesse ja meppl kann keine magischen items droppen. Nach intensiven testreihen habe ich aber hin und wieder mal ein magisches Item bei ihm gefunden :D

Woran liegt's ?
Das liegt an der Berechnung. Man hat ja am Ende der Berechnung einen chance_with_playermf-Wert. Das Spiel führt dann einen rnd(chance_with_playermf-1) durch und wenn eine Zahl aus [0..127] erscheint ist der Check positiv - hieraus folgt, dass, wenn man auf einen chance_with_playermf <= 128 kommt, der Check für die entsprechende Qualität immer positiv ist.

Tub schrieb:
Fehlt noch was mit der magicmin aus der itemratio.txt ? die "*min"-spalten habe ich noch gar nicht berücksichtigt (und finde auch weder bei jarulf noch hier im thread was dazu) - gilt da einfach
Code:
if (chance_before_playermf < itemratio.magicmin)
  chance_before_playermf = itemratio.magicmin
? Oder ne andere Formel ?
Soweit ich mich erinnere werden diese Werte nicht benutzt - ich könnte es aber am Wochenende mal austesten.

Tub schrieb:
was mich noch wundert: wieso hab ich 27% chance auf set und du 24 ? :confused: ist dein Wert mit 100% mf berechnet ? ich finde bei mir einfach keinen fehler, also verzeih mir bitte wenn ich die möglichkeit eines fehlers deinerseits in betracht ziehe ;)

noch ein weiterer wert, wäre nett wenn du den kurz mit deinem calc vergleichen würdest
Code:
Chance:  0.0015 code: "upl" name: "Balrog Skin"
Chances: u=10.2780 s=25.8815 r=25.8815 m= 1.#INF n=-1.#INF
23.2% - der Grund steht ja bereits oben ;-)
 
jo, klingt logisch (warum bin ich da nicht selbst drauf gekommen? *vornkopfhau*)

thx :)


edit:

Code:
Chance:  0.0400 code: "uap" name: "Shako"
Chances: u=10.6733 s=24.2499 r=17.6667 m=47.4101 n=-0.0000

Chance:  0.0015 code: "upl" name: "Balrog Skin"
Chances: u=10.2780 s=23.2214 r=17.2113 m=49.2893 n= 0.0000
geht doch :)


was fehlt dann noch?

- evtl. superior/normal/low quality, aber ist eigentlich nicht soo wichtig (edit2: done ;))
- checks welche uniques / sets existieren und sonstige Farb-beschränkungen (z.B. runen)
- nodrop-modifikationen basierend auf der spielerzahl
- das ganze in javascript ;)


Mfg
Tub
 
so, doppelpost muss leider sein, sonst findet den Thread keiner ;)

läuft soweit ganz gut, hier und da schiessen die üblichen unerwarteten Probleme quer, aber das wird schon noch.

Fragen die allerdings noch offen sind:


1) werden die *min-Spalten aus ItemRatio.txt irgendwo gebraucht ?

2) Rarity aus der Weapons/Armor/Misc.txt - wird die nur fürs einfügen in armo03 etc benötigt oder auch für anderes ?

3) Ogre Axe! :wand:
type: 7o7
normcode: bar
ubercode: 9b7
ultracode: 7b7

ja wasn nu, normal, exeptional oder elite ?! :wand:

4) für den Drop-Calc muss ich natürlich auch die Monster auslesen, sprich: monstats.txt - welche davon sind wichtig, welche nicht ?

Ich hab derzeit folgende Logik eingebaut:
clientonly = 1 -> löschen
killable = 0 -> löschen
minHP = 0 -> löschen
keine TCs -> löschen
lvl = 0 -> löschen

eBoss = 1 -> Bossmonster

die ersten 5 checks sollten eigentlich ausreichen. Oder gibt's da ne bessere Methode ?

eBoss = 1: die ganzen Entweiher/Defiler aus act 5 haben auch eBoss = 1 :confused: also Bossmonster in dem Sinn sind sie sicher nicht.. hat die Spalte noch eine andere Bedeutung ?
Bossmonster wollte ich im calc seperat auflisten, deshalb brauche ich die Unterscheidung. 5 Defiler per Hand ändern ist sicher kein Problem, aber mich interessiert jetzt doch wieso die Bosse sind ;)

Dann, die Monsterlvl. Nihlatak ist mit 95 eingetragen - hatte er nicht lvl 98 ? :confused: Hab ich jetzt irgendwas übersehen ?


thx 4 help mal wieder :)


Mfg
Tub
 
1) Die Spalten werden nicht gebraucht.

2) Gar nicht. Die Rarity von jedem Gegenstand musst du dir aus der ItemTypes.txt holen.
Machen wir es mal am Beispiel von einem Exec (Rarity = 4 in der weapons.txt!):
type = swor
ItemTypes.txt => code == swor => Rarity = 3

3) 7o7 ist der Code für ne Oger Axt - 7b7 ist der Code für Heldenschwert. Das hat aber auf Drops keinen Einfluss; nur auf Einkauf und Glücksspiel. So kannst du auch einen Doombringer gamblen, wenn du auf ne Bardike klickst. Ist ein dummer Datenfehler.

4) Ja, die sollten reichen. Eine bessere Methode hab ich auch nicht gefunden (man könnte alternativ/ zusätzlich noch über die levels.txt Checks durchführen, aber die sollten eigentlich reichen).

Bei den PutridDefilern wirds wohl auch nicht anders sein als bei der Oger Axt oben: Datenfehler. (IIRC)

Nihlathak ist 95, wenn er als *normales* Monster generiert würde, was aber nicht geht (Spawned = 0). Dieser Eintrag in der monstat.txt wird aber von der SuperUniques.txt referenziert und der dadurch generierte Nihlathak hat als mlvl 95 + UniqueBonus = 95 + 3 = 98.


Sorry für die etwas späte Antwort, aber ATM hab ich nicht soviel Zeit für D2 :(
 
>> 2) Gar nicht. Die Rarity von jedem Gegenstand musst du dir aus der ItemTypes.txt holen.

ok, gut zu wissen, dann muss ich das ändern.

>> 3) 7o7 ist der Code für ne Oger Axt - 7b7 ist der Code für Heldenschwert. Das hat aber auf Drops keinen Einfluss;

ehm, beeinflusst das nicht welche Spalte der ItemRatio.txt ich nehmen muss ? ob uber=1 oder uber=0 ?

>> Nihlathak

Klingt logisch, danke :)

>> Sorry für die etwas späte Antwort, aber ATM hab ich nicht soviel Zeit für D2 :(

solange der calc vor 1.10 fertig wird ist das schnell genug - also lass dir ruhig ein paar Monate Zeit ;)
thx again!

Mfg
Tub
 
Tub schrieb:
>> 3) 7o7 ist der Code für ne Oger Axt - 7b7 ist der Code für Heldenschwert. Das hat aber auf Drops keinen Einfluss;

ehm, beeinflusst das nicht welche Spalte der ItemRatio.txt ich nehmen muss ? ob uber=1 oder uber=0 ?
Stimmt. Der Check für die Uber-Zeile schlägt ja fehl und es wird die Normal-Spalte gewählt. Also hats doch einen Einfluss; allerdings müsste es für den Calc egal sein, wenn die Checks stimmen (Daher auch meine obige Aussage) ;)
Tub schrieb:
solange der calc vor 1.10 fertig wird ist das schnell genug - also lass dir ruhig ein paar Monate Zeit ;)
thx again!
Im Moment steht mein Calc ganz hinten an; vorher kommt noch eine Abhandlung über lex und yacc (bzw. die entsprechenden Phasen in einem Compiler) und zwei andere Software-Projekte. :(
 
Die Frage ist wie d2 intern programmiert ist, ob's dann als normal oder als uber gilt. Du hast das scheinbar auch nicht getestet, also werd ich's bei gelegenheit selber machen.


Mein Calc ist derzeit so eine Mischung aus C++ und JavaScript. Ein C++ Proggy liest die relevanten infos aus den txt-files, wandelt sie um, und bastelt dann aus 2 kleinen templates ein komplettes php

das interface steht schon weitestgehend (superuniques und set-items muss ich noch auslesen), aber die formeln hab ich noch nicht übertragen. Dürfte aber nicht mehr allzulange dauern. Dann wird sich zeigen ob JavaScript schnell genug ist ;)


Mfg
Tub
 
Tub schrieb:
Die Frage ist wie d2 intern programmiert ist, ob's dann als normal oder als uber gilt. Du hast das scheinbar auch nicht getestet, also werd ich's bei gelegenheit selber machen.
Doch ich hab's getestet [ist ja nicht sonderlich schwer], mich oben aber etwas unklar ausgedrückt. Es wird mit der Normal-Zeile gerechnet. Und wenn dein Calc den Test vergleichbar zu D2 ausführt, dann sollte der Datenfehler keine Spezialbehandlung erfordern.

Bei mir (und D2 intern) läuft das etwa so ab:
Code:
bool uber = (ubercode == code) || (ultracode == code)
Anhand von uber wird dann die Zeile ausgewählt. Durch diese Überprüfung bedarf es keiner Sonderbehandlung.
Tub schrieb:
Mein Calc ist derzeit so eine Mischung aus C++ und JavaScript. Ein C++ Proggy liest die relevanten infos aus den txt-files, wandelt sie um, und bastelt dann aus 2 kleinen templates ein komplettes php

das interface steht schon weitestgehend (superuniques und set-items muss ich noch auslesen), aber die formeln hab ich noch nicht übertragen. Dürfte aber nicht mehr allzulange dauern. Dann wird sich zeigen ob JavaScript schnell genug ist ;)
Die Version vom diabloii.net bringt bei mir den IE ab und zu zum Stillstand ;-)
 
>> 2) Gar nicht. Die Rarity von jedem Gegenstand musst du dir aus der ItemTypes.txt holen.

ok, habe es jetzt mal schnell geändert.

Code:
vorher:
Chance:  0.0400 code: "uap" name: "Shako"
Chances: u=10.6733 s=24.2499 r=17.6667 m=47.4101 n=-0.0000

nachher:
Chance:  0.0848 code: "uap" name: "Tschako"
Unique exists: Harlequin Crest (chance 1)
Chances: u=10.6733 s=24.2499 r=17.6667 m=47.4101 h=-0.0000 n= 0.0000 l=-0.0000

ist die neue chance richtig (für einen einzelnen pick aus der TC "Mephisto (H)") ?
(Hammerman's calc lässt mich leider keinen einzelnen pick auswählen, und die TC ist bei mir hardcoded und wird im konvertier-proggy sicher nicht mehr geändert ;))

>> Die Version vom diabloii.net bringt bei mir den IE ab und zu zum Stillstand ;-)

bei mir ist sie nicht die schnellste, aber sie funktioniert wenigstens. Ich befürchte das schlimmste, bin aber noch optimistisch :D


Mfg
Tub
 
Ja, jetzt ist sie richtig.

Rechnest du immer mit nur 4 Nachkommastellen? Das könnte IMHO zu einigen Rundungsfehlern führen ...


Hauptsache dein Calc läuft auch mit meinem Mozilla problemlos. Der Calc von diabloii.net läuft beim Mozilla schneller, hat aber manchmal Darstellungsprobleme :(
 
>> Ja, jetzt ist sie richtig.

gut :) Also weiter in der todo-list..

>> Rechnest du immer mit nur 4 Nachkommastellen? Das könnte IMHO zu einigen Rundungsfehlern führen ...

printf("Chance: %7.4f code: \"%s\" name: \"%s\"\n", myItem->chance*100.0, myItem->code, myItem->name);

>> Hauptsache dein Calc läuft auch mit meinem Mozilla problemlos.

Sobald die ersten Drop-berechnungen drin sind (wenn nicht alles schief läuft noch heute ;)) werde ich mal ne erste beta uppen, dann kann jeder der will mit seinem lieblingsbrowser mal testen ;)
Ich selber benutz den IE (*duck*) und teste auch hauptsächlich unter dem, aber ich werde andere Browser nicht vergessen.


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 ;))


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