mud 板


LINE

看板 mud  RSS
要储存复制物品常见的小问题: 当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
1F:推 kyoe:做一个 file 来 save & restore object data in file mapping 11/20 01:21
2F:→ kyoe:adm/daemons/itemd.c -> save_item(object ob) -> 11/20 01:23
3F:→ kyoe:itemd save_object("/data/itemd") 11/20 01:24
4F:→ kyoe:adm/daemons/itemd.c -> restore_item(object ob) -> 11/20 01:24
5F:→ kyoe:将存在itemd内的obj data copy 回obj就好了 11/20 01:25
这方法当年某wiz也是提过, 方法都是可以... 只是放在玩家物件上, 可以随着玩家一起save~
6F:推 QQmother:原po luka 0..0 11/20 02:41
7F:→ laechan:参数设在玩家身上的缺点就是玩家拿到同档名的新物品,带着 11/20 08:18
8F:→ laechan:它 quit 再 login, 该物就会变认主物 11/20 08:19
没有这个问题拉~ 我用个简单的方法把它解决, L大您快速扫一下程式码便知~ ※ 编辑: taily 来自: 211.74.210.172 (11/20 17:04)
9F:推 kyoe:嗯嗯..因我的itemd是配合virtuald使用的, 用另外的daemon比 11/20 18:33
10F:→ kyoe:较方便 11/20 18:33
yes同意k大, 若要用virtuald另外储存比较便利且快速... ※ 编辑: taily 来自: 211.74.209.223 (11/20 19:21)







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Boy-Girl站内搜寻

TOP