Re: [閒聊] en 5000 的特殊設定

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間14年前 (2012/03/20 09:04), 編輯推噓0(002)
留言2則, 2人參與, 最新討論串2/2 (看更多)
normal_attack 有一段是這樣的... if(mod=me->get_skind(wptype,2)) get_skind 則定義在 user.c mixed get_skind(string skind,int times) { if(query_temp("en/"+skind) && md[skind]) { int i; if(cal_cost(skind,0,times)) { i=fz[skind]; if(i==1) return ({md[skind][0],co[skind][2],co[skind][3]}); return ({md[skind],co[skind][2],co[skind][3]}); } } } 所以基本上是這樣子運作的,假設玩家 en return lance, 則 md["lance"] 就會儲存 return lance 的 en 資訊,同時 me->set_temp("en/lance","return lance"); 而且不只 md 還有 co 也會儲存。 那麼,這樣寫其實是有問題的(每次都得傳一堆資料過去), 不過暫時就先這樣子。 那假設新特攻指令叫 forces,則關鍵程式段如下... if(mod=me->get_skind(wptype,1)) { damage=mod[1]; damage=經過必要計算得出新值; hit_chance=mod[2]; hit_chance=經過必要計算得出新值; me->shuts(mod[0],damage,hit_chance,types) } 這裡會出現兩個新問題 一、要用迴槍刺擊原先的敘述,還是要創造新的敘述? 答案是「先用原先的敘述」,以節省寫作時間 二、types 要怎麼定? 答案是「先用 ({"physics","dam",1})」以後再改 shuts 的函數內容大致如下... // 讀取全部的戰鬥目標 ats = me->query_attackers(); // 然後把$O改成"前方" msg = substr(msg,"$O","前方"); // 接著就先秀出訊息 show(me,me,msg); foreach(tar in ats) { 經過必要的判斷; show(me,tar,"",damage); } 也就是說,傳統的做法是 show(me,tar,msg,damage) 新的做法就是做兩段 show,一段在 foreach 外面,一段 在 foreach 裡面。 其呈現就如下... > look Lv86.王宮侍女(Court Lady) Lv90.一對約會的情侶(Lovers) [2位] Lv80.一隊王城守衛軍(Guard) [5位衛兵] Lv76.菲里德城民(Felid Older) Lv65.菲里德城民(Felid Woman) Lv70.菲里德城民(Felid Man) > call here;test_shows 妳對著前方擊出一道強大的劍氣! 王宮侍女受了點傷,但沒大礙。 「王宮侍女受了點傷,但沒大礙。」 一對約會的情侶受了點傷,但沒大礙。 「一對約會的情侶受了點傷,但沒大礙。」 一隊王城守衛軍受了點傷,但沒大礙。 「一隊王城守衛軍受了點傷,但沒大礙。」 菲里德城民受了點傷,但沒大礙。 「菲里德城民受了點傷,但沒大礙。」 菲里德城民受了點傷,但沒大礙。 「菲里德城民受了點傷,但沒大礙。」 菲里德城民受了點傷,但沒大礙。 「菲里德城民受了點傷,但沒大礙。」 這就是上次提到的部份,由上面可知理論上是可行的, 星期三再來實作看看,新指令名預定 forces。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 223.141.133.149

03/20 09:04, , 1F
該上班了..
03/20 09:04, 1F

03/21 05:02, , 2F
cheer
03/21 05:02, 2F
文章代碼(AID): #1FPzUi6f (mud_sanc)
文章代碼(AID): #1FPzUi6f (mud_sanc)