[閒聊] 複製物儲存系統...
要儲存複製物品常見的小問題:
當clone /obj/sword.c
(假設此物件有效id是sword)
那麼call sword->set("name","frist")
再clone /obj/sword.c
再call sword->set("name","second")
如何才能將同一檔案設定儲存而不隨著斷線消失呢?
比較簡單的寫法就是在玩家身上增加一個變數作儲存與載入...
之後你只要寫"一個"武器/防具(等物件)檔案就可以了...
然後讓系統自行去隨機決定能力, 不用毎個武器防具都要寫~
例如: 小貓世界 無名劍, 每次去鑑定都可以得到不同能力值~
(不過它是不是這樣寫我就不曉得了)
另外若讓物件多個hear_beat()...
那麼就是可以裝載和餵食就可以進化的寵物~
(類似希望online的寵物eq)
假設檔名save_random.c
放在/feature/save_random.c
在/std/char.c增加下列這一行:
inherbit /feature/save_random.c;
/* save_random.c */
mapping save_eq;
static string *str=({});
void clean_up_value(){ save_eq = 0; }
void save_random_value()
{
int i,count;
object *all_inv;
string save_string;
all_inv = all_inventory();
save_eq = allocate_mapping(sizeof(all_inv));
for(i=0; i<sizeof(all_inv); i++){
if( !all_inv[i]->query_autoload() &&
!all_inv[i]->query_temp("save_random")
) continue;
save_string = explode(file_name(all_inv[i]), "#")[0];
while(!undefinedp(save_eq[save_string]))
save_string = base_name(all_inv[i]) + "#" + (++
count);
save_eq[save_string] = all_inv[i]->query_entire_dbase();
count = 0;
}
return;
}
void restore_random_value()
{
mixed save_value;
int i, count;
string load_string;
mapping map;
object *all_inv = all_inventory();
str = allocate(sizeof(all_inv));
if( !mapp(save_eq) || !save_eq ) return;
for(i=0; i<sizeof(all_inv); i++){
load_string = base_name(all_inv[i]);
while( member_array(load_string, str)!=-1 )
load_string = base_name(all_inv[i]) + "#" + (++
count);
str[i] = load_string;
count = 0;
}
for( i=0; i<sizeof(all_inv); i++ ){
if( undefinedp(map = save_eq[str[i]]) ) continue;
// 只允許某些可以載入
if( save_value = map["name"] )
all_inv[i]->set("name", save_value);
if( save_value = map["id"] )
all_inv[i]->set_id(save_value);
if( save_value = map["long"] )
all_inv[i]->set("long", save_value);
if( save_value = map["weapon_prop"] )
all_inv[i]->set("weapon_prop", save_value);
if( save_value = map["armor_prop"] )
all_inv[i]->set("armor_prop", save_value);
}
clean_up_value();
return;
}
其實也很簡單 主要是有沒有想到的問題...
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 203.67.116.160
推
11/20 01:21, , 1F
11/20 01:21, 1F
→
11/20 01:23, , 2F
11/20 01:23, 2F
→
11/20 01:24, , 3F
11/20 01:24, 3F
→
11/20 01:24, , 4F
11/20 01:24, 4F
→
11/20 01:25, , 5F
11/20 01:25, 5F
這方法當年某wiz也是提過, 方法都是可以...
只是放在玩家物件上, 可以隨著玩家一起save~
推
11/20 02:41, , 6F
11/20 02:41, 6F
→
11/20 08:18, , 7F
11/20 08:18, 7F
→
11/20 08:19, , 8F
11/20 08:19, 8F
沒有這個問題拉~
我用個簡單的方法把它解決, L大您快速掃一下程式碼便知~
※ 編輯: taily 來自: 211.74.210.172 (11/20 17:04)
推
11/20 18:33, , 9F
11/20 18:33, 9F
→
11/20 18:33, , 10F
11/20 18:33, 10F
yes同意k大, 若要用virtuald另外儲存比較便利且快速...
※ 編輯: taily 來自: 211.74.209.223 (11/20 19:21)
討論串 (同標題文章)
完整討論串 (本文為第 1 之 2 篇):
3
10
mud 近期熱門文章
PTT遊戲區 即時熱門文章