
ES2 mudlib - FF extension v0.6c 函式說明書

程式: /adm/simul_efun/message.c

	(轉貼自以前寫的 /doc/help/book_message)

	FF 訊息的函式大致上與原來的 ES II mudlib  相容, 但是由於加入了
	一些處理隱形訊息、睡眠不予收到訊息和載具內人物收到外界訊息, 使用
	上要特別注意到函式是否有處理這些的功能.

  	目前處理得比較完整的函式只有 message_vision() 和
	message_vision_exclude(), 因此請儘量使用此兩個函數處理一般的訊息.

varargs void tell_vehicle( string msg, object vehicle, object target )

        這個函式主要是被 message_vision() 呼叫, 用來處理送入載具
        內的外界訊息. 如果有特別的需要, 也可以用此函數處理要對載
        具內廣播的外界訊息. 所有由 tell_vehicle() 處理的訊息, 之
        前一定會加上: [載具名稱外]

        字串 msg 是欲送入物件 vehicle 的訊息.
        物件 vehicle 是被外界送入訊息的載具.
        物件 target  則是當 message_vision() 的第三個參數有指定時
        才有作用.

        tell_vehicle() 有處理載具隱形和睡眠的功能.

void tell_object( object ob, string str )

        這個函式如同原版的 ES II mudlib, 直接送訊息給一個物件.

        此函式沒有任何附加的功能.

varargs void tell_room( mixed ob, string str, object *exclude )

        這個函式可以視為告訴一個物件內的所有物件一段訊息.

        物件 ob 是被送入訊息的物件.
        字串 string 是欲送入的訊息內容.
        物件 *exclude 則是不收到訊息的物件陣列, 這個參數可以省略.

        此函式有處理睡眠及送入載具訊息的功能.

void shout( string str )

        原版的 ES II mudlib 函式, 對所有的使用者發出一段訊息.

void write( string str )

        也是原味的 ES II mudlib 函式, 送一段訊息給呼叫此函式的物件.

varargs void say( string str, mixed exclude )

        與 ES II mudlib 相同的函式, 送出一段訊息給呼叫此函式的物件
        身處環境中的所有物件. exclude 倒是不太嚴謹的定義, 當然也是
        不收到訊息的物件 (可以是單一物件, 或是物件陣列).

varargs void message_vision( string msg, object me, object you )

        送出一段訊息給物件 me 身處的環境, 收到訊息的物件也包含自己.
        這個函式的可以讓字串 msg 中有一些較方便的簡寫命令:

                $N 或 $P 代表發出訊息的物件名稱
                如果有給第三個參數 you, 則 $n 或 $p 代表接收訊息的
                物件 you 的名稱.

        以下是範例:

        先來一段最簡單的訊息:
                message_vision("哇哇哇 ! 天上掉鈔票下來啦 !\n", me );
        這樣與物件 me 同一個環境的物件都會看到:
                哇哇哇 ! 天上掉鈔票下來啦 !

        接下來是只有用到物件 me 名稱的用法:
                message_vision("$N 開始表演歌舞秀囉 !\n", me );
        物件 me 自己會看到:
                你開始表演歌舞秀囉 ! (人稱代名詞「你」視性別而定.)
        其他同一個環境的物件會看到:
                某甲開始表演歌舞秀囉 ! (某甲是物件 me 的名字)

        如果有指定第三個參數 you, 用法如下:
                message_vision("$N 往 $n 的方向扔了一隻貓.\n", me, you );
        物件 me 自己會看到:
                你往某乙的方向扔了一隻貓. (某乙是 you 的名字)
        物件 you 則看到:
                某甲往你的方向扔了一隻貓. (規則同前)
        其他在同一個環境的物件則看到:
                某甲往某乙的方向扔了一隻貓.

        message_vision() 可以讓一段訊息對不同物件有不同的輸出, 對於
        處理一般性的動作敘述非常好用.

        message_vision() 目前可以處理隱形、送入載具內、及睡眠的情形.

varargs void message_vision_exclude( string msg, object me, object *exclude
)

        用法同 message_vision(), 但是沒有 you 的參數.
        物件 *exclude 則是不收到訊息的物件陣列, 這個參數可以省略.

  整理: Spock @ FF      97.Feb.15.

  附註: 為了方便檢索, 以下簡略列出上述函式使用的場合:

        message_vision
                一般處理人物動作的訊息, 同一個房間或載具內的人均可
                看到, 但是會受到隱形和睡眠的影響.
                同一個環境的載具會收到所謂的外界訊息.

        message_vision_exclude
                同上, 但是用在同一環境中有人必須看不到此訊息的情況
                下, 通常看不到的就是自己. 如果不想讓動作訊息傳給自
                己, 就可以使用此函式.

        tell_vehicle
                外界環境送給載具內的訊息, 會受隱形及睡眠的影響.

        tell_object
                只有指定的單一物件自己收得到的訊息, 別人無法收到.

        tell_room
                告訴房間或載具內所有人的訊息, 但是會受到睡眠影響.
                同一個環境的載具會收到所謂的外界訊息.

        shout
                告訴所有線上使用者的訊息.

        write
                對使用此函式的物件送出訊息, 通常是系統訊息.

        say
                一個人對同一個房間的所有人送出的訊息, 不受任何狀態
                影響, 只要同一房間或載具的人全部會收到, 但是同一個
                環境的載具裡的人無法收到.

Spock of The Final Frontier	98.Sep.16.
