精華區beta mud_sanc 關於我們 聯絡資訊
這個東西我忘記當初是為啥寫的, 今天搭電車回家時, 在車上 有想到它的特殊用法, 剛好也有人寫了 nine-sword 的 help, 就想到應該可以拿來用. (而其實, 這個東西早就應該要被發明出來了) special_attack=(mixed)query_temp("special_attack"); j=sizeof(special_attack); if(j>2) { for(i=0;i<j;i=i+3) { // 攻擊型式是必中攻擊 if(special_attack[i+2]) me->shut2(special_attack[i],special_attack[i+1],10000,"dam", special_attack[i+2]); } me->delete_temp("special_attack"); } 這個東西每一秒會被玩家自己判斷一次(所以 mob 不適用), 底下舉個例子來讓 wiz 們知道它怎麼用. 假設玩家身上有個東西叫做天神的輝記(laechan's mask),這 個輝記有設定特殊的參數 set("laechan mask",1), 玩家身上 帶著輝記打 hair laechan 時,我希望玩家會主動對 hair laechan 擊出一個強度 100 萬的必中攻擊... // hair laechan int special_fun(object mob,object ppl) { object ob; mixed special_attack; if(ob=present("laechan's mask",ppl)) { if(ob->query("laechan mask")) { // 先將 ob 移除 ob->remove(); special_attack=(mixed)ppl->query_temp("special_attack"); // "敘述",殺傷,對象 special_attack+=({"$N身上的天神輝記, 突然發出耀眼的強光, "+ "一道灼熱的光箭隨即激射而出, 擊向了$O", 1000000,mob}); ppl->set_temp("special_attack",special_attack); } } return 1; } 這樣,在「約一秒後」,玩家就會「自己對該怪物施展上述的攻擊」 ,而且是必中。 格式一定要照上面那樣,因為必須是 += 才能保留原先的設定。 這個東西的應用很廣,以反擊來說,因為是怪物判斷玩家有沒有反擊 技能,因此假設有,例如怪物的攻擊敘述是.. $N以強力的雷電風暴擊向$O ($N代表怪物, $O代表玩家) 偵測到反擊時... str = "$N以強力的雷電風暴擊向$O"; damage = 原先的 damage; // $N 與 $O 互調 str=substr(str,"$N","$X"); str=substr(str,"$O","$N"); str=substr(str,"$X","$O"); special_attack=(mixed)ppl->query_temp("special_attack"); special_attack+=({str+", 但是被$N反擊了回去!!". dam*看要設百分之多少的反彈威力,mob}); ppl->set_temp("special_attack",special_attack); return ({"",0}); 上面有個問題, 就是 return ({"",0}) 的部份, 實際上要修改為 return ({"no-action",0}); 當系統判斷到 "no-action" 時就「完全不顯示該攻擊」, 這樣就 只會顯示反擊,使得.. 一、反擊=怪物該次的攻擊沒有擊中玩家 二、不只如此,反擊還會將殺傷以百分之多少的比率反彈回去 這大概就是設定構想. 有了構想就可以實裝, 基本上困難度不高, 以現行來說, wiz 們至少可以玩看看 special_attack 那一部份, 如果有人有玩家, 貼一下測試報告吧^^ 基本的玩法則是, 在戰鬥中.. call me;set_temp;"special_attack";({"$N以巨大的雷電擊向$O",10000,guard}) > k guard 你對著高塔守衛喝道: 「小王八蛋﹗今日不是你死就是我活﹗」 你開始攻擊 高塔守衛. □ □ □ 戰 鬥 開 始 □ □ □ > call me;set_temp;"special_attack";({"$N以巨大的雷電擊向$O",10000,guard}) 你伺機而動,準備找尋最佳的攻擊時機... 高塔守衛以槍桿擊向你, 但是被你閃了過去. 玩家(laechan /std/user)-> set_temp( "special_attack", ({ "$N以巨大的雷電擊向$O", 10000, 怪物(guard /u/l/laechan/area/felid/mob/guard2) }) ) = 0 你以巨大的雷電擊向高塔守衛, .對高塔守衛造成身體機能嚴重的傷害!!(9999) 「高塔守衛受了點傷,但沒大礙。」 很簡單的。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.114.50.89