⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 dealer.c

📁 C实现的MUD,对大家基本入门网络游戏很有帮助!
💻 C
字号:
// dealer.c 商人// This is a inheritable object.// Each dealer should support buy, sell, list, value 4 commands#include <dbase.h>string is_vendor_good(string arg){	string *goods;	object ob;	int i;	if (arrayp(goods = query("vendor_goods"))) 		for (i = 0; i < sizeof(goods); i++) 			if (goods[i]->id(arg))				return goods[i];	return "";}int do_value(string arg){	object ob;	int value;	if (!arg || !(ob = present(arg, this_player())))		return notify_fail("你要估什么的价?\n");		if (ob->query("money_id"))		return notify_fail("你没用过钱啊?\n");	value = ob->query("value");	if (value < 1)		write(ob->query("name") + "一文不值!\n");	else 		write(ob->query("name") + "值" + 		MONEY_D->price_str(value * 70 / 100) + "。\n");	return 1;}int do_sell(string arg){	object ob;	int value;		if (!arg || !(ob = present(arg, this_player())))		return notify_fail("你要卖什么?\n");	if (ob->query("money_id"))		return notify_fail("你想卖「钱」??\n");	if (stringp(ob->query("no_drop")))		return notify_fail("这样东西不能卖。\n");	if (is_vendor_good(arg) != "") 		return notify_fail("卖给你好不好?\n");//	if (ob->query("food_supply"))//		return notify_fail("剩菜剩饭留给您自己用吧。\n");	//        if (ob->query("shaolin"))//                return notify_fail("小的只有一个脑袋,可不敢买少林庙产。\n"); //	if (ob->query("mingjiao"))//                return notify_fail("小的只有一个脑袋,可不敢买魔教的东西。\n");		value = ob->query("value");	if (value < 30)		write(ob->query("name") + "一文不值!\n");	else {		message_vision("$N卖掉了一" + ob->query("unit") + 		ob->query("name") + "给$n。\n", this_player(), this_object());		MONEY_D->pay_player(this_player(), value * 70 / 100);		if (value < 50)			destruct(ob);		else			ob->move(this_object());	}	return 1;}int do_list(){	string *goods;	object *inv;	int i;	inv = all_inventory(this_object());	if (!sizeof(inv) && !arrayp(goods = query("vendor_goods")))		return notify_fail("目前没有可以卖的东西。\n");		printf("你可以向%s购买下列物品:\n", query("name"));	for (i = 0; i < sizeof(inv); i++) 		if (!inv[i]->query("equipped") && !inv[i]->query("money_id"))		printf("%30-s:%s\n", inv[i]->short(),		MONEY_D->price_str(inv[i]->query("value") * 6 / 5));	if (arrayp(goods = query("vendor_goods")))		for (i = 0; i < sizeof(goods); i++)			printf("%30-s:%s\n", goods[i]->short(),			MONEY_D->price_str(goods[i]->query("value")));	return 1;}	int do_buy(string arg){	int value, val_factor;	string ob_file;	object ob;//	mapping fam;//      if ( (fam = this_player()->query("family")) && fam["family_name"] == "丐帮" ) //		return notify_fail("你是个穷叫化,买什麽东西!\n");		if (!arg)		return notify_fail("你想买什么? 1\n");	else if (!(ob = present(arg, this_object())))		if ((ob_file = is_vendor_good(arg)) == "")			return notify_fail("你想买什么? 2\n");	if (!ob) {		ob = new(ob_file);		val_factor = 10;	}	else {		if (ob->query("equipped"))			return notify_fail("你想买什么? 3\n");		val_factor = 12;	}        if (query_temp("busy"))                return notify_fail("哟,抱歉啊,我这儿正忙着呢……您请稍候。\n");		switch (MONEY_D->player_pay(this_player(), ob->query("value") *  val_factor / 10)) {	case 0:		return notify_fail("穷光蛋,一边呆着去!\n");	case 2:		return notify_fail("您的零钱不够了,银票又没人找得开。\n");	default:        	set_temp("busy", 1);		message_vision("$N从$n那里买下了一" + ob->query("unit") + 		ob->query("name") + "。\n", this_player(), this_object());		ob->move(this_player());	}             this_player()->start_busy(1);        remove_call_out("enough_rest");        call_out("enough_rest", 1);	return 1;}void enough_rest(){        delete_temp("busy");}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -