qianlaob.c
来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 355 行
C
355 行
// qianlaob.c
#include <ansi.h>
inherit NPC;
inherit F_BANKER;
int ask_weiwang();
void create()
{
set_name("钱老本", ({"qian laoben", "qian", "laoben"}));
// set("title", "钱庄老板");
set("title", HIR "天地会"HIG"青木堂"NOR"会众");
set("gender", "男性");
set("age", 34);
set("str", 22);
set("int", 24);
set("dex", 18);
set("con", 18);
set("qi", 500);
set("max_qi", 500);
set("jing", 100);
set("max_jing", 100);
set("shen", 0);
set("combat_exp", 50000);
set("shen_type", 1);
set("attitude", "friendly");
set("env/wimpy", 50);
set("chat_chance", 5);
set("chat_msg", ({
"钱老本说道:我叫钱老本,就是因为做生意连老本也赔了。\n",
"钱老本笑着说道:在本店存钱利息至少百分之一,客官您只管存吧。\n",
"钱老本说:只有对本派弟子我才这么客气,对别的人啊,哼哼......\n",
"钱老本突然说道: 江湖威望很重要,威望值高大有好处啊。\n",
"钱老本突然说:五人分开一首诗,身上洪英无人知。\n",
}));
create_family("云龙门",2, "弟子");
set("inquiry", ([
"利息" : "\n想要利息先入会!\n",
"陈近南" : "\n想见总舵主可没那么容易。\n",
"天地会" : "\n只要是英雄好汉,都可以入我天地会(join tiandihui)。\n",
"加入" : "\n只要入了我天地会,可以向会中各位好手学武艺。\n",
"入会" : "\n只要入了我天地会,可以向会中各位好手学武艺。\n",
"威望" : (: ask_weiwang :),
"江湖威望" : (: ask_weiwang :),
]) );
set_skill("unarmed", 50);
set_skill("dodge", 50);
set_temp("apply/attack", 100);
set_temp("apply/defense", 100);
set_temp("apply/damage", 40);
setup();
carry_object("/clone/misc/cloth")->wear();
add_money("gold", 5);
}
void init()
{
add_action("do_check", "check");
add_action("do_check", "chazhang");
add_action("do_convert", "convert");
add_action("do_convert", "duihuan");
add_action("do_deposit", "deposit");
add_action("do_deposit", "cun");
add_action("do_withdraw", "withdraw");
add_action("do_withdraw", "qu");
add_action("do_join","join");
delete_temp("busy");
}
int ask_weiwang()
{
command("tell "+this_player()->query("id")+" 你现在的江湖威望是 " +(string)(this_player()->query("weiwang")));
say("\n钱老本说:如果你威望值很高,有些人见了你不但不会杀你,还会教你武功,送你宝贝。\n"
+"而且你还可以加入帮会,率领会众去攻打目标,就连去钱庄取钱也会有利息 。。。。。\n");
say("钱老本又说:杀某些坏人或救某些好人可以提高江湖威望。\n");
return 1;
}
/*
void enough_rest()
{
delete_temp("busy");
}
int do_check()
{
// here we use 3 units to display bank infos
int total = (int)this_player()->query("balance");
if (!total || total < 0) {
this_player()->set("balance", 0);
return notify_fail("您在敝商号没有存钱。\n");
}
write("钱老本悄悄告诉你:您在弊商号共存有" +
MONEY_D->money_str(total) + "\n");
return 1;
}
int do_convert(string arg)
{
string from, to;
int amount, bv1, bv2;
object from_ob, to_ob;
object me;
if (query_temp("busy"))
return notify_fail("哟,抱歉啊,我这儿正忙着呢……您请稍候。\n");
me = this_player();
if (!arg || sscanf(arg, "%d %s to %s", amount, from, to) != 3)
{
return notify_fail("命令格式:convert|duihuan <数量> <货币单位> to <新货币单位>\n");
}
from_ob = present(from + "_money", me);
to_ob = present(to + "_money", me);
if (!to_ob && file_size("/clone/money/" + to + ".c") < 0)
{
return notify_fail("你想兑换成什么?\n");
}
if (!from_ob)
{
return notify_fail("你身上没有带这种钱。\n");
}
if (amount < 1)
{
return notify_fail("你想白赚啊?\n");
}
if ((int)from_ob->query_amount() < amount)
{
return notify_fail("你带的" + from_ob->query("name") + "不够。\n");
}
bv1 = from_ob->query("base_value");
if (!bv1)
{
return notify_fail("这样东西不值钱。\n");
}
bv2 = to_ob ? to_ob->query("base_value") : call_other("/clone/money/" + to, "query", "base_value" );
if (bv1 < bv2)
amount -= amount % (bv2 / bv1);
if (amount == 0)
{
return notify_fail("这些" + from_ob->query("name") + "不够换。\n");
}
// allowed to convert now
set_temp("busy", 1);
from_ob->add_amount(-amount);
if (!to_ob) {
to_ob = new("/clone/money/" + to);
to_ob->set_amount(amount * bv1 * 9 / (bv2 * 10));
to_ob->move(me);
}
else
to_ob->add_amount(amount * bv1 * 9 / (bv2 * 10));
message_vision(sprintf("$N从身上取出%s%s%s,换成了%s%s%s。\n",
chinese_number(amount), from_ob->query("base_unit"), from_ob->query("name"),
chinese_number(amount * bv1 * 9 / (bv2 * 10)), to_ob->query("base_unit"),
to_ob->query("name")), me);
// from_ob->add_amount(-amount);
remove_call_out("enough_rest");
call_out("enough_rest", 5);
return 1;
}
int do_deposit(string arg)
{
string what;
int amount, money_limit;
object what_ob, me;
if (query_temp("busy"))
return notify_fail("哟,抱歉啊,我这儿正忙着呢……您请稍候。\n");
me = this_player();
if (!arg || sscanf(arg, "%d %s", amount, what) != 2)
{
return notify_fail("命令格式:deposit:cun <数量> <货币单位>\n");
}
what_ob = present(what + "_money", me);
if (!what_ob)
{
return notify_fail("你身上没有带这种钱。\n");
}
if (amount < 1)
{
return notify_fail("你想存多少" + what_ob->query("name") + "?\n");
}
if ((int)what_ob->query_amount() < amount)
{
return notify_fail("你带的" + what_ob->query("name") + "不够。\n");
}
// deposit it
set_temp("busy", 1);
if (me->query("age")==14) money_limit = 100;
if (me->query("age")>14) money_limit = 100 + (me->query("age")-15) * 20;
if (me->query("age")>20) money_limit = 200 + (me->query("age")-20) * 20;
if (me->query("age")>30) money_limit = 400 + (me->query("age")-30) * 30;
if (me->query("age")>40) money_limit = 800 + (me->query("age")-40) * 40;
money_limit = money_limit*10000;
if (me->query("balance") + what_ob->query("base_value") * amount > money_limit)
{
return notify_fail("你的存款额度已经用满了。\n");
}
me->add("balance", what_ob->query("base_value") * amount);
what_ob->add_amount(-amount);
message_vision(sprintf("$N拿出%s%s%s,存进了银号。\n",
chinese_number(amount), what_ob->query("base_unit"),
what_ob->query("name")), me);
remove_call_out("enough_rest");
call_out("enough_rest", 5);
return 1;
}
*/
/*
int do_withdraw(string arg)
{
int amount, v;
string what;
object me;
if (query_temp("busy"))
return notify_fail("哟,抱歉啊,我这儿正忙着呢……您请稍候。\n");
me = this_player();
if (!arg || sscanf(arg, "%d %s", amount, what) != 2)
{
return notify_fail("命令格式:withdraw|qu <数量> <货币单位>\n");
}
if (amount < 1)
{
return notify_fail("你想取出多少钱?\n");
}
if (amount > 210000)
{
return notify_fail("真抱歉,小店一时没这么多现金。\n");
}
if (file_size("/clone/money/" + what + ".c") < 0)
{
return notify_fail("你想取出什么钱?\n");
}
what = "/clone/money/" + what;
if ((v = amount * what->query("base_value")) > me->query("balance"))
{
return notify_fail("你存的钱不够取。\n");
}
if(v>30000)
{
if((int)me->query("weiwang")>=50)
return notify_fail("\n钱老本怒道:身为天地会弟子,你还敢如此挥霍!一次最多取三两黄金!\n");
}
set_temp("busy", 1);
me->add("balance", -v);
if((int)me->query("weiwang")>=50)
{
MONEY_D->pay_player(me, v = v * ((((int)me->query("weiwang")-40)/10)+100)/ 100);
message_vision(sprintf("$N从银号里取出%s。\n", MONEY_D->money_str(v)),
me);
message_vision("\n$N发现果然有利息,高兴得跳了起来!", me);
command("goodkid "+this_player()->query("id"));
}
else
{
message_vision("\n钱老本说: 想白赚啊?对不起,你在本庄取钱没利息。\n",me);
MONEY_D->pay_player(me, v = v * 4/5);
message_vision(sprintf("$N从银号里取出%s。\n", MONEY_D->money_str(v)),
me);
}
remove_call_out("enough_rest");
call_out("enough_rest", 5);
return 1;
}
*/
/*
int do_withdraw(string arg)
{
int amount, v;
string what;
object me;
if (query_temp("busy"))
return notify_fail("哟,抱歉啊,我这儿正忙着呢……您请稍候。\n");
me = this_player();
if( (int)me->query("balance") > 2000000 )
{
me->set("balance",2000000);
return notify_fail("你以前存的多于200两黄金的钱被官府没收了.\n");
}
if (!arg || sscanf(arg, "%d %s", amount, what) != 2)
{
return notify_fail("命令格式:withdraw|qu <数量> <货币单位>\n");
}
if(amount >= 100)
{
return notify_fail("说清楚数目。本店没这么多麻烦数字。\n");
}
if (amount < 1)
{
return notify_fail("你想取出多少钱?\n");
}
if (file_size("/clone/money/" + what + ".c") < 0)
{
return notify_fail("你想取出什么钱?\n");
}
what = "/clone/money/" + what;
if ((v = amount * what->query("base_value")) > me->query("balance"))
{
return notify_fail("你存的钱不够取。\n");
}
set_temp("busy", 1);
me->add("balance", -v);
MONEY_D->pay_player(me, v = v * 8 / 10);
message_vision(sprintf("$N从银号里取出%s。\n", MONEY_D->money_str(v)),
me);
remove_call_out("enough_rest");
call_out("enough_rest", 5);
return 1;
}
*/
#include "/kungfu/class/yunlong/tiandihui.h";
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?