Mysidia Adoptables Support Forum  

Home Community Mys-Script Creative Off-Topic
Go Back   Mysidia Adoptables Support Forum > Mysidia Adoptables > Questions and Supports

Notices

Reply
 
Thread Tools Display Modes
  #1  
Old 01-29-2016, 12:09 AM
tahbikat's Avatar
tahbikat tahbikat is offline
Member
 
Join Date: Feb 2014
Location: Louisiana
Posts: 408
Gender: Female
Credits: 65,397
tahbikat is on a distinguished road
Default Species immune to pound?

For the "species immune to pound" field in pound settings, this means that adoptable can't be pounded right? I have one that is set to be immune, but one of my users managed to pound it anyway soo I'm a little confused, halp?
Reply With Quote
  #2  
Old 01-29-2016, 02:03 AM
Hall of Famer's Avatar
Hall of Famer Hall of Famer is offline
Administrator, Lead Coder
 
Join Date: Dec 2008
Location: South Brunswick
Posts: 4,448
Gender: Male
Credits: 589,102
Hall of Famer is on a distinguished road
Default

umm are you sure of this? When I was testing the script, pound immunity works just fine, and no user can pound species that are set to be unable to pound. Maybe the user pounded the pet before you set it to be un-poundable? Or maybe you didnt enter this field correctly? Can you give more information?
__________________


Mysidia Adoptables, a free and ever-improving script for aspiring adoptables/pets site.
Reply With Quote
  #3  
Old 01-30-2016, 12:58 AM
tahbikat's Avatar
tahbikat tahbikat is offline
Member
 
Join Date: Feb 2014
Location: Louisiana
Posts: 408
Gender: Female
Credits: 65,397
tahbikat is on a distinguished road
Default

Yep I'm fairly sure.

The species is called 'Kitsura'. In the row 'specieslimit', active is 'yes', value is 'Kitsura' (without quotes). They've been immune for quite some time, and the user who abandoned it did so the day I posted this thread. The user who adopted it reported it to me. Every user is only supposed to have one of this species, so I set them to untradeable and unpoundable.

I also tested it on my adopt of this species and it let me pound it. I tried adding another species to the pound immunity but same result. Here's my class_pound.php (if you need more info let me know!):
PHP Code:
<?php

use Resource\Native\Object;

class 
Pound extends Object{
    public 
$poid 0;
    public 
$aid 0;
    private 
$firstowner;
    private 
$lastowner;
    private 
$currentowner;
    private 
$recurrence;
    private 
$datepound;
    private 
$dateadopt;
    public 
$settings;
    public 
$action;
    private 
$valid;
  
    public function 
__construct($aid ""$action ""$settings ""){
        
// Fetch the database info into object property
        
$mysidia Registry::get("mysidia");      
        
$this->settings $settings;      
        switch(
$action){
            case 
"pound":
                
$this->aid $aid;
                
$this->currentowner $mysidia->user->username;
                
$this->action $action;
                
$stmt $mysidia->db->select("pounds", array("firstowner""recurrence""dateadopt"), "aid ='{$aid}' and currentowner = '{$this->currentowner}'");
                if(
$row $stmt->fetchObject()){
                    
$this->firstowner $row->firstowner;
                    
$this->recurrence $row->recurrence;
                    
$this->dateadopt $row->dateadopt;
                }
                break;
            case 
"adopt":
                
$stmt $mysidia->db->select("pounds", array(), "aid ='{$aid}' and currentowner = 'SYSTEM'");
                
$this->action $action;
                if(
$row $stmt->fetchObject()){
                    
// loop through the anonymous object created to assign properties
                    
foreach($row as $key => $val){
                        
// Assign properties to our promocode instance
                        
$this->$key $val;            
                    }               
                }
                else throw new 
InvalidIDException($mysidia->lang->nonpound);         
                break;
            default:
                throw new 
InvalidIDException($mysidia->lang->global_action);    
        }
    }
    
    public function 
validate($aid ""){
        
// This method checks if the promocode entered by user is valid      
        
$mysidia Registry::get("mysidia");
      
        if(
$this->action == "pound"){
              
$adoptvalid $this->checkadopt();
            
$uservalid $this->checkowner();
            
$numvalid $this->checknumber();
            
$freqvalid $this->checkrecurrence();
            
$moneyvalid $this->checkmoney();
            if(
$adoptvalid == TRUE and $uservalid == TRUE and $numvalid == TRUE and $freqvalid == TRUE and $moneyvalid == TRUE$this->valid TRUE;
            else return 
FALSE;         
        }
        elseif(
$this->action == "adopt"){
            
$uservalid $this->checkuser();
            
$numvalid $this->checknumber();
            
$timevalid $this->checkduration();
            
$moneyvalid $this->checkmoney();
            if(
$uservalid == TRUE and $numvalid == TRUE and $timevalid == TRUE and $moneyvalid == TRUE$this->valid TRUE;
            else return 
FALSE;         
        }
        else 
$this->valid FALSE;
        return 
$this->valid;      
    }
  
    private function 
checkadopt($aid ""$user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$this->user;
        if(
$this->settings->specieslimit->active == "yes"){
            
$adopt = new OwnedAdoptable($this->aid);
            
$id $adopt->getID();
            
$species explode(","$this->settings->specieslimit->value);
            if(
in_array($id$species)){
                throw new 
NoPermissionException($mysidia->lang->species);
            }
        }
        return 
TRUE;
    }
  
    private function 
checkowner($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        switch(
$this->action){
            case 
"pound"
                
$adopt $mysidia->db->select("owned_adoptables", array("name""owner"), "aid ='{$this->aid}'")->fetchObject();
                if(
$adopt->owner != $user){
                    
// User is not the owner of the pet, now this is bad...
                    
banuser($mysidia->user->username);
                    throw new 
NoPermissionException($mysidia->lang->owner);
                }
                else return 
TRUE;
                break;
            case 
"adopt":
                if(
$user == $this->lastowner) return TRUE;
                else return 
FALSE;
                break;
        }
    }
  
    private function 
checkuser($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        if(
$this->checkowner($user) == TRUE and $this->settings->owner->active == "yes"){ 
            
// The user is pet's previous owner, but our admin has disabled ex-owner to readopt so...      
            
throw new NoPermissionException($mysidia->lang->readopt2_disabled);
        }         
        elseif(!empty(
$this->dateadopt)){
            if(empty(
$this->dateadopt)) die("Something is terribly wrong.");
            
// The pet has been adopted from pound center, we need to check if this is a hacking attempt or just two competing users doing the same thing at same time...
            
$message $mysidia->lang->session;
            
$allowedtime strtotime($this->dateadopt) + 86400;
            
$currenttime time();
            if(
$currenttime $allowedtime){
                
// One day has elapsed. A session cannot last this long, so we are sure it is hacking attempt
                
banuser($mysidia->user->username);
                
$message .= $mysidia->lang->user;
            }
            throw new 
NoPermissionException($message);
          }     
        return 
TRUE;
    }
  
    private function 
checknumber($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        
$num explode(","$this->settings->number->value);
        
$index = ($this->action == "pound")?0:1;
        
$currentdate date('Y-m-d');
        
        
$field1 = ($this->action == "pound")?"lastowner":"currentowner";
        
$field2 = ($this->action == "pound")?"datepound":"dateadopt";
        
$where_clause = ($this->settings->date->active == "yes")?"{$field1}='{$user}' and {$field2} = '{$currentdate}'":"{$field1}='{$user}'";
        
$where_clause .= ($this->action == "pound")?" and currentowner = 'SYSTEM'":"";
        
$total $mysidia->db->select("pounds", array("poid"), $where_clause)->rowCount();           
        
        if(
$this->settings->number->active == "yes" and $total >= $num[$index]){
            
// The admin has turned on quantity control, we need to take care of it...
            
$message "It appears that you have {$this->action}ed too many pets today...<br>";
            if(
$this->settings->date->active == "yes"$message .= $mysidia->lang->time1;
            else 
$message .= $mysidia->lang->time2;
            throw new 
NoPermissionException($message);
        }
        else return 
TRUE;
    }
  
    private function 
checkduration($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        if(
$this->settings->duration->active == "yes"){
            
// The admin has enabled duration control, we need to take care of it...
            
$datepound strtotime($this->datepound);
            
$currenttime time();
            if(!empty(
$this->settings->duration->advanced)){
                
// Advanced time-setting is enabled, oops!
                
$timeconvert timeconverter($this->settings->duration->advanced);
                
$duration $this->settings->duration->value $timeconvert;
                
$allowedtime $datepound $duration;
            }
            else 
$allowedtime $datepound 86400 $this->settings->duration->value;
             if(
$currenttime $allowedtime){
                
// The adoptable has not yet passed its 'frozen' period, so nope it cannot be adopted
                
$unit = (!empty($this->settings->duration->advanced))?$this->settings->duration->advanced:"days";
                throw new 
NoPermissionException("The adoptable has just been pounded recently, please come back {$this->settings->duration->value} {$unit} after {$this->datepound} to see if it is available then.");
            }
            else return 
TRUE;         
        }
        else return 
TRUE;
    }
    
    private function 
checkrecurrence($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        if(
$this->settings->recurrence->active == "yes" and $this->recurrence >= $this->settings->recurrence->value){
            
// The adoptable cannot be pounded anymore in normal procedure, a magical item may help though.
            
throw new NoPermissionException("It appears that the adoptables have been pounded {$this->recurrence} times and refuse to suffer another mighty blow...<br>");
        }
        else return 
TRUE;
    }
  
    private function 
checkmoney($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        
$money $mysidia->user->getcash();
        
$adopt $mysidia->db->join("adoptables""adoptables.type = owned_adoptables.type")
                             ->
select("owned_adoptables", array(), constant("PREFIX")."owned_adoptables.aid='{$this->aid}' ")->fetchObject();            
        
$cost $this->getCost($adopt$this->action);
        if(
$this->settings->cost->active "yes" and $money $cost){
            throw new 
NoPermissionException("It appears that you do not have enough money to {$this->action} this pet, please come back later. ");
        }
        else return 
TRUE;
    }
  
    private function 
getCost($adopt$action ""){
        
$action = ($action == "pound")?0:1;
        if(
$this->settings->cost->active == "yes"){
            
$costs explode(","$this->settings->cost->value);              
            switch(
$this->settings->cost->advanced){
                case 
"percent"
                    
$adopt->cost $adopt->cost * (+ (0.01 $costs[$action]));
                    break;
                default:
                    
$adopt->cost $adopt->cost $this->settings->$costs[$action];
            }      
        }
        if(
$this->settings->levelbonus->active == "yes"){
         switch(
$this->settings->levelbonus->advanced){
            case 
"increment"
               
$adopt->cost $adopt->cost + ($this->settings->levelbonus->value $adopt->currentlevel);
               break;
            default:
               
$adopt->cost $adopt->cost $adopt->currentlevel;
         }     
      }
      return 
$adopt->cost;
    }
  
    public function 
dopound($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        
$mysidia->db->update("owned_adoptables", array("owner" => "SYSTEM"), "aid ='{$this->aid}'"); 
        
// First check if someone else has taken a step ahead...
        
$date = new DateTime;
        
$stmt $mysidia->db->select("pounds", array("poid""recurrence""dateadopt"), "aid ='{$this->aid}'");
        
$row $stmt->fetchObject();
        if(!
is_object($row)){
            
// The pet has never been pounded before, insert a new row into the table prefix.pounds.
            
$mysidia->db->insert("pounds", array("poid" => NULL"aid" => $this->aid"firstowner" => $user"lastowner" => $user
                                                 
"currentowner" => "SYSTEM""recurrence" => 1"datepound" => $date->format('Y-m-d'), "dateadopt" => NULL)); 
        }     
        else{
            
// We are all good, it is time for orphaned adoptable to find his/her new home!
            
$recurrence $row->recurrence 1
            
$mysidia->db->update("pounds", array("lastowner" => $user"currentowner" => "SYSTEM""recurrence" => $recurrence"datepound" => $date->format('Y-m-d'), "dateadopt" => NULL), "aid ='{$this->aid}'");  
        }
    }
  
    public function 
doadopt($user ""){
        
$mysidia Registry::get("mysidia");
        
$user = (empty($user))?$mysidia->user->username:$user;
        
// First check if someone else has taken a step ahead...
        
$adopt $mysidia->db->select("pounds", array("poid""dateadopt"), "aid ='{$this->aid}'")->fetchObject();
        if(!empty(
$adopt->dateadopt)) throw new InvalidActionException($mysidia->lang->unlucky);
        else{
            
// We are all good, it is time for orphaned adoptable to find his/her new home!
            
$date = new DateTime;
            
$mysidia->db->update("pounds", array("currentowner" => $user"dateadopt" => $date->format('Y-m-d')), "aid ='{$this->aid}'");
            
$mysidia->db->update("owned_adoptables", array("owner" => $user), "aid ='{$this->aid}'");               
        }  
    }
}
?>
Reply With Quote
  #4  
Old 01-30-2016, 09:41 AM
Hall of Famer's Avatar
Hall of Famer Hall of Famer is offline
Administrator, Lead Coder
 
Join Date: Dec 2008
Location: South Brunswick
Posts: 4,448
Gender: Male
Credits: 589,102
Hall of Famer is on a distinguished road
Default

I see, then of course you are doing it wrong, you need to enter the adoptable's ID number, not the type name.
__________________


Mysidia Adoptables, a free and ever-improving script for aspiring adoptables/pets site.
Reply With Quote
  #5  
Old 01-31-2016, 09:51 AM
tahbikat's Avatar
tahbikat tahbikat is offline
Member
 
Join Date: Feb 2014
Location: Louisiana
Posts: 408
Gender: Female
Credits: 65,397
tahbikat is on a distinguished road
Default

Oh jeez of course!

Haha thank you HoF! <3
Reply With Quote
Reply


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


All times are GMT -5. The time now is 03:22 PM.

Currently Active Users: 4807 (0 members and 4807 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 - 2025, vBulletin Solutions Inc.
vBCommerce I v2.0.0 Gold ©2010, PixelFX Studios
vBCredits I v2.0.0 Gold ©2010, PixelFX Studios
Emoticons by darkmoon3636