mud 板


LINE

看板 mud  RSS
这东西的大致构想是: 一、玩家可任意上架自己身上的东西到拍卖场。东西上架就会从 自己身上消失,而拍卖场仓库会新增一件该物品。东西若自 己下架就会回到自己身上。衍生设定大概就是上下架费用, 或是上下架间隔(CD时间)。 二、玩家有专属指令可浏览拍卖场上的所有物品,并可透过特定 的语法做筛选、过滤及排序。重点是让玩家可轻易找到自己 想要的东西。一般来说可能做成选单式会比较好,一行指令 式的则语法可能就要类似资料库语法。 三、在拍卖场上完成的交易,卖方可事後从拍卖场拿回$$。 相关指令不难写,比较关键的是物件资料储存的方式,假设某一 时间点,拍卖场共被上架了 1000 件物品,然後全部被储存到一 个 .o 档的话,那可能会太多。 这时直觉的想法是分散式储存,例如以武防的 type 做为分类的 依据,存成 sword.o、ring.o、... 等等,而物品就存成 obj.o ,虚拟物品就存成 vobj.o 之类的。 每一个 .o 档会有一个对应的 .c 档,然後再一个 auction.c去 做控制: inherit ROOM; mapping auction; void create() { object ob,*obs=([]); string f,*dirs=([]); seteuid(getuid(this_object())); auction=([]); dirs=get_dir(AUCTION_PATH); foreach(f in dirs) { if(strsrch(f,".o")) continue; f=substr(f,".c",""); ob=find_object_or_load(AUCTION_PATH+f); auction[f]=ob->load_auction(); } 这样比方 auction["sword"] 就载入了 sword.c 所储存的拍卖场上 所有 sword 类武器的资料,auction["ring"] 就载入了 ring.c 所 储存的拍卖场上所有 ring 类防具的资料。 则有了这样一个 auction mapping 资料,自然就能对它做各种的处 理。 然後当玩家上下架、或买卖了任一 type 的东西时,仅需处理两个东 西: 1.auction["某类物品"] 的即时资料 2.某类物品.c 下的对映资料 这两个可写成同一个函数来做处理即可,就不会遗漏,例如: 上架 auction_puton() 下架 auction_putoff() 卖出 auction_sell() 这样做有个好处,就是当拍卖场物品资料有变动时,它仅只会有一个 .o 档的资料有变动,而且这个 .o 档的资料不大。 接下来有几个眉角。 第一个是总合搜寻,一般来说: 一、每一笔 save 到 .o 的资料录越精简,整体的 .o 档越小,但是 搜寻起来越麻烦,因为肯定是要先将该资料录对映的物件先load 进来才能去读取该物件的资料(比方等级、属性、..) 二、每一笔 save 到 .o 的资料录越完整,那搜寻起来越省力,比方 要搜寻的东西在 auction mapping 资料里面其实就有了,那搜寻 起来自然就简单多了,但相对的,.o 档就得写很大。 根据均值定理,则必存在一种方法,使得 .o 档不会太大,要做搜寻 时亦不会太复杂,理想的情况是,唯有买卖成交的那一刻,物件才会 被实际 clone 出来给买方,其它时候则不应该 clone 出物品。 方法各家不同。 第二个是总合列表,一般来说,应避免玩家每一个下列表指令,就去 做复杂的 foreach 及字串累加及 print/more,这在拍卖场商品数量 极多的情况下会相当耗费资源。 虽然说现在主机效能都很好,mud 也支援多核心甚至多綫程,如果是 要方便撰写的话,操一下应该也无妨。 不过写法上还是要考虑一下。有一种做法是一开始就不允许总合式列 表,因为这基本上无意义可言,玩家固然有想看看拍卖场总共有哪些 东西的想法,但实际上真正呈现时,那其实是一个无意义的资料,资 料在做呈现时应该要有意义,例如说 > list sword 类物品: 35 件 ring 类物品: 123 件 . . . 玩家进一步搜寻时 > list -type sword 罗德斯长剑(lodoss sword) 1000 int 罗德斯长剑(lodoss sword) 980 int 勇猛的双倍力量的武士长剑(samurai sword) 11111111 int air+5 str+40 奥玛长剑(oma sword) 330 int . . . 才显示比较完整一点的内容。 这样的好处是 一、只允许分类搜寻时,就能期望每一分类的数量不会过多。 二、玩家自己本来就会依自己当下的需要做分类搜寻。 三、不同分类的东西互相做比较没有意义。 又例如它想针对有加 air 属性的东西做列表 > list -stat air 又例如它想针对有加 str 而且 20 以上,而且是 sword 类: > list -type sword -stat str >= 20 > list -stat str >=20 -type sword 那这个要怎麽做 sscanf 呢? 其实不难,因为 -stat、-type 都是固定 的,方法很多种,各家不同。 那以上的语法就是所谓的一行指令式,如果以资料库语法举例: > select sword from auction where stat/air >= 20 而所谓的索引式指的是 > search sword 类物品: 35 件 ring 类物品: 123 件 . . . 请输入搜寻条件: type = sword 罗德斯长剑(lodoss sword) 1000 int 罗德斯长剑(lodoss sword) 980 int 勇猛的双倍力量的武士长剑(samurai sword) 11111111 int air+5 str+40 奥玛长剑(oma sword) 330 int . . . 请输入搜寻条件: str >= 20 勇猛的双倍力量的武士长剑(samurai sword) 11111111 int air+5 str+40 . . . 索引式写法以这个例子来说可能比较不复杂,但缺点是它比较难以内建 的 more 去跑,要动一点手脚;不使用内建 more 可能会有字串堆叠过 长的问题。 第三个是要能够允许玩家把拍卖场当暂时的仓库。则一般可以想见,身 上东西太多、自己仓库的东西也太多的玩家,会把多余的东西暂时往拍 卖场丢的情况,这时常用的做法有几个 一、限制玩家上架物品的数量 二、上架收$$ 三、上架的东西有时间限制,时间一到卖不掉就回到卖方身上或   是卖方的仓库。不过这个不一定好做 四、限制只有哪些东西可上架 以三来说,例如我今天有两把武器,一把是商店随便就能买到的罗德斯 长剑,一把是打怪才会掉的勇猛的双倍力量的武士长剑,那限制玩家不 能上架罗德斯长剑是合理的,因为商店就有了,上拍卖场占空间干啥? 通常会看到一跟二一起实施的做法,再加个四也很合理,三则要看好不 好做以及可不可靠。 第四个是,既然叫拍卖场,玩家能否竞标同一项物品?例如允许卖方不 仅可订直购价,还可订底标价,後者允许多名买方玩家可出价竞标同一 件物品,最後价高者得之类的,但这个同样牵涉到当买方得标但不在线 上时的得标物品处理方式,一般有三种 一、不允许竞标,只允许直购,那买到的当下就买到自然没後续问题。 二、得标的物品「暂时寄放於拍卖场」,等得标者上线领取 三、得标的物品「直接寄到玩家仓库」,得标者上线再去自己仓库领取 通常初期先求有再求好的情况下用一比较省事,或者多写一个二也不难 ,得标商品只要加设两个参数即可: auction["物品id"]["buyer"]="得标者的id"; auciton["物品id"]["already_sell"]=1; 有 already_sell 标记的物品就不会出现於任何搜寻,也无法再被下架 及购买,只有 buyer 可领取即可。 以上一点分享。sanc 应该会做,我们基本上 ready 了,玩家可打到未 监定防具(类似 D3 的?武防),监定後其相关素质才会跑出来,所以纵 使打到同一件武防,监定的结果也会各不相同,这时就有上拍卖场的价 值。 > searchobj snake arm 高气力完整无瑕坚固的 蛇王臂甲(snake arm) 高气劲完整的 蛇王臂甲(snake arm) 完整的 灵蛇臂甲(snake arm) 高魔力完整无瑕坚固的 蛇纹护臂(snake arm) 坚固的 灵蛇臂甲(snake arm) 蛇纹护臂(snake arm) 高力体完整无瑕坚固的 灵蛇臂甲(snake arm) 高魔力的 蛇纹护臂(snake arm) 高气劲的 灵蛇臂甲(snake arm) 可能监定到高魔力的 蛇纹护臂(snake arm)的是战士,它不需要这东西 ,这时就可把这东西上拍卖场,并从拍卖场挑选有没有加很多力量的。 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 114.33.66.104 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud/M.1628494688.A.C41.html ※ 编辑: laechan (114.33.66.104 台湾), 08/09/2021 15:41:26
1F:推 tsetsethatha: 感谢laechan大的文章~ 08/09 21:33
2F:推 roujuu : 请教一下,最後的「> searchobj snake arm」,是放 08/09 21:45
3F:→ roujuu : 在拍卖场内的物品,必须由有监定能力的玩家角色,才 08/09 21:46
4F:→ roujuu : 能分辨出每一个拍卖场内的snake arm每一个加减数值 08/09 21:48
5F:→ roujuu : 的不同吗?而玩家角色监定能力值的不同,例如像从0~ 08/09 21:48
6F:→ roujuu : 100,监定能力最低值为0,最高值为100,snake arm的 08/09 21:50
7F:→ roujuu : 加减数值都不同,而且例如说监定能力值为50时,能看 08/09 21:51
8F:→ roujuu : 出部分的加减值,只有到监定能力值为100时,才能全 08/09 21:52
9F:→ roujuu : 部都看出来(有点像电脑单机版游戏Wizardry巫术的六 08/09 21:54
10F:→ roujuu : 到八代的设定方式)。 08/09 21:55
searchobj 是 sanc 本来就有的指令,它会去找线上所有 玩家身上 id 有 "snake arm" 的物品并列出来。 这类前身为未监定的防具的东西,玩家可用监定的指令去 做监定,监定出来的结果是全随机的,与 D3 做法一样。 searchobj 只是为演示每位玩家即便拥有相同的防具,实 际上它们都拥有不同的名称及素质。 当这类物品放到拍卖场时,做列表时我一般会顺便把它的 所加素质列出来,而玩家基本上可先透过列表时显示的名 称比方"双倍力量"去大概看出这东西力量加很多。 当然"双倍力量"也可以做为搜寻的关键字,其它像"无瑕" 、"完整"、"坚固"等也是。 以下为 sanc 的监定演示 > i 你身上带有 5 件物品。负重(316/3430) ============================================================ 未监定的防具(unidentified-armor)。 > identify unidentified-armor * ****** * * * * * ****** * ******* * * * ****** * ****** * * * * * * ****** * * ******* * * ****** * * * * * ****** ******* 请回答上面的数字:4365 "当─!"物品监定完成。 > i 你身上带有 5 件物品。负重(316/3430) ============================================================ 高体敏完整无瑕坚固的 圣殿长袍(sanc cloth)。 > view cloth -------------------------------------------------------- 高体敏完整无瑕坚固的 圣殿长袍(sanc cloth) -------------------------------------------------------- 型态:cloth 重量:150 价格:10 防御:450 影响:mag+13 sp上限+2.4% dex+72 con+87 fel+37 掉落:无 -------------------------------------------------------- 物品资讯:无 档案路径:/std/new_ob/cloth。 高体敏: con、dex 属性加特别多 完整 : 这个部位的防具该加什麽属性就加什麽属性 无瑕 : 没有扣属性 坚固 : 防御值较高 一般的监定不会这麽夸张,sanc 之前会拍卖特别的物品, 使用该物品做监定时才可能跑出上面那麽好的素质。 ※ 编辑: laechan (114.33.66.104 台湾), 08/09/2021 23:23:32
11F:推 dontpkme : 推推 08/09 23:08







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

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

TOP