account.c

来自「C实现的MUD,对大家基本入门网络游戏很有帮助!」· C语言 代码 · 共 241 行

C
241
字号
// account.c#include <ansi.h>inherit ITEM;       // /std/itemint do_save(string);int do_load(string);void reset_balance(object);void create(){        set_name("英雄卡", ({ "credit card","credit","card" }) );        set("unit", "本");        set("long",@LONG这是海洋II世界中通用的新式信用卡,上面记录着你在银行中的存款。望妥善保管,遗失后果自负。        deposit   <amount> <money_type>     存钱        takeout   <amount> <money_type>     取钱                     手续费  银子一两        checkcard                          查账LONG        );        if( clonep() ){                   set("owner_id",this_player()->query("id"));                set_default_object(__FILE__);        }        set("no_put", 1);        set("no_get", 1);           set("no_sell", 1);           set("no_give", 1);           set("no_drop", 1);           seteuid(getuid());}void init(){        if( !environment()->is_character())  destruct(this_object());        else{                add_action("do_save", "deposit");                add_action("do_load", "takeout");                add_action("do_info", "checkcard");        }}int query_autoload(){ return 1; }int do_save(string arg){        int amount;        string money;        object money_ob,me,coin,silver,gold,cash,tencash;        if (!arg) return 0;        if (arg=="all")        return notify_fail("请说明你要存什么。\n");        me=this_player();        if (me->is_busy())        return notify_fail("你正忙着呢。\n");        me->start_busy(3);        if (2<1)        {            coin=present("coin_money",me);            silver=present("silver_money",me);            gold=present("gold_money",me);            cash=present("thousand-cash_money",me);            tencash=present("ten-thousand-cash",me);            amount=0;            if (coin){              amount+=coin->value();              destruct(coin);            }            if (silver){              amount+=silver->value();              destruct(silver);            }            if (gold){              amount+=gold->value();              destruct(gold);            }            if (cash){              amount+=cash->value();              destruct(cash);            }            if (tencash){              amount+=tencash->value();              destruct(tencash);            }            me->add("balance",amount);        }        else        {            if (sscanf(arg,"%d %s",amount,money)!=2)            {               amount=-1;               money=arg;            }            else if ( amount < 1 )                return notify_fail("货币计量至少要一个单位。\n");            money_ob=present(money+"_money",me);                if ( amount > 1000 )                return notify_fail("货币计量一次不能超过1000。\n");            if (!money_ob) return notify_fail("你身上没有这种货币。\n");            if (amount==-1)            {                amount=money_ob->query_amount();                if (!amount)                        return notify_fail("你身上没有这种货币。\n");            }            else if( money_ob->query_amount() < amount )                return notify_fail("你身上没有那多"+money_ob->query("name")+"。\n");            money_ob->add_amount(-amount);            me->add("balance",money_ob->query("base_value")*amount);            if (!money_ob->query_amount()) destruct(money_ob);        }        write("OK.\n");        reset_balance(me);        return 1;}int do_load(string arg){        int amount,bv,rich,old=0,tm=0,tmm=0;        string money;        object money_ob,me;        if (!arg) return 0;        me=this_player();        if (me->is_busy())        return notify_fail("你正忙着呢。\n");        me->start_busy(3);        if (sscanf(arg,"%d %s",amount,money)!=2)        {                amount=-1;                money=arg;        }                rich=me->query("balance");        if (!rich) return notify_fail("你在本银行没有任何存款!\n"); if ( amount < 1 ) return notify_fail("货币计量至少要一个单位。\n"); if ( amount > 1000 ) return notify_fail("货币计量一次不能超过1000。\n");        money_ob=present(money+"_money",me);        if (!money_ob)        {                if(file_size("/clone/money/"+money+".c")<0) return notify_fail("没有这种货币!\n");                money_ob=new("/clone/money/"+money);                money_ob->move(me);                old=-1;        }        bv = money_ob->query("base_value");        if (amount==-1) amount=rich/bv;        else if( rich < amount*bv + 100 )              {   write("你的帐号上没有那多"+money_ob->query("name") + "!\n");  money_ob->add_amount(old);            return 1;}  if ( amount < 1 ) return notify_fail("货币计量至少要一个单位。\n"); if ( amount > 1000 ) return notify_fail("货币计量一次不能超过1000。\n");       if(amount*bv < 0)              {            money_ob->add_amount(old);               write("你不要诈骗哦?\n");        return 1;}        me->add("balance",-amount*bv-100);      /*  tm = (int)(amount+old-(int)(amount*0.2));        tmm = (int)tm;*/        money_ob->add_amount(amount+old);        write("OK.\n");        reset_balance(me);        return 1;}int do_info(string arg){        int rich;object me=this_player();        rich=this_player()->query("balance");        if (me->is_busy())        return notify_fail("你正忙着呢。\n");        me->start_busy(3);        if (!rich)        write("目前, 你在银行里没有任何存款!\n");        else        {                write("目前, 你在银行里有:\n");                if (rich/10000)                write( chinese_number(rich/10000) +"两黄金");                rich=rich%10000;                if (rich/100)   write(chinese_number(rich/100)+"两银子");                rich=rich%100;                if (rich)       write(chinese_number(rich) + "文钱");                write("\n");        }        return 1;}void reset_balance(object me){    int allowed=me->query("combat_exp");    int removed_gold;    string myid=me->query("id");    string NPCNAME="铁算盘";        if (me->is_busy())        return notify_fail("你正忙着呢。\n");        me->start_busy(3);    if(allowed<1000) allowed=1000;    if(allowed>100000) allowed=100000;    allowed *= 2500;//each year can have 250 gold, range 250-25000.     if( (me->query("balance")) > allowed){        me->set("balance_old", me->query("balance"));        me->set("balance", allowed);        removed_gold = (me->query("balance_old") - me->query("balance"))/10000;        log_file("MONEY_RESET", ctime( time() )+":鳌大人收缴了"+me->query("name")+"("+me->query("id")+")"+removed_gold+"两黄金。\n");        tell_object(me, GRN+NPCNAME+"在你的耳边悄声说道:"+RANK_D->query_respect(me)+           ",这、这真不知怎么说是好...\n"NOR);        tell_object(me, GRN+NPCNAME+"在你的耳边悄声说道:"+           "昨日魏大人派人前来察案,发觉你老的黄金来路...\n"NOR);        tell_object(me, GRN+NPCNAME+"在你的耳边悄声说道:"+        "若不是在下帮你老辩解,你老的钱就全都充公了...\n"NOR);    }}string query_destruct_msg(){    return HIB+"你看到一张蓝色卡片掉了下来,钻入土中不见了...\n"+NOR;}

⌨️ 快捷键说明

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