[v3]wog_item_tool.php 稍微優化

提供WOG各方面的技術問題,並提供最新path更新。

版主: 涅魂, 簫哥, 10度C~

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

[v3]wog_item_tool.php 稍微優化

文章stu6707 » 2011-04-23 1:31 pm

topic-t36531.html

研究了涅魂大的這篇,看不懂是怎麼把裝備從陣列取出來..

所以只能把迴圈改進,這樣差不多能快個2,30%

0.00012 與 0.00015 的差別.. :face19:

測試過沒有問題,不過不保證一定沒bug

發現bug請回報,謝謝~

----2011/04/24----
修改item_out一個bug
修改item_in,使同類道具以剩餘數量小到大排列

----2011/04/30----
修改item_in道具bug

----2011/05/05----
修改item_in道具bug
支援多個裝備out&in



修改步驟:覆蓋兩function,不能只覆蓋其一function,不然item裝備欄會出問題。

代碼: 選擇全部
function item_out($user_id,$item_id,$item_num=1,$item_now=null)
{
   global $lang,$a_id;
   if($item_num < 0 || $item_num > $this->itemMax){
      alertWindowMsg($lang['wog_act_errdate']);
   }
   $temp_pack=$this->dataCheck($item_now,$user_id);
   if($a_id == 'd_item_id'){
      foreach($temp_pack as $key => $value){
         $temp_packs=explode("*",$value);
         if($item_id == $temp_packs[0]){
            unset($temp_pack[$key]);
            $remain_num=$temp_packs[1]-$item_num;
            if($remain_num < 1){
               $item_num-=$temp_packs[1];
            }else{
               $temp_pack[]=$temp_packs[0].'*'.$remain_num;
               $item_num=0;
            }
         }
         if($item_num == 0) break;
      }
      if($item_num > 0){
         alertWindowMsg($lang['wog_act_errnum']."--".$item_num);
      }
   }else{
      if(in_array($item_id,$temp_pack)){
         foreach($temp_pack as $key => $value){
            if($item_id == $value){
               unset($temp_pack[$key]);
               $item_num-=1;
            }
            if($item_num == 0) break;
         }
         if($item_num > 0){
            alertWindowMsg($lang['wog_act_errnum']);
         }
      }else{
         alertWindowMsg($lang['wog_act_errnum']);
      }
   }
   return $temp_pack;
}

代碼: 選擇全部
function item_in($temp_pack,$adds,$buy_num=0)
{
   global $a_id;
   if($a_id == 'd_item_id'){
      foreach($temp_pack as $key => $value){
         $temp_packs=explode("*",$value);
         if($adds == $temp_packs[0]){
            unset($temp_pack[$key]);
            $temp_packs[1]+=$buy_num;
            if($temp_packs[1] > $this->itemMax){
               $buy_num=$temp_packs[1]-$this->itemMax;
               $temp_packs[1]=$this->itemMax;
               $temp_pack[]=$adds.'*'.$buy_num;
            }
            $buy_num=0;
            $temp_pack[]=$adds.'*'.$temp_packs[1];
            break;
         }
      }
      if($buy_num != 0){
         $temp_pack[]=$adds.'*'.$buy_num;
      }
   }else{
      if($buy_num > 1){
         for($i=0;$i<$buy_num;$i++){
            $temp_pack[]=$adds;
         }
      }else{
         $temp_pack[]=$adds;
      }
   }
   return $temp_pack;
}



最後由 stu6707 於 2011-05-05 1:29 pm 編輯,總共編輯了 3 次。


ETERNAL
 
文章: 2937
註冊時間: 2003-12-03 11:08 pm
性別: 男生

Re: [v3]wog_item_tool.php 稍微優化

文章ETERNAL » 2011-04-23 4:50 pm

呵呵 其實我也常常看不懂我自己寫的


水色論壇 http://www.et99.net
簡恩峻分享

stu6707
 
文章: 162
註冊時間: 2008-10-26 1:00 pm

Re: [v3]wog_item_tool.php 稍微優化

文章stu6707 » 2011-04-24 9:29 am

寫完複雜功能,常常看不懂之前是怎麼寫出來的.. 囧

要重頭到尾看一遍、仔細推敲..



問個不相關的問題
v3版的版權連結是舊的網址,需要更新嗎?




回到 Online FF Battle-WOG官方聯盟推廣處

誰在線上

正在瀏覽這個版面的使用者:沒有註冊會員 和 7 位訪客

cron