作者laechan (挥泪斩马云)
看板mud_sanc
标题[wizs] 简易拍卖场做法
时间Wed May 16 21:21:21 2018
初期会测试玩家只能拍卖非武防、无认主、可丢弃的物品。
比方指令叫 auctions,身上有个东西叫 stone,想把它放到
拍卖场,卖 10 万影特,就使用 auctions stone for 100000
这时,对 stone 动手脚:
ob=present("stone",me);
做一些判断 ob 是可被放上去的;
ob->add_auctions(me,value);
这函数大抵上做以下三件事
sdata=({"auctions"});
if(!undefinedp(ob->query("sdata")))
sdata+=ob->query("sdata");
ob->set("auctions",({me->query("name"),value,time()}));
这样当玩家 quit 时,若 ob 的资料能被玩家存起来的话,则
auctions 的资料就会被存起来。
而当玩家带着 ob 在线上时,其它玩家下 auctions -list 时
obs=({});
auc_obs=({});
foreach(ob in users())
{
if(!environment(ob)) continue;
obs+=({all_inventory(ob)});
}
foreach(ob in obs)
if(ob->query("auctions"))
auc_obs+=({ob});
这样就能将有设定拍卖的物品读出来,有资料就能做列表。
不过这样好像不太对,我再想一下。
问题点:
1.auctions -list 怎麽 work
2.auctions -search 怎麽 work
3.auctions -view 怎麽 work a.列表用序号, view 用序号
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.106.224
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/mud_sanc/M.1526476884.A.076.html
※ 编辑: laechan (122.117.106.224), 05/16/2018 21:23:52
1F:推 hlead : 做实体拍卖场存在房间就好了吧?..一种武器店的概念? 05/16 21:28
2F:→ hlead : 只是额外添加去纪录说拍卖的金额异动就好了吧?... 05/16 21:28
不这样做,是因现在的人数加上可拍卖种类量(认主的就不行了),
做这个太浪费。用现有的设计,也就是物品及物品资料本来就会被
玩家储存这一点,加上一些限制(玩家必须带着物品在线上,而玩家
通常都会在线上,断线也没差),就可以实现
1.让玩家线上查询物品
2.让玩家对线上物品出价购买
3.让玩家可取消上架物品
理论上会存在一个适当的写法来呈现以上我想要的效果。
那另一种写法,就是玩家可把物品交给某 npc,设定好价钱,物品
即由该 npc save,其 save 物品的格式跟玩家的一样,嘛,这个或
许是更好的写法,不管是用 npc 还是用拍卖场,後者就类似 shop
,会有 storeroom 存在。
我是尽量不想再写新的物件,能用一个指令就解决是最好的。
※ 编辑: laechan (122.117.106.224), 05/16/2018 21:58:23
继续。
昨晚想了一下,有更简易写法:
foreach(ob in objects())
{
if(undefindp(ob->query("auctions"))) continue;
.
.
}
线上物件顶多一两万个,有上述参数的才跑出来就可,因为大部份
情况只判断是否有 auctions 参数,跑起来就会很快,loading 较
小,而且会很即时。以上会写成函数,回传拍卖物件。
然後物件不需排序,只需给独一无二的序号,玩家要买东西或下架
物品,都要给序号,这样就没啥问题,最後就是 auctions 的列表
指令给 CD 时间即可。
嘛,指令暂定 auctions,我是希望能有别的指令,如 onsell 之
类的。
目前问题只剩下如何判断什麽东西可以被设定为可放进 onsell,
以下是暂拟规则
1.若有 !undefinedp(ob->query("names")) 就不行 认主
2.若有 !undefinedp(ob->query("damage")) 就不行 武器
3.若有 !undefinedp(ob->query("armor")) 就不行 防具
4.若有 !undefinedp(ob->query("present_drop")) 就不行 防掉
[编辑中]
※ 编辑: laechan (122.117.106.224), 05/17/2018 08:57:28