class 'Worldinit'
function Worldinit:__init()
-- self.player = player
-- self.playerId = player:GetId()
-- self.name = player:GetName()
-- self.steamId = player:GetSteamId().id
-- This part works. They define a map file, and initialize a mapinstance (serverside)
local path = "LAbase6.map"
--local path = ..name..".map"
self.map = MapEditor.LoadFromFile(path)
self.MapInstance = MapEditor.MapInstance(self.map)
-- The next part, initializing clientside part for players, is where I'm hitting the wall
local Urikplayer = Player.GetById(0) -- I know this is wrong but it's THE ONLY WAY I got it to work so far. I was just desperate to find out if I'm doing the right thing afterall
self.MapInstance:AddPlayer(Urikplayer) -- So it works when I reload it while being on the server (because my id is always 0 when I'm alone)
Events:Subscribe("PlayerJoin", self, self.OnPlayerJoin)
--Events:Subscribe("PlayerQuit", self, self.OnPlayerLeave)
end
function Worldinit:OnPlayerJoin(args) -- I've also tried "args, player" and "player" here
self.player = player
-- the MapInstamce:Addplayer is supposed to be called for a player who joined the server. It initializes the object streaming for their client side
-- it looks like this:
-- function MapEditor.MapInstance:AddPlayer(player)
-- table.insert(self.players , player)
-- Network:Send(player , "InitializeMapInstance" , self.clientObjects)
-- end
-- so I need to provide it with player, which I am trying to do
-- as you see below I've tried different ways to get players, or player ids, to no avail
-- I've referred to other scripts, they just use OnPlayerJoin(args) and then use (args.player) but it doesn't work here
-- in console, either nothing happens, or "Player" being a nil value, or it gives "void NetworkManager:Send (...."
-- so I realize that function doesn't get what I'm supposed to provide it with
-- I don't get what MapInstance:AddPlayer wants from me in the brackets, and what I get with args.player
-- my success with Player.GetById only lead me to assumption it wants an Id, but attempt to extract Id of newlyjoined player didn't lead me anywhere
-- if I'm just using args.player, I'm not even sure what kind of data it is providing to the function
--local newblokeID = tostring ( args.player:GetId() )
local newplayer = args.player
--local newplayerid = newplayer:GetId()
--for players in Server:GetPlayers() do
self.MapInstance:AddPlayer(newplayer)
end
-- pretty much the same will have to be done for onplayerleave later on.
--[[
function Worldinit:OnPlayerLeave()
self.MapInstance:RemovePlayer(player)
end--]]
--function Worldinit:OnModuleLoad()
-- I assume I will need something this for the event of module loading on occupied server, but I didn't get to it yet hence didn't add subsription
-- the iteration didn't work anyway
--[[
for player in Server:GetPlayers(args) do
self.MapInstance:AddPlayer(player)
end-]]
--end
Worldinit = Worldinit()