PDA

View Full Version : New Item Function Issues


Abronsyth
11-19-2016, 12:31 PM
Here is the function:
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? ;_;

Dinocanid
11-19-2016, 01:16 PM
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:
if($addHealth > 100){
to:
elseif($addHealth > 100){

Abronsyth
11-20-2016, 08:35 AM
For some reason it seems to just keep resetting it to 0.

Here is the function currently:
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.

Dinocanid
11-20-2016, 11:13 AM
I think I fixed the problem. Try this:
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:
$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.

Abronsyth
11-20-2016, 01:10 PM
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

Dinocanid
11-20-2016, 01:43 PM
No problem!