Register for your free account! | Forgot your password?

Go Back   elitepvpers > Other Online Games > Diablo 2
You last visited: Today at 19:49

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Crafting - Problem/Anregung

Discussion on Crafting - Problem/Anregung within the Diablo 2 forum part of the Other Online Games category.

Reply
 
Old 12/04/2010, 15:45   #16
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
Quote:
Originally Posted by fertoker1 View Post
Hab die Itemlevelbedingung jetzt mal auf eine sehr umständliche Weise zu lösen versucht, indem ich diesen Part:

Code:
else if(NTConfig_CubingItem[i][0] >= NTCU_CRAFT_HITPOWER_HELM && NTConfig_CubingItem[i][0] <= NTCU_CRAFT_SAFETY_WEAPON)
so verändert habe

Code:
else if(NTConfig_CubingItem[i][0] >= NTCU_CRAFT_HITPOWER_HELM && NTConfig_CubingItem[i][0] <= NTCU_CRAFT_SAFETY_WEAPON [COLOR=Red]&& !=[/COLOR] NTCU_CRAFT_BLOOD_BELT)
und dann den ganzen Absatz kopiert und für den Blood Belt nochmal mit Itemlevelbedingung 70+ eingefügt habe -> kein Erfolg, spuckt mir nur eine Fehlermeldung aus

Sollte prinzipiell aber funktionieren, oder?
Ich habe mal einen recht offensichtlichen Syntaxfehler markiert.

Es wäre aber tatsächlich hilfreich, wenn du etwas mehr Kontext lieferst, denn so kann man dir nicht wirklich folgen.
Sprich wenn du Änderungen in einer Funktion vornimmst, poste auch die ganze Funktion und nicht eine Zeile ohne jeden Zusammenhang.
Die [Code]-Box tut dann ihren Teil und sorgt dafür, dass alles schön überschaubar bleibt.

Lg
Muddy
Muddy Waters is offline  
Old 12/05/2010, 01:11   #17
 
elite*gold: 0
Join Date: Aug 2010
Posts: 141
Received Thanks: 30
Hmm, vielleicht war das wirklich ein bisschen unübersichtlich

Also, die Funktion befindet sich in der NTCubing.ntl, bezeichnet wird sie in der Charconfig durch "NTConfig_ilvl80 = false;" und "NTConfig_ilvl90 = true;"
und ich beziehe mich auf die Itemlevelbedingung bei allen Craft-Objekten -> die würde ich gerne so ändern, dass bei Einstellung: "ilvl90 = true" nur Amus und Ringe ab Level 90 gesammelt werden, der Rest ab Level 70

Ich wollte das anhand vom Blood Craft Belt testen -> hat aber nicht funktioniert

Die gesamte Funktion:


Hier der Teil, der sich auf die Itemlevelbedingungen bezieht:


Und so wollte ich das Ganze ändern, beim Versuch Blood Craft Belts ein eigenes Itemlevel zu geben:


Schlechter Versuch von meiner Seite
Nuru der Stadtmasseur is offline  
Old 12/05/2010, 20:57   #18
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
Quote:
Originally Posted by fertoker1 View Post
Hmm, vielleicht war das wirklich ein bisschen unübersichtlich

Also, die Funktion befindet sich in der NTCubing.ntl, bezeichnet wird sie in der Charconfig durch "NTConfig_ilvl80 = false;" und "NTConfig_ilvl90 = true;"
und ich beziehe mich auf die Itemlevelbedingung bei allen Craft-Objekten -> die würde ich gerne so ändern, dass bei Einstellung: "ilvl90 = true" nur Amus und Ringe ab Level 90 gesammelt werden, der Rest ab Level 70

Ich wollte das anhand vom Blood Craft Belt testen -> hat aber nicht funktioniert

Die gesamte Funktion:


Hier der Teil, der sich auf die Itemlevelbedingungen bezieht:


Und so wollte ich das Ganze ändern, beim Versuch Blood Craft Belts ein eigenes Itemlevel zu geben:


Schlechter Versuch von meiner Seite
Ich frage mich gerade, ob ich dir die ganze Zeit über nicht zugehört habe...
Dein Ziel war es also, die mindest Itemlevel für bestimmte Rezepte herunterzusetzen?

In dem Fall ist alles was du da machst ziemlich unnötiger Aufwand und ich bin dir eine Eklärung schuldig.

Schau dir mal den Anfang des Cubing Algorithmus an. Dort wird ganz zu Anfang das resultierende Itemlevel berechnet, die Variable dazu heisst _calclevel, das sieht dann so aus:
Code:
_calclevel = parseInt(me.GetStat(12)/2) + parseInt(item.itemlevel/2);
In Worten: Die floor Funktion von der Summe aus halbem Charlevel und halbem Itemlevel.
Das entspricht der hier schonmal erwähnten Formal für resultierende Itemlevel beim Craften, somit also nichts neues.

Im weiteren Verlauf der Funktion wird nun mit diesem Level gearbeitet, was auch viel Sinnvoller ist, als da irgendwelche Itemlevel reinzubringen, denn das resultierende Itemlevel ist vom Informationsgrad viel höher anzusiedeln.

Wenn man sich die Cubing library anschaut, wird man zu anfang auf ein paar Definitionen von globalen Variablen und Konstanten treffen.
Genau an dieser Stelle werden auch sämtliche Rezepte definiert und zwar als zweidimensionales Array.
Das sieht dann z.B. so aus:
Code:
var _NTCU_CraftRecipe = new Array();
_NTCU_CraftRecipe.push([84, 615, 571]);
_NTCU_CraftRecipe.push([85, 617, 571]);
_NTCU_CraftRecipe.push([79, 618, 571]);
_NTCU_CraftRecipe.push([85, 616, 571]);
_NTCU_CraftRecipe.push([82, 614, 571]);
_NTCU_CraftRecipe.push([85, 613, 571]);
_NTCU_CraftRecipe.push([90, 619, 571]);
_NTCU_CraftRecipe.push([86, 620, 571]);
_NTCU_CraftRecipe.push([85, 612, 571]);
Auch wenn du es vielleicht noch nicht siehst, vor dir steht das Problem deiner Lösung. Dazu muss man eigentlich nur verstehen, was dort eigentlich genau steht.
Mal eine kleine Bestandsaufnahme;
Was genau gibt die Config eigentlich an Daten bezüglich des Cubings?

Auch dort wird mit einem zweidimensionalen Array gearbeitet, das sieht dann etwa so aus:
Code:
NTConfig_CubingItem.push([NTCU_CRAFT_CASTER_AMULET, 520]);// Craft Amulet
Darin steckt einmal die ID des Rezepts, eine in der Cubing library definierte Konstante. Ausserdem dem classid des Basis Items, in diesem Fall 520 für ein Amulett.
Tatsächlich fehlen aber ja noch ein paar Sachen, damit das Rezept tatsächlich komplett ist.
In diesem Fall die Art des Edelsteins und welche Rune benötigt wird.

All diese Informationen stecken im vorhin erwähnten Rezept Array.

Am Beispiel einer von den vorheringen Zeilen sind das:
Code:
_NTCU_CraftRecipe.push([90, 619, 571]);

/* Die Werte entsprechen für dieses Beispiel:
90 - Mindest res. Itemlevel
619 - Die classid der benötigten Rune (619 == RAL)
571 - Die classid des benötigten Edelsteins (571 == PA)
*/
Und jetzt müsste dir langsam ein Licht aufgehen.

Ganz genau, das mininmale resultierende Itemlevel kannst du genau hier frei nach belieben festlegen.

Weil das ganze ohne Programmierkenntnisse zugegebenermaßen etwas unübersichtlich ist, hier nochmal die Initialisierung des Rezept Arrays nebst der Bezeichnungen der jeweiligen Rezepte:
Code:
var _NTCU_CraftRecipe = new Array();
_NTCU_CraftRecipe.push([84, 615, 571]); // Hitpower Helm
_NTCU_CraftRecipe.push([85, 617, 571]); // Hitpower Boots
_NTCU_CraftRecipe.push([79, 618, 571]); // Hitpower Gloves
_NTCU_CraftRecipe.push([85, 616, 571]); // Hitpower Belt
_NTCU_CraftRecipe.push([82, 614, 571]); // Hitpower Shield
_NTCU_CraftRecipe.push([85, 613, 571]); // Hitpower Armor
_NTCU_CraftRecipe.push([90, 619, 571]); // Hitpower Amulet
_NTCU_CraftRecipe.push([86, 620, 571]); // Hitpower Ring
_NTCU_CraftRecipe.push([85, 612, 571]); // Hitpower Weapon

_NTCU_CraftRecipe.push([84, 617, 581]); // Blood Helm
_NTCU_CraftRecipe.push([85, 614, 581]); // Blood Boots
_NTCU_CraftRecipe.push([79, 613, 581]); // Blood Gloves
_NTCU_CraftRecipe.push([85, 616, 581]); // Blood Belt
_NTCU_CraftRecipe.push([82, 615, 581]); // Blood Shield
_NTCU_CraftRecipe.push([85, 619, 581]); // Blood Armor
_NTCU_CraftRecipe.push([90, 620, 581]); // Blood Amulet
_NTCU_CraftRecipe.push([86, 621, 581]); // Blood Ring
_NTCU_CraftRecipe.push([85, 618, 581]); // Blood Weapon

_NTCU_CraftRecipe.push([84, 613, 561]); // Caster Helm
_NTCU_CraftRecipe.push([85, 619, 561]); // Caster Boots
_NTCU_CraftRecipe.push([79, 618, 561]); // Caster Gloves
_NTCU_CraftRecipe.push([85, 615, 561]); // Caster Belt
_NTCU_CraftRecipe.push([82, 614, 561]); // Caster Shield
_NTCU_CraftRecipe.push([85, 616, 561]); // Caster Armor
_NTCU_CraftRecipe.push([90, 617, 561]); // Caster Amulet
_NTCU_CraftRecipe.push([86, 620, 561]); // Caster Ring
_NTCU_CraftRecipe.push([85, 612, 561]); // Caster Weapon

_NTCU_CraftRecipe.push([84, 615, 576]); // Safety Helm
_NTCU_CraftRecipe.push([85, 618, 576]); // Safety Boots
_NTCU_CraftRecipe.push([79, 617, 576]); // Safety Gloves
_NTCU_CraftRecipe.push([85, 616, 576]); // Safety Belt
_NTCU_CraftRecipe.push([82, 613, 576]); // Safety Shield
_NTCU_CraftRecipe.push([85, 614, 576]); // Safety Armor
_NTCU_CraftRecipe.push([90, 619, 576]); // Safety Amulet
_NTCU_CraftRecipe.push([86, 620, 576]); // Safety Ring
_NTCU_CraftRecipe.push([85, 621, 576]); // Safety Weapon
Eigentlich gehört dieses topic spätestens nach diesem Beitrag in die Programming Sektion, vielleicht sicht kal_el das ja ähnlich.

Lg
Muddy
Muddy Waters is offline  
Thanks
1 User
Old 12/05/2010, 23:40   #19
 
elite*gold: 0
Join Date: Aug 2010
Posts: 141
Received Thanks: 30
Lustig

Ich habe mich immer gefragt, für was die Bezeichnungen am Anfang der Cubing-Rezepte stehen -> NTItemAlias durchforstet und nie darauf gestossen, ich wäre auch nicht auf die Idee gekommen, mir diese einfache Berechnung genauer anzugucken

Wenn ich das jetzt richtig verstanden habe, ist die in Sternenlooper nachträgliche NTConfig_ilvl90 eigentlich ziemlich sinnlos, weil d2nt nativ mit Standarteinstellungen Amus ab Level 90 cubed, oder?

Und das bedeutet auch, dass ich die Zahlen a la 90, 84, ... frei in diesem Array ändern kann, oder?

Dafür wirklich danke

Quote:
Originally Posted by Muddy_Waters View Post
Ich frage mich gerade, ob ich dir die ganze Zeit über nicht zugehört habe...
Dein Ziel war es also, die mindest Itemlevel für bestimmte Rezepte herunterzusetzen?
Naja, mein ursprünglicher Gedanke war das beim Threadstart ja nicht:

Quote:
Originally Posted by fertoker1 View Post
Zum Algorithmus beim Craften:

Prinzipiel habe ich (glaube ich) schon verstanden, wie es funktioniert:

Es werden einfach die verschieden Bedingungen in einer Reihenfolge abgefragt, auch die Reihenfolge ist mir klar (Durch Ingame Beobachtung und Code - Durchgucken)

1. Grunditem wird gesucht -> Amu, Ringe, Gürtel, ...
2. Wenn ein Grunditem vorhanden ist, werden die Runen, Juwelen und Edelsteine dazu gesucht
3. Alles vorhanden -> Craft

Aber jetzt zu meinem Problem: Die Grunditems werden noch parallel gesucht -> Man kann also durchaus 1 x Ring, 1 x Gürtel, 1 x Amu, ... im Inventar haben -> Wo bitte im Code ist das zu finden (das parallele meine ich)???

Auch die Runen werden noch parallel in den Stash gelegt.

Aber bei den Juwelen und Edelsteinen ist das eben nicht so -> Juwel wird immer nur eines gestasht, bis das Rezept fertiggestellt worden ist -> Da habe ich auch keine Ahnung, wo genau das im Code steht

Genauso bei den Edelsteinen: Ich crafte normale PR und PA hoch, damit das Ganze ein bisschen schneller geht -> Bei 2 parallel laufenden Bloodcraft-Rezepten werden dann aber immer die makellosen Rubeine weggeworfen, wenn schon ein PR vorhanden ist

Ich hätte nur gerne, dass jedes Rezept sein eigenes Juwel und seinen eigenen PR/PA bekommt, hab aber leider keine Ahnung, wo genau das definiert sein soll.
Nuru der Stadtmasseur is offline  
Old 12/05/2010, 23:51   #20
Administrator
 
Muddy Waters's Avatar
 
elite*gold: 41364
Join Date: Jan 2010
Posts: 22,729
Received Thanks: 12,625
Quote:
Originally Posted by fertoker1 View Post
Lustig

Ich habe mich immer gefragt, für was die Bezeichnungen am Anfang der Cubing-Rezepte stehen -> NTItemAlias durchforstet und nie darauf gestossen, ich wäre auch nicht auf die Idee gekommen, mir diese einfache Berechnung genauer anzugucken

Wenn ich das jetzt richtig verstanden habe, ist die in Sternenlooper nachträgliche NTConfig_ilvl90 eigentlich ziemlich sinnlos, weil d2nt nativ mit Standarteinstellungen Amus ab Level 90 cubed, oder?

Und das bedeutet auch, dass ich die Zahlen a la 90, 84, ... frei in diesem Array ändern kann, oder?

Dafür wirklich danke



Naja, mein ursprünglicher Gedanke war das beim Threadstart ja nicht:
Ich würde mal mutmaßen, dass Sterni eher versucht hat das ganze einfach zu lösen, anstatt sich mit dem vorhandenen Algorithmus wirklich auseinanderzusetzen, so kenne ich ihn jedenfalls.

Und ja, die kannst du ändern wie du willst.

Zu der eigentlichen Fragestellung werde ich mir mal Gedanken machen.
Dazu muss ich mich aber erstmal wieder in den Algorithmus einlesen, das habe ich nämlich das letzte mal vor Monaten gemacht, darum kann ich mich an vieles nicht mehr erinnern.
Sollte aber grundsätzlich umsetzbar sein, auch wenn man vermutlich tatsächlich einen etwas besseren Überblick braucht, um daran irgendwas zu ändern.

Aber das Problem klingt spannend, ich setze mich mal damit auseinander, wenn ich Zeit finde.

Lg
Muddy
Muddy Waters is offline  
Old 12/06/2010, 11:24   #21
 
elite*gold: 0
Join Date: Aug 2010
Posts: 141
Received Thanks: 30
Quote:
Originally Posted by Muddy_Waters View Post

Zu der eigentlichen Fragestellung werde ich mir mal Gedanken machen.
Dazu muss ich mich aber erstmal wieder in den Algorithmus einlesen, das habe ich nämlich das letzte mal vor Monaten gemacht, darum kann ich mich an vieles nicht mehr erinnern.
Sollte aber grundsätzlich umsetzbar sein, auch wenn man vermutlich tatsächlich einen etwas besseren Überblick braucht, um daran irgendwas zu ändern.

Aber das Problem klingt spannend, ich setze mich mal damit auseinander, wenn ich Zeit finde.

Lg
Muddy
Von meiner Seite nichts dagegen einzuwenden
Nuru der Stadtmasseur is offline  
Reply


Similar Threads Similar Threads
Anregung
07/30/2010 - Combat Arms - 13 Replies
Ich habehier mal eine anregung für ein neues programm wenn man z.B. ingame seine K/D sehen will wie in den Mini missions "get a final K/D gedöns" wäre sowas möglich ?
kleine Anregung
03/20/2010 - Metin2 Private Server - 16 Replies
hey, ich finde es toll, das seit neustem so viele, teilweise ziemlich geniale, p-server entstanden sind. Ich persönlich habe einige Anregungen die ihr eventuell auf euren servern gebrauchen könnt. Giftschwert - gift einfügen - ist ganz leicht in der db dauerhaftes brennen - auch ohne führungs-buff ermöglichen. in der skill_proto steht bei den 2 Fertigkeiten die das ermöglichen können ein Leerzeichen siehe hier unter szDurationPoly2 Nur als kleine Anregung... tüftelt ein wenig rum...
Problem mit AionNinja (crafting)
01/27/2010 - Aion - 2 Replies
Hey leute, hoffe ihr könnt mir weiterhelfen. Habe mir kürzlich AionNinja geholt, und wollte die Crafting-Funktion ausprobieren. Jedoch geht das nicht wie erwünscht. Mein Char wählt den entsprechenden Quest-NPC an, wartet und macht dann einen Sprung. Das wiederholt sich immer und immer wieder. Habe die Auflösung auf 1024x768, deutschen Client und Automatische Fenster Anordnung. Wäre echt froh, wenn jemand Hilfe weiss. MfG Pädi
ANREGUNG FÜR NEN BOT
01/03/2010 - Metin2 - 1 Replies
So leute wie siehtsn aus... Wenn ihr wirklich was HILFREICHES machen wollt, dann schreibt nicht irgendwie nen FarmBot oder Angelbot... davon sind sowieso schon zu viele da... Wenn ihr wirklich was nützliches schreiben wollt, dann geht doch einfach auf die wünsche der leute ein... Wenn ich mir hier mal über nachts den Moblock anmache, und mir versichern möchte das ich nicht sterbe dann sollte es doch für mich nen freiprogrammierbaren bot geben... das heißt ich soll einstellen können was er...
Mega Autopotter anregung
04/19/2009 - Metin2 - 9 Replies
Hallo scripter! Ich hätt für euch mal ne Anregung/Herausforderung ihr könntet doch mal nen Autopotter basteln der die Lebensleiste erkennt und immer nur dann Pottet wenn sie relativ leer ist. Wie wäre das. ich würde es selebr auch versuchen abba ich kriege das mit der Farbe nicht hin auch schon beim Angelbot nicht.:( Also ich denke der müsste dann so funkt. das man z.b den erkenner auf 1/4 des Lebenns setzt und sobald dieser fleck schwarz wird aktiviert sich der autopotter und pottet. ...



All times are GMT +2. The time now is 19:49.


Powered by vBulletin®
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2024 elitepvpers All Rights Reserved.