Help with a item function

Forum
Last Post
Threads / Messages

kristhasirah

Member
Member
Joined
Jan 22, 2010
Messages
197
Points
16
Location
In middle of the nothingness
Mysidian Dollar
20,995
Item Function: change the type of an adopt

10/01/2014:
Final code for changing the adopt type to a new adopt type, and limited to only the max level
thanks once again to IntoRain for helping me with the code here is the final code:
open: functions/functions_items.php and paste this code before the ?>

IMPORTANT!!! Replace any Moonlight Fairy Dragon, for the Type of the adopt you have selected as the new Type!!! Also i use for my site a max level of 10 replace it for your max level number!!!
And edit the $notes = with the info you think fits better your site
PHP:
function items_Type($item, $adopt){
          $mysidia = Registry:: get("mysidia"); 
        
        $type = $adopt->type;
        $currentLevel = $adopt->currentlevel;
           
        //Let's check if the adoptable is a Moonlight Fairy Dragon. 
        if($type == "Moonlight Fairy Dragon") { 
            //The adoptable is already a Moonlight Fairy Dragon 
            $note = "Your adoptable is a Moonlight Fairy Dragon."; 
        } 
        //Let's check if the adoptable is below level 10. 
        else if($currentLevel < 10){
            $note = "Your adoptable is not at level 10 yet.";
        }
        //Adoptable has all the requirements, let's update it 
        else{            
            $mysidia -> db -> update("owned_adoptables", array("type" => 'Moonlight Fairy Dragon'),"aid='{$adopt->aid}' and owner ='{$item->owner}'"); 
            $note = "Your adoptable {$adopt->name} is now a Moonlight Fairy Dragon."; 
            //Update item quantity... 
            $delitem = $item->remove();  
        } 
        return $note; 
}
open the class/class_privateitem.php and add this after the last case break;
PHP:
case "itemsType":
$message = items_Type($this, $owned_adoptable);
break;
and last you will need to open your database to add the item to the adopt_items_funtions table, is easy: just insert a new row, you can use the other items as example to fill the info

you can find some edit to the code in this thread:
change the image of a specific adopt for a custom image:
(this will change the adopt image to any image you have selected, this means any adopt that use this item will have that specific image, to prevent this you must select the id of the adopt types that can use it or are compatible in the item creation page)
function/function_items.php
http://www.mysidiaadoptables.com/forum/showpost.php?p=31267&postcount=13
class/class_privateitem.php case:
http://www.mysidiaadoptables.com/forum/showpost.php?p=31269&postcount=15

you must copy and paste the code for each custom skin you will add, also remember to select which adopt will be able to use the item in the item creation page, or any adopt will have the custom skin.

Revert the image of the adopt back to his/her original image(this is to use as part of the custom image code)
function/function_items.php and class/class_privateitem.php case:
http://www.mysidiaadoptables.com/forum/showpost.php?p=31273&postcount=19

remember you must add the info in the database too, so you can select and use the item function in the item creation page

Original older post
thanks to Wallie987 and IntoRain for the gender item: http://www.mysidiaadoptables.com/forum/showthread.php?t=4209&highlight=gender+item&page=3 I manage to edit it and make a different function code and like the title says i need a little help with it. The thing is that the current code is working like a charm, and it does what is supposed to do: Change the Type of any adopt to a Specific Adopt, great for a evolution item, but what i really want or need is:
For the code to also check if the adopt is at the max level in my case level 10.

this is the code:
PHP:
function items_Type($item, $adopt){
        $mysidia = Registry:: get("mysidia");
        //Let's check if the adoptable is a Moonlight Fairy Dragon.
        $type = $mysidia -> db -> select ("owned_adoptables", array("type"), "aid='{$adopt->aid}' and owner ='{$item->owner}'") -> fetchColumn();  
        if($type == "Moonlight Fairy Dragon") {
            //The adoptable is already a Moonlight Fairy Dragon
            $note = "Your adoptable is a Moonlight Fairy Dragon.";
        }
        else{
            //The adoptable is another type. It's type can be switched to a Moonlight Fairy Dragon.
            switch($adopt->type){
                case "$type":
                    $mysidia -> db -> update("owned_adoptables", array("type" => 'Moonlight Fairy Dragon'),"aid='{$adopt->aid}' and owner ='{$item->owner}'");
                    $note = "Your adoptable {$adopt->name} is now a Moonlight Fairy Dragon.";
            //Update item quantity...
            $delitem = $item->remove();
            break;
            default:
            $note = "It appears your adoptable can't use the potion.";
}
        }
        return $note;
}

so if any one can help me and edit/add the missing piece of code for checking the level of the adopt and make it that only the adopts are at max level can use it I will be very grateful.

Please take in mind that any instruction or idea to fix it will be in vain... I can only copy/paste already created codes and make small edits... i cant make anything from scratch even if my life was depending on it =( but i can make some pixel or digital items as a thanks for helping me with the code.

For those that want to use the code for their site, the code is working just need to replace the "moonlight fairy dragon" with the adopt type you want and if you want to make it more specific and only target a certain adopt, just change the $type in
PHP:
case "$type":
with the target type, it must look something like this:
PHP:
case "Adopts type":

Once again:
Thanks Wallie987 and IntoRain for the gender item.
 
Last edited:
I'm glad we were able to help ^^ Adding the following will let you check if the adoptable is at level 10:

PHP:
//rest of your code here
 $type = $mysidia -> db -> select ("owned_adoptables", array("type"), "aid='{$adopt->aid}' and owner ='{$item->owner}'") -> fetchColumn(); 
  $currentLevel = $adopt->currentlevel;//add this

        if($type == "Moonlight Fairy Dragon") { 
            //The adoptable is already a Moonlight Fairy Dragon 
            $note = "Your adoptable is a Moonlight Fairy Dragon."; 
        }
      //add these three lines:
      else if($currentLevel < 10){
            $note = "Your adoptable is not at level 10 yet.";     
      }
     //rest of your code here

That version in that thread ended up being a bit messy due to repeated comparisons xD This is a clean version if you prefer to use it:

PHP:
function items_Type($item, $adopt){
          $mysidia = Registry:: get("mysidia"); 
        
        $type = $adopt->type;
        $currentLevel = $adopt->currentlevel;
           
        //Let's check if the adoptable is a Moonlight Fairy Dragon. 
        if($type == "Moonlight Fairy Dragon") { 
            //The adoptable is already a Moonlight Fairy Dragon 
            $note = "Your adoptable is a Moonlight Fairy Dragon."; 
        } 
        //Let's check if the adoptable is below level 10. 
        else if($currentLevel < 10){
        	$note = "Your adoptable is not at level 10 yet.";
        }
        //Adoptable has all the requirements, let's update it 
        else{            
            $mysidia -> db -> update("owned_adoptables", array("type" => 'Moonlight Fairy Dragon'),"aid='{$adopt->aid}' and owner ='{$item->owner}'"); 
            $note = "Your adoptable {$adopt->name} is now a Moonlight Fairy Dragon."; 
            //Update item quantity... 
            $delitem = $item->remove();  
        } 
        return $note; 
}
 
Ooh I love this mod idea! Do you mind if I use it and try to make it a randomized one (so it will change to a random color of the breed?)
 
ilrak: i dont see any problem with that, and i think it would be cool to have a random color changer
and IntoRain: if you decided to start making a site just tell me and i will gladly make those items for you =) or i can make something else for you ^^
 
Really love this whole thing, and will be adding it as well, thanks for the good work! :)
 
ilrak: i dont see any problem with that, and i think it would be cool to have a random color changer
and IntoRain: if you decided to start making a site just tell me and i will gladly make those items for you =) or i can make something else for you ^^

Thank you! I really appreciate that ^^
 
So, I tried doing this code as-is first to see if I could get it to work on my site before trying a random changer and I'm running into this error:

Parse error: syntax error, unexpected '}' in /home/auratusg/public_html/functions/functions_items.php on line 237

This is what the code looks like for the function:
EDIT: Nevermind. There were one too many brackets. Now I just need to try and fix the invalid function error and then I'm set!
 
Last edited:
Would there be a way to adapt this code so that you can make an item that changes an adoptable into something else? (I mean like reuse it multiple times, on different items, for different kinds of adopts) That way you could have 'skins' for your adopts or something... correct me if I am wrong and this is already what it does XD I don't totally understand XD
 
the code will change your adopt to other type: like for example, you change where it say "moonlight fairy dragon" for one of your type of adopt, lets say a cat, so you now have a item that transforms any adopt in a cat, unless you have limited the types in the item creation, then only the selected adopts can be changed in a cat

but it can be used in the way you say, probably you need to change this:
array("type" => 'Moonlight Fairy Dragon')... maybe change it for array("imageurl"=> 'the image url of the adopt') or something like that, im not sure, havent tried that way...in theory it will only change the image of your adopt and you wont need to create X amount of adopt just to change the color of 1 adopt... but theres also the alt item, wich changes your adopt in his/her alt version, unless you are not adding the alternate image for your adopts.
but i have no idea how to code it or edit it so you can only add the function once... right now you need to copy and paste as many time you want for each adopt you want to change in to another type or color and you will end whit a very large item_functions file, unless you dont mind that.

sorry if i dont make sense >_>
 
Oh, no, you do make sense. So in the item functions file, for every, say, 'skin', you would need to create a new item function? Seems a complicated way of doing things, but I have been waiting for something like this to come out for years! (Ever since I first found the script XD) I might mess about with it on my test site later. Just make a few adoptables and that item then mess around with them :p
 
decided to go and test my theory and here is the working code:

PHP:
function items_Skin($item, $adopt){
          $mysidia = Registry:: get("mysidia"); 
        
        $imageurl = $adopt->imageurl;
        $currentLevel = $adopt->currentlevel;
           
        //Let's check if the adoptable is using this custom skin. 
        if($imageurl == "http://yoursite.com/picuploads/png/nameorcodeoftheimage.png") { 
            //The adoptable is already using this custom skin
            $note = "Your adoptable is using this custom skin."; 
        } 
        //Let's check if the adoptable is below level 10. 
        else if($currentLevel < 10){
            $note = "Your adoptable is not at level 10 yet.";
        }
        //Adoptable has all the requirements, let's update it 
        else{              
            $mysidia -> db -> update("owned_adoptables", array("imageurl" => 'http://yoursite.com/picuploads/png/nameorcodeoftheimage.png'),"aid='{$adopt->aid}' and owner ='{$item->owner}'"); 
            $note = "Your adoptable {$adopt->name} is now using a new custom skin."; 
            //Update item quantity... 
            $delitem = $item->remove();  
        } 
        return $note; 

}

I changed all the $type in the code because you already can chose who will use the item at the Item creation page, also to make sure the user wont be using the item twice in the same adopt by mistake and loose the item.
the only problem i see is that if for some reason the user want the adopt to have their original skin(don't know why someone would want to do that) they cant... so i would post a warning in the description of the adopt saying that all changes are permanent XD Unless you can code something to make them return to their original form =)

you can still use the code that intoRain edited, if you want to exclude a special type of adopt, just change the part that start from "else{"
 
Ooh, so if I used that one I could create custom skins?? :D Yay! Thank you ^_^ (I can use it right? :p I'll be making a credit page anyway so I can give you a shout out!)

So, to use it, do you just copy and paste the code for every custom skin? Or is that a seperate item function that you can then use on items and when they are put on your adopts it changes them?

If so, coool :D What you could do is, as well as the warning, make people pay a certain amount of virtual money (or real, if you wanted to) to have their adopts reverted back to their original state? And only admins can do it. Just throwing ideas out there XD
 
well the code is the function for the items... in this case for 1 Item, you must open the function/function_items.php and just copy/paste the code before the "?>" and replace the imageurl with the image you want, not forget to change the: function items_Skin($item, $adopt){ by replacing the _Skin with the name of each custom, that way you wont be confused. also remember to edit the class_privateitem.php to add the new case for each code you create and replace "Skin" with the name of custom:
case "itemsSkin":
$message = items_Skin($this, $owned_adoptable);
break;

and add them to your database in the table adopts_items_function by adding a new row for each custom skin =)

well is a nice idea you have for reverting back the adopt, but if you cant be online all the time, members can start complaining... i know there should be a way to edit the code and revert the adopts back to their original image, but cant figure out how to update the imageurl table back to "NULL"... because for now it just write null as the url and give an x image for the adopt >_>
 
Last edited:
Yeah, I can see how they would start complaining XD And for the code, I might have to play around on my test site.. (it's the only way I'll be able to learn how to do it properly XD) but thanks for telling me how, as I would have had no idea o_O
 
i will try and see if i can find anything to make the code revert the image =)
also fixed the case...
i copied one of the ones i had and forgot to change 1 part: = items_Type it should be: = items_Skin and you just do the same and replace the Skin whit the name of the custom
sorry about that >_>
 
That's fine XD I am just happy that you bothered enough to attempt to write a code! (And succeed) I suck at coding XD I need to practise or take some sort of online class/school thing... hmm. There's a thought! :pleased:
 
manage to make the reverting code work ^^

here is the finished one:
functions/functions_items.php
PHP:
function items_originalS($item, $adopt){
          $mysidia = Registry:: get("mysidia"); 
        
        $imageurl = $adopt->imageurl;
        $currentLevel = $adopt->currentlevel;
        
                   //Let's check if the adoptable is using his/her original color. 
        if($imageurl == NULL) { 
            //The adoptable is already using his/her original color
            $note = "Your adoptable is using his/her original color."; 
        } 
        //Let's check if the adoptable is below level 10. 
        else if($currentLevel < 10){
            $note = "Your adoptable is not at level 10 yet.";
        }
        //Adoptable has all the requirements, let's update it 
        else{               
                    $mysidia -> db -> update("owned_adoptables", array("imageurl" => NULL),"aid='{$adopt->aid}' and owner ='{$item->owner}'");
            $note = "Your adoptable {$adopt->name} is now using his/her original color."; 
            //Update item quantity... 
            $delitem = $item->remove();  
        } 
        return $note; 

}

class/class_privateitem.php
case
PHP:
case "itemsoriginalS":
$message = items_originalS($this, $owned_adoptable);
break;

it was so simple... i just had to remove the cotes '' from NULL to make it work o_O it was the only change i made to the code, this will revert back the adopt to his/her original image or alternate image depending which one was using before the change of skin.
by the way you can change what it says in the $note= to anything you want or you think it will go with your site =)
 
Last edited:

Similar threads

Users who are viewing this thread

  • Forum Contains New Posts
  • Forum Contains No New Posts

Forum statistics

Threads
4,280
Messages
33,129
Members
1,603
Latest member
Monako
BETA

Latest Threads

Latest Posts

Top