[wizs] 簡易拍賣場做法

看板mud_sanc (Sanctuary - 聖殿)作者 (揮淚斬馬雲)時間7年前 (2018/05/16 21:21), 7年前編輯推噓1(101)
留言2則, 1人參與, 7年前最新討論串1/1
初期會測試玩家只能拍賣非武防、無認主、可丟棄的物品。 比方指令叫 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
文章代碼(AID): #1Q_31K1s (mud_sanc)
文章代碼(AID): #1Q_31K1s (mud_sanc)