mud_sanc 板


LINE

inherit ROOM; static object times_check; void create() { ::create(); seteuid(getuid(this_object())); set("short","== 星艦企業號 =="); set("boat_name","_starcraft_boat"); // 航行計劃 set("plan",({ ({30,"/x/x/xxx1"}), ({330,"/x/x/xxx2"}), ({630,"/x/x/xxx3"}), })); set("plan_time",900); call_out("cancel_effect",2,this_object(),"start_plan"); } int cancel_effect(object boat,string med_names) { string names,files; mixed tmps; int i,j,t,s1,s2; object room; if(!times_check) if(catch(times_check=find_object_or_load("/open/cmds/times_check"))) return 1; names=query("boat_name"); files=base_name(boat); tmps=query("plan"); j=sizeof(tmps); if(med_names=="start_plan") { // 將 times_check 裡與 boat_name 有關的航行計劃都移除 // 重新設定一個新的航行計劃 times_check->remove_names(names); // 先讀取總航行時間 t=(int)query("plan_time"); // 設定該航行時間後重新執行 // 當 update 船隻時, 船隻會先清掉 times_check 的資料 // 當 update times_check 但是沒有 update 船隻時,起碼 // times_check 知道時間到了時要重啟該船的航行計劃 times_check->set_times_check(names,files,"start_plan",t); // 然後開始設定航行計劃 for(i=0;i<j;i++) { times_check->set_times_no_save(names,files,"plan_"+i+"_1",tmps[i][0]); times_check->set_times_no_save(names,files,"plan_"+i+"_2",30+tmps[i][0]); times_check->set_times_no_save(names,files,"plan_"+i+"_3",60+tmps[i][0]); } return 1; } // 接下來就是針對各航行計劃做處理 sscanf(med_names,"plan_%d_%d",s1,s2); // 停靠, 打開出口 if(s2==1) { room=find_object_or_load(tmps[s1][1]; set("exits/out",tmps[s1][1]); tell_room(boat,"廣播: 已經抵達"+room->query("short")+"。\n"); room->set("exits/enter",files)); tell_room(room,"廣播: "+query("short")+"已經抵達這裡了。\n"); } // 即將開走的廣播 if(s2==2) { room=find_object_or_load(tmps[s1][1]; // 已經開到最後一個港口 if(s1==j-1) tell_room(boat,"廣播: 即將駛離"+room->query("short")+",開往"+ find_object_or_load(tmps[0][1])->query("short")+"。\n"); else tell_room(boat,"廣播: 即將駛離"+room->query("short")+",開往"+ find_object_or_load(tmps[s1+1][1])->query("short")+"。\n"); tell_room(room,"廣播: "+query("short")+"即將駛離這裡。\n"); } // 準備開走, 關閉出口 if(s2==3) { room=find_object_or_load(tmps[s1][1]; delete("exits/out",tmps[s1][1]); // 已經開到最後一個港口 if(s1==j-1) tell_room(boat,"廣播: 已經駛離"+room->query("short")+",開往"+ find_object_or_load(tmps[0][1])->query("short")+"。\n"); else tell_room(boat,"廣播: 已經駛離"+room->query("short")+",開往"+ find_object_or_load(tmps[s1+1][1])->query("short")+"。\n"); room->delete("exits/enter",files)); tell_room(room,"廣播: "+query("short")+"已經駛離這裡了。\n"); } return 1; } 從上面可發現一些缺點,最明顯的缺點就是 times_check 被頻繁呼叫, 所以雖然船隻可以用 times_check 跑,但或許不用 times_check 比較 好,sanc 有 BOAT 樣本,應該已足夠支援,可參考菲里德軍艦寫法。 /d/tatak/room/boat.c ==菲里德軍艦== 一艘來自菲里德王國的軍艦. 菲里德王國位於亞雷克萊斯特大陸 的東側海灣國家, 是世界軍事強國之一, 擁有的砲艦數目也是數 一數二的. 如果你搭上軍艦, 可以跳下甲板(jumpdown). 明顯出口有: 無 > 老船長:西斯迪克港到了。 Laechan --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 210.61.157.53







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燈, 水草

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

TOP