Re: [閒聊] en 5000 的特殊設定
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間14年前 (2012/03/20 09:04)推噓0(0推 0噓 2→)留言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
03/21 05:02, 2F
討論串 (同標題文章)
完整討論串 (本文為第 2 之 2 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章
-22
41