diff --git a/Campofinale/Game/SceneManager.cs b/Campofinale/Game/SceneManager.cs index 096d1d6..31952cc 100644 --- a/Campofinale/Game/SceneManager.cs +++ b/Campofinale/Game/SceneManager.cs @@ -301,7 +301,7 @@ namespace Campofinale.Game lv_scene.levelData.interactives.ForEach(en => { - if (en.defaultHide || GetOwner().noSpawnAnymore.Contains(en.levelLogicId)) + if (GetOwner().noSpawnAnymore.Contains(en.levelLogicId) && sceneNumId != 87) { return; } @@ -318,7 +318,7 @@ namespace Campofinale.Game }); lv_scene.levelData.factoryRegions.ForEach(en => { - if (en.defaultHide || GetOwner().noSpawnAnymore.Contains(en.levelLogicId)) + if (GetOwner().noSpawnAnymore.Contains(en.levelLogicId) && sceneNumId!=87) { return; } @@ -329,11 +329,12 @@ namespace Campofinale.Game levelLogicId = en.levelLogicId, type = en.entityType, }; + entities.Add(entity); }); lv_scene.levelData.enemies.ForEach(en => { - if(en.defaultHide || GetOwner().noSpawnAnymore.Contains(en.levelLogicId)) return; + if(GetOwner().noSpawnAnymore.Contains(en.levelLogicId) && sceneNumId != 87) return; EntityMonster entity = new(en.entityDataIdKey,en.level,ownerId,en.position,en.rotation, sceneNumId, en.levelLogicId) { type=en.entityType, @@ -344,7 +345,7 @@ namespace Campofinale.Game }); lv_scene.levelData.npcs.ForEach(en => { - if (en.defaultHide) return; + if (en.npcGroupId.Contains("chr")) return; EntityNpc entity = new(en.entityDataIdKey,ownerId,en.position,en.rotation, sceneNumId, en.levelLogicId) { @@ -355,48 +356,71 @@ namespace Campofinale.Game }; entities.Add(entity); }); - /*GetEntityExcludingChar().ForEach(e => + GetEntityExcludingChar().ForEach(e => { - GetOwner().Send(new PacketScObjectEnterView(GetOwner(),new List() { e})); - });*/ + GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List() { e})); + + }); UpdateShowEntities(); + + } + public void SpawnEntity(Entity en,bool spawnedCheck=true) + { + en.spawned = true; + List toSpawn = new List(); + toSpawn.Add(en); + if (spawnedCheck) + { + foreach (Entity e in GetEntityExcludingChar().FindAll(e => e.belongLevelScriptId == en.belongLevelScriptId && e.spawned == false)) + { + e.spawned = true; + toSpawn.Add(e); + } + } + else + { + foreach (Entity e in GetEntityExcludingChar().FindAll(e => e.belongLevelScriptId == en.belongLevelScriptId && e != en)) + { + e.spawned = true; + toSpawn.Add(e); + } + } + toSpawn.ForEach(e => + { + //GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List() { e})); + }); + UpdateShowEntities(); } public void UpdateShowEntities() { foreach(Entity en in GetEntityExcludingChar()) { - if (en.Position.Distance(GetOwner().position) < 200) + if (en.Position.Distance(GetOwner().position) < 250) { if (!en.spawned) { - en.spawned = true; - try - { - GetOwner().Send(new PacketScObjectEnterView(GetOwner(), new List() { en })); - } - catch(Exception e) - { - - } + SpawnEntity(en); + } } else { - if (en.spawned) + + /*if (en.spawned) { en.spawned = false; GetOwner().Send(new PacketScObjectLeaveView(GetOwner(), new List() { en.guid })); en.Position=en.BornPos; en.Rotation = en.Rotation; - } + }*/ } } } - + public Player GetOwner() { return Server.clients.Find(c => c.roleId == ownerId); diff --git a/Campofinale/Packets/Cs/HandleCsLogin.cs b/Campofinale/Packets/Cs/HandleCsLogin.cs index a72b3f3..195186d 100644 --- a/Campofinale/Packets/Cs/HandleCsLogin.cs +++ b/Campofinale/Packets/Cs/HandleCsLogin.cs @@ -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); + session.Send(ScMsgId.ScSyncAllMission, new ScSyncAllMission() { NewMissionTags = { @@ -180,9 +180,49 @@ namespace Campofinale.Packets.Cs IsComplete=false } } + } }, + {"e0m0_q#2", new Quest() + { + QuestId="e0m0_q#2", + QuestState=(int)QuestState.Available, + QuestObjectives = + { + new QuestObjective() + { + ConditionId="81736ca7", + IsComplete=false, + } + } + } }, + {"e0m0_q#3", new Quest() + { + QuestId="e0m0_q#3", + QuestState=(int)QuestState.Available, + QuestObjectives = + { + + } + } }, + {"e0m0_q#4", new Quest() + { + QuestId="e0m0_q#4", + QuestState=(int)QuestState.Available, + QuestObjectives = + { + + } + } }, + {"e0m0_q#5", new Quest() + { + QuestId="e0m0_q#5", + QuestState=(int)QuestState.Available, + QuestObjectives = + { + + } } } } - });*/ + }); session.Send(new PacketScGachaSync(session)); ScSettlementSyncAll settlements = new ScSettlementSyncAll() diff --git a/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs b/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs index 17a76e3..21f2384 100644 --- a/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs +++ b/Campofinale/Packets/Cs/HandleCsSceneSetLevelScriptActive.cs @@ -2,6 +2,7 @@ using Campofinale.Game.Entities; using Campofinale.Network; using Campofinale.Protocol; +using Campofinale.Resource; namespace Campofinale.Packets.Cs { @@ -41,6 +42,59 @@ namespace Campofinale.Packets.Cs { CsSceneLevelScriptEventTrigger req = packet.DecodeBody(); + Logger.Print(req.Properties.ToString()); + if(req.EventName== "#8777e316") + { + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#1", + QuestState = (int)QuestState.Completed, + }); + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#2", + QuestState = (int)QuestState.Processing, + }); + } + if(req.EventName== "#6ea2690d") + { + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#2", + QuestState = (int)QuestState.Completed, + }); + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#3", + QuestState = (int)QuestState.Processing, + }); + } + if (req.EventName == "#bb79de30") + { + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#3", + QuestState = (int)QuestState.Completed, + }); + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#4", + QuestState = (int)QuestState.Processing, + }); + } + if (req.EventName == "#4c76ec3c") + { + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#4", + QuestState = (int)QuestState.Completed, + }); + session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate() + { + QuestId = "e0m0_q#5", + QuestState = (int)QuestState.Processing, + }); + } ScSceneUpdateLevelScriptProperty update1 = new() { SceneNumId = req.SceneNumId, @@ -67,7 +121,7 @@ namespace Campofinale.Packets.Cs }; - session.Send(ScMsgId.ScSceneLevelScriptEventTrigger, rsp); + session.Send(ScMsgId.ScSceneLevelScriptEventTrigger, rsp,packet.csHead.UpSeqid); } } diff --git a/Campofinale/Resource/ResourceManager.cs b/Campofinale/Resource/ResourceManager.cs index 5583c83..c566aee 100644 --- a/Campofinale/Resource/ResourceManager.cs +++ b/Campofinale/Resource/ResourceManager.cs @@ -689,14 +689,15 @@ namespace Campofinale.Resource public float ToFloat() { - int intValueFromBit64 = (int)valueBit64; // Converti long in int - float floatValueFromBit64 = BitConverter.ToSingle(BitConverter.GetBytes(intValueFromBit64), 0); + int intValueFromBit64 = (int)valueBit64; + float floatValueFromBit64 = (float)BitConverter.Int64BitsToDouble(valueBit64); + //float floatValueFromBit64 = BitConverter.ToSingle(BitConverter.GetBytes(intValueFromBit64), 0); return floatValueFromBit64; } public int ToInt() { - int intValueFromBit64 = (int)valueBit64; // Converti long in int - + int intValueFromBit64 = (int)valueBit64; + return intValueFromBit64; } }