2017-09-09 73 views
-3

我想讓一個特定的播放器渲染高於一切。我試圖做多件事情,包括使用ClientsideModel(),DrawModel()和類似的東西無濟於事。 如果有人可以幫忙,那很好!我找不到其他人問這個問題。GMOD覆蓋模型渲染以上道具/地圖?

+1

歡迎來到Stack Overflow。請回顧[我如何問一個好問題](https://stackoverflow.com/help/how-to-ask)。預計您已經研究過您的問題,並嘗試在發佈之前親自編寫代碼。如果您遇到某些特定問題,請回過頭來包括您嘗試過的內容以及[最小,完整和可驗證示例]的摘要(https://stackoverflow.com/help/mcve)。 – FluffyKitten

+0

我曾經這樣做過,是因爲意外......讓我搜索我的舊代碼。將在我找到答案時發佈答案。 – Mischa

回答

0

要做到這一點,最好的方法是使用玩家的HUDPaint而不是模型繪製,因爲這被稱爲last。因此,我們可以這樣開始:

hook.Add("HUDPaint", "playerOverride", function() 

end) 

這是一個2D渲染環境,所以我們需要啓動一個三維一體,這與cam.start3D()

hook.Add("HUDPaint", "playerOverride", function() 
    cam.Start3D() 
    cam.End3D() 
end) 

然後,當然很容易,我們只是畫與Entity:DrawModel()

hook.Add("HUDPaint", "playerOverride", function() 
    cam.Start3D() 
     target:DrawModel() 
    cam.End3D() 
end) 

上面的代碼目標模型假定你已經有了心中的目標,您可以設置target,或者更換。

如果你喜歡這個適用於每一個人,(我希望你不寫wallhacks),那麼你可以通過玩家列表循環與player.getAll()

hook.Add("HUDPaint", "playerOverride", function() 
    cam.Start3D() 
     for k,v in pairs(player.GetAll()) do 
      if v ~= LocalPlayer() then -- Make sure we don't redraw ourselves 
       v:DrawModel() 
      end 
     end 
    cam.End3D() 
end) 

(注意,我目前無法對此進行測試,但我相當有信心)

+0

遲到回覆,不好意思,但是我剛剛結束了。我會接受你的回答,因爲它是正確的。 –