Autor Zpráva
FAKTOR2
Profil
Min je 3 Max je 6 a generuje len od 0 do 3.

function rn(min,max)
{
    return Math.floor(Math.random()*(max-min+1)+min);

Tu zdanlivo vyzerá že to funguje aj ked prvé číslo ( odolnost ) je vyššie ako druhé (obrana )

obrana = <?php echo(json_encode($obrana)); ?> ;
odolnost =  <?php echo(json_encode($odol)); ?> ;
player.Atk = function () { return rn(<?php echo(json_encode($minimal)); ?>,<?php echo(json_encode($maximal)); ?>); };
player.Def = function () { return rn(odolnost,obrana); };

Tu už však nie. Skúšam to rôzne. Chcel som tam aj vložiť php rand(min,max); ale neviem to spraviť.

min7 = <?php echo(json_encode($min7)); ?>;
max7 = <?php echo(json_encode($max7)); ?>;
player.sila2 = function () { return rn(min7,max7); };
Alphard
Profil
Ta funkce funguje správně (nebo přinejmenším generuje celá čísla z intervalu <3; 6>), viz http://kod.djpw.cz/qwpb. Problémem by mohlo být, kdybyste jí předával stringy (http://kod.djpw.cz/rwpb), to ale hádám, z kódu to nelze říct. Myslete na datové typy.
FAKTOR2
Profil
Nie nefunguje. Na samotnej stránke http://kod.djpw.cz/qwpb po 20 pokusoch nepadlo číslo väčšie ako 3
lionel messi
Profil
FAKTOR2:
Nie nefunguje. Na samotnej stránke http://kod.djpw.cz/qwpb po 20 pokusoch nepadlo číslo väčšie ako 3

Mne padlo hneď na prvý (bavíme sa o rovnakej ukážke).
mimochodec
Profil
Mně asi z 30 pokusů nikdy nepadla 1 ani 2. Zbytek víceméně rovnoměrně.

(což jestli dobře počítám má pravděpodobnost 5,21509505084655E-006, takže se mi nechce moc věřit, že by to bylo ok)
FAKTOR2
Profil
Asi je to dobre. Už neviem ani sám :D
Poprosím zmazať tému.
lionel messi
Profil
FAKTOR2:
Poprosím zmazať tému.

Poprosím uviesť dôvod. Témy sa tu obvykle nemažu, postupne zapadnú prachom na smetisko dejín samy. Pokiaľ by niekto mal potrebu zneužiť vlákno na nekalé úmysly, moderátori zakročia.
FAKTOR2
Profil
Dobre tak takto viem na 100% že $obrana = 5 ( číslo je z DB ) a $odol = $nao1 + $nao2 + $nao3 + $nao4 + $nao5 + $obrana; určite je to väčšie číslo.
V mojom prípade 10.

obrana = <?php echo(json_encode($obrana)); ?> ;
odolnost =  <?php echo(json_encode($odol)); ?> ;
player.Atk = function () { return rn(<?php echo(json_encode($minimal)); ?>,<?php echo(json_encode($maximal)); ?>); };
player.Def = function () { return rn(odolnost,obrana); };

Takto to funguje a dostávam čísla od 5 do 10 ak to však prehodím ako by to po správnosti malo byť player.Def = function () { return rn(obrana,odolnost); }; začnú mi vychádzať aj čísla nižšie ako 5 . Preto som mal podozrenie že tá funkcia nefunguje správne.
Pripadá mi to tak ako keby vzalo iba prvé číslo 5 +1 a generuje čísla od 0-6

// ATTACKING
var playerAttack = function(){
  var atkSum = player.Atk() - enemy.Def();
  if (atkSum>0){ 
  remainingHP = enemy.HP - atkSum;}else{remainingHP = enemy.HP; alert("Netrafil si ho."); } 
  enemy.HP = remainingHP;  


  var ena = enemy.Atk();
  var pd = player.Def();
  var atkSuma = ena - pd;  
  if (atkSuma>0){
  remainingHP = player.HP - atkSuma; alert(+ pd); alert(+ ena);alert(+ atkSuma);}else{remainingHP = player.HP; alert(+ pd); }
  player.HP = remainingHP;
  if (player.HP<1){
    alert("Si mrtvy");
    window.location.href='../mesto/regen.html';
    hi();
  }  

  if (enemy.HP<1){
    alert("Nepriatel skapal!");
    window.location.href='expi.php?c=1&a=20&f=8&zona='+dalej+'';
  }  
  hi(); 
};

var playerAttacks = function(){
 
    playerAttack();  
    hi();
    
};
Alphard
Profil
Jak vypadá javascript s vyhodnoceným php kódem? Já si myslím, že vstupem json_encode() jsou stringy a on je exportuje jako stringy. Čísla v php vypisujte pomocí echo (int)$minimal;, případne echo (double)$minimal.
FAKTOR2
Profil
Ak si poskladám mozaiku dokopy aj z tejto diskusie zpracování dat z formuláře

Tak som spravil nasledovnú chybu / chyby:

INSERT INTO armor_lahke(nazov, ikona, def, typ, nazivot, namanu, naobranu) VALUES ('$nazov', '$ikona','$def', '$typ', '$nazivot', '$namanu', '$naobranu')
Navyše mám pocit, že v posledných 3 stĺpcoch očakávaš čísla, ktoré sa neohraničujú apostrofmi a nikde nevidím escapovanie užívateľského vstupu.
Čísla sa tým pádom ukladajú aj s apostrofmi.

K json_encode som dopracoval zas tu PHP premenná do Javascriptu lebo som nevedel vložiť php premenné do javastriptu.

Ďakujem Vám chlapi za všetku pomoc.
Alphard
Profil
Je fajn, že se učíte nové věcí, už jen dořešit pár detailů. json_encode() je lepší než přímý výpis, protože escapuje potenciálně nebezpečná vstupy. Pokud budu např. do javascriptu převádět řetězec "Zacalo prset", rekl Tom. a udělám to takhle
$message = '"Zacalo prset", rekl Tom.';
echo 'var message = "'.$message.'";';
do javascriptu se vypíše
var message = ""Zacalo prset", rekl Tom.";
což není validní syntaxe...

Proto je lepší použít funkci json_encode, která problém vyřeší
$message = '"Zacalo prset", rekl Tom.';
echo 'var message = '.json_encode($message).';';
generuje
var message = "\"Zacalo prset\", rekl Tom.";
(Obalovací uvozovky explicitně neuvádím, funkce si je doplní sama a stejný typ uvozovek uvnitř řetězce escapuje.)

A teď se můžeme dostat k číslům, srovnejte následující 2 případy:
echo json_encode(5); // vypíše 5
a
echo json_encode('5'); // vypíše "5"
což má ale obrovský význam, protože např. javascriptové
var vysledek = 5 + 5; // vysledek je 10
ale!
var vysledek = "5" + "5"; // vysledek je 55

Proto už v [#2] uvádím „myslete na datové typy“ a v [#9] dodávám nápovědu jak
echo (int)$minimal;
přetypuje případné číslo uložené jako řetězec na číslo a to vypíše bez uvozovek. Klidně lze použít echo json_encode((int)$minimal);, ale z výše uvedeného by mělo být zřejmé, že to je ekvivalentní zápis.

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0