54 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			No EOL
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Lua
		
	
	
	
	
	
---@class ClientPlayer
 | 
						|
---@field Handle integer
 | 
						|
---@field Name string
 | 
						|
---@field State table
 | 
						|
---@field ServerId integer
 | 
						|
---@field Character PlayerPed
 | 
						|
---@field GetIsAlive fun(): boolean
 | 
						|
ClientPlayer = {}
 | 
						|
ClientPlayer.__index = ClientPlayer
 | 
						|
 | 
						|
function ClientPlayer.new(playerIndex)
 | 
						|
  local self = setmetatable({}, ClientPlayer)
 | 
						|
  self.Handle = playerIndex
 | 
						|
  self.Name = GetPlayerName(playerIndex)
 | 
						|
  self.State = {}
 | 
						|
  self.ServerId = GetPlayerServerId(playerIndex)
 | 
						|
  self.Character = PlayerPed.new(playerIndex)
 | 
						|
  self.GetIsAlive = function ()
 | 
						|
    return not IsPlayerDead(playerIndex)
 | 
						|
  end
 | 
						|
 | 
						|
  setmetatable(self.State, {
 | 
						|
    __index = function (list, key)
 | 
						|
      return Player(self.ServerId).state[key]
 | 
						|
    end,
 | 
						|
 | 
						|
    __newindex = function (list, key, value)
 | 
						|
      Player(self.ServerId).state:set(key, value, true)
 | 
						|
    end
 | 
						|
  })
 | 
						|
 | 
						|
  return self
 | 
						|
end
 | 
						|
 | 
						|
---@return table<integer, ClientPlayer>
 | 
						|
function GetServerPlayers()
 | 
						|
  local playersKnownToClient = {}
 | 
						|
  for _, playerIndex in pairs(GetActivePlayers()) do
 | 
						|
    local player = ClientPlayer.new(playerIndex)
 | 
						|
    playersKnownToClient[player.ServerId] = player
 | 
						|
  end
 | 
						|
 | 
						|
  return playersKnownToClient
 | 
						|
end
 | 
						|
 | 
						|
---@param serverId integer
 | 
						|
---@return ClientPlayer
 | 
						|
function GetPlayer(serverId)
 | 
						|
  local players = GetServerPlayers()
 | 
						|
  return players[serverId]
 | 
						|
end
 | 
						|
 | 
						|
---@alias GamePlayer
 | 
						|
GamePlayer = ClientPlayer.new(PlayerId()) |