                             -=巫師寫作心得=-
                                                           Fex   剪貼
*******************************************************************************

int move_all_players()
{
mixed cont;
object room,obj;
int i;
    room =environment(this_player());  //取出玩家所在房間//
    cont = all_inventory( room );   //取出那個房間內所有物件//
         for( i = 0 ; i < sizeof( cont ) ; i++ )
          {
          obj = cont[i];
          obj->move_player(目的地,"SNEAK");
          }
}

*******************************************************************************

init(){                     //怪物聞到玩家身上有"血"的味道，就給他死啦//
      if (this_player()->query_temp("blood")== 1)
      kill_ob(this_player());
}


die(){                   //怪物死了，在玩家身上，留下" 血 " //
        object killer;
        killer = query("last_attacker");
        killer->set_temp("blood", 1);
        ::die();
}

*******************************************************************************

  int  hit_wall() {
      int reg1,reg2;
      reg2=4;
      if ( this_player()->query("level")<20     )
         {
           write ("你撞到牆壁,眼冒金星,流了一點點血...\n") ;
              reg1= this_player()->query("hit_points");
              reg1=reg1-reg2;
              this_player()->set("hit_points",reg1);
              return 1;
             }
           write ("你穿過牆壁到另一個房間來了\n") ;
           say(this_player()->query("chi_name")+
               "說:你一定會認為我失戀了,但,這是穿牆術,不是我想不開!\n") ;
           return 0;
                   }

*******************************************************************************

函數//用處//範例

write() //寫字串給一個玩家, 別人看不到 //

say()   //寫字串給別人//

shout() //寫字串給所有人//

die() //寫在mob裡的函數,當mob死了,就立刻執行此函數//

tell_object() //傳字串給一個物件,人或房間//
tell_object(ob,"激流太大你被沖回來了！\n\n");

tell_room()  //傳字串給房間//

message()

present() //用來確定物件是否存在另一個物件//
ob = present("canoe",find_object_or_load(VALE +"vale5"));
             // id //       // 另一個物件//

find_object_or_load()//由目錄取出物件//
find_object_or_load(VALE +"vale5")
find_player(), find_living(), find_object()
  //找人//      //找生物//       //找物件//


move_player()//移動玩家//
this_player()->move_player(VALE + "rip3","SNEAK"); //移動時無訊息//
ob->move_player(VALE + "vale14",ob->query("id")+"被激流沖回來了！\n");

move_object()//搬移物件//

room =environment(this_player());  //取出玩家所在房間//
player =environment(this_object()); //取出物品所在玩家//

cont = all_inventory( room );   //取出那個房間內所有物件//

set(), query(), delete(), add()
設定   取出      消去      加成
exp=this_player()->query("combat_exp");
exp=exp +100;
this_player()->set("combat_exp",exp);
this_player()->add("max_kee",-10);
                     // 精
set_temp(), query_temp(), add_temp()//作用在玩家身上的暫存值//
this_player()->set_temp("climbed",this_player()->query_temp("climbed")+1);
this_player()->delete_temp("climbed");

random() //取亂數//

*******************************************************************************

若程式執行文字會出錯,而原始程式沒錯的話,試用ctrl+alt+a變成英文模式看看那
錯字附近有沒有"\",如果有,再加個"\"上去,即重覆兩個"\",這樣文字就不會亂糟糟囉..

*******************************************************************************

下面的寫法能將自己身上的鞋子(本來是裝備上去的)變成未裝備....
   present("boots",this_player())->set("equipped",0)
如果是武器,只要把"equipped"改成"wielded"即可.............
ps:1 表裝備上去,0 表卸下

*******************************************************************************

如果在mobs中set("alt_corpse","/u/..../obj.c");
那怪物死時, 就會clone obj.c 並執行obj.c 中的set_name()

*******************************************************************************

