mud_sanc 板


LINE

// spell_practice1.c // Laechan@Sanc add in 2009/10/24 // 基本原則是以練習室的心跳函數來控制所有在這個房間的人 // 它們的練習, 這樣可一次處理多人的練習 inherit ROOM; mapping practice=([]); // practice = ([ // "gravity":數值, // 重力數值 // // "on_2" :代表啟動上面 // // 以上為練習飄浮術之用(它會抓身上有無飄浮術) // // "lv" : 數值, // 攻擊級數 // "hit" : 數值, // 攻擊連擊數 // "time" : 數值, // 幾秒後啟動攻擊 // // "on_1" : 代表啟動上面 // // 以上為練習護盾法術之用(它會抓身上的護盾) // // "on_3" : 代表啟動的防壁護罩 // // 以上為自行練習攻擊法術之用 // // ]), void create() { ::create(); seteuid(getuid(this_object())); set("light",1); set("short","法術練習室"); set("long",@LONG      四周是一望無際的巨大空間。在這裡你可以使用      兩個指令:tune 及 spells。 LONG ); // 禁止不正常脫離 set("no_recall",1); set("no_return",30); set("exits/out",__DIR__+"spell_practice"); set("pre_exit_func/out","hi"); set_heart_beat(1); } int hi() { // 特殊情況下無法 out // 也可能以出口開啟狀態無法啟動任何東西為設定 return 1; } // spell_practice = 練習室申請處 int env_remove(mixed obs) { if(obs) obs->move(__DIR__+"spell_practice"); this_object()->remove(); return 1; } int heart_beat(int i) { string names=(string)query("names"); // 練習室的'登記'者 object ppl,env=this_object(); mixed obs; // 房間的所有物件 // 房間沒有這個人時就把練習室幹掉 if(!ppl=present(names,env)) return env_remove(obs); obs=all_inventory(env); if(!userp(ppl)) return env_remove(obs); // 將 ppl 跟 obs 分開 // obs 會受到的影響是房間的重力等因素 obs-=({ppl}); // ppl 的部份 // obs 的部份 foreach(ppl in obs) if(ppl && userp(ppl)) gravity_effect(ppl); // 重力影響; return 1; } void init() { object ppl=this_player(); if((string)query("names") == (string)ppl->query("name") || wizardp(ppl)) { if((int)practice["gravity"]<1) practice["gravity"]=1; add_action("tune_xxx","tune"); add_action("on_xxx","on"); add_action("off_xxx","off"); add_action("spells_xxx","spells"); } } int tune_xxx(string str) { string a,b; int a1,a2,n; if(!str || str=="") return notify_fail(@LONG tune 指令說明: ================================================================= tune 1-1 to [n] 將魔法攻擊等級設定為 n, 最小 1 最大 5 tune 1-2 to [n] 將魔法連擊次數設定為 n, 最小 10 最大 99 tune 1-3 to [n] 設定魔法攻擊的時間在 on 1 之後 n 秒 n 最小 5,最大 20。 tune 2 to n 設定練習室的重力倍數為 n 倍, 最小 1 最大 99 on [n] 啟動第 n 項設定 off [n] 關閉第 n 項設定 restart [n] 重覆第 n 項設定 (註:restart 2 無意義) ================================================================= Laechan@Sanc in 2009/10/24 LONG ); if((int)practice["cant_tune"]>0) return notify_fail("tune: 練習室正在執行程式,你現在不能 tune 喔。\n"); if(sscanf(str,"%s to %s",a,b)!=2) return notify_fail("tune: 你的指令語法不對喔.\n"); if(atoi(a)==2) a1=2; else if(sscanf(a,"%d-%d",a1,a2)==2); else return notify_fail("tune: 你的指令語法不對喔.\n"); if(a1<1 || a1>2) return notify_fail("tune: 你的指令語法不對喔.\n"); n=atoi(b); if(n<1 || n>99) return notify_fail("tune: 你不能給 "+b+" 這樣的值喔.\n"); switch(a1) { case 1: switch(a2) { case 1: if(n<1 || n>5) return notify_fail("tune: 魔法攻擊等級只能設定在 1~5 之間喔.\n"); practice["lv"]=n; return notify_fail("tune: 你將魔法攻擊的等級設定為 ["+n+"] 級了。\n"); break; case 2: if(n<10 || n>99) return notify_fail("tune: 魔法連擊次數只能設定在 10~99 之間喔.\n"); practice["hit"]=n; return notify_fail("tune: 你將魔法連擊的次數設定為 ["+n+"] 連擊了。\n"); break; case 3: if(n<5 || n>20) return notify_fail("tune: 魔法連擊時間只能設定在 5~20 秒後喔.\n"); practice["time"]=n; return notify_fail("tune: 你將魔法攻擊的時間設定在 ["+n+"] 秒後了。\n"); break; default: return notify_fail("tune: 沒有 "+a1+"-"+a2+" 這個設定項喔。\n"); break; } break; case 2: a2=(int)practice["gravity"]; if(n==a2) return notify_fail("tune: 練習室現在的重力倍數已經是 "+n+" 了喔.\n"); practice["gravity"]=n; return notify_fail("tune: 你將練習室的重力倍數調整為 "+n+" 了。\n"); break; default: return notify_fail("tune: 沒有第 "+a1+" 設定項喔。\n"); break; } } int on_xxx(string str) { int n; object ppl=this_player(); if((string)query("names")!=(string)ppl->query("name")) return 0; if(!str || str=="") return notify_fail("語法:on [n],如 on 1、on 2 等。\n"); n=atoi(str); if(n<1 || n>2) return notify_fail("目前你只能下 on 1 跟 on 2 喔。\n"); if(practice["on_"+n]) return notify_fail("on: 第 "+n+" 項已經啟動了喔。\n"+ " 關閉的指令是 off,重啟動的指令是 restart。\n"); if(n==1) { if(!practice["lv"]) return notify_fail("在 on 1 之前你要先 tune 1-1 to [級數] 喔.\n"); if(!practice["hit"]) return notify_fail("在 on 1 之前你要先 tune 1-2 to [連擊數] 喔.\n"); if(!practice["time"]) return notify_fail("在 on 1 之前你要先 tune 1-3 to [時間] 喔.\n"); practice["on_"+n]=1; n=practice["time"]; practice["when_start"]=n+time(); set_heart_beat(1); return notify_fail("on: 你啟動了[能量盾]的練習設定.\n"+ "┌──────────────┐\n"+ sprintf("│魔法攻擊級數  :%d │\n", practice["lv"])+ sprintf("│魔法攻擊連擊數 :%2d │\n", practice["hit"])+ sprintf("│魔法攻擊執行時間:%2d 秒後 │\n", practice["time"])+ "└──────────────┘\n"+ (ppl->query_temp("shield2") ? "你已做好衝擊準備。\n" : HIR"你尚未施展護盾,請盡快施展!"NOR"\n"); } int spells_xxx(string str) { if(!str || str=="") return notify_fail(@LONG spells(法術練習室專用指令)說明: ================================================== spells [數量] [法術名稱] 1.數量的多寡與 mag 屬性有關 2.剩餘的 sp 值也會影響可擊發的數量 3.不需加級數(會自動施展最大級數) 4.部份技能作用在自己身上的效果,可提高擊發數量 // 底下是相關的設定備忘錄 比方你按 2,它會顯示它已經在天空張設了結界,請你對天空發 出「任意數量的攻擊法術」,指令以底下為例... spells 99 fire 就是對天空發出 99 發的火系法術,它會根據你的「能力」來決 定你發完後「是否沒力了」,只要處於沒力狀態,就必須等回復 了才能再練習。 所以選擇的訣竅,就是摸索出依自己目前的「能力」能擊出的最 多數量,使自己不會沒力、「休息一會兒」即可再練習。 1. 數量越大,熟練度平方影響 2. 數量超越極限的話只能發出最大的 n 發, 然後需休息的時 間較久 (不管 sp 有沒有回滿) --



※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 61.225.162.212 (06/09 15:47)
1F:推 justinj :.....要不要多設一個no_quit......avert 06/09 17:15
無論任何地方都可 quit,這是目前會確保的。
2F:推 justinj :....return可以將團員從裡面call出來..進去時強制 06/09 17:55
3F:→ justinj :p leave.... 06/09 17:55
4F:推 justinj :還是說這是單人的...那就沒此問題..beat_heart有判斷 06/09 17:57
5F:推 justinj :漂浮術---->重力試鍊,解毒術-->各種狀態毒素試鍊 06/09 18:14
6F:→ justinj :遠見法術--->比較像巫師之眼(定期觀察)...... 06/09 18:16
7F:→ justinj :這個是要控制及持續....那維持魔力輸出的試鍊了.. 06/09 18:18
限制 return 不能進去,是因為那是一個特別的空間, 因此也無法 recall。 在規劃上允許申請人可讓玩家進入該空間看該玩家練習 ,並且還能幫申請人 cast。(採允許制) 而且你要在裡面組隊、聊天、或幹嘛也隨你。 因為我有看到有人在牧師練習室 pr 時「不安於室」, 我不太想做機車的限制,但限制是一定要的,所以這個 練習室會跟牧師的不同,只要法師一離開,練習室就會 重置,而且短時間內該玩家無法再申請練習室。 (未來也傾向讓申請練習室需要付出代價,錢是一種) 目前輔助技能的部份也只規劃漂浮術跟護盾。我有考慮 讓主法副牧也能在裡面練聖光盾。 ※ 編輯: laechan 來自: 122.117.3.82 (06/09 19:43)
8F:推 justinj :牧師不安於室是因為學點不足..而且pr到滿要很久,所以 06/09 20:10
9F:→ justinj :寫成跑機狀態.... 06/09 20:11
10F:推 justinj :...也就是主人一定要在..其它人可以走進走出..... 06/09 20:14
11F:→ laechan :那個我不會做什麼限制,不要太離譜我都當沒看到 06/09 20:19
12F:推 justinj :...pr聖光盾..2種盾的性質太過接近了..... 06/09 20:29
13F:推 hmml :牧師bless到後面間隔150以上,沒辦法像法師一樣在裡 06/09 20:58
14F:→ hmml :面發呆.... 06/09 20:59
※ 編輯: laechan 來自: 122.117.3.82 (06/14 20:16) ※ 編輯: laechan 來自: 61.225.162.241 (06/17 10:36) ※ 編輯: laechan 來自: 61.225.162.241 (06/17 14:20) ※ 編輯: laechan 來自: 61.225.160.229 (06/18 09:24)







like.gif 您可能會有興趣的文章
icon.png[問題/行為] 貓晚上進房間會不會有憋尿問題
icon.pngRe: [閒聊] 選了錯誤的女孩成為魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一張
icon.png[心得] EMS高領長版毛衣.墨小樓MC1002
icon.png[分享] 丹龍隔熱紙GE55+33+22
icon.png[問題] 清洗洗衣機
icon.png[尋物] 窗台下的空間
icon.png[閒聊] 双極の女神1 木魔爵
icon.png[售車] 新竹 1997 march 1297cc 白色 四門
icon.png[討論] 能從照片感受到攝影者心情嗎
icon.png[狂賀] 賀賀賀賀 賀!島村卯月!總選舉NO.1
icon.png[難過] 羨慕白皮膚的女生
icon.png閱讀文章
icon.png[黑特]
icon.png[問題] SBK S1安裝於安全帽位置
icon.png[分享] 舊woo100絕版開箱!!
icon.pngRe: [無言] 關於小包衛生紙
icon.png[開箱] E5-2683V3 RX480Strix 快睿C1 簡單測試
icon.png[心得] 蒼の海賊龍 地獄 執行者16PT
icon.png[售車] 1999年Virage iO 1.8EXi
icon.png[心得] 挑戰33 LV10 獅子座pt solo
icon.png[閒聊] 手把手教你不被桶之新手主購教學
icon.png[分享] Civic Type R 量產版官方照無預警流出
icon.png[售車] Golf 4 2.0 銀色 自排
icon.png[出售] Graco提籃汽座(有底座)2000元誠可議
icon.png[問題] 請問補牙材質掉了還能再補嗎?(台中半年內
icon.png[問題] 44th 單曲 生寫竟然都給重複的啊啊!
icon.png[心得] 華南紅卡/icash 核卡
icon.png[問題] 拔牙矯正這樣正常嗎
icon.png[贈送] 老莫高業 初業 102年版
icon.png[情報] 三大行動支付 本季掀戰火
icon.png[寶寶] 博客來Amos水蠟筆5/1特價五折
icon.pngRe: [心得] 新鮮人一些面試分享
icon.png[心得] 蒼の海賊龍 地獄 麒麟25PT
icon.pngRe: [閒聊] (君の名は。雷慎入) 君名二創漫畫翻譯
icon.pngRe: [閒聊] OGN中場影片:失蹤人口局 (英文字幕)
icon.png[問題] 台灣大哥大4G訊號差
icon.png[出售] [全國]全新千尋侘草LED燈, 水草

請輸入看板名稱,例如:BuyTogether站內搜尋

TOP