// _bid.c
// artifact 拍賣場指令
#include <config.h>
inherit DAEMON;
// 總表
// cmd_bid=(["時間標記":({"誰",([它的東西data,"bid":(["誰下標":多少錢,]),]),}),
// "時間標記":({"誰",([它的東西data,"bid":(["誰下標":多少錢,]),]),}),
// ]);
static mapping cmd_bid;
// 誰上架 對照 時間標記串
// names_times=(["誰":({"時間標記1","時間標記2",...}),]);
mapping names_times;
varargs int load_cmd_bid();
void create()
{
::create();
seteuid(getuid(this_object()));
if(file_exists("/open/cmds/bid.o"))
restore_object("/open/cmds/bid");
else
names_times=([]);
cmd_bid=([]);
load_cmd_bid();
}
varargs int load_cmd_bid(string name)
{
string tmp,tmp2,files;
int s;
object ob;
mapping ob_data=([]);
mixed times=({}),tmps2=({});
if(name && name!="")
{
files="/open/cmds/bid_data/"+name;
if(file_exists(files+".c") && file_exists(files+".o"))
if(!catch(ob=find_object_or_load(files)))
cmd_bid[name]=ob->return_ob_data();
return 1;
}
if(sizeof(keys(names_times))<1) return 1;
foreach(tmp in keys(names))
{
times=names_times[tmp];
files="/open/cmds/bid_data/"+tmp;
if(file_exists(files+".c") && file_exists(files+".o"))
{
if(!catch(ob=find_object_or_load(files)))
{
ob_data=ob->return_ob_data();
tmps2=keys(ob_data);
foreach(tmp2 in tmps2)
{
if(member_array(tmp2,times)!=-1)
cmd_bid[tmp2]=({tmp,ob_data});
}
}
}
}
return 1;
}
void help()
{
write(@LONG
bid(拍賣場)指令說明:
===============================================
bid -puton xxx 將身上的某物品上架拍賣場
bid -list 列出已於拍賣場上架的物品
bid -pulloff n 將自己上架的第 n 個物品下架
管理者專用指令
bid -list xxx 列出 xxx 這個玩家的拍賣場資料
bid -set xxx 設定 xxx 這個玩家的拍賣場資料
===============================================
LONG
);
}
inr cmd_bid(string str,object me)
{
string ppl_names;
if(!str || str=="")
{
help();
return notify_fail("");
}
ppl_names=me->query("name");
if(!wizardp(me))
return notify_fail("bid "+str+": 你不能使用這個指令語法喔.\n");
if(sscanf(str,"-list %s",ppl_names)==1)
{
if(undefinedp(cmd_bid[names]))
{
load_cmd_bid(names);
if(undefinedp(cmd_bid[names]))
return notify_fail("