作者hlead (希多)
看板mud_sanc
标题[wizs] 小宝程式教学。
时间Sat Mar 27 10:14:04 2010
*如何在房间有储存特殊参数的地方(sd後也不会消失的那种):
int save_room()
{
save_object(base_name(this_object()));
return 1;
}
Laechan:进阶法师说道: int xxx() xxx 随便你定
Laechan:进阶法师说道: 那个不重要
Laechan:进阶法师说道: base_name(this_object()) 就是读出这个房间的 base_name
Laechan:进阶法师说道: 读出来的结果 = /u/n/norr/workroom
Laechan:进阶法师说道: 所以变成 save_object("/u/n/norr/workroom")
Laechan:进阶法师说道: 也就是说 save_object 里面接的就是路径加档名, 这个你要记
得
Laechan:进阶法师说道: 改成 save_object("/u/n/norr/savedata") 也可以的意思
Laechan:进阶法师说道: 一般如果叫 workroom.c 方便起见储存档就变 workroom.o 比较
容易判别
Laechan:进阶法师说道: save_object 的东西预设都是 .o 档
Laechan:进阶法师说道: 这时候 call here;save_room
Laechan:进阶法师说道: 你目录下就会出现 workroom.o
Laechan:进阶法师说道: 你会看到第二行是 data ([ ...
Laechan:进阶法师说道: data 就是物件的基本资料库名
Laechan:进阶法师说道: 几乎任何物件都有 data
Laechan:进阶法师说道: 像你熟知的 data["level"] data["name"]
Laechan:进阶法师说道: 这是存资料的部份
Laechan:进阶法师说道: 我再帮你加上读资料的部份
inherit ROOM;
void create()
{
::create();
seteuid(getuid(this_object()));
if( file_exists(base_name(this_object())+".o") )
restore_object( base_name(this_object()) );
else
{
set("light",1);
set("no_longsee",1);
Laechan:进阶法师说道: 它的意思就是
Laechan:进阶法师说道: 如果有看到 workroom.o 的话就 restore 它
Laechan:进阶法师说道: 若没看到才做你原先的 set
Laechan:进阶法师说道: 从最里面的 () 开始往外拆, file_exists 就是若档案有存在
Laechan:进阶法师说道: restore 它, 就市回存
Laechan:进阶法师说道: restore_object ( base_name(this_object()) );
Laechan:进阶法师说道: save_object/restore_object 就是相对的
Laechan:进阶法师说道: 现在我新增一个 south 出口
Laechan:进阶法师说道: 这是用 call 设的
Laechan:进阶法师说道: 然後 call here;save_room
Laechan:进阶法师说道: 然後 update here
Laechan:进阶法师说道: 现在 update here exits/south 的资料就会永存
Laechan:进阶法师说道: 再来你要注意频率问题
Laechan:进阶法师说道: 你可以用直觉知道天空城的家有做这个
Laechan:进阶法师说道: 假设你家里有存五个 ring
Laechan:进阶法师说道: take 一个出来就会变四个
Laechan:进阶法师说道: 这时一定会做 save_room
Laechan:进阶法师说道: save_room 就是重置 .o
Laechan:进阶法师说道: 它的做法就是干掉旧的 .o 重写新的 .o
Laechan:进阶法师说道: 所以假设玩家 5 take ring
Laechan:进阶法师说道: 所以用到 save_object/restore_object 时要注意呼叫频率
Laechan:进阶法师说道: 不然会很操硬碟
Laechan:进阶法师说道: 再来的话
Laechan:进阶法师说道: /d 下的目录无法使用这个
Laechan:进阶法师说道: 所以我大部份的东西才会放在我的目录
Laechan:进阶法师说道: 像天空城之家
新手盗贼说道: hmm 是/d不能读.o ?
Laechan:进阶法师说道: 不是, 应该是无法写 .o
Laechan:进阶法师说道: 懒得改了, 大概两年前发现的
Laechan:进阶法师说道: 现在应该有能力改啦XD
所以,重点就是,要提醒小宝改!哈哈~
--
Norr@Sanc
风,吹散了一切烦恼,只留下平静的思考。
雨,淋落了一切纷乱,只剩下无比的快乐。
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 219.87.182.179
※ 编辑: hlead 来自: 219.87.182.179 (03/27 10:34)