Mysidia Adoptables Support Forum

Mysidia Adoptables Support Forum (http://www.mysidiaadoptables.com/forum/index.php)
-   Mys v1.3.x Mods (http://www.mysidiaadoptables.com/forum/forumdisplay.php?f=42)
-   -   Mys v1.3.4 Second Currency Mod (http://www.mysidiaadoptables.com/forum/showthread.php?t=5460)

Fox 06-01-2017 05:13 AM

Second Currency with unique adopt shop Mod
 
So I see a lot of people asking for a second currency add-on. Well, here's what I did and it seems to be working for me along with a unique adopt shop for it.
If you find any issues please let me know.


Go to MyPHPAdmin

You'll be editing the adopts_settings one.

Open up the SQL query and enter in this.

PHP Code:

INSERT INTO `adopts_settings`(`name`, `value`) VALUES ('premiumcurrency''Your Currency Name'

You can change premiumcurrency to whatever suits you, but please note you'll need to change any future uses of it to what you want it to be.

Next you'll edit the adopts_users.
Go to Structure then add a new column.
I simply checked the money one structure and copied it with the name 'premiumcurrency'. (I'll add a pic when I'm home later)


Now we need to go to your file manager and make some changes.

I wanted to be able to manually add currency through the ACP, so we'll start there.
Go to your adminCP files, and find user.php.

Find this:
PHP Code:

$mysidia->db->update("users", array("email" => $mysidia->input->post("email")), "uid='{$mysidia->input->get("uid")}'");
            
$mysidia->db->update("users", array("money" => $mysidia->input->post("money")), "uid='{$mysidia->input->get("uid")}'"); 

and add beneath it:
PHP Code:

$mysidia->db->update("users", array("premiumcurrency" => $mysidia->input->post("premiumcurrency")), "uid='{$mysidia->input->get("uid")}'"); 

Continues to next post (won't let me post it all at once *sigh*)

Fox 06-01-2017 05:14 AM

Now we'll go back and find the settings.php

Find:
PHP Code:

public function globals(){
        
$mysidia Registry::get("mysidia");
        if(
$mysidia->input->post("submit")){
            
$settings = array('theme''sitename''browsertitle''cost',  'slogan''admincontact'
                              
'systemuser''systememail''startmoney'); 

And replace with:
PHP Code:

public function globals(){
        
$mysidia Registry::get("mysidia");
        if(
$mysidia->input->post("submit")){
            
$settings = array('theme''sitename''browsertitle''cost',  'slogan''admincontact'
                              
'systemuser''systememail''startmoney''premiumcost'); 

I simply added my premium cost on the end.

Now go back and into the Admincp View files. Find settingsview.php
Find:
PHP Code:

$document->setTitle($this->lang->basic_title);
        
$document->addLangvar($this->lang->basic);
        
$globalsForm = new FormBuilder("globalsform""globals""post");
        
$globalsForm->buildComment("Default Theme:   "FALSE)->buildTextField("theme"$mysidia->settings->theme)
                    ->
buildComment("Site Name:   "FALSE)->buildTextField("sitename"$mysidia->settings->sitename)
                    ->
buildComment("Site Title:   "FALSE)->buildTextField("browsertitle"$mysidia->settings->browsertitle)
                    ->
buildComment("Currency Name:     "FALSE)->buildTextField("cost"$mysidia->settings->cost)
                    ->
buildComment("Start Money:    "FALSE)->buildTextField("startmoney"$mysidia->settings->startmoney)
                    ->
buildComment("Site Slogan:    "FALSE)->buildTextField("slogan"$mysidia->settings->slogan)
                    ->
buildComment("Admin Email:   "FALSE)->buildTextField("admincontact"$mysidia->settings->admincontact)
                    ->
buildComment("System User:   "FALSE)->buildTextField("systemuser"$mysidia->settings->systemuser)
                       ->
buildComment("System Email:   "FALSE)->buildTextField("systememail"$mysidia->settings->systememail

And add in where suits you (I just added beneath the systememail):
PHP Code:

->buildComment("Premium Currency Name:   "FALSE)->buildTextField("premiumcost"$mysidia->settings->premiumcost

Now let's edit the userview.php
Find:
PHP Code:

$userForm->buildCheckBox(" Delete This User. <strong>This cannot be undone!</strong>""delete""yes")
                     ->
buildComment("Assign New Password: "FALSE)->buildPasswordField("password""pass1"""TRUE)
                     ->
buildComment("Passwords may contain letters and numbers only. Leave the box blank to keep the current password.")
                     ->
buildCheckBox(" Email the user the new password (Only takes effect if setting a new password) ""emailpwchange""yes")
                     ->
buildComment("Change Email Address: "FALSE)->buildTextField("email"$user->getemail())
                     ->
buildComment("Currency: "FALSE)->buildTextField("money"$user->money)
                     ->
buildCheckBox(" Ban this user's rights to click adoptables""canlevel""no")
                     ->
buildCheckBox(" Ban this user's rights to post profile comments""canvm""no")
                     ->
buildCheckBox(" Ban this user's rights to make trade offers""cantrade""no")
                     ->
buildCheckBox(" Ban this user's rights to send friend requests""canfriend""no")
                     ->
buildCheckBox(" Ban this user's rights to breed adoptables""canbreed""no")
                     ->
buildCheckBox(" Ban this user's rights to abandon adoptables""canpound""no")
                     ->
buildCheckBox(" Ban this user's rights to visit Shops""canshop""no"); 

And replace with:
PHP Code:

$userForm->buildCheckBox(" Delete This User. <strong>This cannot be undone!</strong>""delete""yes")
                     ->
buildComment("Assign New Password: "FALSE)->buildPasswordField("password""pass1"""TRUE)
                     ->
buildComment("Passwords may contain letters and numbers only. Leave the box blank to keep the current password.")
                     ->
buildCheckBox(" Email the user the new password (Only takes effect if setting a new password) ""emailpwchange""yes")
                     ->
buildComment("Change Email Address: "FALSE)->buildTextField("email"$user->getemail())
                     ->
buildComment("Currency: "FALSE)->buildTextField("money"$user->money)
->
buildComment("Premium Currency: "FALSE)->buildTextField("premiumcurrency"$user->premiumcurrency)
                     ->
buildCheckBox(" Ban this user's rights to click adoptables""canlevel""no")
                     ->
buildCheckBox(" Ban this user's rights to post profile comments""canvm""no")
                     ->
buildCheckBox(" Ban this user's rights to make trade offers""cantrade""no")
                     ->
buildCheckBox(" Ban this user's rights to send friend requests""canfriend""no")
                     ->
buildCheckBox(" Ban this user's rights to breed adoptables""canbreed""no")
                     ->
buildCheckBox(" Ban this user's rights to abandon adoptables""canpound""no")
                     ->
buildCheckBox(" Ban this user's rights to visit Shops""canshop""no"); 

Again, I just added the premium currency in.

We're all done here, now to make changes to our classes.
Find class_sidebar.php

Find this:
PHP Code:

protected function setMoneyBar(){
        
$mysidia Registry::get("mysidia");
        
$this->moneyBar = new Paragraph;
        
$this->moneyBar->add(new Comment("You have {$mysidia->user->money} {$mysidia->settings->cost}."));
        
        
$donate = new Link("donate");
        
$donate->setText("Donate Money to Friends");
        
$this->moneyBar->add($donate);
        
$this->setDivision($this->moneyBar);        
    } 

Replace with:
PHP Code:

protected function setMoneyBar(){
        
$mysidia Registry::get("mysidia");
        
$this->moneyBar = new Paragraph;
        
$this->moneyBar->add(new Comment("You have {$mysidia->user->money} {$mysidia->settings->cost}.<br>You have {$mysidia->user->premiumcurrency} {$mysidia->settings->premiumcost}."));
        
        
$donate = new Link("donate");
        
$donate->setText("Donate Money to Friends");
        
$this->moneyBar->add($donate);
        
$this->setDivision($this->moneyBar);        
    } 

That's as far as I've gone, I don't think I've missed anything, but I'll add to this when I get home and can create a shop for it.
Hope you find this useful!

Fox 06-01-2017 06:38 AM

Creating an Adopt Shop for this Currency!

Follow the steps in Abronsyth's adoptable shop with conditions - clickity click

Now, there are a heap of steps for this one, and it took me quite some tinkering to figure this out.

We'll start with find the class_member.php file in classes.

Find this:
PHP Code:

 public function getcash(){
      return 
$this->money;
  }
  
  public function 
changecash($amount){     
      
$mysidia Registry::get("mysidia");
      if(!
is_numeric($amount)) throw new Exception('Cannot change user money by a non-numeric value!');
      
      
$this->money += $amount;    
      if(
$this->money >= 0){ 
         
$mysidia->db->update("users", array("money" => $this->money), "username = '{$this->username}'");
         return 
TRUE;              
      }
      else throw new 
InvalidActionException("It seems that {$this->username} cannot afford this transaction.");
  } 

And add after it:
PHP Code:

public function getgems(){
      return 
$this->premiumcurrency;
  }
  
  public function 
changegems($amount){     
      
$mysidia Registry::get("mysidia");
      if(!
is_numeric($amount)) throw new Exception('Cannot change user gems by a non-numeric value!');
      
      
$this->premiumcurrency += $amount;    
      if(
$this->premiumcurrency >= 0){ 
         
$mysidia->db->update("users", array("premiumcurrency" => $this->premiumcurrency), "username = '{$this->username}'");
         return 
TRUE;              
      }
      else throw new 
InvalidActionException("It seems that {$this->username} cannot afford this transaction.");
  } 

I used 'gems' as that's what my premium currency is. Change to whatever you like, just don't use cash.

Now let's jump to class_adoptable.php

Find:
PHP Code:

class Adoptable extends Model{

   protected 
$id;
    protected 
$type;
    protected 
$class;
    protected 
$description;
    protected 
$eggimage;
    protected 
$whenisavail;
    protected 
$alternates;
    protected 
$altoutlevel;
    protected 
$altchance;
    protected 
$shop;
    protected 
$cost;  
    protected 
$genderratio;
    protected 
$conditions;
    protected 
$levels

And add beneath protected cost:
PHP Code:

protected $premiumcost

Then find:
PHP Code:

public function getCost(){
        return 
$this->cost;
    } 

and add this below it:
PHP Code:

public function getPremiumCost(){
        return 
$this->premiumcost;
    } 

Continue to next post.

Fox 06-01-2017 06:39 AM

Now onto the class_stockadopt.php

Find:
PHP Code:

class StockAdopt{
  
// The StockItem class, which defines items currently in Itemshop and thus is not owned by any users
  
  
public $id 0;
  public 
$type;
  public 
$class;
  public 
$description;
  public 
$eggimage;
  public 
$whenisavail;
  public 
$alternates;     
  public 
$altoutlevel;    
  public 
$altchance;     
  public 
$cost;
  public 
$owner

And again, add this beneath public cost:
PHP Code:

public $premiumcost 

Then find:
PHP Code:

public function getcost($salestax 0){
      
// Get the total cost of this stock item
      
$cost $this->cost*(1+$salestax/100);
      return 
$cost;
  } 

And add below:
PHP Code:

public function getpremiumcost{
      
// Get the total cost of this stock item
      
$premiumcost $this->premiumcost;
      return 
$premiumcost;
  } 

Now we'll jump into the AdminCP files. In there, find the adopt.php

Find this chunk:
PHP Code:

$mysidia->db->insert("adoptables", array("id" =>  NULL"type" => $mysidia->input->post("type"), "class" =>  $mysidia->input->post("class"), "description" =>  $mysidia->input->post("description"), "eggimage" => $eggimage,  "whenisavail" => $mysidia->input->post("cba"),
                                                     
"alternates" =>  $mysidia->input->post("alternates"), "altoutlevel" =>  $mysidia->input->post("altoutlevel"), "altchance" =>  $mysidia->input->post("altchance"), "shop" =>  $mysidia->input->post("shop"), "cost" =>  $mysidia->input->post("cost"), "genderratio" =>  $mysidia->input->post("genderratio"))); 

and replace with:
PHP Code:

$mysidia->db->insert("adoptables", array("id" =>  NULL"type" => $mysidia->input->post("type"), "class" =>  $mysidia->input->post("class"), "description" =>  $mysidia->input->post("description"), "eggimage" => $eggimage,  "whenisavail" => $mysidia->input->post("cba"),
                                                     
"alternates" =>  $mysidia->input->post("alternates"), "altoutlevel" =>  $mysidia->input->post("altoutlevel"), "altchance" =>  $mysidia->input->post("altchance"), "shop" =>  $mysidia->input->post("shop"), "cost" =>  $mysidia->input->post("cost"), "premiumcost" =>  $mysidia->input->post("premiumcost"), "genderratio" =>  $mysidia->input->post("genderratio"))); 

Then we'll jump into the view folder in the AdminCP file to adoptview.php

Find this:
PHP Code:

$shopSettings->add(new Comment("Price: "FALSE));
        
$shopSettings->add(new TextField("cost"010)); 

And add beneath it:
PHP Code:

$shopSettings->add(new Comment("Premium Price: "FALSE));
        
$shopSettings->add(new TextField("premiumcost"010)); 

Next post for the final step!

Fox 06-01-2017 06:39 AM

Now, if you followed Abronsyth's adopt shop with conditions, you should have a unique 'shop'.php and 'shop'view.php.

Open the 'shop'.php (whatever you decided to name it)
Find this:
PHP Code:

$cost $mysidia->db->select("adoptables", array("cost"), "type='{$adopt->getType()}'")->fetchColumn();
            
$moneyleft $mysidia->user->money $cost;

            if(
$moneyleft >= 0){ 
                
$mysidia->user->changecash(-$cost); 

And replace with:
PHP Code:

$premiumcost $mysidia->db->select("adoptables", array("premiumcost"), "type='{$adopt->getType()}'")->fetchColumn();
            
$gemsleft $mysidia->user->premiumcurrency $premiumcost;

            if(
$premiumcurrencyleft >= 0){ 
                
$mysidia->user->changegems(-$premiumcost); 

Now for the last step, open up the 'shop'view.php

Find:
PHP Code:

$cost = new Comment("{$adopts[$i]->getCost()} Mythirian Gold");
            
$costCell = new TCell;
            
$costCell->add($cost);
            
$costCell->setAlign(new Align("right"));            

            
$row->add($idCell);
            
$row->add($imageCell);
            
$row->add($typeCell);
            
$row->add($costCell);
            
$adoptTable->add($row);
        } 

And replace with:
PHP Code:

$premiumcost = new Comment("{$adopts[$i]->getPremiumCost()} Mythirian Gems");
            
$premiumcostCell = new TCell;
            
$premiumcostCell->add($premiumcost);
            
$premiumcostCell->setAlign(new Align("right"));            

            
$row->add($idCell);
            
$row->add($imageCell);
            
$row->add($typeCell);
            
$row->add($premiumcostCell);
            
$adoptTable->add($row);
        } 


And there you have it! A second currency and adopts to buy with it. I'll try to implement an item one too eventually.

Hall of Famer 06-06-2017 09:01 AM

Oh it looks nice, glad you figured this out, many people want such a Mod so bad. A minor suggestion, make an rar/zip download that include all changed files, this will be useful for users with fresh installation.

KatFennec 06-10-2017 05:17 PM

Quote:

Originally Posted by Fox (Post 36397)

Find this:
PHP Code:

$mysidia->db->update("users", array("email" => $mysidia->input->post("email")), "uid='{$mysidia->input->get("uid")}'");
            
$mysidia->db->update("users", array("money" => $mysidia->input->post("money")), "uid='{$mysidia->input->get("uid")}'"); 


The indicated code snippet doesn't seem to exist in the vanilla adminCP/users.php

Abronsyth 06-11-2017 08:46 AM

KatFennec, it is in there (just checked to verify), for me it's around line 52.

I haven't added it yet, but very nice mod!

LUC1G07CH1 07-18-2017 01:23 PM

Tried and it actually works.
But how to add an starter quantidy?

Edit: and an item shop with this currency?


Another edit: I thought i did everything right...but well...i has wrong.
"Database error 1054 - Unknown column 'premiumcost' in 'field list'"

Silver_Brick 08-27-2017 02:27 AM

cool mod i like it


All times are GMT -5. The time now is 04:19 PM.

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