Mysidia Adoptables Support Forum  

Home Community Mys-Script Creative Off-Topic
Go Back   Mysidia Adoptables Support Forum > Mysidia Adoptables > Addons and Modifications > Mys v1.3.x Mods

Notices

Reply
 
Thread Tools Display Modes
  #71  
Old 04-16-2016, 01:52 AM
tahbikat's Avatar
tahbikat tahbikat is offline
Member
 
Join Date: Feb 2014
Location: Louisiana
Posts: 408
Gender: Female
Credits: 48,920
tahbikat is on a distinguished road
Default

Okay... so I discovered if I combine two of the same item it only uses 1 instead of taking away two. So for example:

I have 2 Apples in my inventory.
If I combine 1 apple with 1 apple to get an orange, only 1 apple is used and I still get the orange.

Is there a way to change this so it consumes the proper quantity (2)?
Reply With Quote
  #72  
Old 11-27-2016, 10:27 PM
Corsair's Avatar
Corsair Corsair is offline
Member
 
Join Date: Jan 2012
Posts: 128
Gender: Female
Credits: 11,232
Corsair is on a distinguished road
Default

I'm trying to figure out how to make it that you can mix three items instead of the default two. I tried but I messed up and had to restore the old files.
Reply With Quote
  #73  
Old 11-28-2016, 10:38 AM
Abronsyth's Avatar
Abronsyth Abronsyth is offline
A Headache Embodied
 
Join Date: Aug 2011
Location: NY
Posts: 1,011
Gender: Male
Credits: 111,707
Abronsyth is on a distinguished road
Default

I believe it already has a setting that you can sort of use three, with one being a "recipe" item or something like that? I haven't played around with it enough to know for sure, though.
__________________
My Mods Site (1.3.4, 2020 Mods)
Reply With Quote
  #74  
Old 11-28-2016, 10:56 AM
Corsair's Avatar
Corsair Corsair is offline
Member
 
Join Date: Jan 2012
Posts: 128
Gender: Female
Credits: 11,232
Corsair is on a distinguished road
Default

I was hoping to have 3 plus a "recipe" item.
Reply With Quote
  #75  
Old 11-28-2016, 06:54 PM
Dinocanid's Avatar
Dinocanid Dinocanid is offline
Member
 
Join Date: Aug 2016
Location: Maryland, USA
Posts: 516
Gender: Unknown/Other
Credits: 63,675
Dinocanid is on a distinguished road
Default

I was able to do it, or at least it works fine on my end. (If it doesn't work, I forgot something) This is what I did:

First go to phpMyAdmin and add another column in adopts_alchemy called item3 with the exact same settings as item and item2.

PHP Code:
<?php

class ACPAlchemyController extends AppController{

    const 
PARAM "alid";
    
    public function 
__construct(){
        
parent::__construct();
        
$mysidia Registry::get("mysidia");
        if(
$mysidia->usergroup->getpermission("canmanagesettings") != "yes"){
            throw new 
NoPermissionException("You do not have permission to manage alchemy.");
        }    
    }
    
    public function 
index(){
        
parent::index();
        
$mysidia Registry::get("mysidia");            
        
$stmt $mysidia->db->select("alchemy");
        
$num $stmt->rowCount();
        if(
$num == 0) throw new InvalidIDException("default_none");
        
$this->setField("stmt", new DatabaseStatement($stmt));    
    }
    
    public function 
add(){
        
$mysidia Registry::get("mysidia");
        if(
$mysidia->input->post("submit")){
            
$this->dataValidate();    
            
$mysidia->db->insert("alchemy", array("alid" => NULL"item" => $mysidia->input->post("item"), "item2" => $mysidia->input->post("item2"),
                                                    
"newitem" => $mysidia->input->post("newitem"), "chance" => $mysidia->input->post("chance"), "recipe" => $mysidia->input->post("recipe"), "item3" => $mysidia->input->post("item3")));    
        }
        
$this->loadItemMap();                
    }
    
    public function 
edit(){
        
$mysidia Registry::get("mysidia");        
        if(!
$mysidia->input->get("alid")){
            
// An item has yet been selected, return to the index page.
            
$this->index();
            return;
        }
        elseif(
$mysidia->input->post("submit")){
            
$this->dataValidate();
            
$mysidia->db->update("alchemy", array("item" => $mysidia->input->post("item"), "item2" => $mysidia->input->post("item2"),"item3" => $mysidia->input->post("item3"), "newitem" => $mysidia->input->post("newitem"),
                                                  
"chance" => $mysidia->input->post("chance"), "recipe" => $mysidia->input->post("recipe")), "alid='{$mysidia->input->get("alid")}'");            
            return;
        }
        else{
            
$alchemy $mysidia->db->select("alchemy", array(), "alid='{$mysidia->input->get("alid")}'")->fetchObject();        
            if(!
is_object($alchemy)) throw new InvalidIDException("nonexist");
            
$this->setField("alchemy", new DataObject($alchemy));
            
$this->loadItemMap();        
        }
    }
    
    public function 
delete(){
        
$mysidia Registry::get("mysidia");
        if(!
$mysidia->input->get("alid")){
            
// An item has yet been selected, return to the index page.
            
$this->index();
            return;
        }
        
$mysidia->db->delete("alchemy""alid='{$mysidia->input->get("alid")}'");
    }
    
    public function 
settings(){
        
$mysidia Registry::get("mysidia");
        
$alchemySettings = new AlchemySetting($mysidia->db);                
        if(
$mysidia->input->post("submit")){
            
$settings = array('system''chance''recipe''cost''license''usergroup');
            foreach(
$settings as $name){            
                if(
$mysidia->input->post($name) != ($alchemySettings->$name)) $mysidia->db->update("alchemy_settings", array("value" => $mysidia->input->post($name)), "name='{$name}'");     
            }
            return;
        }
        
$this->setField("alchemySettings"$alchemySettings);
    }    
    
    private function 
dataValidate(){
        
$mysidia Registry::get("mysidia");
        if(!
$mysidia->input->post("item") or !is_numeric($mysidia->input->post("item"))) throw new BlankFieldException("item");    
        if(!
$mysidia->input->post("item2") or !is_numeric($mysidia->input->post("item2"))) throw new BlankFieldException("item2");
        if(!
$mysidia->input->post("item3") or !is_numeric($mysidia->input->post("item3"))) throw new BlankFieldException("item3");
        
        if(
$mysidia->input->action() == "add"){
            
$whereClause "(item = {$mysidia->input->post("item")} and item2 = {$mysidia->input->post("item2")} and item3 = {$mysidia->input->post("item3")}) OR (item = {$mysidia->input->post("item2")} and item2 = {$mysidia->input->post("item")} and item = {$mysidia->input->post("item3")})";        
            
$alchemy $mysidia->db->select("alchemy", array(), $whereClause)->fetchObject();
            if(
is_object($alchemy)) throw new DuplicateIDException("duplicate");
        }
        
        if(!
$mysidia->input->post("newitem")) throw new BlankFieldException("newitem");        
        if(
$mysidia->input->post("chance") < or $mysidia->input->post("chance") > 100) throw new InvalidActionException("chance");
        
header("Refresh:3; URL='../../index'");
        return 
TRUE;
    }
    
    private function 
loadItemMap(){
        
$mysidia Registry::get("mysidia");    
        
$stmt $mysidia->db->select("items", array("id""itemname"));
        
$map $mysidia->db->fetchMap($stmt);
        
$this->setField("itemMap"$map);    
        
$stmt2 $mysidia->db->select("items", array("id""itemname"), "function = 'Recipe'");    
        
$map2 $mysidia->db->fetchMap($stmt2);
        
$this->setField("recipeMap"$map2);        
    }
}    
?>
(alchemy.php)

PHP Code:
<?php

use Resource\Native\String;
use 
Resource\Collection\LinkedHashMap;

class 
ACPAlchemyView extends View{

    public function 
index(){
        
parent::index();
        
$mysidia Registry::get("mysidia");
        
$stmt $this->getField("stmt")->get();
        
$document $this->document;
        
        
$fields = new LinkedHashMap;
        
$fields->put(new String("alid"), NULL);
        
$fields->put(new String("item"), new String("getItemImage"));
        
$fields->put(new String("item2"), new String("getItemImage"));
        
$fields->put(new String("item3"), new String("getItemImage"));
        
$fields->put(new String("newitem"), new String("getItemImage"));            
        
$fields->put(new String("alid::edit"), new String("getEditLink"));
        
$fields->put(new String("alid::delete"), new String("getDeleteLink"));    
        
        
$AlchemyTable = new TableBuilder("alchemy");
        
$AlchemyTable->setAlign(new Align("center""middle"));
        
$AlchemyTable->buildHeaders("ID""Item1""Item2","Item3""New Item""Edit""Delete");
        
$AlchemyTable->setHelper(new ItemTableHelper);
        
$AlchemyTable->buildTable($stmt$fields);
        
$document->add($AlchemyTable);    
    }
    
    public function 
add(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;    
        if(
$mysidia->input->post("submit")){
            
$document->setTitle($this->lang->added_title);
            
$document->addLangvar($this->lang->added);
            return;
        }
        
        
$document->setTitle($this->lang->add_title);
        
$document->addLangvar($this->lang->add);
        
$itemMap $this->getField("itemMap");
        
$recipeMap $this->getField("recipeMap");
        
        
$alchemyForm = new Form("createalchemy""add""post");
        
$title = new Comment("Create new Alchemy Practice:");
        
$title->setBold();
        
$title->setUnderlined();
        
$alchemyForm->add($title);
        
        
$alchemyForm->add(new Comment("Select first ingredient item: "FALSE));
        
$items = new DropdownList("item");
        
$items->add(new Option("None Selected""none"));
        if(
$itemMap->size() > 0){
            
$iterator $itemMap->iterator();
            while(
$iterator->hasNext()){
                
$item $iterator->nextEntry();
                
$items->add(new Option($item->getValue(), $item->getKey()));
            }
        }        
        
$alchemyForm->add($items);        
        
        
$alchemyForm->add(new Comment("Select second ingredient item: "FALSE));
        
$items2 = new DropdownList("item2");
        
$items2->add(new Option("None Selected""none"));
        if(
$itemMap->size() > 0){
            
$iterator $itemMap->iterator();
            while(
$iterator->hasNext()){
                
$item2 $iterator->nextEntry();
                
$items2->add(new Option($item2->getValue(), $item2->getKey()));
            }
        }        
        
$alchemyForm->add($items2);        
        
            
$alchemyForm->add(new Comment("Select third ingredient item: "FALSE));
        
$items3 = new DropdownList("item3");
        
$items3->add(new Option("None Selected""none"));
        if(
$itemMap->size() > 0){
            
$iterator $itemMap->iterator();
            while(
$iterator->hasNext()){
                
$item3 $iterator->nextEntry();
                
$items3->add(new Option($item3->getValue(), $item3->getKey()));
            }
        }        
        
$alchemyForm->add($items3);
        
        
$alchemyForm->add(new Comment("Select newly produced item: "FALSE));
        
$newitems = new DropdownList("newitem");
        
$newitems->add(new Option("None Selected""none"));
        if(
$itemMap->size() > 0){
            
$iterator $itemMap->iterator();
            while(
$iterator->hasNext()){
                
$newitem $iterator->nextEntry();
                
$newitems->add(new Option($newitem->getValue(), $newitem->getKey()));
            }
        }        
        
$alchemyForm->add($newitems);                
        
$alchemyForm->add(new Comment("Chance for Alchemy to work: "FALSE));
        
$alchemyForm->add(new TextField("chance"1006));
        
        
$alchemyForm->add(new Comment("Select recipe item: "FALSE));
        
$recipes = new DropdownList("recipe");
        
$recipes->add(new Option("None Selected""none"));
        if(
$recipeMap->size() > 0){
            
$iterator $recipeMap->iterator();
            while(
$iterator->hasNext()){
                
$recipe $iterator->nextEntry();
                
$recipes->add(new Option($recipe->getValue(), $recipe->getKey()));
            }
        }        
        
$alchemyForm->add($recipes);            
        
$alchemyForm->add(new Button("Create New Alchemy Practice""submit""submit"));
        
$document->add($alchemyForm);
    }
    
    public function 
edit(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;    
        
        if(!
$mysidia->input->get("alid")){
            
// An item has yet been selected, return to the index page.
            
$this->index();
            return;
        }
        elseif(
$mysidia->input->post("submit")){        
            
$document->setTitle($this->lang->edited_title);
            
$document->addLangvar($this->lang->edited);
            return;
        }
        else{
            
$alchemy $this->getField("alchemy")->get();
            
$document->setTitle($this->lang->edit_title);
            
$document->addLangvar($this->lang->edit);
            
$title = new Comment("Edit Alchemy Practice:");
            
$title->setBold();
            
$title->setUnderlined();
            
            
$alchemyForm = new Form("edititem"$mysidia->input->get("alid"), "post");            
            
$alchemyForm->add($title);        
            
$alchemyForm->add(new Comment("Select first ingredient item: "FALSE));
            
$itemMap $this->getField("itemMap");
            
$recipeMap $this->getField("recipeMap");            
            
            
$items = new DropdownList("item");
            
$items->add(new Option("None Selected""none"));
            if(
$itemMap->size() > 0){
                
$iterator $itemMap->iterator();
                while(
$iterator->hasNext()){
                    
$item $iterator->nextEntry();
                    
$items->add(new Option($item->getValue(), $item->getKey()));
                }
            }
            
$items->select($alchemy->item);            
            
$alchemyForm->add($items);        
        
            
$alchemyForm->add(new Comment("Select second ingredient item: "FALSE));
            
$items2 = new DropdownList("item2");
            
$items2->add(new Option("None Selected""none"));
            if(
$itemMap->size() > 0){
                
$iterator $itemMap->iterator();
                while(
$iterator->hasNext()){
                    
$item2 $iterator->nextEntry();
                    
$items2->add(new Option($item2->getValue(), $item2->getKey()));
                }
            }        
            
$items2->select($alchemy->item2);                    
            
$alchemyForm->add($items2);        
        
        
$alchemyForm->add(new Comment("Select third ingredient item: "FALSE));
            
$items3 = new DropdownList("item3");
            
$items3->add(new Option("None Selected""none"));
            if(
$itemMap->size() > 0){
                
$iterator $itemMap->iterator();
                while(
$iterator->hasNext()){
                    
$item3 $iterator->nextEntry();
                    
$items3->add(new Option($item3->getValue(), $item3->getKey()));
                }
            }        
            
$items3->select($alchemy->item3);                    
            
$alchemyForm->add($items3);
        
            
$alchemyForm->add(new Comment("Select newly produced item: "FALSE));
            
$newitems = new DropdownList("newitem");
            
$newitems->add(new Option("None Selected""none"));
            if(
$itemMap->size() > 0){
                
$iterator $itemMap->iterator();
                while(
$iterator->hasNext()){
                    
$newitem $iterator->nextEntry();
                    
$newitems->add(new Option($newitem->getValue(), $newitem->getKey()));
                }
            }    
            
$newitems->select($alchemy->newitem);                
            
$alchemyForm->add($newitems);                
            
$alchemyForm->add(new Comment("Chance for Alchemy to work: "FALSE));
            
$alchemyForm->add(new TextField("chance"$alchemy->chance6));
        
            
$alchemyForm->add(new Comment("Select recipe item: "FALSE));
            
$recipes = new DropdownList("recipe");
            
$recipes->add(new Option("None Selected""none"));
            if(
$recipeMap->size() > 0){
                
$iterator $recipeMap->iterator();
                while(
$iterator->hasNext()){
                    
$recipe $iterator->nextEntry();
                    
$recipes->add(new Option($recipe->getValue(), $recipe->getKey()));
                }
            }    
            
$recipes->select($alchemy->recipe);        
            
$alchemyForm->add($recipes);
            
            
$alchemyForm->add(new Button("Edit Alchemy Practice""submit""submit"));
            
$document->add($alchemyForm); 
        }
    }
    
    public function 
delete(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;
        if(!
$mysidia->input->get("alid")){
            
// An entry has yet been selected, return to the index page.
            
$this->index();
            return;
        }
        
$document->setTitle($this->lang->delete_title);
        
$document->addLangvar($this->lang->delete);
    }
    
    public function 
settings(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;            
        if(
$mysidia->input->post("submit")){
            
$document->setTitle($this->lang->settings_changed_title);
            
$document->addLangvar($this->lang->settings_changed);
            return;
        }
        
        
$alchemySettings $this->getField("alchemySettings");            
        
$document->setTitle($this->lang->settings_title);
        
$document->addLangvar($this->lang->settings);
        
$settingsForm = new FormBuilder("settingsform""settings""post");
        
$alchemySystem = new LinkedHashMap;
        
$alchemySystem->put(new String("Enabled"), new String("enabled"));
        
$alchemySystem->put(new String("Disabled"), new String("disabled"));
        
$alchemyChance = clone $alchemySystem;
        
$alchemyRecipe = clone $alchemySystem;        
        
        
$settingsForm->buildComment("Alchemy System Enabled:   "FALSE)->buildRadioList("system"$alchemySystem$alchemySettings->system)
                     ->
buildComment("Alchemy Success/Failure Enabled:   "FALSE)->buildRadioList("chance"$alchemyChance$alchemySettings->chance)
                     ->
buildComment("Alchemy Recipe Usage Enabled:   "FALSE)->buildRadioList("recipe"$alchemyRecipe$alchemySettings->recipe)
                     ->
buildComment("Alchemy Cost:     "FALSE)->buildTextField("cost"$alchemySettings->cost)                     
                     ->
buildComment("Alchemy License Item:     "FALSE)->buildTextField("license"$alchemySettings->license)                     
                     ->
buildComment("Usergroup(s) permitted to use alchemy(separate by comma):    "FALSE)->buildTextField("usergroup", ($alchemySettings->usergroup == "all")?$alchemySettings->usergroup:implode(","$alchemySettings->usergroup))
                     ->
buildButton("Change Alchemy Settings""submit""submit");
        
$document->add($settingsForm);    
    }    
}    
?>
(alchemyview.php)

PHP Code:
<?php

use Resource\Native\String;
use 
Resource\Collection\ArrayList;

class 
Alchemy extends Model{
  
// The item class.

    
protected $alid;
    protected 
$item;
    protected 
$item2;
    protected 
$item3;
    protected 
$newItem;
    protected 
$chance;
    protected 
$recipe;
    protected 
$validator;
    protected 
$settings;
    
    public function 
__construct($iid$iid2$iid3AlchemySetting $settings){
        
$mysidia Registry::get("mysidia");
        
$this->item = new PrivateItem($iid);
        
$this->item2 = new PrivateItem($iid2);
        
$this->item3 = new PrivateItem($iid3);
        
$this->settings $settings;        
        
$this->loadValidator();
        
        
$whereClause "(item = {$this->item->id} and item2 = {$this->item2->id} and item3 = {$this->item3->id}) OR (item = {$this->item2->id} and item2 = {$this->item->id} and item3 = {$this->item3->id})";
        
$alchemy $mysidia->db->select("alchemy", array(), $whereClause)->fetchObject();
        if(!
is_object($alchemy)) throw New ItemException("alchemy_invalid");
        
        
$this->alid $alchemy->alid;
        
$this->newItem = new StockItem($alchemy->newitem);
        
$this->chance $alchemy->chance;    
        
$this->recipe = ($alchemy->recipe and $alchemy->recipe != "none")?new Item($alchemy->recipe):NULL;
        
$this->usergroup $alchemy->usergroup;
    }
    
    public function 
getItem(){
        return 
$this->item;
    }
    
    public function 
getItem2(){
        return 
$this->item2;
    }
    
    public function 
getItem3(){
        return 
$this->item3;
    }
    
    public function 
getNewItem(){
        return 
$this->newItem;
    }
    
    public function 
getChance(){
        return 
$this->chance;
    }
    
    public function 
getRecipe(){
        return 
$this->recipe;
    }
    
    public function 
getUsergroup(){
        return 
$this->usergroup;
    }

    public function 
mix(){
        
$this->validator->validate();
        
$this->consume();
        
$this->produce();        
    }
    
    public function 
consume(){
        
$this->item->remove();
        
$this->item2->remove();
        
$this->item3->remove();
    }
 
    public function 
produce(){
        
$mysidia Registry::get("mysidia");
        
$mysidia->user->changecash(-1*$this->settings->cost);
        
$this->newItem->append(1$mysidia->user->username);
    }
    
    protected function 
loadValidator(){
        
$validations = new ArrayList;
        
$validations->add(new String("items"));
        
$validations->add(new String("license"));
        
$validations->add(new String("cost"));
        
$validations->add(new String("recipe"));
        
$validations->add(new String("usergroup"));
        
$validations->add(new String("chance"));
        
$this->validator = new AlchemyValidator($this$this->settings$validations);        
    }

    protected function 
save($field$value){
        return 
FALSE;
    }     
}
?>
(class_alchemy.php)

PHP Code:
<?php

use Resource\Collection\ArrayList;

class 
AlchemyValidator extends Validator{

    private 
$alchemy;
    private 
$settings;
    private 
$validations;
    private 
$status;

    public function 
__construct(Alchemy $alchemyAlchemySetting $settingsArrayList $validations){
        
$this->alchemy $alchemy;    
        
$this->settings $settings;
        
$this->validations $validations;
    }
    
    public function 
getValidations(){
        return 
$this->validations;
    }
    
    public function 
setValidations(ArrayList $validations$overwrite FALSE){
        if(
$overwrite$this->validations $validations;
        else{
            
$iterator $validations->iterator();
            while(
$iterator->hasNext()){
                
$this->validations->append($iterator->next());
            }
        }
    }
    
    public function 
getStatus(){
        return 
$this->status;
    }

    public function 
setStatus($status ""){
        
$this->status $status;
    }

    public function 
validate(){
        
$iterator $this->validations->iterator();
        while(
$iterator->hasNext()){        
            
$validation $iterator->next();
            
$method "check{$validation->capitalize()}";
            
$this->$method();
        }
        return 
TRUE;         
    }
    
    private function 
checkItems(){
        if(!
$this->alchemy->getItem() or !$this->alchemy->getItem2() or !$this->alchemy->getItem3()) throw new ItemException("alchemy_empty");
        else{
            if(
$this->alchemy->getItem()->quantity or $this->alchemy->getItem2()->quantity or $this->alchemy->getItem3()->quantity 1){
                throw new 
ItemException("alchemy_insufficient");
            }
            return 
TRUE;
        }
    }

    private function 
checkChance(){
        if(
$this->settings->chance == "disabled") return TRUE;
        
$chance $this->alchemy->getChance();
        
$rand rand(099);
        if(
$rand $chance) return TRUE;
        else{
            
$this->alchemy->consume();
            throw new 
ItemException("alchemy_chance");
        }
    }
    
    private function 
checkCost(){
        if(
$this->settings->cost == 0) return TRUE;
        
$mysidia Registry::get("mysidia");        
        if(
$mysidia->user->money >= $this->settings->cost) return TRUE;
        else throw new 
ItemException("alchemy_cost");
    }    

    private function 
checkLicense(){
        if(!
$this->settings->license) return TRUE;
        
$mysidia Registry::get("mysidia");
        
$license = new PrivateItem($this->settings->license$mysidia->user->username);
        if(
$license->quantity >= 1) return TRUE;
        else throw new 
ItemException("alchemy_license");
    }
    
    private function 
checkRecipe(){
        if(
$this->settings->recipe == "disabled" or !$this->alchemy->getRecipe()) return TRUE;
        
$mysidia Registry::get("mysidia");
        
$recipe = new PrivateItem($this->alchemy->getRecipe()->itemname$mysidia->user->username);
        if(
$recipe->quantity >= 1) return TRUE;
        else throw new 
ItemException("alchemy_recipe");
    }
    
    private function 
checkUsergroup(){
        if(
$this->settings->usergroup == "all") return TRUE;
        
$mysidia Registry::get("mysidia");        
        foreach(
$this->settings->usergroup as $usergroup){
            if(
$mysidia->user->usergroup->gid == $usergroup) return TRUE;   
        }        
        throw new 
ItemException("alchemy_usergroup");
    }
}
?>
(class_alchemyvalidator)

PHP Code:
<?php

//Language variables used for AdminCP/Inventory Page

$lang['default_title'] = "Manage Alchemy";
$lang['default'] = "Here is a list of practices that can be used for alchemy<br><br>";
$lang['default_none'] = "Currently there is no alchemy practices possible for your site.";
$lang['nonexist'] = "The item does not exist in your database.";
$lang['add_title'] = "Create new Alchemy Practices";
$lang['add'] = "This page allows you to create a new possible alchemy practices for your users to use.
                Please fill in the form below and hit the <i>Create New Alchemy Practice</i> button below when you're ready.<br>"
;
$lang['added_title'] = "Alchemy Practice Created Successfully";
$lang['added'] = "Successfully created new alchemy practice. You may <a href='../index'>go back to the Admin CP index page</a>.";           
$lang['edit_title'] = "Edit Alchemy Practices";
$lang['edit'] = "This page allows you to edit an existing alchemy practice.
                 Please fill in the form below and hit the <i>Edit Alchemy Practice</i> button below when you're ready."
;
$lang['edited_title'] = "Alchemy edited Successfully";
$lang['edited'] = "Successfully modified an existing alchemy practice. You may <a href='../../index'>go back to the Admin CP index page</a>.";
$lang['delete_title'] = "Alchemy Practice Remoced";
$lang['delete'] =  "You have successfully deleted this practice from Alchemy Library.";
$lang['settings_title'] = "Changing Alchemy Settings";
$lang['settings'] = "Here you can modify settings for the alchemy system.<br>";
$lang['settings_changed_title'] = "Settings Changed Successfully";
$lang['settings_changed'] = "You have successfully modified the alchemy system settings.";    
$lang['item'] = "You did not specify the first ingredient item for alchemy, or that the item entered was invalid.";    
$lang['item2'] = "You did not specify the second ingredient item for alchemy, or that the item entered was invalid.";    
$lang['item3'] = "You did not specify the third ingredient item for alchemy, or that the item entered was invalid.";
$lang['item2'] = "You did not specify the resulting new item for alchemy, or that the item entered was invalid.";    
$lang['duplicate'] = "An alchemy practice with the two ingredient items specified already exists, please go back and edit the fields.";
$lang['chance'] = "The textfield chance must contain an integer between 0 to 100. Please go back and try again.";

$lang['alchemy_title'] = "Welcome to the Alchemy Service"
$lang['alchemy'] = "You come upon a quaint, older building in the middle of the Mysgardia Kingdom. You see various types of mages here, utilizing the workstations to magically craft powerful new items. A few of the Mysgardian Kingdom's forces stand idly by, keeping watch and discouraging anyone from stealing.<br /><br />"
$lang['alchemy_choose'] = " You select your first item:"
$lang['alchemy_choose2'] = "Then you select your second:"
$lang['alchemy_choose3'] = "Then you select your third:";
$lang['alchemy_disabled'] = "Unfortunately the admin has disabled the Alchemy System for this site, you may send him/her a message for more information.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_success'] = "Congratulations!"
$lang['alchemy_newitem'] = "You have successfully produced a new item ";  
$lang['alchemy_newitem2'] = " by using Alchemy. You may now manage it in your inventory, or continue to use the alchemy system.<br /><br /> 
                             <a href='/inventory/alchemy'><button type='button'>Return</button></a>"

$lang['alchemy_invalid'] = "The specified item combination is invalid, it does not produce a new item...<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_empty'] = "You have not entered three valid items for performing alchemy.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_insufficient'] = "You do not have the necessary items for producing a new item through alchemy.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_chance'] = "The alchemy fails! How unfortunate, maybe you should try again?<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_cost'] = "Apparently you do not have enough money to afford the alchemy service, please come back later.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_license'] = "You appear to lack the license required to perform alchemy, please make sure you have the license in your inventory first.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_recipe'] = "It seems that you do not have the recipe to produce an item from the two selected items.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_usergroup'] = "Unfortunately, the admin has specified that only certain users can perform alchemy, you may consult him/her by sending a message.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
?>
(lang_alchemy.php)

PHP 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") and $mysidia->input->post("iid3")){
            
$alchemy = new Alchemy($mysidia->input->post("iid"), $mysidia->input->post("iid2"), $mysidia->input->post("iid3"), $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);
    }  
}
?>
(inventory.php)

PHP Code:
<?php

use Resource\Collection\LinkedList;

class 
InventoryView extends View{
    
    public function 
index(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;
        
$document->setTitle($mysidia->lang->inventory);
        
$document->addLangvar("You may manage these items as you like, or go to the alchemy page to make your own items: <br>");    
        
$document->add(new Link("inventory/alchemy""Use the Alchemy Service Now!"));    
        
$document->add(new Comment("<br><br>")); 
        
$inventory $this->getField("inventory");
        
$inventoryTable = new TableBuilder("inventory");
        
$inventoryTable->setAlign(new Align("center""middle"));
        
$inventoryTable->buildHeaders("Image""Category""Name""Description""Quantity""Use""Sell""Toss");    
        
$inventoryTable->setHelper(new ItemTableHelper);
      
        
$iids $inventory->getiids();
        for(
$i 0$i $iids->length(); $i++){
            
$item $inventory->getitem($iids[$i]);
            
$cells = new LinkedList;
            
$cells->add(new TCell($inventory->getitemimage($item->imageurl)));
            
$cells->add(new TCell($item->category));
            
$cells->add(new TCell($item->itemname));
            
$cells->add(new TCell($item->description));
            
$cells->add(new TCell($item->quantity));
            
$cells->add(new TCell($inventoryTable->getHelper()->getUseForm($item)));
            
$cells->add(new TCell($inventoryTable->getHelper()->getSellForm($item)));
            
$cells->add(new TCell($inventoryTable->getHelper()->getTossForm($item)));
            
$inventoryTable->buildRow($cells);        
        }
         
$document->add($inventoryTable);
    }
            
    public function 
uses(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;    
        if(
$mysidia->input->post("aid")){
            
$message = (string)$this->getField("message");
            
$document->setTitle($mysidia->lang->global_action_complete);
            
$document->addLangvar($message);
            return;        
        }
        
        
$petMap $this->getField("petMap");
        
$document->setTitle($mysidia->lang->select_title);
        
$document->addLangvar($mysidia->lang->select);        
        
$chooseFrom = new Form("chooseform""uses""post");
        
        
$adoptable = new DropdownList("aid");
        
$adoptable->add(new Option("None Selected""none"));
        if(
$petMap->size() > 0){
            
$iterator $petMap->iterator();
            while(
$iterator->hasNext()){
                
$adopt $iterator->nextEntry();
                
$adoptable->add(new Option($adopt->getValue(), $adopt->getKey()));
            }
        }        
        
$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 $this->document;
        
$document->setTitle($this->lang->global_transaction_complete);
        
$document->addLangvar("{$this->lang->sell}");
    }
    
    public function 
toss(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;
        if(
$mysidia->input->get("confirm")){
            
$document->setTitle($this->lang->global_action_complete);
            
$document->addLangvar("{$this->lang->toss}{$mysidia->input->post("itemname")}{$this->lang->toss2}");
            return;
        }
    
        
$document->setTitle($this->lang->toss_confirm);
        
$document->addLangvar($this->lang->toss_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);            
    }
    
    public function 
alchemy(){
        
$mysidia Registry::get("mysidia");
        
$document $this->document;
        
        if(
$mysidia->input->post("iid") and $mysidia->input->post("iid2") and $mysidia->input->post("iid3")){
            
$alchemy $this->getField("alchemy");
            
$newitem $alchemy->getNewItem()->itemname;
            
$document->setTitle($this->lang->alchemy_success);
            
$document->addLangvar($this->lang->alchemy_newitem.$newitem.$this->lang->alchemy_newitem2);    
            return;        
        }

        
$document->setTitle($this->lang->alchemy_title);
        
$document->addLangvar($this->lang->alchemy);
        
$itemMap $this->getField("itemMap");
        
$settings $this->getField("settings");
        
$alchemyFrom = new Form("alchemyform""alchemy""post");
        
$alchemyFrom->add(new Comment("<b>Cost of performing Alchemy: {$settings->cost} {$mysidia->settings->cost}</b><br>"));
        
        
$alchemyFrom->add(new Comment($mysidia->lang->alchemy_choose));        
        
$items = new DropdownList("iid");
        
$items->add(new Option("None Selected""none"));
        if(
$itemMap->size() > 0){
            
$iterator $itemMap->iterator();
            while(
$iterator->hasNext()){
                
$item $iterator->nextEntry();
                
$items->add(new Option($item->getValue(), $item->getKey()));
            }
        }        
        
$alchemyFrom->add($items);

        
$alchemyFrom->add(new Comment($mysidia->lang->alchemy_choose2));        
        
$items2 = new DropdownList("iid2");
        
$items2->add(new Option("None Selected""none"));
        if(
$itemMap->size() > 0){
            
$iterator $itemMap->iterator();
            while(
$iterator->hasNext()){
                
$item2 $iterator->nextEntry();
                
$items2->add(new Option($item2->getValue(), $item2->getKey()));
            }
        }        
        
$alchemyFrom->add($items2);  
        
        
$alchemyFrom->add(new Comment($mysidia->lang->alchemy_choose3));        
        
$items3 = new DropdownList("iid3");
        
$items3->add(new Option("None Selected""none"));
        if(
$itemMap->size() > 0){
            
$iterator $itemMap->iterator();
            while(
$iterator->hasNext()){
                
$item3 $iterator->nextEntry();
                
$items3->add(new Option($item3->getValue(), $item3->getKey()));
            }
        }        
        
$alchemyFrom->add($items3);
              
        
$alchemyFrom->add(new Button("Let's mix the items now!""submit""submit"));
        
$document->add($alchemyFrom);        
    } 
}
?>
(inventoryview.php)

PHP Code:
<?php

//Language variables used for Inventory Page

$lang['inventory'] = "Here is the list of every item you own";
$lang['inventory_empty'] = "You currently do not have any items in inventory.";
$lang['select_title'] = "Select an adoptable";
$lang['select'] = "Now you need to choose an adoptable to use this item:<br>";
$lang['item_error'] = "An error has occurred while manipulating item";
$lang['use_none'] = "It appears that you do not have this item in your inventory.";
$lang['use_fail'] = "It seems that item can not be used on the adoptable selected.";
$lang['use_effect'] = "The item refuses to take effect, what a waste of money and effort!";
$lang['sell_empty'] = "You have yet to specify the quantity of items to sell...<br>";
$lang['sell_none'] = "It appears that you do not have this item in your inventory.";
$lang['sell_quantity'] = "It seems that you wish to sell more items than you already own, this action is invalid.<br>"
$lang['sell'] = "You have sold ";
$lang['sell2'] = "successfully and earned some money back.{$mysidia->input->post("cost")}<br>"
$lang['toss_confirm'] = "Confirm your Action"
$lang['toss_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>"
;
$lang['toss_none'] = "It appears that you do not have this item in your inventory.";                     
$lang['toss'] = "You have successfully removed ";
$lang['toss2'] = " from your inventory.";

$lang['alchemy_title'] = "Welcome to the Alchemy Service"
$lang['alchemy'] = "stuff goes here.<br /><br />"
$lang['alchemy_choose'] = " You select your first item:"
$lang['alchemy_choose2'] = "Then you select your second:"
$lang['alchemy_choose3'] = "Then you select your third:";
$lang['alchemy_disabled'] = "Unfortunately the admin has disabled the Alchemy System for this site, you may send him/her a message for more information.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_success'] = "Congratulations!"
$lang['alchemy_newitem'] = "You have successfully produced a new item ";  
$lang['alchemy_newitem2'] = " by using Alchemy. You may now manage it in your inventory, or continue to use the alchemy system.<br /><br /> 
                             <a href='/inventory/alchemy'><button type='button'>Return</button></a>"

$lang['alchemy_invalid'] = "The specified item combination is invalid, it does not produce a new item...<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_empty'] = "You have not entered two valid items for performing alchemy.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_insufficient'] = "You do not have the necessary items for producing a new item through alchemy.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_chance'] = "The alchemy fails! How unfortunate, maybe you should try again?<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_cost'] = "Apparently you do not have enough money to afford the alchemy service, please come back later.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_license'] = "You appear to lack the license required to perform alchemy, please make sure you have the license in your inventory first.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_recipe'] = "It seems that you do not have the recipe to produce an item from the two selected items.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
$lang['alchemy_usergroup'] = "Unfortunately, the admin has specified that only certain users can perform alchemy, you may consult him/her by sending a message.<br /><br /> <a href='/inventory/alchemy'><button type='button'>Return</button></a>"
?>
(lang_inventory.php)
__________________
Reply With Quote
  #76  
Old 11-30-2016, 05:45 AM
Corsair's Avatar
Corsair Corsair is offline
Member
 
Join Date: Jan 2012
Posts: 128
Gender: Female
Credits: 11,232
Corsair is on a distinguished road
Default

Thank you Dinocanid for some reason I missed your comment.
Reply With Quote
Reply

Thread Tools
Display Modes

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

Similar Threads
Thread Thread Starter Forum Replies Last Post
Alchemy Mod - HoF Nieth Questions and Supports 4 11-13-2015 11:52 AM


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

Currently Active Users: 459 (0 members and 459 guests)
Threads: 4,080, Posts: 32,024, 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 - 2024, vBulletin Solutions Inc.
vBCommerce I v2.0.0 Gold ©2010, PixelFX Studios
vBCredits I v2.0.0 Gold ©2010, PixelFX Studios
Emoticons by darkmoon3636