作者laechan (小太保)
看板mud_sanc
標題Re: [wizs] 讀取資料
時間Fri Jul 1 12:08:17 2011
※ 引述《justinj (黑旋風)》之銘言:
: 問一個問題 某檔案裡面的資料有沒有法子讀到
: 例如 我要看某玩家的sword值及其熟練度...[要看熟練度的值]
: 你技能中的基本劍法(Sword)值是 5367/222.[指222]
: 或者是
: inherit MONSTER;
: .
: .
: static int kk=0;
: .
: .
: 我要看kk現在的值.....
物件的設計概念之一,就是為了隱匿所含的資料。
你要讀取物件內的資料,就要為這個物件建立「方法」,例如..
static int kk=5;
int query_kk() <= 這個就叫做方法的建立
{
return kk;
}
上面的意思就是說,如果這個物件你不為它寫讀取 kk 值的函數
,你就讀不到 kk 這個值。
物件的設計概念之二,就是即使你能 more 到物件檔案,你也不
見得知道它隱含的數值。例如..
// /open/xxx.c
inherit ROOM;
mapping ob_data=([]);
void save_room()
{
save_object("/adm/special/xxx");
}
void restore_room()
{
restore_object("/adm/special/xxx");
}
上面的意思就是說,你 more /open/xxx.c 看到的就是上面的內
容,但是如果我鎖住你讀取 /adm/special/xxx.o 這個檔案的內
容,你就不會知道 xxx.c 究竟儲存了什麼資料在 data 裡頭。
(因為 xxx.c 並沒有建立讀取 ob_data 這個資料的方法)
換言之,你可以想像玩家資料檔裡頭有個參數儲存熟練度,它的
儲存格式大致就是..
mapping improve=(["sword":215, "barefist":4978, ...]);
玩家下 skill 之所以看的到熟練度,就在於玩家物件檔有為熟練
度的讀取建立方法,沒記錯的話好像叫 query_isk() 吧。
講個題外話,如果你建立一個房間,然後把資料都存在名為
mapping data 的資料變數裡頭,那麼即使你不建立讀取data
的方法,data 裡頭的資料仍然可以被讀取。
因為幾乎所有的物件都有建立 "data" 這個資料錄的預設讀
取方法,叫做 query_ob_data()。
Belldandy.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.81.16.93
推 justinj :了解..... 07/01 12:45
推 justinj :另一個問題要怎麼解決....? 07/01 13:47
→ laechan :哪個問題 07/01 15:07