New Item Function Issues

Forum
Last Post
Threads / Messages

Abronsyth

A Headache Embodied
Member
Joined
Aug 25, 2011
Messages
1,012
Points
36
Location
NY
Mysidian Dollar
73,285
Here is the function:
PHP:
function items_health($item, $adopt){
  $mysidia = Registry::get("mysidia");
  $addHealth = $adopt->health + $item->value;
      //Check if the adoptable's health is already at maximum.    
  if($adopt->health = 100){
    $note = "Your pet is already fully healed! The {$item->itemname} was not used.";
  }
  //Not a maximum, but don't go overboard!
  if($addHealth > 100){
	$mysidia->db->update("owned_adoptables", array("health" => 100), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
	$note = "The {$item->itemname} fully healed your gryphon!";
    $delitem = $item->remove();
  }
  //Not at maximum, won't go overboard. Proceed.
 else{
	$mysidia->db->update("owned_adoptables", array("health" => $addhealth), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
	$note = "The {$item->itemname} raised your pet's health by {$item->value}! Their health is now at {$addHealth}.";
    $delitem = $item->remove();
  }
  return $note;
}

What it should do:
A) If pet's health is already 100, it does nothing (and does not use the item).
B) If the pet's health is not 100, but the item value would put health OVER 100 then it instead only adds the amount needed to make 100.
C) If the pet's health is not 100, and the item value would not go over 100, then it just normally adds the item value to increase the health.

What it's doing:
My pet's health is at 100. I test it. It tells me that it worked, added 2, and my pet's health is now 100. Then it actually turns my pet's health to 0.

Now that my pet's health is at 0, I try again, it tells me that it added 2 and the health is now 2. Pet health still at 0.

Please help? ;_;
 
Last edited:
Just tested this and I can't seem to replicate it. Do you have anything that lowers the health of your pet elsewhere?
I did notice that the item was used even if the pet's health was at 100 though, so that can be prevented by changing:
PHP:
if($addHealth > 100){
to:
PHP:
elseif($addHealth > 100){
 
For some reason it seems to just keep resetting it to 0.

Here is the function currently:
PHP:
function items_health($item, $adopt){
  $mysidia = Registry::get("mysidia");
  $addHealth = $adopt->health + $item->value;
      //Check if the adoptable's health is already at maximum.    
  if($adopt->health = 100){
    $note = "Your gryphon is already fully healed! The {$item->itemname} was not used.";
  }
  //Not a maximum, but don't go overboard!
  elseif($addHealth > 100){
	$mysidia->db->update("owned_adoptables", array("health" => 100), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
	$note = "The {$item->itemname} fully healed your gryphon!";
    $delitem = $item->remove();
  }
  //Not at maximum, won't go overboard. Proceed.
  else{
	$mysidia->db->update("owned_adoptables", array("health" => $addhealth), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
	$note = "The {$item->itemname} raised your gryphon's health by {$item->value}! Their health is now at {$addHealth}.";
    $delitem = $item->remove();
  }
  return $note;
}

The health is at 0, and when I use the potion it now tells me that my pet is already fully healed, and it doesn't use the item up, but the health is still 0.
 
Last edited:
I think I fixed the problem. Try this:
PHP:
 function items_health($item, $adopt){
  $mysidia = Registry::get("mysidia");
  $health = $mysidia->db->select("owned_adoptables", array("health"), "aid ='{$adopt->aid}'")->fetchObject();
  $addHealth = $adopt->health + $item->value;
      //Check if the adoptable's health is already at maximum.    
  if($adopt->health >= 100){
    $note = "Your gryphon is already fully healed! The {$item->itemname} was not used.";
  }
  //Not at maximum, but don't go overboard!
  elseif($addHealth > 100){
    $mysidia->db->update("owned_adoptables", array("health" => 100), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
    $note = "The {$item->itemname} fully healed your gryphon!";
    $delitem = $item->remove();
  }
  //Not at maximum, won't go overboard. Proceed.
  else{
    $mysidia->db->update("owned_adoptables", array("health" => $addHealth), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
    $note = "The {$item->itemname} raised your gryphon's health by {$item->value}! Their health is now at {$addHealth}.";
    $delitem = $item->remove();
  }
  return $note;
}

This part:
PHP:
$health = $mysidia->db->select("owned_adoptables", array("health"), "aid ='{$adopt->aid}'")->fetchObject();
Probably isn't needed, it's just there from my debugging.
Looking back on this code, I can't really see what's different about it, but it apparently works on my end now? Let me know if it doesn't.
 
Last edited:
OK, seems to be working now. I need to test a few more things still, and then I'll know for sure.

EDIT: Yes, all three instances are working flawlessly!

Thank you! I really appreciate the help <3
 
Last edited:

Similar threads

Users who are viewing this thread

  • Forum Contains New Posts
  • Forum Contains No New Posts

Forum statistics

Threads
4,277
Messages
33,122
Members
1,602
Latest member
BerrieMilk
BETA

Latest Threads

Latest Posts

Top