[外掛](ALL)裝備特性化.改
發表於 : 2006-01-22 5:20 pm
- 代碼: 選擇全部
//=====================================================
// 外掛名稱:裝備特性化.改
// 作者: 涅魂
// 創作時間:2006.01.22
//=====================================================
今天突然靈機一動就寫出這篇了...|||
與先前的裝備特性化不同的地方如下列
1.改以資料庫來儲存特性化的資料,大大增加程式碼的可維護性
2.欄位以varchar儲存,使得特性化的彈性提升(可以使用*/或+-)
3.提供一個特別的欄位sk_plus,透過這個欄位可以實現回合變化的特性(尚未實驗過,若有BUG麻煩幫忙說一下^^||)
使用方式:
將欲加入特性的裝備的d_att欄位設為指定特性的sk_id即可
wog_skill內容設定方式 寫:假定要新增一筆id為5,名稱為"測試特性",效能為物理攻擊力加倍並加上每回合攻擊力增加1的暫時效果,則內容設定方式如下
sk_id = 5
sk_name = 測試特性
sk_at = *2
sk_plus = \$p[p_at]+=1;
※開始安裝前請記得將舊版的裝備特性化移除,否則可能會出現錯誤!
##########開始安裝##########
※建立wog_skill資料表
請在您的資料庫中輸入下列語法 寫:CREATE TABLE `wog_skill` (
`sk_id` int(10) unsigned NOT NULL auto_increment,
`sk_name` varchar(10) NOT NULL default '',
`sk_at` varchar(10) NOT NULL default '',
`sk_mat` varchar(10) NOT NULL default '',
`sk_df` varchar(10) NOT NULL default '',
`sk_mdf` varchar(10) NOT NULL default '',
`sk_agl` varchar(10) NOT NULL default '',
`sk_m_at` varchar(10) NOT NULL default '',
`sk_m_mat` varchar(10) NOT NULL default '',
`sk_m_df` varchar(10) NOT NULL default '',
`sk_m_mdf` varchar(10) NOT NULL default '',
`sk_m_agl` varchar(10) NOT NULL default '',
`sk_hp` varchar(10) NOT NULL default '',
`sk_exp` varchar(10) NOT NULL default '0',
`sk_money` varchar(10) NOT NULL default '',
`sk_mlv` mediumint(6) unsigned NOT NULL default '0',
`sk_plus` text NOT NULL,
PRIMARY KEY (`sk_id`)
) TYPE=MyISAM AUTO_INCREMENT=0 ;
※建立位於wog_df中的d_att欄位
請在您的資料庫中輸入下列語法 寫:ALTER TABLE `wog_df` ADD `d_att` SMALLINT( 3 ) UNSIGNED DEFAULT '0' NOT NULL ;
※為防止取值時出現錯誤,請自行在wog_df中新增一筆d_id=0且d_att=0的資料
開啟檔案wog/wog_class.php 寫:Find
- 代碼: 選擇全部
function fight_count($user_id,$p,$m,$cp=0)
replace
- 代碼: 選擇全部
function fight_count($user_id,$p,$m,[color=red]$att="",$cp=0[/color])
In fight_count Function
Find
- 代碼: 選擇全部
//######### pact ##########(己方攻擊開始)
After add
- 代碼: 選擇全部
[color=red] if(!empty($att["plus"]))
{
eval($att["plus"].";");
}
if(!empty($att["hp"]))
{
eval("\$p[p_hp]=$p[p_hp]$att[hp];");
}[/color]
Find
- 代碼: 選擇全部
$money=round($money);
After add
- 代碼: 選擇全部
[color=red] if(is_array($att))
{
eval("\$exp=\$exp$att[exp];");
eval("\$money=\$money$att[money];");
}[/color]
開啟檔案wog/class/wog_fight_select.php 寫:In fire Function
Find
- 代碼: 選擇全部
$pet=$DB_site->query_first($sql);
After add
- 代碼: 選擇全部
[color=red] //D_ATT_START
$att=array("at" => "","mat" => "","df" => "","mdf" => "","agl" => "","m_at" => "","m_mat" => "","m_df" => "","m_mdf" => "","m_agl" => "","sk_hp" => "","money" => "","exp" => "","plus" => "");
$d=$DB_site->query_first("select a.d_att as a,b.d_att as body,c.d_att as head,d.d_att as hand,e.d_att as foot,f.d_att as item
from wog_player g left join wog_df a on g.a_id=a.d_id
left join wog_df b on g.d_body_id=b.d_id
left join wog_df c on g.d_head_id=c.d_id
left join wog_df d on g.d_hand_id=d.d_id
left join wog_df e on g.d_foot_id=e.d_id
left join wog_df f on g.d_item_id=f.d_id
where g.p_id=".$user_id." ");
for($at=0;$at<6;$at++)
{
if($d[$at]!=0)
{
$get=$DB_site->query_first("SELECT sk_at,sk_mat,sk_df,sk_mdf,sk_agl,sk_m_at,sk_m_mat,sk_m_df,sk_m_mdf,sk_m_agl,sk_hp,sk_exp,sk_money,sk_plus FROM wog_skill WHERE sk_id=$d[$at]");
$att["at"]=(!empty($get["sk_at"]))?$get["sk_at"]:$att["at"];
$att["mat"]=(!empty($get["sk_mat"]))?$get["sk_mat"]:$att["mat"];
$att["df"]=(!empty($get["sk_df"]))?$get["sk_df"]:$att["df"];
$att["mdf"]=(!empty($get["sk_mdf"]))?$get["sk_mdf"]:$att["mdf"];
$att["agl"]=(!empty($get["sk_agl"]))?$get["sk_agl"]:$att["agl"];
$att["m_at"]=(!empty($get["sk_m_at"]))?$get["sk_m_at"]:$att["m_at"];
$att["m_mat"]=(!empty($get["sk_m_mat"]))?$get["sk_m_mat"]:$att["m_mat"];
$att["m_df"]=(!empty($get["sk_m_df"]))?$get["sk_m_df"]:$att["m_df"];
$att["m_mdf"]=(!empty($get["sk_m_mdf"]))?$get["sk_m_mdf"]:$att["m_mdf"];
$att["m_agl"]=(!empty($get["sk_m_agl"]))?$get["sk_m_agl"]:$att["m_agl"];
$att["hp"]=(!empty($get["sk_hp"]))?$get["sk_hp"]:$att["hp"];
$att["exp"]=(!empty($get["sk_exp"]))?$get["sk_exp"]:$att["exp"];
$att["money"]=(!empty($get["sk_money"]))?$get["sk_money"]:$att["money"];
$att["plus"]=(!empty($get["sk_plus"]))?$get["sk_plus"]:$att["plus"];
}
}
eval("\$p[p_at]=\$p[p_at]".$att["at"].";");
eval("\$p[p_mat]=\$p[p_mat]".$att["mat"].";");
eval("\$p[p_df]=\$p[p_df]".$att["df"].";");
eval("\$p[p_mdf]=\$p[p_mdf]".$att["mdf"].";");
eval("\$p[p_agl]=\$p[p_agl]".$att["agl"].";");
eval("\$m[m_at]=\$m[m_at]".$att["m_at"].";");
eval("\$m[m_mat]=\$m[m_mat]".$att["m_mat"].";");
eval("\$m[m_df]=\$m[m_df]".$att["m_df"].";");
eval("\$m[m_mdf]=\$m[m_mdf]".$att["m_mdf"].";");
eval("\$m[m_agl]=\$m[m_agl]".$att["m_agl"].";");
if($p["p_at"]<=0){$p["p_at"]=1;}
if($p["p_mat"]<=0){$p["p_mat"]=1;}
if($p["p_df"]<=0){$p["p_df"]=1;}
if($p["p_mdf"]<=0){$p["p_mdf"]=1;}
if($p["p_agl"]<=0){$p["p_agl"]=1;}
if($m["m_at"]<=0){$m["m_at"]=1;}
if($m["m_mat"]<=0){$m["m_mat"]=1;}
if($m["m_df"]<=0){$m["m_df"]=1;}
if($m["m_mdf"]<=0){$m["m_mdf"]=1;}
if($m["m_agl"]<=0){$m["m_agl"]=1;}
//D_ATT END[/color]
Find
- 代碼: 選擇全部
$wogclass->fight_count($user_id,$p,$m);
replace
- 代碼: 選擇全部
$wogclass->fight_count($user_id,$p,$m[color=red],$att[/color]);
In fire_cp Function
Find
- 代碼: 選擇全部
$cp=$wogclass->fight_count($user_id,$p,$m,-$wog_arry["cp_mmoney"]);
replace
- 代碼: 選擇全部
$cp=$wogclass->fight_count($user_id,$p,$m,[color=red]"",-$wog_arry["cp_mmoney"][/color]);
完畢~有問題請提出。