mirror of
https://github.com/Campofinale/CampofinaleBackup.git
synced 2025-12-18 16:14:37 +00:00
Compare commits
No commits in common. "fb63df9eb23da227af0a0f07ce75a6c8f8c4c0b2" and "bb7c9831b40229272d922f97fbe1d0c477e22bf6" have entirely different histories.
fb63df9eb2
...
bb7c9831b4
@ -19,7 +19,6 @@ namespace Campofinale.Packets.Cs
|
|||||||
{
|
{
|
||||||
|
|
||||||
case BattleActionOperateType.BattleOpEntityValueModify:
|
case BattleActionOperateType.BattleOpEntityValueModify:
|
||||||
|
|
||||||
OnEntityValueModify(session, data);
|
OnEntityValueModify(session, data);
|
||||||
break;
|
break;
|
||||||
case BattleActionOperateType.BattleOpSkillStartCast:
|
case BattleActionOperateType.BattleOpSkillStartCast:
|
||||||
@ -35,7 +34,7 @@ namespace Campofinale.Packets.Cs
|
|||||||
OnEntityDie(session, data.EntityDieOpData);
|
OnEntityDie(session, data.EntityDieOpData);
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
Logger.PrintWarn($"Unimplemented BattleActionOperateType.{data.OpType}");
|
Logger.PrintWarn($"Unsupported BattleActionOperateType.{data.OpType}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -74,8 +73,9 @@ namespace Campofinale.Packets.Cs
|
|||||||
HealEntity(session, item);
|
HealEntity(session, item);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
Logger.PrintWarn($"Unimplemented ServerBattleActionType.{data.Action.ActionType}");
|
Logger.PrintWarn($"Unsupported ServerBattleActionType.{data.Action.ActionType}");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -106,6 +106,7 @@ namespace Campofinale.Packets.Cs
|
|||||||
private static void OnSkillStartCast(Player session, BattleClientOpData data)
|
private static void OnSkillStartCast(Player session, BattleClientOpData data)
|
||||||
{
|
{
|
||||||
ulong casterId = data.OwnerId;
|
ulong casterId = data.OwnerId;
|
||||||
|
|
||||||
Character character = session.chars.Find(c => c.guid == casterId);
|
Character character = session.chars.Find(c => c.guid == casterId);
|
||||||
if (character != null)
|
if (character != null)
|
||||||
{
|
{
|
||||||
@ -139,7 +140,7 @@ namespace Campofinale.Packets.Cs
|
|||||||
BattleInfo = new()
|
BattleInfo = new()
|
||||||
{
|
{
|
||||||
Hp = character.curHp,
|
Hp = character.curHp,
|
||||||
Ultimatesp = character.ultimateSp
|
Ultimatesp = character.ultimateSp+1
|
||||||
},
|
},
|
||||||
Objid = character.guid,
|
Objid = character.guid,
|
||||||
};
|
};
|
||||||
@ -153,17 +154,17 @@ namespace Campofinale.Packets.Cs
|
|||||||
|
|
||||||
private static void OnEntityValueModify(Player session, BattleClientOpData data)
|
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);
|
Character character = session.chars.Find(c => c.guid == data.EntityValueModifyData.EntityInstId);
|
||||||
if (character != null)
|
if (character != null)
|
||||||
{
|
{
|
||||||
|
|
||||||
character.curHp = data.EntityValueModifyData.Value.Hp;
|
character.curHp = data.EntityValueModifyData.Value.Hp;
|
||||||
character.ultimateSp = data.EntityValueModifyData.Value.Ultimatesp;
|
|
||||||
ScCharSyncStatus s = new()
|
ScCharSyncStatus s = new()
|
||||||
{
|
{
|
||||||
BattleInfo = new()
|
BattleInfo = new()
|
||||||
{
|
{
|
||||||
Hp = character.curHp,
|
Hp = data.EntityValueModifyData.Value.Hp,
|
||||||
Ultimatesp = character.ultimateSp
|
Ultimatesp = character.ultimateSp
|
||||||
},
|
},
|
||||||
Objid = character.guid,
|
Objid = character.guid,
|
||||||
|
|||||||
@ -13,10 +13,11 @@ namespace Campofinale.Packets.Cs
|
|||||||
{
|
{
|
||||||
CsSceneLoadFinish req = packet.DecodeBody<CsSceneLoadFinish>();
|
CsSceneLoadFinish req = packet.DecodeBody<CsSceneLoadFinish>();
|
||||||
|
|
||||||
session.curSceneNumId=req.SceneNumId;
|
|
||||||
session.Send(new PacketScSelfSceneInfo(session, SelfInfoReasonType.SlrEnterScene));
|
session.Send(new PacketScSelfSceneInfo(session, SelfInfoReasonType.SlrEnterScene));
|
||||||
session.sceneManager.LoadCurrentTeamEntities();
|
session.sceneManager.LoadCurrentTeamEntities();
|
||||||
session.sceneManager.LoadCurrent();
|
session.sceneManager.LoadCurrent();
|
||||||
|
session.LoadFinish = true;
|
||||||
|
|
||||||
if (session.curSceneNumId == 98)
|
if (session.curSceneNumId == 98)
|
||||||
{
|
{
|
||||||
@ -36,7 +37,7 @@ namespace Campofinale.Packets.Cs
|
|||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
session.sceneLoadState = Player.SceneLoadState.OK;
|
session.LoadFinish = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -10,12 +10,7 @@ namespace Campofinale.Packets.Cs
|
|||||||
public static void Handle(Player session, CsMsgId cmdId, Packet packet)
|
public static void Handle(Player session, CsMsgId cmdId, Packet packet)
|
||||||
{
|
{
|
||||||
CsSceneSetLastSafeZone req = packet.DecodeBody<CsSceneSetLastSafeZone>();
|
CsSceneSetLastSafeZone req = packet.DecodeBody<CsSceneSetLastSafeZone>();
|
||||||
Logger.Print($"Current Scene: {req.SceneNumId}");
|
|
||||||
//Change seamlessy scene
|
|
||||||
if (req.SceneNumId != session.curSceneNumId)
|
|
||||||
{
|
|
||||||
session.SeamlessEnterScene(req.SceneNumId);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@ -59,10 +59,7 @@ namespace Campofinale.Packets.Sc
|
|||||||
sceneInfo.Detail.CharList.Add(session.chars.Find(c => c.guid == m).ToSceneProto());
|
sceneInfo.Detail.CharList.Add(session.chars.Find(c => c.guid == m).ToSceneProto());
|
||||||
});
|
});
|
||||||
|
|
||||||
if (infoReason == SelfInfoReasonType.SlrSeamlesslyEnterScene)
|
//Levelscripts here?
|
||||||
{
|
|
||||||
sceneInfo.TeamInfo = null;
|
|
||||||
}
|
|
||||||
if(infoReason!= SelfInfoReasonType.SlrChangeTeam)
|
if(infoReason!= SelfInfoReasonType.SlrChangeTeam)
|
||||||
ResourceManager.GetLevelData(session.curSceneNumId).levelData.levelScripts.ForEach(l =>
|
ResourceManager.GetLevelData(session.curSceneNumId).levelData.levelScripts.ForEach(l =>
|
||||||
{
|
{
|
||||||
|
|||||||
@ -17,7 +17,6 @@ using Campofinale.Game.MissionSys;
|
|||||||
using Pastel;
|
using Pastel;
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using Campofinale.Game.Adventure;
|
using Campofinale.Game.Adventure;
|
||||||
using static Campofinale.Player;
|
|
||||||
|
|
||||||
|
|
||||||
namespace Campofinale
|
namespace Campofinale
|
||||||
@ -350,7 +349,7 @@ namespace Campofinale
|
|||||||
{
|
{
|
||||||
//sceneManager.UnloadCurrent(false);
|
//sceneManager.UnloadCurrent(false);
|
||||||
//sceneManager.LoadCurrent();
|
//sceneManager.LoadCurrent();
|
||||||
sceneLoadState = SceneLoadState.Loading;
|
LoadFinish = false;
|
||||||
Send(new PacketScEnterSceneNotify(this, curSceneNumId));
|
Send(new PacketScEnterSceneNotify(this, curSceneNumId));
|
||||||
}
|
}
|
||||||
if (savedSaveZone == null || savedSaveZone.sceneNumId == 0)
|
if (savedSaveZone == null || savedSaveZone.sceneNumId == 0)
|
||||||
@ -363,14 +362,7 @@ namespace Campofinale
|
|||||||
};
|
};
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
public enum SceneLoadState
|
public bool LoadFinish = true;
|
||||||
{
|
|
||||||
OK=0,
|
|
||||||
Loading=1,
|
|
||||||
|
|
||||||
}
|
|
||||||
public SceneLoadState sceneLoadState=0;
|
|
||||||
// public bool LoadFinish = true;
|
|
||||||
public void EnterScene(int sceneNumId, Vector3f pos, Vector3f rot, PassThroughData passThroughData = null)
|
public void EnterScene(int sceneNumId, Vector3f pos, Vector3f rot, PassThroughData passThroughData = null)
|
||||||
{
|
{
|
||||||
// if (!LoadFinish) return;
|
// if (!LoadFinish) return;
|
||||||
@ -389,7 +381,7 @@ namespace Campofinale
|
|||||||
curSceneNumId = sceneNumId;
|
curSceneNumId = sceneNumId;
|
||||||
position = pos;
|
position = pos;
|
||||||
rotation = rot;
|
rotation = rot;
|
||||||
sceneLoadState = SceneLoadState.Loading;
|
LoadFinish = false;
|
||||||
Send(new PacketScEnterSceneNotify(this, sceneNumId, pos, passThroughData));
|
Send(new PacketScEnterSceneNotify(this, sceneNumId, pos, passThroughData));
|
||||||
//sceneManager.LoadCurrent();
|
//sceneManager.LoadCurrent();
|
||||||
}
|
}
|
||||||
@ -398,37 +390,6 @@ namespace Campofinale
|
|||||||
Logger.PrintError($"Scene {sceneNumId} not found");
|
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)
|
public void EnterScene(int sceneNumId)
|
||||||
{
|
{
|
||||||
if(GetLevelData(sceneNumId) != null)
|
if(GetLevelData(sceneNumId) != null)
|
||||||
@ -449,7 +410,7 @@ namespace Campofinale
|
|||||||
position = GetLevelData(sceneNumId).playerInitPos;
|
position = GetLevelData(sceneNumId).playerInitPos;
|
||||||
rotation = GetLevelData(sceneNumId).playerInitRot;
|
rotation = GetLevelData(sceneNumId).playerInitRot;
|
||||||
// sceneManager.LoadCurrent();
|
// sceneManager.LoadCurrent();
|
||||||
sceneLoadState = SceneLoadState.Loading;
|
LoadFinish = false;
|
||||||
Send(new PacketScEnterSceneNotify(this, sceneNumId));
|
Send(new PacketScEnterSceneNotify(this, sceneNumId));
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -648,7 +609,7 @@ namespace Campofinale
|
|||||||
if (Initialized)
|
if (Initialized)
|
||||||
this.Send(new PacketScAdventureBookSync(this));
|
this.Send(new PacketScAdventureBookSync(this));
|
||||||
}
|
}
|
||||||
if(sceneLoadState==0)
|
if(LoadFinish)
|
||||||
sceneManager.Update();
|
sceneManager.Update();
|
||||||
factoryManager.Update();
|
factoryManager.Update();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -67,7 +67,7 @@ namespace Campofinale
|
|||||||
public static Dispatch? dispatch;
|
public static Dispatch? dispatch;
|
||||||
public static ConfigFile? config;
|
public static ConfigFile? config;
|
||||||
public static List<CsMsgId> csMessageToHide = new() { CsMsgId.CsMoveObjectMove, CsMsgId.CsBattleOp,CsMsgId.CsPing };
|
public static List<CsMsgId> csMessageToHide = new() { CsMsgId.CsMoveObjectMove, CsMsgId.CsBattleOp,CsMsgId.CsPing };
|
||||||
public static List<ScMsgId> scMessageToHide = new() { ScMsgId.ScMoveObjectMove, ScMsgId.ScPing,ScMsgId.ScObjectEnterView };
|
public static List<ScMsgId> scMessageToHide = new() { ScMsgId.ScMoveObjectMove, ScMsgId.ScPing };
|
||||||
public void Start(ConfigFile config)
|
public void Start(ConfigFile config)
|
||||||
{
|
{
|
||||||
{
|
{
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user