mirror of
https://github.com/Campofinale/CampofinaleBackup.git
synced 2025-12-15 03:04:37 +00:00
Compare commits
2 Commits
bb7c9831b4
...
fb63df9eb2
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
fb63df9eb2 | ||
|
|
775baf5c3b |
@ -19,6 +19,7 @@ namespace Campofinale.Packets.Cs
|
||||
{
|
||||
|
||||
case BattleActionOperateType.BattleOpEntityValueModify:
|
||||
|
||||
OnEntityValueModify(session, data);
|
||||
break;
|
||||
case BattleActionOperateType.BattleOpSkillStartCast:
|
||||
@ -34,7 +35,7 @@ namespace Campofinale.Packets.Cs
|
||||
OnEntityDie(session, data.EntityDieOpData);
|
||||
break;
|
||||
default:
|
||||
Logger.PrintWarn($"Unsupported BattleActionOperateType.{data.OpType}");
|
||||
Logger.PrintWarn($"Unimplemented BattleActionOperateType.{data.OpType}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -73,9 +74,8 @@ namespace Campofinale.Packets.Cs
|
||||
HealEntity(session, item);
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
Logger.PrintWarn($"Unsupported ServerBattleActionType.{data.Action.ActionType}");
|
||||
Logger.PrintWarn($"Unimplemented ServerBattleActionType.{data.Action.ActionType}");
|
||||
break;
|
||||
}
|
||||
}
|
||||
@ -106,7 +106,6 @@ namespace Campofinale.Packets.Cs
|
||||
private static void OnSkillStartCast(Player session, BattleClientOpData data)
|
||||
{
|
||||
ulong casterId = data.OwnerId;
|
||||
|
||||
Character character = session.chars.Find(c => c.guid == casterId);
|
||||
if (character != null)
|
||||
{
|
||||
@ -140,7 +139,7 @@ namespace Campofinale.Packets.Cs
|
||||
BattleInfo = new()
|
||||
{
|
||||
Hp = character.curHp,
|
||||
Ultimatesp = character.ultimateSp+1
|
||||
Ultimatesp = character.ultimateSp
|
||||
},
|
||||
Objid = character.guid,
|
||||
};
|
||||
@ -154,17 +153,17 @@ namespace Campofinale.Packets.Cs
|
||||
|
||||
private static void OnEntityValueModify(Player session, BattleClientOpData data)
|
||||
{
|
||||
Logger.PrintWarn("EntityValueModify called: " + data.EntityValueModifyData.ToString());
|
||||
|
||||
Character character = session.chars.Find(c => c.guid == data.EntityValueModifyData.EntityInstId);
|
||||
if (character != null)
|
||||
{
|
||||
|
||||
character.curHp = data.EntityValueModifyData.Value.Hp;
|
||||
character.ultimateSp = data.EntityValueModifyData.Value.Ultimatesp;
|
||||
ScCharSyncStatus s = new()
|
||||
{
|
||||
BattleInfo = new()
|
||||
{
|
||||
Hp = data.EntityValueModifyData.Value.Hp,
|
||||
Hp = character.curHp,
|
||||
Ultimatesp = character.ultimateSp
|
||||
},
|
||||
Objid = character.guid,
|
||||
|
||||
@ -13,11 +13,10 @@ namespace Campofinale.Packets.Cs
|
||||
{
|
||||
CsSceneLoadFinish req = packet.DecodeBody<CsSceneLoadFinish>();
|
||||
|
||||
|
||||
session.curSceneNumId=req.SceneNumId;
|
||||
session.Send(new PacketScSelfSceneInfo(session, SelfInfoReasonType.SlrEnterScene));
|
||||
session.sceneManager.LoadCurrentTeamEntities();
|
||||
session.sceneManager.LoadCurrent();
|
||||
session.LoadFinish = true;
|
||||
|
||||
if (session.curSceneNumId == 98)
|
||||
{
|
||||
@ -37,7 +36,7 @@ namespace Campofinale.Packets.Cs
|
||||
}
|
||||
|
||||
}
|
||||
session.LoadFinish = true;
|
||||
session.sceneLoadState = Player.SceneLoadState.OK;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -10,7 +10,12 @@ namespace Campofinale.Packets.Cs
|
||||
public static void Handle(Player session, CsMsgId cmdId, Packet packet)
|
||||
{
|
||||
CsSceneSetLastSafeZone req = packet.DecodeBody<CsSceneSetLastSafeZone>();
|
||||
|
||||
Logger.Print($"Current Scene: {req.SceneNumId}");
|
||||
//Change seamlessy scene
|
||||
if (req.SceneNumId != session.curSceneNumId)
|
||||
{
|
||||
session.SeamlessEnterScene(req.SceneNumId);
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -59,7 +59,10 @@ namespace Campofinale.Packets.Sc
|
||||
sceneInfo.Detail.CharList.Add(session.chars.Find(c => c.guid == m).ToSceneProto());
|
||||
});
|
||||
|
||||
//Levelscripts here?
|
||||
if (infoReason == SelfInfoReasonType.SlrSeamlesslyEnterScene)
|
||||
{
|
||||
sceneInfo.TeamInfo = null;
|
||||
}
|
||||
if(infoReason!= SelfInfoReasonType.SlrChangeTeam)
|
||||
ResourceManager.GetLevelData(session.curSceneNumId).levelData.levelScripts.ForEach(l =>
|
||||
{
|
||||
|
||||
@ -17,6 +17,7 @@ using Campofinale.Game.MissionSys;
|
||||
using Pastel;
|
||||
using System.Drawing;
|
||||
using Campofinale.Game.Adventure;
|
||||
using static Campofinale.Player;
|
||||
|
||||
|
||||
namespace Campofinale
|
||||
@ -349,7 +350,7 @@ namespace Campofinale
|
||||
{
|
||||
//sceneManager.UnloadCurrent(false);
|
||||
//sceneManager.LoadCurrent();
|
||||
LoadFinish = false;
|
||||
sceneLoadState = SceneLoadState.Loading;
|
||||
Send(new PacketScEnterSceneNotify(this, curSceneNumId));
|
||||
}
|
||||
if (savedSaveZone == null || savedSaveZone.sceneNumId == 0)
|
||||
@ -362,7 +363,14 @@ namespace Campofinale
|
||||
};
|
||||
}
|
||||
}
|
||||
public bool LoadFinish = true;
|
||||
public enum SceneLoadState
|
||||
{
|
||||
OK=0,
|
||||
Loading=1,
|
||||
|
||||
}
|
||||
public SceneLoadState sceneLoadState=0;
|
||||
// public bool LoadFinish = true;
|
||||
public void EnterScene(int sceneNumId, Vector3f pos, Vector3f rot, PassThroughData passThroughData = null)
|
||||
{
|
||||
// if (!LoadFinish) return;
|
||||
@ -381,7 +389,7 @@ namespace Campofinale
|
||||
curSceneNumId = sceneNumId;
|
||||
position = pos;
|
||||
rotation = rot;
|
||||
LoadFinish = false;
|
||||
sceneLoadState = SceneLoadState.Loading;
|
||||
Send(new PacketScEnterSceneNotify(this, sceneNumId, pos, passThroughData));
|
||||
//sceneManager.LoadCurrent();
|
||||
}
|
||||
@ -390,6 +398,37 @@ namespace Campofinale
|
||||
Logger.PrintError($"Scene {sceneNumId} not found");
|
||||
}
|
||||
}
|
||||
/// <summary>
|
||||
/// Seamless Crossing scene is not working, self scene info is not modifying the current scene num id in the client...
|
||||
/// </summary>
|
||||
/// <param name="sceneNumId"></param>
|
||||
public void SeamlessEnterScene(int sceneNumId)
|
||||
{
|
||||
if(curSceneNumId != sceneNumId && sceneLoadState == SceneLoadState.OK)
|
||||
{
|
||||
sceneLoadState=SceneLoadState.Loading;
|
||||
curSceneNumId = sceneNumId;
|
||||
Send(new PacketScSelfSceneInfo(this, SelfInfoReasonType.SlrSeamlesslyEnterScene));
|
||||
ScFactoryModifyChapterScene modify = new()
|
||||
{
|
||||
ChapterId=GetCurrentChapter(),
|
||||
SceneId=sceneNumId,
|
||||
Tms=DateTime.UtcNow.ToUnixTimestampMilliseconds()
|
||||
};
|
||||
Send(ScMsgId.ScFactoryModifyChapterScene, modify);
|
||||
ScSceneCrossSceneStatus cross = new()
|
||||
{
|
||||
ObjId = teams[teamIndex].leader,
|
||||
SceneNumId = curSceneNumId
|
||||
};
|
||||
Send(ScMsgId.ScSceneCrossSceneStatus, cross);
|
||||
|
||||
|
||||
sceneManager.LoadCurrentTeamEntities();
|
||||
sceneManager.LoadCurrent();
|
||||
sceneLoadState = SceneLoadState.OK;
|
||||
}
|
||||
}
|
||||
public void EnterScene(int sceneNumId)
|
||||
{
|
||||
if(GetLevelData(sceneNumId) != null)
|
||||
@ -410,7 +449,7 @@ namespace Campofinale
|
||||
position = GetLevelData(sceneNumId).playerInitPos;
|
||||
rotation = GetLevelData(sceneNumId).playerInitRot;
|
||||
// sceneManager.LoadCurrent();
|
||||
LoadFinish = false;
|
||||
sceneLoadState = SceneLoadState.Loading;
|
||||
Send(new PacketScEnterSceneNotify(this, sceneNumId));
|
||||
|
||||
}
|
||||
@ -609,7 +648,7 @@ namespace Campofinale
|
||||
if (Initialized)
|
||||
this.Send(new PacketScAdventureBookSync(this));
|
||||
}
|
||||
if(LoadFinish)
|
||||
if(sceneLoadState==0)
|
||||
sceneManager.Update();
|
||||
factoryManager.Update();
|
||||
}
|
||||
|
||||
@ -67,7 +67,7 @@ namespace Campofinale
|
||||
public static Dispatch? dispatch;
|
||||
public static ConfigFile? config;
|
||||
public static List<CsMsgId> csMessageToHide = new() { CsMsgId.CsMoveObjectMove, CsMsgId.CsBattleOp,CsMsgId.CsPing };
|
||||
public static List<ScMsgId> scMessageToHide = new() { ScMsgId.ScMoveObjectMove, ScMsgId.ScPing };
|
||||
public static List<ScMsgId> scMessageToHide = new() { ScMsgId.ScMoveObjectMove, ScMsgId.ScPing,ScMsgId.ScObjectEnterView };
|
||||
public void Start(ConfigFile config)
|
||||
{
|
||||
{
|
||||
|
||||
Loading…
Reference in New Issue
Block a user