Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- local Player = {}
- Player.__index = Player
- function Player.new(PlayerId, PlayerName)
- local player = {}
- setmetatable(player, Player)
- player.Name = PlayerName
- player.Id = PlayerId
- player.Position = {X= 0, Y = 4, Z = 0}
- player.maxhp = 10
- player.rights = 0
- player.combatlevel = 1
- player.damagemodifers = {
- accuracy = 30,
- strength = 30,
- defence = 30,
- }
- player.bonusstats = {
- dex = 1,
- mag = 1,
- str = 1,
- vit = 1,
- }
- player.currentanim = nil
- player.area = "Default"
- player.target = nil
- player.hotkeys = {}
- player.hotkeys[1] = {
- slot = 1,
- isSpellSlot = true,
- spellname = "Ice Spear"
- }
- return player
- end
- function Player.Load(playerData)
- local combatmanager = require(game.ServerScriptService.server_player.playercomabt.CombatManager)
- local pathfinding = require(game.ServerScriptService.server_player.pathfinding.PathFinding)
- local player = {}
- setmetatable(player, Player)
- player.Name = playerData.Name
- player.Id = playerData.Id
- player.Position = playerData.Position
- player.maxhp = playerData.maxhp
- player.rights = playerData.rights
- player.combatlevel = playerData.combatlevel
- player.damagemodifers = playerData.damagemodifers
- player.bonusstats = playerData.bonusstats
- player.currentanim = nil
- player.area = playerData.area
- player.target = nil
- player.hotkeys = {}
- player.hotkeys[1] = {
- slot = 1,
- isSpellSlot = true,
- spellname = "Ice Spear"
- }
- player.combatManager = combatmanager.New(player.Id)
- player.pathfinding = pathfinding.New()
- return player
- end
- function Player:Move(Direction)
- local Client = game:GetService('Players'):GetPlayerByUserId(self.Id)
- local Character = Client.Character:WaitForChild("HumanoidRootPart")
- local newCframe = nil
- if Direction == 1 then
- --forward
- newCframe = Character.CFrame * CFrame.new(0,0,-0.35)
- elseif Direction == 2 then
- newCframe = Character.CFrame * CFrame.Angles(0, 0.25, 0)
- elseif Direction == 3 then
- newCframe = Character.CFrame * CFrame.Angles(0, -0.25, 0)
- elseif Direction == 4 then
- end
- if(newCframe ~= nil) then
- Character.CFrame = Character.CFrame:Lerp(newCframe, 0.25)
- if(self:GetVectorPos() - Character.Position).Magnitude < 1.8 then
- self:SetPosition(Character.Position)
- else
- Character.Position = self:GetVectorPos()
- end
- end
- end
- function Player:MoveTo(CFrameToMoveTo, DistanceToStop)
- -- GetPathPoints to Player
- -- bind renderstep
- -- follow the part that is heading towards target.
- -- part will be destroyed and player will stop when distance to stop is reached.
- local Client = game:GetService('Players'):GetPlayerByUserId(self.Id)
- local Character = Client.Character:WaitForChild("HumanoidRootPart")
- if(CFrameToMoveTo ~= nil) then
- Character.CFrame = CFrame.new(Character.Position, CFrameToMoveTo) -- look at th target
- local Path = self.pathfinding.GetPath(Character, Character.Position, CFrameToMoveTo)
- Path = self.pathfinding.Reverse(Path)
- self.pathfinding.Lead = self.pathfinding:MoveLeadToPath(Client.Character, Path, self.pathfinding.distance)
- local Connection
- Connection = game:GetService("RunService").Stepped:Connect(function(delta)
- print((self:GetVectorPos() - CFrameToMoveTo).Magnitude)
- end)
- if(self:GetVectorPos() - Character.Position).Magnitude < 1.8 then
- self:SetPosition(Character.Position)
- else
- Character.Position = self:GetVectorPos()
- end
- end
- end
- function Player:GetVectorPos()
- return Vector3.new(self.Position.X,self.Position.Y,self.Position.Z)
- end
- function Player:SetPosition(Position)
- self.Position.X = Position.X
- self.Position.Y = Position.Y
- self.Position.Z = Position.Z
- end
- function Player:GetPlayerDataTable()
- local player = {}
- player.Name = self.Name
- player.Id = self.Id
- player.Position = self.Position
- player.maxhp = self.maxhp
- player.rights = self.rights
- player.combatlevel = self.combatlevel
- player.damagemodifers = self.damagemodifers
- player.bonusstats = self.bonusstats
- player.currentanim = nil
- player.area = self.area
- player.target = nil
- player.hotkeys = self.hotkeys
- return player
- end
- function Player:GetAnimationManager()
- if(self.AnimManager == nil) then
- self.AnimManager = require(game.ServerScriptService.server_player.controllers.animation.AnimationManager)
- end
- return self.AnimManager
- end
- function Player:PlayCurrentAnim()
- local id = self.Id
- local anim = self.currentanim
- self:GetAnimationManager():PlayAnim(id, anim)
- end
- function Player:GetCombatManager()
- return self.combatManager
- end
- function Player:GetNearByMonsters()
- if(self.nearbymonsters == nil) then
- self.nearbymonsters = {}
- self.lastnearbysearchedpos = self:GetVectorPos()
- end
- if(#self.nearbymonster == 0) then
- self.nearbymonsters = self:GetCombatManager():GetNearbyMonsters()
- self.lastnearbysearchedpos = self:GetVectorPos()
- else
- -- check to see if we are still close to our last position.
- if((self:GetVectorPos() - self.lastnearbysearchedpos).Magnitude > 4) then
- print("Find new monsters since im 4 units away from my last searched pos")
- self.nearbymonsters = self:GetCombatManager():GetNearbyMonsters()
- self.lastnearbysearchedpos = self:GetVectorPos()
- else
- print(self.Name.." does not need new monster tab search.")
- return self.nearbymonsters
- end
- end
- return self.nearbymonsters
- end
- return Player
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement