Example #1
0
 function SmithyRefineProcess()
 {
     if (!$_POST["refine"]) {
         return false;
     }
     if (!$_POST["item_no"]) {
         ShowError("Select Item.");
         return false;
     }
     // 道具が読み込めない場合
     if (!($item = LoadItemData($_POST["item_no"]))) {
         ShowError("Failed to load item data.");
         return false;
     }
     // 道具を所持していない場合
     if (!$this->item[$_POST["item_no"]]) {
         ShowError("Item \"{$item[name]}\" doesn't exists.");
         return false;
     }
     // 回数が指定されていない場合
     if ($_POST["timesA"] < $_POST["timesB"]) {
         $times = $_POST["timesB"];
     } else {
         $times = $_POST["timesA"];
     }
     if (!$times || $times < 1 || REFINE_LIMIT < $times) {
         ShowError("times?");
         return false;
     }
     include CLASS_SMITHY;
     $obj_item = new Item($_POST["item_no"]);
     // その道具が精錬できない場合
     if (!$obj_item->CanRefine()) {
         ShowError("Cant refine \"{$item[name]}\"");
         return false;
     }
     // ここから精錬を始める処理
     $this->DeleteItem($_POST["item_no"]);
     // 道具は消えるか変化するので消す
     $Price = round($item["buy"] / 2);
     // 最大精錬数の調整。
     if (REFINE_LIMIT < $item["refine"] + $times) {
         $times = REFINE_LIMIT - $item["refine"];
     }
     $Trys = 0;
     for ($i = 0; $i < $times; $i++) {
         // お金を引く
         if ($this->TakeMoney($Price)) {
             $MoneySum += $Price;
             $Trys++;
             if (!$obj_item->ItemRefine()) {
                 //精錬する(false=失敗なので終了する)
                 break;
             }
             // お金が途中でなくなった場合。
         } else {
             ShowError("Not enough money.<br />\n");
             $this->AddItem($obj_item->ReturnItem());
             break;
         }
         // 指定回数精錬を成功しきった場合。
         if ($i == $times - 1) {
             $this->AddItem($obj_item->ReturnItem());
         }
     }
     print "Money Used : " . MoneyFormat($Price) . " x " . $Trys . " = " . MoneyFormat($MoneySum) . "<br />\n";
     $this->SaveUserItem();
     return true;
     /*// お金が足りてるか計算
     		$Price	= round($item["buy"]/2);
     		$MoneyNeed	= $times * $Price;
     		if($this->money < $MoneyNeed) {
     			ShowError("Your request needs ".MoneyFormat($MoneyNeed));
     			return false;
     		}*/
 }