※ 引述《justinj (闇冥)》之銘言:
: 因為題目不知道要定什麼....avert
: 問題1.看看能不能做到..雖然我覺得不行
: 就是控制某一個檔案中的一個變數值...
: 例如a.c
: inherit xxxxx
: int r=random(xxx);
: void create()
: .
: .
: .
: 能否控制r的值...
r 的值在該物件被 update 的瞬間即已決定。
: 問題2.add_action("xxx","yyy");
: yyy bbb的bbb要如何像set("yyy",bbb)這種直接設定型態?
: 我是有想到一招..就是像寫程式一樣寫成另一個檔案再去讀取
: (反正只想要用在巫師的變數設定上)
: ----------------------------------------------
: 其它問題
假設 add_action("test_xxx","test");
問題:能否 int test_xxx(mixed strs) ?
答案是可以,但是不管你下 test 什麼, strs 都會被強制
設定為 字串,如底下...
test ({a,b})
"({a,b})"
但是你可以這樣做,在目標主體物件上這樣寫..
#include <daemons.h>
inherit REF_D;
然後把上面的函數內容改寫為底下...
int test_xxx(string str)
{
mixed strs;
strs=resolv_str(resolv_ref(str));
if(stringp(strs))
{
write("你輸入的東西是字串.\n");
set("xx",str);
}
else if(mapp(strs))
{
write("你輸入的東西是 mapping.\n");
set("xx",strs);
}
else if(intp(strs))
{
write("你輸入的東西是整數.\n");
set("xx",atoi(str));
}
else
{
write("你輸入的東西是陣列.\n");
set("xx",strs);
}
resolv_str 跟 resolv_ref 是 REF_D 這東西支援的,所以要
使用它就必須先 inherit REF_D 而要直接使用 REF_D 這個變
數就必須include <daemons.h>
: 1.31那個時間停了要怎麼處理(只要跟時間有關的設定全部都不能用)
: 像要用call_out,time(),casting,debug 1...等等的
shutdown 即可。
另外它會停掉有可能出在 call_out 被佔用。
: 2.feather fist還是有bug..會遇到heart_beat變成0的..(應該沒錯吧)
: 原因未知..不過我在猜可能是在轉換時剛好攻擊怪物
: 像
: A->怪B,要打的過程中怪B突然變 怪B-.....
: 另一種情況是 怪B-死了...所以轉回怪B死了...
: 在轉回的過程中被玩家打的話會變成什麼樣(應該是說算是誰打死的)
: 我想die裡面如果有this_player()的話就不確定誰是誰了
: (有可能變成0?..我猜的).....
: 不過以後應該會有讓玩家(怪物)變heart_beat(0)的吧...
: 除了因為程式的問題而跑不動的情況產生的bug外...
: 其它的bug應該都是心跳停了的情況.....
: 但這種情況如果遇到了[喘一口氣(xxx)]這種情形應該就動不了
: 因為這種狀態下所有指令無效..
嗯,我再把上述的情況加入判斷。
: 所以除了只能靠巫師,及quit外...看看有沒有其它的解法
: 解法目前想到2個..
: 第一個是改喘氣那邊可以按beat執行指令
: 第二個是給一個道具(類似自殺藥水)..但是給別人放的..
: 放完後的作用是全格的玩家會作heart_beat(1)
: 且送回recall處(ppl->die()或move_to都可以..)
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 115.83.155.96