mud 板


LINE

看板 mud  RSS
※ 引述《happyhero (2010)》之銘言: : Es2lib的物件生成 有種以虛擬物件的方式 : 例如有個檔案是 /std/room.c : 可以在程式碼裡用 : obj=new("/std/room.c"); : 來生成一個新的物件 : 然後檔名會變成/std/room#33 : /std/room#76 : /std/room#177 : .... : (都是原檔名後面增加#數字) : 想請問虛擬物件的檔名是如何產生? : (#後面的數字是亂數決定或是有規律?) : 有辦法改變或指定虛擬物件生成後的檔名嗎? : 想說如果可以的話 : 就可以方便管理整個都用虛擬物件生成的區域 : 最近在寫類似OLG副本的東西 : 例如某個玩家happyhero開啟了副本 : 那那個區域房間名就會以 /std/room/happyhero/0/0/0 : /std/room/happyhero/0/1/0 : 後面數字表示三維空間(x,y,z) 0/0/0=第0層空間的(0,0) : 這樣還可以做出無限層的地下城冒險區域 這個一般建議是不要這樣寫,比方說單人副本,省時省力 的方法就是「全部運作在同一個房間」。 例如該房間平常長底下這樣.. 地下城--一樓 這裡可看到一條長長的走道,走道上十分的陰暗,不遠處 似乎有著水滴的聲音。 明顯出口有: north, south. 則當你往 north 走時 set("pre_exit_func/north","check_north"); object tmp_room; int check_north() { object ppl=this_player(); int *pos=([]); pos=query("pos"); // 讀取房間座標 ({x,y}) 做一下必要的判斷如戰鬥中,etc...時不能走動; if(!tmp_room) tmp_room=find_object_or_load(TMP_ROOM); // 自設一個房間當 tmp_room // 往北走 => y+1 set("pos",({pos[0],pos[1]+1}); set("long",set_room_long()); // 重設房間 long set("exits",set_room_exits()); // 重設房間出口 ppl->move(tmp_room); // 先把玩家移往 tmp_room ppl->move_player(this_object()); // 瞬間再把玩家移回來 clone_mob(); // 做一下房間怪物的隨機召喚 return 1; } 這樣就可以模擬一個玩家在一個「空間」裡面的走動跟戰鬥 ,set_room_long 等函數就看你怎麼寫。 這樣當 n 位玩家同時在解這個「單人任務」時,就可以每個 玩家給一個房間來跑(tmp_room 則是大家共通的),而假設是 n 人組隊型的任務,就限制不能脫隊即可。 而這樣的房間也可以事先寫好,例如預設同一時間只能 10個 團體(包含單人)解任務,那就一次寫好十個房間就可以了,這 樣玩家在解任務時會變更的就只有物件資料(記憶體資料),檔 案的讀寫部份就會比較少。 至於檔案部份一般是 base_name 跟 file_name 的區別,後者 或許你可以找找 simul_efun 區是不是有該函數,那說不定就 能找到後頭的編號是怎麼編的。 (印象中是物件生成流水號) --



※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 223.142.203.159
1F:推 happyhero:全部運作在同一個房間的做法不錯 12/28 20:20
2F:→ happyhero:這樣就只剩遇敵戰鬥的問題了 限制有mob在時不能逃跑 12/28 20:21
3F:→ happyhero:或是看不到不同坐標的生物 12/28 20:23
一般來說有一種做法並不需要知道 file_name 所加的流水號。 例如你因為需要而得在同一時間 new 出 n 個物件,那麼你可以 做個 control_room object cr,new_room; int *pos=([]); string new_pos; if(!cr) cr=find_object_or_load(CONTROL_ROOM); j=sizeof_rooms; // 需 new 出的 n 個房間 for(i=0;i<j;i++) { new_room=new(room); // new 出新的房間 pos=get_pos(i); // 取出第 i 個房間的座標 new_pos=implode(pos,"_"); // 把座標變成 a_b_c 這種字串 cr->set("new_pos",new_room); } 這樣你要讀取座標 (a,b,c) 的房間時 this_room = (object)cr->query(""+a+"_"+b+"_"+c); ※ 編輯: laechan 來自: 122.117.7.33 (12/28 21:00)
4F:推 happyhero:XD...我剛才在寫control room的方式 這裡就出現了 12/28 21:52
5F:→ happyhero:不過剛事先用單向道做測試 所以很單純記錄1->2->3->4... 12/28 21: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燈, 水草

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

TOP