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

View File

@ -133,8 +133,8 @@ namespace Campofinale.Packets.Cs
m.TrackMissionId = ""; m.TrackMissionId = "";
// session.Send(ScMsgId.ScSyncAllMission, m); session.Send(ScMsgId.ScSyncAllMission, m);
session.Send(ScMsgId.ScSyncAllMission, new ScSyncAllMission() /*ession.Send(ScMsgId.ScSyncAllMission, new ScSyncAllMission()
{ {
NewMissionTags = NewMissionTags =
{ {
@ -219,10 +219,37 @@ namespace Campofinale.Packets.Cs
QuestObjectives = 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)); session.Send(new PacketScGachaSync(session));
ScSettlementSyncAll settlements = new ScSettlementSyncAll() ScSettlementSyncAll settlements = new ScSettlementSyncAll()

View File

@ -95,6 +95,33 @@ namespace Campofinale.Packets.Cs
QuestState = (int)QuestState.Processing, 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() ScSceneUpdateLevelScriptProperty update1 = new()
{ {
SceneNumId = req.SceneNumId, SceneNumId = req.SceneNumId,

View File

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