Autor | Zpráva | ||
---|---|---|---|
Alastor_Kopal Profil |
#1 · Zasláno: 27. 5. 2009, 20:27:04 · Upravil/a: Alastor_Kopal
sobor pro vypití lektvaru
elseif ($zivoty > "$maximum") { else { echo"<div style=\"color: red;\">Vypili jste lektvar zdraví (+10 životů)</div>"; // uložíme změny do databáze if (isset($_SESSION["id"])) mysql_query ("update dobro set zdravi = '$zivoty',$misto = 'http://www.magic-quest.kx.cz/veci/nic.gif' where id='$id'", $connection); $_SESSION['zdravi'] = "$zivoty"; include'ulozzdravi.php'; a ulozzdravi.php ulozi zase to že v tom políčku kde je ten lektvar bude prázdno) ulozzdravi.php <?php if($misto == "misto1"){ $_SESSION['misto1'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto == "misto2"){ $_SESSION['misto2'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto == "misto3"){ $_SESSION['misto3'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto == "misto4"){ $_SESSION['misto4'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto = "misto5"){ $_SESSION['misto5'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto == "misto6"){ $_SESSION['misto6'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto == "misto7"){ $_SESSION['misto7'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto == "misto8"){ $_SESSION['misto8'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} elseif($misto == "misto9"){ $_SESSION['misto9'] = "http://www.magic-quest.kx.cz/veci/nic.gif";} ?> Databáze v pohodě - ukazatel životů - vpohodě ale SESSION[misto] - ten lektvar se oddělá jen když je v políčku (misto1) ale v ostatních ne celý kód prvního souboru je na http://www.magic-quest.kx.cz/hra/zdravi10.txt |
||
tiso Profil |
#2 · Zasláno: 27. 5. 2009, 20:39:45
Alastor_Kopal - miesto toho, aby si sa tu stále vypytoval na problémy pri programovaní hry, na čo nemáš dostatočné znalosti, mal by si sa naučiť základy programovania a samostatnosti.
|
||
fajzen Profil |
#3 · Zasláno: 27. 5. 2009, 22:19:10
$misto = "misto1" $misto == "misto1" |
||
Alastor_Kopal Profil |
#4 · Zasláno: 27. 5. 2009, 23:47:32
Je aha promiňte
|
||
Nox Profil |
#5 · Zasláno: 28. 5. 2009, 08:42:25 · Upravil/a: Nox
Alastor_Kopal
Hlavně si čti co napsal tiso a to do té doby, než pochopíš že má pravdu Mj. takováto věc by se dala napsat třeba krátce do if( preg_match("/misto\d+/",$misto) ){ $_SESSION[$misto] = "..."; } (případně v tvém případě asi rozepsat podmínku) jelikož snad sám vidíš, jak moc se tam ty věci opakují |
||
imploder Profil |
#6 · Zasláno: 28. 5. 2009, 09:52:52 · Upravil/a: imploder
„Mj. takováto věc by se dala napsat třeba krátce do 1
2 3 if( preg_match("/misto\d/",$misto) ){ $_SESSION[$misto] = "..."; }“ jj, je to rozkopírovaný kód - 10x to samé. Když chceš něco změnit, musíš to udělat 10krát pro každou věc. To je špatně. Měl bys to řešit jako pole. Tak nebude problém rozšířit inventář třeba na 50 míst, aniž bys musel nějak natahovat kód. Takhle to jde, když si chceš něco rychle vyzkoušet (možná tenhle případ, nevím), ale neměl bys to tak nechávat, byly by s tím jenom problémy. Taky na věc bys neměl odkazovat celou URL včetně domény, pak nepůjde hra bez úprav přesunout jinam. Jméno souboru bohatě stačí. třeba takhle nějak by se daly lektvary ukládat (v proměnné $misto index inventáře, $pocet_mist celkový počet míst v inventáři, kam chceš lektvar uložit): function uloz_vec($misto, $vec) { for($i=$misto; $i<($misto+$pocet_mist); $i++) { // vyhledání nejbližšího volného místa směrem doprava if($_SESSION["inventar"][$i%$pocet_mist] == "") { // místo je prázdné $_SESSION["inventar"][$i%$pocet_mist] = $vec; // uloží věc return ($i%$pocet_mist); // a vrátí pozici, kam byla uložena (pozn.: příkaz return ukončuje funkci) } } return -1; // nenašlo se místo, tak se vrátí chyba } $vysledek = uloz_vec(0, "lektvarxxx"); if($vysledek == -1) { // v inventáři už nebylo místo } else { // v pořádku, věc je v $_SESSION["inventar"][$vysledek] } Ty asi řešíš něco jiného, prostě vymazání místa po vypitém lektvaru, to by bylo: $_SESSION["inventar"][$misto] = ""; Třeba tak nějak, můžeš to mít samozřejmě udělané jinak. Zkus si třeba nejdřív udělat návrh na papír, jak chceš mít věci ve hře uspořádané a co se s nima bude dělat. P.S.: čísla se nepíšou do uvozovek, v elseif ($zivoty > "$maximum") { EDIT: tak jo, for jsem předělal. pro Alastora: operátor % je modulo, tedy zbytek po celočíselném dělení; tedy např. 8%5 dá výsledek 3. Zajišťuje, že místo přetečení za konec pole se pokračuje na jeho začátku - prostě takové kruhové procházení. Ten kód stejně řeší něco jiného (zařazení předmětu - např. lektvaru - na první volné místo od určité pozice), takže je beztak trochu off-topic. Ale třeba se taková funkce bude hodit. |
||
imploder Profil |
#7 · Zasláno: 28. 5. 2009, 09:54:26
aha, určité druhy lektvarů jsou na tomto fóru zakázané :)
no to je vlastně jedno, prostě nějaké jméno lektvaru |
||
imploder Profil |
#8 · Zasláno: 28. 5. 2009, 09:57:52
v tom for()u mám chybu (neprovedl by se), tak to radši udělej nějak podle sebe
|
||
tiso Profil |
#9 · Zasláno: 28. 5. 2009, 10:24:56
imploder - ako prihlásený užívateľ môžeš editovať svoj príspevok (myslím, že 24 hodín), takže tú chybu v skripte si môžeš opraviť.
|
||
Časová prodleva: 15 let
|
0