login  Naam:   Wachtwoord: 
Registreer je!
 Forum

Maximaal 100% (Opgelost)

Offline SomaQan - 09/06/2007 16:20
Avatar van SomaQanPHP beginner Ik ben met een spel bezig alleen ik heb een klein bugje ondekt net
elke speler begint met 100% leven maar als die aangevallen wordt wordt het min (ligt er aan hoe hard hij geslagen wordt)

net was mij leven 88 % en ik had eten gekocht en ik at 13 voedsel me leven werd 101% terwijl 100 Maximaal is

ik heb verschilden dingen geprobeert maar niks helpt

Script
  1. <?php
  2. if(isset($_POST['eten']) && preg_match('/^[0-9]+$/',$_POST['amount'])) {
  3.  
  4. if($_POST['amount'] && $gezondheid >= 100){
  5. echo'Je gezondheid is al 100%<br />';
  6. }
  7. else{
  8. if($_POST['amount'] <= $voedsel) {
  9.  
  10. $gezondheid += htmlspecialchars($_POST['amount']);
  11. $voedsel -= htmlspecialchars($_POST['amount']);
  12.  
  13.  
  14.  
  15. mysql_query("UPDATE `gebruiker` SET
  16. `voedsel`= ".mysql_real_escape_string($voedsel).",
  17. `gezondheid`=".mysql_real_escape_string($gezondheid)."
  18. WHERE `gebruiker_id` ='".$id."' LIMIT 1") or die(mysql_error());
  19. echo '<meta http-equiv="refresh" content="0; URL=?pagina=kasteel">';
  20. }
  21.  
  22. else{
  23.  
  24. echo "- Zoveel voedsel heb je niet om op te eten!<br />";
  25. }
  26. ?>


Alavst bedankt !

9 antwoorden

Gesponsorde links
Offline timo - 09/06/2007 16:30
Avatar van timo PHP ver gevorderde
  1. <?php
  2. if(isset($_POST['eten']) && preg_match('/^[0-9]+$/',$_POST['amount'])) {
  3.  
  4. if($gezondheid == 100){
  5. echo'Je gezondheid is al 100%<br />';
  6. }
  7. else{
  8. if($_POST['amount'] <= $voedsel) {
  9.  
  10. $gezondheid += htmlspecialchars($_POST['amount']);
  11. $voedsel -= htmlspecialchars($_POST['amount']);
  12.  
  13.  
  14.  
  15. mysql_query("UPDATE `gebruiker` SET
  16. `voedsel`= ".mysql_real_escape_string($voedsel).",
  17. `gezondheid`=".mysql_real_escape_string($gezondheid)."
  18. WHERE `gebruiker_id` ='".$id."' LIMIT 1") or die(mysql_error());
  19. header('Refresh: 0; URL=?pagina=kasteel');
  20. }
  21.  
  22. else{
  23.  
  24. echo "- Zoveel voedsel heb je niet om op te eten!<br />";
  25. }
  26. ?>

headers om te refreshen zijn handiger (vind ik persoonlijk dan), aangezien meta refresh kan worden uitgeschakeld
Offline Stefan14 - 09/06/2007 16:32
Avatar van Stefan14 PHP gevorderde in je if statement moet je dit zetten
  1. <?php
  2. if($_POST['amount'] >= 100 || $gezondheid >= 100)
  3. ?>


of dit, ik weet niet precies wat je wil bereiken?

  1. <?php
  2. if($_POST['amount'] + $gezondheid >= 100)
  3. ?>
Offline SomaQan - 09/06/2007 16:43
Avatar van SomaQan PHP beginner @Stefan, kijk je hebt bijvoorbeeld 30 eten bij je en je leven is 90% elke 1 eten is 1% en ik ga nu eten ik eet dan bijvoorbeeld 20 eten terwijl ik maar 10 kan eten dus ik wil dan dan dat die andere 10 gewoon op je account blijven
Offline Rik - 09/06/2007 16:51 (laatste wijziging 09/06/2007 17:30)
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
En als je van regel 10 t/m 11 dit maakt:
  1. <?php
  2. $gegeten = ($gezondheid + intval($_POST['amount'])) % 100 - $gezondheid;
  3. $gezondheid += $gegeten;
  4. $voedsel -= $gegeten;
  5. ?>
:?:

Het lijkt me trouwens handig als je alle post / get waarden van tevoren htmlspecialchart, want nu doe je dat eigenlijk elke keer dat je zo'n waarde gebruikt apart:
  1. <?php
  2. $_POST = array_map('htmlspecialchars', $_POST);
  3. ?>


Citaat:
Marten edit
PHP tags
Offline Koen - 09/06/2007 17:01
Avatar van Koen PHP expert
  1. <?php
  2. if(isset($_POST['eten']) && preg_match('/^[0-9]+$/',$_POST['amount'])) {
  3.  
  4. if($gezondheid >= 100){
  5. echo 'Je gezondheid is al 100%<br />';
  6. } else {
  7. if($_POST['amount'] <= $voedsel) {
  8. $gezondheid2 = $gezondheid + $_POST['amount'];
  9. if($gezondheid2 <= 100) {
  10. $gezondheid += htmlspecialchars($_POST['amount']);
  11. $voedsel -= htmlspecialchars($_POST['amount']);
  12.  
  13.  
  14.  
  15. mysql_query("UPDATE `gebruiker` SET
  16. `voedsel`= ".mysql_real_escape_string($voedsel).",
  17. `gezondheid`=".mysql_real_escape_string($gezondheid)."
  18. WHERE `gebruiker_id` ='".$id."' LIMIT 1") or die(mysql_error());
  19. header('location: ?pagina=kasteel');
  20. } else {
  21. $resterend = $gezondheid2 - 100;
  22. $gezondheid += htmlspecialchars($_POST['amount']);
  23. $voedsel -= htmlspecialchars($_POST['amount']);
  24. $voedsel2 = $voedsel + $resterend;
  25. mysql_query("UPDATE `gebruiker` SET
  26. `voedsel`= ".mysql_real_escape_string($voedsel).",
  27. `gezondheid`=".mysql_real_escape_string($gezondheid)."
  28. WHERE `gebruiker_id` ='".$id."' LIMIT 1") or die(mysql_error());
  29. header('location: ?pagina=kasteel');
  30. }
  31. } else {
  32.  
  33. echo '- Zoveel voedsel heb je niet om op te eten!<br />';
  34. }
  35. ?>

En als je het zo probeerd?
Offline Scythen - 09/06/2007 17:15 (laatste wijziging 09/06/2007 17:31)
Avatar van Scythen PHP gevorderde
  1. <?php if($health+$voedsel) > 100){ ?>


je kan er maar maximaal 20 eten.

Zoiets zou ik maken.

Citaat:
Marten edit
Code tags + php tags!
Offline Rik - 09/06/2007 17:26
Avatar van Rik Gouden medailleGouden medaille

Crew algemeen
Ik zou sowieso een mogelijkheid maken om je persoon 'te laten eten zolang zijn voorraad toelaat totdat hij weer geheel op krachten is'.

Of een dropdown waar de gebruiker uit kan kiezen en waar je automatisch alleen waarden in laat zien die plus de gezondheid minder zijn dan 100.
Offline SomaQan - 09/06/2007 18:15 (laatste wijziging 09/06/2007 18:17)
Avatar van SomaQan PHP beginner Het is opgelost het moest zo zijn

  1. <?php
  2. if($_POST['amount'] + $gezondheid >= 101){
  3. ?>


Citaat:
stijn1989:
Leer schrijven
Offline Stefan14 - 09/06/2007 21:38
Avatar van Stefan14 PHP gevorderde Ok, of je maakt er het volgende van:
  1. <?php
  2. if($_POST['amount'] + $gezondheid > 100)
  3. ?>


Leest iets lekkerder/logischer (vind ik)
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.265s