中文說明(zhTW)

經過最近的分析和猜測, 暴雪應該是按照之前的藍貼所言, 限制了觀察的頻率, 防止UI大量自動觀察給服務器帶來壓力.

但是令人無法理解的是, 一旦觀察頻率過快, 之後的所有觀察都將失敗, 而且, 無論/reload還是小退, 甚至換另外一個帳號, 都不能恢復, 總之, 不把wow的客戶端關了重開(俗稱大退), 之後你就別想觀察了. 這是暴雪的bug, 藍貼地址. "Inspecting other players can cease to function until the client is restarted. "

于是, 我寫了這個插件, 通過保護觀察API, 阻止GearScore等插件頻繁觀察, 保證玩家的觀察請求. 具體來說, InspectLess插件限制NotifyInspect函數2.5秒內只能調用一次. 這個2.5秒是一個經驗值, 經過測試沒有問題, 似乎暴雪的限制是2秒, 插件留有0.5秒餘地. 如果還是經常鎖死, 則可以運行'/inspectless 5'命令調高間隔即可.

在開發和測試的過程中, 以及通過用戶的反饋, 目前發現當前版本有四種情況會導致觀察失效:

  1. 過于頻繁的觀察, 測試方法:關閉全部UI, 用/inspect宏連續觀察一個人, 三四下就不能觀察了
  2. 第三方插件在玩家死後仍然進行觀察. 測試方法:自殺然後觀察別人.
  3. 跨服觀察第一次可以, 等很久之後第二次也會鎖死. 去跨服戰場或隨機試試就知道了. 而我組了5個同服的排進隨機, 不會出問題, 所以應該跟地點無關.
  4. 被觀察的人物在發起觀察請求到返回結果的期間(最多可能會長達1秒), 進行了瞬移, 比如排進戰場/副本, 或是小退/爐石/ 進傳送門. 測試方法: 雙開, 其中一個號爐石, 另一個號在其爐石讀條幾乎到達終點的瞬間觀察, 正常的話就鎖住了.

LibInspectLess可以有效防止第1種和第2種情況, 第3種是通過完全禁止觀察其他服務器的玩家來防止的. 而第4種情況則沒有任何辦法避免, 只能等待暴雪的fix. 我建議不要使用TipTacTalent等鼠標滑過就觀察的插件, 并將觀察間隔調高(比如/inspectless 10), 可以暫時降低一點鎖住的幾率.

一位朋友的問題解答

  • Q: BLZ限定的合法觀察頻率大約是多少?有測算嗎?
  • A: 這個具體的限制措施不知道, 反正如果快速使用宏來觀察, 連續點四五下就會鎖住. 究竟是限制兩次觀察之間的時間間隔還是一段時間內的觀察次數, 那就只有暴雪程序員才知道了. 經過簡單測試, 3秒一次觀察, 點了三四分鐘都沒被鎖. 兩秒一次的話, 點幾下就不行了. 因爲一旦鎖定就得關游戲重進, 要進一步測試太麻煩了.
  • Q: 是什麽會導致頻繁的觀察?是GS嗎?(GS現在已經是選中玩家才觀察了,觀察頻率即使是在主城也應該遠遠低于1次/秒)
  • A: GearScore, TipTacTalent模塊, 目標換裝等. 總之搜索一下哪個插件代碼裏有NotifyInspect就知道了
  • Q: 如果不使用這個插件,只靠禁用一些現有的插件(說的還是GS之類的),能否解决這個問題?
  • A: 我使用了TargetButtons插件, 鼠標不小心雙擊一下觀察按鈕就可能鎖了. 如果有信心保證自己3秒之內只觀察一次, 可以不裝這個. 其實這個插件占用很小的
  • Q: 這個“觀察”是否包括觀察自己?(某些人喜歡頻繁的按C再關上……)
  • A: 不包括自己, 看自己和看其他人完全是兩個機制

Comments

Posts Quoted:
Reply
Clear All Quotes