[wizs] 問題請教(二十三)

看板mud_sanc (Sanctuary - 聖殿)作者 (幽素)時間14年前 (2011/06/12 00:57), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串1/2 (看更多)
//劍陣的型態: //春之迷濛 - 二十四節氣普通招式為讀取temp的ats,次數2~3攻擊力減弱,延遲時間略長。 //夏之驕蹇 - 二十四節氣普通招式為單體,次數1攻擊力增強,延遲時間不變。 //秋之纍綬 - 二十四節氣普通招式為單體,次數2~3攻擊力略強,延遲時間略長。 //冬之離葬 - 二十四節氣普通招式為讀取temp的ats,次數1攻擊力不變,延遲時間略短。 //劍陣的加成: //增加劍法類的攻擊威力。 //從slash的指令或是劍法的技能檔增加讀取到劍陣便增加攻擊力 inherit OBJECT; static int i = 0,val = 0; void create() { seteuid(getuid(this_object())); set("id",({"season range","房間法術"})); set("short",HIW"四時劍陣"NOR"(Season Range)"); set("name","四時劍陣"); set("long",@LONG 一座劍陣 LONG ); set("mass",17850404); set("unit","座"); set("no_break",99); set("prevent_get",1); set("prevent_sac",1); } int room_check_poison(); // 事先宣告 void init() { object ppl = this_player(); int num,num1,num2; string PPL_NAME,PPL_CHI_NAME; if(val==0) { PPL_NAME = ppl -> query("name"); PPL_CHI_NAME = ppl -> query("chi_name"); set("id",({PPL_NAME+"'s season range" ,"season range","房間法術"})); set("short",PPL_CHI_NAME+HIW"所排設的四時劍陣"NOR "("+PPL_NAME+"'s Season Range)"); num1 = (int)ppl->query("skill/slasher heart"); //劍士之心作為時間 num1 = num1 / 500; num2 = (int)ppl->query("skill/season range"); //劍陣作為時間 num2 = num2 / 100; num = num1 * num2; set("S_R/time",num); //持續時間設定 set("name",PPL_NAME); //MOB掉落物品認主 set("target_name",PPL_NAME); //解除確定 val = 1; } add_action("disband","disband"); //解除指令 add_action("range_gift","gift"); //招式指令 if(query("callouting")) return ; set("callouting",1); room_check_poison(); return ; } int room_check_poison() { int i,r,j,l,time; object ppl,ob=this_object(),room; mixed usr; ppl = this_player(); room = environment(ob); usr = all_inventory(room); //usr = ppl->query_temp("ats"); r = random(3); time = query("S_R/time"); //移除計時 if(!ob) time = time / 2; //使用者不在時間減少 if( time < 1) { write(CYN"運轉四時劍陣的已經能源消耗完畢,劍陣一並崩然潰散。\n"NOR); remove(); } else set("S_R/time",time-1); foreach(ob in usr) { if(userp(ob)) { if(!ob) continue; if(ob->query("no_attack")) continue; if(!ob->query("ats")) continue; switch(r) { case 0: ppl->shut(HIM"\n\n$N【春之迷濛】->$O"NOR,11111,11111,({"dam","physics",2}),ob); break; case 1: ppl->shut(HIM"\n\n$N【夏之驕蹇】->$O"NOR,11111,11111,({"dam","physics",2}),ob); break; case 2: ppl->shut(HIM"\n\n$N【秋之纍綬】->$O"NOR,11111,11111,({"dam","physics",2}),ob); break; case 3: ppl->shut(HIM"\n\n$N【冬之離葬】->$O"NOR,11111,11111,({"dam","physics",2}),ob); break; } } else i++; } if(i==sizeof(usr)) { delete("callouting"); remove_call_out("room_check_poison"); return 1; } call_out("room_check_poison",2); //兩回合攻擊一次 return 1; } int disband(string str) { object ppl = this_player(); if(!str || str == "" ) return notify_fail("什麼?\n"NOR); if(str!="range") return notify_fail("你是要解除劍陣嗎?(disband range)\n"NOR); if((string)ppl->query("name")!=query("name")) return notify_fail("你並不能控制這座劍陣。\n"NOR); command("drop all"); //drop沒反應 要改別的方式 write("你解除四時劍陣了.\n"); remove(); return 1; } 問題一: 請問要怎樣讓 劍陣 在每一次 call_out("room_check_poison",2); 都能讀取到 使用者 正在攻擊的敵人 ppl->query_temp("ats"); 讓 ppl->shut(HIM"\n\n$N【春之迷濛】->$O"................ 能夠使用; 或者是 讓 劍陣 讀取到 使用者攻擊敵人參數 然後再用直接扣血的方式(但是要做抗性判斷,跟屬性閃避的判斷) 還要考慮玩家先布下劍陣時在進行戰鬥。 問題二: //增加劍法類的攻擊威力。 //從slash的指令或是劍法的技能檔增加讀取到劍陣便增加攻擊力 slash的檔案可以在哪裡看到,另一個構思中的技能:飛劍 也用得到 飛劍的攻擊與數量: 一: 只招換出一隻 飛劍 增加攻擊次數一 比如 "四時劍法" 攻擊次數為四,在讀取到飛劍參數後攻擊加一,變 成攻擊次數為五。 二: 可由 "劍士之心" 或是 "氣勁(air)" 除於三千最多能,同時有三把飛 劍(這部分由撰寫者決定)。 這裡的原則是一的情況下可以達到原攻擊的八九成,二的情況下飛劍隻 數多攻擊力就要下降。 直接從指令作修改比較快,修改劍類技能就比較麻煩也占記憶體。 以上 謝謝 Plain@Sanc -- 咽咽學楚吟 病骨傷幽素 秋姿白髮生 木葉啼風雨 燈青蘭膏歇 落照飛蛾舞 古壁生凝塵 羇魂夢中語 傷心行 李賀 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.162.109.181 ※ 編輯: amosdeus 來自: 218.162.109.181 (06/12 01:32)

06/12 06:38, , 1F
query_attackers() , query_current_attacker()
06/12 06:38, 1F

06/13 20:27, , 2F
好像要ppl->command(XXX)才對...反正很難用....
06/13 20:27, 2F
文章代碼(AID): #1DyvwE0s (mud_sanc)
討論串 (同標題文章)
文章代碼(AID): #1DyvwE0s (mud_sanc)