Re: [wizs] 善見城 更新 申請qc

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間15年前 (2010/04/20 10:53), 編輯推噓0(002)
留言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
都修改了,/u/p/plain/affliction.c請在cp到/d/spell
04/21 00:05, 1F

04/21 00:52, , 2F
已 cp
04/21 00:52, 2F
文章代碼(AID): #1BpHSv98 (mud_sanc)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 2 之 2 篇):
文章代碼(AID): #1BpHSv98 (mud_sanc)