[外掛](2.08)合成系統Synthetic System

版主: 涅魂, 簫哥


涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

[外掛](2.08)合成系統Synthetic System

文章涅魂 » 2005-07-03 12:08 pm

※目前此篇已更新到最新版本,安裝完後不必再安裝之後的更新&DEBUG。
此系統可以將裝備物品通通拿來合成 :lol:
不過只有普通的合成當然不好玩囉,所以在此提供三種合成方式 :wink:
1.Normal Synthesizer System
普通的合成系統,會將所有的合成物品的編號加起來之後除上總數再加上隨機的一個數字來取得新物品的編號 :wink:

2.Random Synthesizer System
隨機的合成系統,取出編號小於所有合成物品的編號加起來後除以3再乘上1.1的同類非貴重品的裝備。

3.Special Synthesizer System
特別的合成系統,將5項合成物品與wog_syn中的資料比對之後取出相符的syn_result。

1.wog_syn中的物品編號必須按照順序排列
例如說您要新增一筆數據,syn_result是23,而成份為1,1,2,55,42
則該數據的設定內容如下
代碼: 選擇全部
syn_result=23
syn_ele1=1
syn_ele2=1
syn_ele3=2
syn_ele4=42
syn_ele5=55

2.wog_syn中的沒有用到的物品編號必須設為0並且排在最後面
例如說您要新增一筆數據,syn_result是197,而成份為1,42
則該數據的設定內容如下
代碼: 選擇全部
syn_result=197
syn_ele1=1
syn_ele2=42
syn_ele3=0
syn_ele4=0
syn_ele5=0


--------------------分格線--------------------
在您的資料庫中輸入下列語法 寫:CREATE TABLE `wog_syn` (
`syn_id` int(11) NOT NULL auto_increment,
`syn_result` mediumint(4) unsigned NOT NULL default '0',
`syn_ele1` mediumint(4) unsigned NOT NULL default '0',
`syn_ele2` mediumint(4) unsigned NOT NULL default '0',
`syn_ele3` mediumint(4) unsigned NOT NULL default '0',
`syn_ele4` mediumint(4) unsigned NOT NULL default '0',
`syn_ele5` mediumint(4) unsigned NOT NULL default '0',
PRIMARY KEY (`syn_id`)
) TYPE=MyISAM AUTO_INCREMENT=1 ;


開啟檔案 wog/wog.js 寫:尋找
代碼: 選擇全部
view_name.document.write('<tr><td><input type="button" value="武器裝具" onClick="parent.act_click(\'arm\',\'view\',\'a_id\')"> <input type="button" value="頭部裝具" onClick="parent.act_click(\'arm\',\'view\',\'d_head_id\')"> <input type="button" value="身體裝具" onClick="parent.act_click(\'arm\',\'view\',\'d_body_id\')"> <input type="button" value="手部裝具" onClick="parent.act_click(\'arm\',\'view\',\'d_hand_id\')"> <input type="button" value="腳部裝具" onClick="parent.act_click(\'arm\',\'view\',\'d_foot_id\')"> <input type="button" value="道具裝具" onClick="parent.act_click(\'arm\',\'view\',\'d_item_id\')"></tr>');

後面,加上
代碼: 選擇全部
//##########----------syn_system_start----------##########
   view_name.document.write('<tr><td><input type="button" value="武器合成" onClick="parent.act_click(\'syn\',\'view\',\'a_id\')"> <input type="button" value="頭盔合成" onClick="parent.act_click(\'syn\',\'view\',\'d_head_id\')"> <input type="button" value="鎧甲合成" onClick="parent.act_click(\'syn\',\'view\',\'d_body_id\')"> <input type="button" value="護手合成" onClick="parent.act_click(\'syn\',\'view\',\'d_hand_id\')"> <input type="button" value="長靴合成" onClick="parent.act_click(\'syn\',\'view\',\'d_foot_id\')"> <input type="button" value="道具合成" onClick="parent.act_click(\'syn\',\'view\',\'d_item_id\')"></tr>');
//##########----------syn_system_end----------##########

尋找
代碼: 選擇全部
function srhCount(srhStr)

前面,加上
代碼: 選擇全部
//##########----------syn_system_start----------##########
function syn_view(a,d)
{
   var view_name=parent.wog_view;
   vData=d;
   message_cls();
   view_name.document.write('<form action="wog_act.php" method="post" target="mission" name=f1 >');
   view_name.document.write(temp_table1);
   view_name.document.write('<tr><td>合成選擇</td><td>物理攻擊力</td><td>魔力攻擊力</td><td>物理防禦力</td><td>魔力防禦力</td><td>提升速度</td><td>名稱</td><td>價格</td></tr>');
   var s1=a.split(";");
   for(var i=0;i<s1.length;i++)
   {   
      var s2=s1[i].split(",");
      var temps=srhCount(s2[0]);
      for(var j=0;j<temps;j++)
      {
         view_name.document.write('<tr><td><input type="checkbox" name="syn[]" value="'+s2[0]+'"></td><td>'+s2[6]+'</td><td>'+s2[7]+'</td><td>'+s2[1]+'</td><td>'+s2[2]+'</td><td>'+s2[3]+'</td><td>'+s2[5]+'</td><td>'+s2[4]+'</td></tr>');
      }
   }
   view_name.document.write('<tr><td colspan="10" >選擇合成方式:<select name="syn_way">');
   var syn_option=new Array();
   syn_option[0]="<option value=1 CHECKED>普通合成</option>";
   syn_option[1]="<option value=2>隨機合成</option>";
   syn_option[2]="<option value=3>限定合成</option>";
   for(var a=0;a<syn_option.length;a++)
   {
      view_name.document.write(syn_option[a]);
   }
   view_name.document.write('</select></tr>');
   view_name.document.write('<tr><td colspan="10" ><input type="submit" value="送入合成爐"></tr>');
   view_name.document.write(temp_table2);
   view_name.document.write('<input type="hidden" name="f" value="syn">');   
   view_name.document.write('<input type="hidden" name="act" value="purify">');
   view_name.document.write('</form>');
}
function syn_end(s,end)
{
   var view_name=parent.wog_view;
   message_cls();
   view_name.document.write(temp_table1);
   view_name.document.write('<tr><td>在合成的途中合成爐突然發出閃閃的白光!<BR><p align=center><font size=7><b>轟隆隆隆隆隆隆隆隆隆隆!</b></p></font>');
   var timerID=setTimeout('syn_end_view("'+s+'","'+end+'")',1000);
   view_name.document.write('</td></tr>'+temp_table2+"<br>");
}
function syn_end_view(s,end)
{
   var view_name=parent.wog_view;
   view_name.document.write(temp_table1+'<tr><td>');
   if(end==1)//合成成功
   {view_name.document.write('你的眼前出現了一個閃閃發亮的物品,這次的合成似乎是成功了!<br><br>合成結果: <font color=#ffffaf>'+s+'</font> 入手!');}
   if(end==2)//編號錯誤
   {view_name.document.write('你合出了一團無法辨識的東西,或許是一團垃圾....');}
   if(end==3)//合成失敗
   {view_name.document.write('你的眼前出現了一團灰燼....。');}
   view_name.document.write('</td></tr>'+temp_table2);
}
//##########----------syn_system_end----------##########



開啟檔案 wog/wog_act.php 寫:尋找
代碼: 選擇全部
   case "cp":

前面,加上
代碼: 選擇全部
##########----------syn_system_start----------##########
   case "syn":
      include("./class/wog_act_arm.php");
      switch ($_POST["act"])
      {
         case "view":
            syn_view($HTTP_COOKIE_VARS["wog_cookie"]);
         break;
         case "purify":
            syn_purify($HTTP_COOKIE_VARS["wog_cookie"]);
         break;
      }
   break;
##########------------syn_system_end-----------##########

尋找
代碼: 選擇全部
//##########################  show_chara function #################

前面,加上
代碼: 選擇全部
##########----------syn_system_start----------##########
function syn_view($user_id)
{
   $wog_act_class = new wog_act_arm;
   $wog_act_class->syn_view($user_id);
}
function syn_purify($user_id)
{
   $wog_act_class = new wog_act_arm;
   $wog_act_class->syn_purify($user_id);
}
##########----------syn_system_end----------##########


開啟檔案 wog/class/wog_act_arm.php 寫:尋找
代碼: 選擇全部
}
?>

前面,加上
代碼: 選擇全部
##########----------syn_system_start----------##########
   function syn_view($user_id)
   {
      global $DB_site,$_POST,$lang;
      $sql="select ".$_POST["temp_id"]." from wog_item where p_id=".$user_id."  ";
      $pack=$DB_site->query_first($sql);
      if($pack[0]=="N/A" || empty($pack[0]))
      {
            alertWindowMsg('沒有任何裝備');
      }else
      {
         $temp_str=$DB_site->query("select d_id,d_df,d_mdf,d_agl,d_mstr,d_magl,d_msmart,d_money,d_name,d_at,d_mat from wog_df where d_id in ($pack[0])");
         $s="";
         while($temp_strs=$DB_site->fetch_array($temp_str))
         {
            $s.=";".$temp_strs[d_id].",".$temp_strs[d_df].",".$temp_strs[d_mdf].",".$temp_strs[d_agl].",".$temp_strs[d_money].",".$temp_strs[d_name].",".$temp_strs[d_at].",".$temp_strs[d_mat].",".$temp_strs[d_mstr].",".$temp_strs[d_magl].",".$temp_strs[d_msmart];
         }
         $DB_site->free_result($temp_str);
         unset($temp_strs);
         $s=substr($s,1,strlen($s));
         showscript("parent.syn_view('$s','$pack[0]')");
      }
      unset($pack);
      unset($temp);
   }
   function syn_purify($user_id)
   {
      global $DB_site,$_POST,$a_id,$lang;
      if(empty($_POST["syn_way"])){alertWindowMsg('沒有選擇合成方式!');}
      if(count($_POST["syn"])<=1){alertWindowMsg('合成物品最少需要兩個!');}
      $syn=$_POST["syn"];
      check_type($_POST["syn"][0]);
      $sql="select ".$a_id." from wog_item where p_id=".$user_id."";
      $item=$DB_site->query_first($sql);
      if($item[0]=="N/A" || $item[0]=="")
      {alertWindowMsg('沒有任何裝備');}
      else
      {
         $items=split(",",$item[0]);
         $s="";
         for($j=0;$j<count($items);$j++)
         {
            for($a=0;$a<count($_POST["syn"]);$a++)
            {
               if($syn[$a]==$items[$j])
               {
                  $syn_debug++;
                  $syn[$a]=-1;
                  $items[$j]=0;
                  break;
               }
            }
            if($items[$j]!=0)
            {$s.=",".$items[$j];}
         }
         if($syn_debug!=count($_POST["syn"])){alertWindowMsg("錯誤操作!");}
         $chang_d_type=$a_id;
         $s=substr($s,1,strlen($s));
         switch($_POST["syn_way"])
         {
            case "1":##########normal synthetic##########
               $syn_tatal=0;
               for($a=0;$a<count($_POST["syn"]);$a++)
               {$syn_tatal+=$_POST["syn"][$a];}
               $syn_id=floor($syn_tatal/(count($_POST["syn"])))+rand(-5,5);
               $sql="select d_id,d_name from wog_df where d_id=".$syn_id."";
               $new_arm=$DB_site->query_first($sql);
            break;
            
            case "2":##########random synthetic##########
               $syn_num=0;
               for($a=0;$a<count($_POST["syn"]);$a++)
               {$syn_num+=$_POST["syn"][$a];}
               $get_type=$DB_site->query_first("select d_type from wog_df where d_id=".$_POST["syn"][0]."");
               $syn_id=floor(($syn_num/3)*1.1);
               $sql="select d_id,d_name from wog_df where d_id<".$syn_id." and d_dbst=0 and d_type=".$get_type[0]." ORDER BY RAND() LIMIT 1";
               $new_arm=$DB_site->query_first($sql);
            break;
            
            case "3":##########special synthetic##########
               if(count($_POST["syn"])>5){alertWindowMsg("合成物品不可超過5項。");}
               for($ch=0;$ch<5;$ch++)
               {if(!$_POST["syn"][$ch] || empty($_POST["syn"])){$_POST["syn"][$ch]=0;}}
               $new_arm=$DB_site->query_first("select a.syn_result,b.d_name from wog_syn a,wog_df b where a.syn_ele1=".$_POST["syn"][0]." and a.syn_ele2=".$_POST["syn"][1]." and a.syn_ele3=".$_POST["syn"][2]." and a.syn_ele4=".$_POST["syn"][3]." and a.syn_ele5=".$_POST["syn"][4]." and b.d_id=a.syn_result");
            break;
            
            default:##########error##########
               alertWindowMsg('合成系統錯誤!請重新確認。');
            break;
         }
         if(rand(1,5)==1)
         {   
            $DB_site->query("update wog_item set ".$chang_d_type."='".$s."' where p_id=".$user_id." ");
            showscript("parent.syn_end('no',3)");
         }elseif($new_arm[0])
         {
            check_type($new_arm[0]);
            if($a_id==$chang_d_type)
            {
               if($s && !empty($s)){$s.=",".$new_arm[0];}else{$s=$new_arm[0];}
            }else
            {
               $new_blank=$DB_site->query_first("select ".$a_id." from wog_item where p_id=".$user_id."");
               if($new_blank[0]!="N/A" && !empty($new_blank[0]))
               {$new_blank[0].=",".$new_arm[0];}
               else
               {$new_blank[0]=$new_arm[0];}
               $DB_site->query("update wog_item set ".$a_id."='".$new_blank[0]."' where p_id=".$user_id." ");
            }
            $DB_site->query("update wog_item set ".$chang_d_type."='".$s."' where p_id=".$user_id." ");
            showscript("parent.syn_end('$new_arm[1]',1)");
         }else
         {
            $DB_site->query("update wog_item set ".$chang_d_type."='".$s."' where p_id=".$user_id." ");
            showscript("parent.syn_end('no',2)");
         }
      }
   }
##########----------syn_system_end----------##########

儲存,關閉所有檔案
完畢,有任何問題請提出。 :wink:


最後由 涅魂 於 2005-08-07 10:27 pm 編輯,總共編輯了 5 次。


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

文章ETERNAL » 2005-07-03 12:29 pm

讚喔 :wink:
給一分




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-07-03 2:30 pm

謝謝ET大的誇獎啊 :lol:
這次的外掛做得有點久,主要是有兩個地方困擾我許久....
第一點就是Special Synthesizer System ,這邊光是要如何對應成分的先後順序就花了我不少時間.... :oops:
第二點就是鑒於前幾次發表的外掛BUG層出不窮,所以這次做好了之後先自己來徹底的DEBUG一番,也因此才會隔了這麼久才發布... :oops:



頭像
Kagami
 
文章: 256
註冊時間: 2005-07-01 2:38 pm
來自: HongKong    

文章Kagami » 2005-07-03 2:53 pm

可以做到合到的裝備是商店買到的?
因為如果合到是寶物,打寶就沒有意思了




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

文章ETERNAL » 2005-07-03 3:32 pm

涅魂 寫:謝謝ET大的誇獎啊 :lol:
這次的外掛做得有點久,主要是有兩個地方困擾我許久....
第一點就是Special Synthesizer System ,這邊光是要如何對應成分的先後順序就花了我不少時間.... :oops:
第二點就是鑒於前幾次發表的外掛BUG層出不窮,所以這次做好了之後先自己來徹底的DEBUG一番,也因此才會隔了這麼久才發布... :oops:


這個外掛很多人想要,我自己也很想要
找時間這邊也裝上去用用看 :P



1223334444
 
文章: 96
註冊時間: 2005-04-19 12:23 am

文章1223334444 » 2005-07-03 8:58 pm

2.Random Synthesizer System
隨機的合成系統,取出編號小於所有合成物品的編號加起來後除以3再乘上1.1的同類非貴重品的裝備。

文中提到的貴重品是怎麼判斷的??
指得是商店買不到的嗎?



1223334444
 
文章: 96
註冊時間: 2005-04-19 12:23 am

文章1223334444 » 2005-07-03 9:26 pm

合出亞克鐵鎚...看來不是指商店買不到的




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-07-03 9:38 pm

嗯?您確定是用隨機合成嗎?
理論上因該是不會合出亞克鐵鎚的.... :roll:



1223334444
 
文章: 96
註冊時間: 2005-04-19 12:23 am

文章1223334444 » 2005-07-03 9:48 pm

拍謝 問題很多...
依普通合成的說明...也就是兩個爛裝備也可能合出很好的東西

假設使用2個道具(因為道具編號比較後面)合出來就有可能合到武器編號比較後面的東西
例如用2個50回復劑(預設編號223) 就有可能合出編號在223以後的武器例如菜刀編號255



1223334444
 
文章: 96
註冊時間: 2005-04-19 12:23 am

文章1223334444 » 2005-07-03 9:55 pm

亞克鐵鎚是普通合成的~




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-07-03 9:55 pm

1223334444 寫:拍謝 問題很多...
依普通合成的說明...也就是兩個爛裝備也可能合出很好的東西

假設使用2個道具(因為道具編號比較後面)合出來就有可能合到武器編號比較後面的東西
例如用2個50回復劑(預設編號223) 就有可能合出編號在223以後的武器例如菜刀編號255

依照普通合成中的設定的話,兩個50恢復劑不可能會合出編號255的菜刀....,兩個(或多個)同樣的物品合成的話,合出來的物品編號範圍只會在合成物品的+-5之間而已,不會取到編號255的菜刀..
不過這種以低等級高編號的道具來合高等級低編號的方法我倒是沒想到....
先讓我想想對策吧 :oops:




涅魂
 
文章: 4463
註冊時間: 2004-01-04 11:17 am
來自: Taiwan
性別: 男生

文章涅魂 » 2005-07-03 9:57 pm

1223334444 寫:亞克鐵鎚是普通合成的~

在三種合成之中只有[隨機合成]是不會取到貴重品的,因為隨機合成會讓貴重品的入手方式變得非常的簡單....所以才加上這個限制.. :wink:




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

文章ETERNAL » 2005-07-03 10:05 pm

涅魂 寫:
1223334444 寫:拍謝 問題很多...
依普通合成的說明...也就是兩個爛裝備也可能合出很好的東西

假設使用2個道具(因為道具編號比較後面)合出來就有可能合到武器編號比較後面的東西
例如用2個50回復劑(預設編號223) 就有可能合出編號在223以後的武器例如菜刀編號255

依照普通合成中的設定的話,兩個50恢復劑不可能會合出編號255的菜刀....,兩個(或多個)同樣的物品合成的話,合出來的物品編號範圍只會在合成物品的+-5之間而已,不會取到編號255的菜刀..
不過這種以低等級高編號的道具來合高等級低編號的方法我倒是沒想到....
先讓我想想對策吧 :oops:


如果改用LV呢
每樣物品都有LV,而且不在商店內的貴重物LV都是0
這樣可以讓合成不會合到貴重物品



1223334444
 
文章: 96
註冊時間: 2005-04-19 12:23 am

文章1223334444 » 2005-07-03 10:17 pm

ETERNAL 寫:如果改用LV呢
每樣物品都有LV,而且不在商店內的貴重物LV都是0
這樣可以讓合成不會合到貴重物品

用LV似乎是個不錯的方法喔~



kens860807
 
文章: 29
註冊時間: 2005-03-25 5:40 am

文章kens860807 » 2005-07-04 6:53 am

我有1個問題,想請問一下

文中提及
syn_result=23
syn_ele1=1
syn_ele2=1
syn_ele3=2
syn_ele4=42
syn_ele5=55

是否1~5的結果一定要由小至大?

是不是不能設為

syn_result=23
syn_ele1=55
syn_ele2=1
syn_ele3=42
syn_ele4=1
syn_ele5=2


因為我看到上文中,特別合成的方法是使用
ele1=$_POST[][0] AND ele2=$_POST[][1]
來進行查詢,那麼ele1~5應該要由小至大,是嗎??


還有syn_view方面查詢
$temp_str=$DB_site->query("select d_id,d_df,d_mdf,d_agl,d_mstr,d_magl,d_msmart,d_money,d_name,d_at,d_mat from wog_df where d_id in ($pack[0])");

沒有加ORDER BY d_id,可能應該是預設使用d_id排列


只是一些個人意見....


不過大大還是很強.....合成系統也能寫出來....很讚



下一頁

回到 外掛區

誰在線上

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