mud 板


LINE

看板 mud  RSS
※ 引述《happyhero (2010)》之铭言: : Es2lib的物件生成 有种以虚拟物件的方式 : 例如有个档案是 /std/room.c : 可以在程式码里用 : obj=new("/std/room.c"); : 来生成一个新的物件 : 然後档名会变成/std/room#33 : /std/room#76 : /std/room#177 : .... : (都是原档名後面增加#数字) : 想请问虚拟物件的档名是如何产生? : (#後面的数字是乱数决定或是有规律?) : 有办法改变或指定虚拟物件生成後的档名吗? : 想说如果可以的话 : 就可以方便管理整个都用虚拟物件生成的区域 : 最近在写类似OLG副本的东西 : 例如某个玩家happyhero开启了副本 : 那那个区域房间名就会以 /std/room/happyhero/0/0/0 : /std/room/happyhero/0/1/0 : 後面数字表示三维空间(x,y,z) 0/0/0=第0层空间的(0,0) : 这样还可以做出无限层的地下城冒险区域 这个一般建议是不要这样写,比方说单人副本,省时省力 的方法就是「全部运作在同一个房间」。 例如该房间平常长底下这样.. 地下城--一楼 这里可看到一条长长的走道,走道上十分的阴暗,不远处 似乎有着水滴的声音。 明显出口有: north, south. 则当你往 north 走时 set("pre_exit_func/north","check_north"); object tmp_room; int check_north() { object ppl=this_player(); int *pos=([]); pos=query("pos"); // 读取房间座标 ({x,y}) 做一下必要的判断如战斗中,etc...时不能走动; if(!tmp_room) tmp_room=find_object_or_load(TMP_ROOM); // 自设一个房间当 tmp_room // 往北走 => y+1 set("pos",({pos[0],pos[1]+1}); set("long",set_room_long()); // 重设房间 long set("exits",set_room_exits()); // 重设房间出口 ppl->move(tmp_room); // 先把玩家移往 tmp_room ppl->move_player(this_object()); // 瞬间再把玩家移回来 clone_mob(); // 做一下房间怪物的随机召唤 return 1; } 这样就可以模拟一个玩家在一个「空间」里面的走动跟战斗 ,set_room_long 等函数就看你怎麽写。 这样当 n 位玩家同时在解这个「单人任务」时,就可以每个 玩家给一个房间来跑(tmp_room 则是大家共通的),而假设是 n 人组队型的任务,就限制不能脱队即可。 而这样的房间也可以事先写好,例如预设同一时间只能 10个 团体(包含单人)解任务,那就一次写好十个房间就可以了,这 样玩家在解任务时会变更的就只有物件资料(记忆体资料),档 案的读写部份就会比较少。 至於档案部份一般是 base_name 跟 file_name 的区别,後者 或许你可以找找 simul_efun 区是不是有该函数,那说不定就 能找到後头的编号是怎麽编的。 (印象中是物件生成流水号) --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 223.142.203.159
1F:推 happyhero:全部运作在同一个房间的做法不错 12/28 20:20
2F:→ happyhero:这样就只剩遇敌战斗的问题了 限制有mob在时不能逃跑 12/28 20:21
3F:→ happyhero:或是看不到不同坐标的生物 12/28 20:23
一般来说有一种做法并不需要知道 file_name 所加的流水号。 例如你因为需要而得在同一时间 new 出 n 个物件,那麽你可以 做个 control_room object cr,new_room; int *pos=([]); string new_pos; if(!cr) cr=find_object_or_load(CONTROL_ROOM); j=sizeof_rooms; // 需 new 出的 n 个房间 for(i=0;i<j;i++) { new_room=new(room); // new 出新的房间 pos=get_pos(i); // 取出第 i 个房间的座标 new_pos=implode(pos,"_"); // 把座标变成 a_b_c 这种字串 cr->set("new_pos",new_room); } 这样你要读取座标 (a,b,c) 的房间时 this_room = (object)cr->query(""+a+"_"+b+"_"+c); ※ 编辑: laechan 来自: 122.117.7.33 (12/28 21:00)
4F:推 happyhero:XD...我刚才在写control room的方式 这里就出现了 12/28 21:52
5F:→ happyhero:不过刚事先用单向道做测试 所以很单纯记录1->2->3->4... 12/28 21:53







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灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP