mirror of
https://git.muiegratis.online/suikoakari/Campofinale
synced 2025-12-23 23:14:36 +01:00
MissionSystem + Event system (manually re implementation)
This commit is contained in:
@@ -132,7 +132,8 @@ namespace Campofinale.Packets.Cs
|
||||
ScSyncAllMission m = Newtonsoft.Json.JsonConvert.DeserializeObject<ScSyncAllMission>(json1);
|
||||
m.TrackMissionId = "";
|
||||
|
||||
|
||||
//Disabled the hardcoded one and enable the missionSystem one
|
||||
//session.Send(ScMsgId.ScSyncAllMission, session.missionSystem.ToProto());
|
||||
session.Send(ScMsgId.ScSyncAllMission, m);
|
||||
/*ession.Send(ScMsgId.ScSyncAllMission, new ScSyncAllMission()
|
||||
{
|
||||
@@ -250,7 +251,7 @@ namespace Campofinale.Packets.Cs
|
||||
} }
|
||||
}
|
||||
});*/
|
||||
|
||||
|
||||
session.Send(new PacketScGachaSync(session));
|
||||
ScSettlementSyncAll settlements = new ScSettlementSyncAll()
|
||||
{
|
||||
|
||||
@@ -18,11 +18,11 @@ namespace Campofinale.Packets.Cs
|
||||
session.sceneManager.LoadCurrentTeamEntities();
|
||||
session.sceneManager.LoadCurrent();
|
||||
session.LoadFinish = true;
|
||||
/*session.Send(ScMessageId.ScSceneClientIdInfo, new ScSceneClientIdInfo()
|
||||
session.Send(ScMsgId.ScSceneClientIdInfo, new ScSceneClientIdInfo()
|
||||
{
|
||||
RoleIdx = (uint)session.roleId,
|
||||
LastMaxIdx = session.random.usedGuids.Max()
|
||||
});*/
|
||||
});
|
||||
if (session.curSceneNumId == 98)
|
||||
{
|
||||
session.Send(new PacketScSyncGameMode(session, "spaceship"));
|
||||
|
||||
@@ -3,6 +3,8 @@ using Campofinale.Game.Entities;
|
||||
using Campofinale.Network;
|
||||
using Campofinale.Protocol;
|
||||
using Campofinale.Resource;
|
||||
using Campofinale.Resource.Table;
|
||||
using Pastel;
|
||||
|
||||
namespace Campofinale.Packets.Cs
|
||||
{
|
||||
@@ -12,14 +14,19 @@ namespace Campofinale.Packets.Cs
|
||||
public static void Handle(Player session, CsMsgId cmdId, Packet packet)
|
||||
{
|
||||
CsSceneSetLevelScriptActive req = packet.DecodeBody<CsSceneSetLevelScriptActive>();
|
||||
|
||||
ScSceneLevelScriptStateNotify rsp = new ScSceneLevelScriptStateNotify()
|
||||
if (req.IsActive)
|
||||
{
|
||||
SceneNumId = req.SceneNumId,
|
||||
ScriptId = req.ScriptId,
|
||||
State = 3
|
||||
};
|
||||
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
|
||||
|
||||
ScSceneLevelScriptStateNotify rsp = new ScSceneLevelScriptStateNotify()
|
||||
{
|
||||
SceneNumId = req.SceneNumId,
|
||||
ScriptId = req.ScriptId,
|
||||
|
||||
State = 3
|
||||
};
|
||||
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -27,23 +34,63 @@ namespace Campofinale.Packets.Cs
|
||||
public static void HandleCsSceneSetLevelScriptStart(Player session, CsMsgId cmdId, Packet packet)
|
||||
{
|
||||
CsSceneSetLevelScriptStart req = packet.DecodeBody<CsSceneSetLevelScriptStart>();
|
||||
ScSceneLevelScriptStateNotify rsp = new ScSceneLevelScriptStateNotify()
|
||||
if (req.IsStart)
|
||||
{
|
||||
SceneNumId = req.SceneNumId,
|
||||
ScriptId = req.ScriptId,
|
||||
State = 4
|
||||
};
|
||||
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
|
||||
ScSceneLevelScriptStateNotify rsp = new ScSceneLevelScriptStateNotify()
|
||||
{
|
||||
SceneNumId = req.SceneNumId,
|
||||
ScriptId = req.ScriptId,
|
||||
|
||||
State = 4
|
||||
};
|
||||
session.Send(ScMsgId.ScSceneLevelScriptStateNotify, rsp);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
[Server.Handler(CsMsgId.CsSceneLevelScriptEventTrigger)]
|
||||
public static void ExecuteEventAction(Player player, ScriptAction action)
|
||||
{
|
||||
switch (action.action)
|
||||
{
|
||||
case ScriptActionType.CompleteQuest:
|
||||
player.missionSystem.CompleteQuest(action.valueStr[0]);
|
||||
break;
|
||||
case ScriptActionType.ProcessQuest:
|
||||
player.missionSystem.ProcessQuest(action.valueStr[0]);
|
||||
break;
|
||||
case ScriptActionType.SpawnEnemy:
|
||||
player.sceneManager.GetCurScene().SpawnEnemy(action.valueUlong[0]);
|
||||
break;
|
||||
default:
|
||||
Logger.PrintWarn("Script Action not implemented");
|
||||
break;
|
||||
}
|
||||
}
|
||||
[Server.Handler(CsMsgId.CsSceneLevelScriptEventTrigger)]
|
||||
public static void HandleCsSceneLevelScriptEventTrigger(Player session, CsMsgId cmdId, Packet packet)
|
||||
{
|
||||
|
||||
CsSceneLevelScriptEventTrigger req = packet.DecodeBody<CsSceneLevelScriptEventTrigger>();
|
||||
Logger.Print(req.Properties.ToString());
|
||||
if(req.EventName== "#8777e316")
|
||||
|
||||
if (ResourceManager.levelScriptsEvents.TryGetValue(req.EventName, out LevelScriptEvent levelScriptEvent))
|
||||
{
|
||||
Logger.Print($"Event {req.EventName.Pastel(ConsoleColor.Yellow)} Executed.");
|
||||
Logger.Print($"{levelScriptEvent.comment}");
|
||||
levelScriptEvent.actions.ForEach(a =>
|
||||
{
|
||||
ExecuteEventAction(session, a);
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
Logger.PrintWarn($"Event {req.EventName.Pastel(ConsoleColor.White)} is NOT implemented. INFO: [");
|
||||
Logger.PrintWarn($" Scene: {req.SceneNumId.ToString().Pastel(ConsoleColor.White)}, Pos: {session.position.ToProto().ToString()} ");
|
||||
Logger.PrintWarn($" ScriptID: {req.ScriptId.ToString().Pastel(ConsoleColor.White)} ");
|
||||
Logger.PrintWarn($"]");
|
||||
}
|
||||
/*if(req.EventName== "#8777e316")
|
||||
{
|
||||
session.Send(ScMsgId.ScQuestStateUpdate, new ScQuestStateUpdate()
|
||||
{
|
||||
@@ -120,26 +167,28 @@ namespace Campofinale.Packets.Cs
|
||||
QuestId = "e0m0_q#7",
|
||||
QuestState = (int)QuestState.Processing,
|
||||
});
|
||||
}
|
||||
}*/
|
||||
|
||||
ScSceneUpdateLevelScriptProperty update1 = new()
|
||||
{
|
||||
SceneNumId = req.SceneNumId,
|
||||
ScriptId = req.ScriptId,
|
||||
|
||||
|
||||
};
|
||||
session.Send(ScMsgId.ScSceneUpdateLevelScriptProperty, update1);
|
||||
ScSceneTriggerClientLevelScriptEvent trigger = new()
|
||||
{
|
||||
EventName = req.EventName,
|
||||
SceneNumId = req.SceneNumId,
|
||||
ScriptId = req.ScriptId
|
||||
ScriptId = req.ScriptId,
|
||||
|
||||
};
|
||||
session.Send(ScMsgId.ScSceneTriggerClientLevelScriptEvent, trigger);
|
||||
ScSceneUpdateLevelScriptProperty update2 = new()
|
||||
{
|
||||
SceneNumId = req.SceneNumId,
|
||||
ScriptId = req.ScriptId,
|
||||
|
||||
|
||||
};
|
||||
session.Send(ScMsgId.ScSceneUpdateLevelScriptProperty, update2);
|
||||
|
||||
@@ -9,7 +9,7 @@ namespace Campofinale.Packets.Cs
|
||||
public static void Handle(Player session, CsMsgId msgId, Packet packet)
|
||||
{
|
||||
CsTrackMission req = packet.DecodeBody<CsTrackMission>();
|
||||
|
||||
session.missionSystem.curMission = req.MissionId;
|
||||
ScTrackMissionChange rsp = new()
|
||||
{
|
||||
MissionId = req.MissionId
|
||||
|
||||
Reference in New Issue
Block a user