Quote:
Originally Posted by fertoker1
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:
Code:
function NTCU_CheckItem(item, result)
{
var i, n, _index;
var _classid, _gid, _calclevel;
var _result = false;
if(!NTConfig_Cubing)
return false;
_classid = item.classid;
_gid = item.gid;
_calclevel = parseInt(me.GetStat(12)/2) + parseInt(item.itemlevel/2);
for(i = 0 ; i < NTConfig_CubingItem.length ; i++)
{
if(NTConfig_CubingItem[i][0] == NTCU_GEM)
{
if(_classid == NTConfig_CubingItem[i][1])
{
for(n = 0 ; n < 3 ; n++)
{
if(NTConfig_CubingItem[i][2+n] == null)
{
NTConfig_CubingItem[i][2+n] = _gid;
break;
}
else if(NTConfig_CubingItem[i][2+n] == _gid)
break;
}
_result = true;
}
}
[COLOR=Red]//... dann kommen einige else if Bedingungen und hier geht es weiter [/COLOR]
else if(NTConfig_CubingItem[i][0] >= NTCU_CRAFT_HITPOWER_HELM && NTConfig_CubingItem[i][0] <= NTCU_CRAFT_SAFETY_WEAPON)
{
_index = NTConfig_CubingItem[i][0] - NTCU_CRAFT_HITPOWER_HELM;
if(_classid == NTConfig_CubingItem[i][1])
{
if(result == 0 && item.quality == 4 && item.GetStat(0x400000) == 0 && _calclevel >= _NTCU_CraftRecipe[_index][0])
{
if(NTConfig_ilvl80)
{
if(item.itemlevel >= 80)
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
else if(NTConfig_ilvl90)
{
if(item.itemlevel >= 90)
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
else
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
}
else if(_classid == 643)
{
if(result == 0 && NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][3] == null)
{
NTConfig_CubingItem[i][3] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][3] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][1])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][4] == null)
{
NTConfig_CubingItem[i][4] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][4] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][5] == null)
{
NTConfig_CubingItem[i][5] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][5] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2]-1)
{
if(NTConfig_CubingItem[i][2] != null && NTConfig_CubingItem[i][5] == null)
{
for(n = 0 ; n < 3 ; n++)
{
if(NTConfig_CubingItem[i][6+n] == null)
{
NTConfig_CubingItem[i][6+n] = _gid;
_result = true;
break;
}
else if(NTConfig_CubingItem[i][6+n] == _gid)
{
_result = true;
break;
}
}
}
}
}
Hier der Teil, der sich auf die Itemlevelbedingungen bezieht:
Code:
else if(NTConfig_CubingItem[i][0] >= NTCU_CRAFT_HITPOWER_HELM && NTConfig_CubingItem[i][0] <= NTCU_CRAFT_SAFETY_WEAPON)
{
_index = NTConfig_CubingItem[i][0] - NTCU_CRAFT_HITPOWER_HELM;
if(_classid == NTConfig_CubingItem[i][1])
{
if(result == 0 && item.quality == 4 && item.GetStat(0x400000) == 0 && _calclevel >= _NTCU_CraftRecipe[_index][0])
{
[COLOR=Red]if(NTConfig_ilvl80)[/COLOR]
{
if(item.itemlevel >= 80)
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
[COLOR=Red]else if(NTConfig_ilvl90)[/COLOR]
{
if(item.itemlevel >= 90)
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
else
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
}
else if(_classid == 643)
{
if(result == 0 && NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][3] == null)
{
NTConfig_CubingItem[i][3] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][3] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][1])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][4] == null)
{
NTConfig_CubingItem[i][4] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][4] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][5] == null)
{
NTConfig_CubingItem[i][5] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][5] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2]-1)
{
if(NTConfig_CubingItem[i][2] != null && NTConfig_CubingItem[i][5] == null)
{
for(n = 0 ; n < 3 ; n++)
{
if(NTConfig_CubingItem[i][6+n] == null)
{
NTConfig_CubingItem[i][6+n] = _gid;
_result = true;
break;
}
else if(NTConfig_CubingItem[i][6+n] == _gid)
{
_result = true;
break;
}
}
}
}
}
Und so wollte ich das Ganze ändern, beim Versuch Blood Craft Belts ein eigenes Itemlevel zu geben:
Code:
else if(NTConfig_CubingItem[i][0] >= NTCU_CRAFT_HITPOWER_HELM && NTConfig_CubingItem[i][0] <= NTCU_CRAFT_SAFETY_WEAPON [COLOR=Red]&& != NTCU_CRAFT_BLOOD_BELT[/COLOR])
{
_index = NTConfig_CubingItem[i][0] - NTCU_CRAFT_HITPOWER_HELM;
if(_classid == NTConfig_CubingItem[i][1])
{
if(result == 0 && item.quality == 4 && item.GetStat(0x400000) == 0 && _calclevel >= _NTCU_CraftRecipe[_index][0])
{
if(NTConfig_ilvl80)
{
if(item.itemlevel >= 80)
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
else if(NTConfig_ilvl90)
{
if(item.itemlevel >= 90)
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
else
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
}
else if(_classid == 643)
{
if(result == 0 && NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][3] == null)
{
NTConfig_CubingItem[i][3] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][3] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][1])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][4] == null)
{
NTConfig_CubingItem[i][4] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][4] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][5] == null)
{
NTConfig_CubingItem[i][5] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][5] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2]-1)
{
if(NTConfig_CubingItem[i][2] != null && NTConfig_CubingItem[i][5] == null)
{
for(n = 0 ; n < 3 ; n++)
{
if(NTConfig_CubingItem[i][6+n] == null)
{
NTConfig_CubingItem[i][6+n] = _gid;
_result = true;
break;
}
else if(NTConfig_CubingItem[i][6+n] == _gid)
{
_result = true;
break;
}
}
}
}
}
[COLOR=Red]else if(NTConfig_CubingItem[i][0] == NTCU_CRAFT_BLOOD_BELT)[/COLOR]
{
_index = NTConfig_CubingItem[i][0] - NTCU_CRAFT_HITPOWER_HELM;
if(_classid == NTConfig_CubingItem[i][1])
{
if(result == 0 && item.quality == 4 && item.GetStat(0x400000) == 0 && _calclevel >= _NTCU_CraftRecipe[_index][0])
{
if(NTConfig_ilvl80)
{
if(item.itemlevel >= 80)
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
else if(NTConfig_ilvl90)
{
[COLOR=Red]if(item.itemlevel >= 70)[/COLOR]
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
else
{
if(NTConfig_CubingItem[i][2] == null)
{
NTConfig_CubingItem[i][2] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][2] == _gid)
_result = true;
}
}
}
else if(_classid == 643)
{
if(result == 0 && NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][3] == null)
{
NTConfig_CubingItem[i][3] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][3] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][1])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][4] == null)
{
NTConfig_CubingItem[i][4] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][4] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2])
{
if(NTConfig_CubingItem[i][2] != null)
{
if(NTConfig_CubingItem[i][5] == null)
{
NTConfig_CubingItem[i][5] = _gid;
_result = true;
}
else if(NTConfig_CubingItem[i][5] == _gid)
_result = true;
}
}
else if(_classid == _NTCU_CraftRecipe[_index][2]-1)
{
if(NTConfig_CubingItem[i][2] != null && NTConfig_CubingItem[i][5] == null)
{
for(n = 0 ; n < 3 ; n++)
{
if(NTConfig_CubingItem[i][6+n] == null)
{
NTConfig_CubingItem[i][6+n] = _gid;
_result = true;
break;
}
else if(NTConfig_CubingItem[i][6+n] == _gid)
{
_result = true;
break;
}
}
}
}
}
Schlechter Versuch von meiner Seite :(
|
Ich frage mich gerade, ob ich dir die ganze Zeit über nicht zugehört habe... :rolleyes:
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. :o
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. :D
Lg
Muddy