Mysidia Adoptables Support Forum  

Home Community Mys-Script Creative Off-Topic
Go Back   Mysidia Adoptables Support Forum > Mysidia Adoptables > Addons and Modifications > Mys v1.3.x Mods

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 12-10-2014, 12:37 AM
Kyttias's Avatar
Kyttias Kyttias is offline
Premium Member
 
Join Date: Jan 2014
Posts: 857
Gender: Unknown/Other
Credits: 114,421
Kyttias is on a distinguished road
Arrow Item Function: Gender Change Potion

Item Function: Gender Change Potion for Mysidia 1.3.4
*may work for earlier versions, definitely adaptable, but the db update query bit may need some changing - if it looks like other queries in your version, then this works out fine for you!
**and I didn't immediately see this thread, so while this is technically a duplicate, Wallie's was in the Questions and Supports board, and it's good to have this as a mod clearly visible in the mods board


1 - First we will add our function to the database. Open up your database. In the items_functions table, make note of how many rows there are (check out the ifid column for help), hit the word Copy on the row holding the Level1 function. Fill in the first blank with the next number. If you had 13 item functions, this will be 14. The description seen here is mostly for your sake on the admin side of things.



2 - Next we'll add the function into functions/functions_items.php.
This code updated Feb 9, 2015. If you added it prior to this, please update it!
PHP Code:
function items_gender($item$adopt){
  
$mysidia Registry::get("mysidia");
  
$delitem $item->remove();
  
$gender $adopt->gender;
      switch(
$gender){
                case 
"m":                   
                  
$newgender "f";
                  
$newgender_full "girl";
                    break;
                default: 
                  
$newgender "m";
                  
$newgender_full "boy";
            } 
  
$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;


**Use this version if you're using the Alternate Gender Images mod:
PHP Code:
function items_gender($item$adopt){
  
$mysidia Registry::get("mysidia");
  
$delitem $item->remove();
  
$gender $mysidia -> db -> select ("owned_adoptables", array("gender"), "aid='{$adopt->aid}' and owner ='{$item->owner}'") -> fetchColumn();
        switch(
$gender){
                case 
"m"
                  
$alts "no";
                  
$newgender "f";
                  
$newgender_full "girl";
                    break;
                default: 
                  
$alts "yes";
                  
$newgender "m";
                  
$newgender_full "boy";
            } 
  
$mysidia->db->update("owned_adoptables", array("gender" => $newgender"usealternates" => $alts), "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;

3 - With both these steps complete, you can now Create an Item from the Items section in your AdminCP, as the new function will show on the list of item functions. Don't have an image prepared for your item? You may temporarily make use this image for testing purposes:


4 - Before you can use an item, you will need to make one last change inside classes/class_privateitem.php. Inside public function apply is a switch statement containing the list of item functions. Add your new item to this list.
PHP Code:
case "Gender":
            
$message items_gender($this$owned_adoptable);
            break; 
__________________
Please do not contact me directly outside of Mysidia.
I also cannot troubleshoot code more than two years old - I legit don't remember it.

Last edited by Kyttias; 02-09-2016 at 11:45 PM.
Reply With Quote
  #2  
Old 12-11-2014, 08:31 AM
parayna's Avatar
parayna parayna is offline
Member
 
Join Date: May 2013
Location: Devon, UK
Posts: 342
Gender: Female
Credits: 23,583
parayna is on a distinguished road
Default

I really like this idea :3 Thank you for sharing this!
Reply With Quote
  #3  
Old 11-21-2015, 04:30 PM
Abronsyth's Avatar
Abronsyth Abronsyth is offline
A Headache Embodied
 
Join Date: Aug 2011
Location: NY
Posts: 1,011
Gender: Male
Credits: 136,717
Abronsyth is on a distinguished road
Default

I'm sure I've done something wrong, but I'm getting this error when I try to use the item:
Fatal error: Call to undefined method stdClass::getGender() in /home/catisserie/public_html/functions/functions_items.php on line 180

Here's my functions_items.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_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;
}
?>
__________________
My Mods Site (1.3.4, 2020 Mods)
Reply With Quote
  #4  
Old 11-21-2015, 10:59 PM
Nieth's Avatar
Nieth Nieth is offline
Aspiring
 
Join Date: Dec 2012
Location: North Carolina
Posts: 154
Gender: Male
Credits: 12,818
Nieth is on a distinguished road
Send a message via MSN to Nieth
Default

It sounds like you didn't implement step 4 correctly.
Reply With Quote
  #5  
Old 11-22-2015, 03:54 PM
Abronsyth's Avatar
Abronsyth Abronsyth is offline
A Headache Embodied
 
Join Date: Aug 2011
Location: NY
Posts: 1,011
Gender: Male
Credits: 136,717
Abronsyth is on a distinguished road
Default

I'm fairly sure I did? My class_privateitem.php file;
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 
"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;      
    }
}
?>
__________________
My Mods Site (1.3.4, 2020 Mods)
Reply With Quote
  #6  
Old 11-22-2015, 06:51 PM
Nieth's Avatar
Nieth Nieth is offline
Aspiring
 
Join Date: Dec 2012
Location: North Carolina
Posts: 154
Gender: Male
Credits: 12,818
Nieth is on a distinguished road
Send a message via MSN to Nieth
Default

Have you had issues adopting adoptables? Its saying that the getGender function isn't being defined, but it should be in class_adoptable.php
Reply With Quote
  #7  
Old 11-22-2015, 09:12 PM
Abronsyth's Avatar
Abronsyth Abronsyth is offline
A Headache Embodied
 
Join Date: Aug 2011
Location: NY
Posts: 1,011
Gender: Male
Credits: 136,717
Abronsyth is on a distinguished road
Default

Nope, I haven't had any issues. I've checked class_adoptable.php and gender is indeed defined in there.
__________________
My Mods Site (1.3.4, 2020 Mods)
Reply With Quote
  #8  
Old 12-09-2015, 12:48 PM
Distortion's Avatar
Distortion Distortion is offline
Member
 
Join Date: Dec 2015
Location: Somewhere beyond the sea
Posts: 31
Gender: Female
Credits: 4,686
Distortion is on a distinguished road
Default

This is late, but if you're still having trouble, you have to use the second code for the functions_items.php for it to work :)
Reply With Quote
  #9  
Old 02-03-2016, 02:11 AM
NobodysHero's Avatar
NobodysHero NobodysHero is offline
Co-Owner of MystFell
 
Join Date: Nov 2013
Posts: 144
Gender: Female
Credits: 22,276
NobodysHero is on a distinguished road
Unhappy Something Went Wrong. Help, please.

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
  #10  
Old 02-04-2016, 03:24 PM
Abronsyth's Avatar
Abronsyth Abronsyth is offline
A Headache Embodied
 
Join Date: Aug 2011
Location: NY
Posts: 1,011
Gender: Male
Credits: 136,717
Abronsyth is on a distinguished road
Default

Did you remember to add the new function into your database?
__________________
My Mods Site (1.3.4, 2020 Mods)
Reply With Quote
Reply

Tags
change, gender, genders, item functions, items


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off

Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
Help with a item function kristhasirah Questions and Supports 35 04-03-2017 11:17 AM
Calling a function in a function from the same class page Hwona Questions and Supports 2 04-25-2015 09:41 AM
Item Function Is Invalid Hwona Questions and Supports 31 09-27-2014 10:27 PM
Change Cash Function? Hwona Questions and Supports 2 07-14-2014 03:00 PM
Item Function Suggestions NobodysHero Suggestions and Feature Requests 5 06-23-2014 04:45 AM


All times are GMT -5. The time now is 11:22 AM.

Currently Active Users: 603 (0 members and 603 guests)
Threads: 4,081, Posts: 32,032, Members: 2,016
Welcome to our newest members, jolob.
BETA





What's New?

What's Hot?

What's Popular?


Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.
vBCommerce I v2.0.0 Gold ©2010, PixelFX Studios
vBCredits I v2.0.0 Gold ©2010, PixelFX Studios
Emoticons by darkmoon3636