Yo allemaal,

k ben bezig met het maken van een text-based MMORPG, je kan het bekijken op http://www.truecrime.be.tc.

Maar nu zit ik met volgend probleem:
in mijn steelauto.php krijg je 2 mogelijkheden:

-op een priveparking
-bij de supermarkt

De speler klikt op een van deze mogelijkheden, waarna hij te zien zal krijgen:

ofwel: Dat hij de auto heeft gestolen + merk + waarde

ofwel: Dat de poging mislukt is

De auto's zal ik opslaan in een mysql db, zoals in onderstaand voorbeeld:

id | merk | type | waarde | stolen
----------|-------------|-------------|-----------|--------
0001 | Bugaty | type 35 | 1000 $ | True
0002 | Bugaty | tank | 750 $ |

enz..

als je een auto probeert te stelen, en de poging is gelukt, dan moet hij een auto uit de db halen waar geen 'True' staat in de kolom 'stolen'.

Grtz,

PcFrEaKy
kan zijn dat jij het lelijk vind, wij vinden het goed zo.

maar ik zit met nog een probleem. in elke pagina is jailcheck.php geïncluded, hier ff de inhoud:

<?

include("mysqlconn.php");

$sql = "SELECT id,jail FROM gebruikers WHERE id = '".$_SESSION['user_id']."'";
$query = mysql_query($sql);
$rij = mysql_fetch_object($query);

$id = htmlspecialchars($rij->id);
$jail = htmlspecialchars($rij->jail);

$tijd = date("H:i:s");

if($jail >= $tijd)
{
// commandos voor als je nog in de gevangenis zit.
header("location: injail.php");
}

if($jail <= $tijd)
{
// commandos voor als je uit de gevangenis mag.
}

?>

injail.php is dit:

<?
include("top.php");

echo 'Je zit in de gevangenis.';
echo '<br>';
echo '<br>';
echo '<img src="../images/jail-sm.jpg" border="0" />';

include("bottom.php");

?>

als het nu 10:00 uur is en ik zet in me db op 10:07 en ik herlaad de pagina, dan duurt het 7 minuten voor de pagina geladen is (tot eindtijd) en pas daarna geeft hier injail.php weer. Dit zou direct moeten komen, en pas als je herlaad na de eindtijd (10.07 uur in dit geval) mag die pagina pas terug weg gaan. Wat doe ik mis??
if($jail >= $tijd)

moet natuurlijk

if($jail <= $tijd)

worden, en hetzelfde geld voor die eronder.
Er word in de database gezet tijd + 3 minuten. Als het dus nu 10.00 uur is, wordt er in de database 10.03 uur gezet. Dit is het uur dat je uit de gevangenis mag.

<?

if($jail >= $tijd)
{
// commandos voor als je nog in de gevangenis zit.
header("location: injail.php");
}

?>

$jail >= $tijd
10.03 uur >= 10.00 uur
Je zit dus nog in de gevangenis

<?
if($jail <= $tijd)
{
// commandos voor als je uit de gevangenis mag.
}
?>

Het is dus nu 10.04 geworden...

$jail <= $tijd
10.03 uur <= 10.04 uur
Je mag uit de gevangenis.

Juist?

Maar als je in de gevangenis zit, en je klikt op misdaad of eender wat, wordt je doorgestuurd naar injail.php

<?
header("location: injail.php");
?>

Het laden van deze pagina duurt tot je uit de gevangenis komt.

Ik heb in de database al gezet dat ik 10 minuten in de gevangenis moet zitten en het blijft hetzelfde...
is het niet makkelijker om gewoon time() te gebruiken in de database te plaatsen met 3 min extra? time()+120 en dan injail.php
<?php
$time1 = time();
$time2 = $row->injail;
$buh = $time2 - $time1
echo ' u moe tnog '. $buh' sec inde gevangenis';
?>
hoe zorg ik er dan voor dat je ALTIJD deze pagina te zien krijgt als je in jail zit, dus ook als je op misdaad klikt of zow
gewoon controlere met
if($row->injail <= time()){ echo 'hij is er uit '; }
else{
'hij is inhet gevang';
}

en deze pagina include je gewoon?
wat is er fout met dit:

<?
if(isset($_GET['buy']))
{
$sql = "INSERT INTO inventory (type , user , item , price ) VALUES ('$type' , '".$_SESSION['user_id']."' , '$item' , '$price')";
mysql_query($sql);

$sql2 = "SELECT * FROM gebruikers WHERE id = '".$_SESSION['user_id']."'";
$query2 = mysql_query($sql);
$rij2 = mysql_fetch_object($query2);
$coins = htmlspecialchars($rij2->coins);

if($coins <= $price)
{
header("location: nietgenoeggeld.php");
}

$sql4 = "SELECT * FROM inventory WHERE user = '".$_SESSION['user_id']."' WHERE type = 2 ORDER BY id ASC";
$query4 = mysql_query($sql4);
$aantal = mysql_num_rows($query4);

if($aantal >= 1)
{
header("location: aleenwapen.php");
}

$sql5 = "SELECT * FROM gebruikers WHERE id = '".$_SESSION['user_id']."'";
$query5 = mysql_query($sql);
$rij5 = mysql_fetch_object($query2);
$coins = htmlspecialchars($rij5->coins);
$eindbedrag = $coins - $price;
$sql3 = "UPDATE gebruikers SET coins = $eindbedrag WHERE id = '".$_SESSION['user_id']."'";
mysql_query($sql3);
}
?>

?? ik had 1'000'000 coins in me db staan, ik probeer iets te kopen (van 3000 coins) en men bedrag wordt gereset naar -3000, waarna hij de fout geeft 'je hebt niet genoeg geld'
het gaat fout op regel 8
je roept daar de verkeerde variable aan ($sql)
je moet daar een andere query gebruiken namelijk ($sql2)
En dezelfde fout nog eens op regel 27 in het geposte stukje, daar moet het alleen $sql5 zijn.
oke, heb dit even gefikst. Het probleem is er echter nog dat als je geld op zak hebt, en je gaat naar de shop, en je koopt voor 3000 coins, je bedrag wordt gereset naar $-3000, waardoor je dus al je geld kwijt bent...

Reageren