Page 1 of 1

Need some help

Posted: Sun Dec 27, 2009 8:34 pm
by Bascavia10
First I'd like to say I personally think these tutorials are totally awesome. I always wanted to do such a thing and unlike other codes I've seen I can easily understand yours and rewrite it as I want, so thanks for this awesome series :D
However, I've got a question. I did download the files as you provided them in the topic of the 18th tutorial, got them all proper installed, but one mayor error seems to occur: somehow when a spell is cast, the hitpoints of the monster aren't updated... I tried fixing it myself by adding one simple line, but for this didn't work, I have no idea how to fix this annoying problem :? Could you please help? I pasted the code of attack.php below, it's similar to the one in your video 18-files package, except for one line.

Thanks anyway!

Code: Select all

<?php
include_once 'connect.php';
  session_start();
  include_once 'logo.php';
?>
  
  <link href="style.css" rel="stylesheet" type="text/css" />
<div id="login2" div align="center">

<?php
if (isset($_SESSION['player']))
{
  $player=$_SESSION['player'];
}
else
{
  echo "Not Logged in <br><br> <A href='login.php'>Login</a>";
  exit;
}
?>
</div>
<?php
 $playerinfo="SELECT * from players where name='$player'";
$playerinfo2=mysql_query($playerinfo) or die("could not get player stats!");
$playerinfo3=mysql_fetch_array($playerinfo2);
 include_once 'statpanel.php';
$pid = $playerinfo3['id'];
 ?>
</div>
<div id="table">
<?php

 $creature = $playerinfo3['creature'];
 if ($creature != 0)
{
 $creatureinfo="SELECT * from creatures where id='$creature'";
$creatureinfo2=mysql_query($creatureinfo) or die("could not get the creature you were fighting!");
$creatureinfo3=mysql_fetch_array($creatureinfo2);

}
else
{
  echo "<a href='battle.php'>No Creature selected. Go Back!";
  exit;
}

$playerhp = $playerinfo3['hpoints'];
$playerattack = $playerinfo3['attack'];
$playerdefense = $playerinfo3['defense'];
$playerpass = 0;

$creature = $creatureinfo3['name'];
$creaturehp = $creatureinfo3['hpoints'];
$creatureattack = $creatureinfo3['attack'];
$creaturedefense = $creatureinfo3['defense'];

 ?>
 </div>

 <div id="player">
 <?php
 ///////////////////////players turn////////////////////
  
 echo "<center><u> " . $playerinfo3['name'] . "'s Attack</u><br>";
 if (isset($_GET['sid']))
{
   $sid=$_GET['sid'];
   $spellinfo="SELECT * from playermagic where sid='$sid' AND pid='$pid'";
 $spellinfo2=mysql_query( $spellinfo) or die("could not get spell!");
 $spellinfo3=mysql_fetch_array( $spellinfo2);
 $sname = $spellinfo3['name'];
if ($spellinfo3['type'] == "combat")
	{
	if ($spellinfo3['scost'] > $playerinfo3['spoints'])
	{
	echo "You do not have enough Spell Points for this spell.<br>";
	 echo "<a href='battle.php'>Go Back";
	exit;
	}
	else
	{
	$spoints = $spellinfo3['scost'];
	$moddamage = $spellinfo3['svalue'] / 10;
	$moddamage = (int)$moddamage;
	$sdamage =  $spellinfo3['svalue'];
	$randdamage = rand(0, $sdamage);
	$sdamage = $randdamage + $moddamage;
        $newcreaturehp = $creaturehp - $sdamage;

	echo " You Cast " . $sname . " and do " . $sdamage . " points of damage";
	$playerpass = 1;
	  $updateplayer="update players set spoints=spoints-'$spoints' where name='$player'";
  mysql_query($updateplayer) or die("Could not update player");
	}}
} 




if ($playerpass != 1)
{

 $weaponinfo="SELECT * from playerweapons where equip=1 AND pid='$pid'";
$weaponinfo2=mysql_query( $weaponinfo) or die("could not get player weapon!");
$weaponinfo3=mysql_fetch_array( $weaponinfo2);

$playerattack = rand(1,20) + $playerattack + $weaponinfo3['rating'];
//////////////////////////////////////////////////////
$creaturedefense = rand(1,20) + $creaturedefense;

echo $playerinfo3['name'] . "'s Attack roll is " . $playerattack . "<br>";
echo $creature . "'s defense roll is " . $creaturedefense. "<br>";

if ($playerattack  > $creaturedefense)
{
  echo  $playerinfo3['name'] . " " . $weaponinfo3['hittext'] . " and hits!<br>"; 
  
 
  $weapdamage = $weaponinfo3['damage'];
  $halfdamage = $weaponinfo3['damage'] / 2;
  $playerdamage = rand($halfdamage,$weapdamage);
   $newcreaturehp = $creaturehp - $playerdamage;
  echo "For " . $playerdamage . " points of damage. <br>";
   if ($newcreaturehp < 1)
   {
     echo "The " . $creature . " has been killed";

   $crmaxhp=$creatureinfo3['maxhpoints'];
       $updatecreature="update creatures set hpoints='$crmaxhp' where name='$creature' limit 1";
   mysql_query($updatecreature) or die("Could not update creature");



        if ($playerinfo3['level'] > $creatureinfo3['level'])
        {
         $firstmod = $playerinfo3['level'] - $creatureinfo3['level'];
         $secondmod = $firstmod * 10 ;
         if ($secondmod > 90){$secondmod = 90;}
         $thirdmod = ($secondmod / 100) * $creatureinfo3['exper'];
         $totalexper =$creatureinfo3['exper'] - $thirdmod;
        }
        else
        {
         $firstmod = $creatureinfo3['level'] - $playerinfo3['level'];
         $secondmod = $firstmod * 10 ;
         if ($secondmod > 90){$secondmod = 90;}
         $thirdmod = ($secondmod / 100) * $creatureinfo3['exper'];
         $totalexper =$creatureinfo3['exper'] + $thirdmod;
        }
          $totalexper = (int)$totalexper;

           echo "<br><b><big>You gain " . $totalexper . " experience.</b></big><br>";
      $updateplayer="update players set exper=exper+'$totalexper',creature=0 where name='$player'";
  mysql_query($updateplayer) or die("Could not update player");



      echo "<a href='battle.php'>Go Back";
      exit;
   }

  $updatecreature="update creatures set hpoints='$newcreaturehp' where name='$creature' limit 1";
  mysql_query($updatecreature) or die("Could not update creature");
}
else
{
  echo  $playerinfo3['name'] . " " . $weaponinfo3['hittext'] . " and misses!";
}}
?>
</div>
<div id="creature">
<?php
 //////////////////////creatures turn //////////////////

echo "<center><u> " . $creature . "'s Attack</u><br>";


 
 ///////hit location//////////////////////////////////////
		$randlocation = rand(0,100);
		if ($randlocation <= 15)
		{$location = "arms";}
		elseif ($randlocation <= 70)
		{$location = "chest";}
		elseif ($randlocation <= 90)
		{$location = "legs";}
		elseif ($randlocation <= 100)
		{$location  = "head";}
		
   $playerarmor="SELECT * from playerarmor where pid='$pid' AND location='$location' AND equip=1";
   $playerarmor2=mysql_query($playerarmor) or die("Could not get player armmor");
   $playerarmor3=mysql_fetch_array($playerarmor2);
   
   $noarmor = 0;
   
   if(is_null($playerarmor3['rating']))
   {
   $playerarmor3['rating'] = 0;
   $noarmor = 1;
   } 
  
  
   ////////////////////////////////////
$creatureattack = rand(1,20) + $creatureattack;
$playerdefense = rand(1,20) + $playerdefense + $playerarmor3['rating'];

echo $creature . "'s Attack roll is " . $creatureattack . "<br>";
echo $playerinfo3['name'] . "'s defense roll is " . $playerdefense . "<br>";

if ($creatureattack  > $playerdefense)
{

  echo $creature . " hits for a strike to the " . $location . "<br>";
   $creaturedamage = rand(1,6);
   $newplayerhp = $playerhp - $creaturedamage;
   echo "For " . $creaturedamage . " points of damage. <br>";
  if ($noarmor == 1)
  {
  echo "You are not wearing armor on your " . $location . ".<br>";
   $extradamage = rand(1,3);
   echo "You take an additional " . $extradamage . " points of damage.<br>";
  $newplayerhp = $newplayerhp - $extradamage;
  }
     if ($newplayerhp < 1)
   {
     echo $playerinfo3['name'] . " has been killed<br>";
      echo "<a href='gameover.php>Continue'";
      exit;
   }
  $updateplayer="update players set hpoints='$newplayerhp' where name='$player'";
  mysql_query($updateplayer) or die("Could not update player");
}
else
{
  echo $creature . " misses!";
}
 echo "<br><br><a href='battle.php?creature=$creature'>Battle Again!";
 ?>
 </div>


Re: Need some help

Posted: Sun Dec 27, 2009 8:56 pm
by hallsofvallhalla
i need to look back at the original tuts but it looks like you are missing the creature update, change this

Code: Select all

   else
   {
   $spoints = $spellinfo3['scost'];
   $moddamage = $spellinfo3['svalue'] / 10;
   $moddamage = (int)$moddamage;
   $sdamage =  $spellinfo3['svalue'];
   $randdamage = rand(0, $sdamage);
   $sdamage = $randdamage + $moddamage;
        $newcreaturehp = $creaturehp - $sdamage;

   echo " You Cast " . $sname . " and do " . $sdamage . " points of damage";
   $playerpass = 1;
     $updateplayer="update players set spoints=spoints-'$spoints' where name='$player'";
  mysql_query($updateplayer) or die("Could not update player");
   }}
} 

to this

Code: Select all

   else
   {
   $spoints = $spellinfo3['scost'];
   $moddamage = $spellinfo3['svalue'] / 10;
   $moddamage = (int)$moddamage;
   $sdamage =  $spellinfo3['svalue'];
   $randdamage = rand(0, $sdamage);
   $sdamage = $randdamage + $moddamage;
        $newcreaturehp = $creaturehp - $sdamage;

   echo " You Cast " . $sname . " and do " . $sdamage . " points of damage";
   $playerpass = 1;
     $updateplayer="update players set spoints=spoints-'$spoints' where name='$player'";
  mysql_query($updateplayer) or die("Could not update player");

   if ($newcreaturehp < 1)
   {
     echo "The " . $creature . " has been killed";

   $crmaxhp=$creatureinfo3['maxhpoints'];
       $updatecreature="update creatures set hpoints='$crmaxhp' where name='$creature' limit 1";
   mysql_query($updatecreature) or die("Could not update creature");



        if ($playerinfo3['level'] > $creatureinfo3['level'])
        {
         $firstmod = $playerinfo3['level'] - $creatureinfo3['level'];
         $secondmod = $firstmod * 10 ;
         if ($secondmod > 90){$secondmod = 90;}
         $thirdmod = ($secondmod / 100) * $creatureinfo3['exper'];
         $totalexper =$creatureinfo3['exper'] - $thirdmod;
        }
        else
        {
         $firstmod = $creatureinfo3['level'] - $playerinfo3['level'];
         $secondmod = $firstmod * 10 ;
         if ($secondmod > 90){$secondmod = 90;}
         $thirdmod = ($secondmod / 100) * $creatureinfo3['exper'];
         $totalexper =$creatureinfo3['exper'] + $thirdmod;
        }
          $totalexper = (int)$totalexper;

           echo "<br><b><big>You gain " . $totalexper . " experience.</b></big><br>";
      $updateplayer="update players set exper=exper+'$totalexper',creature=0 where name='$player'";
  mysql_query($updateplayer) or die("Could not update player");



      echo "<a href='battle.php'>Go Back";
      exit;
   }

  $updatecreature="update creatures set hpoints='$newcreaturehp' where name='$creature' limit 1";
  mysql_query($updatecreature) or die("Could not update creature");
}
 }}
} 

Re: Need some help

Posted: Sun Dec 27, 2009 9:15 pm
by Bascavia10
Thanks Halls, that worked perfectly (one } should be deleted at the end of your code, otherwise you'll get a parse error)! Again, thank you so much :D

Re: Need some help

Posted: Mon Dec 28, 2009 4:28 am
by hallsofvallhalla
i thought i might of had one too many :) glad i could help