Mysidia Adoptables Support Forum

Mysidia Adoptables Support Forum (http://www.mysidiaadoptables.com/forum/index.php)
-   Mys v1.2.x Mods (http://www.mysidiaadoptables.com/forum/forumdisplay.php?f=38)
-   -   Multiple Alternate Image Plugin (http://www.mysidiaadoptables.com/forum/showthread.php?t=2063)

Kaeliah 04-02-2011 01:46 AM

Multiple Alternate Image Plugin [by Kae]
 
2 Attachment(s)
Multiple Alternate Image
By Kaeliah


Modification TOS

I felt very bad for going on hiatus so to make up for it I decided to release this publicly instead of for premium only. Please note that this is a complex script and you should know at least a little PHP before attempting installation. That said, I tried to make it as simply as possible.

Step 1: Open the functions.php, levelup.php & doadopt.php files.
NOTE: Any page that inserts a row into the owned_adoptables table will need an extra '', added after imageurl.

Find the two functions 'getaltstatus' and 'getcurrentimage' in functions.php. They should be one after the other. Replace those two functions with the code below:

PHP Code:

function getaltstatus($parentid$childid$childlevel) {

    
// This function determines if we will use alternate images...
    
$alt "Cannot find adopt with given parent id.";

    
// First we need to see if this adoptable type has alternate images enabled...
    
$query "SELECT * FROM ".$prefix."adoptables WHERE id='".$parentid."'";
    
$result mysql_query($query);
    
$num mysql_num_rows($result);
    
$alternates=@mysql_result($result$i,"alternates");
    
    
// Let's see if the level we are on is the level that requires alternates
    
if($alternates == "enabled") {
        
// Alternates for adoptable type are enabled, next check to see if this adopt is already using an alternate.
        
$query "SELECT * FROM ".$prefix."owned_adoptables WHERE aid='".$childid."'";
        
$result mysql_query($query);
        
$num mysql_num_rows($result);
        
$usealt=@mysql_result($result$i,"usealternates");
        
$currentimage=@mysql_result($result$i,"altimage");
        if(
$usealt == "no"){
        
// Alternates are not currently being used, next check for alternate image w/ specified entry level.
        
$query "SELECT * FROM ".$prefix."alternates WHERE entry='".$childlevel."' AND adoptid='".$parentid."'";
        
$result runquery($query);
        
        while(
$row mysql_fetch_array($result)){
        
$method=$row['method'];
        
$data=$row['data'];
        
$newurl=$row['alturl'];
        
// check what kind of method we're using to choose an alternate.
        
if($method == "random"){
        
$chance rand(1$data);
        if(
$chance == 1){
            
$alt $newurl;
        }
        else{
            
$alt "The random finder did not pick 1.";
        }
        
        }
        else{
            
$alt "Not finding method random...";
        }
        
        
$i++;
        }
        
        
        }
        else if(
$usealt == "yes"){
        
// This adopt is already using an alternate, so let's get a path.
        
$query "SELECT * FROM ".$prefix."alternates WHERE alturl='".$currentimage."' AND adoptid='".$parentid."'";
        
$result mysql_query($query);
        
$path=@mysql_result($result$i,"path");
        
$subpath=@mysql_result($result$i,"subpath");
        
        if(
$subpath != 0){// check for a subpath.
        
$query "SELECT COUNT(*) FROM ".$prefix."alternates WHERE subpath='".$subpath."' AND path='".$path."' AND replacedlevel='".$childlevel."' AND adoptid='".$parentid."'";
        
$result mysql_query($query);
        
$num mysql_fetch_array($result);
        }
        else if(
$path != 0){ // no subpath, so check for a path.
        
$query "SELECT COUNT(*) FROM ".$prefix."alternates WHERE path='".$path."' AND replacedlevel='".$childlevel."' AND adoptid='".$parentid."'";
        
$result mysql_query($query);
        
$num mysql_fetch_array($result);
        }
        
        if(
$num[0] > 1){
        
// more than 1 path was found, so let's run through subpaths. 
        
$i 0;
        while(
$i $num[0]){
        
$method=@mysql_result($result$i,"method");
        
$data=@mysql_result($result$i,"data");
        
$newurl=@mysql_result($result$i,"alturl");
        
// check what kind of method we're using to choose a subpath.
        
if($method == "random"){
        
$chance rand(1$data);
        if(
$chance == 1){
            
$alt $newurl;
        }
        else{
            
$alt "none";
        }
        }
        else{
            
$alt "none";
        }
        
        
$i++;
        }
        
// In order for paths to work, we HAVE to have a subpath picked. Since a loop until one is picked would be tedius, we'll just randomly pick one.
        
if($alt == "none"){
        
$query "SELECT * FROM ".$prefix."alternates WHERE path='".$path."' AND replacedlevel='".$childlevel."' ORDER BY RAND() LIMIT 1 ";
        
$result mysql_query($query);
        
$newurl=@mysql_result($result$i,"alturl");
        
$alt $alturl;
        }
        
        } 
// end subpaths
        
else{
        
// No path was found, so now we just need to pick an alternate. 
        
        
$query "SELECT * FROM ".$prefix."alternates WHERE adoptid='".$parentid."' AND replacedlevel = '".$childlevel."'";
        
$result mysql_query($query);
        
$num mysql_fetch_array($result);
        
        
$method=@mysql_result($result$i,"method");
        
$data=@mysql_result($result$i,"data");
        
$newurl=@mysql_result($result$i,"alturl");
        
        if(
$method == "random"){
        
$chance rand(1$data);
        if(
$chance == 1){
            
$alt $newurl;
        }
        else{
            
$alt "none";
        }
        }
        else{
            
$alt "none";
        }
        
        } 
// End No Subpaths
        
        
        
// end alternates already enabled.
    
// end alternates enabled
    
else{
    
$alt "alternates are reading disabled.";
    }
    return 
$alt;
}

function 
getcurrentimage($aid) {

    
// This function determines which image we should use for a given adoptable...
    
$image "";

    
// First we select the adoptable from the database and get some basic information...
    
$query "SELECT * FROM ".$prefix."owned_adoptables WHERE aid='".$aid."'";
    
$result mysql_query($query);

    
$currentimage=@mysql_result($result0,"altimage"); 
    
$imageurl=@mysql_result($result0,"imageurl");

    if(
$currentimage == ""){
    
// if the currentimage is blank, we're not using an alternate so grab the primary image.
    
$image $imageurl;
    }
    else{
    
$image $currentimage;
    }
    if(
$image == ""){
    
// For some reason, both primary and current images are blank, so let's do one more check.
    
$currentlevel=@mysql_result($result0,"currentlevel");
    
$type=@mysql_result($result0,"type");
    
    if(
$currentlevel != 0){
    
$query "SELECT * FROM ".$prefix."levels WHERE adoptiename = '".$type."' AND thisislevel = '".$currentlevel."'";
    
$result mysql_query($query);
    
    
$primaryimage=@mysql_result($result0,"primaryimage");
    
    
mysql_query("UPDATE ".$prefix."owned_adoptables WHERE aid = '".$aid."' SET imageurl = '".$primaryimage."'");
    
$image $primaryimage;
    
    }
    else{
    
$query "SELECT * FROM ".$prefix."adoptables WHERE type = '".$type."'";
    
$result mysql_query($query);
    
$eggimage=@mysql_result($result0,"eggimage");
    
    
mysql_query("UPDATE ".$prefix."owned_adoptables WHERE aid = '".$aid."' SET imageurl = '".$eggimage."'");
    
$image $eggimage;
    
    }
    if(
$image == ""){
    
// both are definitely blank... show error.
    
$image "http://www.".$GLOBALS['domain']."".$GLOBALS['scriptpath']."/templates/icons/delete.gif";
    }
    }
    return 
$image;



Find in levelup.php at about line 140:

PHP Code:

    $parentid converttypetoparentid($type); // Get the ID of the parent type adoptable
    
$altstatus getaltstatus($parentid$id$nextlevel); // Check if we are using alternate images or not...

    
if($altstatus == "yes"){

    
// We are enabling alternate images for this adoptable...

    
$query "UPDATE ".$prefix."owned_adoptables SET usealternates='yes' WHERE aid='".$id."'";
    
runquery($query);


    } 

And replace it with this:

PHP Code:

    $parentid converttypetoparentid($type); // Get the ID of the parent type adoptable
    
$altstatus getaltstatus($parentid$id$nextlevel); // Check if we are using alternate images or not...

    
if($altstatus != "none"){

    
// We are enabling alternate images for this adoptable...

    
$query "UPDATE ".$prefix."owned_adoptables SET usealternates='yes',altimage='".$altstatus."' WHERE aid='".$id."'";
    
mysql_query($query);


    } 

Lastly, open up doadopt.php and any other files that insert rows into the owned_adoptables table.

Find something like this: '$code', '','$alts',
and replace it with this: '$code', '','','$alts',


Step 2: Hard stuff is over, believe it or not. :P Download the 2 files attached to this post. Upload both in your main folder with admin.php and all that good stuff. Run the install.php page ONCE and then DELETE IT.

You're Done! You can check out the additional admin area in site settings -> plugins -> MAI Admin

Okay so I have not been able to beta test this much so please try it out and let me know what errors you get so I can fix 'em quick. I know all the basic functions work though. Also, please read the faq below BEFORE asking questions.

FAQ

Q: I don't understand what all the fields are for?
A: Read the handy dandy instruction thingy that's linked in the MAI Admin.

Q: Is there a way to transfer current alternates?
A: Not as of yet, sorry.

Q: Is this compatible with older versions of MA?
A: Uhm. Probably not. Stick to 1.2.* or higher.

Q: Okay so what do I put for the Alternates stuff when adding an adopt?
A: Enabled alternates as usual and enter random digits to satisfy the checks. The random digits will have no effect on the new alternate system, whether or not alternates are enabled WILL.

Q: Why isn't there an easier way to enable/disable alternates for certain adopts.
A: Good question, I'll think about it for a future update.


That's all folks! Enjoy!

Hall of Famer 04-02-2011 11:42 AM

All I can say is amazing, glad you did it Kaeliah. I saw you made use of the plugin system, which looks interesting to me. Should be a very helpful way for noncoders to install mods/templates.

Kaeliah 04-02-2011 02:23 PM

Yes, I also had all edits to the database done in the install script to make life easier for everyone. :smile:

Hall of Famer 04-02-2011 02:50 PM

I see, I am sure everyone will like this from you. I took a look at your script file a bit, seems that you created a new table that stores data of every alternate image for each species, which is a very good idea.

I also remember you said in your own trade script, users can trade multiple adoptables at the same time. Wonder how you coded a system like that. I've been manipulating the functions explode() and implode() to allow an array of variables to be stored in phpmyadmin. I did it for the friend/friendlist script, which will be released together with Mys v1.2.2 next week. In future I plan to make a multiple adoptables trade system based on this technique too, learning new PHP stuff always makes me excited. XD

Kaeliah 04-02-2011 03:13 PM

Oi so many versions XD how will I ever keep up?

As for multiple adopts being traded it's all stored in a table as individual objects with a key that connects them back to their trade. So like it could be an item, pet or money.

Hall of Famer 04-02-2011 03:33 PM

lol it is not really that hard to keep up. I've released Mys v1.2.0 and v1.2.1 since you left the staff team. Mys v1.2.2 is currently under development, and Mys v1.2.3 will follow. At the beginning of May I will be working on the next major release, this will come out huge. We have two main features planned for Mys v1.3.0 already, you will soon have a preview of them from my blog.

Kaeliah 04-02-2011 03:48 PM

Dang, I miss being on the dev team. I feel so out of the loop now XD

Hall of Famer 04-02-2011 04:09 PM

Its alright Kaeliah, dont worry about it. You can contribute to the community as a premium member too, even not as a dev staff people still love and respect you.

Edit: Posted a blog about Mys v1.3.0, maybe its too early to leak info of this major release at this moment. XD

Kaeliah 04-02-2011 10:26 PM

yeah... it's still frustrating to not be able to play a bigger role though.

Hall of Famer 04-03-2011 11:04 AM

I understand Kaeliah. You left at a time when we were on the verge of Releasing Mys v1.2.0, I do not have the pound and trade system from you so I had to make them on my own. It was not a really bad experience for me though, at least I figured them out.

But lets not worry too much about this, okay? This is life, something you cant control on your own. Who would've known that you got sick all of a sudden and had to quit at a time like this? No one was blaming you, and in fact we all worried about you. Relax a bit and dont let all these bad things go over your head. ^^


All times are GMT -5. The time now is 10:04 AM.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2024, vBulletin Solutions Inc.