| 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: 12 let
|
|||
0