Freezing and limiting adoptables

Forum
Last Post
Threads / Messages

Seapyramid

Premium Member
Premium Member
Joined
Feb 1, 2009
Messages
373
Points
0
Mysidian Dollar
10,535
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
 
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.
 
Ashje said:
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.
 
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:
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:
$query = "SELECT * FROM ".$prefix."owned_adoptables WHERE owner='$loggedinname' and type='$type'";

With:

PHP:
$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
 
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
 
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:
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.

}
 
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>  ";

	if($isloggedin == "yes"){
	$article_content = $article_content." ";
	}
	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
 
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?
 
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>  ";

	if($isloggedin == "yes"){
	$article_content = $article_content." ";
	}
	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
 
For this:

PHP:
$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:
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?
 
Number: doesn't appear anywhere on the page.

Sea

EDIT: it is flashing a grey screen real quick and saying 4 on this account... On the account I have been using to test which has 4 level 0 pets its is flashing a grey screen with number 0
 
Ok, that's really weird that the count is wrong. I'll see if I can think of anything...

Maybe try putting your code not on the adoption page, but in functions.php inside of the canadopt() function.
 
I think I figured it out.. not sure haven't tested it but if I am right it will work out on it's own. It appears the system is not seeing some of the adoptables from the old script so it can't count them as being there.

That's the theory, I will watch it a few days and see what happens.

Sea
 
Seapyramid said:
I think I figured it out.. not sure haven't tested it but if I am right it will work out on it's own. It appears the system is not seeing some of the adoptables from the old script so it can't count them as being there.

That's the theory, I will watch it a few days and see what happens.

Sea

Interesting idea. Yeah, let me know how that turns out.
 

Similar threads

Users who are viewing this thread

  • Forum Contains New Posts
  • Forum Contains No New Posts

Forum statistics

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

Latest Threads

Top