Advertisement
samuelrichter66

hook and cutlass

May 30th, 2019
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 27.72 KB | None | 0 0
  1. --https://github.com/Mokiros/roblox-FE-compatibility
  2. if game:GetService("RunService"):IsClient() then error("Script must be server-side in order to work; use h/ and not hl/") end
  3. local Player,game,owner = owner,game
  4. local RealPlayer = Player
  5. do
  6. print("FE Compatibility code V2 by Mokiros")
  7. local RealPlayer = RealPlayer
  8. script.Parent = RealPlayer.Character
  9.  
  10. --Fake event to make stuff like Mouse.KeyDown work
  11. local Disconnect_Function = function(this)
  12. this[1].Functions[this[2]] = nil
  13. end
  14. local Disconnect_Metatable = {__index={disconnect=Disconnect_Function,Disconnect=Disconnect_Function}}
  15. local FakeEvent_Metatable = {__index={
  16. Connect = function(this,f)
  17. local i = tostring(math.random(0,10000))
  18. while this.Functions[i] do
  19. i = tostring(math.random(0,10000))
  20. end
  21. this.Functions[i] = f
  22. return setmetatable({this,i},Disconnect_Metatable)
  23. end
  24. }}
  25. FakeEvent_Metatable.__index.connect = FakeEvent_Metatable.__index.Connect
  26. local function fakeEvent()
  27. return setmetatable({Functions={}},FakeEvent_Metatable)
  28. end
  29.  
  30. --Creating fake input objects with fake variables
  31. local FakeMouse = {Hit=CFrame.new(),KeyUp=fakeEvent(),KeyDown=fakeEvent(),Button1Up=fakeEvent(),Button1Down=fakeEvent(),Button2Up=fakeEvent(),Button2Down=fakeEvent()}
  32. FakeMouse.keyUp = FakeMouse.KeyUp
  33. FakeMouse.keyDown = FakeMouse.KeyDown
  34. local UIS = {InputBegan=fakeEvent(),InputEnded=fakeEvent()}
  35. local CAS = {Actions={},BindAction=function(self,name,fun,touch,...)
  36. CAS.Actions[name] = fun and {Name=name,Function=fun,Keys={...}} or nil
  37. end}
  38. --Merged 2 functions into one by checking amount of arguments
  39. CAS.UnbindAction = CAS.BindAction
  40.  
  41. --This function will trigger the events that have been :Connect()'ed
  42. local function TriggerEvent(self,ev,...)
  43. for _,f in pairs(self[ev].Functions) do
  44. f(...)
  45. end
  46. end
  47. FakeMouse.TriggerEvent = TriggerEvent
  48. UIS.TriggerEvent = TriggerEvent
  49.  
  50. --Client communication
  51. local Event = Instance.new("RemoteEvent")
  52. Event.Name = "UserInput_Event"
  53. Event.OnServerEvent:Connect(function(plr,io)
  54. if plr~=RealPlayer then return end
  55. FakeMouse.Target = io.Target
  56. FakeMouse.Hit = io.Hit
  57. if not io.isMouse then
  58. local b = io.UserInputState == Enum.UserInputState.Begin
  59. if io.UserInputType == Enum.UserInputType.MouseButton1 then
  60. return FakeMouse:TriggerEvent(b and "Button1Down" or "Button1Up")
  61. end
  62. if io.UserInputType == Enum.UserInputType.MouseButton2 then
  63. return FakeMouse:TriggerEvent(b and "Button2Down" or "Button2Up")
  64. end
  65. for _,t in pairs(CAS.Actions) do
  66. for _,k in pairs(t.Keys) do
  67. if k==io.KeyCode then
  68. t.Function(t.Name,io.UserInputState,io)
  69. end
  70. end
  71. end
  72. FakeMouse:TriggerEvent(b and "KeyDown" or "KeyUp",io.KeyCode.Name:lower())
  73. UIS:TriggerEvent(b and "InputBegan" or "InputEnded",io,false)
  74. end
  75. end)
  76. Event.Parent = NLS([==[local Event = script:WaitForChild("UserInput_Event")
  77. local Mouse = owner:GetMouse()
  78. local UIS = game:GetService("UserInputService")
  79. local input = function(io,RobloxHandled)
  80. if RobloxHandled then return end
  81. --Since InputObject is a client-side instance, we create and pass table instead
  82. Event:FireServer({KeyCode=io.KeyCode,UserInputType=io.UserInputType,UserInputState=io.UserInputState,Hit=Mouse.Hit,Target=Mouse.Target})
  83. end
  84. UIS.InputBegan:Connect(input)
  85. UIS.InputEnded:Connect(input)
  86.  
  87. local h,t
  88. --Give the server mouse data every second frame, but only if the values changed
  89. --If player is not moving their mouse, client won't fire events
  90. local HB = game:GetService("RunService").Heartbeat
  91. while true do
  92. if h~=Mouse.Hit or t~=Mouse.Target then
  93. h,t=Mouse.Hit,Mouse.Target
  94. Event:FireServer({isMouse=true,Target=t,Hit=h})
  95. end
  96. --Wait 2 frames
  97. for i=1,2 do
  98. HB:Wait()
  99. end
  100. end]==],script)
  101.  
  102. ----Sandboxed game object that allows the usage of client-side methods and services
  103. --Real game object
  104. local RealGame = game
  105.  
  106. --Metatable for fake service
  107. local FakeService_Metatable = {
  108. __index = function(self,k)
  109. local s = rawget(self,"_RealService")
  110. if s then
  111. return typeof(s[k])=="function"
  112. and function(_,...)return s[k](s,...)end or s[k]
  113. end
  114. end,
  115. __newindex = function(self,k,v)
  116. local s = rawget(self,"_RealService")
  117. if s then s[k]=v end
  118. end
  119. }
  120. local function FakeService(t,RealService)
  121. t._RealService = typeof(RealService)=="string" and RealGame:GetService(RealService) or RealService
  122. return setmetatable(t,FakeService_Metatable)
  123. end
  124.  
  125. --Fake game object
  126. local FakeGame = {
  127. GetService = function(self,s)
  128. return rawget(self,s) or RealGame:GetService(s)
  129. end,
  130. Players = FakeService({
  131. LocalPlayer = FakeService({GetMouse=function(self)return FakeMouse end},Player)
  132. },"Players"),
  133. UserInputService = FakeService(UIS,"UserInputService"),
  134. ContextActionService = FakeService(CAS,"ContextActionService"),
  135. RunService = FakeService({
  136. _btrs = {},
  137. RenderStepped = RealGame:GetService("RunService").Heartbeat,
  138. BindToRenderStep = function(self,name,_,fun)
  139. self._btrs[name] = self.Heartbeat:Connect(fun)
  140. end,
  141. UnbindFromRenderStep = function(self,name)
  142. self._btrs[name]:Disconnect()
  143. end,
  144. },"RunService")
  145. }
  146. rawset(FakeGame.Players,"localPlayer",FakeGame.Players.LocalPlayer)
  147. FakeGame.service = FakeGame.GetService
  148. FakeService(FakeGame,game)
  149. --Changing owner to fake player object to support owner:GetMouse()
  150. game,owner = FakeGame,FakeGame.Players.LocalPlayer
  151. end
  152.  
  153.  
  154.  
  155. --- shortcuts
  156. v3 = Vector3.new
  157. cn = CFrame.new
  158. ca2 = CFrame.Angles
  159. mf = math.floor
  160. mran = math.random rn=mran
  161. mrad = math.rad rd=mran
  162. mdeg = math.deg
  163. ca = function(x,y,z) return ca2(mrad(x),mrad(y),mrad(z)) end
  164. mran2 = function(a,b) return mran(a*1000,b*1000)/1000 end
  165. ud=UDim2.new
  166. bn = BrickColor.new
  167. c3 = Color3.new
  168. -----
  169. -- Player = game:service'Players'.TigreBlood
  170. Player = game:service'Players'.LocalPlayer
  171. Char = Player.Character
  172. Torso = Char.Torso
  173. Head = Char.Head
  174. Humanoid = Char.Humanoid
  175. Root=Char.HumanoidRootPart.RootJoint
  176.  
  177. LA=Char['Left Arm']
  178. RA=Char['Right Arm']
  179. LL=Char['Left Leg']
  180. RL=Char['Right Leg']
  181. LAM=Torso['Left Shoulder']
  182. RAM=Torso['Right Shoulder']
  183. LLM=Torso['Left Hip']
  184. RLM=Torso['Right Hip']
  185. Neck=Torso.Neck
  186. Neck.C0=cn(0,1.5,0)
  187. Neck.C1=cn(0,0,0)
  188.  
  189. name='Hook and Cleaver'
  190. Range = 100
  191. pcall(function() Player.Backpack[name]:Remove() end)
  192. pcall(function() Char[name]:Remove() end)
  193. pcall(function() Char.Block:Remove() end)
  194. pcall(function() Root.Parent.BodyGyro:Destroy() end)
  195.  
  196. as,so={},{'metal','Block','Slash','Slash2','Hit','Kick'}
  197. as.corner='11294911'
  198. as.cone='1033714'
  199. as.ring="3270017"
  200. as.Chakram='47260990'
  201. as.ring2='18430887'
  202. as.blast='20329976'
  203. as.missile='10207677'
  204. as.fire='2693346'
  205. as.boom='3264793'
  206. as.slash='10209645'
  207. as.abscond='2767090'
  208. as.firelaser='13775494'
  209. as.diamond='9756362'
  210. as.metal='rbxasset://sounds\\unsheath.wav'
  211. as.Block = 'rbxasset://sounds\\metal.ogg'
  212. as.Slash = '10209645'
  213. as.Slash2 = '46760716'
  214. as.Hit='10209583'
  215. as.Kick='46153268'
  216. as.cast='2101137'
  217.  
  218.  
  219. for i,v in pairs(as) do
  220. if type(tonumber(v:sub(1,3)))=="number" then
  221. as[i]="http://www.roblox.com/asset/?id="..v
  222. end
  223. end
  224.  
  225.  
  226. iNew=function(tab)
  227. local v=Instance.new(tab[1])
  228. for Ind,Val in pairs(tab) do
  229. if Ind~=1 and Ind~=2 then
  230. v[Ind] = Val
  231. end
  232. end
  233. v.Parent=tab[2]==0 and LastMade or tab[2]
  234. LastMade=v
  235. return v
  236. end
  237.  
  238. iPart=function(tab)
  239. local v=Instance.new(tab.type or 'Part')
  240. if tab.type~='CornerWedgePart' then v.formFactor='Custom' end
  241. v.CanCollide=false
  242. v.TopSurface=0 v.BottomSurface=0
  243. v.Size=v3(tab[2],tab[3],tab[4])
  244. if tab.co then v.BrickColor=bn(tab.co) end
  245. if tab.tr then v.Transparency=tab.tr end
  246. if tab.rf then v.Reflectance=tab.rf end
  247. if tab.cf then v.CFrame=tab.cf end
  248. if tab.an then v.Anchored=tab.an end
  249. v.Parent=tab[1]
  250. LastMade=v
  251. return v
  252. end
  253.  
  254. pcall(function() Torso.LAW:Remove() Torso.RAW:Remove() Torso.LLW:Remove() Torso.RLW:Remove() end)
  255. LAW=iNew{'Weld',Torso,Name='LAW',Part0=Torso,C0=cn(-1.5,0.5,0),C1=cn(0,0.5,0)}
  256. RAW=iNew{'Weld',Torso,Name='RAW',Part0=Torso,C0=cn( 1.5,0.5,0),C1=cn(0,0.5,0)}
  257. LLW=iNew{'Weld',Torso,Name='LLW',Part0=Torso,C0=cn(-0.5, -1,0),C1=cn(0, 1,0)}
  258. RLW=iNew{'Weld',Torso,Name='RLW',Part0=Torso,C0=cn( 0.5, -1,0),C1=cn(0, 1,0)}
  259.  
  260. function Arms(on)
  261. LAM.Parent=Torso LAM.Part0=Torso
  262. RAM.Parent=Torso RAM.Part0=Torso
  263. LAM.Part1=on and nil or LA
  264. RAM.Part1=on and nil or RA
  265. LAW.Part1=on and LA or nil
  266. RAW.Part1=on and RA or nil
  267. end
  268.  
  269. function Legs(on)
  270. LLM.Part1=on and nil or LL
  271. RLM.Part1=on and nil or RL
  272. LLW.Part1=on and LL or nil
  273. RLW.Part1=on and RL or nil
  274. end
  275.  
  276.  
  277. function GetWeld(weld)
  278. if not weld:findFirstChild("Angle") then
  279. local a = Instance.new("Vector3Value", weld)
  280. a.Name = "Angle"
  281. local x,y,z=weld.C0:toEulerAnglesXYZ()
  282. a.Value=v3(mdeg(x),mdeg(y),mdeg(z))
  283. end
  284. return weld.C0.p,weld.Angle.Value
  285. end
  286. function ClearWeld(weld)
  287. if weld:findFirstChild'Angle' then
  288. weld.Angle:Remove()
  289. end
  290. end
  291. function SetWeld(weld,CC,i, loops, origpos,origangle, nextpos,nextangle,smooth)
  292. local CO='C'..CC
  293. smooth = smooth or 1
  294. if not weld:findFirstChild("Angle") then
  295. local a = Instance.new("Vector3Value", weld)
  296. a.Name = "Angle"
  297. local x,y,z=weld.C0:toEulerAnglesXYZ()
  298. a.Value=v3(mdeg(x),mdeg(y),mdeg(z))
  299. end
  300.  
  301. local perc
  302. if smooth == 1 then
  303. perc = math.sin((math.pi/2)/loops*i)
  304. else
  305. perc = i/loops
  306. end
  307.  
  308. local tox,toy,toz = 0,0,0
  309. if origangle.x > nextangle.x then
  310. tox = -math.abs(origangle.x - nextangle.x) *perc
  311. else
  312. tox = math.abs(origangle.x - nextangle.x) *perc
  313. end
  314. if origangle.y > nextangle.y then
  315. toy = -math.abs(origangle.y - nextangle.y) *perc
  316. else
  317. toy = math.abs(origangle.y - nextangle.y) *perc
  318. end
  319. if origangle.z > nextangle.z then
  320. toz = -math.abs(origangle.z - nextangle.z) *perc
  321. else
  322. toz = math.abs(origangle.z - nextangle.z) *perc
  323. end
  324.  
  325. local tox2,toy2,toz2 = 0,0,0
  326. if origpos.x > nextpos.x then
  327. tox2 = -math.abs(origpos.x - nextpos.x) *perc
  328. else
  329. tox2 = math.abs(origpos.x - nextpos.x) *perc
  330. end
  331. if origpos.y > nextpos.y then
  332. toy2 = -math.abs(origpos.y - nextpos.y) *perc
  333. else
  334. toy2 = math.abs(origpos.y - nextpos.y) *perc
  335. end
  336. if origpos.z > nextpos.z then
  337. toz2 = -math.abs(origpos.z - nextpos.z) *perc
  338. else
  339. toz2 = math.abs(origpos.z - nextpos.z) *perc
  340. end
  341. weld.Angle.Value = Vector3.new(origangle.x + tox,origangle.y + toy,origangle.z + toz)
  342. weld[CO] = CFrame.new(origpos.x + tox2,origpos.y + toy2,origpos.z + toz2)*ca(origangle.x + tox,origangle.y + toy,origangle.z + toz)
  343. end
  344.  
  345. LoopFunctions={}
  346. function DoLoop(times,func)
  347. LoopFunctions[#LoopFunctions+1]={times,0,func}
  348. end
  349.  
  350. Combo = 0
  351. HookHit = false
  352. Dmg=false
  353. Dmg2=false
  354. Dmgv={17,23}
  355. HitDebounce={}
  356.  
  357. Damage=function(Hum,Mult,Sound)
  358. if not Hum.Parent:findFirstChild'Torso' then return end
  359. local HName=Hum.Parent.Name
  360. if HitDebounce[HName] and HitDebounce[HName]>tick() then return end
  361. HitDebounce[HName]=tick()+0.5
  362. local Mult=Mult or 1
  363. local Dealt=mran(Dmgv[1],Dmgv[2])*Mult
  364. local col=''
  365. if Hum.Parent:findFirstChild'Block' and Hum.Parent.Block.Value>0 then
  366. Hum.Parent.Block.Value=Hum.Parent.Block.Value-1
  367. col='Bright blue'
  368. else
  369. Hum.Health=Hum.Health-Dealt
  370. col='Bright red'
  371. end
  372. if Sound then
  373. so[col=='Bright blue' and 'Block' or 'Hit']:Play()
  374. end
  375. local DoH=iNew{'Model',Pack,Name=col=='Bright blue' and 'Block' or Dealt}
  376. iNew{'Humanoid',DoH,MaxHealth=0,Health=0,Name=''}
  377. local Doh=iPart{DoH,1,0.2,1,co=col,an=true}
  378. Doh.Name='Head'
  379. iNew{'BlockMesh',Doh}
  380. local dofs=Hum.Parent.Torso.CFrame*cn(mran2(-1.5,1.5),2.5,mran2(-1,1))
  381. Doh.CFrame=dofs
  382. DoLoop(40,function(i)
  383. Doh.CFrame=dofs*cn(0,i*2,0) Doh.Transparency=i-0.5
  384. if i==1 then
  385. DoH:Remove()
  386. end
  387. end)
  388. end
  389.  
  390. Trails={}
  391. TrailPack={}
  392. Traili={}
  393. function Trail(obj,ofs,col)
  394. Trails[obj]=true
  395. Traili[#Traili+1]={obj,ofs,col,obj.CFrame*ofs}
  396. end
  397.  
  398.  
  399. Gyro=iNew{"BodyGyro",Root.Parent,D=50,P=1500}
  400.  
  401. c={'Dark stone grey','Reddish brown','Light stone grey'}
  402. Tool=iNew{'HopperBin',Player.Backpack,Name=name}
  403. Pack=iNew{'Model',Char,Name=name}
  404.  
  405. -- hook
  406. Hook = iPart{Pack,0.25,1,0.25,co=c[1]}
  407. wHook= iNew{"Weld",Pack,Part0=RL,Part1=Hook,C0=cn(0.625,1,0)*ca(210,0,0)} iNew{"CylinderMesh",Hook}
  408.  
  409. hpb = iPart{Pack,0.2,0.2,0.2,co=c[1]}
  410. iNew{"Weld",Pack,Part0=Hook,Part1=hpb,C0=cn(0,-0.55,0)}
  411. iNew{"CylinderMesh",hpb,Scale=v3(0.5,0.5,0.5)}
  412.  
  413. hpr = iPart{Pack,1,1,1,co=c[1]}
  414. iNew{"Weld",Pack,Part0=hpb,Part1=hpr,C0=cn(0,-0.25,0)*ca(0,90,0)}
  415. iNew{"SpecialMesh",hpr,MeshId=as.ring,Scale=v3(0.4,0.4,0.6)}
  416.  
  417. hpr = iPart{Pack,0,0,0,tr=1}
  418. iNew{"Weld",Pack,Part0=hpb,Part1=hpr,C0=cn(0,-0.45,0)}
  419.  
  420. hb = iPart{Pack,0.25,0.25,0.25,co=c[1]}
  421. iNew{"Weld",Pack,Part0=Hook,Part1=hb,C0=cn(0,0.5,0)} iNew{"SpecialMesh",hb,MeshType="Sphere"}
  422.  
  423. h1 = iPart{Pack,0.25,0.5,0.25,co=c[1]}
  424. iNew{"Weld",Pack,Part0=hb,Part1=h1,C0=ca(60,0,0)*cn(0,0.25,0)} iNew{"CylinderMesh",h1}
  425.  
  426. h1b = iPart{Pack,0.25,0.25,0.25,co=c[1]} h1b.Name="Ball1"
  427. iNew{"Weld",Pack,Part0=h1,Part1=h1b,C0=cn(0,0.25,0)} iNew{"SpecialMesh",h1b,MeshType="Sphere"}
  428.  
  429. for i=1,4 do
  430. hpart = iPart{Pack,0.25,0.5,0.25,co=c[1]} iNew{"CylinderMesh",hpart}
  431. iNew{"Weld",Pack,Part0=Pack["Ball"..i],Part1=hpart,C0=ca(-45,0,0)*cn(0,0.25,0)}
  432. hball = iPart{Pack,0.25,0.25,0.25,co=c[1]} hball.Name="Ball"..(i+1) iNew{"SpecialMesh",hball,MeshType="Sphere"}
  433. if hball.Name ~= "Ball5" then
  434. iNew{"Weld",Pack,Part0=hpart,Part1=hball,C0=cn(0,0.25,0)}
  435. else
  436. iNew{"Weld",Pack,Part0=hpart,Part1=hball,C0=cn(0,0.25,0)*ca(-45,0,0)}
  437. end
  438. end
  439.  
  440. spi = iPart{Pack,0.25,0.5,0.25,co=c[1]}
  441. iNew{"Weld",Pack,Part0=Pack["Ball5"],Part1=spi,C0=cn(0,0.3,0)} iNew{"SpecialMesh",spi,MeshId=as.cone,Scale=v3(0.125,0.7,0.125)}
  442.  
  443. HookHitBox = iPart{Pack,0.4,1.25,1.25,tr=1}
  444. iNew{"Weld",Pack,Part0=Hook,Part1=HookHitBox,C0=cn(0,1.2,0)}
  445.  
  446. -- cleaver
  447. Cleaver = iPart{Pack,0.25,1,0.25,co=c[2]}
  448. wCleaver = iNew{"Weld",Pack,Part0=LL,Part1=Cleaver,C0=cn(-0.625,1,0)*ca(210,0,0)} Cleaver.Material="Wood"
  449.  
  450. hpb = iPart{Pack,0.2,0.2,0.2,co=c[1]}
  451. iNew{"Weld",Pack,Part0=Cleaver,Part1=hpb,C0=cn(0,-0.55,0)}
  452. iNew{"CylinderMesh",hpb,Scale=v3(0.5,0.5,0.5)}
  453.  
  454. cpr=iPart{Pack,0.3,0.3,0.3,co=c[1]}
  455. iNew{"Weld",Pack,Part0=hpb,Part1=cpr,C0=cn(0,-0.25,0)}
  456. iNew{"SpecialMesh",cpr,MeshId=as.ring,Scale=v3(0.4,0.4,0.6)}
  457.  
  458. hs1=iPart{Pack,1,1,1,co=c[3]}
  459. iNew{"Weld",Pack,Part0=Cleaver,Part1=hs1,C0=cn(0,-0.4,0)*ca(0,0,90)}
  460. iNew{"CylinderMesh",hs1,Scale=v3(0.1,0.3,0.1)}
  461.  
  462. hs2=iPart{Pack,1,1,1,co=c[3]}
  463. iNew{"Weld",Pack,Part0=Cleaver,Part1=hs2,C0=cn(0,0.4,0)*ca(0,0,90)}
  464. iNew{"CylinderMesh",hs2,Scale=v3(0.1,0.3,0.1)}
  465.  
  466. bl=iPart{Pack,1,1.5,0.6,co=c[1]}
  467. iNew{"Weld",Pack,Part0=Cleaver,Part1=bl,C0=cn(0,1.15,-0.3+0.135)}
  468. iNew{"BlockMesh",bl,Scale=v3(0.12,1,1)}
  469.  
  470. for i=-1,1,2 do
  471. bw=iPart{Pack,1.5,0.2,1,co=c[3]}
  472. iNew{"Weld",Pack,Part0=bl,Part1=bw,C0=cn(0.03*i,0,-0.4)*ca(0,-90*i,90*i)}
  473. iNew{"SpecialMesh",bw,MeshType="Wedge",Scale=v3(1,1,0.06)}
  474. end
  475.  
  476. for i=0,360,360/8 do
  477. prop = iPart{Pack,1,1,1,co=c[1]}
  478. iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.6,0.375)*ca(i,0,0)*cn(0,0,0.1)}
  479. iNew{"BlockMesh",prop,Scale=v3(0.12,0.12,0.075)}
  480. end
  481.  
  482. prop = iPart{Pack,1,1,0.25,co=c[1]}
  483. iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.72,0.425)}
  484. iNew{"BlockMesh",prop,Scale=v3(0.12,0.06,1)}
  485.  
  486. prop = iPart{Pack,1,0.25,1,co=c[1]}
  487. iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.6,0.52)}
  488. iNew{"BlockMesh",prop,Scale=v3(0.12,1,0.06)}
  489.  
  490. prop = iPart{Pack,1,0.2,0.75,co=c[1]}
  491. iNew{"Weld",Pack,Part0=bl,Part1=prop,C0=cn(0,0.125,0.45)*ca(90,180,0)}
  492. iNew{"SpecialMesh",prop,Scale=v3(0.12,1,1),MeshType="Wedge"}
  493.  
  494. propl = iPart{Pack,1,1,0.75,co=c[1]}
  495. iNew{"Weld",Pack,Part0=bl,Part1=propl,C0=cn(0,0.125,0.325)*ca(90,180,0)}
  496. iNew{"BlockMesh",propl,Scale=v3(0.12,0.05,1)}
  497.  
  498. prop = iPart{Pack,1,1,0.5,co=c[1]}
  499. iNew{"Weld",Pack,Part0=propl,Part1=prop,C0=cn(0,0,-1.25/2)}
  500. iNew{"SpecialMesh",prop,Scale=v3(0.12,0.05,1),MeshType="Wedge"}
  501.  
  502. CleaverHitBox = iPart{Pack,0.4,1.6,1.25,tr=1}
  503. iNew{"Weld",Pack,Part0=Cleaver,Part1=CleaverHitBox,C0=cn(0,1.15,-0.2)}
  504.  
  505. for i,v in pairs(Pack:GetChildren()) do if v:IsA("BasePart") then v.CanCollide=false v.Name="Ignore" end end
  506.  
  507. hTW=nil
  508. HookHitBox.Touched:connect(function(hit)
  509. if Anim == "Throwing Hook" and not HookHit then
  510. if hit.Parent~=Char and hit.Parent:FindFirstChild("Humanoid") then
  511. HookHit = true
  512. local hHum = hit.Parent:FindFirstChild("Humanoid")
  513. hHum.PlatformStand=true
  514. DoLoop(20,function(i)
  515. wait()
  516. if i==1 then
  517. hHum.PlatformStand=false
  518. end
  519. end)
  520. Spawn(function()
  521. while HookHit do
  522. hit.Parent.Torso.CFrame = HookHitBox.CFrame*ca(0,0,90)*ca(0,90,0)
  523. wait()
  524. end
  525. end)
  526. end
  527. end
  528. if not Dmg then return end
  529. if hit.Parent==Char then return end
  530. if hit.Parent:findFirstChild'Humanoid' then
  531. local h=hit.Parent.Humanoid
  532. Damage(h,1,true)
  533. end
  534. end)
  535.  
  536. CleaverHitBox.Touched:connect(function(hit)
  537. if not Dmg2 then return end
  538. if hit.Parent==Char then return end
  539. if hit.Parent:findFirstChild'Humanoid' then
  540. local h=hit.Parent.Humanoid
  541. Damage(h,1,true)
  542. end
  543. end)
  544.  
  545. for i,v in pairs(Torso:children()) do
  546. if v:IsA'Sound' then
  547. v:Remove()
  548. end
  549. end
  550. for i,n in pairs(so) do
  551. local v=iNew{'Sound',Torso,Volume=1,Pitch=1,Looped=false,Name=v,SoundId=as[n]}
  552. so[n]=v
  553. end
  554.  
  555. function RePose()
  556. local a,b=GetWeld(LAW)
  557. local c,d=GetWeld(RAW)
  558. local e,f=GetWeld(wHook)
  559. local g,h=GetWeld(wCleaver)
  560. local i,j=GetWeld(Root)
  561. local k,l=GetWeld(Neck)
  562. oPoseLA=a oPoseLA2=b
  563. oPoseRA=c oPoseRA2=d
  564. oPoseHook=e oPoseHook2=f
  565. oPoseCleaver=g oPoseCleaver2=h
  566. oPoseRT=i oPoseRT2=j
  567. oPoseNE=k oPoseNE2=l
  568. end
  569.  
  570. function ReturnPose()
  571. local wLA,wLA2=GetWeld(LAW)
  572. local wRA,wRA2=GetWeld(RAW)
  573. local wRT,wRT2=GetWeld(Root)
  574. local AA,AA2=GetWeld(wHook)
  575. local BB,BB2=GetWeld(wCleaver)
  576. local wNE,wNE2=GetWeld(Neck)
  577. for i=1,ASpeed do
  578. SetWeld(LAW,0,i,ASpeed,wLA,wLA2,PoseLA,PoseLA2,1)
  579. SetWeld(RAW,0,i,ASpeed,wRA,wRA2,PoseRA,PoseRA2,1)
  580. SetWeld(wHook,0,i,ASpeed,AA,AA2,PoseHook,PoseHook2,1)
  581. SetWeld(wCleaver,0,i,ASpeed,BB,BB2,PoseCleaver,PoseCleaver2,1)
  582. SetWeld(Root,0,i,ASpeed,wRT,wRT2,PoseRT,PoseRT2,1)
  583. SetWeld(Neck,0,i,ASpeed,wNE,wNE2,PoseNE,PoseNE2,1)
  584. wait()
  585. end
  586. end
  587. function TorsoROT(i,rot,spid)
  588. SetWeld(Root,0,i,spid,oPoseRT,oPoseRT2,PoseRT,v3(0,rot,0),1)
  589. SetWeld(Neck,0,i,spid,oPoseNE,oPoseNE2,PoseNE,v3(0,-rot,0),1)
  590. end
  591.  
  592. Block=iNew{'NumberValue',Char,Name='Block',Value=0}
  593.  
  594.  
  595. key={}
  596. Tool.Selected:connect(function(mouse)
  597. print'Selected'
  598. Mouse=mouse
  599. if Anim=='None' then
  600. Anim='Equipping'
  601. Arms(0)
  602. for i=1,ASpeed do
  603. SetWeld(LAW,0,i,ASpeed,OrigLA,OrigLA2,OrigLA,v3(-25,0,5),1)
  604. SetWeld(RAW,0,i,ASpeed,OrigRA,OrigRA2,OrigRA,v3(-25,0,-5),1)
  605. wait()
  606. end
  607. local ofs = RA.CFrame:toObjectSpace(Hook.CFrame)
  608. wHook.Part0=RA wHook.C0=ofs ClearWeld(wHook)
  609. local AA,AA2=GetWeld(wHook)
  610. local ofs = LA.CFrame:toObjectSpace(Cleaver.CFrame)
  611. wCleaver.Part0=LA wCleaver.C0=ofs ClearWeld(wCleaver)
  612. local BB,BB2=GetWeld(wCleaver)
  613. for i=1,ASpeed do
  614. SetWeld(wHook,0,i,ASpeed,AA,AA2,PoseHook,PoseHook2,1)
  615. SetWeld(wCleaver,0,i,ASpeed,BB,BB2,PoseCleaver,PoseCleaver2,1)
  616. wait()
  617. end
  618. ReturnPose()
  619. Anim='Equipped'
  620. end
  621.  
  622. Mouse.KeyDown:connect(function(k)
  623. key[k]=true
  624. if k=="q" and Anim == "Equipped" and Combo == 0 then
  625. Anim = "Cleaver Slash"
  626. RePose()
  627. for i=1,ASpeed do
  628. SetWeld(LAW,0,i,ASpeed,PoseLA,PoseLA2,PoseLA,v3(200,0,-35),1)
  629. SetWeld(Neck,0,i,ASpeed,oPoseNE,oPoseNE2,PoseNE,v3(15,15,0),1)
  630. wait()
  631. end
  632. Trail(Cleaver,cn(0,1.75,-0.75),'White')
  633. Dmg2=true
  634. for i=1,ASpeed/2 do
  635. SetWeld(LAW,0,i,ASpeed/2,PoseLA,v3(200,0,-35),PoseLA,v3(20,0,20),1)
  636. SetWeld(Neck,0,i,ASpeed/2,oPoseNE,v3(15,15,0),PoseNE,v3(-5,-5,0),1)
  637. wait()
  638. end
  639. Trails[Cleaver]=false
  640. Dmg2=false
  641. ReturnPose()
  642. Anim="Equipped"
  643. elseif k=="e" and Anim=="Equipped" and Combo == 0 then
  644. Anim = "Hook Slash"
  645. RePose()
  646. for i=1,ASpeed do
  647. SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,PoseRA,v3(200,0,35),1)
  648. SetWeld(Neck,0,i,ASpeed,oPoseNE,oPoseNE2,PoseNE,v3(15,-15,0),1)
  649. wait()
  650. end
  651. Trail(Hook,cn(0,1,-0.75),'White')
  652. Dmg=true
  653. for i=1,ASpeed/2 do
  654. SetWeld(RAW,0,i,ASpeed/2,PoseRA,v3(200,0,35),PoseRA,v3(20,0,-20),1)
  655. SetWeld(Neck,0,i,ASpeed/2,oPoseNE,v3(15,-15,0),PoseNE,v3(-5,5,0),1)
  656. wait()
  657. end
  658. Trails[Hook]=false
  659. Dmg=false
  660. ReturnPose()
  661. Anim="Equipped"
  662. elseif k=="r" and Anim=="Equipped" then
  663. Anim = "Combo"
  664. local function Break() Combo=-0.5 ReturnPose() Anim="Equipped" Combo=0 end
  665. if Combo==0 then
  666. Combo=0.5
  667. Anim="Slash 1"
  668. RePose()
  669. for i=1,ASpeed do
  670. SetWeld(LAW,0,i,ASpeed,PoseLA,PoseRA2,v3(-1.2,0.5,0),v3(180,0,-10),1)
  671. SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,v3(1.2,0.5,0),v3(180,0,10),1)
  672. SetWeld(Neck,0,i,ASpeed,oPoseNE,oPoseNE2,PoseNE,v3(40,0,0),1)
  673. wait()
  674. end
  675. Anim="Equipped"
  676. Combo=1
  677. DoLoop(5,function(i)
  678. if i==1 and Combo==1 then
  679. Break()
  680. end
  681. wait()
  682. end)
  683. elseif Combo==1 then
  684. Combo=1.5
  685. anim="Slash 1"
  686. Dmg=true Dmg2=true
  687. so['Slash']:Play()
  688. Trail(Hook,cn(0,1,-0.75),'White')
  689. Trail(Cleaver,cn(0,1.75,-0.75),'White')
  690. RePose()
  691. local wLA,wLA2=GetWeld(LAW)
  692. local wRA,wRA2=GetWeld(RAW)
  693. local wNE,wNE2=GetWeld(Neck)
  694. for i=1,ASpeed/2 do
  695. SetWeld(LAW,0,i,ASpeed/2,wLA,wLA2,PoseLA,v3(-15,0,0),1)
  696. SetWeld(RAW,0,i,ASpeed/2,wRA,wRA2,PoseRA,v3(-15,0,0),1)
  697. SetWeld(Neck,0,i,ASpeed/2,wNE,wNE2,PoseNE,v3(-20,0,0),1)
  698. wait()
  699. end
  700. Dmg=false Dmg2=false
  701. Trails[Hook]=false Trails[Cleaver]=false
  702. Anim="Equipped"
  703. Combo=2
  704. DoLoop(5,function(i)
  705. if i==1 and Combo==2 then
  706. Break()
  707. end
  708. wait()
  709. end)
  710. elseif Combo==2 then
  711. Combo=2.5
  712. Anim="Slash 2"
  713. local wLA,wLA2=GetWeld(LAW)
  714. local wRA,wRA2=GetWeld(RAW)
  715. local wNE,wNE2=GetWeld(Neck)
  716. for i=1,ASpeed do
  717. SetWeld(LAW,0,i,ASpeed,wLA,wRA2,v3(-1.2,0.5,0),v3(110,0,30),1)
  718. SetWeld(RAW,0,i,ASpeed,wRA,wRA2,v3(1.2,0.5,0),v3(110,0,-30),1)
  719. SetWeld(Neck,0,i,ASpeed,wNE,wNE2,PoseNE,v3(40,0,0),1)
  720. wait()
  721. end
  722. Anim="Equipped"
  723. Combo=3
  724. DoLoop(5,function(i)
  725. if i==1 and Combo==3 then
  726. Break()
  727. end
  728. wait()
  729. end)
  730. elseif Combo==3 then
  731. Combo=3.5
  732. Anim="Slash 2"
  733. Dmg=true Dmg2=true
  734. so['Slash']:Play()
  735. Trail(Hook,cn(0,1,-0.75),'White')
  736. Trail(Cleaver,cn(0,1.75,-0.75),'White')
  737. local wLA,wLA2=GetWeld(LAW)
  738. local wRA,wRA2=GetWeld(RAW)
  739. local wNE,wNE2=GetWeld(Neck)
  740. for i=1,ASpeed/2 do
  741. SetWeld(LAW,0,i,ASpeed/2,wLA,wLA2,PoseLA,v3(-40,0,-30),1)
  742. SetWeld(RAW,0,i,ASpeed/2,wRA,wRA2,PoseRA,v3(-40,0,30),1)
  743. SetWeld(Neck,0,i,ASpeed/2,wNE,wNE2,PoseNE,v3(-20,0,0),1)
  744. wait()
  745. end
  746. Dmg=false Dmg2=false
  747. Trails[Hook]=false Trails[Cleaver]=false
  748. Anim="Equipped"
  749. Combo=4
  750. DoLoop(5,function(i)
  751. if i==1 and Combo==4 then
  752. Break()
  753. end
  754. wait()
  755. end)
  756. end
  757. end
  758. end)--keys
  759.  
  760. Mouse.KeyUp:connect(function(k)
  761. key[k]=false
  762. end)
  763.  
  764. Mouse.Button1Down:connect(function()
  765. if Anim == "Equipped" and Combo == 0 then
  766. local Dist = nil
  767. Anim = "Getting Ready"
  768. Humanoid.WalkSpeed = 4
  769. RePose()
  770. for i=1,ASpeed do
  771. TorsoROT(i,80,ASpeed)
  772. SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,PoseRA,v3(0,190,-90),1)
  773. SetWeld(wHook,0,i,ASpeed,PoseHook,PoseHook2,v3(0,-2,0),v3(-180,0,0),1)
  774. wait()
  775. end
  776. Anim = "Throwing Hook"
  777. Rope=iPart{Pack,0.2,1,0.2,co="Reddish brown",an=true}
  778. iNew{"CylinderMesh",Rope}
  779. Dmg=true
  780. for i=1,ASpeed*3 do
  781. if HookHit then break end
  782. SetWeld(wHook,0,i,ASpeed*3,v3(0,-2,0),v3(-180,0,0),v3(0,-2-(Range),0),v3(-180,0,0),1)
  783. wait()
  784. end
  785. Dist = wHook.C0.Y
  786. Anim = "Retrieving Hook"
  787. Humanoid.WalkSpeed=16
  788. Dmg=false
  789. for i=1,ASpeed*(-Dist/20) do
  790. SetWeld(Root,0,i,ASpeed*(-Dist/20),oPoseRT,v3(0,80,0),PoseRT,v3(0,-60,0),1)
  791. SetWeld(Neck,0,i,ASpeed*(-Dist/20),oPoseNE,v3(0,-80,0),PoseNE,v3(0,60,0),1)
  792. SetWeld(RAW,0,i,ASpeed*(-Dist/20),PoseRA,v3(0,190,-90),PoseRA,v3(0,190+150,-90),1)
  793. SetWeld(wHook,0,i,ASpeed*(-Dist/20),v3(0,Dist,0),v3(-180,0,0),v3(0,-2,0),v3(-180,0,0),1)
  794. wait()
  795. end
  796. pcall(function() hTW:Destroy() end)
  797. HookHit=false
  798. ReturnPose()
  799. Anim = "Equipped"
  800. end
  801. end)
  802. end) -- select
  803.  
  804. Tool.Deselected:connect(function(mouse)
  805. print'Deselected'
  806. Mouse=nil
  807. if Anim=='Equipped' and Combo == 0 then
  808. Anim='Unequipping'
  809. RePose()
  810. for i=1,ASpeed do
  811. SetWeld(LAW,0,i,ASpeed,PoseLA,PoseLA2,OrigLA,v3(-25,0,5),1)
  812. SetWeld(RAW,0,i,ASpeed,PoseRA,PoseRA2,OrigRA,v3(-25,0,-5),1)
  813. wait()
  814. end
  815. local ofs = RL.CFrame:toObjectSpace(Hook.CFrame)
  816. wHook.Part0=RL wHook.C0=ofs ClearWeld(wHook)
  817. local AA,AA2=GetWeld(wHook)
  818. local ofs = LL.CFrame:toObjectSpace(Cleaver.CFrame)
  819. wCleaver.Part0=LL wCleaver.C0=ofs ClearWeld(wCleaver)
  820. local BB,BB2=GetWeld(wCleaver)
  821. for i=1,ASpeed do
  822. SetWeld(wHook,0,i,ASpeed,AA,AA2,v3(0.625,1,0),v3(210,0,0),1)
  823. SetWeld(wCleaver,0,i,ASpeed,BB,BB2,v3(-0.625,1,0),v3(210,0,0),1)
  824. wait()
  825. end
  826. for i=1,ASpeed do
  827. SetWeld(LAW,0,i,ASpeed,PoseLA,v3(-25,0,5),OrigLA,OrigLA2,1)
  828. SetWeld(RAW,0,i,ASpeed,PoseRA,v3(-25,0,-5),OrigRA,OrigRA2,1)
  829. wait()
  830. end
  831. Arms()
  832. Anim='None'
  833. end
  834. end) --deselect
  835.  
  836.  
  837. print(#Pack:children())
  838. Root.C0=cn(0,0,0)*ca(0,0,0)
  839. Root.C1=cn(0,0,0)*ca(0,0,0)
  840. Arms()
  841. Legs()
  842.  
  843. WalkAnim=0
  844. Walking=false
  845. Humanoid.Running:connect(function(Walk)
  846. Walking=Walk>0 and true or false
  847. end)
  848.  
  849. Anim='None'
  850. ASpeed=10
  851. OrigLA=v3(-1.5,0.5,0) OrigLA2=v3(0,0,0)
  852. OrigRA=v3( 1.5,0.5,0) OrigRA2=v3(0,0,0)
  853. --Pose
  854. PoseLA=v3(-1.5,0.5,0) PoseLA2=v3(0,0,-10)
  855. PoseRA=v3( 1.5,0.5,0) PoseRA2=v3(0,0,10)
  856. PoseHook=v3(0,-1,0) PoseHook2=v3(-90,0,0)
  857. PoseCleaver=v3(0,-1,0) PoseCleaver2=v3(-90,0,0)
  858. PoseRT=v3(0,0,0) PoseRT2=v3(0,0,0)
  859. PoseNE=v3(0,1.5,0) PoseNE2=v3(0,0,0)
  860.  
  861. while Pack.Parent do
  862. -- Rope
  863. if Anim == "Throwing Hook" or Anim == "Retrieving Hook" then
  864. Mag=(RA.Position-hpr.Position).magnitude
  865. Rope.Size=v3(0.2,Mag,0.2)
  866. Rope.CFrame=RA.CFrame*cn(0,-Mag/2,0)
  867. else
  868. pcall(function()
  869. Rope:Destroy()
  870. end)
  871. end
  872.  
  873. --Trailing Package
  874. for i,v in pairs(Traili) do
  875. if Trails[v[1]] then
  876. local obj,ofs,col,lastofs=v[1],v[2],v[3],v[4]
  877. local length=(obj.CFrame*ofs.p-lastofs.p).magnitude
  878. local ob=iPart{Pack,0.4,length,0.4,co=col,tr=0.5,an=true,cf=CFrame.new(obj.CFrame*ofs.p,lastofs.p)}
  879. iNew{'CylinderMesh',ob}
  880. Traili[i][4]=ob.CFrame
  881. ob.CFrame=ob.CFrame*cn(0,0,-length/2)*ca(90,0,0)
  882. TrailPack[#TrailPack+1]={ob,1,-0.1}
  883. else
  884. Traili[i]=nil
  885. end
  886. end
  887. for i,v in pairs(TrailPack) do
  888. v[2]=v[2]+v[3]
  889. if v[2]<=0 then
  890. v[1]:Remove()
  891. TrailPack[i]=nil
  892. else
  893. v[1].Transparency=0.5+(0.45-0.45*v[2])
  894. v[1].Mesh.Scale=v3(v[2],1,v[2])
  895. end
  896. end
  897. --DoLoop Package
  898. for i,v in pairs(LoopFunctions) do
  899. v[2]=v[2]+1
  900. v[3](v[2]/v[1])
  901. if v[1]<=v[2] then
  902. LoopFunctions[i]=nil
  903. end
  904. end
  905. --[[
  906. HookHitBox.CFrame=Hook.CFrame*cn(0,1.2,0)
  907. HookHitBox.Velocity=v3(0,0,0) HookHitBox.RotVelocity=v3(0,0,0)
  908. CleaverHitBox.CFrame=Cleaver.CFrame*cn(0,1.15,-0.2)
  909. CleaverHitBox.Velocity=v3(0,0,0) CleaverHitBox.RotVelocity=v3(0,0,0)
  910. ]]
  911. -- Gyro
  912. if Anim~="None" then
  913. Gyro.maxTorque=v3(1,1,1)/0
  914. Gyro.cframe = cn(Root.Parent.Position,v3(workspace.CurrentCamera.CoordinateFrame.p.x,Root.Parent.Position.y,workspace.CurrentCamera.CoordinateFrame.p.z))*ca(0,180,0)
  915. else
  916. Gyro.maxTorque = v3(0,0,0)
  917. end
  918. wait()
  919. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement