• Das Erstellen neuer Accounts wurde ausgesetzt. Bei berechtigtem Interesse bitte Kontaktaufnahme über die üblichen Wege. Beste Grüße der Admin

[JavaScript] Calculator Rechnet nicht Richtig

PGHost24

New member
Hallo Liebe Community

Ich Habe folgendes Problem mit diesem Calculator...
http://pghost24.de/bwa_calculator/index.php

Er soll z.b. für das Unterste in der Liste den "Ancient Punisher" sollen folgende Rüstungspreise ausgerechnet werden.

Bollwerk= 0
Thermo= 150844
Sintflut= 218967
Metha= 246836


Dies tut er aber nicht.
Die befehle dafür sind hier:

Code:
  for(i=0; i<5; i++)
  {
    if(inst[1][i].checked == true)
    {
    pos[1] = inst[1][i].value;
    }
  }
  if(pos[1] >= 1)
  {
    kosten[1] = Number(Schiff["Thermoruestung"][pos[0]]);
    if(pos[1] == 2)
      kosten[1] = Number(kosten[1]) + Number(Schiff["Sintflutruestung"][pos[0]]);
	if(pos[1] == 3)
      kosten[1] = Number(kosten[1]) + Number(Schiff["MethaRuestung"][pos[0]]);
	if(pos[1] == 4)
	  kosten[1] = Number(kosten[1]) + Number(Schiff["SiriusRuestung"][pos[0]]);
  }
  else
  {
    kosten[1] = 0;
  }


Ich Bedanke mich Vielmals im vorraus
Mit freunlichen Grüßen

PGHost24.de Team
 
er berechnet nicht die einzelnen Rüstungen hinzu oder jenachdem welche angaben man gibt ab

welche pos meinst du wo -1 steht?


Hier mal der Ganze Script vllt hilft es ja =) bin noch anfänger was das angeht ich verwalte dies nur weiter ^^

Code:
// Bei jedem Neu laden der Seite Resette alles falls etwas im Cache ist.
// Oder wenn kein Schiff mehr angewählt ist.
function Reset()
{ 
  Instanzieren();
  inst[0].selectedIndex = 0;            
  Schiffsliste();
  inst[1][0].checked = true;
  for(i=2;i<inst.length;i++)
  {
    inst[i].disabled = true;
  }               
  for(k=2;k<10;k++)
  {
    LoescheTyp(inst[k]);
  }    
  for(j=0;j<4;j++)
  {
    FuelleTyp(inst[j+2],0,j);
  } 
  for(l=11;l<19;l++)
  {
    text[l].innerHTML = "Gesperrt";
  }     
  for(m=0;m<11;m++)
  {
    text[m].innerHTML = "0 <img src=\"Kryonit.png\"\/>";
  }   
}

// Hole alle Instanzen
function Instanzieren()
{
  inst[0] = document.Kalkulator.Schiff;
  inst[1] = document.Kalkulator.Ruestung;
  inst[2] = document.Kalkulator.Modul1;
  inst[3] = document.Kalkulator.Modul2;
  inst[4] = document.Kalkulator.Modul3;
  inst[5] = document.Kalkulator.Modul4;
  inst[6] = document.Kalkulator.Modul5;
  inst[7] = document.Kalkulator.Modul6;
  inst[8] = document.Kalkulator.Modul7;
  inst[9] = document.Kalkulator.Modul8;
  for(i=0;i<10;i++)
  {
    pos[i] = inst[i].selectedIndex -1;
  }
  if(text[0] == null)
  { 
    text[0] = document.getElementById('SchiffPreis');
    text[1] = document.getElementById('RuestungPreis'); 
    text[2] = document.getElementById('Modul1Preis'); 
    text[3] = document.getElementById('Modul2Preis');
    text[4] = document.getElementById('Modul3Preis');
    text[5] = document.getElementById('Modul4Preis');
    text[6] = document.getElementById('Modul5Preis');
    text[7] = document.getElementById('Modul6Preis');
    text[8] = document.getElementById('Modul7Preis');
    text[9] = document.getElementById('Modul8Preis'); 
    text[10] = document.getElementById('Kryonit'); 
    text[11] = document.getElementById('Modul1Text'); 
    text[12] = document.getElementById('Modul2Text');
    text[13] = document.getElementById('Modul3Text');
    text[14] = document.getElementById('Modul4Text');
    text[15] = document.getElementById('Modul5Text');
    text[16] = document.getElementById('Modul6Text');
    text[17] = document.getElementById('Modul7Text');
    text[18] = document.getElementById('Modul8Text');	
  }       
}

// Trage in Dropdown menu die Schiffsliste ein
function Schiffsliste()
{
  for(i=0;i<Schiff["Name"].length;i++)
  {
    inst[0].options[inst[0].length] = new Option(Schiff["Name"][i], Schiff["Name"][i], false, false);
  }
}

// Fülle in die Dropdwons der Module
function FuelleTyp(inst,typ,art)
{
  item = Module[Schiff[Schiff["Typauswahl"][typ]][art]]["Name"];
  for(i=0;i<item.length;i++)
  {
    inst.options[inst.length] = new Option(item[i], item[i], false, false);
  }
}

// Leere die Dropdowns der Module
function LoescheTyp(inst)
{
  c = inst.length;
  for(i=c;i>=1;i--)
  {
    inst.options[i] = null; 
  }
}

// Aktiviere die richtigen Felder und befülle sie
function SucheTyp()
{     
  Kryoberechnung();
  // Anzahl der Slots ausgeben
  Slots = Schiff["Slots"][pos[0]];
  Typ = Schiff["Typ"][pos[0]] 
  // Wenn Kein Schiff ausgewählt wird setze alles wieder auf Standard
  if(pos[0] == -1)
  {
    Reset();
    Kryoberechnung();
  }
  else
  {
    // Aktiviere die Standards
    for(i=0;i<4;i++)
    {
      inst[i+2].disabled = false;
      text[i+11].innerHTML = Schiff["Standard"][i]; 
      text[i+6].innerHTML = "0 <img src=\"Kryonit.png\"\/>"; 
      inst[i+6].disabled = true; 
      inst[i+6].selectedIndex = 0;
    }
    if(Slots >= 5)
    {
      inst[6].disabled = false;
      text[15].innerHTML = Schiff[Schiff["Typauswahl"][Typ]][0];
      LoescheTyp(inst[6]);
      FuelleTyp(inst[6],Typ,0);  
    }  
    if(Slots >= 6)
    {
      inst[7].disabled = false;
      text[16].innerHTML = Schiff[Schiff["Typauswahl"][Typ]][1];
      LoescheTyp(inst[7]);
      FuelleTyp(inst[7],Typ,1);  
    }
    if(Slots >= 7)
    {
      inst[8].disabled = false;
      text[17].innerHTML = Schiff[Schiff["Typauswahl"][Typ]][2];
      LoescheTyp(inst[8]);
      FuelleTyp(inst[8],Typ,2);   
    }
    if(Slots >= 8)
    {
      inst[9].disabled = false;
      text[18].innerHTML = Schiff[Schiff["Typauswahl"][Typ]][3];
      LoescheTyp(inst[9]);
      FuelleTyp(inst[9],Typ,3); 
    } 
  }
}

// Berechne den Preis
function Kryoberechnung()
{              
  Instanzieren();   
  // Berechne das Schiff
  if(pos[0] == -1)
    kosten[0] = 0;
  else
    kosten[0] = Schiff["Preis"][pos[0]]; 
     
  // Berechne Panzer
  for(i=0; i<5; i++)
  {
    if(inst[1][i].checked == true)
    {
    pos[1] = inst[1][i].value;
    }
  }
  if(pos[1] >= 1)
  {
    kosten[1] = Number(Schiff["Thermoruestung"][pos[0]]);
    if(pos[1] == 2)
      kosten[1] = Number(kosten[1]) + Number(Schiff["Sintflutruestung"][pos[0]]);
	if(pos[1] == 3)
      kosten[1] = Number(kosten[1]) + Number(Schiff["MethaRuestung"][pos[0]]);
	if(pos[1] == 4)
	  kosten[1] = Number(kosten[1]) + Number(Schiff["SiriusRuestung"][pos[0]]);
  }
  else
  {
    kosten[1] = 0;
  }       
  
  // Berechne die einzelnen Kosten der Module
  for(k=0;k<4;k++)
  {
    if(pos[k+2] == -1)
      kosten[k+2] = 0;
    else
      kosten[k+2] = Module[Schiff["Standard"][k]]["Preis"][pos[k+2]];
  }
  for(j=0;j<4;j++)
  {
    if(pos[j+6] == -1)
      kosten[j+6] = 0;
    else
      kosten[j+6] = Module[Schiff[Schiff["Typauswahl"][Schiff["Typ"][pos[0]]]][j]]["Preis"][pos[j+6]];
  }
  for(m=0;m<10;m++)
  {         
    text[m].innerHTML = kosten[m] + " <img src=\"Kryonit.png\"\/>";
  }
  kosten[10] = 0;
  for(n=0;n<10;n++)
  {
    kosten[10] = Number(kosten[10]) + Number(kosten[n]); 
  }  
    text[10].innerHTML = kosten[10] + " <img src=\"Kryonit.png\"\/>";                                                                    
}
 
Zuletzt bearbeitet:
Ach.. hatte das falsche Schiff (gar keines) ausgewählt.

In der daten.js stehen einfach die falschen Zahlen drin... der Preis wird ja mit der "Thermoruestung" immer summiert...
 
der soll das aber so rechnen z.b:

Bollwerk + Thermorüstung = Preis 1
Preis 1 + Sintflutrüstung = Preis 2
Preis 2 + MethaRüstung = Preis 3
Preis 3 + Sirius Rüstung = Preis 4

Und das dann auch wieder rückgängig
 
Dazu passen aber weder die Daten noch die Funktion. Setz' dich mal mit Papier und Bleistift hin und vollziehe Schritt für Schritt, was dein Code bei den verschiedenen Eingaben genau macht.
 
sorry abr ich blick da nich so ganz durch.. bin noch anfänger was java scripts angeht. Ich Arbeite hauptsächlich mit php und html.. und der calculator ist ein projekt für spieler eines spieles das ~ 1000 -> 3000 Gamer umfasst ^^ und ich will das ding bald öffentlich stellen weil ich das schon versprochen hab nur mitdem fehler kann ich das nich so öffentlich stellen
 
sorry abr ich blick da nich so ganz durch.. bin noch anfänger was java scripts angeht. Ich Arbeite hauptsächlich mit php und html.. und der calculator ist ein projekt für spieler eines spieles das ~ 1000 -> 3000 Gamer umfasst ^^ und ich will das ding bald öffentlich stellen weil ich das schon versprochen hab nur mitdem fehler kann ich das nich so öffentlich stellen
Du versprichst eine Spiel für 1000-3000 Leute und kannst es nicht programmieren?
 
nein nicht eihn spiel ein fanmade projekt das von anderen gamern offline gegangen ist und ich es weiterführen möchte weil ich die dafür notwendigen mittel dafür besitze.
Ausser die js kenntnisse
ich brauche nur diesen einen fehler den ich einfach nicht finde
 
Nach deiner Logik müsstest du aus den "pos[1] ==" immer ein "pos[1] >=" machen (was du auch bemerkt hättest, wenn du die mit Papier und Bleistift hingesetzt hättest - außerdem ist das kein JS-spezifisches Problem).
Dann passen die Daten aber immer nocht nicht zu den Werten, die du in #1 geschrieben hast...
 
Code:
 for(i=0; i<5; i++)
  {
    if(inst[1][i].checked == true)
    {
    pos[1] = inst[1][i].value;
    }
  }
  if(pos[1] >= 1)
  {
		kosten[1] = Number(Schiff["Thermoruestung"][pos[0]]);
    if(pos[1] >= 2)
		kosten[1] = Number(kosten[1]) + Number(Schiff["Sintflutruestung"][pos[0]]);
	if(pos[1] >= 3)
		kosten[1] = Number(kosten[1]) + Number(Schiff["MethaRuestung"][pos[0]]);
	if(pos[1] >= 4)
		kosten[1] = Number(kosten[1]) + Number(Schiff["SiriusRuestung"][pos[0]]);
  }
  else
  {
    kosten[1] = 0;
  }


Ist das so richtig??
hab ma bissl überlegt ;D
 
Ob das richtig ist, kannst nur du sagen - ich kenne die Berechnungsregeln des Spiels nicht. Aber das würde die Berechnungsregel aus #6 repräsentieren.
 
Zurück
Oben