UID194640
帖子
精華
主題
積分16180
現金
積極性
威望
違規
熱心
推廣次數
閱讀權限30
註冊時間2009-9-5
在線時間 小時
最後登錄1970-1-1
TA的每日心情 | 開心 2020-10-27 09:10 PM |
---|
簽到天數: 2555 天 連續簽到: 1 天 [LV.Master]伴壇終老
|
本帖最後由 he01204046 於 2011-5-13 02:33 PM 編輯
新版的3CEAM老早都把bonus bMatk,n;這一項功能拿掉了...
想讓他回來並不困難,來~按照教學一步一步教導。
一、要新增這個,先要知道它的對應編號,打開DB中的const.txt
然後搜尋bAtkRange 你會找到 bAtkRange 1000
bAtkEle 1001
bDefEle 1002
bCastrate 1003
bMaxHPrate 1004
bMaxSPrate 1005
bUseSPrate 1006
bAddEle 1007
這一些的資料,這就是物品效果對應的編號
在bAtkRange 1000的上面新增
bMatk 999
存檔,完成第一步驟。
二、開啟源碼使用CTRL+F搜尋,將搜尋方式改為 整個方案 然後隨意搜尋物品效果後面的編號,在這裡我搜尋1018
接下來就會看到map.h的檔案內有 SP_ATTACKRANGE=1000, SP_ATKELE,SP_DEFELE, // 1000-1002
SP_CASTRATE, SP_MAXHPRATE, SP_MAXSPRATE, SP_SPRATE, // 1003-1006
SP_ADDELE, SP_ADDRACE, SP_ADDSIZE, SP_SUBELE, SP_SUBRACE, // 1007-1011
SP_ADDEFF, SP_RESEFF, // 1012-1013
SP_BASE_ATK,SP_ASPD_RATE,SP_HP_RECOV_RATE,SP_SP_RECOV_RATE,SP_SPEED_RATE, // 1014-1018
bingo~找到了,然後在SP_ATTACKRANGE=1000,的上面或前面新增SP_BASE_MAGIC=999,
完成如下 SP_BASE_MAGIC=999,SP_ATTACKRANGE=1000, SP_ATKELE,SP_DEFELE, // 1000-1002
SP_CASTRATE, SP_MAXHPRATE, SP_MAXSPRATE, SP_SPRATE, // 1003-1006
SP_ADDELE, SP_ADDRACE, SP_ADDSIZE, SP_SUBELE, SP_SUBRACE, // 1007-1011
SP_ADDEFF, SP_RESEFF, // 1012-1013
SP_BASE_ATK,SP_ASPD_RATE,SP_HP_RECOV_RATE,SP_SP_RECOV_RATE,SP_SPEED_RATE, // 1014-1018
三、再次開啟搜尋,搜尋SP_MATK_RATE找到pc.c裡面的 case SP_MATK_RATE:
if(sd->state.lr_flag != 2)
sd->matk_rate += val;
break;
ok,我們依樣畫葫蘆把他複製一份,貼在上面,並將SP_MATK_RATE改為SP_BASE_MAGIC以及matk_rate改為matk_base case SP_BASE_MAGIC:
if(sd->state.lr_flag != 2)
sd->matk_base += val;
break;
這時候matk_base應該會出現報錯,說沒有定義,現在開啟pc.h檔案後,搜尋matk_rate,會找到 int castrate,delayrate,hprate,sprate,dsprate;
int hprecov_rate,sprecov_rate;
int matk_rate;
int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate;
將紅色的部分複製一份,並貼到上方,改為下面藍色的 int castrate,delayrate,hprate,sprate,dsprate;
int hprecov_rate,sprecov_rate;
int matk_base; //定義魔法傷害增加
int matk_rate;
int critical_rate,hit_rate,flee_rate,flee2_rate,def_rate,def2_rate,mdef_rate,mdef2_rate;
這邊就是變數的定義,定義完畢後,剛剛的報錯就消失了~
然後搜尋matk_rate找到status.c裡面的 sd->dsprate = 100;
sd->hprecov_rate = 100;
sd->sprecov_rate = 100;
sd->matk_rate = 100;
看到紅色的那一段,一樣複製一份起來,貼在上方後,改成下面的藍色這樣 sd->dsprate = 100;
sd->hprecov_rate = 100;
sd->sprecov_rate = 100;
sd->matk_base = 0; //預設值
sd->matk_rate = 100;
這邊的設定是當有使用該效果的裝備,卸除後,將所增加的魔法傷害恢復為0,不改的話,當你穿脫一次裝備,魔法傷害就會累加一次唷~
改完後,同樣的檔案繼續搜尋matk_rate找到- if( sd->matk_rate < 0 )
- sd->matk_rate = 0;
- if( sd->matk_rate != 100 )
- {
- status->matk_max = status->matk_max * sd->matk_rate / 100;
- status->matk_min = status->matk_min * sd->matk_rate / 100;
- }
複製代碼 在下面新增如下方藍色的 if( sd->matk_rate < 0 )
sd->matk_rate = 0;
if( sd->matk_rate != 100 )
{
status->matk_max = status->matk_max * sd->matk_rate / 100;
status->matk_min = status->matk_min * sd->matk_rate / 100;
}
status->matk_max = status->matk_max + sd->matk_base; //配合bMatk
status->matk_min = status->matk_min + sd->matk_base; //配合bMatk
這邊就是將剛剛的變數實際的加到人物欄上面顯示的最小和最大法術傷害上
同個檔案繼續搜尋matk_rate找到 if( bl->type&BL_PC && sd->matk_rate != 100 )
{
//Bonuses from previous matk
status->matk_max = status->matk_max * sd->matk_rate/100;
status->matk_min = status->matk_min * sd->matk_rate/100;
}
同樣的畫葫蘆~改為下面藍色的這樣 if( bl->type&BL_PC && sd->matk_rate != 100 )
{
//Bonuses from previous matk
status->matk_max = status->matk_max * sd->matk_rate/100;
status->matk_min = status->matk_min * sd->matk_rate/100;
}
status->matk_max = status->matk_max + sd->matk_base;//配合bMatk
status->matk_min = status->matk_min + sd->matk_base;//配合bMatk
OK,完成。 |
評分
-
查看全部評分
|