mud吧 关注:20,800贴子:95,205
  • 12回复贴,共1

求高手指导如何做出可以在店里买到的马

只看楼主收藏回复

#include <ansi.h>
inherit NPC;
inherit F_UNIQUE;
void create()
{
set_name(MAG "紫骝马" NOR, ({ "ziliuma"}));
set("race", "野兽");
set("gender", "雄性");
set("age", 2+random(3));
set("long", "这是一匹紫骝宝马,日行千里,夜行八百。\n");
set("ridable", 1);
set("int", 30);
set("qi", 300);
set("max_qi", 300);
set("jing", 100);
set("max_jing", 100);
set("shen_type", 0);
set("combat_exp", 50000);
set("attitude", "peaceful");
set("limbs", ({ "头部", "腹部", "尾巴","后腿","前腿" }) );
set("verbs", ({ "bite", "hoof" }) );
set_temp("apply/attack", 50);
set_temp("apply/armor", 15);
set_temp("apply/damage", 25);
setup();
}


IP属地:广东1楼2014-05-07 21:18回复
    现在要把它改成可以骑的,像炎黄3那样的


    IP属地:广东2楼2014-05-07 21:21
    回复
      #include <ansi.h>
      inherit NPC;
      inherit F_RIDDING;
      void create()
      {
      set_name(BLK"蒙古马"NOR, ({"menggu ma", "horse", "ma"}));
      set("race", "野兽");
      set("age", 3);
      set("combat_exp", 500000);
      set("long",
      "一匹蒙古高头大马,全身毛发黝黑发亮,煞是威风神俊。\n");
      set("limbs", ({ "头部", "身体", "蹄子", "尾巴" }) );
      set("verbs", ({ "bite", "claw" }) );
      set("str", 20+random(10));
      set("con", 20+random(5));
      set("dex", 20+random(5));
      set("age", 20+random(30));
      set("combat_exp", 300);
      set_temp("apply/attack", 3);
      set_temp("apply/defense", 5);
      set_temp("apply/armor", 1);
      set("ride_prop/dodge",100);
      set("ride_prop/defense",100);
      set("no_get",1);
      set("no_drop",1);
      set("no_put",1);
      set("chat_chance", 5);
      set("chat_msg", ({
      CYN"蒙古马呼哧呼哧,蹄子不停地刨着地。\n"NOR,
      }) );
      setup();
      }


      IP属地:广东3楼2014-05-07 21:25
      回复
        // item: /u/oooc/npc/fire.c
        inherit ITEM;
        void setup()
        {}
        void init()
        {
        add_action("do_ride", "ride");
        }
        void create()
        {
        set_name("伊犁马", ({"horse", "yili ma", "ma"}));
        set_weight(35000);
        set_max_encumbrance(50000);
        if (clonep())
        set_default_object(__FILE__);
        else {
        set("unit", "匹");
        set("long", "一匹良种的伊犁马,可以骑(ride),也可以驮东西。\n");
        set("value", 1000);
        }
        }
        int do_ride(string arg)
        {
        object me = this_player();
        if (!id(arg))
        return notify_fail("你要骑什么?\n");
        if (this_player()->query_temp("marks/骑") ) {
        write("你已经骑在马上了。\n");
        return 1;
        }
        else {
        message("vision",this_player()->name() + "翻身上马。\n",
        environment(me), ({me}) );
        write("你战战兢兢爬上马背。还好,别人没看出来。\n");
        this_player()->set_temp("marks/骑", 1);
        return 1;
        }
        }
        int query_autoload() { return 1; }


        IP属地:广东4楼2014-05-07 21:26
        回复
          //坐骑 ridding
          #include <dbase.h>
          #include <ansi.h>
          int ride()
          {
          object owner;
          mapping ride_prop, applied_prop;
          string *apply;
          if( !owner = environment() ) return 0;
          if( !owner->is_character() ) return 0;
          if( query("equipped") )
          return notify_fail("你已经骑在上面了。\n");
          if( !mapp(ride_prop = query("ride_prop")) )
          return notify_fail("你只能骑可以骑的东西。\n");
          if( owner->query_temp("riding") )
          return notify_fail("你已经有坐骑了。\n");
          owner->set_temp("riding", query("name"));
          apply = keys(ride_prop);
          applied_prop = owner->query_temp("apply");
          if( !mapp(applied_prop) ) applied_prop = ([]);
          for(int i = 0; i<sizeof(apply); i++)
          if( undefinedp(applied_prop[apply[i]]) )
          applied_prop[apply[i]] = ride_prop[apply[i]];
          else
          applied_prop[apply[i]] += ride_prop[apply[i]];
          owner->set_temp("apply", applied_prop);
          set("equipped", "rode");
          return 1;
          }
          int unequip()
          {
          object owner;
          mapping prop, applied_prop;
          string *apply, equipped;
          if( !(owner = environment())->is_character() ) return 0;
          if( !stringp(equipped = query("equipped")) )
          return notify_fail("你目前并没有骑这样东西。\n");
          if( equipped=="rode" )
          {
          owner->delete_temp("riding" );
          prop = query("ride_prop");
          }
          apply = keys(prop);
          applied_prop = owner->query_temp("apply");
          for(int i = 0; i<sizeof(apply); i++)
          applied_prop[apply[i]] -= prop[apply[i]];
          delete("equipped");
          return 1;
          }


          IP属地:广东5楼2014-05-07 21:37
          回复
            你想要什么效果??可以骑着到处走么?


            IP属地:广东来自Android客户端6楼2014-05-08 08:58
            回复
              是,可以骑着rideto 各个地方,这件东西放在黑店卖出,一个100GOLD


              IP属地:广东7楼2014-05-08 12:11
              回复
                一个mapping,比如key是地点缩写,value是对应中文名和房间路径,rideto函数大体结构就是判断是否当前可以移动(比如是否在战斗等待),判断是否有跟着地点,没有就列出所有可rideto的地名和缩写,有就判断是否在key中,在就move过去,不再就提示无此缩写。。然后所有马inherit之,add_action之。。


                IP属地:北京来自iPhone客户端8楼2014-05-09 10:14
                收起回复


                  IP属地:广东9楼2014-05-09 12:01
                  回复
                    那大约就是马车和马的结合了


                    IP属地:广东10楼2014-05-09 12:03
                    回复
                      只要记住思路是映射就成


                      IP属地:北京来自iPhone客户端11楼2014-05-10 07:00
                      回复


                        IP属地:广东12楼2014-05-10 07:14
                        回复