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)
-   -   Error When Using Item (http://www.mysidiaadoptables.com/forum/showthread.php?t=4628)

Missy Master 08-15-2014 11:09 AM

In class_ownedadoptable, you can see where the items are designated.


The only reason I can think for an item -- any item-- to work and work and then cut off, is that some barrier is being reached.


Code:

<?php



class OwnedAdoptable extends Adoptable{



    protected $aid;

        protected $name;

        protected $owner;

        protected $currentlevel;

        protected $totalclicks;

        protected $code;

        protected $imageurl;

        protected $usealternates;

        protected $tradestatus;

        protected $isfrozen; 

    protected $gender;

        protected $offsprings;

    protected $lastbred;

        protected $nextlevel;

        protected $voters;

        protected $statname;

protected $mother;

protected $father;

       
protected $toy_1;

protected $toy_2;

protected $toy_3;

protected $toy_4;

protected $toy_5;



protected $unique;


protected $adoptablepersonality;

 

    public function __construct($aid, $owner = ""){         

            $mysidia = Registry::get("mysidia");

                $whereClause = "aid ='{$aid}'";

                if(!empty($owner)) $whereClause .= " and owner = '{$owner}'";

            $row = $mysidia->db->select("owned_adoptables", array(), $whereClause)->fetchObject();

        if(!is_object($row)) throw new AdoptNotfoundException("Pet{$adoptinfo} does not exist or does not belong to the owner specified...");

               

                parent::__construct($row->type);

        foreach($row as $key => $val){

            $this->$key = $val;                     

        }         

    }



    public function getAdoptID(){

        return $this->aid;

    }



    public function getName(){

        return $this->name;

    }

       
public function getAdoptstatname(){

return $this->statname;

}



public function getAdoptPersonality(){

return $this->personality;
}




        public function setName($name, $assignMode = ""){

                if($assignMode == Model::UPDATE) $this->save("name", $name);

            $this->name = $name;

        }



    public function getOwner($fetchMode = ""){

            if($fetchMode == Model::MODEL) return new Member($this->owner);

        else return $this->owner;

    }

       

        public function setOwner($owner, $assignMode = ""){

                if($assignMode == Model::UPDATE) $this->save("owner", $owner);

            $this->owner = $owner;

        }

 

    public function getCurrentLevel($fetchMode = ""){

            if($fetchMode == Model::MODEL) return new AdoptLevel($this->type, $this->currentlevel);

        else return $this->currentlevel;

    }

       

        public function setCurrentLevel($level, $assignMode = ""){

                if($assignMode == Model::UPDATE){

                    $this->save("currentlevel", $level);

                        if($this->getAltStatus() == "yes") $this->save("usealternates", "yes");

                }

                $this->currentlevel = $level;

        }

       

        public function getTotalClicks(){

            return $this->totalclicks;

        }

       

        public function setTotalClicks($clicks, $assignMode = ""){

                if($assignMode == Model::UPDATE) $this->save("totalclicks", $clicks);

                $this->totalclicks = $clicks;

        }

       

        public function getCode(){

            return $this->code;

        }

       

        public function getImageURL($fetchMode = ""){

        if($fetchMode == Model::GUI) return new Image($this->imageurl);

            else return $this->imageurl;

        }

       

        public function useAlternates(){

            return $this->usealternates;

        }

       

        public function getTradeStatus(){

            return $this->tradestatus;

        }

       

        public function getUnique(){

            return $this->unique;

        }




        public function getMother(){

            return $this->mother;

        }



        public function getFather(){

            return $this->father;

        }




        public function getToy_1(){

            return $this->toy_1;

        }

public function getToy_2(){

            return $this->toy_2;

        }


public function getToy_3(){

            return $this->toy_3;

        }



public function getToy_4(){

            return $this->toy_4;

        }


public function getToy_5(){

            return $this->toy_5;

        }



        public function setTradeStatus($status, $assignMode = ""){

                if($assignMode == Model::UPDATE) $this->save("tradestatus", $status);

            $this->tradestatus = $status;

        }

       

        public function isFrozen(){

            return $this->isfrozen;

        }

       

        public function setFrozen($frozen = TRUE, $assignMode = ""){

                if($assignMode == Model::UPDATE) $this->save("isfrozen", $frozen);

                $this->isfrozen = $frozen;

        }

       

        public function getGender($fetchMode = ""){

            if($fetchMode == Model::GUI) return new Image("picuploads/{$this->gender}.png");

            else return $this->gender;

        }

       

        public function getOffsprings(){

            return $this->offsprings;

        }

       

        public function setOffsprings($offsprings = 1, $assignMode = ""){

                $this->offsprings = $offsprings;

            if($assignMode == Model::UPDATE) $this->save("offsprings", $this->offsprings);

        }

       

        public function getLastBred($fetchMode = ""){

            if($fetchMode == Model::OBJ) return new DateTime($this->lastbred);

            return $this->lastbred;

        }

       

        public function setLastBred($lastBred = 0, $assignMode = ""){

                if($assignMode == Model::UPDATE) $this->save("lastbred", $lastBred);

                $this->lastbred = $lastBred;   

        }

 

    public function getAltStatus(){

                if($this->alternates == "enabled" and $this->currentlevel == $this->altoutlevel){

                        $rand = mt_rand(1, $this->altchance);

                        if($rand == 1) return "yes";                       

                }

                return "no";

    }

       

        public function getImage($fetchMode = ""){

                if($this->imageurl and $this->currentlevel >= 3) return $this->getImageUrl($fetchMode);

                if($this->currentlevel == 0) return $this->getEggImage($fetchMode);

               

                $mysidia = Registry::get("mysidia");               

        $level = $this->getCurrentLevel("model");

                if($this->useAlternates() == "yes") return $level->getAlternateImage($fetchMode);

        else return $level->getPrimaryImage($fetchMode);                       

    }

 

          public function hasNextLevel(){

            try{

                        $this->nextlevel = new AdoptLevel($this->type, $this->currentlevel + 1);

                        return TRUE;

                }

                catch(LevelNotfoundException $lne){

                    return FALSE;

                }

        }

       

        public function getNextLevel(){

            if(!$this->nextlevel) return FALSE;

            return $this->nextlevel;

        }

       

        public function getLevelupClicks(){

            if(!$this->nextlevel) return FALSE;

                return $this->nextlevel->getRequiredClicks() - $this->totalclicks;

        }

       

        public function getStats(){

                $mysidia = Registry::get("mysidia");

                $document = $mysidia->frame->getDocument();       

            $stats = new Division("adoptstats");

               
               
        $stats->add(new Image("picuploads/{$this->toy_1}.png"));

        $stats->add(new Image("picuploads/{$this->toy_2}.png"));;

        $stats->add(new Image("picuploads/{$this->toy_3}.png"));;
 
        $stats->add(new Image("picuploads/{$this->toy_4}.png"));;

        $stats->add(new Image("picuploads/{$this->toy_5}.gif"));;





                $stats->add(new Comment("<br><br><b>Total Boosts: {$this->totalclicks}"));


                if($this->hasNextLevel()){

                    $level = $this->getNextLevel();

                        $levelupClicks = $this->getLevelupClicks();

                        $nextLevel = $level->getLevel().$mysidia->lang->clicks.$levelupClicks;

                }

                else $nextLevel = $mysidia->lang->maximum;


$stats->add(new Comment("Gender: ", FALSE));

        $stats->add(new Image("picuploads/{$this->gender}.png"));
               

                $adoptStats =      "<br>Trade Status: {$this->tradestatus}<br>

                                        Father: {$this->father}<br>

                                        Mother: {$this->mother}<br>

                                        Value: {$this->statname}<br>

                                        Unique: {$this->unique}<br>
                                     

                                        Current Status: {$this->currentlevel}<br>Next Status: {$nextLevel}</b>";

                $stats->add(new Comment($adoptStats));

        return $stats;               

        }

       

        public function hasVoter($user, $date = ""){

            if(!$date) $date = new DateTime;               

                $mysidia = Registry::get("mysidia");

               

                if($user instanceof Member){                   

                        $whereClause = "adoptableid='{$this->aid}' and username = '{$user->username}' and date = '{$date->format('Y-m-d')}'";

                }

                else{

                    $ip = secure($_SERVER['REMOTE_ADDR']);

                    $whereClause = "adoptableid='{$mysidia->input->get("aid")}' and ip = '{$ip}' and date = '{$date->format('Y-m-d')}'";

                }       

               

            $void = $mysidia->db->select("vote_voters", array("void"), $whereClause)->fetchColumn();

        if(is_numeric($void)) return TRUE;

        else return FALSE;               

        }

       

        protected function save($field, $value){

                $mysidia = Registry::get("mysidia");

                $mysidia->db->update("owned_adoptables", array($field => $value), "aid='{$this->aid}'");

        }

}

?>


Abronsyth 08-15-2014 11:09 AM

Here's my inventory.php;
PHP Code:

<?php

class InventoryController extends AppController{

    const 
PARAM "confirm";
    private 
$view;
    private 
$subController;

    public function 
__construct(){
        
parent::__construct("member");
    }
    
    public function 
index(){
        
$mysidia Registry::get("mysidia");
        
$document $mysidia->frame->getDocument();
        
$document->setTitle($mysidia->lang->inventory);
        
        
$inventory = new Inventory($mysidia->user);
        if(
$inventory->gettotal() == 0) throw new InvalidIDException($mysidia->lang->inventory_empty);
        
$inventory->display();
    }
            
    public function 
uses(){
        
$mysidia Registry::get("mysidia");
        
$document $mysidia->frame->getDocument();
        
$item = new PrivateItem($mysidia->input->post("itemname"), $mysidia->user->username);   
        if(
$item->iid == 0) throw new InvalidIDException("It appears that you do not have this item in your inventory.");
        
        if(
$mysidia->input->post("aid")){
            if(!
$item->checktarget($mysidia->input->post("aid")) or $mysidia->input->post("validation") != "valid"){
                
$document->setTitle($mysidia->lang->use_title);
                
$document->addLangvar($mysidia->lang->use_fail);
            }
            elseif(!
$item->randomchance()){
                
$item->remove();
                
$document->setTitle($mysidia->lang->badluck);
                
$document->addLangvar($mysidia->lang->effect);
            }
            else 
$item->apply($mysidia->input->post("aid")); 
            return;            
        }
        
        
$document->setTitle($mysidia->lang->select_title);
        
$document->addLangvar($mysidia->lang->select);
        
        
$chooseFrom = new Form("chooseform""uses""post");
        
$adoptable = new DropdownList("aid");
        
        
$ids $mysidia->db->select("owned_adoptables", array("aid"), "owner = '{$mysidia->user->username}'")->fetchAll(PDO::FETCH_COLUMN);    
        
$names $mysidia->db->select("owned_adoptables", array("name"), "owner = '{$mysidia->user->username}'")->fetchAll(PDO::FETCH_COLUMN);
        
$adoptable->add(new Option("None Selected""none"));
        
$adoptable->fill($names$ids);
        
        
$chooseFrom->add($adoptable);
        
$chooseFrom->add(new PasswordField("hidden""itemname"$mysidia->input->post("itemname")));
        
$chooseFrom->add(new PasswordField("hidden""validation""valid"));
        
$chooseFrom->add(new Button("Choose this Adopt""submit""submit"));
        
$document->add($chooseFrom);
    }
    
    public function 
sell(){
        
$mysidia Registry::get("mysidia");
        
$document $mysidia->frame->getDocument();
        
$item = new PrivateItem($mysidia->input->post("itemname"), $mysidia->user->username);   
        if(
$item->iid == 0) throw new InvalidIDException("It appears that you do not have this item in your inventory.");
        
        if(!
$mysidia->input->post("quantity")){
            
$document->setTitle($mysidia->lang->global_action_title);
            
$document->addLangvar($mysidia->lang->sell_empty);
        }
        elseif(
$item->quantity $mysidia->input->post("quantity")){
            
$document->setTitle($mysidia->lang->global_action_title);
            
$document->addLangvar($mysidia->lang->sell_quantity);
        }
        else{
            
$item->sell($mysidia->input->post("quantity"));
            
$document->setTitle("Transaction Completed");
            
$document->addLangvar("{$mysidia->lang->sell}{$mysidia->input->post("quantity")} {$mysidia->input->post("itemname")} {$mysidia->lang->sell2}");
        }    
    }
    
    public function 
toss(){
        
$mysidia Registry::get("mysidia");
        
$document $mysidia->frame->getDocument();
        
$item = new PrivateItem($mysidia->input->post("itemname"), $mysidia->user->username);  
        if(
$item->iid == 0) throw new InvalidIDException("It appears that you do not have this item in your inventory.");
        
        if(
$mysidia->input->get("confirm")){
            
$item->toss();
            
$document->setTitle($mysidia->lang->global_action_complete);
            
$document->addLangvar($mysidia->lang->toss.$mysidia->input->post("itemname").$mysidia->lang->toss2);
            return;
        }
        
        
$warning "Are you sure you wish to toss {$mysidia->input->post("itemname")}?<br> 
                    It will be permanently removed from your inventory, and this action cannot be undone!<br>"
;
        
$document->setTitle("Confirm your Action");
        
$document->add(new Comment($warning));    

        
$confirmForm = new FormBuilder("confirmform""toss/confirm""post");
        
$confirmForm->buildPasswordField("hidden""action""toss")
                    ->
buildPasswordField("hidden""itemname"$mysidia->input->post("itemname"))
                    ->
buildButton("Please Toss""confirm""confirm");
        
$document->add($confirmForm);            
    }
}
?>


Missy Master 08-15-2014 11:11 AM

It's only on SIMMLAND yes .. Canis and Felis are diff scripts.

Yes I will test it on yours, on Caterpillar ?

Hwona 08-15-2014 11:16 AM

@Annatar
Please do. :3 I've done it over 50 time on canis - that's working...
wait, are they both using mysidia?
Edit: can you post a link to simmland

Missy Master 08-15-2014 11:20 AM

Canis and Felis both use my own heavily modded version of the old script.

Only Simmland uses Mysidia right now, but it's going to be used for all my upcoming sites so getting this to work is critical.

So yeah, if you can do this on Simmland that would be great :)

And I am off to Caterpillar to try !

Hwona 08-15-2014 11:21 AM

Quote:

Originally Posted by Annatar (Post 30990)
Canis and Felis both use my own heavily modded version of the old script.

Only Simmland uses Mysidia right now, but it's going to be used for all my upcoming sites so getting this to work is critical.

So yeah, if you can do this on Simmland that would be great :)

And I am off to Caterpillar to try !

Link to simmland please?

Missy Master 08-15-2014 11:26 AM

Wallie... you have a seriously gorgeous and well laid out site, I just had to comment :)

Just really beautifully laid out!


http://sim-life.com/Simmland

Hwona 08-15-2014 11:31 AM

@Annater
Thank you! Umm, I'm testing right now...

Missy Master 08-15-2014 11:41 AM

It took me a good many tries, but boy, once it goes bad, there's no making it good again without making a new account D:

Hwona 08-15-2014 11:42 AM

Quote:

Originally Posted by Annatar (Post 30994)
It took me a good many tries, but boy, once it goes bad, there's no making it good again without making a new account D:

So how did it go? I tested over 60 times on simmland...
@Abronsyth
Apparently, there IS a difference in our code.
Here:
https://www.diffchecker.com/diff
Check this out with our codes... it looks like things are in different positions.

Missy Master 08-15-2014 11:45 AM

It never happened on Caterpillar at all .. and wow, 60 times and nothing.

I just don't get it, its baffling to me. And Abronsyth is having it happen too, so I know it isn't just my site.

I don't get it!!

Thanks for trying Wallie .. what a mystery ... hopefully HoF is having some luck.

Hwona 08-15-2014 11:52 AM

@Annatar
You said that this is only affecting the USE function???
O.o ???????

Missy Master 08-15-2014 11:53 AM

Yep!!

Isnt that weird? Toss and Sell both continue to work fine!

But Use gets the white out, once it starts!

Hwona 08-15-2014 11:58 AM

@Annatar
Wait, do you have an invetory.php file I could take a peek at?

Missy Master 08-15-2014 12:00 PM

Sure ! here you go :)


Code:

<?php

class InventoryController extends AppController{

    const PARAM = "confirm";

    public function __construct(){
        parent::__construct("member");
    }
       
        public function index(){
            $mysidia = Registry::get("mysidia");
                $inventory = new Inventory($mysidia->user);
        if($inventory->gettotal() == 0) throw new InvalidIDException("inventory_empty");
                $this->setField("inventory", $inventory);
        }
                       
        public function uses(){
                $mysidia = Registry::get("mysidia");
                $document = $mysidia->frame->getDocument();
                $item = new PrivateItem($mysidia->input->post("itemname"), $mysidia->user->username); 
        if($item->iid == 0) throw new ItemException("use_none");
               
                if($mysidia->input->post("aid")){
                    if(!$item->checktarget($mysidia->input->post("aid")) or $mysidia->input->post("validation") != "valid"){
                            throw new ItemException("use_fail");
            }
                    elseif(!$item->randomchance()){
                $item->remove();
                                throw new ItemException("use_effect");
            }
            else{
                            $message = $item->apply($mysidia->input->post("aid"));
                                $this->setField("message", $message);
                        }       
            return;                       
                }

        $stmt = $mysidia->db->select("owned_adoptables", array("aid", "name"), "owner = '{$mysidia->user->username}'");
        $map = $mysidia->db->fetchMap($stmt);
                $this->setField("petMap", $map);
        }
       
        public function sell(){
                $mysidia = Registry::get("mysidia");
                $item = new PrivateItem($mysidia->input->post("itemname"), $mysidia->user->username); 
        if($item->iid == 0) throw new ItemException("sell_none");
               
        if(!$mysidia->input->post("quantity")) throw new ItemException("sell_empty");
        elseif($item->quantity < $mysidia->input->post("quantity")) throw new ItemException("sell_quantity");
        else $item->sell($mysidia->input->post("quantity"));
        }
       
        public function toss(){
            $mysidia = Registry::get("mysidia");
                $item = new PrivateItem($mysidia->input->post("itemname"), $mysidia->user->username); 
            if($item->iid == 0) throw new ItemException("toss_none");
               
                if($mysidia->input->get("confirm")){
                        $item->toss();
                return;
                }               
        }
       
        public function alchemy(){
            $mysidia = Registry::get("mysidia");
                $settings = new AlchemySetting($mysidia->db);
                if($settings->system == "disabled") throw new ItemException("alchemy_disabled");
               
                if($mysidia->input->post("iid") and $mysidia->input->post("iid2")){
                    $alchemy = new Alchemy($mysidia->input->post("iid"), $mysidia->input->post("iid2"), $settings);
                        $alchemy->mix();
                        $this->setField("alchemy", $alchemy);
            return;
                }
               
                $stmt = $mysidia->db->select("inventory", array("iid", "itemname"), "owner = '{$mysidia->user->username}'");
                $map = $mysidia->db->fetchMap($stmt);
                $this->setField("itemMap", $map);
                $this->setField("settings", $settings);
        }
}
?>


Hwona 08-15-2014 12:07 PM

@Annatar
Of course there are some differences because of our versions, but there may just be something in there... I checked, but I couldn't catch anything that really stood out... maybe you're sharper?

Missy Master 08-15-2014 12:11 PM

I've looked and looked and looked, for days now .. the only thing i can think is its something to do with the adding clicks or leveling or something, getting to a point it just cuts off the 'Use' function for ALL items suddenly.


HoF is going to have to cure this I think, lol, I am stumped, totally now.

Hall of Famer 08-15-2014 12:31 PM

So if it affects an account it will not be able to use items anymore? I think I am starting to understand this a bit, I cant describe it yet but it will help me better if anyone of you provide me link to your control panel. If I can access your database in phpmyadmin and take a look there. There may be some corrupted data that I can fix for you and your account can be used again. But of course, I still need to find where the corrupted data is generated then, but that can be done later.

Missy Master 08-15-2014 12:39 PM

Sent you a PM !

Hall of Famer 08-15-2014 04:06 PM

I've found the solution to this glitch now, it has something to do with a single line in script file classes/resource/collection/class_linkedhashmap.php. Someone already pointed it out before, but it was back in January so its after Mys v1.3.4 was released. This error will go away in Mys v1.4.0 completely:
http://mysidiaadoptables.com/forum/p...php?issueid=37

To fix this issue, find this line:

PHP Code:

for($entry $this->header->getAfter(); $entry != $this->header$entry $entry->getAfter()){ 

Change it to:

PHP Code:

for($entry $this->header->getAfter(); $entry !== $this->header$entry $entry->getAfter()){ 

It basically changes != into !==, and everything will work like a charm. ^^

Hwona 08-15-2014 04:13 PM

@HoF
That's great! :D What about Abronsyth's problem with v.1.3.3? There's no linkedhashmap in this version. :3

Hall of Famer 08-15-2014 04:15 PM

Umm I think it could be some other issues, if she has an error log file Id like her to present it to me so I can look it up. Otherwise I will have to log into her ftp to see where the problem is. XD

Missy Master 08-15-2014 04:44 PM

Well you have certainly saved the day for me, dear friend.

Off to create more sites with this fabulous script!! :)


All times are GMT -5. The time now is 09:54 PM.

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