Here's what I posted before, Kyttias. I believe this has the information you're asking about.
Quote:
Originally Posted by NobodysHero
My mistake for staying up way past my normal bed time. Heh. When I use the gender swap item, it gives me a blank page and the gender doesn't change. Now, I'm certain I did something wrong, but I have no idea what it is.
item_functions.php:
PHP Code:
<?php
// File ID: functions_items.php
// Purpose: Provides specific functions defined for items
function items_valuable($item, $adopt){
$note = "The item {$item->itemname} is a valuable item, which cannot be used on any adoptable but may sell a good deal of money.";
return $note;
}
function items_level1($item, $adopt){
$mysidia = Registry::get("mysidia");
$newlevel = $adopt->currentlevel + $item->value;
$lev = $mysidia->db->select("levels", array(), "adoptiename='{$adopt->type}' and thisislevel ='{$newlevel}'")->fetchObject();
//Check if the adoptable's level is already at maximum.
if(!is_object($lev)){
// object not created, the level is already at maximum.
$note = "Unfortunately, your selected adoptable's level cannot be raised by using item {$item->itemname}.";
}
else{
//Update item quantity...
$delitem = $item->remove();
//Execute the script to update adoptable's level and clicks.
$mysidia->db->update("owned_adoptables", array("currentlevel" => $newlevel, "totalclicks" => $lev->requiredclicks), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "Congratulations, the item {$item->itemname} raised your adoptable's level by {$item->value}";
}
return $note;
}
function items_level2($item, $adopt){
$mysidia = Registry::get("mysidia");
$newlevel = $item->value;
$lev = $mysidia->db->select("levels", array(), "adoptiename='{$adopt->type}' and thisislevel ='{$newlevel}'")->fetchObject();
//Check if the adoptable's level is already at maximum.
if(!is_object($lev)){
// object not created, the level is already at maximum.
$note = "Unfortunately, your selected adoptable's level cannot be raised by using item {$item->itemname}.";
}
else{
//Update item quantity...
$delitem = $item->remove();
//Execute the script to update adoptable's level and clicks.
$mysidia->db->update("owned_adoptables", array("currentlevel" => $newlevel, "totalclicks" => $lev->requiredclicks), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "Congratulations, the item {$item->itemname} increases your adoptable's level to {$item->value}";
}
return $note;
}
function items_level3($item, $adopt){
$mysidia = Registry::get("mysidia");
//Update item quantity...
$delitem = $item->remove();
//Execute the script to update adoptable's level and clicks.
$mysidia->db->update("owned_adoptables", array("currentlevel" => 0, "totalclicks" => 0), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "Congratulations, the item {$item->itemname} has reset the level and clicks of your adoptable.";
return $note;
}
function items_level4($item, $adopt){
$mysidia = Registry::get("mysidia");
$newlevel = $adopt->currentlevel + $item->value;
$lev = $mysidia->db->select("levels", array(), "adoptiename='{$adopt->type}' and thisislevel ='{$newlevel}'")->fetchObject();
//Check if the adoptable's level is already at maximum.
if(!is_object($lev)){
// object not created, the level is already at maximum.
$note = "Unfortunately, your selected adoptable's level cannot be raised by using item {$item->itemname}.";
}
else{
//Execute the script to update adoptable's level and clicks.
$mysidia->db->update("owned_adoptables", array("currentlevel" => $newlevel, "totalclicks" => $lev->requiredclicks), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "Congratulations, the item {$item->itemname} raised your adoptable's level by {$item->value}";
}
return $note;
}
function items_click1($item, $adopt){
$mysidia = Registry::get("mysidia");
$newclicks = $adopt->totalclicks + $item->value;
$mysidia->db->update("owned_adoptables", array("totalclicks" => $newclicks), "aid='{$adopt->aid}'and owner='{$item->owner}'");
$note = "By using {$item->itemname}, the adoptable's total number of clicks has raised by {$item->value}<br>";
//Now lets check if the adoptable has reached a new level.
$ownedAdopt = new OwnedAdoptable($adopt->aid);
if($ownedAdopt->hasNextLevel()){
//new level exists, time to check if the total clicks have reached required minimum clicks for next level.
$nextLevel = $ownedAdopt->getNextLevel();
$requiredClicks = $nextLevel->getRequiredClicks();
if($newclicks >= $requiredClicks and $requiredClicks != 0 and $requiredClicks != ""){
// We need to level this adoptable up...
$mysidia->db->update("owned_adoptables", array("currentlevel" => $nextLevel->getLevel()), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note .= "And moreover, it has gained a new level!";
}
}
//Update item quantity...
$delitem = $item->remove();
return $note;
}
function items_click2($item, $adopt){
$mysidia = Registry::get("mysidia");
$newclicks = $item->value;
$mysidia->db->update("owned_adoptables", array("totalclicks" => $newclicks), "aid='{$adopt->aid}'and owner='{$item->owner}'");
$note = "By using {$item->itemname}, the adoptable's total number of clicks has raised by {$item->value}<br>";
//Now lets check if the adoptable has reached a new level.
$ownedAdopt = new OwnedAdoptable($adopt->aid);
if($ownedAdopt->hasNextLevel()){
//new level exists, time to check if the total clicks have reached required minimum clicks for next level.
$nextLevel = $ownedAdopt->getNextLevel();
$requiredClicks = $nextLevel->getRequiredClicks();
if($newclicks >= $requiredClicks and $requiredClicks != 0 and $requiredClicks != ""){
// We need to level this adoptable up...
$mysidia->db->update("owned_adoptables", array("currentlevel" => $nextlevel), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note .= "And moreover, it has gained a new level!";
}
}
//Update item quantity...
$delitem = $item->remove();
return $note;
}
function items_click3($item, $adopt){
$mysidia = Registry::get("mysidia");
$date = date('Y-m-d');
$mysidia->db->delete("vote_voters", "adoptableid = '{$adopt->aid}' and date='{$date}'");
//Update item quantity...
$delitem = $item->remove();
$note = "By using item {$item->name}, you have make your adoptables eligible for clicking by everyone again!";
return $note;
}
function items_breed1($item, $adopt){
$mysidia = Registry::get("mysidia");
// Update the lastbred info.
$mysidia->db->update("owned_adoptables", array("lastbred" => 0), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "The item has been successfully used on your adoptable, it can breed again!<br>";
//Update item quantity...
$delitem = $item->remove(1, $item->owner);
return $note;
}
function items_breed2($item, $adopt){
$mysidia = Registry::get("mysidia");
// Note this function exists but is not useful until Mys v1.3.2, when adoptables can carry/attach items.
$mysidia->db->update("owned_adoptables", array("lastbred" => 0), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "The item has been successfully used on your adoptable, it can breed again!<br>";
//Update item quantity...
$delitem = $item->remove();
return $note;
}
function items_alts1($item, $adopt){
$mysidia = Registry::get("mysidia");
// First lets check if alternative image exists for an adoptable at this level.
$lev = $mysidia->db->select("levels", array(), "adoptiename='{$adopt->type}' and thisislevel ='{$adopt->currentlevel}'")->fetchObject();
if($lev->alternateimage == ""){
// The alternate image does not exist, cannot convert adoptable into its alternate form
$note = "It appears that your adoptable does not have an alternate image at its given level...<br>";
}
else{
// The alternate image exists, conversion between primary and alternate image is possible.
switch($adopt->usealternates){
case "yes":
$mysidia->db->update("owned_adoptables", array("usealternates" => 'no'), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "Your adoptable has assume the species primary form.";
break;
default:
$mysidia->db->update("owned_adoptables", array("usealternates" => 'yes'), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "Your adoptable {$adopt->name} has assume the species alternate form.";
}
//Update item quantity...
$delitem = $item->remove();
}
return $note;
}
function items_alts2($item, $adopt){
$note = "This feature will be available soon after we redesign the adoptable class, enjoy!";
return $note;
}
function items_name1($item, $adopt){
$note = "umm just realized that people can change adoptables names freely, will have to think about it later.";
return $note;
}
function items_name2($item, $adopt){
$note = "For now the items can only be used on adoptables, so user-based item usage will be implemented later.";
return $note;
}
function items_gender($item, $adopt){
$mysidia = Registry::get("mysidia");
$delitem = $item->remove();
$gender = $adopt->getGender();
switch($gender){
case "m":
$newgender = "f";
$newgender_full = "female";
break;
default:
$newgender = "m";
$newgender_full = "male";
}
$mysidia->db->update("owned_adoptables", array("gender" => $newgender), "aid ='{$adopt->aid}' and owner='{$item->owner}'");
$note = "Success! The <b>{$item->itemname}</b> has worked its magic. {$adopt->name} is now a {$newgender_full}.";
return $note;
}
?>
class_privateitem.php:
PHP Code:
<?php
use Resource\Native\String;
class PrivateItem extends Item{
// The PrivateItem class, which defines functionalities for items that belong to specific users
public $iid;
public $owner;
public $quantity;
public $status;
public function __construct($iteminfo, $itemowner = ""){
// the item is an owned item in user inventory, so retrieve database info to assign properties
$mysidia = Registry::get("mysidia");
$fetchmode = (is_numeric($iteminfo))?"iid":"itemname";
$whereclause = ($fetchmode == "iid")?"{$fetchmode} = '{$iteminfo}'":"{$fetchmode} ='{$iteminfo}' and owner = '{$itemowner}'";
$row = $mysidia->db->select("inventory", array(), $whereclause)->fetchObject();
if(is_object($row)){
// loop through the anonymous object created to assign properties
foreach($row as $key => $val){
$this->$key = $val;
}
parent::__construct($this->itemname);
}
else $this->iid = 0;
}
public function getitem(){
// This method checks if the item exists in inventory or not, not to be confused with parent class' getitem() class.
$mysidia = Registry::get("mysidia");
$stmt = $mysidia->db->select("inventory", array(), "itemname ='{$this->itemname}' and owner ='{$this->owner}'");
return $stmt->fetchObject();
}
public function getvalue($quantity = 0, $discount = 0.5){
// This method returns the cost of items.
$value = $this->price*$quantity*$discount;
return $value;
}
public function apply($adopt = "", $user = ""){
// This method uses
$mysidia = Registry::get("mysidia");
require_once("functions/functions_items.php");
if(is_numeric($adopt)) $owned_adoptable = $mysidia->db->select("owned_adoptables", array(), "aid ='{$adopt}'")->fetchObject();
if(!empty($user)) $theuser = $mysidia->db->select("users", array(), "username ='{$user}'")->fetchObject();
// Now we decide which function to call...
switch($this->function){
case "Valuable":
$message = items_valuable($this, $owned_adoptable);
break;
case "Level1":
$message = items_level1($this, $owned_adoptable);
break;
case "Level2":
$message = items_level2($this, $owned_adoptable);
break;
case "Level3":
$message = items_level3($this, $owned_adoptable);
break;
case "Level4":
$message = items_level4($this, $owned_adoptable);
break;
case "Click1":
$message = items_click1($this, $owned_adoptable);
break;
case "Click2":
$message = items_click2($this, $owned_adoptable);
break;
case "Breed1":
$message = items_breed1($this, $owned_adoptable);
break;
case "Breed2":
$message = items_breed2($this, $owned_adoptable);
break;
case "Alts1":
$message = items_alts1($this, $owned_adoptable);
break;
case "Alts2":
$message = items_alts2($this, $owned_adoptable);
break;
case "Name1":
$message = items_name1($this, $theuser);
break;
case "Name2":
$message = items_name2($this, $theuser);
break;
case "Gender":
$message = items_gender($this, $owned_adoptable);
break;
default:
throw new ItemException("The item function is invalid");
}
return new String($message);
}
public function add($quantity = 1, $owner){
}
public function sell($quantity = 1, $owner = ""){
// This method sells items from user inventory
$mysidia = Registry::get("mysidia");
$this->owner = (!empty($owner))?$owner:$this->owner;
$earn = $this->getvalue($quantity);
$newamount = $mysidia->user->money + $earn;
if($this->remove($quantity)){
$mysidia->db->update("users", array("money" => $newamount), "username = '{$this->owner}'");
return TRUE;
}
else return FALSE;
}
public function toss($owner = ""){
$this->remove($this->quantity);
return TRUE;
}
public function remove($quantity = 1, $owner = ""){
// This method removes items from user inventory
$mysidia = Registry::get("mysidia");
$this->owner = (!empty($owner))?$owner:$this->owner;
$newquantity = $this->quantity - $quantity;
if(empty($this->quantity) or $newquantity < 0) return FALSE;
else{
switch($newquantity){
case 0:
$mysidia->db->delete("inventory", "itemname='{$this->itemname}' and owner='{$this->owner}'");
break;
default:
$mysidia->db->update("inventory", array("quantity" => $newquantity), "itemname ='{$this->itemname}' and owner='{$this->owner}'");
}
return TRUE;
}
}
public function checktarget($aid){
// This method checks if the item is usable
$adopt = new OwnedAdoptable($aid);
$id = $adopt->getID();
$item_usable = FALSE;
switch($this->target){
case "all":
$item_usable = TRUE;
break;
case "user":
$item_usable = TRUE;
break;
default:
$target = explode(",",$this->target);
if(in_array($id, $target)) $item_usable = TRUE;
}
return $item_usable;
}
public function randomchance(){
// This method returns the item image in standard html form
$mysidia = Registry::get("mysidia");
switch($this->chance){
case 100:
$item_usable = TRUE;
break;
default:
$temp = mt_rand(0,99);
$item_usable = ($temp < $this->chance)?TRUE:FALSE;
}
return $item_usable;
}
}
?>
|
|