Advertisement
SleepyMode

Untitled

Dec 22nd, 2022
608
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 4.80 KB | None | 0 0
  1. local PLUGIN = PLUGIN
  2.  
  3. PLUGIN.name = "Heads Test"
  4. PLUGIN.author = "SleepyMode"
  5. PLUGIN.description = ""
  6.  
  7. --[[
  8. runlua_sv ixHeads = ix.plugin.list["headstest"]
  9. runlua_sv _player = ix.util.FindPlayer("sdf")
  10. runlua_sv ixHeads:SetPlayerHead(_player, "models/tnb/techcom/female_28.mdl")
  11. ]]
  12.  
  13. ix.char.RegisterVar("head", {
  14.     field = "head",
  15.     fieldType = ix.type.string,
  16.     default = ""
  17. })
  18.  
  19. if (SERVER) then
  20.     -- Server code
  21.  
  22.     function PLUGIN:SetPlayerHead(client, head)
  23.         client:GetCharacter():SetHead(head)
  24.         if (head != "") then
  25.             local boneID = client:LookupBone("ValveBiped.Bip01_Head1")
  26.             print("FUCKYOU", boneID, "FUCKYOU")
  27.             client:ManipulateBoneScale(boneID, Vector(0, 0, 0))
  28.             print(client:GetManipulateBoneScale(boneID))
  29.         end
  30.  
  31.         print("AA")
  32.         print(client:GetCharacter():GetHead())
  33.     end
  34.  
  35.     function PLUGIN:ClearPlayerHead(client)
  36.         client:GetCharacter():SetHead("")
  37.     end
  38. else
  39.     -- Client code
  40.     net.Receive("ixCharacterVarChanged", function()
  41.         local id = net.ReadUInt(32)
  42.         local character = ix.char.loaded[id]
  43.  
  44.         if (character) then
  45.             local key = net.ReadString()
  46.             local value = net.ReadType()
  47.  
  48.             character.vars[key] = value
  49.             hook.Run("CharacterVariableChanged", character, key, value)
  50.         end
  51.     end)
  52.  
  53.     function PLUGIN:CreateFakePlayerHead(client, head)
  54.         print("a")
  55.         if (client.ixHead) then
  56.             print("aa")
  57.             client.ixHead:Remove()
  58.             client.ixFakeModel:Remove()
  59.         end
  60.  
  61.         client.RenderOverride = function()
  62.         end
  63.  
  64.         client.ixFakeModel = ClientsideModel(client:GetModel(), RENDERGROUP_TRANSLUCENT)
  65.         client.ixFakeModel:AddEffects(EF_BONEMERGE)
  66.         client.ixFakeModel:PhysicsInit(SOLID_NONE)
  67.         client.ixFakeModel:SetMoveType(MOVETYPE_NONE)
  68.         client.ixFakeModel:SetParent(client)
  69.         client.ixFakeModel.RenderOverride = function(ent)
  70.             --render.SetBlend(0)
  71.             --render.ModelMaterialOverride(temp_mat)
  72.             ent:ManipulateBoneScale(ent:LookupBone("ValveBiped.Bip01_Head1"), Vector(0, 0, 0))
  73.             ent:DrawModel()
  74.             --render.SetBlend(1)
  75.             --render.ModelMaterialOverride()
  76.         end
  77.  
  78.         client.ixHead = ClientsideModel(head, RENDERGROUP_TRANSLUCENT)
  79.         client.ixHead:AddEffects(EF_BONEMERGE)
  80.         client.ixHead:PhysicsInit(SOLID_NONE)
  81.         client.ixHead:SetMoveType(MOVETYPE_NONE)
  82.         client.ixHead:SetParent(client)
  83.         client.ixHead.RenderOverride = function(ent)
  84.             --render.SetBlend(0)
  85.             --render.ModelMaterialOverride(temp_mat)
  86.             ent:DrawModel()
  87.             --render.SetBlend(1)
  88.             --render.ModelMaterialOverride()
  89.         end
  90.         print(client.ixHead)
  91.     end
  92.  
  93.     local temp_mat = Material( "models/error/new light1" )
  94.  
  95.     function PLUGIN:CharacterVariableChanged(character, key, value)
  96.         print("OOO")
  97.         if (key != "head") then
  98.             print(character, key, value)
  99.             return
  100.         end
  101.  
  102.         print(":)")
  103.         local client = character:GetPlayer()
  104.         self:CreateFakePlayerHead(client, value)
  105.     end
  106. end
  107.  
  108. --[[function PLUGIN:GetPlayerHeadBone(client)
  109.     local boneID = client:LookupBone("ValveBiped.Bip01_Head1")
  110.     if (!boneID) then
  111.         ErrorNoHalt("[HeadsTest] Failed to get player's head bone.")
  112.     end
  113.  
  114.     return boneID
  115. end
  116.  
  117. function PLUGIN:HidePlayerHead(client)
  118.     local boneID = self:GetPlayerHeadBone(client)
  119.     client:ManipulateBoneScale(boneID, Vector(0, 0, 0))
  120. end
  121.  
  122. function PLUGIN:ShowPlayerHead(client)
  123.     local boneID = self:GetPlayerHeadBone(client)
  124.     client:ManipulateBoneScale(boneID, Vector(1, 1, 1))
  125. end
  126.  
  127. function PLUGIN:SpawnFakeHead(client, headModel)
  128.     local boneID = self:GetPlayerHeadBone(client)
  129.     local boneMatrix = client:GetBoneMatrix(boneID)
  130.     local bonePos = boneMatrix:GetTranslation()
  131.     local boneAng = boneMatrix:GetAngles()
  132.  
  133.     if (IsValid(client.ixHead)) then
  134.         client.ixHead:Remove()
  135.     end
  136.  
  137.     --bonePos:Sub(client:GetPos())
  138.     local eyesAttachID = client:LookupAttachment("eyes")
  139.     local eyesAttach = client:GetAttachment(eyesAttachID)
  140.     local eyesPos = eyesAttach.Pos
  141.     local eyesAng = eyesAttach.Ang
  142.  
  143.     client.ixHead = ents.Create("prop_physics_multiplayer")
  144.     client.ixHead:SetModel(headModel)
  145.     client.ixHead:SetPos(eyesPos)
  146.     client.ixHead:SetAngles(eyesAng)
  147.     client.ixHead:SetCollisionGroup(COLLISION_GROUP_WORLD)
  148.     client.ixHead:SetMoveType(MOVETYPE_NONE)
  149.     client.ixHead:SetParent(client, eyesAttachID)
  150.     client.ixHead:AddEffects(bit.bor(EF_BONEMERGE, EF_FOLLOWBONE, EF_PARENT_ANIMATES))
  151.     client.ixHead:DrawShadow(false)
  152.     client.ixHead:SetSolid(SOLID_NONE)
  153.     client.ixHead:Spawn()
  154.  
  155.     --fakeHead:SetPredictable(true)
  156. end
  157.  
  158. function PLUGIN:Think()
  159.     for _, client in ipairs(player.GetAll()) do
  160.         if (client.ixHead) then
  161.             local boneID = self:GetPlayerHeadBone(client)
  162.             local boneMatrix = client:GetBoneMatrix(boneID)
  163.             local bonePos = boneMatrix:GetTranslation()
  164.             local boneAng = boneMatrix:GetAngles()
  165.             debugoverlay.ScreenText(15, 15, tostring(bonePos))
  166.             debugoverlay.ScreenText(15, 25, tostring(boneAng))
  167.             client.ixHead:SetPos(bonePos)
  168.             client.ixHead:SetAngles(boneAng)
  169.         end
  170.     end
  171. end
  172. ]]
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement