UID294571
帖子
精華
主題
積分15876
現金
積極性
威望
違規
熱心
推廣次數
閱讀權限100
註冊時間2010-12-1
在線時間 小時
最後登錄1970-1-1
TA的每日心情 | 慵懶 2022-3-25 08:36 PM |
---|
簽到天數: 868 天 連續簽到: 1 天 [LV.10]以壇為家III
|
發表於 2017-3-19 22:33:50
|
顯示全部樓層
本帖最後由 vincent800307 於 2017-3-19 10:36 PM 編輯
我的版本是Hercules 程式碼可能會有部分名稱、註解不一樣。
@script.c
BUILDIN(getitem)
箱子等隨機的東西,flag會是1,- // <item id>
- nameid = script_getnum(st, 2);
- //Violet Box, Blue Box, etc - random item pick
- if( nameid < 0 ) {
- nameid = -nameid;
- flag = 1;
- }
複製代碼 flag為true時,會呼叫isidentified2,
如果只是單純的要把"所有箱子"開出來的東西變成未鑑定的話,
把else以後改成
it.identify = 0; - ...
- ...
- ...
- if(!flag)
- it.identify=1;
- else
- it.identify=itemdb->isidentified2(item_data);
複製代碼 尋找 isidentified2 其定義在 itemdb.c- itemdb->isidentified2 = itemdb_isidentified2;
複製代碼 最後找到itemdb_isidentified2這個功能,- /* same as itemdb_isidentified but without a lookup */
- int itemdb_isidentified2(struct item_data *data) {
- nullpo_ret(data);
- switch (data->type) {
- case IT_WEAPON:
- case IT_ARMOR:
- case IT_PETARMOR:
- return 0;
- default:
- return 1;
- }
- }
複製代碼 如果你會基本的修改,那應該說到這你就會了。
看你的問題,應該是最後這個itemdb_isidentified2裡面的switch被修改過了
如果這個函示是正常的,那就表示你DB裡面的設定有誤,或者沒有對應到這裡的分類。 |
|