Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.72 KB | None | 0 0
  1. local mdl = "models/cyanblue/opm/tatsumaki/tatsumaki.mdl" -- нужна модель
  2. local key = KEY_L -- кнопка для активации/деактивации полёта
  3. local cd = 1 -- задержка между входом и выходом из режима полёта
  4. local flyspd = 2 -- множитель скорости(стандартная скорость ходьбы/бега * flyspd)
  5. local halocmd = "anime_model_halo" -- активировать/деактивировать показ обводки у игрока(клиент)
  6. local flycmd = "anime_model_fly" -- команда для активации/деактивации полёта
  7. local an="anime" -- просто для названия хуков, поменяй на своё
  8. if CLIENT then--------CLIENT---------------------------
  9. local lp,kd,ct=NULL,0,CurTime
  10. local function ToggleFlight()
  11. local a,t=false,CurTime()
  12. if kd>t then return end
  13. kd=t+cd
  14. RunConsoleCommand(flycmd)
  15. end
  16. hook.Add("InitPostEntity",an.."_Init",function()
  17. lp=LocalPlayer()
  18. hook.Add("PlayerButtonDown",an.."_BD",function(p,b)
  19. if p==lp and p:GetModel()==mdl and b==key then
  20. ToggleFlight()
  21. end
  22. end)
  23. end)
  24. local HashTab,HaloTab={},{}
  25. local function halodel(val)
  26. local id=HashTab[val]
  27. if not id then return end
  28. table.remove(HaloTab,id)
  29. HashTab[val]=nil
  30. for i=id+1,#HaloTab do
  31. HashTab[HaloTab[i]]=i
  32. end
  33. val:RemoveCallOnRemove(an)
  34. end
  35. local haloen=CreateClientConVar("halocmd","1",true,false)
  36. local function haloins(val)
  37. if not haloen:GetBool()then return end
  38. HashTab[val]=table.insert(HaloTab,val)
  39. val:CallOnRemove(an,function()halodel(val)end)
  40. end
  41. hook.Add("PreDrawHalos",an.."_Halo",function()
  42. halo.Add(HaloTab,color_white,2,2,2)
  43. end)
  44. hook.Add("EntityNetworkedVarChanged",an.."_NW",function(ply,nm,o,n)
  45. if nm=="aFlight" then
  46. if n then
  47. haloins(ply)
  48. else
  49. halodel(ply)
  50. end
  51. end
  52. end)
  53. hook.Add("NotifyShouldTransmit",an.."_NST",function(ply,b)
  54. if b then
  55. if ply:GetNW2Bool("aFlight")then
  56. haloins(ply)
  57. end
  58. else
  59. halodel(ply)
  60. end
  61. end)
  62. else------------------SERVER---------------------------
  63. if game.SinglePlayer()then--prediction
  64. hook.Add("PlayerButtonDown",an.."_BD",function(p,b)
  65. if p:GetModel()==mdl and b==key then
  66. RunConsoleCommand(flycmd)
  67. end
  68. end)
  69. end
  70. local ct=CurTime
  71. concommand.Add(flycmd,function(ply)
  72. if ply:GetModel()~=mdl then return end
  73. if not ply:Alive() or ply:InVehicle() or ply:GetMoveType()==MOVETYPE_NOCLIP then return end
  74. local t=CurTime()
  75. if ply._lastflight and ply._lastflight > t then
  76. ply._lastflight=t+cd
  77. end
  78. if ply:GetNW2Bool("aFlight")then
  79. ply:SetMoveType(MOVETYPE_WALK)
  80. ply:SetNW2Bool("aFlight",false)
  81. else
  82. ply:SetNW2Bool("aFlight",true)
  83. ply:SetMoveType(MOVETYPE_FLY)
  84. end
  85. end)
  86. hook.Add("PostPlayerDeath",an.."_PPD",function(ply)
  87. if ply:GetNW2Bool("aFlight")then
  88. if ply._flyanimactive then
  89. ply._flyanimactive = nil
  90. end
  91. ply:SetNW2Bool("aFlight",false)
  92. ply:SetMoveType(MOVETYPE_WALK)
  93. end
  94. end)
  95. hook.Add("PlayerEnteredVehicle",an.."_PEV",function(ply)
  96. if ply:GetNW2Bool("aFlight")then
  97. if ply._flyanimactive then
  98. ply._flyanimactive = nil
  99. end
  100. ply:SetNW2Bool("aFlight",false)
  101. end
  102. end)
  103. hook.Add("PlayerNoClip",an.."PN",function(ply)
  104. if ply:GetNW2Bool("aFlight")then
  105. if ply._flyanimactive then
  106. ply._flyanimactive = nil
  107. end
  108. ply:SetNW2Bool("aFlight",false)
  109. end
  110. end)
  111. end
  112. ----------------------SHARED---------------------------
  113. hook.Add("Move",an.."_Move",function(ply,mv)
  114. if ply._flyanimactive then
  115. local vel,spd=Vector(0,0,0),ply:GetWalkSpeed()*flyspd
  116. local pos=mv:GetOrigin()
  117. local ang=mv:GetMoveAngles()
  118. if mv:KeyDown(IN_SPEED)then
  119. spd=ply:GetRunSpeed()
  120. end
  121. if mv:KeyDown(IN_FORWARD)then
  122. vel=vel+ang:Forward()*spd
  123. end
  124. if mv:KeyDown(IN_MOVELEFT)then
  125. vel=vel+ang:Right()*-spd
  126. end
  127. if mv:KeyDown(IN_MOVERIGHT)then
  128. vel=vel+ang:Right()*spd
  129. end
  130. if mv:KeyDown(IN_BACK)then
  131. vel=vel+ang:Forward()*-spd
  132. end
  133. if mv:KeyDown(IN_JUMP)then
  134. if ply:IsOnGround()then
  135. ply:SetMoveType(MOVETYPE_WALK)
  136. elseif ply:GetMoveType()==MOVETYPE_WALK then
  137. ply:SetMoveType(MOVETYPE_FLY)
  138. end
  139. vel.z = vel.z+spd
  140. end
  141. if mv:KeyDown(IN_DUCK)then
  142. vel.z = vel.z-spd
  143. end
  144. mv:SetVelocity(vel)
  145. end
  146. end)
  147. hook.Add("UpdateAnimation",an.."_Anim",function(ply,vel,msgs)
  148. if ply:GetNW2Bool("aFlight")then
  149. if not ply._flyanimactive then
  150. ply._flyanimactive=true
  151. ply:AnimRestartGesture(GESTURE_SLOT_CUSTOM,ACT_FLY,false)
  152. end
  153. else
  154. if ply._flyanimactive then
  155. ply:AnimResetGestureSlot(GESTURE_SLOT_CUSTOM)
  156. ply._flyanimactive=nil
  157. end
  158. end
  159. end)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement