Advertisement
Guest User

Untitled

a guest
Aug 20th, 2019
112
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.36 KB | None | 0 0
  1. local Player = {}
  2. Player.__index = Player
  3.  
  4. function Player.new(PlayerId, PlayerName)
  5. local player = {}
  6. setmetatable(player, Player)
  7. player.Name = PlayerName
  8. player.Id = PlayerId
  9. player.Position = {X= 0, Y = 4, Z = 0}
  10. player.maxhp = 10
  11. player.rights = 0
  12. player.combatlevel = 1
  13. player.damagemodifers = {
  14. accuracy = 30,
  15. strength = 30,
  16. defence = 30,
  17. }
  18. player.bonusstats = {
  19. dex = 1,
  20. mag = 1,
  21. str = 1,
  22. vit = 1,
  23. }
  24. player.currentanim = nil
  25. player.area = "Default"
  26. player.target = nil
  27. player.hotkeys = {}
  28. player.hotkeys[1] = {
  29. slot = 1,
  30. isSpellSlot = true,
  31. spellname = "Ice Spear"
  32. }
  33. return player
  34. end
  35.  
  36. function Player.Load(playerData)
  37. local combatmanager = require(game.ServerScriptService.server_player.playercomabt.CombatManager)
  38. local pathfinding = require(game.ServerScriptService.server_player.pathfinding.PathFinding)
  39. local player = {}
  40. setmetatable(player, Player)
  41. player.Name = playerData.Name
  42. player.Id = playerData.Id
  43. player.Position = playerData.Position
  44. player.maxhp = playerData.maxhp
  45. player.rights = playerData.rights
  46. player.combatlevel = playerData.combatlevel
  47. player.damagemodifers = playerData.damagemodifers
  48. player.bonusstats = playerData.bonusstats
  49. player.currentanim = nil
  50. player.area = playerData.area
  51. player.target = nil
  52. player.hotkeys = {}
  53. player.hotkeys[1] = {
  54. slot = 1,
  55. isSpellSlot = true,
  56. spellname = "Ice Spear"
  57. }
  58. player.combatManager = combatmanager.New(player.Id)
  59. player.pathfinding = pathfinding.New()
  60.  
  61. return player
  62. end
  63.  
  64. function Player:Move(Direction)
  65. local Client = game:GetService('Players'):GetPlayerByUserId(self.Id)
  66. local Character = Client.Character:WaitForChild("HumanoidRootPart")
  67. local newCframe = nil
  68. if Direction == 1 then
  69. --forward
  70. newCframe = Character.CFrame * CFrame.new(0,0,-0.35)
  71.  
  72. elseif Direction == 2 then
  73. newCframe = Character.CFrame * CFrame.Angles(0, 0.25, 0)
  74. elseif Direction == 3 then
  75. newCframe = Character.CFrame * CFrame.Angles(0, -0.25, 0)
  76. elseif Direction == 4 then
  77. end
  78. if(newCframe ~= nil) then
  79. Character.CFrame = Character.CFrame:Lerp(newCframe, 0.25)
  80. if(self:GetVectorPos() - Character.Position).Magnitude < 1.8 then
  81. self:SetPosition(Character.Position)
  82. else
  83. Character.Position = self:GetVectorPos()
  84. end
  85.  
  86. end
  87. end
  88.  
  89. function Player:MoveTo(CFrameToMoveTo, DistanceToStop)
  90. -- GetPathPoints to Player
  91. -- bind renderstep
  92. -- follow the part that is heading towards target.
  93. -- part will be destroyed and player will stop when distance to stop is reached.
  94. local Client = game:GetService('Players'):GetPlayerByUserId(self.Id)
  95. local Character = Client.Character:WaitForChild("HumanoidRootPart")
  96. if(CFrameToMoveTo ~= nil) then
  97. Character.CFrame = CFrame.new(Character.Position, CFrameToMoveTo) -- look at th target
  98.  
  99. local Path = self.pathfinding.GetPath(Character, Character.Position, CFrameToMoveTo)
  100. Path = self.pathfinding.Reverse(Path)
  101. self.pathfinding.Lead = self.pathfinding:MoveLeadToPath(Client.Character, Path, self.pathfinding.distance)
  102.  
  103. local Connection
  104. Connection = game:GetService("RunService").Stepped:Connect(function(delta)
  105. print((self:GetVectorPos() - CFrameToMoveTo).Magnitude)
  106.  
  107.  
  108. end)
  109.  
  110.  
  111.  
  112. if(self:GetVectorPos() - Character.Position).Magnitude < 1.8 then
  113. self:SetPosition(Character.Position)
  114. else
  115. Character.Position = self:GetVectorPos()
  116. end
  117.  
  118. end
  119. end
  120.  
  121. function Player:GetVectorPos()
  122. return Vector3.new(self.Position.X,self.Position.Y,self.Position.Z)
  123. end
  124.  
  125. function Player:SetPosition(Position)
  126. self.Position.X = Position.X
  127. self.Position.Y = Position.Y
  128. self.Position.Z = Position.Z
  129. end
  130.  
  131. function Player:GetPlayerDataTable()
  132. local player = {}
  133. player.Name = self.Name
  134. player.Id = self.Id
  135. player.Position = self.Position
  136. player.maxhp = self.maxhp
  137. player.rights = self.rights
  138. player.combatlevel = self.combatlevel
  139. player.damagemodifers = self.damagemodifers
  140. player.bonusstats = self.bonusstats
  141. player.currentanim = nil
  142. player.area = self.area
  143. player.target = nil
  144. player.hotkeys = self.hotkeys
  145. return player
  146. end
  147.  
  148. function Player:GetAnimationManager()
  149. if(self.AnimManager == nil) then
  150. self.AnimManager = require(game.ServerScriptService.server_player.controllers.animation.AnimationManager)
  151. end
  152. return self.AnimManager
  153. end
  154.  
  155. function Player:PlayCurrentAnim()
  156. local id = self.Id
  157. local anim = self.currentanim
  158. self:GetAnimationManager():PlayAnim(id, anim)
  159. end
  160.  
  161. function Player:GetCombatManager()
  162. return self.combatManager
  163. end
  164.  
  165. function Player:GetNearByMonsters()
  166. if(self.nearbymonsters == nil) then
  167. self.nearbymonsters = {}
  168. self.lastnearbysearchedpos = self:GetVectorPos()
  169. end
  170. if(#self.nearbymonster == 0) then
  171. self.nearbymonsters = self:GetCombatManager():GetNearbyMonsters()
  172. self.lastnearbysearchedpos = self:GetVectorPos()
  173. else
  174. -- check to see if we are still close to our last position.
  175. if((self:GetVectorPos() - self.lastnearbysearchedpos).Magnitude > 4) then
  176. print("Find new monsters since im 4 units away from my last searched pos")
  177. self.nearbymonsters = self:GetCombatManager():GetNearbyMonsters()
  178. self.lastnearbysearchedpos = self:GetVectorPos()
  179. else
  180. print(self.Name.." does not need new monster tab search.")
  181. return self.nearbymonsters
  182. end
  183. end
  184.  
  185. return self.nearbymonsters
  186. end
  187.  
  188.  
  189. return Player
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement