[wizs] 不必學會某技能、也能施展某技能

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2011/06/16 14:59), 編輯推噓1(106)
留言7則, 3人參與, 最新討論串1/1
這個東西其實很簡單,只是要更動相對應的檔案而已。 所以如果有要做的話,最好是做統一的更改。 指令呼叫做法: /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
暫時玩家設定no_improve_skill....avert
06/17 09:32, 3F

06/17 10:02, , 4F
目前有想過多增加一個 count_dam or count_effect 的
06/17 10:02, 4F

06/17 10:02, , 5F
函數,然後把像是 mag,air 等數值傳過去算
06/17 10:02, 5F

06/17 10:02, , 6F
或者把 ppl->query("stat/mag") 的 ppl 改成別的東西
06/17 10:02, 6F

06/17 10:03, , 7F
↑上面以前倒是有做過
06/17 10:03, 7F
文章代碼(AID): #1D-QdPiY (mud_sanc)
文章代碼(AID): #1D-QdPiY (mud_sanc)