[技能] 雷電結界
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間16年前 (2010/04/10 09:36)推噓1(1推 0噓 0→)留言1則, 1人參與討論串1/3 (看更多)
雷電結界一般可以寫在 fight_d.c, 玩家 A 被怪物 B
攻擊時,呼叫主體是怪物 B,判斷到玩家 A 有雷電結
界時製造反射攻擊。
這造成怪物自己打自己的情況。
Q:如何讓怪物攻擊玩家時,玩家自己觸發雷電結界攻
擊怪物?
傳統的做法是寫在 heart_beat 裡頭,但是它有缺點。
新的做法是比方怪物攻擊該玩家的參數串為 STR,當判
斷到玩家有雷電結界、且有作用成功時..
special_attack=ppl->query_temp("special_attack");
special_attack+=({STR});
ppl->set_temp("special_attack",special_attack);
但是它也有缺點,因為它必須做讀取→累加→再設入的
動作,最理想的情況就是只需要一行就解決。
> call me;set_temp;"abc";({"1"})
玩家(laechan /std/user)-> set_temp( "abc", ({ "1" }) )
> call me;add_temp;"abc";({"2"})
玩家(laechan /std/user)-> add_temp( "abc", ({ "2" }) )
> call me;query_temp;"abc"
玩家(laechan /std/user)-> query_temp( "abc" ) = ({
"1", "2" })
所以目前最佳的做法是把二維陣列變成一維,然後在迴圈
時..
原先:
j=sizeof(special_attack);
foreach(sa in special_attack)
改成:
j=sizeof(special_attack);
for(i=0;i<j;i=i+k)
k 即參數串的數量,比方四個為一個參數串,那 k=4。
改這個要關站半小時左右,連同上面的一些修改,有空我會先
公告再關站。相關檔案要備份...
/std/user.c
/adm/daemons/fight_d.c
grep -n special_attack /adm/daemons/*.c, /d/技能相關, ...
另外,目前也要評估這個東西要不要給 mob,我是覺得給 mob
應該也不錯。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 119.15.246.228
推
04/10 10:44, , 1F
04/10 10:44, 1F
討論串 (同標題文章)
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
10
18