[wizs] 不必學會某技能、也能施展某技能
這個東西其實很簡單,只是要更動相對應的檔案而已。
所以如果有要做的話,最好是做統一的更改。
指令呼叫做法:
/cmds/std/技能施展相關指令 -> /d/相關技能/技能檔 -> start_skill
-> start_effect
可以設定當玩家身上有某物件時,亦可施展該技能
物件檔 -> add_action 相關函數及指令 -> 以指令呼叫函數 -> start_skill
-> start_effect
所謂需要做統一更改的地方則包括..
一、技能檔中相關數值計算的參考值要怎麼定
例如某技能看「施展者的 mag」,則當玩家拿某物件做施放
道具時「該看什麼值」
二、某些技能施展了會有熟練度
例如燃燒之手。則當玩家拿某物件做施放道具時,這時就不
能給熟練度。
各位 deep 級以上的 wiz 有空也可以玩玩看這個,有先玩過會比
較有概念,我寫個簡易版的..
// 燃燒之手杖, 可發射 Lv10 的燃燒之手攻擊
#define CEHCKD "/adm/daemons/check_d.c"
void init()
{
add_action("burning_xxx","burning");
}
int burning_xxx(string str)
{
object tar,env,ppl=this_player();
env=environment(ppl);
if(!tar=present(str,env))
return notify_fail("burning: 沒有 "+str+" 這個目標喔.\n");
if(ppl->query_temp("casting")>0)
return notify_fail("burning: 你正在忙,沒空喔.\n");
// 判斷能否攻擊對方
if(CHECKD->check_kill(ppl,tar,env,"cast"))
return 1;
// 執行施展敘述
"/d/spell/burning_hands"->start_skill(tar,10);
// 執行防止連續呼叫設定
ppl->add_temp("casting",秒數);
// 如果不要 delay 就直接用底下
// "/d/spell/burning_hands"->start_effect(tar,ppl,10,1000,連擊數);
// 如果要延遲出手就用這個
call_out("delay_spell",秒數,tar,ppl,env);
return 1;
}
int delay_spell(object tar,object ppl,object env)
{
if(!tar || !ppl || !env) return 1;
if(environment(tar)!=env) return 1;
"/d/spell/burning_hands"->start_effect(tar,ppl,10,1000,連擊數);
// 這時如果沒有更改技能檔,則該玩家將會得到熟練度
// 而且其威力計算中的 mag 值亦會看該玩家的 mag 值
return 1;
}
Belldandy.
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 115.82.178.107 (06/16 14:59)
→
06/16 15:13, , 1F
06/16 15:13, 1F
→
06/16 15:23, , 2F
06/16 15:23, 2F
推
06/17 09:32, , 3F
06/17 09:32, 3F
→
06/17 10:02, , 4F
06/17 10:02, 4F
→
06/17 10:02, , 5F
06/17 10:02, 5F
→
06/17 10:02, , 6F
06/17 10:02, 6F
→
06/17 10:03, , 7F
06/17 10:03, 7F
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
15
19