[wizs] 修正 shut 呼叫

看板mud_sanc (Sanctuary - 聖殿)作者 (小太保)時間15年前 (2010/09/11 22:27), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串1/1
假設底下程式段... 玩家->shut(千步氣功拳超大字圖,5000000,9999,"air",怪物); 首先,它會呼叫 /std/user/attack.c 的 shut 函數,把超大字圖 傳給它,接著該函數會做底下的事... SHUT_D->shut_tar(千步氣功拳超大字圖,5000000,9999,"air",怪物); 也就是說它又把超大字圖傳給 SHUT_D,這時 SHUT_D 會判斷玩家 有沒有 setdata no_damage_msg,有的話就把該字圖訊息變更... 千步氣功拳超大字圖 變更為 XXX -> OOO 今天修改上述呼叫流程... 一、玩家->shut(千步氣功拳超大字圖,5000000,9999,"air",怪物); 二、在 /std/user/attack.c 的 shut 函數裡頭就馬上判斷玩家有   沒有設 no_damage_msg.. 有設 no_damage_msg SHUT_D->shut_tar(XXX -> OOO, ......); // 直接在這裡就把簡略的訊息傳過去 沒設的話 SHUT_D->shut_tar(千步氣功拳超大字圖,5000000,9999,"air",怪物); 因為 shut 是寫在玩家物件的,所以你有設 no_damage_msg 你在發 特攻訊息時「就會比別人順」,沒設 no_damage_msg 的就會比較不 那麼順,特別是特攻訊息寫的很長、很多行、很華麗、顏色很多的.. 各位可以參考。這裡也提供出了一個點子,玩家的 shut 函數可以定 位為一個過濾器,當將來 shut_tar 跟 new_defance 一樣改為全域 函數後,在真正呼叫 shut_tar 前就可以在物件的 shut 內先行針 對訊息做過濾。 這比直接將 shut 改成全域函數還有意義(我本來要做的)。 Laechan -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.117.3.82
文章代碼(AID): #1CYv7b85 (mud_sanc)
文章代碼(AID): #1CYv7b85 (mud_sanc)