entity spawn only once when in range, fixed waypoints for use the depot

This commit is contained in:
AlessandroCH 2025-05-17 23:39:49 +02:00
parent 9621cf8274
commit dab3723540
4 changed files with 69 additions and 9 deletions

View File

@ -358,7 +358,7 @@ namespace Campofinale.Game
});
GetEntityExcludingChar().ForEach(e =>
{
GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List<Entity>() { e}));
// GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List<Entity>() { e}));
});
UpdateShowEntities();
@ -369,7 +369,7 @@ namespace Campofinale.Game
{
en.spawned = true;
List<Entity> toSpawn = new List<Entity>();
toSpawn.Add(en);
if(en.belongLevelScriptId != 0)
if (spawnedCheck)
{
foreach (Entity e in GetEntityExcludingChar().FindAll(e => e.belongLevelScriptId == en.belongLevelScriptId && e.spawned == false))
@ -387,17 +387,18 @@ namespace Campofinale.Game
}
}
toSpawn.Add(en);
toSpawn.ForEach(e =>
{
//GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List<Entity>() { e}));
GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List<Entity>() { e}));
});
UpdateShowEntities();
}
public void UpdateShowEntities()
{
foreach(Entity en in GetEntityExcludingChar())
{
if (en.Position.Distance(GetOwner().position) < 250)
if (en.Position.Distance(GetOwner().position) < 100)
{
if (!en.spawned)
{

View File

@ -133,8 +133,8 @@ namespace Campofinale.Packets.Cs
m.TrackMissionId = "";
// session.Send(ScMsgId.ScSyncAllMission, m);
session.Send(ScMsgId.ScSyncAllMission, new ScSyncAllMission()
session.Send(ScMsgId.ScSyncAllMission, m);
/*ession.Send(ScMsgId.ScSyncAllMission, new ScSyncAllMission()
{
NewMissionTags =
{
@ -219,10 +219,37 @@ namespace Campofinale.Packets.Cs
QuestObjectives =
{
}
} },
{"e0m0_q#6", new Quest()
{
QuestId="e0m0_q#6",
QuestState=(int)QuestState.Available,
QuestObjectives =
{
}
} },
{"e0m0_q#7", new Quest()
{
QuestId="e0m0_q#7",
QuestState=(int)QuestState.Available,
QuestObjectives =
{
}
} },
{"e0m0_q#8", new Quest()
{
QuestId="e0m0_q#8",
QuestState=(int)QuestState.Available,
QuestObjectives =
{
}
} }
}
});
});*/
session.Send(new PacketScGachaSync(session));
ScSettlementSyncAll settlements = new ScSettlementSyncAll()

View File

@ -95,6 +95,33 @@ namespace Campofinale.Packets.Cs
QuestState = (int)QuestState.Processing,
});
}
if (req.EventName == "#251df3ad")
{
session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate()
{
QuestId = "e0m0_q#5",
QuestState = (int)QuestState.Completed,
});
session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate()
{
QuestId = "e0m0_q#6",
QuestState = (int)QuestState.Processing,
});
}
if (req.EventName == "#e6ac322b")
{
session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate()
{
QuestId = "e0m0_q#6",
QuestState = (int)QuestState.Completed,
});
session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate()
{
QuestId = "e0m0_q#7",
QuestState = (int)QuestState.Processing,
});
}
ScSceneUpdateLevelScriptProperty update1 = new()
{
SceneNumId = req.SceneNumId,

View File

@ -12,7 +12,12 @@ namespace Campofinale.Packets.Cs
public static void Handle(Player session, CsMsgId cmdId, Packet packet)
{
CsSceneSetSafeZone req = packet.DecodeBody<CsSceneSetSafeZone>();
ScSceneSetSafeZone rsp = new()
{
Id = req.Id,
InZone = req.InZone,
};
session.Send(ScMsgId.ScSceneSetSafeZone, rsp);
if (req.InZone)
{
var entity = session.sceneManager.GetEntity(req.Id) as EntityInteractive;