Re: [wizs] 善見城 更新 申請qc
看板mud_sanc (Sanctuary - 聖殿)作者laechan (小太保)時間15年前 (2010/04/20 10:53)推噓0(0推 0噓 2→)留言2則, 2人參與討論串2/2 (看更多)
※ 引述《amosdeus (幽素)》之銘言:
: 道具 /d/ppl/wide/virtue/obj/
: /d/ppl/wide/virtue/obj/have.c
switch((int)query("plain_have_lv"))
下次可以這樣做,增加判斷的確定性。
另外,有其它的方法就是迴圈式累加,不過因為這是物品
而且寫在 init 中,所以你的寫法對系統負擔較小。
如果 plain_have_lv 一旦設了就不會再變更的話,你還
可以在物品已追加設定 short 後再增設一個 mark 來判
斷「已經設了 short」,這樣該物品在下次被玩家重新載
入前就都不會因為觸發 init 而一再地對 short 做更動。
(但是若 plain_have_lv 屬於變動性的那就保持原寫法)
另外關於經驗值損失的部份要考量玩家在這方面會產生的
錯愕感,因為 long 裡頭有提到會失敗但是沒有說失敗會
怎樣。沒有說會怎樣是 ok 的,但相對的玩家就不會知道
失敗會怎樣。
所以有另一種方式就是比方存一次扣 n,改成存一次扣
n/10 或 n/100,這樣就算失敗也只損失微量,而玩家也
只需要有 n/10 就能存,當然需累積到 n 才能↑。
這樣的方式你也可以考量,或失敗時損失 n/100~n/10,
玩家「同樣無法"馬上"再存」。
下面另外有一個 switch,那個你可以直接做這樣..
init();
這樣它就會跑一次你上面寫的 init。
(add_action 重覆跑沒關係不會重疊)
: /d/ppl/wide/virtue/obj/sk_rock2.c
set("id", ({"record rock","record","rock"}));
set("short",YEL"蓄能"HIW"玉石"NOR"(Storage Rock)");
short 有看到什麼 id,在「id」的設定裡就至少要有全
小寫的 "storage rock"。
add("study",([
.
.
.
]));
「add mapping 資料」我還沒試過,你可能要試一下。
一般是 set。
另外,這東西應該可以 inherit /std/book.c,我剛看
了一下 sk_rock 並沒有超出 book 無法適用的範圍。
如果你需要自訂時就建議你寫 /std/book2.c。
(跟 monster.c 無法符合前代大神的需要因此他們另外
又寫了 smonster.c 的做法類似,他們寫的 smonster.c
就一直延用至今。)
: /d/ppl/wide/virtue/obj/wind.c
: 裝備 /d/ppl/wide/virtue/eq/
: /d/ppl/wide/virtue/eq/reliquiae.c
set("id",({"infinity reliquiae","ring"}));
set("short",EQ_NAME+HIC"("HIB"Infinity Reliquiae"HIC")"NOR);
short 有看到 infinity reliquias 時, id 最好有
1)infinity reliquiae
2)reliquiae
我看過別的 mud 在 short 有這樣的做法..
(Ring, Infinity Reliquiae)
降你 id 那樣設就 ok。
: /d/ppl/wide/virtue/eq/diwu_horn.c
在 stud_havetion 裡面有兩個 return 1 for write,
改成 return notify_fail
另外,就算是已鑲嵌好也可以 return notify_fail("");
: NPC /d/ppl/wide/virtue/npc/
: /d/ppl/wide/virtue/npc/jean.c
void init()
{
.
.
call_out("imprecate",100);
我不建議這樣寫喔。因為你在 call_out 前面並沒
有判定 mob 是否已有 call_out,這會造成怪物被
init 幾次就 call 幾次,而且你定的秒數並不短.
我先前有一篇文章也貼了 call_out 有被重覆呼叫
的情況。
ppl->set("skill/affliction",100);
ob1->remove();
這個則是小問題,通常我會建議先 ob1->remove()
再 ppl->set。
: /d/ppl/wide/virtue/npc/naomi.c
i++ 那邊可以用迴圈判定,你可以順便把需判定的
物品 id define 或宣告成一個 mixed,先判斷簡單
的寫在迴圈內,再額外判斷 <= 那個就行了。
這樣日後要 modify 你 mob 的 wiz 也比較容易從
你單獨宣告的 mixed 去改。
ob1~ob6 則用一個 mixed obs=({}) 去累存即可。
obs+=({ 某物 });
這樣就可以直接一行 obs->remove();
: 房間 /d/ppl/wide/virtue/room/
: /d/ppl/wide/virtue/room/193.c
部份 return 1 要盡量改為 return notify_fail 的寫法。
: /d/ppl/wide/virtue/room/194.c
: /d/ppl/wide/virtue/room/195.c
: 技能
: /doc/sk/affliction
: /d/spell/affliction.c
: 你開始唸起古老的咒文: ~ 99 ~ ~ ~ 授予苦痛 ~
: 你緩緩唸道: 非屬自然的不潔生物,奉我之命化為塵土,回歸大地!
: 你將光芒凝聚在手心, 緩緩形成淨化邪惡的力量...
: 你開始唸起古老的咒文: ~ 99 ~ ~ ~ 淨化術 ~
: 我是由淨化術修改授予苦痛,
: 應該要有 #define MSG 裡的敘述,
: 請 laechan 幫忙看一下。
: Plain@Sanc
start_skill 那樣的寫法一般會寫為底下...
if(xx1)
oo1;
else if(xx2)
oo2;
else if(xx3)
oo3;
else
oo4;
return 1;
你可以參考看看。
STR31[random(sizeof(STR31))]
我有些 spell 也會這樣寫,不過我 qc 時就會建議
若 sizeof(STR31) 是確定的,那你代入確定值給它
就好了,例如 STR31 size 確定就是 5 那就..
STR31[random(5)]
以上,我大概只看程式部份,數值或設定部份就由
plain 自行斟酌或參考其它 wiz 的意見。
Laechan
--
※ 發信站: 批踢踢實業坊(ptt.cc)
※ 編輯: laechan 來自: 61.225.161.161 (04/20 10:58)
→
04/21 00:05, , 1F
04/21 00:05, 1F
→
04/21 00:52, , 2F
04/21 00:52, 2F
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
mud_sanc 近期熱門文章
PTT遊戲區 即時熱門文章