(11-22-2015, 08:14 PM)Safwat Wrote: How stable is it to have multiple worlds at the moment?
@DrMasik could you provide a link to your problematic plugin?
10-20 minutes and i'm post the code.
(11-22-2015, 08:14 PM)Safwat Wrote: How stable is it to have multiple worlds at the moment?
@DrMasik could you provide a link to your problematic plugin?
Schema ( Player login -> Teleport to wrap world ->Teleport to selected world)
Move player to main world
function teleport_to_wrap_world(a_player)
local func_name = "teleport_to_wrap_world()";
-- Get spawn world
local obj_world = cRoot:Get():GetWorld(g_spawn_world);
-- Get free SIZO coordinates
local SpawnX = 14;
local SpawnZ = 4;
-- Mark SIZO as beasy
-- Calculate Y
-- local ret1, SpawnY = obj_world:TryGetHeight(SpawnX, SpawnZ);
-- Run function after chunks loaded
local OnAllChunksAvailable = function()
console_log(func_name .." -> chunks redy for player ID ".. a_player:GetUniqueID(), 1);
-- Move to spawn world
a_player:MoveToWorld(obj_world);
-- Calculate Y
local ret1, SpawnY = obj_world:TryGetHeight(SpawnX, SpawnZ);
if ret1 then
console_log(func_name .." -> SpawnY detected", 1);
else
console_log(func_name .." -> SpawnY NOT detected", 1);
end
console_log(func_name .." -> SpawnY =".. SpawnY, 1);
-- Move to SIZO
-- a_player:TeleportToCoords(SpawnX, SpawnY, SpawnZ);
-- Set clear player inventory
-- a_player:GetInventory():Clear();
-- Set game mode for the plater
-- a_player:SetGameMode(0);
end
-- Prepare chunks for teleportation
console_log(func_name .." -> prepare chunks", 1);
obj_world:ChunkStay({{SpawnX/16, SpawnZ/16}}, OnChunkAvailable, OnAllChunksAvailable)
return 0;
end
Next function called to teleport into some of worlds (survival1):
function teleport_to_survival1(a_player)
local func_name = "teleport_to_survival1()";
if not a_player then
console_log(func_name .." -> a_player is nil", 2);
return (-1);
end
local world_name = "survival1";
local obj_world = cRoot:Get():GetWorld(world_name);
if not obj_world then
console_log(func_name .." -> do not find world ".. world_name, 2);
return (-1);
end
-- Get player respawn point into current world
local SpawnX = 1024;
local SpawnZ = 1024;
-- Get world default spawn points
local WSpawnX = obj_world:GetSpawnX();
local WSpawnZ = obj_world:GetSpawnZ();
-- Save player ID
local player_id = a_player:GetUniqueID();
local player = g_players[player_id];
-- Run function after chunks loaded
local OnAllChunksAvailable = function()
console_log(func_name .." -> chunks redy for player ID ".. a_player:GetUniqueID(), 1);
local ret1, SpawnY = obj_world:TryGetHeight(SpawnX, SpawnZ);
local ret2, WSpawnY = obj_world:TryGetHeight(WSpawnX, WSpawnZ);
-- Move to spawn world
a_player:MoveToWorld(obj_world);
-- Teleport to coordinates
a_player:TeleportToCoords(SpawnX, SpawnY, SpawnZ);
-- Load player inventory
player:LoadInventory(a_player);
-- Load player experience
player:LoadExperience(a_player);
-- Set game mode for the plater
a_player:SetGameMode(0);
end
-- Prepare chunks for teleportation
console_log(func_name .." -> prepare chunks", 1);
obj_world:ChunkStay({{WSpawnX/16, WSpawnZ/16}, {SpawnX/16, SpawnZ/16}}, OnChunkAvailable, OnAllChunksAvailable)
return 0;
end

