Mysidia Adoptables Support Forum

Mysidia Adoptables Support Forum (http://www.mysidiaadoptables.com/forum/index.php)
-   Questions and Supports (http://www.mysidiaadoptables.com/forum/forumdisplay.php?f=18)
-   -   Freezing and limiting adoptables (http://www.mysidiaadoptables.com/forum/showthread.php?t=681)

Seapyramid 04-17-2009 08:03 PM

Freezing and limiting adoptables
 
Heya,

I am using the mod that allows only a set amount of "young" pets to be adopted at a time. Now with the freezing, if a user freezes a pet then I want to set it up so that pet no longer counts as one of their "young" so that members might have pets in many different stages and not be penalized for having them if they are frozen. What area of the tables would I need to look at to exclude frozen pets from the count as I do with "older" pets?

Sea

Ashje 04-17-2009 10:03 PM

RE: Freezing and limiting adoptables
 
I don't have the script, but it should work if you go to where it excludes the older ones, copy the script and replace "old" or whatever with freeze.

Seapyramid 04-18-2009 09:56 AM

RE: Freezing and limiting adoptables
 
Quote:

Originally Posted by Ashje
I don't have the script, but it should work if you go to where it excludes the older ones, copy the script and replace "old" or whatever with freeze.

Not that simple.. it now needs to look at the level, the amount and whether frozen or not.

BMR777 04-18-2009 11:48 AM

RE: Freezing and limiting adoptables
 
Look in functions.php, at the canadopt function.

If you wanted to make it where users can only adopt a certain number of this type of pet, however frozen ones of this type do not count, in functions.php you would find:

PHP Code:

if($morethannumberen == "enabled"){

    
$num 0;

    
$query "SELECT * FROM ".$prefix."owned_adoptables WHERE owner='$loggedinname' and type='$type'";
    
$result mysql_query($query);
    
$num mysql_numrows($result);

    if(
$num $morethannumber){

    
$canadopt "no";


    }


    } 
// End morethannumberen check 

Replace:

PHP Code:

$query "SELECT * FROM ".$prefix."owned_adoptables WHERE owner='$loggedinname' and type='$type'"

With:

PHP Code:

$query "SELECT * FROM ".$prefix."owned_adoptables WHERE owner='$loggedinname' and type='$type' and isfrozen='no'"

That will only count adoptables of that type that are NOT frozen. :)

Brandon

Seapyramid 04-18-2009 02:49 PM

RE: Freezing and limiting adoptables
 
Not Quite what I am needing...

This is a revision of the code I was using which was on the adopt page with the last version...

Code:

//Defines what level is used for mature count and number of babies user may adopt
$query = "SELECT * FROM adopts_owned_adoptables WHERE currentlevel < '5' and owner='$loggedinname' and isfrozen='no'";
$result = mysql_query($query);
$num = mysql_numrows($result);

if($num >= 5){

$article_title = "Your companions have you busy!";
//$article_date = date('Y-m-d');
$article_content = "<b>You have too many young companions!  Please <a href='myadopts.php'>help your young companions reach age 5 or higher</a> before
adopting new companions.</b>";

}

You can see I have made some revisions but it is not working. I currently have it on the adopt.php page above the output for adoptables content as I had on the last version.

Sea

BMR777 04-18-2009 02:53 PM

RE: Freezing and limiting adoptables
 
It's not working how? Do you get an error at all or it just seems to be ignored?

I think the problem is that after your IF you don't have an else to proceed with the adoption. So, even if your condition is true then it is not obeyed as something else later overrides it.

It should be...

PHP Code:

if($num >= 5){

$article_title "Your companions have you busy!";
//$article_date = date('Y-m-d');
$article_content "<b>You have too many young companions!  
Please <a href='myadopts.php'>help your young companions reach age 5 or higher</a> 
before adopting new companions.</b>"
;

}
else{

// The code to actually adopt a pet goes here...
// Wrap my existing code inside the else statement.




Seapyramid 04-18-2009 05:37 PM

RE: Freezing and limiting adoptables
 
Still ignoring.. no errors.. just ignoring... larger section of code offered...

Code:

//Defines what level is used for mature count and number of babies user may adopt
$query = "SELECT * FROM adopts_owned_adoptables WHERE currentlevel < '5' and owner='$loggedinname' and isfrozen='no'";
$result = mysql_query($query);
$num = mysql_numrows($result);

if($num >= 5){

$article_title = "Your companions have you busy!";
//$article_date = date('Y-m-d');
$article_content = "<b>You have too many young companions!  Please <a href='myadopts.php'>help your young companions reach age 5 or higher</a> before
adopting new companions.</b>";

}
else{
// Begin the output of all the adoptables to the user...

$query = "SELECT * FROM ".$prefix."adoptables ORDER By RAND() LIMIT 6";
$result = mysql_query($query);
$num = mysql_numrows($result);
}
//Loop out code
$i=0;
while ($i < $num) {

$aid=@mysql_result($result,$i,"id"); //The adoptable's ID
//$type=@mysql_result($result,$i,"type");
//$description=@mysql_result($result,$i,"description");
$eggimage=@mysql_result($result,$i,"eggimage");

// Call a function to check if we have the proper privledge level to adopt this pet
// This function checks all of the little conditions and makes sure they are present
// If they are not present, the adoptable is not shown here, as that would be cruel.
// We call the function with the showing flag to not deny the showing if the user is a guest.


if($promocode == ""){
$promocode = "none";
}

$canadopt = canadopt($aid, "showing", $promocode); // Feed an adoptable ID and showing, to show the adopt to guests...

if($canadopt == "yes"){

//If we can adopt the adoptable, show the image and adoption link...

$article_content = $article_content."
<a href='adopt.php?id=".$aid."'><img src='".$eggimage."' border='0'></a>&nbsp;&nbsp;";

        if($isloggedin == "yes"){
        $article_content = $article_content."&nbsp;";
        }
        else{
        $article_content = $article_content."<p><img src='templates/icons/no.gif' border=0> <b>".$guesterror."</b></p>";
        }


}

$i++;
} // End the looping out of all adoptables...

Sea

BMR777 04-18-2009 06:56 PM

RE: Freezing and limiting adoptables
 
Did you by chance use a different table prefix other than adopts_ when you installed? Your code is using adopts_ rather than the $prefix variable, so that may be the case.

Also, try echoing out $num using an echo statement. It should appear at the top of the page. Is the number correct or something else?

Seapyramid 04-18-2009 08:14 PM

RE: Freezing and limiting adoptables
 
adopts_ is correct prefix & I am showing the adoptable (6 total random) but it is just ignoring the 5 limit for total amount of adoptables under level 5. An account with 6 pets level 4 and under is still being offered and can adopt.

total code
Code:

<?php

// **********************************************************************
// Rusnak PHP Adoptables Script
// Copyright 2009 Brandon Rusnak
// For help and support: http://www.rusnakweb.com/forum/
//
// Redistribution prohibited without written permission
// **********************************************************************

// Wake the sleeping giant

// **********************************************************************
// Basic Configuration Info
// **********************************************************************

include("inc/functions.php");
include("inc/config.php");
include("lang/lang.php");

$themeurl = grabanysetting("themeurl");

// **********************************************************************
// Define our top links by calling getlinks()
// **********************************************************************

$links = getlinks();

// **********************************************************************
// Define our ads by calling getads()
// **********************************************************************

$ads = getads("any");

// **********************************************************************
// Grab any settings that we will need for the current page from the DB
// **********************************************************************

$browsertitle = grabanysetting("browsertitle");
$sitename = grabanysetting("sitename");
$slogan = grabanysetting("slogan");

// **********************************************************************
// Check and see if the user is logged in to the site
// **********************************************************************

$loginstatus = logincheck();
$isloggedin = $loginstatus[loginstatus];
$loggedinname = $loginstatus[username];

// **********************************************************************
// End Prepwork - Output the page to the user
// This page sets up the new adoptions and then forwards the user to
// a secondary page for adoptables processing.....
// **********************************************************************

$id = $_GET["id"];
$id = preg_replace("/[^a-zA-Z0-9s]/", "", $id);
$id = secure($id);

$promocode = $_GET["promocode"];
$promocode = preg_replace("/[^a-zA-Z0-9\\040.]/", "", $promocode);
$promocode = secure($promocode);

// Here we check if we have an ID that has been submitted or no

if($id == "" or !is_numeric($id)){

// We did not enter in an id, or it is not a number
// Show the available adoptables to the user...

$article_title = $showingtitle;
$article_content = $showing;

// If we are a guest, show a message that lets them know that they cannot adopt...

if($isloggedin != "yes"){

$article_content = $article_content."".$showingguest;

}
//Defines what level is used for mature count and number of babies user may adopt
$query = "SELECT * FROM adopts_owned_adoptables WHERE currentlevel < '5' and owner='$loggedinname' and isfrozen='no'";
$result = mysql_query($query);
$num = mysql_numrows($result);

if($num >= 5){

$article_title = "Your companions have you busy!";
//$article_date = date('Y-m-d');
$article_content = "<b>You have too many young companions!  Please <a href='myadopts.php'>help your young companions reach age 5 or higher</a> before
adopting new companions.</b>";

}
else{
// Begin the output of all the adoptables to the user...

$query = "SELECT * FROM ".$prefix."adoptables ORDER By RAND() LIMIT 6";
$result = mysql_query($query);
$num = mysql_numrows($result);
}
//Loop out code
$i=0;
while ($i < $num) {

$aid=@mysql_result($result,$i,"id"); //The adoptable's ID
//$type=@mysql_result($result,$i,"type");
//$description=@mysql_result($result,$i,"description");
$eggimage=@mysql_result($result,$i,"eggimage");

// Call a function to check if we have the proper privledge level to adopt this pet
// This function checks all of the little conditions and makes sure they are present
// If they are not present, the adoptable is not shown here, as that would be cruel.
// We call the function with the showing flag to not deny the showing if the user is a guest.


if($promocode == ""){
$promocode = "none";
}

$canadopt = canadopt($aid, "showing", $promocode); // Feed an adoptable ID and showing, to show the adopt to guests...

if($canadopt == "yes"){

//If we can adopt the adoptable, show the image and adoption link...

$article_content = $article_content."
<a href='adopt.php?id=".$aid."'><img src='".$eggimage."' border='0'></a>&nbsp;&nbsp;";

        if($isloggedin == "yes"){
        $article_content = $article_content."&nbsp;";
        }
        else{
        $article_content = $article_content."<p><img src='templates/icons/no.gif' border=0> <b>".$guesterror."</b></p>";
        }


}

$i++;
} // End the looping out of all adoptables...

} // This bracket ends the IF check for whether or not an ID was entered
else{

// We have specified an ID of an adoptable we wish to adopt
// Let the user name the adoptable, then forward them
// to an additional page that actually adds the adoptie
// to their account.

// Now we have to connect to the database and get information about the adoptable

$query = "SELECT * FROM ".$prefix."adoptables WHERE id='$id'";
$result = mysql_query($query);
$num = mysql_numrows($result);

//Loop out code
$i=0;
while ($i < 1) {

$aid=@mysql_result($result,$i,"id"); //The adoptable's ID
$type=@mysql_result($result,$i,"type");
$description=@mysql_result($result,$i,"description");
$eggimage=@mysql_result($result,$i,"eggimage");

$i++;
}

if($aid == $id){

//The adoptable exists and is valid

// Make sure again that we can adopt this adoptie...

$canadopt = canadopt($aid, "adopting", $promocode);

if($canadopt == "yes"){

$article_title = "Adopting ".$type;
$article_content = $langa1."".$type.$langa2;



$article_content = $article_content."<br><img src='".$eggimage."' border='0'><br>
<form name='form1' method='get' action='doadopt.php'>
  <p>Adoptable Name:
    <input name='name' type='text' id='name'>
    <input name='id' type='hidden' id='id' value='".$id."'>
    <input name='promocode' type='hidden' id='promocode' value='".$promocode."'>
  </p>
  <p>
    <input type='submit' name='Submit' value='Adopt Me'>
</p>
</form>";


}
else{

$article_title = $accden;
$article_content = $adoptnoper;

} // End Can Adopt ELSE

}
else{

//The adoptable does not exist, nothing we can do...

$article_title = $err_idnoexist;
$article_content = $err_idnoexist_text;

} // End adoptable does not exist ELSE



} // This bracket ends the else statements for whether or not an ID was entered


// **********************************************************************
// Begin Template Definition
// **********************************************************************

//Define our current theme
$file = $themeurl;

// Do the template changes and echo the ready template
$template = file_get_contents($file);

$template = replace(':ARTICLETITLE:',$article_title,$template);
$template = replace(':ARTICLECONTENT:',$article_content,$template);
$template = replace(':ARTICLEDATE:',$article_date,$template);

$template = replace(':BROWSERTITLE:',$browsertitle,$template);
$template = replace(':SITENAME:',$sitename,$template);

//Define our links
$template = replace(':LINKSBAR:',$links,$template);

//Get the content for the side bar...

$sidebar = getsidebar();
$template = replace(':SIDEFEED:',$sidebar,$template);

//Get the ad content...
$template = replace(':ADS:',$ads,$template);

//Get the slogan info
$template = replace(':SLOGAN:',$slogan,$template);


echo $template;

// **********************************************************************
// End Template Definition
// **********************************************************************



?>

Also maybe we should move this to the donators forum since it is getting a lot more indepth then I had planned :)

Sea

BMR777 04-18-2009 08:21 PM

RE: Freezing and limiting adoptables
 
For this:

PHP Code:

$query "SELECT * FROM adopts_owned_adoptables WHERE currentlevel < '5' and owner='$loggedinname' and isfrozen='no'";
$result mysql_query($query);
$num mysql_numrows($result); 

Add after:

PHP Code:

echo "Number: ".$num."<br>"

At the top of the screen you should see Number: and then the number of adoptables that match that query. Is the number greater than 5 or does a number even appear?


All times are GMT -5. The time now is 08:25 AM.

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