[wizs] 簡易拍賣場做法
初期會測試玩家只能拍賣非武防、無認主、可丟棄的物品。
比方指令叫 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://www.ptt.cc/bbs/mud_sanc/M.1526476884.A.076.html
※ 編輯: laechan (122.117.106.224), 05/16/2018 21:23:52
推
05/16 21:28,
7年前
, 1F
05/16 21:28, 1F
→
05/16 21:28,
7年前
, 2F
05/16 21:28, 2F
不這樣做,是因現在的人數加上可拍賣種類量(認主的就不行了),
做這個太浪費。用現有的設計,也就是物品及物品資料本來就會被
玩家儲存這一點,加上一些限制(玩家必須帶著物品在線上,而玩家
通常都會在線上,斷線也沒差),就可以實現
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
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
-12
18
11
17