View Single Post
  #13  
Old 02-07-2016, 01:30 AM
NobodysHero's Avatar
NobodysHero NobodysHero is offline
Co-Owner of MystFell
 
Join Date: Nov 2013
Posts: 144
Gender: Female
Credits: 18,735
NobodysHero is on a distinguished road
Default

Here's what I posted before, Kyttias. I believe this has the information you're asking about.

Quote:
Originally Posted by NobodysHero View Post
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 != 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 != 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;      
  }
}
?>
Reply With Quote