Homepage zur CyrcleMod

Alles was nicht in die anderen Foren reinpasst kommt hier rein.

Moderatoren: Handballfreak, FOE

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 06.04.2014, 10:37

Jetzt ist es mir aufgefallen. Es war in deinem ersten Code-Beispiel auch schon drin, aber irgendwie hatte ich es übersehen. Der Fehler liegt imho im Vergleichszeichen - dort muss "==" stehen und nicht das einfache "=".
:wall: Danke!
Wobei ich es auch gleich als switch-case schreiben würde, denn es kommen ja noch andere Meisterschaften hinzu, oder nicht?
Jo, gute Idee!
Übrigens ist in deiner ersten switch-case-Anweisung ein Fehler drin, denn im ersten Fall "level" fehlt das abschließende "break;". So wie es jetzt ist:
Ich hab mir dabei gedacht, dass er ja nicht nur die Levelangabe, sondern ja auch die Meisterschaft abfragen soll, daher habe ich kein break gemacht...

Handballfreak
Moderator des Herrn der Fürsten
Moderator des Herrn der Fürsten
Beiträge: 7624
Registriert: 24.12.2006, 13:07

Beitrag von Handballfreak » 06.04.2014, 17:39

Calo hat geschrieben:
Übrigens ist in deiner ersten switch-case-Anweisung ein Fehler drin, denn im ersten Fall "level" fehlt das abschließende "break;". So wie es jetzt ist:
Ich hab mir dabei gedacht, dass er ja nicht nur die Levelangabe, sondern ja auch die Meisterschaft abfragen soll, daher habe ich kein break gemacht...
Die Meisterschaft fragt er deshalb trotzdem ab, wenn der Wert "tmp[0]" ungleich "level" ist (d.h. im "mastery"-Fall). Der Break-Befehl wird im "level"-Bereich nur ausgeführt, wenn tmp[0] gleich "level" ist.
Gleichfalls wird der Code unter "mastery" ausgeführt, wenn die "level"-Bedingung erfüllt ist und dort kein "break;" gesetzt wurde :!: Das heißt, den Wert, den du im "level"-Fall der Variable level zuweist, wird anschließend auch der Variable mastery zugewiesen.
Siehe bspw. hier. Ist zwar C++, aber das Verhalten dürfte bei den meisten Sprachen identisch sein.
Daher schließt man den Case-Bereich meist mit einem break-Befehl ab.
Bild

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 06.04.2014, 19:01

Das heißt, den Wert, den du im "level"-Fall der Variable level zuweist, wird anschließend auch der Variable mastery zugewiesen.
Ah okay. Mein Querystringauslesen funktioniert jetzt so:

Code: Alles auswählen

function analyzeQuerystring() {
    var url = window.location.search;
    var qryStr = url.split('?')[1];
    var pairs = qryStr.split('&');
    var level = pairs[0].split('=')[1];
    var mastery = pairs[1].split('=')[1];
    var skills = pairs[2].split('=')[1];
    var skillsBoni = pairs[3].split('=')[1];
    var secMastery = pairs[4].split('=')[1];
    var secSkills = pairs[5].split('=')[1];
    var secSkillsBoni = pairs[6].split('=')[1];
    };
};
Ganz einfach und funktionert :D Was will man mehr?!

Eine Frage: Wie genau berechnest du bei dir die benutzten Skillpunkte. Also die müssen ja irgendwie von den insgesamt verfügbaren abgezogen werden. Ich mach das - bisher nur für drei Fähigkeiten - gerade so und mir ist das zu aufwändig ^^

Code: Alles auswählen

$(document).ready(function(){
    $(".skillGroup").mousedown(function(){
        var usedPoints = parseFloat(parseFloat($(".masteryFire > div.skillGroup:nth-child(2) > div > .currentLevel").text()) + parseFloat($(".masteryFire > div.skillGroup:nth-child(3) > div > .currentLevel").text()) + parseFloat($(".masteryFire > div.skillGroup:nth-child(4) > div > .currentLevel").text()));
        var availablePointsUnused = (($("#characterLevelSelector").val() - 1) * 3);
        $(".availablePointsDisplay").text((availablePointsUnused - usedPoints) + " Fähigkeitspunkte verfügbar");
    });
});

Handballfreak
Moderator des Herrn der Fürsten
Moderator des Herrn der Fürsten
Beiträge: 7624
Registriert: 24.12.2006, 13:07

Beitrag von Handballfreak » 07.04.2014, 11:43

Calo hat geschrieben:Wie genau berechnest du bei dir die benutzten Skillpunkte. Also die müssen ja irgendwie von den insgesamt verfügbaren abgezogen werden.
Insgesamt möglich sind 74*3 + 21 Fähigkeitspunkte.
Dann musst du die aktuellen Stufen aller Fähigkeiten zusammenzählen.
Dafür eignet sich (wie gesagt) ein Array, weil du darüber einfach iterieren kannst. Du kannst wohl aber auch deine Variante nutzen. Dazu musst du halt nur eine For-Schleife um deine Summierung basteln und im Abschnitt "nth-child(4)" deinen Schleifenzähler einbinden, also bspw. "nth-child(i)".

Bei mir sieht das beim Querystring-Auslesen bspw. so aus:

Code: Alles auswählen

	investedpoints_skills = 0;
	for &#40;i=0; i<numSkills; i++&#41;
	&#123;
		investedpoints_skills += parseInt&#40;this&#91;"skills"&#93;&#91;i&#93;&#41;;
	&#125;
	for &#40;i=0; i<secondary_numSkills; i++&#41;
	&#123;
		investedpoints_skills += parseInt&#40;this&#91;"secondary_skills"&#93;&#91;i&#93;&#41;;
	&#125;	
Später, d.h. während der Interaktion, wenn bspw. die Stufe per Klick erhöht wurde, läuft eine andere, ähnliche Methode ab, wo auf die jeweiligen Arrays/Variablen zurückgegriffen wird:

Code: Alles auswählen

investedpoints_skills = 0;
// Als einfache Variante auf einem einzelnen, aktuellen Skillarray
// Funktioniert nur mit einer/der aktuellen Meisterschaft, oder ...
// ... man speichert bspw. ab Array-Index 20&#40;24&#41; die Werte für die zweite Meisterschaft
for &#40;var j=0; j<skilltreeArray.length; j++&#41;
&#123;
	investedpoints_skills += parseInt&#40;skilltreeArray&#91;j&#93;.currentLevel&#41;;
&#125;
// Als vollständige Variante, wo die Skilltrees von beiden Meisterschaften ausgelesen werden
for &#40;var j=0; j<masteryArray&#91;primary_mastery&#93;.skilltree.length; j++&#41;
&#123;
	investedpoints_skills += parseInt&#40;masteryArray&#91;primary_mastery&#93;.skilltree&#91;j&#93;.currentLevel&#41;;
&#125;
for &#40;var j=0; j<masteryArray&#91;secondary_mastery&#93;.skilltree.length; j++&#41;
&#123;
	investedpoints_skills += parseInt&#40;masteryArray&#91;secondary_mastery&#93;.skilltree&#91;j&#93;.currentLevel&#41;;
&#125;
Bild

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 08.04.2014, 16:11

So, hab das jetzt mit dem Array mit 189 Einträgen gelöst :D

Ich hab jetzt aber noch ein Problem: Ich benutze eine Funktion, um die Werte anhand der momentanen Fähigkeitsstufe zu berechnen. Ich benutze am Ende der Funktion dafür setTimeout(), damit sie die Daten immer aktualisiert, wenn sich ein Level ändert. Das Problem ist nun nur, dass, wenn ich über 30 Skillpunkte investiert habe, mein PC bzw. Firefox anfängt zu laggen (wenn man es denn so schreiben will :wink:), was man schon an dem Nicht-mehr-flüssig-laufen der Animationen sieht. Die Funktion ist aber auch sehr umfangreich. Meine Frage: Wie sicherst du die ständige Aktualisierung der Werte? Ich hab schon dein JavaScript durchgeschaut, aber mir ist nichts aufgefallen, was "aktualisierend" wirkt.

Ach ja, mein Code:

Code: Alles auswählen

$&#40;document&#41;.ready&#40;function&#40;&#41;&#123;
    $&#40;"div.skillGroup"&#41;.html&#40;function&#40;&#41;&#123;

        // Verringert die Sichtbarkeit für Skills, die aufgrund des zu niedrigen Meisterschaftslevels nicht geskillt werden können

        $&#40;"div.skillGroup&#58;not&#40;.skillGroup&#58;nth-child&#40;2&#41;&#41;"&#41;.css&#40;"opacity", "0.5"&#41;;
        if &#40;parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41; >= 1&#41; &#123;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;10&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;20&#41;"&#41;.css&#40;"opacity", "1"&#41;;
        &#125;;
        if &#40;parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41; >= 6&#41; &#123;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;3&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;7&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;11&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;13&#41;"&#41;.css&#40;"opacity", "1"&#41;;
        &#125;;
        if &#40;parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41; >= 12&#41; &#123;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;4&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;16&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;21&#41;"&#41;.css&#40;"opacity", "1"&#41;;
        &#125;;
        if &#40;parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41; >= 22&#41; &#123;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;8&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;12&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;17&#41;"&#41;.css&#40;"opacity", "1"&#41;;
        &#125;;
        if &#40;parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41; >= 34&#41; &#123;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;5&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;14&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;19&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;22&#41;"&#41;.css&#40;"opacity", "1"&#41;;
        &#125;;
        if &#40;parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41; >= 42&#41; &#123;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;6&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;15&#41;"&#41;.css&#40;"opacity", "1"&#41;;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;18&#41;"&#41;.css&#40;"opacity", "1"&#41;;
        &#125;;
        if &#40;parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41; >= 56&#41; &#123;
            $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;9&#41;"&#41;.css&#40;"opacity", "1"&#41;;
        &#125;;
    &#125;&#41;;

    // Die Berechnung der Eigenschaften des Meisterschaftsskills

    $&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41;"&#41;.mousedown&#40;function&#40;&#41;&#123;
        var intelligence_incrate = 3;
        var dexterity_incrate = 1.6;
        var health_incrate = 7;
        var energy_incrate = 23;
        var resistanceCold_incrate = 0.7;
        var currentLevel = parseFloat&#40;$&#40;".masteryFire > div.skillGroup&#58;nth-child&#40;2&#41; > div > .currentLevel"&#41;.text&#40;&#41;&#41;;
        var maxLevel = 56;
        if &#40;currentLevel >= 1&#41; &#123;
            $&#40;".tooltip-fireMastery .intelligence-current"&#41;.html&#40;intelligence_incrate * currentLevel&#41;;
            $&#40;".tooltip-fireMastery .dexterity-current"&#41;.html&#40;Math.round&#40;dexterity_incrate * currentLevel&#41;&#41;;
            $&#40;".tooltip-fireMastery .health-current"&#41;.html&#40;"+ " + health_incrate * currentLevel&#41;;
            $&#40;".tooltip-fireMastery .energy-current"&#41;.html&#40;"+ " + energy_incrate * currentLevel&#41;;
            $&#40;".tooltip-fireMastery .resistanceCold-current"&#41;.html&#40;"- " + Math.round&#40;resistanceCold_incrate * currentLevel * 10&#41; / 10 + " %"&#41;;
        &#125;
        else &#123;
            $&#40;".tooltip-fireMastery .intelligence-current"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .dexterity-current"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .health-current"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .energy-current"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .resistanceCold-current"&#41;.html&#40;""&#41;;
        &#125;;
        if &#40;currentLevel < maxLevel&#41; &#123;
            $&#40;".tooltip-fireMastery .intelligence-next"&#41;.html&#40;" <span class='tooltip-arrow'>&rArr;</span> " + intelligence_incrate * &#40;currentLevel + 1&#41;&#41;;
            $&#40;".tooltip-fireMastery .dexterity-next"&#41;.html&#40;" <span class='tooltip-arrow'>&rArr;</span> " + Math.round&#40;dexterity_incrate * &#40;currentLevel + 1&#41;&#41;&#41;;
            $&#40;".tooltip-fireMastery .health-next"&#41;.html&#40;" <span class='tooltip-arrow'>&rArr;</span> + " + health_incrate * &#40;currentLevel + 1&#41;&#41;;
            $&#40;".tooltip-fireMastery .energy-next"&#41;.html&#40;" <span class='tooltip-arrow'>&rArr;</span> + " + energy_incrate * &#40;currentLevel + 1&#41;&#41;;
            $&#40;".tooltip-fireMastery .resistanceCold-next"&#41;.html&#40;" <span class='tooltip-arrow'>&rArr;</span> - " + Math.round&#40;resistanceCold_incrate * &#40;currentLevel + 1&#41; * 10&#41; / 10 + " %"&#41;;
        &#125;
        else &#123;
            $&#40;".tooltip-fireMastery .intelligence-next"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .dexterity-next"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .health-next"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .energy-next"&#41;.html&#40;""&#41;;
            $&#40;".tooltip-fireMastery .resistanceCold-next"&#41;.html&#40;""&#41;;
        &#125;;
    &#125;&#41;;
    setTimeout&#40;arguments.callee, 100&#41;;
&#125;&#41;;

Handballfreak
Moderator des Herrn der Fürsten
Moderator des Herrn der Fürsten
Beiträge: 7624
Registriert: 24.12.2006, 13:07

Beitrag von Handballfreak » 08.04.2014, 23:23

Calo hat geschrieben:Wie sicherst du die ständige Aktualisierung der Werte? Ich hab schon dein JavaScript durchgeschaut, aber mir ist nichts aufgefallen, was "aktualisierend" wirkt.
Aktualisiert wird schon der Inhalt einer Anzeigebox, aber nicht die Werte der Fähigkeit, sondern der gesamte Inhalt. Denn ...
Calo hat geschrieben:// Die Berechnung der Eigenschaften des Meisterschaftsskills
... bei mir wird bei den Fähigkeiten nichts berechnet, sondern immer nur die benötigte Information ausgelesen und das HTML-Element damit gefüllt. Afair ist es beim TitanCalc auch so gelöst - alle nötigen UI-Infos sind bspw. in Arrays gespeichert und werden (entsprechend der geskillten Stufe) ausgelesen und in der Anzeigebox dargestellt. Es sind also bereits alle Informationen gespeichert/vorhanden bzw. werden beim Laden der Seite mitgeladen, sodass keine zusätzlichen Berechnungen nötig sind.
Sonst müsstest du doch für jede Fähigkeit einzelne Berechnungen anstellen. Da wirst du doch ewig nicht fertig. :shock:
Bild

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 09.04.2014, 18:07

Aktualisiert wird schon der Inhalt einer Anzeigebox, aber nicht die Werte der Fähigkeit, sondern der gesamte Inhalt.
Wie wird denn der Inhalt aktualisiert? Mein Problem ist, dass, wenn ich setTimeout entferne und stattdessen einen Auslöser zur Aktualisierung des Inhalts bei einem Mausklick auf die Fähigkeit hinzufüge, der Browser nur bis zum "Enthovern" die Anzeige aktualisiert. Wenn ich später wieder über die Fähigkeit hover, werden mir keine Werte mehr angezeigt, bis ich einen weiteren Punkt investiert habe und somit die Anzeige aktualisiert wird.
Afair ist es beim TitanCalc auch so gelöst - alle nötigen UI-Infos sind bspw. in Arrays gespeichert und werden (entsprechend der geskillten Stufe) ausgelesen und in der Anzeigebox dargestellt. Es sind also bereits alle Informationen gespeichert/vorhanden bzw. werden beim Laden der Seite mitgeladen, sodass keine zusätzlichen Berechnungen nötig sind.
Sonst müsstest du doch für jede Fähigkeit einzelne Berechnungen anstellen. Da wirst du doch ewig nicht fertig. :shock:
Aber ist das nicht vom Aufwand her gleich, ob ich die Werte berechne oder mit Arrays einfüge? Ich möchte halt so wenig Aufwand wie möglich betreiben und da schien mir die Berechnung am wenigsten aufwändiig zu sein...

Handballfreak
Moderator des Herrn der Fürsten
Moderator des Herrn der Fürsten
Beiträge: 7624
Registriert: 24.12.2006, 13:07

Beitrag von Handballfreak » 09.04.2014, 20:30

Calo hat geschrieben:Wie wird denn der Inhalt aktualisiert?
Siehe fillContainer-Funktion. Ich aktualisiere einfach den innerHTML-Inhalt des Containers.

Code: Alles auswählen

// Current-Container füllen
if &#40;parseInt&#40;skilltreeArray&#91;skillnumber&#93;.currentLevel&#41; > 0&#41;
	document.getElementById&#40;prepart+"container_"+skillnumber+"_current"&#41;.innerHTML = "<b>"+skilltreeArray&#91;skillnumber&#93;.name+"</b><br>"+masterytier+prerequirement+"<font color='#FFFF80'>Aktuelle Stufe&#58; "+totallevel+"</font><br>"+skilltreeArray&#91;skillnumber&#93;.UIInfo&#91;parseInt&#40;totallevel&#41;-1&#93;;
else 
	document.getElementById&#40;prepart+"container_"+skillnumber+"_current"&#41;.innerHTML = null;
Dadurch, dass ich den gesamten HTML-Inhalt des Container-Elementes ersetze, muss ich natürlich auch einzelne Formatierungen berücksichtigen/einbinden (bspw. dass der Name fett geschrieben wird).

Ob's die beste Lösung ist - keine Ahnung. Aber es funktioniert. ;-)
Calo hat geschrieben:Aber ist das nicht vom Aufwand her gleich, ob ich die Werte berechne oder mit Arrays einfüge?
Im TitanCalc.Com ist es in der storm.js bspw. so gelöst (nur ein Auszug):
// set attributes
if (!AttributesBase[0]) { // base att's are only set one time
AttributesBase[0] = new Attribute(300,300,50,50,50) // base stats for characters
}
Attributes = new Array();
Attributes[1] = new Attribute(21,15,0,1,3)
Attributes[2] = new Attribute(42,30,0,2,6)
Attributes[3] = new Attribute(63,45,0,3,9)
Attributes[4] = new Attribute(84,60,0,4,12)
Attributes[5] = new Attribute(105,75,0,5,15)
Attributes[6] = new Attribute(126,90,0,6,18)
Attributes[7] = new Attribute(147,105,0,7,21)
Attributes[8] = new Attribute(168,120,0,8,24)
Attributes[9] = new Attribute(189,135,0,9,27)
Attributes[10] = new Attribute(210,150,0,10,30)
Attributes[11] = new Attribute(231,165,0,11,33)
Attributes[12] = new Attribute(252,180,0,12,36)
Attributes[13] = new Attribute(273,195,0,13,39)
Attributes[14] = new Attribute(294,210,0,14,42)
Attributes[15] = new Attribute(315,225,0,15,45)
Attributes[16] = new Attribute(336,240,0,16,48)
Attributes[17] = new Attribute(357,255,0,17,51)
Attributes[18] = new Attribute(378,270,0,18,54)
Attributes[19] = new Attribute(399,285,0,19,57)
Attributes[20] = new Attribute(420,300,0,20,60)
Attributes[21] = new Attribute(441,315,0,21,63)
Attributes[22] = new Attribute(462,330,0,22,66)
Attributes[23] = new Attribute(483,345,0,23,69)
Attributes[24] = new Attribute(504,360,0,24,72)
Attributes[25] = new Attribute(525,375,0,25,75)
Attributes[26] = new Attribute(546,390,0,26,78)
Attributes[27] = new Attribute(567,405,0,27,81)
Attributes[28] = new Attribute(588,420,0,28,84)
Attributes[29] = new Attribute(609,435,0,29,87)
Attributes[30] = new Attribute(630,450,0,30,90)
Attributes[31] = new Attribute(651,465,0,31,93)
Attributes[32] = new Attribute(672,480,0,32,96)


Skills = new Array();

// Ice Shard
Spells = new Array();
Spells[1] = new SpellInfo("21 Energy Cost, 1 Projectile, 16-25 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[2] = new SpellInfo("23 Energy Cost, 1 Projectile, 20-31 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[3] = new SpellInfo("25 Energy Cost, 1 Projectile, 23-36 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[4] = new SpellInfo("27 Energy Cost, 1 Projectile, 28-43 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[5] = new SpellInfo("29 Energy Cost, 1 Projectile, 32-47 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[6] = new SpellInfo("31 Energy Cost, 1 Projectile, 36-53 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[7] = new SpellInfo("33 Energy Cost, 1 Projectile, 39-58 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[8] = new SpellInfo("35 Energy Cost, 1 Projectile, 44-64 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[9] = new SpellInfo("37 Energy Cost, 1 Projectile, 48-68 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[10] = new SpellInfo("39 Energy Cost, 1 Projectile, 52-73 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[11] = new SpellInfo("41 Energy Cost, 1 Projectile, 55-77 Cold Damage, 15% Slowed for 1.5 Seconds")
Spells[12] = new SpellInfo("43 Energy Cost, 1 Projectile, 60-83 Cold Damage, 15% Slowed for 1.5 Seconds")
Skills[0] = new Skill("Ice Shard",1,Spells,-1,"Projects a deadly shard of ice at the target inflicting cold damage and temporarily slowing them.")
Bild

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 17.04.2014, 11:25

Du hast für deine Tooltips ja ganz normale divs verwendet. Ich hingegen habe ja das title-Attribut verwendet und mit jQuery UI ermöglicht, dass es ganz normale divs darstellen kann (und der Tooltip selbst auch sowas ist).
Vielleicht liegt es daran, dass sich der Tooltip beim "onmouseout"en wieder zurücksetzt. Mein Problem ist da halt atm nur: Wie bekomme ich dann ein div zentral über dem Icon positioniert? Hört sich leicht an, aber ich weiß trotzdem nicht, wie ich es machen soll.

Aber da es mit den title-Tooltips anscheinend nicht geht, muss ich wohl alles mit normalen divs machen ... schade -.-

Handballfreak
Moderator des Herrn der Fürsten
Moderator des Herrn der Fürsten
Beiträge: 7624
Registriert: 24.12.2006, 13:07

Beitrag von Handballfreak » 17.04.2014, 11:50

Calo hat geschrieben:Vielleicht liegt es daran, dass sich der Tooltip beim "onmouseout"en wieder zurücksetzt. Mein Problem ist da halt atm nur: Wie bekomme ich dann ein div zentral über dem Icon positioniert?
Hmm, auf die Schnelle keine Ahnung. Vielleicht absolut positionieren und einen höheren z-index geben. Davon abgesehen kannst du doch dann nicht mehr das Icon klicken, wenn der div-Block darüber platziert ist!?
Bild

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 17.04.2014, 19:00

Vielleicht absolut positionieren
Jo, muss ich jetzt auch machen. Is ne nervige Arbeit ^^. Aber es funzt ... bisher ...
Davon abgesehen kannst du doch dann nicht mehr das Icon klicken, wenn der div-Block darüber platziert ist!?
Es war nicht im Sinne von "z-index von tooltip > z-index von icon" sondern im Sinne von "margin-top von tooltip < margin-top von icon" - wenn du verstehst, was ich meine ^^.

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 20.04.2014, 17:11

Bevor ich zum Thema komme, wünsche ich allen, die dies hier lesen, FROHE OSTERN! :)

Nun aber gleich zur Sache ^^ :

UPDATE

Ich habe meinen Calculator nun schon für die Feuermeisterschaft fertig geschrieben.
Den "leeren" Calculator erreicht ihr unter http://monster-rc.firma.cc/c-ide/en/cmd ... -0-0-0-0-0 .
Ich habe außerdem mal die empfohlene Skillung für die Feuermeisterschaft auf Level 30 geschrieben: http://monster-rc.firma.cc/c-ide/en/cmd ... -0-0-0-0-0
Der Calculator umfasst - wie bereits gesagt - bisher nur die Feuermeisterschaft, bei den anderen Meisterschaften werden Probleme auftreten. Ich würde aber von euch gerne wissen, wie ihr den Calculator bisher findet. Bei weniger Code lässt sich halt schneller noch was korrigieren. Um bestimmte Fragen auszuschließen kommt hier jetzt noch eine Übersicht mir den Features die bisher enthalten sind und die, die noch geplant sind.

Features, die bereits enthalten sind (nur bezogen auf die Feuermeisterschaft):
  • Hinzufügen und Entfernen von Skillpunkten per linkem und rechtem Mausklick und die Berechnung der dazugehörigen Werte
  • Anzeige von noch verfügbaren Skillpunkten (für Level 75), dem Titel und dem (bisher) benötigten Level (Anzeige wird nur jede Sekunde aktualisiert)
  • Erstellen eines Return-Links (nicht dauerhafte Aktualisierung, nur per Klick wird aktualisiert!)
  • Entfernen aller Skillpunkte der ausgewählten Meisterschaft über "Rückgängig" und Rückkehr zum Meisterschaftsauswahlfenster über "Meisterschaft widerrufen", was zusätzlich den Effekt des "Rückgängig"-Buttons bewirkt
Features, die noch umgesetzt werden müssen:
  • Bereitstellung aller Meisterschaften
  • Boni auf Fähigkeiten und Meisterschaften über epische und legendäre Gegenstände sowie Prä- und Affixe berechnen
  • BEI BEDARF: Skillpunkte auf Quests
  • BEI BEDARF: Attributberechnung
An dieser Stelle möchte ich auf nochmal Handballfreak dafür danken, dass er/du mir bei (sehr) vielen Dingen immer hilfreiche Ratschläge gegeben hat/hast!

Handballfreak
Moderator des Herrn der Fürsten
Moderator des Herrn der Fürsten
Beiträge: 7624
Registriert: 24.12.2006, 13:07

Beitrag von Handballfreak » 20.04.2014, 18:29

Kein Problem. Ich helfe gern, wenn ich kann.

Also grafisch sieht der Calculator bisher sehr gelungen aus. Die bisherigen Funktionen scheinen auch problemlos zu funktionieren.

Das Anzeigen der Werte der aktuellen und nächsten Stufe in einer Zeile nach dem Schema "Wert x => Wert x+1 Bezeichnung" finde ich sehr gut.

Allerdings werden einige Werte nicht hellgrün angezeigt, bspw. Radien, Dauer, Geschosse, Aufladezeit. Ist das gewollt?
Bild

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 20.04.2014, 19:05

Das Anzeigen der Werte der aktuellen und nächsten Stufe in einer Zeile nach dem Schema "Wert x => Wert x+1 Bezeichnung" finde ich sehr gut.
Finde ich persönlich halt übersichtlicher.
Allerdings werden einige Werte nicht hellgrün angezeigt, bspw. Radien, Dauer, Geschosse, Aufladezeit. Ist das gewollt?
Ja. Spezifische Einstellungen, die im AM nicht unter Offensive, Defensive, Retaliation und Energiekosten (vllt hab ich noch was vergessen, aber ich glaub, es ist klar, was ich meine ^^), werden vollständig dunkelgrün angezeigt.

Benutzeravatar
Calo
Schamanenleger
Beiträge: 174
Registriert: 08.08.2012, 17:29

Beitrag von Calo » 22.04.2014, 12:45

UPDATE
  • Wassermeisterschaft umgesetzt
  • Bei Auswahl einer noch nicht umgesetzten Meisterschaft bleibt der Calculator jetzt nicht mehr komplett leer, sondern zeigt die Skillicons und das Hintergrundbild ohne darunter angezeigte Skillpunkte und vollständig mit Inhalt befüllte und richtig ausgerichtete Tooltips
Empfohlene Wasserskillung für Stufe 30:
http://monster-rc.firma.cc/c-ide/en/cmd ... -0-0-0-0-0

Antworten