mirror of
https://bitbucket.org/Ioncannon/project-meteor-server.git
synced 2025-04-22 04:37:47 +00:00
Ported over all the opening directors and improved the director code a bit more. Also implemented content instances for Grid/Uld.
This commit is contained in:
parent
24c46c0480
commit
69f7fb5e47
18 changed files with 205 additions and 94 deletions
|
@ -501,11 +501,11 @@ namespace FFXIVClassic_Map_Server.Actors
|
|||
}
|
||||
}
|
||||
|
||||
public Director CreateDirector(string path, params object[] args)
|
||||
public Director CreateDirector(string path, bool hasContentGroup, params object[] args)
|
||||
{
|
||||
lock (directorLock)
|
||||
{
|
||||
Director director = new Director(directorIdCount, this, path, args);
|
||||
Director director = new Director(directorIdCount, this, path, hasContentGroup, args);
|
||||
currentDirectors.Add(director.actorId, director);
|
||||
directorIdCount++;
|
||||
return director;
|
||||
|
|
|
@ -14,7 +14,6 @@ namespace FFXIVClassic_Map_Server.actors.area
|
|||
class PrivateAreaContent : PrivateArea
|
||||
{
|
||||
private Director currentDirector;
|
||||
private ContentGroup currentContentGroup;
|
||||
private bool isContentFinished = false;
|
||||
|
||||
public static PrivateAreaContent CreateContentArea(String scriptPath)
|
||||
|
@ -26,8 +25,7 @@ namespace FFXIVClassic_Map_Server.actors.area
|
|||
: base(parent, parent.actorId, classPath, privateAreaName, privateAreaType, 0, 0, 0)
|
||||
{
|
||||
currentDirector = director;
|
||||
currentContentGroup = Server.GetWorldManager().CreateContentGroup(director);
|
||||
LuaEngine.GetInstance().CallLuaFunction(contentStarter, this, "onCreate", false, currentContentGroup, currentDirector);
|
||||
LuaEngine.GetInstance().CallLuaFunction(contentStarter, this, "onCreate", false, currentDirector);
|
||||
}
|
||||
|
||||
public Director GetContentDirector()
|
||||
|
@ -35,11 +33,6 @@ namespace FFXIVClassic_Map_Server.actors.area
|
|||
return currentDirector;
|
||||
}
|
||||
|
||||
public ContentGroup GetContentGroup()
|
||||
{
|
||||
return currentContentGroup;
|
||||
}
|
||||
|
||||
public void ContentFinished()
|
||||
{
|
||||
isContentFinished = true;
|
||||
|
|
|
@ -114,11 +114,11 @@ namespace FFXIVClassic_Map_Server.actors.area
|
|||
return mActorList[id];
|
||||
}
|
||||
|
||||
public PrivateAreaContent CreateContentArea(Player starterPlayer, string areaClassPath, string contentScript, string areaName, string directorName)
|
||||
public PrivateAreaContent CreateContentArea(Player starterPlayer, string areaClassPath, string contentScript, string areaName, string directorName, params object[] args)
|
||||
{
|
||||
lock (contentAreasLock)
|
||||
{
|
||||
Director director = CreateDirector(directorName);
|
||||
Director director = CreateDirector(directorName, true, args);
|
||||
|
||||
if (director == null)
|
||||
return null;
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
|
||||
using FFXIVClassic.Common;
|
||||
using FFXIVClassic_Map_Server.actors.area;
|
||||
using FFXIVClassic_Map_Server.actors.group;
|
||||
using FFXIVClassic_Map_Server.Actors;
|
||||
using FFXIVClassic_Map_Server.lua;
|
||||
using FFXIVClassic_Map_Server.packets.send.actor;
|
||||
|
@ -16,6 +17,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
private uint directorId;
|
||||
private string directorScriptPath;
|
||||
private List<Actor> members = new List<Actor>();
|
||||
protected ContentGroup contentGroup;
|
||||
private bool isCreated = false;
|
||||
private bool isDeleted = false;
|
||||
private bool isDeleting = false;
|
||||
|
@ -23,7 +25,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
private Script directorScript;
|
||||
private Coroutine currentCoroutine;
|
||||
|
||||
public Director(uint id, Area zone, string directorPath, params object[] args)
|
||||
public Director(uint id, Area zone, string directorPath, bool hasContentGroup, params object[] args)
|
||||
: base((6 << 28 | zone.actorId << 19 | (uint)id))
|
||||
{
|
||||
directorId = id;
|
||||
|
@ -33,6 +35,9 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
|
||||
LoadLuaScript();
|
||||
|
||||
if (hasContentGroup)
|
||||
contentGroup = Server.GetWorldManager().CreateContentGroup(this, GetMembers());
|
||||
|
||||
eventConditions = new EventList();
|
||||
eventConditions.noticeEventConditions = new List<EventList.NoticeEventCondition>();
|
||||
eventConditions.noticeEventConditions.Add(new EventList.NoticeEventCondition("noticeEvent", 0xE,0x0));
|
||||
|
@ -108,6 +113,9 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
|
||||
if (isCreated && spawnImmediate)
|
||||
{
|
||||
if (contentGroup != null)
|
||||
contentGroup.Start();
|
||||
|
||||
foreach (Player p in GetPlayerMembers())
|
||||
{
|
||||
p.QueuePackets(GetSpawnPackets());
|
||||
|
@ -116,15 +124,26 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
}
|
||||
|
||||
if (this is GuildleveDirector)
|
||||
{
|
||||
((GuildleveDirector)this).LoadGuildleve();
|
||||
}
|
||||
|
||||
StartCoroutine("main", this);
|
||||
}
|
||||
|
||||
public void StartContentGroup()
|
||||
{
|
||||
if (contentGroup != null)
|
||||
contentGroup.Start();
|
||||
}
|
||||
|
||||
public void EndDirector()
|
||||
{
|
||||
isDeleting = true;
|
||||
|
||||
if (contentGroup != null)
|
||||
contentGroup.DeleteGroup();
|
||||
|
||||
if (this is GuildleveDirector)
|
||||
((GuildleveDirector)this).EndGuildleveDirector();
|
||||
|
||||
|
@ -139,13 +158,20 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
public void AddMember(Actor actor)
|
||||
{
|
||||
if (!members.Contains(actor))
|
||||
{
|
||||
members.Add(actor);
|
||||
|
||||
if (contentGroup != null)
|
||||
contentGroup.AddMember(actor);
|
||||
}
|
||||
}
|
||||
|
||||
public void RemoveMember(Actor actor)
|
||||
{
|
||||
if (members.Contains(actor))
|
||||
members.Remove(actor);
|
||||
if (contentGroup != null)
|
||||
contentGroup.RemoveMember(actor.actorId);
|
||||
if (GetPlayerMembers().Count == 0 && !isDeleting)
|
||||
EndDirector();
|
||||
}
|
||||
|
@ -175,6 +201,16 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
return isDeleted;
|
||||
}
|
||||
|
||||
public bool HasContentGroup()
|
||||
{
|
||||
return contentGroup != null;
|
||||
}
|
||||
|
||||
public ContentGroup GetContentGroup()
|
||||
{
|
||||
return contentGroup;
|
||||
}
|
||||
|
||||
public void GenerateActorName(int actorNumber)
|
||||
{
|
||||
//Format Class Name
|
||||
|
@ -262,5 +298,24 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
return null;
|
||||
}
|
||||
|
||||
public void OnEventStart(Player player, object[] args)
|
||||
{
|
||||
object[] args2 = new object[args.Length + (player == null ? 1 : 2)];
|
||||
Array.Copy(args, 0, args2, (player == null ? 1 : 2), args.Length);
|
||||
if (player != null)
|
||||
{
|
||||
args2[0] = player;
|
||||
args2[1] = this;
|
||||
}
|
||||
else
|
||||
args2[0] = this;
|
||||
|
||||
Coroutine coroutine = directorScript.CreateCoroutine(directorScript.Globals["onEventStarted"]).Coroutine;
|
||||
DynValue value = coroutine.Resume(args2);
|
||||
LuaEngine.GetInstance().ResolveResume(player, coroutine, value);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
|
@ -18,7 +18,6 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
public uint guildleveId;
|
||||
public Player guildleveOwner;
|
||||
public byte selectedDifficulty;
|
||||
public ContentGroup contentGroup;
|
||||
|
||||
public GuildleveData guildleveData;
|
||||
public GuildleveWork guildleveWork = new GuildleveWork();
|
||||
|
@ -27,7 +26,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
public uint completionTime = 0;
|
||||
|
||||
public GuildleveDirector(uint id, Area zone, string directorPath, uint guildleveId, byte selectedDifficulty, Player guildleveOwner, params object[] args)
|
||||
: base(id, zone, directorPath, args)
|
||||
: base(id, zone, directorPath, true, args)
|
||||
{
|
||||
this.guildleveId = guildleveId;
|
||||
this.selectedDifficulty = selectedDifficulty;
|
||||
|
@ -53,7 +52,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
|
||||
public void LoadGuildleve()
|
||||
{
|
||||
contentGroup = Server.GetWorldManager().CreateGLContentGroup(this, GetMembers());
|
||||
|
||||
}
|
||||
|
||||
public void StartGuildleve()
|
||||
|
@ -123,7 +122,7 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
if (wasCompleted)
|
||||
{
|
||||
Npc aetheryteNode = zone.SpawnActor(1200040, String.Format("{0}:warpExit", guildleveOwner.actorName), guildleveOwner.positionX, guildleveOwner.positionY, guildleveOwner.positionZ);
|
||||
contentGroup.AddMember(aetheryteNode);
|
||||
AddMember(aetheryteNode);
|
||||
|
||||
foreach (Actor a in GetPlayerMembers())
|
||||
{
|
||||
|
@ -150,7 +149,6 @@ namespace FFXIVClassic_Map_Server.actors.director
|
|||
//Delete ContentGroup, change music back
|
||||
public void EndGuildleveDirector()
|
||||
{
|
||||
contentGroup.DeleteGroup();
|
||||
foreach (Actor p in GetPlayerMembers())
|
||||
{
|
||||
Player player = (Player)p;
|
||||
|
|
|
@ -19,6 +19,7 @@ namespace FFXIVClassic_Map_Server.actors.group
|
|||
public ContentGroupWork contentGroupWork = new ContentGroupWork();
|
||||
private Director director;
|
||||
private List<uint> members = new List<uint>();
|
||||
private bool isStarted = false;
|
||||
|
||||
public ContentGroup(ulong groupIndex, Director director, uint[] initialMembers) : base(groupIndex)
|
||||
{
|
||||
|
@ -38,6 +39,12 @@ namespace FFXIVClassic_Map_Server.actors.group
|
|||
contentGroupWork._globalTemp.director = (ulong)director.actorId << 32;
|
||||
}
|
||||
|
||||
public void Start()
|
||||
{
|
||||
isStarted = true;
|
||||
SendGroupPacketsAll(members);
|
||||
}
|
||||
|
||||
public void AddMember(Actor actor)
|
||||
{
|
||||
if (actor == null)
|
||||
|
@ -48,12 +55,14 @@ namespace FFXIVClassic_Map_Server.actors.group
|
|||
if (actor is Character)
|
||||
((Character)actor).SetCurrentContentGroup(this);
|
||||
|
||||
if (isStarted)
|
||||
SendGroupPacketsAll(members);
|
||||
}
|
||||
|
||||
public void RemoveMember(uint memberId)
|
||||
{
|
||||
members.Remove(memberId);
|
||||
if (isStarted)
|
||||
SendGroupPacketsAll(members);
|
||||
CheckDestroy();
|
||||
}
|
||||
|
|
|
@ -117,7 +117,7 @@ namespace FFXIVClassic_Map_Server.lua
|
|||
Coroutine coroutine = mSleepingOnPlayerEvent[player.actorId];
|
||||
mSleepingOnPlayerEvent.Remove(player.actorId);
|
||||
DynValue value = coroutine.Resume(LuaUtils.CreateLuaParamObjectList(args));
|
||||
ResolveResume(null, coroutine, value);
|
||||
ResolveResume(player, coroutine, value);
|
||||
}
|
||||
catch (ScriptRuntimeException e)
|
||||
{
|
||||
|
@ -384,9 +384,14 @@ namespace FFXIVClassic_Map_Server.lua
|
|||
player.EndEvent();
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
if (target is Director)
|
||||
((Director)target).OnEventStart(player, LuaUtils.CreateLuaParamObjectList(lparams));
|
||||
else
|
||||
CallLuaFunction(player, target, "onEventStarted", false, LuaUtils.CreateLuaParamObjectList(lparams));
|
||||
}
|
||||
}
|
||||
|
||||
public DynValue ResolveResume(Player player, Coroutine coroutine, DynValue value)
|
||||
{
|
||||
|
|
|
@ -144,7 +144,7 @@ function doLevequestInit(player, aetheryte)
|
|||
player:PlayAnimation(getGLStartAnimationFromSheet(guildleveData.borderId, guildleveData.plateId, true));
|
||||
director = player:GetZone():CreateGuildleveDirector(glId, difficulty, player);
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(true, glId)
|
||||
director:StartDirector(true, glId);
|
||||
|
||||
end
|
||||
else
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
|
||||
function onCreate(starterPlayer, contentArea, contentGroup, director)
|
||||
function onCreate(starterPlayer, contentArea, director)
|
||||
|
||||
yshtola = contentArea:SpawnActor(2290001, "yshtola", -8, 16.35, 6, 0.5);
|
||||
stahlmann = contentArea:SpawnActor(2290002, "stahlmann", 0, 16.35, 22, 3);
|
||||
|
@ -8,13 +8,15 @@ function onCreate(starterPlayer, contentArea, contentGroup, director)
|
|||
mob2 = contentArea:SpawnActor(2205403, "mob2", -3.02, 17.35, 14.24, -2.81);
|
||||
mob3 = contentArea:SpawnActor(2205403, "mob3", -3.02-3, 17.35, 14.24, -2.81);
|
||||
|
||||
contentGroup:AddMember(starterPlayer);
|
||||
contentGroup:AddMember(director);
|
||||
contentGroup:AddMember(yshtola);
|
||||
contentGroup:AddMember(stahlmann);
|
||||
contentGroup:AddMember(mob1);
|
||||
contentGroup:AddMember(mob2);
|
||||
contentGroup:AddMember(mob3);
|
||||
director:AddMember(starterPlayer);
|
||||
director:AddMember(director);
|
||||
director:AddMember(yshtola);
|
||||
director:AddMember(stahlmann);
|
||||
director:AddMember(mob1);
|
||||
director:AddMember(mob2);
|
||||
director:AddMember(mob3);
|
||||
|
||||
director:StartContentGroup();
|
||||
|
||||
end
|
||||
|
||||
|
|
30
data/scripts/content/SimpleContent30010.lua
Normal file
30
data/scripts/content/SimpleContent30010.lua
Normal file
|
@ -0,0 +1,30 @@
|
|||
|
||||
function onCreate(starterPlayer, contentArea, director)
|
||||
|
||||
papalymo = contentArea:SpawnActor(2290005, "papalymo", 365.89, 4.0943, -706.72, -0.718);
|
||||
yda = contentArea:SpawnActor(2290006, "yda", 365.266, 4.122, -700.73, 1.5659);
|
||||
yda:ChangeState(2);
|
||||
|
||||
mob1 = contentArea:SpawnActor(2201407, "mob1", 374.427, 4.4, -698.711, -1.942);
|
||||
mob2 = contentArea:SpawnActor(2201407, "mob2", 375.377, 4.4, -700.247, -1.992);
|
||||
mob3 = contentArea:SpawnActor(2201407, "mob3", 375.125, 4.4, -703.591, -1.54);
|
||||
|
||||
openingStoper = contentArea:SpawnActor(1090384, "openingstoper", 356.09, 3.74, -701.62, -1.41);
|
||||
|
||||
director:AddMember(starterPlayer);
|
||||
director:AddMember(director);
|
||||
director:AddMember(papalymo);
|
||||
director:AddMember(yda);
|
||||
director:AddMember(mob1);
|
||||
director:AddMember(mob2);
|
||||
director:AddMember(mob3);
|
||||
|
||||
director:StartContentGroup();
|
||||
|
||||
end
|
||||
|
||||
function onDestroy()
|
||||
|
||||
|
||||
|
||||
end
|
26
data/scripts/content/SimpleContent30079.lua
Normal file
26
data/scripts/content/SimpleContent30079.lua
Normal file
|
@ -0,0 +1,26 @@
|
|||
|
||||
function onCreate(starterPlayer, contentArea, director)
|
||||
|
||||
niellefresne = contentArea:SpawnActor(2290003, "niellefresne", -11.86, 192, 35.06, -0.8);
|
||||
thancred = contentArea:SpawnActor(2290004, "thancred", -26.41, 192, 39.52, 1.2);
|
||||
thancred:ChangeState(2);
|
||||
|
||||
mob1 = contentArea:SpawnActor(2203301, "mob1", -6.193, 192, 47.658, -2.224);
|
||||
|
||||
openingStoper = contentArea:SpawnActor(1090385, "openingstoper", -24.34, 192, 34.22, 0);
|
||||
|
||||
director:AddMember(starterPlayer);
|
||||
director:AddMember(director);
|
||||
director:AddMember(niellefresne);
|
||||
director:AddMember(thancred);
|
||||
director:AddMember(mob1);
|
||||
|
||||
director:StartContentGroup();
|
||||
|
||||
end
|
||||
|
||||
function onDestroy()
|
||||
|
||||
|
||||
|
||||
end
|
|
@ -59,27 +59,7 @@ function onEventStarted(player, actor, triggerName)
|
|||
man0u0Quest:NextPhase(10);
|
||||
player:EndEvent();
|
||||
|
||||
end
|
||||
|
||||
function onUpdate()
|
||||
end
|
||||
|
||||
function onTalkEvent(player, npc)
|
||||
player:GetZone():ContentFinished();
|
||||
GetWorldManager():DoZoneChange(player, 230, "PrivateAreaMasterPast", 1, 15, -826.868469, 6, 193.745865, -0.008368492);
|
||||
|
||||
end
|
||||
|
||||
function onPushEvent(player, npc)
|
||||
end
|
||||
|
||||
function onCommandEvent(player, command)
|
||||
|
||||
quest = GetStaticActor("Man0l0");
|
||||
callClientFunction(player, "delegateEvent", player, quest, "processTtrBtl002", nil, nil, nil);
|
||||
|
||||
end
|
||||
|
||||
function onEventUpdate(player, npc)
|
||||
end
|
||||
|
||||
function onCommand(player, command)
|
||||
end
|
|
@ -21,8 +21,9 @@ function onBeginLogin(player)
|
|||
|
||||
--For Opening. Set Director and reset position incase d/c
|
||||
if (player:HasQuest(110001) == true) then
|
||||
director = player:GetZone():CreateDirector("OpeningDirector");
|
||||
director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(true);
|
||||
player:SetLoginDirector(director);
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
|
||||
|
@ -33,10 +34,11 @@ function onBeginLogin(player)
|
|||
player:GetQuest(110001):ClearQuestData();
|
||||
player:GetQuest(110001):ClearQuestFlags();
|
||||
elseif (player:HasQuest(110005) == true) then
|
||||
director = player:GetZone():CreateDirector("OpeningDirector");
|
||||
director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
player:SetLoginDirector(director);
|
||||
player:KickEvent(director, "noticeEvent", "noticeEvent");
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
|
||||
player.positionX = 369.5434;
|
||||
player.positionY = 4.21;
|
||||
|
@ -45,10 +47,11 @@ function onBeginLogin(player)
|
|||
player:GetQuest(110005):ClearQuestData();
|
||||
player:GetQuest(110005):ClearQuestFlags();
|
||||
elseif (player:HasQuest(110009) == true) then
|
||||
director = player:GetZone():CreateDirector("OpeningDirector");
|
||||
player:AddDirector(director);
|
||||
player:SetLoginDirector(director);
|
||||
player:KickEvent(director, "noticeEvent", "noticeEvent");
|
||||
--director = player:GetZone():CreateDirector("OpeningDirector", false);
|
||||
--player:AddDirector(director);
|
||||
--director:StartDirector(false);
|
||||
--player:SetLoginDirector(director);
|
||||
--player:KickEvent(director, "noticeEvent", true);
|
||||
|
||||
player.positionX = 5.364327;
|
||||
player.positionY = 196.0;
|
||||
|
@ -61,7 +64,6 @@ function onBeginLogin(player)
|
|||
end
|
||||
|
||||
function onLogin(player)
|
||||
player:SendMessage(0x1D,"",">Callback \"onLogin\" for player script:Running.");
|
||||
|
||||
if (player:GetPlayTime(false) == 0) then
|
||||
player:SendMessage(0x1D,"",">PlayTime == 0, new player!");
|
||||
|
|
|
@ -6,7 +6,7 @@ function onEventStarted(player, npc, triggerName)
|
|||
worldMaster = GetWorldMaster();
|
||||
player:SendGameMessage(player, worldMaster, 34109, 0x20);
|
||||
elseif (triggerName == "exit") then
|
||||
GetWorldManager():DoPlayerMoveInZone(player, 5);
|
||||
GetWorldManager():DoPlayerMoveInZone(player, 356.09, 3.74, -701.62, -1.4);
|
||||
end
|
||||
player:EndEvent();
|
||||
end
|
|
@ -27,16 +27,21 @@ function onEventStarted(player, npc, triggerName)
|
|||
|
||||
player:EndEvent();
|
||||
|
||||
worldMaster = GetWorldMaster();
|
||||
player:SendGameMessage(player, worldMaster, 34108, 0x20);
|
||||
player:SendGameMessage(player, worldMaster, 50011, 0x20);
|
||||
contentArea = player:GetZone():CreateContentArea(player, "/Area/PrivateArea/Content/PrivateAreaMasterSimpleContent", "man0g01", "SimpleContent30010", "Quest/QuestDirectorMan0g001");
|
||||
|
||||
director = player:GetZone():CreateDirector("Quest/QuestDirectorMan0g001");
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
if (contentArea == nil) then
|
||||
player:EndEvent();
|
||||
return;
|
||||
end
|
||||
|
||||
director = contentArea:GetContentDirector();
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
player:SetLoginDirector(director);
|
||||
|
||||
GetWorldManager():DoZoneChange(player, 166, "ContentSimpleContent30010", 1, 16, 362.4087, 4, -703.8168, 1.5419);
|
||||
GetWorldManager():DoZoneChangeContent(player, contentArea, 362.4087, 4, -703.8168, 1.5419, 16);
|
||||
return;
|
||||
else
|
||||
callClientFunction(player, "delegateEvent", player, man0g0Quest, "processEvent000_1", nil, nil, nil);
|
||||
|
|
|
@ -35,9 +35,10 @@ function onEventStarted(player, npc, triggerName)
|
|||
end
|
||||
|
||||
director = contentArea:GetContentDirector();
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
player:AddDirector(director);
|
||||
player:SetLoginDirector(director);
|
||||
|
||||
GetWorldManager():DoZoneChangeContent(player, contentArea, -5, 16.35, 6, 0.5, 16);
|
||||
|
|
|
@ -7,7 +7,7 @@ function onEventStarted(player, npc, triggerName)
|
|||
worldMaster = GetWorldMaster();
|
||||
player:SendGameMessage(player, worldMaster, 34109, 0x20);
|
||||
elseif (triggerName == "exit") then
|
||||
GetWorldManager():DoPlayerMoveInZone(player, 6);
|
||||
GetWorldManager():DoPlayerMoveInZone(player, 5.36433, 196, 133.656, -2.84938);
|
||||
end
|
||||
player:EndEvent();
|
||||
end
|
|
@ -27,16 +27,21 @@ function onEventStarted(player, npc, triggerName)
|
|||
|
||||
player:EndEvent();
|
||||
|
||||
worldMaster = GetWorldMaster();
|
||||
player:SendGameMessage(player, worldMaster, 34108, 0x20);
|
||||
player:SendGameMessage(player, worldMaster, 50011, 0x20);
|
||||
contentArea = player:GetZone():CreateContentArea(player, "/Area/PrivateArea/Content/PrivateAreaMasterSimpleContent", "man0u01", "SimpleContent30079", "Quest/QuestDirectorMan0u001");
|
||||
|
||||
director = player:GetZone():CreateDirector("Quest/QuestDirectorMan0u001");
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
if (contentArea == nil) then
|
||||
player:EndEvent();
|
||||
return;
|
||||
end
|
||||
|
||||
director = contentArea:GetContentDirector();
|
||||
player:AddDirector(director);
|
||||
director:StartDirector(false);
|
||||
|
||||
player:KickEvent(director, "noticeEvent", true);
|
||||
player:SetLoginDirector(director);
|
||||
|
||||
GetWorldManager():DoZoneChange(player, 184, nil, 0, 16, -24.34, 192, 34.22, 0.78);
|
||||
GetWorldManager():DoZoneChangeContent(player, contentArea, -24.34, 192, 34.22, 0.78, 16);
|
||||
|
||||
end
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue