Autor | Zpráva | ||
---|---|---|---|
quest Profil |
#1 · Zasláno: 1. 7. 2013, 12:07:01
Dobrý den, zkoušel jsem si udělat jednoduchou Prohlížečovou hru a při vylepšování statů jsem narazil na problém.
Pokud uživatel klikne na tlačítko: zkontroluje se jestli má peníze a jestli jo tak to odešle požadavek na další soubor..vylepsi.php?sila a ten odečte zlato a přidá sílu a uloží do db.Ale jde mi to dělat jen jednou a pak musím stránku aktualizovat ale to nechci.A já nevím jak to změnit aby se stránka nemusela aktualizovat.. pokus.php: .......Připojení do DB a načtení proměnných..... .....JS... ....JS proměnné se rovnají PHP proměnným..... function vylepsisilu() { if (zlato>=(sila*sila*sila)) { zlato -=(sila*sila*sila); sila +=1; csily =(sila*sila*sila); window.document.getElementById("vysledeksily").innerHTML=sila; window.document.getElementById("c1").innerHTML=csily; window.document.getElementById("gold").innerHTML=yourgold; var temp = new Image(); temp.src = "vylepsi.php?sila"; } else { document.getElementById("c1").innerHTML=nemas; } } vylepsi.php: .......Připojení do DB a načtení proměnných..... .......A tento kód funguje ale jen jednou (nelze použít vícekrát za sebou).... if (isset($_GET['sila'])) { if ($zlato>=($sila*$sila*$sila)) { $zlato -=($sila*$sila*$sila); $sila++; $dotaz = mysql_query("UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'"); } } (Jsou to jen kousky celých souborů) Dá se to tedy nějak udělat?Pokud ano tak jak? Děkuji za odpověď. David |
||
Anonymní Profil * |
#2 · Zasláno: 1. 7. 2013, 12:42:34
Jediné co mě v tuto chvíli napadá je to vyřešit pomocí Ajaxu.
|
||
quest Profil |
#3 · Zasláno: 2. 7. 2013, 14:28:10
Nemohli by jste mi s tím pomoct nějak konkrétbněji..něco jsem zkoušel ale nefunguje to.
|
||
_es Profil |
#4 · Zasláno: 2. 7. 2013, 15:01:02
quest:
„něco jsem zkoušel“ Čo? „nefunguje to.“ Ako sa tá „nefunkčnosť“ prejavuje? |
||
quest Profil |
V AJAXu ani v JQUERY se nevyznám a tak jsem zkusil aspoň tohle:
pokus.php: ...Připojení do DB... <script type="text/javascript"> function vylepsisilu() { if (zlato>=(sila*sila*sila)) { zlato -=(sila*sila*sila); sila +=1; csily =(sila*sila*sila); window.document.getElementById("vysledeksily").innerHTML=sila; window.document.getElementById("c1").innerHTML=csily; window.document.getElementById("gold").innerHTML=yourgold; $.get("jquery.php", { sila: 'sila', zlato: 'zlato' } ); } else { document.getElementById("c1").innerHTML=nemas; } } </script> jquery.php: ...Připojení do DB...... <?php ..Připojení do DB.... $sila= $_GET['sila']; $zlato= $_GET['zlato']; if ($zlato>=($sila*$sila*$sila)) { $zlato -=($sila*$sila*$sila); $sila++; $dotaz = mysql_query("UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'"); } ?> Problém se projevuje tak že mi to v Webový konzoli napíše:-- ReferenceError: $ is not defined @ ......./pokus.php:144 řádek 144= $.get("jquery.php", { sila: 'sila', zlato: 'zlato' } ); Děkuji za odpovědi. (Ještě jednou radši říkám že JQUERY a AJAXu nerozumím...) EDIT:ani když zaměním tohle $.get("jquery.php", { sila: 'sila', zlato: 'zlato' } ); za tohle $.get("jquery.php", { sila: "100", zlato: "100" } ); tak to nejde. |
||
_es Profil |
#6 · Zasláno: 2. 7. 2013, 23:23:30
quest:
„ReferenceError: $ is not defined @ ......./pokus.php:144“ Nemáš definovanú premennú s názvom $ - teda tam asi nemáš skript s definíciou jQuery, v jQuery dokumentácii máš predsa návod, ako tú knižnicu do stránky pridať. Okrem toho, na AJAX nepotrebuješ jQuery, napríklad Univerzální funkce pro AJAX.
|
||
quest Profil |
#7 · Zasláno: 3. 7. 2013, 22:46:36
Problém je vyřešen.
Ale tento systém se dá obejít pokud do prohlížeče napíšu: například http://www...........cz/jquery.php?sila=113&zlato=1.0E%2B40 nebo http://www...........cz/jquery.php?sila=99999999999&zlato=9999999999 Jak to udělat aby to nešlo obejít? Děkuji |
||
juriad Profil |
#8 · Zasláno: 3. 7. 2013, 22:50:20
Nevěř klientovi, že ti pošle správnou informaci; tzn. nepředávej sílu a zlato parametrem, ale vytáhni si ji z databáze.
|
||
Anonymní Profil * |
#9 · Zasláno: 3. 7. 2013, 22:58:33
Já nevím ale celý tenhle systém je prakticky na nic. Přidávání síly musí probíhat na straně serveru. Už jenom z důvodu, že pokud tu hru myslíš vážně( i přesto, že se mě zdá, že podobné pokusy končí neúspěchem - už jenom z důvodu že provoz a různý marketing by stal více než ti ta hra někdy vydělá. A naivní myšlenky že ta hra je něčím extra je už taky dost mimo. Už jenom z důvodu, že v dnešní době jsou lidi vůči těmto hrám dost skeptičtí, to není jako před pár lety, kdy hrát Tr*vian bylo naprosto cool), tak něco takovéhle ti někdo obejde během 10 minut. Takže udělej si nějakej skript, který ti vytáhne původní údaje z databáze(sílu, stav zlata) podle nějakého klíče vypočítá výslednou sílu a výsledné zlato a prostě ten údaj přepiš novou sílou a zlatem. Můžeš to nějak oživit javascriptem popř. již mnou zmíněným ajaxem(mohlo by to ušetřit opětovné načítání stránky), ale v tomhle případě to není pořádně ani podmínka a pokud nevíš co děláš tak se na js radši vykašli a jeď pouze na straně serveru.
|
||
quest Profil |
#10 · Zasláno: 3. 7. 2013, 23:06:31
Jen chci říct že já si nemyslím že ta hra bude mít úspěch, dělám to kvůli sobě abych pochopil na jakých principech to funguje a protože mě to baví.Jinak děkuju za radu.
|
||
quest Profil |
#11 · Zasláno: 4. 7. 2013, 09:35:07
Pokud si sílu a zlato načtu z DB tak se mi to provede jen jednou:
function vylepsisilu(){ if (zlato>=(sila*sila*sila)) { zlato -=(sila*sila*sila); sila +=1; csily =(sila*sila*sila); window.document.getElementById("vysledeksily").innerHTML=sila; window.document.getElementById("c1").innerHTML=csily; window.document.getElementById("gold").innerHTML=yourgold; <?php $zlato -=(sila*sila*sila); $sila +=1; $dotaz = mysql_query("UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'"); ?> } else { document.getElementById("c1").innerHTML=nemas; } } A pokud po kliknutí na vylepši odkazuji na soubor tak to trvá moc dlouho (kliknu 30x a ono se to přidá jen 4x): function vylepsisilu(){ if (zlato>=(sila*sila*sila)) { zlato -=(sila*sila*sila); sila +=1; csily =(sila*sila*sila); window.document.getElementById("vysledeksily").innerHTML=sila; window.document.getElementById("c1").innerHTML=csily; window.document.getElementById("gold").innerHTML=yourgold; $.get("jquery.php"); } else { document.getElementById("c1").innerHTML=nemas; } } ...DB... if ($zlato>=($sila*$sila*$sila)) { $zlato -=($sila*$sila*$sila); $sila +=1; $dotaz = mysql_query("UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'"); } ?> Děkuji. |
||
juriad Profil |
#12 · Zasláno: 4. 7. 2013, 10:19:16
Počítej si kolikrát uživatel kliknul a pokud od posledního kliknutí uběhlo už dost času (třeba 5 sekund), odešli dotaz na server s počtem kliků.
Stejně tak odešli dotaz při události beforeUnload, pokud existují kliknutí, která nebyla odeslána na server. Uživatel uvidí optimistický výsledek klikání okamžitě, stav na serveru bude o několik sekund opožděn; jelikož na serveru budeš mít podmínky, které budou hlídat konzistenci (aby nebylo možné vylepšit v případě, že zlato je nedostatečné), nemělo by zpoždění vadit (bude se to ale chovat divně, pokud bude provádět manipulace se zlatem z různých panelů. Ono by mělo fungovat i těch 30 dotazů, problém nejspíš bude v transakčnosti zpracování. 30 procesů si vytáhne sílu a zlato z databáze (jelikož jsou příliš blízko sebe, tak to většinou bude stejná hodnota) a následně všechny procesy zapíšou novou hodnotu do databáze (samozřejmě, že po celé dávce tam bude jen ten poslední údaj). Promysli si následující posloupnost: proces1: SELECT zlato FROM tabulka -> $zlato proces2: SELECT zlato FROM tabulka -> $zlato proces3: SELECT zlato FROM tabulka -> $zlato proces1: UPDATE tabulka SET zlato = $zlato-1 proces2: UPDATE tabulka SET zlato = $zlato-1 proces3: UPDATE tabulka SET zlato = $zlato-1 |
||
quest Profil |
#13 · Zasláno: 4. 7. 2013, 13:49:41
Ale jak to udělám se zlatem pokud mám tento vzorec: $zlato -=($sila*$sila*$sila);?? když uživatel klikne 30 tak přičtu 30 síly ale kolik odečtu zlata?Budu to muset udělat po jednom dotazu nebo stačí jeden dotaz ve kterém to vynásobím?
Jinak děkuji za radu. |
||
juriad Profil |
#14 · Zasláno: 4. 7. 2013, 13:58:09
for($i=0; $i<$pocet_kliknuti; $i++) { $nove_zlato = $zlato - $sila*$sila*$sila; if($nove_zlato < 0) { break; } $zlato = $nove_zlato; $sila++; } $sql = "UPDATE uzivatele SET zlato = $zlato, sila = $sila WHERE …"; |
||
quest Profil |
#15 · Zasláno: 4. 7. 2013, 14:20:29
Mám to takhle ale dá se to vylepšit jen po jednom ( asi proto že počet kliknutí se přičte jen jednou):
function vylepsisilu(){ if (zlato>=(sila*sila*sila)) { zlato -=(sila*sila*sila); sila +=1; csily =(sila*sila*sila); window.document.getElementById("vysledeksily").innerHTML=sila; window.document.getElementById("c1").innerHTML=csily; window.document.getElementById("gold").innerHTML=yourgold; <?php $pocet_kliknuti += 1; for($i=0; $i<$pocet_kliknuti; $i++) { $nove_zlato = $zlato - $sila*$sila*$sila; if($nove_zlato < 0) { break; } $zlato = $nove_zlato; $sila++; $sql = mysql_query("UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'"); } ?> } else { document.getElementById("c1").innerHTML=nemas; } } |
||
juriad Profil |
#16 · Zasláno: 4. 7. 2013, 14:36:05
quest:
Ten skript (stejně jako první skript v [#11]), dělá něco jiného než si myslíš: zvýší sílu bez ohledu na tom, jestli klikneš nebo ne, stačí provést refresh stránky a síla se ti bude zvětšovat. Takto nelze kombinovat PHP s JS, pro vykonání PHP musíš vždy odeslat požadavek na server. Myslel jsem něco jako: var pocetKliknuti = 0; var timeout = undefined; function vylepsiSilu() { pocetKliknuti++; // následující část zruší časovač a začne počítat 5 sekund znova if(timeout != undefined) { window.clearTimeout(timeout); } timeout = window.setTimeout(function() { // po pěti sekundách odešle požadavek na server $.get('zvysSilu.php?pocetKliknuti=' + pocetKliknuti); pocetKliknuti = 0; timeout = undefined; }, 5000); } |
||
quest Profil |
Už to funguje ale pokud to použiju na víc věcí najednou tak to už nejde..dá se vylepšovat jen jedna věc pak se musí stránka aktualizovat a pak jde zase jen jedna atd. jinak pokud kliknu třeba na sílu a obratnost tak se nevylepší ani jedna.
kód: var pocetsily = 0; var pocetobratnosti = 0; var pocetodolnosti = 0; var pocetobrany = 0; var timeout1 = undefined; var timeout2 = undefined; var timeout3 = undefined; var timeout4 = undefined; function vylepsisilu(){ if (zlato>=(sila*sila*sila)) { zlato -=(sila*sila*sila); sila +=1; csily =(sila*sila*sila); window.document.getElementById("vysledeksily").innerHTML=sila; window.document.getElementById("c1").innerHTML=csily; window.document.getElementById("gold").innerHTML=yourgold; pocetsily++; if(timeout1 != undefined) { window.clearTimeout(timeout1); } timeout1 = window.setTimeout(function() { $.get('vylepsisilu.php?pocetsily=' + pocetsily); pocetsily = 0; timeout1 = undefined; }, 5000); } else { document.getElementById("c1").innerHTML=nemas; } } function vobratnost() { if (zlato>= (obratnost*obratnost*obratnost)) { zlato -=(obratnost*obratnost*obratnost); obratnost +=1; cobrat =(obratnost*obratnost*obratnost); window.document.getElementById("obratnost+").innerHTML=obratnost; window.document.getElementById("c2").innerHTML=cobrat; window.document.getElementById("gold").innerHTML=yourgold; pocetobratnosti++; if(timeout2 != undefined) { window.clearTimeout(timeout2); } timeout2 = window.setTimeout(function() { $.get('vylepsiobratnost.php?pocetobratnosti=' + pocetobratnosti); pocetobratnosti = 0; timeout2 = undefined; }, 5000); } else { document.getElementById("c2").innerHTML=nemas; } } function vodolnost() { if (zlato>= (odolnost*odolnost*odolnost)) { zlato -=(odolnost*odolnost*odolnost); odolnost +=1; zdravi +=20; codol =(odolnost*odolnost*odolnost); window.document.getElementById("odo1").innerHTML=odolnost; window.document.getElementById("c2").innerHTML=codol; window.document.getElementById("gold").innerHTML=yourgold; pocetodolnosti++; if(timeout3 != undefined) { window.clearTimeout(timeout3); } timeout3 = window.setTimeout(function() { $.get('vylepsiodolnost.php?pocetodolnosti=' + pocetodolnosti); pocetodolnosti = 0; timeout3 = undefined; }, 5000); } else { document.getElementById("c3").innerHTML=nemas; } } function vobrana() { if (zlato>= (obrana*obrana*obrana)) { zlato -=(obrana*obrana*obrana); obrana +=1; cobran =(obrana*obrana*obrana); window.document.getElementById("obrana+").innerHTML=obrana; window.document.getElementById("c4").innerHTML=cobran; window.document.getElementById("gold").innerHTML=yourgold; pocetobrany++; if(timeout4 != undefined) { window.clearTimeout(timeout4); } timeout4 = window.setTimeout(function() { $.get('vylepsiobranu.php?pocetobrany=' + pocetobrany); pocetobrany = 0; timeout4 = undefined; }, 5000); } else { document.getElementById("c4").innerHTML=nemas; } } $pocetsily = $_GET["pocetsily"]; for($i=0; $i<$pocetsily; $i++) { $nove_zlato = ($zlato-($sila*$sila*$sila)); if($nove_zlato < 0) { break; } $zlato = $nove_zlato; $sila++; } $sql = mysql_query("UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'"); ?> (U ostatních je to jen zaměněno za pocetobratnosti...atd. Děkuju za odpověď. |
||
juriad Profil |
#18 · Zasláno: 5. 7. 2013, 12:51:49
Klíčový nejspíš bude ten PHP skript, konkrétně část, kde se získávají proměnné $sila a $zlato.
Zkontroluj ještě ve vývojářských nástrojích (v prohlížeči stiskni F12) na kartě síť, jestli se opravdu posílají všechny požadavky správně. |
||
quest Profil |
#19 · Zasláno: 5. 7. 2013, 13:11:10
Nastroje vývoje mám zapnuté celou dobu co to zkouším a všechny požadavky jako je
př.:http://www...cz/vylepsisilu.php?pocetkliknuti=10 http://www.........cz/vylepsiobranu.php?pocetobrany=1 Tyhle požadavky se odesílají ale teď jsem zkoušel klikat různě na staty a zjistil jsem že se mezi sebou odečítají podle toho který je zmáčknutý dřív a kolik ho přibude tak že pokud máš př: 15 síly 9 obratnosti 11 odolnosti 29 obrany a vylepšíš: +1 síla...+1 obrana..+1síla..1+obratnost..+1odolnost tak budeš mít: 11 síly 8 obratnosti 10 odolnosti 28 obrany což mi přijde takhle: každá síla odečte všechno ostatní..všechno ostatní odečte sílu..pokud vylepším sílu tak se s ní nic nestane ale pokud jí vylepším po jiněm statu tak se odečte...Což nechápu:-))) Koukni se zde: medievalfighter.ezin.cz pokud se nechceš registrovat tak se přihlaš jako jméno:aa heslo:aa |
||
juriad Profil |
#20 · Zasláno: 5. 7. 2013, 13:35:39
V celém kódu, který jsi tady zatím ukázal se nikde síla, obratnost, odolnost ani obrana nesnižuje; vždy je přičítá jednička.
Chyba tedy musí být v části, kterou jsi neukázal. Na ten tvůj web se nedokážu dostat, dej sem prosím klikací odkaz. A ukaž jeden celý PHP skript (jméno a heslo k databázi vyhvězdičkuj). |
||
quest Profil |
pokus.php
<?php require_once dirname(__FILE__)."/config.php"; $select = mysql_query("SELECT id, zlato, lvl, exp, sila, obratnost, odolnost, obrana, zdravi, mindmg, maxdmg, cata, vyhral, prohral, souboj, body FROM uzivatele WHERE id='".$id."'") or die(mysql_error()); if ($odpoved = mysql_fetch_array($select)) { $zlato = $odpoved['zlato']; $lvl = $odpoved['lvl']; $exp = $odpoved['exp']; $sila = $odpoved['sila']; $obratnost = $odpoved['obratnost']; $odolnost = $odpoved['odolnost']; $obrana = $odpoved['obrana']; $zdravi = $odpoved['zdravi']; $mindmg = $odpoved['mindmg']; $maxdmg = $odpoved['maxdmg']; $prohral = $odpoved['prohral']; $vyhral = $odpoved['vyhral']; $souboj = $odpoved['souboj']; $cata = $odpoved['cata']; $body = $odpoved['body']; $gold = "Zlato: "; } if (mysql_num_rows($select)!=1) { header("Location: ./neprihlasen.php", odhlášení); } if (isset($_GET['logout'])) { unset($_SESSION['jmeno']); unset($_SESSION['heslo']); session_destroy(); header("Location: ./logouting.php", odhlášení); } ?> <html> <head> <title>Hlavní strana</title> </head> <body> <script type="text/javascript"> var zlato=<?php echo $zlato ?>; var lvl =<?php echo $lvl ?>; var exp=<?php echo $exp ?>; var sila=<?php echo $sila ?>; var obratnost=<?php echo $obratnost ?>; var odolnost=<?php echo $odolnost ?>; var obrana=<?php echo $obrana ?>; var zdravi=<?php echo $zdravi ?>; var mindmg=<?php echo $mindmg ?>; var maxdmg=<?php echo $maxdmg ?>; var cata="<?php echo $cata ?>"; var vyhral=<?php echo $vyhral ?>; var prohral=<?php echo $prohral ?>; var souboj=<?php echo $souboj ?>; var body=<?php echo $body ?>; var id=<?php echo $_SESSION['id'] ?>; var plati = "Nyní máš lvl <?php echo $lvl +1?>"; var neplati = "Nemáš dostatek zkušeností"; var nemas = "Nemáš dostatek zlata"; var csily =(sila*sila*sila); var cobrat =(obratnost*obratnost*obratnost); var codol =(odolnost*odolnost*odolnost); var cobran =(obrana*obrana*obrana); var clvl =(lvl*lvl*lvl); var pocetsily = 0; var pocetobratnosti = 0; var pocetodolnosti = 0; var pocetobrany = 0; var timeout1 = undefined; var timeout2 = undefined; var timeout3 = undefined; var timeout4 = undefined; function nlvl(){ if (exp>(lvl*lvl*lvl)){ zlato +=(100*lvl); lvl +=1; clvl =(lvl*lvl*lvl); window.document.getElementById("newlvl").innerHTML=plati; window.document.getElementById("c5").innerHTML=clvl; window.document.getElementById("gold").innerHTML=zlato; } else{ document.getElementById("c5").innerHTML=neplati; } } function vylepsisilu(){ if (zlato>=(sila*sila*sila)) { zlato -=(sila*sila*sila); sila +=1; csily =(sila*sila*sila); window.document.getElementById("vysledeksily").innerHTML=sila; window.document.getElementById("c1").innerHTML=csily; window.document.getElementById("gold").innerHTML=zlato; pocetsily++; if(timeout1 != undefined) { window.clearTimeout(timeout1); } timeout1 = window.setTimeout(function() { $.get('vylepsisilu.php?pocetsily=' + pocetsily); pocetsily = 0; timeout1 = undefined; }, 5000); } else { document.getElementById("c1").innerHTML=nemas; } } function vobratnost() { if (zlato>=(obratnost*obratnost*obratnost)) { zlato -=(obratnost*obratnost*obratnost); obratnost +=1; cobrat =(obratnost*obratnost*obratnost); window.document.getElementById("obratnost+").innerHTML=obratnost; window.document.getElementById("c2").innerHTML=cobrat; window.document.getElementById("gold").innerHTML=zlato; pocetobratnosti++; if(timeout2 != undefined) { window.clearTimeout(timeout2); } timeout2 = window.setTimeout(function() { $.get('vylepsiobratnost.php?pocetobratnosti=' + pocetobratnosti); pocetobratnosti = 0; timeout2 = undefined; }, 5000); } else { document.getElementById("c2").innerHTML=nemas; } } function vodolnost() { if (zlato>=(odolnost*odolnost*odolnost)) { zlato -=(odolnost*odolnost*odolnost); odolnost +=1; zdravi +=20; codol =(odolnost*odolnost*odolnost); window.document.getElementById("odo1").innerHTML=odolnost; window.document.getElementById("c2").innerHTML=codol; window.document.getElementById("gold").innerHTML=zlato; pocetodolnosti++; if(timeout3 != undefined) { window.clearTimeout(timeout3); } timeout3 = window.setTimeout(function() { $.get('vylepsiodolnost.php?pocetodolnosti=' + pocetodolnosti); pocetodolnosti = 0; timeout3 = undefined; }, 5000); } else { document.getElementById("c3").innerHTML=nemas; } } function vobrana() { if (zlato>=(obrana*obrana*obrana)) { zlato -=(obrana*obrana*obrana); obrana +=1; cobran =(obrana*obrana*obrana); window.document.getElementById("obrana+").innerHTML=obrana; window.document.getElementById("c4").innerHTML=cobran; window.document.getElementById("gold").innerHTML=zlato; pocetobrany++; if(timeout4 != undefined) { window.clearTimeout(timeout4); } timeout4 = window.setTimeout(function() { $.get('vylepsiobranu.php?pocetobrany=' + pocetobrany); pocetobrany = 0; timeout4 = undefined; }, 5000); } else { document.getElementById("c4").innerHTML=nemas; } } </script> <div style="position: absolute; top: 50px; left: 500px"><b>Vítej ve hře Medieval Fighter</b></div> <div style="position: absolute; top: 130px; left: 350px"><p>Nyní jste přihlášen jako <b><?php echo $_SESSION['jmeno'] ?></b>.</p></div> <div style="position: absolute; top: 160px; left: 380px"><p>Zde je vaše postava</p></div> <div style="position: absolute; top: 20px; left: 1100px"><p><a href="../user.php?logout">Odhlásit</a></p></div> <div style="position: absolute; top: 120px; left: 0px"><a href="/postava.php"><img src="postava.jpg" border="0"></a></div> <div style="position: absolute; top: 180px; left: 0px"><a href="/uspech.php"><img src="uspech.jpg" border="0"></a></div> <div style="position: absolute; top: 240px; left: 0px"><a href="/dobrodruzstvi.php"><img src="vypravy.jpg" border="0"></a></div> <div style="position: absolute; top: 300px; left: 0px"><a href="/zapas.php"><img src="zapas.jpg" border="0"></a></div> <div style="position: absolute; top: 360px; left: 0px"><a href="/turnaj.php"><img src="turnaj.jpg" border="0"></a></div> <div style="position: absolute; top: 420px; left: 0px"><a href="/obchod.php"><img src="obchod.jpg" border="0"></a></div> <div style="position: absolute; top: 480px; left: 0px"><a href="/slava.php"><img src="slava.jpg" border="0"></a></div> <div style="position: absolute; top: 540px; left: 0px"><a href="/prace.php"><img src="prace.jpg" border="0"></a></div> <div style="position: absolute; top: 350px; left: 500px"><input type="button" onClick="nlvl();" value="Vylepši lvl"></div> <div style="position: absolute; top: 250px; left: 500px"><input type="button" onClick="vylepsisilu();" value="Vylepši sílu"></div> <div style="position: absolute; top: 275px; left: 500px"><input type="button" onClick="vobratnost();" value="Vylepši obratnost"></div> <div style="position: absolute; top: 300px; left: 500px"><input type="button" onClick="vodolnost();" value="Vylepši odolnost"></div> <div style="position: absolute; top: 325px; left: 500px"><input type="button" onClick="vobrana();" value="Vylepši obranu"></div> <div style="position: absolute; top: 250px; left: 650px"><div id="vysledeksily"><?php echo $sila ?></div></div> <div style="position: absolute; top: 275px; left: 650px"><div id="obratnost+"><?php echo $obratnost ?></div></div> <div style="position: absolute; top: 300px; left: 650px"><div id="odo1"><?php echo $odolnost ?></div></div> <div style="position: absolute; top: 325px; left: 650px"><div id="obrana+"><?php echo $obrana ?></div></div> <div style="position: absolute; top: 350px; left: 650px"><div id="newlvl"><?php echo $lvl ?></div></div> <div style="position: absolute; top: 250px; left: 850px"><div id="c1"><?php echo ($sila*$sila*$sila) ?></div></div> <div style="position: absolute; top: 275px; left: 850px"><div id="c2"><?php echo ($obratnost*$obratnost*$obratnost) ?></div></div> <div style="position: absolute; top: 300px; left: 850px"><div id="c3"><?php echo ($odolnost*$odolnost*$odolnost) ?></div></div> <div style="position: absolute; top: 325px; left: 850px"><div id="c4"><?php echo ($obrana*$obrana*$obrana) ?></div></div> <div style="position: absolute; top: 350px; left: 850px"><div id="c5"><?php echo ($lvl*$lvl*$lvl) ?></div></div> <div style="position: absolute; top: 160px; left: 830px"><div id="gold"><?php echo $zlato ?></div></div> <div style="position: absolute; top: 160px; left: 780px"><div id="goldtext"><?php echo $gold ?></div></div> </body> </html> [pre] <?php require_once dirname(__FILE__)."/config.php"; $select = mysql_query("SELECT id, zlato, lvl, exp, sila, obratnost, odolnost, obrana, zdravi, mindmg, maxdmg, cata, vyhral, prohral, souboj, body FROM uzivatele WHERE id='".$id."'") or die(mysql_error()); if ($odpoved = mysql_fetch_array($select)) { $zlato = $odpoved['zlato']; $lvl = $odpoved['lvl']; $exp = $odpoved['exp']; $sila = $odpoved['sila']; $obratnost = $odpoved['obratnost']; $odolnost = $odpoved['odolnost']; $obrana = $odpoved['obrana']; $zdravi = $odpoved['zdravi']; $mindmg = $odpoved['mindmg']; $maxdmg = $odpoved['maxdmg']; $prohral = $odpoved['prohral']; $vyhral = $odpoved['vyhral']; $souboj = $odpoved['souboj']; $cata = $odpoved['cata']; $body = $odpoved['body']; } $pocetsily = $_GET["pocetsily"]; for($i=0; $i<$pocetsily; $i++) { $nove_zlato = ($zlato-($sila*$sila*$sila)); if($nove_zla Nevím proč ale ve vylepsisilu.php se mi usekl kód celý kód: <?php require_once dirname(__FILE__)."/config.php"; $select = mysql_query("SELECT id, zlato, lvl, exp, sila, obratnost, odolnost, obrana, zdravi, mindmg, maxdmg, cata, vyhral, prohral, souboj, body FROM uzivatele WHERE id='".$id."'") or die(mysql_error()); if ($odpoved = mysql_fetch_array($select)) { $zlato = $odpoved['zlato']; $lvl = $odpoved['lvl']; $exp = $odpoved['exp']; $sila = $odpoved['sila']; $obratnost = $odpoved['obratnost']; $odolnost = $odpoved['odolnost']; $obrana = $odpoved['obrana']; $zdravi = $odpoved['zdravi']; $mindmg = $odpoved['mindmg']; $maxdmg = $odpoved['maxdmg']; $prohral = $odpoved['prohral']; $vyhral = $odpoved['vyhral']; $souboj = $odpoved['souboj']; $cata = $odpoved['cata']; $body = $odpoved['body']; } $pocetsily = $_GET["pocetsily"]; for($i=0; $i<$pocetsily; $i++) { $nove_zlato = ($zlato-($sila*$sila*$sila)); if($nove_zlato < 0) { break; } $zlato = $nove_zlato; $sila++; } $sql = mysql_query("UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'"); ?> odkaz: http://www.medievalfighter.ezin.cz/index.php |
||
juriad Profil |
#22 · Zasláno: 5. 7. 2013, 14:18:27
Mě se to chová tak, že se dotaz na server se vždy odešle správně a občas se skoro náhodně mění síla (nahoru i dolu), nic jiného se mi nepodařilo změnit.
Zkus schválně ten prováděný dotaz (řádek 32) : "UPDATE uzivatele SET sila='$sila', zlato='$zlato' WHERE id='".$_SESSION['id']."'" vypsat echem na výstup (bude pak vidět v detailu spojení na kartě sít v části odpověď). A přidej také výpis, zdali se ten UPDATE povedl (výsledek mysql_query).
Já nikde chybu nevidím, dokázal bych to svést jen na „kvalitní hosting“. |
||
quest Profil |
#23 · Zasláno: 6. 7. 2013, 09:46:45
Děkuju už to funguje(měl jsem proházené set sila='$obratnost' atd.)
|
||
Časová prodleva: 11 let
|
0